计算机组成原理模型机实验报告_第1页
计算机组成原理模型机实验报告_第2页
计算机组成原理模型机实验报告_第3页
计算机组成原理模型机实验报告_第4页
计算机组成原理模型机实验报告_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验六计算机系统综合设计与实现一、实验目的1、深入理解计算机系统工作的基本原理,建立整机概念。2、融会贯通计算机组成原理课程的内容,通过知识的综合运用,加深对计算机系统各模块的工作原理及相互联系的认识。3、培养科学研究的独立工作能力,取得工程设计与组装调试的实践经验。二、实验要求1、将已经设计的运算器、存储器和控制器连接,构建完整的计算机系统;2、编写一段可以实现一定功能的指令程序,进行计算机整机系统功能的验证。3、所有任务要求功能仿真和必要的验证。实验完成后,一周内提交实验报告。三、 实验设备PC机+ Quartus10.0 + FPGA(DE2-115)+TEC-8实验箱四、计算机系统(T

2、EC-8)综合逻辑框图硬连线控制器控制信号切换电路ALU A端口B端口C Z R0 R1 R2 R3 IR PC AR 双端口RAM DBUS 五、实验任务1、将实验二的运算器、实验三的存储器和实验五的控制器连接,构建完整的计算机系统;2、计算机整机系统功能测试,进行功能仿真和时序仿真并在DE2-115上验证。(1)根据指令系统,编写一段可以实现一定功能的程序,要求:有一个合理的运算功能和逻辑关系;指令数量:不少于8条;指令类型:停机、跳转、RR、读存、写存、算术和逻辑运算;(2)将指令程序手工汇编成二进制代码;(3)理论上设置寄存器的初值,并计算程序执行后的结果;(4)将指令程序的二进制代码

3、存入存储器RAM中;(5)将需要的运算数据初值存入寄存器R0-R3中;(6)进行程序连续运行的功能仿真和时序仿真,将仿真运算结果与理论计算结果进行比较。六、实验步骤实验电路图子模块(1)tri_74244tri74244.vmodule tri_74244 (en,Din,Dout ); input en ; wire en ; input 7:0 Din; wire 7:0 Din ; output 7:0 Dout ; reg 7:0 Dout ; always (en or Din)begin if (en)Dout<= Din ; else Dout <= 8'bz

4、zzzzzzz; end endmoduletimescale 1 ps/ 1 psmodule tri_74244_vlg_tst();reg eachvec;reg 7:0 Din;reg en;wire 7:0 Dout;tri74244.vttimescale 1 ps/ 1 psmodule tri_74244_vlg_tst();reg eachvec;reg 7:0 Din;reg en;wire 7:0 Dout;tri_74244 i1 (.Din(Din),.Dout(Dout),.en(en);integer i; initial begin i=0; Din=8'

5、;b00000000; en=0; en=1; #30 en=0; #40 en=1;end initial begin for(i=0;i<10;i=i+1) begin #10 Din=i; end end endmoduletri74244功能仿真(2)ALUALU.bdfmodolue_74181使用quartus库中的74181模块转换为verilog文件即可de2_4de2_4.vmodule de2_4(en,in,out); input 2:1 in ; input en; output 4:1 out ; reg 4:1 out ; always (en or in)

6、if (en) case (in) 2'b00:out=4'b0001; 2'b01:out=4'b0010; 2'b10:out=4'b0100; 2'b11:out=4'b1000; default:out=4'b0000; endcase else out=4'b0000; endmodulede2_4.vttimescale 1 ns/ 1 psmodule de2_4_vlg_tst();reg eachvec;reg en;reg 2:1 in; wire 4:1 out; de2_4 i1 (.en(

7、en),.in(in),.out(out);initial begin en=0;endinitial begin # 10 en=1;endinitial begin # 5 in=2'b00;#15 in=2'b01;#15 in=2'b10;#15 in=2'b11;#40 $finish;endinitial$monitor($time,"en=%b in=%b out=%b",en,in,out); endmodulereg8reg8.vmodule reg8 ( T3,DOUT ,D ); input T3 ; wire T3 ;

8、 input 7:0 D ; wire 7:0 D ; output 7:0 DOUT ; reg 7:0 DOUT ; always ( posedge T3 ) begin DOUT <= D ; end endmodule reg8.vttimescale 1 ps/ 1 psmodule reg8_vlg_tst();reg eachvec;reg 7:0 D;reg T3;wire 7:0 DOUT;reg8 i1 (.D(D),.DOUT(DOUT),.T3(T3);integer i;initialbegin T3=0; D=8'd0;end alwaysbegin

9、 #5 T3= T3; end initial begin for(i=0;i<11;i=i+1) begin #10 D=i; end end endmodulemux4_1mux4_1.vmodule mux4_1( d1, d2, d3, d4, se1, se2, dout ); input 7:0d1; input 7:0d2; input 7:0d3; input 7:0d4; input se1; input se2; output dout; reg 7:0dout; always (d1 or d2 or d3 or d4 or se1 or se2) case(se2

10、,se1) 2'b00 : dout=d1; 2'b01 : dout=d2; 2'b10 : dout=d3; 2'b11 : dout=d4; endcaseendmodulemux4_1.vttimescale 1 ps/ 1 psmodule mux4_1_vlg_tst();reg eachvec;reg 7:0 d1;reg 7:0 d2;reg 7:0 d3;reg 7:0 d4;reg se1;reg se2;wire 7:0 dout;mux4_1 i1 (.d1(d1),.d2(d2),.d3(d3),.d4(d4),.dout(dout),

11、.se1(se1),.se2(se2);integer i,j;initial begin #10 d1=8'b00000001; d2=8'b00000010; d3=8'b00000011; d4=8'b00000100; end initial begin #5 while(1) for(i=0;i<2;i=i+1) for(j=0;j<2;j=j+1) begin #5 se2=i; se1=j; end end endmoduleALU逻辑电路图逻辑功能表(1)写寄存器(例如:向通用寄存器R0-R3分别写入数据55H/AAH/03H/04H

12、)T 3RDDRWSBUSABUSDBUS7.0功能(写R)0 011055H55HR00 1110AAHAAHR11 011003H03HR21 111004H04HR3 (2)选择将R0送74181的A端口,R1送B端口 ,进行算术功能验算MCnS3.0RDRSDRWSBUSABUSDBUS7.00 100000001001550100010001001ff011111000100154(3)选择将R0送74181的A端口,R1送B端口 ,进行逻辑功能验算MCnS3.0RDRSDRWSBUSABUSDBUS7.01 000000001001AA10000100010010010111100

13、0100155当A=55H,B=AAH,S=00001111,M=0,CIN=1时仿真测试文件及功能仿真波形timescale 1 ns/ 1 psmodule alu_vlg_tst();reg T3;reg SBUS;reg DRW;reg ABUS;reg LDC;reg CIN;reg M;reg 1:0 RD;reg 1:0 RS;reg 3:0 S;reg 7:0 SD;wire 7:0 DBUS;wire C;alu i1 (.ABUS(ABUS),.C(C),.CIN(CIN),.DBUS(DBUS),.DRW(DRW),.LDC(LDC),.M(M),.RD(RD),.RS(

14、RS),.S(S),.SBUS(SBUS),.SD(SD),.T3(T3);initial begin T3=0; SBUS=1; DRW=1; ABUS=0; RD=2'b00; SD=8'b01010101; #10 RD=2'b01; SD=8'b10101010;#10 RD=2'b10; SD=8'b00000011; #10 RD=2'b11; SD=8'b00000100; #10 RD=2'b00; RS=2'b01; SBUS=0; DRW=0; ABUS=1; CIN=1; LDC=1; M=0

15、; end always begin #5 T3=T3; endinteger i;initial begin #40 S=4'b0000; for(i=1;i<16;i=i+1) #10 S=i; end initial $monitor($time,"M=%b S=%b CIN=%b SD=%h DBUS=%h C=%b",M,S,CIN,SD,DBUS,C);endmodule指令ADD R0,R1( R0+R1 R0)的仿真测试文件及功能仿真波形timescale 1 ns/ 1 psmodule alu_vlg_tst();reg T3;reg SB

16、US;reg DRW;reg ABUS;reg LDC;reg CIN;reg M;reg 1:0 RD;reg 1:0 RS;reg 3:0 S;reg 7:0 SD;wire 7:0 DBUS;wire C;alu i1 (.ABUS(ABUS),.C(C),.CIN(CIN),.DBUS(DBUS),.DRW(DRW),.LDC(LDC),.M(M),.RD(RD),.RS(RS),.S(S),.SBUS(SBUS),.SD(SD),.T3(T3);initial fork T3=0; SBUS=1; DRW=1; ABUS=0; RD=2'b00; SD=8'b0000

17、0111; #10 RD=2'b01; #10 SD=8'b00000001; #20 RD=2'b00; #20 RS=2'b01; #20 SBUS=0; #20 DRW=0; #20 ABUS=1; #20 CIN=1; #20 LDC=1; #20 M=0; #20 S=4'b1001; #30 RD=2'b00; #30 DRW=1; #40 DRW=0;join always begin #5 T3=T3; endendmodule00ns DBUS=07H T3上升沿到来(5ns时)数据07H被写R010ns DBUS=01H T3

18、上升沿到来(15ns时)数据01H被写R120ns DBUS= R0+R1=07+01=08H30ns T3上升沿到来(35ns)时DBUS数据08H被写R0,因此DBUS=R0+R1=08H+01H=09H(说明实现了R0+R1 R0) 注意:此时M=0, S=1001,CIN=1(相当于C0=0),实现算术运算A+B指令SUB R0,R1( R0-R1 R0)的仿真测试文件及功能仿真波形timescale 1 ns/ 1 psmodule alu_vlg_tst();reg T3;reg SBUS;reg DRW;reg ABUS;reg LDC;reg CIN;reg M;reg 1:0

19、 RD;reg 1:0 RS;reg 3:0 S;reg 7:0 SD;wire 7:0 DBUS;wire C;alu i1 (.ABUS(ABUS),.C(C),.CIN(CIN),.DBUS(DBUS),.DRW(DRW),.LDC(LDC),.M(M),.RD(RD),.RS(RS),.S(S),.SBUS(SBUS),.SD(SD),.T3(T3);initial fork T3=0; SBUS=1; DRW=1; ABUS=0; RD=2'b00; SD=8'b00000111; #10 RD=2'b01; #10 SD=8'b00000001; #

20、20 RD=2'b00; #20 RS=2'b01; #20 SBUS=0; #20 DRW=0; #20 ABUS=1; #20 CIN=0; #20 LDC=1; #20 M=0; #20 S=4'b0110; #30 RD=2'b00; #30 DRW=1; #40 DRW=0;join always begin #5 T3=T3; endendmodule00ns DBUS=03H T3上升沿到来(5ns时)数据07H被写R010ns DBUS=01H T3上升沿到来(15ns时)数据01H被写R120ns DBUS= R0-R1=07-01=06H30

21、ns T3上升沿到来(35ns)时DBUS数据06H被写R0,因此DBUS=R0-R1=06H-01H=05H(说明实现了R0-R1 R0)注意:此时M=0,S=0110,实现算术运算A-B-1,设置CIN=0(相当于C0=1),让进位C0=1,因此实现运算(A-B-1)+1=A-B指令AND R0,R1( R0&R1 R0)的仿真测试文件及功能仿真波形timescale 1 ns/ 1 psmodule alu_vlg_tst();reg T3;reg SBUS;reg DRW;reg ABUS;reg LDC;reg CIN;reg M;reg 1:0 RD;reg 1:0 RS;

22、reg 3:0 S;reg 7:0 SD;wire 7:0 DBUS;wire C;alu i1 (.ABUS(ABUS),.C(C),.CIN(CIN),.DBUS(DBUS),.DRW(DRW),.LDC(LDC),.M(M),.RD(RD),.RS(RS),.S(S),.SBUS(SBUS),.SD(SD),.T3(T3);initial fork T3=0; SBUS=1; DRW=1; ABUS=0; RD=2'b00; SD=8'b00000111; #10 RD=2'b01; #10 SD=8'b00001001; #20 RD=2'b00

23、; #20 RS=2'b01; #20 SBUS=0; #20 DRW=0; #20 ABUS=1; #20 CIN=1; #20 LDC=1; #20 M=1; #20 S=4'b1011; #30 RD=2'b00; #30 DRW=1; #38 S=4'b0000; #40 DRW=0; join always begin #5 T3=T3; endendmodule00ns DBUS=00000111 T3上升沿到来(5ns时) 数据00000111被写R010ns DBUS=00001001 T3上升沿到来(15ns时)数据00001001被写R120

24、ns DBUS= R0&R1=0000000130ns DRW=1 T3上升沿到来(35ns)时DBUS数据00000001被写R0,38 ns M=1,S=0000 DBUS=R0&R1=11111110H 实现了求反运算(说明已经实现了R0&R1 R0)(3)RAM4RAM4.bdfcnt256cnt256.vmodule cnt256(Q,DATA,LDN,reset,clk); output 7:0 Q;input 7:0 DATA;input LDN,reset,clk;reg 7:0 Q;always (posedge clk or negedge rese

25、t) /clk上升沿触发 begin if(!reset) /异步清零,低电平有效 Q<=8'b0; else if(!LDN) Q<=DATA; /同步置数,低电平有效 else Q<=Q+1; /计数endendmodule cnt256.vttimescale 1 ns/ 1 psmodule cnt256_vlg_tst();reg 7:0 DATA;reg LDN;reg clk;reg reset; wire 7:0 Q;cnt256 i1 (.DATA(DATA),.LDN(LDN),.Q(Q),.clk(clk),.reset(reset);initi

26、al begin DATA=1'hA; clk=0; reset=1; LDN=1; DATA=8'd00010010; #20 reset=0; #40 reset=1; #260 LDN=0; #80 LDN=1; end always begin #20 clk=clk; end endmoduleasdf利用宏功能模块先生成单端口存储器,再用两单端口存储器进行连接生成双端口存储器RAM4仿真测试逻辑图双端口逻辑功能表 (1)从左端口写存储器(在 01H 单元中写入数据 11H)(右端口为只读端口) T2 T3 MEMW SBUS LAR LPC MBUS CLR_ AR

27、INC PCINC SD7.0 功能 x 0 1 1 0 0 1 0 0 01 01HAR x 1 1 0 0 0 1 0 0 11 11H(01H) (地址线和数据线分时复用技术,先送地址,再送数据)用同样方法在 02H 中写入 22H (2)从左端口读存储器(从 01H 中读出数据 11H)(右端口为只读端口) T2 T3 MEMW SBUS LAR LPC MBUS CLR_ ARINC PCINC SD7.0 功能 x 0 1 1 0 0 1 0 0 01 01HAR x 0 0 0 0 1 1 0 0 xx (01H) DBUS (地址线和数据线分时复用技术,先送地址,再送数据)用同

28、样方法读出 02H 中的 22H (3) 从右端口读存储器(从 01H 中读出数据 11H)(右端口为只读端口) T2 T3 MEMW SBUS LAR LPC MBUS CLR_ ARINC PCINC SD7.0 功能 x 0 1 0 1 0 1 0 0 01 01HPC x 0 0 0 0 1 1 0 0 xx (01H) INS (地址线和数据线分时复用技术,先送地址,再送数据)用同样方法读出 02H 中的 22H (4)AR 自动加 1 读存储器(从左端口连续读存储器) T2 T3 MEMW SBUS LAR LPC MBUS CLR_ ARINC PCINC SD7.0 功能 x

29、0 0 0 0 1 1 1 0 XX MDBUS (5 )PC 自动加 1 读存储器 (从右端 口连续 读存储 器) T2 T3 MEMW SBUS LAR LPC MBUS CLR_ ARINC PCINC SD7.0 功能 x 0 0 0 0 0 1 0 1 XX MINS (4)UCU_ir_1UCU_ir_1.bdfram64_40rom64_40.vmodule rom64_40 (addr,q);input5:0 addr;output39:0 q;reg 39:0 q;always (addr5 or addr4 or addr3 or addr2 or addr1 or add

30、r0)begincase(addr5,addr4,addr3,addr2,addr1,addr0)6'h00 : q <= 40'h0c00000041;6'h01 : q <= 40'h00000410a0;6'h02 : q <= 40'h4010034002;6'h03 : q <= 40'h4010028002;6'h04 : q <= 40'h4020024004;6'h05 : q <= 40'h4010028004;6'h06 : q <

31、;= 40'h6c00020000;6'h07 : q <= 40'h4400020006;6'h08 : q <= 40'h501002080a;6'h09 : q <= 40'h4410020808;6'h0a : q <= 40'h641002080c;6'h0b : q <= 40'h4410020815;6'h0c : q <= 40'h7810020800;6'h0d : q <= 40'h401002a01a;6'

32、;h0e : q <= 40'h0020000c01;6'h0f : q <= 40'h4410020832;6'h10 : q <= 40'h000e810401;6'h11 : q <= 40'h0180020014;6'h12 : q <= 40'h0000000401;6'h13 : q <= 40'h8000000401;6'h14 : q <= 40'h0010002001;6'h15 : q <= 40'h5010

33、020816;6'h16 : q <= 40'h440a7a0017;6'h17 : q <= 40'h44099a0018;6'h18 : q <= 40'h440eca0019;6'h19 : q <= 40'h440f8a0000;6'h1a : q <= 40'h401003401b;6'h1b : q <= 40'h401003501c;6'h1c : q <= 40'h401003501d;6'h1d : q <=

34、40'h401002a01f;6'h1e : q <= 40'h0000000000;6'h1f : q <= 40'h4020025030;6'h20 : q <= 40'h0000000000;6'h21 : q <= 40'h000a780c01;6'h22 : q <= 40'h0009980c01;6'h23 : q <= 40'h000ec80c01;6'h24 : q <= 40'h0008180c01;6'h2

35、5 : q <= 40'h000e80800e;6'h26 : q <= 40'h000fc08010;6'h27 : q <= 40'h0000000112;6'h28 : q <= 40'h0000000212;6'h29 : q <= 40'h000fc02401;6'h2a : q <= 40'h000e800401;6'h2b : q <= 40'h0040002401;6'h2c : q <= 40'h0100000

36、001;6'h2d : q <= 40'h0200000001;6'h2e : q <= 40'h0000020401;6'h2f : q <= 40'h0000000000;6'h30 : q <= 40'h4020025031;6'h31 : q <= 40'h4020020000;6'h32 : q <= 40'h5010020833;6'h33 : q <= 40'h64100c0834;6'h34 : q <= 40&

37、#39;h7810020835;6'h35 : q <= 40'h4c1002a036;6'h36 : q <= 40'h400e834037;6'h37 : q <= 40'h440e835038;6'h38 : q <= 40'h480e835039;6'h39 : q <= 40'h4c0e83503a;6'h3a : q <= 40'h4c1002803b;6'h3b : q <= 40'h702002483c;6'h3c :

38、 q <= 40'h6c2002483d;6'h3d : q <= 40'h582002483e;6'h3e : q <= 40'h4420024800;6'h3f : q <= 40'h0000000000;default : begin endendcaseendendmodulerom64_40.vttimescale 1 ns/ 1 psmodule rom64_40_vlg_tst();reg 5:0 addr; wire 39:0 q; rom64_40 i1 (.addr(addr),.q(q);in

39、teger i;initial begin for(i=0;i<64;i=i+1) begin #50 addr=i; end end endmodulereg6reg6.vmodule reg6 ( CLK,DOUT ,D,CLR_ ); input CLK ; wire CLK ; input 5:0 D ; wire 5:0 D ; input CLR_; wire CLR_; output 5:0 DOUT ; reg 5:0 DOUT ; always ( negedge CLK or negedge CLR_ ) begin if(CLR_=0) DOUT <= 6&#

40、39;d0 ; else DOUT <= D; end endmodulereg6.vttimescale 1 ps/ 1 psmodule reg6_vlg_tst();reg CLK;reg CLR_;reg 5:0 D; wire 5:0 DOUT;reg6 i1 (.CLK(CLK),.CLR_(CLR_),.D(D),.DOUT(DOUT);integer i;initialbegin CLK=0; D=6'd1; CLR_=1; #10 CLR_=0; #10 CLR_=1; #30 D=6'd2;end alwaysbegin #20 CLK= CLK; e

41、nd initial begin #50 for(i=3;i<15;i=i+1) begin #40 D=i; end end endmoduleaddrtranaddrtran.bdfaddrtran.vttimescale 1 ps/ 1 psmodule addrtran_vlg_tst();reg eachvec;reg C;reg INT;reg 7:4 IR;reg 5:0 NuA;reg 4:0 P;reg SWA;reg SWB;reg SWC;reg Z;wire 5:0 uA;addrtran i1 (.C(C),.INT (INT),.IR(IR),.NuA(NuA),.P(P),.SWA(SWA),.SWB(SWB),.SWC(SWC),.uA(uA),.Z(Z);initial begin INT=0; C=0; Z=0; P=5'

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论