R型指令的PU设计.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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)

ggkkppp + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档