计算机组成原理模型机实验报告.docx

上传人:b****5 文档编号:7202970 上传时间:2023-01-21 格式:DOCX 页数:35 大小:28.89KB
下载 相关 举报
计算机组成原理模型机实验报告.docx_第1页
第1页 / 共35页
计算机组成原理模型机实验报告.docx_第2页
第2页 / 共35页
计算机组成原理模型机实验报告.docx_第3页
第3页 / 共35页
计算机组成原理模型机实验报告.docx_第4页
第4页 / 共35页
计算机组成原理模型机实验报告.docx_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

计算机组成原理模型机实验报告.docx

《计算机组成原理模型机实验报告.docx》由会员分享,可在线阅读,更多相关《计算机组成原理模型机实验报告.docx(35页珍藏版)》请在冰豆网上搜索。

计算机组成原理模型机实验报告.docx

计算机组成原理模型机实验报告

计算机组成原理模型机实验报告

实验六计算机系统综合设计与实现一、实验目得

1、深入理解计算机系统工作得基本原理,建立整机概念.

2、融会贯通计算机组成原理课程得内容,通过知识得综合运用,加深对计算机系统各模块得工作原理及相互联系得认识.

3、培养科学研究得独立工作能力,取得工程设计与组装调试得实践经验。

二、实验要求

1、将已经设计得运算器、存储器与控制器连接,构建完整得计算机系统;2、编写一段可以实现一定功能得指令程序,进行计算机整机系统功能得验证.

3、所有任务要求功能仿真与必要得验证。

实验完成后,一周内提交实验报告。

三、

实验设备

PC机+QuartusⅡ10、0+FPGA(DE2;115)+TEC-8实验箱四、计算机系统(TEC;8))综合逻辑框图

硬连线控制器控制信号切换电路ALUA端口B端口CZR0R1R2R3IRPCAR双端口RAMDBUS

五、实验任务

1、将实验二得运算器、实验三得存储器与实验五得控制器连接,构建完整得计算机系统;

2、计算机整机系统功能测试,进行功能仿真与时序仿真并在DE2;115上验证。

(1)根据指令系统,编写一段可以实现一定功能得程序,要求:

有一个合理得运算功能与逻辑关系;指令数量:

不少于8条;指令类型:

停机、跳转、RR、读存、写存、算术与逻辑运算;

(2)将指令程序手工汇编成二进制代码;(3)理论上设置寄存器得初值,并计算程序执行后得结果;(4)将指令程序得二进制代码存入存储器RAM中;(5)将需要得运算数据初值存入寄存器R0-R3中;(6)进行程序连续运行得功能仿真与时序仿真,将仿真运算结果与理论计算结果进行比较。

六、实验步骤ﻫ实验电路图

子模块

(1)tri_74244

tri74244、vmoduletri_74244(en,Din,Dout); inputen; wireen;

input[7:

0]Din;

wire[7:

0]Din;

output[7:

0]Dout;

reg[7:

0]Dout;

always(enorDin)begin

if(en)Dout<=Din; else

Dout<=8"bzzzzzzzz; end

endmodule`timescale1ps/1psmoduletri_74244_vlg_tst();regeachvec;reg[7:

0]Din;regen;wire[7:

0]

Dout;tri74244、vt`timescale1ps/1psmoduletri_74244_vlg_tst();regeachvec;reg[7:

0]Din;regen;wire[7:

0]

Dout;tri_74244i1(

、Din(Din),

、Dout(Dout),、

)ne(neﻩ);integeri;

initial

begin

i=0;

Din=8'b00000000; en=0; en=1; #30en=0; #40en=1;end

initial

begin

for(i=0;i<10;i=i+1)

begin

#10Din=i; end

end

endmoduletri74244功能仿真

(2)ALU

ALU、bdf

modolue_74181

可即件文golirev为换转块模18147得中库sutrauq用使ﻩde2_4

de2_4、vmodulede2_4(en,in,out); input

[2:

1]

in; input

en;

output[4:

1]

out; reg

[4:

1]

out;

always

(enorin)

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

elseout=4��b0000; endmoduledde2_4、vtt

`timescale1ns/1psmodulede2_4_vlg_tst();regeachvec;regen;reg[2:

1]in; wire[4:

1]

out;

de2_4i1(、,)ne(neﻩ、,)ni(niﻩ、out(out)); initial

begin

en=0;endinitial

begin

#10en=1;endinitial

begin

#5in=2��b00;#15in=2"b01;#15in=2'b10;#15in=2"b11;#40$finish;endinitial$monitor($time,,,en=%bin=%bout=%b",en,in,out); endmodule

reg8

reg8、vmodulereg8(T3,DOUT,D); inputT3; wireT3; input[7:

0]D; wire[7:

0]D;

output[7:

0]DOUT; reg[7:

0]DOUT; always

(posedgeT3)

begin

DOUT〈=D;

end

endmodule

reg8、vt`timescale1ps/1psmodulereg8_vlg_tst;regeachvec;reg[7:

0]D;regT3;wire[7:

0]

DOUT;reg8i1(

、D(D),

、DOUT(DOUT),、

)3T(3Tﻩ);integeri;initialbegin

T3=0; D=8'd0;end

alwaysbegin

#5T3=~T3;

end

initial

begin

for(i=0;i<11;i=i+1)

begin

#10D=i;

end

end

endmodule

mu_4_1

mu_4_1、vmodulemu_4_1(

d1,

d2,

d3,

d4,

se1,

se2,

dout

); input[7:

0]d1; input[7:

0]d2; input[7:

0]d3;

input[7:

0]d4; inputse1; inputse2; outputdout;

reg[7:

0]dout;

always

(d1ord2ord3ord4orse1orse2)

case({se2,se1})

2"b00:

dout=d1;

2"b01:

dout=d2;

2"b10:

dout=d3; 2'b11:

dout=d4;

endcaseendmodulemu_4_1、vt`timescale1ps/1psmodulemu_4_1_vlg_tst();regeachvec;reg[7:

0]d1;reg[7:

0]d2;reg[7:

0]d3;reg[7:

0]d4;regse1;regse2;wire[7:

0]

dout;mu_4_1i1(、

)1d(1dﻩ

、d2(d2),、

)3d(3dﻩ、d4(d4),

、dout(dout),

、se1(se1),、

)2es(2esﻩ);integeri,j;initial

begin

#10d1=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

#5se2=i;se1=j;

end

end

endmodule

ALU逻辑电路图

逻辑功能表

(1)写寄存器(例如:

向通用寄存器R0;R3分别写入数据55H/AAH/03H/04H)

T3RDDRWSBUSABUSDBUS[7、、0]功能(写R)uarr;0011055H55H��R0uarr;01110AAHAAH��R1uarr;1011003H03H��R2uarr;1111004H04H��R3

(2)选择将R0送74181得A端口,R1送送B端口,进行算术功能验算MCnS[3、、0RDRSDRWSBUSABUSDBUS[7、、0]

]0

1

55

01ff

......

0154(3)选择将R0送74181得得A端口,R1送送B端口

,进行逻辑功能验算MCnS[3、、0]RDRSDRWSBUSABUSDBUS[7、、0]1

1AA1

100

......

1

155当A=55H,B=AAH,S=0000~1111,M=0,CIN=1时仿真测试文件及功能仿真波形

`timescale1ns/1psmodulealu_vlg_tst();regT3;regSBUS;regDRW;regABUS;regLDC;regCIN;regM;reg[1:

0]RD;reg[1:

0]RS;reg[3:

0]S;reg[7:

0]SD;wire[7:

0]

DBUS;wireC;alui1(

、ABUS(ABUS),、,)C(Cﻩ、,)NIC(NICﻩ、DBUS(DBUS),、,)WRD(WRDﻩ、LDC(LDC),

、M(M),

、RD(RD),、,)SR(SRﻩ、S(S),、,)SUBS(SUBSﻩ

、,)DS(DSﻩ、T3(T3)

);initial

begin

T3=0; SBUS=1; DRW=1; ABUS=0; RD=2��b00;

SD=8"b01010; #10RD=2"b01;

SD=8��b10101010;#10RD=2��b10; SD=8'b00000011;

#10RD=2"b11;

SD=8��b00000100;

#10RD=2'b00; RS=2"b01; SBUS=0; DRW=0;

ABUS=1; CIN=1; LDC=1; M=0;

end

always

begin

#5T3=~T3;

endintegeri;initial

begin

#40

S=4��b0000;

for(i=1;i〈16;i=i+1)

#10S=i; end

initial

$monitor($time,,,M=%bS=%bCIN=%bSD=%hDBUS=%hC=%b,M,S,CIN,SD,DBUS,C);endmodule

指令ADD

R0,R1(R0+R1

��

R0)得仿真测试文件及功能仿真波形`timescale1ns/1psmodulealu_vlg_tst();regT3;regSBUS;regDRW;regABUS;regLDC;regCIN;regM;reg[1:

0]RD;reg[1:

0]RS;

reg[3:

0]S;reg[7:

0]SD;wire[7:

0]

DBUS;wireC;alui1(、,)SUBA(SUBAﻩ、,)C(Cﻩ、,)NIC(NICﻩ、,)SUBD(SUBDﻩ、DRW(DRW),、,)CDL(CDLﻩ、M(M),

、RD(RD),

、RS(RS),

、S(S),

、SBUS(SBUS),

、SD(SD),、)3T(3Tﻩ);initial

fork

T3=0;

SBUS=1; DRW=1; ABUS=0;

RD=2"b00;

SD=8'b00000111;

#10RD=2��b01; #10SD=8��b00000001;#20RD=2��b00; #20RS=2��b01; #20SBUS=0; #20DRW=0; #20ABUS=1; #20CIN=1; #20LDC=1; #20M=0; #20S=4��b1001;#30RD=2"b00;

#30DRW=1; #40DRW=0;join

always

begin

#5T3=~T3;

endendmodule

00ns

DBUS=07H

T3上升沿到来(5ns时)数据07H被写R010ns

DBUS=01H

T3上升沿到来(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指令SUBR0,R1(R0-R1��R0)得仿真测试文件及功能仿真波形`timescale1ns/1psmodulealu_vlg_tst();regT3;regSBUS;regDRW;regABUS;regLDC;regCIN;regM;reg[1:

0]RD;reg[1:

0]RS;reg[3:

0]S;reg[7:

0]SD;wire[7:

0]

DBUS;wireC;alui1(、,)SUBA(SUBAﻩ、C(C),、,)NIC(NICﻩ

、,)SUBD(SUBDﻩ、,)WRD(WRDﻩ、LDC(LDC),、,)M(Mﻩ、,)DR(DRﻩ、RS(RS),

、S(S),、,)SUBS(SUBSﻩ、SD(SD),

、T3(T3)

);initial

fork

T3=0; SBUS=1;

DRW=1; ABUS=0; RD=2��b00; SD=8'b00000111;

#10RD=2"b01; #10SD=8"b00000001; #20RD=2"b00; #20RS=2��b01; #20SBUS=0; #20DRW=0; #20ABUS=1;

#20CIN=0; #20LDC=1; #20M=0; #20S=4��b0110; #30RD=2'b00; #30DRW=1; #40DRW=0;join

always

begin

#5T3=~T3; endendmodule

00ns

DBUS=03H

T3上升沿到来(5ns时)数据07H被写R010ns

DBUS=01H

T3上升沿到来(15ns时)数据01H被写R120ns

DBUS=R0;R1=07-01=06H30ns

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)得仿真测试文件及功能仿真波形`timescale1ns/1psmodulealu_vlg_tst();regT3;regSBUS;regDRW;regABUS;regLDC;regCIN;regM;reg[1:

0]RD;reg[1:

0]RS;reg[3:

0]S;reg[7:

0]SD;wire[7:

0]

DBUS;wireC;alui1(、,)SUBA(SUBAﻩ、C(C),

、CIN(CIN),

、DBUS(DBUS),

、,)WRD(WRDﻩ、,)CDL(CDLﻩ、M(M),

、RD(RD),

、RS(RS),、,)S(Sﻩ、SBUS(SBUS),、,)DS(DSﻩ、)3T(3Tﻩ);initial

fork

T3=0;

SBUS=1; DRW=1; ABUS=0; RD=2"b00;

SD=8'b00000111;

#10RD=2��b01;

#10SD=8"b00001001;

#20RD=2��b00;

#20RS=2"b01;

#20SBUS=0;

#20DRW=0;

#20ABUS=1; #20CIN=1;

#20LDC=1;

#20M=1; #20S=4"b1;

#30RD=2"b00;

#30DRW=1; #38S=4"b0000; #40DRW=0;

join

always

begin

#5T3=~T3;

endendmodule

00ns

DBUS=00000111

T3上升沿到来(5ns时)数据被写R010ns

DBUS=00001001

T3上升沿到来(15ns时)数据被写R120ns

DBUS=R0;R1=0000000130ns

DRW=1

T3上升沿到来(35ns)时DBUS数据被写R0,38ns

M=1,S=0000

DBUS=R0&R1==11111110H实现了求反运算(说明已经实现了R0;R1��R0)(3)RAM4

RAM4、bdf

cnt256

cnt256、vmodulecnt256(Q,DATA,LDN,reset,clk);

output[7:

0]Q;input[7:

0]DATA;inputLDN,reset,clk;reg[7:

0]Q;always(posedgeclkornegedgereset)

//clk上升沿触发

begin

if(!

reset)

//异步清零,低电平有效

Q<=8��b0; elseif(!

LDN)

Q<=DATA;

//同步置数,低电平有效

elseQ<=Q+1;

//计数endendmodule

cnt256、vt`timescale1ns/1psmodulecnt256_vlg_tst;reg[7:

0]DATA;regLDN; regclk;regreset; wire[7:

0]

Q;cnt256i1(

、DATA(DATA),

、LDN(LDN),

、Q(Q),

、clk(clk),、

)teser(teserﻩ);initial

begin

DATA=1"hA; clk=0;

reset=1;

LDN=1;

DATA=8"d00010010; #20reset=0;

#40

reset=1; #260LDN=0;

#80LDN=1; end

always

begin

#20clk=~clk;

end

endmodule

asdf

口端双成生接连行进器储存口端单两用再,器储存口端单成生先块模能功宏用利ﻩ存储器RAM4仿真测试逻辑图

双端口逻辑功能表

(1)从左端口写存储器(在01H单元中写入数据11H)(右端口为只读端口)

T2

TT3MEMW

SBUS

LAR

LPC

MMBUSCLR_

ARINC

PCINC

SSD[7、、0]

功能

xx

uarr;

0

1

1

0

0

1

00

00

001

01H��AR

uarr;

xx

1

11

0

0

0

1

0

00

11

11H��(01H)

(地址线与数据线分时复用技术,先送地址,再送数据)用同样方法在02H中写入22H

(2)从左端口读存储器(从01H中读出数据11H)(右端口为只读端口)

T2

T3MEMW

SBUS

LAR

LPC

MMBUS

CLR_

ARINC

PCINC

SD[7、、0]功能

_

uarr;

0

1

1

0

0

11

0

00

01

01H��AR

uarr;

_

0

0

00

0

1

11

0

0

__

(01H)

��DBUS

(地址线与数据线分时复用技术,先送地址,再送数据)用同样方法读出02H中得22H

(3)从右端口读存储器(从01H中读出数据11H)(右端口为只读端口)

T2

T3MEMW

SSBUS

LAR

LPC

MBUS

CCLR_

ARINC

PCINC

SD[7、、0]

功能

_

uarr;

0

11

0

11

00

1

0

0

01

01H��PC

uarr;

xx

0

0

00

0

11

11

0

0

_x

(01H)��INS

(地址线与数据线分时复用技术,先送地址,再送数据)用同样方法读出02H中得22H

(4)AR自动加1读存储器(从左端口连续读存储器)

T2

T3MEMW

SBUS

LAR

LPC

MMBUS

CLR_

ARINC

PPCINC

SD[7、、0]功能

uarr;

_

0

0

0

0

11

11

1

0

__

M��DBUS

(5)PC

自动加1

读存储器(从右端口连续读存储器)

TT2

T3

MEMW

SBUS

LAR

LPC

MBUS

CLR_

ARINC

PPCINC

SD[7、、0]

功能

uarr;

_

00

0

0

0

0

11

0

11

__

M��INS

(4)UCU_ir_1

UCU_ir_1、bdf

ram64_40

rom64_40、vmodulerom64_40(

,rddaﻩq); tupniﻩ]0:

5[

;rddaﻩoutput[39:

0]

q; reg[39:

0]q; always(addr[5]oraddr[4]oraddr[3]oraddr[2]oraddr[1]oraddr[0])

nigebﻩ

case({addr[5],addr[4],addr[3],addr[2],addr[1],addr[0]})

��6ﻩ

;14000000c0h'04=〈q:

00hﻩ

ﻩ6"h01:

q〈=40��h0000

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 研究生入学考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1