CO | P4_单周期CPU设计_Verilog实现
需要按教程平台要求选择芯片,每年的要求可能不一样,23年的要求是在这个目录下
FPGA->实验练习->从0到1->工程建立

第二次P4上机题目
SROC
Shift Right One Count
| 31……26 | 25……21 | 20……16 | 15……0 |
|---|---|---|---|
| op 111111 |
rs | rt | offset |
题目描述:将GPR[rs]中数值算数后移符号扩展后的32位offset中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}
$$



