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

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

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

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

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

begin

if(en)

Dout<

=Din;

else

Dout<

=8'

bzzzzzzzz;

end

endmodule

`timescale1ps/1ps

moduletri_74244_vlg_tst();

regeachvec;

reg[7:

regen;

wire[7:

0]Dout;

tri74244.vt

tri_74244i1(

.Din(Din),

.Dout(Dout),

.en(en)

);

integeri;

initial

i=0;

Din=8'

b00000000;

en=0;

en=1;

#30en=0;

#40en=1;

end

for(i=0;

i<

10;

i=i+1)

begin

#10Din=i;

endmodule

tri74244功能仿真

 

(2)ALU

ALU.bdf

modolue_74181

使用quartus库中的74181模块转换为verilog文件即可

de2_4

de2_4.v

modulede2_4(en,in,out);

input[2:

1]in;

inputen;

output[4:

1]out;

reg[4:

always@(enorin)

if(en)

case(in)

2'

b00:

out=4'

b0001;

b01:

b0010;

b10:

b0100;

b11:

b1000;

default:

b0000;

endcase

elseout=4'

de2_4.vt

`timescale1ns/1ps

modulede2_4_vlg_tst();

reg[2:

1]in;

wire[4:

1]out;

de2_4i1(

.en(en),

.in(in),

.out(out)

en=0;

end

#10en=1;

#5in=2'

b00;

#15in=2'

b01;

b10;

b11;

#40$finish;

initial

$monitor($time,,,"

en=%bin=%bout=%b"

en,in,out);

reg8

reg8.v

modulereg8(T3,DOUT,D);

inputT3;

wireT3;

0]D;

0]DOUT;

always@(posedgeT3)

DOUT<

=D;

endmodule

reg8.vt

modulereg8_vlg_tst();

0]D;

regT3;

0]DOUT;

reg8i1(

.D(D),

.DOUT(DOUT),

.T3(T3)

begin

T3=0;

D=8'

d0;

always

#5T3=~T3;

11;

i=i+1)

begin

#10D=i;

mux4_1

mux4_1.v

modulemux4_1(

d1,

d2,

d3,

d4,

se1,

se2,

dout

);

0]d1;

0]d2;

0]d3;

0]d4;

inputse1;

inputse2;

outputdout;

0]dout;

always@(d1ord2ord3ord4orse1orse2)

case({se2,se1})

b00:

dout=d1;

b01:

dout=d2;

b10:

dout=d3;

b11:

dout=d4;

mux4_1.vt

modulemux4_1_vlg_tst();

0]d1;

0]d2;

0]d3;

0]d4;

regse1;

regse2;

0]dout;

mux4_1i1(

.d1(d1),

.d2(d2),

.d3(d3),

.d4(d4),

.dout(dout),

.se1(se1),

.se2(se2)

integeri,j;

#10d1=8'

b00000001;

d2=8'

b00000010;

d3=8'

b00000011;

d4=8'

b00000100;

#5

while

(1)

2;

for(j=0;

j<

j=j+1)

#5se2=i;

se1=j;

ALU逻辑电路图

逻辑功能表

(1)写寄存器(例如:

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

T3

RD

DRW

SBUS

ABUS

DBUS[7..0]

功能(写R)

00

1

55H

55H→R0

01

AAH

AAH→R1

10

03H

03H→R2

11

04H

04H→R3

(2)选择将R0送74181的A端口,R1送B端口,进行算术功能验算

M

Cn

S[3..0]

RS

0

0000

00

01

55

0001

ff

……

1111

54

(3)选择将R0送74181的A端口,R1送B端口,进行逻辑功能验算

1

AA

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

modulealu_vlg_tst();

regSBUS;

regDRW;

regABUS;

regLDC;

regCIN;

regM;

reg[1:

0]RD;

0]RS;

reg[3:

0]S;

0]SD;

0]DBUS;

wireC;

alui1(

.ABUS(ABUS),

.C(C),

.CIN(CIN),

.DBUS(DBUS),

.DRW(DRW),

.LDC(LDC),

.M(M),

.RD(RD),

.RS(RS),

.S(S),

.SBUS(SBUS),

.SD(SD),

SBUS=1;

DRW=1;

ABUS=0;

RD=2'

SD=8'

b01010101;

#10RD=2'

b10101010;

RS=2'

SBUS=0;

DRW=0;

ABUS=1;

CIN=1;

LDC=1;

M=0;

always

#5T3=~T3;

end

#40S=4'

for(i=1;

16;

#10S=i;

initial

M=%bS=%bCIN=%bSD=%hDBUS=%hC=%b"

M,S,CIN,SD,DBUS,C);

指令ADDR0,R1(R0+R1→R0)的仿真测试文件及功能仿真波形

fork

b00000111;

#10RD=2'

#10SD=8'

#20RD=2'

#20RS=2'

#20SBUS=0;

#20DRW=0;

#20ABUS=1;

#20CIN=1;

#20LDC=1;

#20M=0;

#20S=4'

b1001;

#30RD=2'

#30DRW=1;

#40DRW=0;

join

00nsDBUS=07HT3上升沿到来(5ns时)数据07H被写R0

10nsDBUS=01HT3上升沿到来(15ns时)数据01H被写R1

20nsDBUS=R0+R1=07+01=08H

30nsT3上升沿到来(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)的仿真测试文件及功能仿真波形

#20RD=2'

#20CIN=0;

b0110;

#30RD=2'

00nsDBUS=03HT3上升沿到来(5ns时)数据07H被写R0

20nsDBUS=R0-R1=07-01=06H

30nsT3上升沿到来(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

指令ANDR0,R1(R0&

R1→R0)的仿真测试文件及功能仿真波形

b00001001;

#20M=1;

b1011;

#38S=4'

join

00nsDBUS=00000111T3上升沿到来(5ns时)数据00000111被写R0

10nsDBUS=00001001T3上升沿到来(15ns时)数据00001001被写R1

20nsDBUS=R0&

R1=00000001

30nsDRW=1T3上升沿到来(35ns)时DBUS数据00000001被写R0,

38nsM=1,S=0000DBUS=R0&

R1==11111110H实现了求反运算

(说明已经实现了R0&

R1→R0)

(3)RAM4

RAM4.bdf

cnt256

cnt256.v

modulecnt256(Q,DATA,LDN,reset,clk);

output[7:

0]Q;

input[7:

0]DATA;

inputLDN,reset,clk;

always@(posedgeclkornegedgereset)//clk上升沿触发

if(!

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

Q<

=8'

b0;

elseif(!

LDN)Q<

=DATA;

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

elseQ<

=Q+1;

//计数

endmodule

cnt256.vt

modulecnt256_vlg_tst();

regLDN;

regclk;

regreset;

cnt256i1(

.DATA(DATA),

.LDN(LDN),

.Q(Q),

.clk(clk),

.reset(reset)

DATA=1'

hA;

clk=0;

reset=1;

LDN=1;

DATA=8'

d00010010;

#20reset=0;

#40reset=1;

#260LDN=0;

#80LDN=1;

always

#20clk=~clk;

asdf

利用宏功能模块先生成单端口存储器,再用两单端口存储器进行连接生成双端口存储器

RAM4仿真测试逻辑图

双端口逻辑功能表

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

T2

T3

MEMW

SBUS

LAR

LPC

MBUS

CLR_

ARINC

PCINC

SD[7..0]

功能

x

01H→AR

x

11

11H→(01H)

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

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

xx

(01H)→DBUS

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

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

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

当前位置:首页 > 人文社科

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

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