MIPS流水线CPU的verilog实现 - 图文

2026/1/14 3:46:29

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


MIPS流水线CPU的verilog实现 - 图文.doc 将本文的Word文档下载到电脑
搜索更多关于: MIPS流水线CPU的verilog实现 - 图文 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219