需要按教程平台要求选择芯片,每年的要求可能不一样,23年的要求是在这个目录下

FPGA->实验练习->从0到1->工程建立

image-20231206202326048

第二次P4上机题目

SROC

Shift Right One Count

31……26 25……21 20……16 15……0
op
111111
rs rt offset

题目描述:将GPR[rs]中数值算数后移符号扩展后的32offset中1的个数位,并存入GPR[rt]

$$
\begin{flalign}
&temp ← sign_extend(offset) \
&s←temp_{31}+temp_{30}+…+temp_{0} \
&GPR[rt]← GPR[rs]{31}\ ^s||GPR[rs]{31…s}
\end{flalign}
$$

LBZO

31……26 25……21 20……16 15……0
op
111110
base rt offset

**题目描述:**如果memory[GPR[base]+offset]对应字节所在字二进制表示下0的数量为奇数,则将sign_extend(memword7+8*byte..8*byte)存入GPR[rt],否则将0存入GPR[rt]

$$
\begin{flalign}
&Addr ← GPR[base] + sign_ext(offset) \
&memword ← memory[Addr] \
&byte ← Addr1…0 \
&temp\ =\ (\sim memword[31])+(\sim memword[30])+…+(\sim memword[0]) \
&if\quad temp%2=1\quad then \
&\qquad GPR[rt] ← sign_extend(memword_{7+8byte…8byte}) \
&else\
&\qquad GPR[rt]←0\
&endif
\end{flalign}
$$

BOBAL

Branch on Opposite Bit And Link

31……26 25……21 20……16 15……0
op
111111
rs rt offset

**题目描述:**如果GPR[rs]GPR[rt]存储的数值中含1的个数均为16,且GPR[rs]GPR[rt]中任意一bit位的数值不同时位0时,则跳转到label并将PC+4的值存入31号寄存器
$$
\begin{flalign}
&a←GPR[rs]{31}+GPR[rs]{30}+…+GPR[rs]0\
&b←GPR[rt]
{31}+GPR[rt]_{30}+…+GPR[rt]_0\
&if\quad a=16\quad and\quad b=16\quad and\quad (GPR[rt]|GPR[rs]=32’hffffffff)\ then \
&\qquad PC←PC+4+sign_ext(offset∣∣0^2)\
&\qquad GPR[31]←PC+4\
&else\
&\qquad PC←PC+4\
&endif
\end{flalign}
$$