- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
 - 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
 - 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
 - 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
 - 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
 - 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
 - 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
 
                        查看更多
                        
                    
                R型指令的PU设计.doc
                    杭州电子科技大学计算机学院
实验报告
掌握MIPS R型指令的数据通路设计,掌握指令流和数裾流的控制方法。
掌握完整的单周期CPU顶层模块的设计方法 实验 3.实现MIPS R型指令的功能
目的
ISE Design Suite 14
Digilent Adept
Nexys3实验板
/yxc6slxl6-3csg324 白0 晶 Test.CPU (Test.CPU.v)白.0r_cpu-CPU(CPU.v)E 0 fetch 
/yxc6slxl6-3csg324 白0 晶 Test.CPU (Test.CPU.v)
白.0r_cpu-CPU(CPU.v)
E 0 fetch - Fetchjnst (Fetch」 L... q Inst_mem ? Inst_addr register - Registerfile (Re 3 alu - ALU (ALU.v)
0 Test.CPU.ucf
各个模块之间的关系图
顶层模块:
module Test CPU (rst, elk, SW, LED); input rst, elk; input [2:0]SW;//选择信号 output reg [7:0]LED; wire ZE, OF; wire [31:0]ALU F;
CPU r_cpu (rst, elk, ZF, OP, ALU J7) always?(*) begin case (SW)
3’b000:LED=ALU—F[7:0];
-? 
-? 1J 1J 3 8 1 ? ? ? 5 3 1 2 rL rL F F I I
u u
L L A A
II
D D EE L L ??■? 11 o
o 1 o o b b 3 3
3’b011:LED=ALU_E[31:24];
3’ b100:begin LED[7:2]=0;LED[1]=0F;LED[0]=ZF;end default:LED=0; endcase end
endmodule
综合ALU,取指令,寄存器模块的顶层模块 module CPU( input rst, input elk, output ZF, output 0E, output [31:0]F );
reg wri te_reg; wire [31:0]Inst_code;
wire [31:0]R_Data_A; wire [31:0]R Data B; reg [2:0]ALU_0P;
Eetch_Tnst fetch(rst, elk, Tnst_code);
Registerfile
register(Inst_code[25:21], lnst_code[20:16], Inst_code[l5:11], writo_reg, F,?elk, rst, R Data A, R Data B);
ALU alu(R_Data_A, R_Data_B, F, ALU_0P, ZF, 0E); always?(*)
begin
write_reg=0;
ALU 0P=0;
if(Inst code[31:26]==0) begin
case(inst code[5:0])
6b 100000 ilLOlWb 100;
6,bl00010:ALU OP=3’bl01;
6’bl00100:ALU Ol^bOOO;
6’bl00101:AUJ_OP=3’b001;
6’bl00110:ALU_0P=3’b010;
6,bl00111:ALU_0P=3, bOll;
6’bl01011:ALU OP=3’bllO;
6’b000100:ALU_01)T bill; endcase write_reg=l; end end
endmodule
ALU模块:
module ALU (A, B, F, ALU OP, ZF, OF); input [31:0]A, B; input [2:0]ALU OP; output reg ZE, OF; output reg [31:0]F; reg C32; always@(*) begin OF=l’bO;
C32=fb0; case(ALU_OP)
3bOOO:F=AB;
3’b001:F=A|B;
3’b010:F=AB;
3’b011:F=?(A|B);
3’bl00:begin {C32, F}=A+B;OF=A[31]B[31]F[31]C32; end 3’bl01:begin {C32, F}=A-B;0F=A[31]AB[31]^F[31]^C32; end 3’bllO:
if(AB)
F=l;
else
r=o;
3,blll:F=B?A;
endcase
if(F==O)
ZF=1; else ZF=O; end
end
                
原创力文档
                        

文档评论(0)