当前位置:首页 > MIPS流水线CPU的verilog实现 - 图文
Instruction_id = 32'h01e85022; //sub $t2,$t1,$t0
测试寄存器寄存功能。定义控制信号RegWrite_wb=1;RegWriteAddr_wb=5'b01111;RegWriteData_wb=32'b1111。
可看到立即数Imm,Sa在不同指令中都进行了无符号扩展;Rs、Rt寄存器的数据和地址都可以得到寄存,可以保持直到数据地址必须更改。由此得出寄存器堆模块Registers设计符合要求。
c)观察BrandAddr信号,可以发现其满足
BranchAddr=NextPC_id+(sign-extend(Imm_id)<<2)
d)观察Z信号可发现其满足式子
RsData[31] || ~ (| RsData[31: 0]) ; ALUCode=alu _blez RsData[31] ; ALUCode=alu _bltz ~ RsData[31] && (| RsData[31: 0]) ; ALUCode=alu _bgtz Z= ~ RsData[31]; ALUCode=alu _bgez
| ( RsData[31: 0] ^ RtData[31: 0]) ; ALUCode=alu_bne & ( RsData[31: 0] ~^ RtData[31: 0] ); ALUCode=alu_beq 0; ALUCode=OTHER
e) 观察Stall信号和PC_IFWrite信号可发现其满足关系式:
Stall=((RegWriteAddr_ex==RsAddr_id)||
(RegWriteAddr_ex==RtAddr_id))&&MemRead_ex PC_IFWrite=~Stall
25
ID级设计符合要求。
2. EX级仿真
(1) ALU子模块仿真
对照ALU功能表,仿真结果正确。说明ALU子模块设计符合要求。
(2) EX模块仿真
ALU子模块功能已测试完毕,只需确认数据选择器与转发电路Forwarding的功能。
26
先观察Forwarding转发电路的信号:
信号之间的逻辑关系符合ForwardingA与ForwardingB的定义关系式。
然后观察操作数A与B的数据选择器的信号: 操作数A:
其中TempA为数据选择器输出信号;A为RsData。 操作数B:
其中TempB为数据选择器输出信号;B为RTData。 波形满足Forwarding的功能要求。
27
观察ALU_A与ALU_B数据选择器功能:
TempA与TempB分别是操作数A与B。从波形上可看出选择器符合设计要求。
EX级设计符合要求。
3. IF级仿真
JR、J、Z都为0,PC输入只 为NextPC=PC+4,符合要求。 {JR、J、Z}=100 PC=JrAddr {JR、J、Z}=010 PC=JumpAddr {JR、J、Z}=001 PC=branchAddr 符合设计要求
IF级符合设计要求。
PC_IFWrite=0,PC保持。 符合设计要求 28
共分享92篇相关文档