资源描述:
《实验报告模板.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、.专业.专注.同济大学计算机科学与技术系计算机组成原理课程实验报告学号1452312姓名冯凯专业计算机科学与技术授课老师王力生日期2016.06.18.word可编辑..专业.专注..word可编辑..专业.专注.实验目标1、熟悉Verilog语言的编写。2、掌握计算机的每个部件的构成逻辑及工作原理,计算机各部件之间的连接逻辑,计算机整机的工作原理。3、掌握CPU功能。4、设计55条单周期指令CPU下板成功2、.在自己的CPU上跑一个汇编程序一、总体设计1.作品功能设计及原理说明modulecomp(inputclock,inputresetn,output[
2、2:0]r,output[2:0]g,output[1:0]b,outpuths,outputvs,);2.硬件逻辑图.word可编辑..专业.专注.一、主要模块设计1.ALUmodulealu(input[31:0]a,input[31:0]b,input[3:0]aluc,output[31:0]r,outputzero,//零标志outputcarry,//进位标志位outputnegative,//负数标志位outputoverflow//溢出标志位);wire[31:0]d_and=a&b;//0100wire[31:0]d_or=a
3、b;//010
4、1.word可编辑..专业.专注.wire[31:0]d_xor=a^b;//0110wire[31:0]d_nor=~(a
5、b);//0111wire[31:0]d_lui={b[15:0],16'h0};//100xwire[31:0]d_slt=a
6、
7、(a[31]&&b[31]&&a>b)
8、
9、(~a[31]&&~b[31]&&a
10、d_xor;wire[31:0]d_and_or_xor_nor=aluc[1]?d_xor_nor:d_and_or;wire[31:0]d_slt_sltu=aluc[0]?d_slt:d_sltu;wire[31:0]d_lui_slt_sltu=aluc[1]?d_slt_sltu:d_lui;wire[31:0]d_as;wire[31:0]d_sh;wirecarry_as;wirenegative_as;wireoverflow_as;wirecarry_sh;addsub32as32(a,b,aluc[0],aluc[1],d_as,carry
11、_as,overflow_as);shiftshifter(b,a[4:0],~aluc[1],~aluc[0],d_sh,carry_sh);mux4x32select_d(d_as,d_and_or_xor_nor,d_lui_slt_sltu,d_sh,aluc[3:2],r);mux4x1select_carry(carry_as,1'b0,1'b0,carry_sh,aluc[3:2],carry);mux4x1select_overflow(overflow_as,1'b0,1'b0,overflow_sh,aluc[3:2],overflow);
12、.word可编辑..专业.专注.assignzero=~
13、r;assignnegative=r[31];endmodule2.regfilemoduleregfile(input[4:0]raddr1,input[4:0]raddr2,input[31:0]wdata,input[4:0]waddr,inputwe,inputclk,inputrst,output[31:0]radata1,output[31:0]radata2);reg[31:0]register[0:31];.word可编辑..专业.专注.assignradata1=(raddr1==0)
14、?0:register[raddr1];assignradata2=(raddr2==0)?0:register[raddr2];integeri;always@(posedgerstornegedgeclk)beginif(rst==1)beginfor(i=1;i<32;i=i+1)beginregister[i]<=0;endendelsebeginregister[0]<=32'b0;if((waddr!=0)&&we)beginregister[waddr]<=wdata;endendend.word可编辑..专业.专注.endmodule3.CP0
15、moduleCoprocessor0(