基于Libero的数字逻辑设计仿真及验证实验报告书.docx

上传人:b****1 文档编号:13404277 上传时间:2023-06-13 格式:DOCX 页数:73 大小:563.61KB
下载 相关 举报
基于Libero的数字逻辑设计仿真及验证实验报告书.docx_第1页
第1页 / 共73页
基于Libero的数字逻辑设计仿真及验证实验报告书.docx_第2页
第2页 / 共73页
基于Libero的数字逻辑设计仿真及验证实验报告书.docx_第3页
第3页 / 共73页
基于Libero的数字逻辑设计仿真及验证实验报告书.docx_第4页
第4页 / 共73页
基于Libero的数字逻辑设计仿真及验证实验报告书.docx_第5页
第5页 / 共73页
基于Libero的数字逻辑设计仿真及验证实验报告书.docx_第6页
第6页 / 共73页
基于Libero的数字逻辑设计仿真及验证实验报告书.docx_第7页
第7页 / 共73页
基于Libero的数字逻辑设计仿真及验证实验报告书.docx_第8页
第8页 / 共73页
基于Libero的数字逻辑设计仿真及验证实验报告书.docx_第9页
第9页 / 共73页
基于Libero的数字逻辑设计仿真及验证实验报告书.docx_第10页
第10页 / 共73页
基于Libero的数字逻辑设计仿真及验证实验报告书.docx_第11页
第11页 / 共73页
基于Libero的数字逻辑设计仿真及验证实验报告书.docx_第12页
第12页 / 共73页
基于Libero的数字逻辑设计仿真及验证实验报告书.docx_第13页
第13页 / 共73页
基于Libero的数字逻辑设计仿真及验证实验报告书.docx_第14页
第14页 / 共73页
基于Libero的数字逻辑设计仿真及验证实验报告书.docx_第15页
第15页 / 共73页
基于Libero的数字逻辑设计仿真及验证实验报告书.docx_第16页
第16页 / 共73页
基于Libero的数字逻辑设计仿真及验证实验报告书.docx_第17页
第17页 / 共73页
基于Libero的数字逻辑设计仿真及验证实验报告书.docx_第18页
第18页 / 共73页
基于Libero的数字逻辑设计仿真及验证实验报告书.docx_第19页
第19页 / 共73页
基于Libero的数字逻辑设计仿真及验证实验报告书.docx_第20页
第20页 / 共73页
亲,该文档总共73页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于Libero的数字逻辑设计仿真及验证实验报告书.docx

《基于Libero的数字逻辑设计仿真及验证实验报告书.docx》由会员分享,可在线阅读,更多相关《基于Libero的数字逻辑设计仿真及验证实验报告书.docx(73页珍藏版)》请在冰点文库上搜索。

基于Libero的数字逻辑设计仿真及验证实验报告书.docx

基于Libero的数字逻辑设计仿真及验证实验报告书

实验题目_________基于Libero的数字逻辑设计仿真及验证实验_________

1、熟悉EDA工具的使用;仿真基本门电路。

2、仿真组合逻辑电路。

3、仿真时序逻辑电路。

4、基本门电路、组合电路和时序电路的程序烧录及验证。

5、数字逻辑综合设计仿真及验证。

实验报告

1、基本门电路

一、实验目的

1、了解基于Verilog的基本门电路的设计及其验证。

2、熟悉利用EDA工具进行设计及仿真的流程。

3、学习针对实际门电路芯片74HC00、74HC02、74HC04、74HC08、74HC32、74HC86进行VerilogHDL设计的方法。

二、实验环境

Libero仿真软件。

三、实验内容

1、掌握Libero软件的使用方法。

2、进行针对74系列基本门电路的设计,并完成相应的仿真实验。

3、参考教材中相应章节的设计代码、测试平台代码(可自行编程),完成74HC00、74HC02、74HC04、74HC08、74HC32、74HC86相应的设计、综合及仿真。

4、提交针对74HC00、74HC02、74HC04、74HC08、74HC32、74HC86(任选一个)的综合结果,以及相应的仿真结果。

四、实验结果和数据处理

1、所有模块及测试平台代码清单

//74HC00代码-与非

//74HC00.v

moduleHC00(A,B,Y);

input[4:

1]A,B;

output[4:

1]Y;

assignY=~(A&B);//与非

endmodule

//74HC00测试平台代码

//testbench.v

`timescale1ns/1ns

moduletestbench();

reg[4:

1]a,b;

wire[4:

1]y;

HC00u1(a,b,y);

initial

begin

a=4'b0000;b=4'b0001;

#10b=b<<1;

#10b=b<<1;

#10b=b<<1;

#10

a=4'b1111;b=4'b0001;

#10b=b<<1;

#10b=b<<1;

#10b=b<<1;

end

endmodule

//74HC02代码-或非

//74HC02.v

moduleHC02(A,B,Y);

input[4:

1]A,B;

output[4:

1]Y;

assignY=~(A|B);//或非

endmodule

//74HC02测试平台代码

`timescale1ns/1ns

moduletest02();

reg[4:

1]a,b;

wire[4:

1]y;

HC02u2(a,b,y);

initial

begin

a=4'b0000;b=4'b0001;

#10b=b<<1;

#10b=b<<1;

#10b=b<<1;

#10

a=4'b1111;b=4'b0001;

#10b=b<<1;

#10b=b<<1;

#10b=b<<1;

end

endmodule

//74HC04代码-非

moduleHC04(A,Y);

input[6:

1]A;

output[6:

1]Y;

assignY=~A;//非

endmodule

//74HC04测试平台代码

`timescale1ns/1ns

moduletest04();

reg[6:

1]a;

wire[6:

1]y;

HC04u4(a,y);

initial

begin

a=6'b000001;

#10b=b<<1;

#10b=b<<1;

#10b=b<<1;

#10b=b<<1;

#10b=b<<1;

end

endmodule

//74HC08代码-与

moduleHC08(A,B,Y);

input[4:

1]A,B;

output[4:

1]Y;

assignY=A&B;//与

endmodule

//74HC08测试平台代码

`timescale1ns/1ns

moduletest08();

reg[4:

1]a,b;

wire[4:

1]y;

HC08u8(a,b,y);

initial

begin

a=4'b0000;b=4'b0001;

#10b=b<<1;

#10b=b<<1;

#10b=b<<1;

#10

a=4'b1111;b=4'b0001;

#10b=b<<1;

#10b=b<<1;

#10b=b<<1;

end

endmodule

//74HC32代码-或

moduleHC32(A,B,Y);

input[4:

1]A,B;

output[4:

1]Y;

assignY=A|B;//或

endmodule

//74HC32测试平台代码

`timescale1ns/1ns

moduletest32();

reg[4:

1]a,b;

wire[4:

1]y;

HC32u32(a,b,y);

initial

begin

a=4'b0000;b=4'b0001;

#10b=b<<1;

#10b=b<<1;

#10b=b<<1;

#10

a=4'b1111;b=4'b0001;

#10b=b<<1;

#10b=b<<1;

#10b=b<<1;

end

endmodule

//74HC86代码-异或

moduleHC86(A,B,Y);

input[4:

1]A,B;

output[4:

1]Y;

assignY=A&(~B)|(~A&B);//异或

endmodule

//74HC86测试平台代码

`timescale1ns/1ns

moduletest86();

reg[4:

1]a,b;

wire[4:

1]y;

HC86u86(a,b,y);

initial

begin

a=4'b0000;b=4'b0001;

#10b=b<<1;

#10b=b<<1;

#10b=b<<1;

#10

a=4'b1111;b=4'b0001;

#10b=b<<1;

#10b=b<<1;

#10b=b<<1;

end

endmodule

 

2、第一次仿真结果(任选一个门,请注明,插入截图,下同)。

(将波形窗口背景设为白色,调整窗口至合适大小,使波形能完整显示,对窗口截图。

后面实验中的仿真使用相同方法处理)

截图如下:

74HC02的截图如下

3、综合结果(截图)。

(将相关窗口调至合适大小,使RTL图能完整显示,对窗口截图,后面实验中的综合使用相同方法处理)

截图如下:

74HC02的截图如下:

4、第二次仿真结果(综合后)(截图)。

回答输出信号是否有延迟,延迟时间约为多少?

答:

延迟约为0.3ns

截图如下:

延迟时间为300ps。

5、第三次仿真结果(布局布线后)(截图)。

回答输出信号是否有延迟,延迟时间约为多少?

分析是否有出现竞争冒险。

 

截图如下:

答:

延迟时间为4900ps。

由于信号输出经过或门和与门两个门电路,所以输入信号改变时,会有输出延迟,出现了竞争冒险。

2、组合逻辑电路

一、实验目的

1、了解基于Verilog的组合逻辑电路的设计及其验证。

2、熟悉利用EDA工具进行设计及仿真的流程。

3、学习针对实际组合逻辑电路芯片74HC148、74HC138、74HC153、74HC85、74HC283、74HC4511进行VerilogHDL设计的方法。

二、实验环境

Libero仿真软件。

三、实验内容

1、掌握Libero软件的使用方法。

2、进行针对74系列基本组合逻辑电路的设计,并完成相应的仿真实验。

3、参考教材中相应章节的设计代码、测试平台代码(可自行编程),完成74HC148、74HC138、74HC153、74HC85、74HC283、74HC4511相应的设计、综合及仿真。

4、74HC85测试平台的测试数据要求:

进行比较的A、B两数,分别为本人学号的末两位,如“89”,则A数为“1000”,B数为“1001”。

若两数相等,需考虑级联输入(级联输入的各种取值情况均需包括);若两数不等,则需增加一对取值情况,验证A、B相等时的比较结果。

5、74HC4511设计成扩展型的,即能显示数字0~9、字母a~f。

6、提交针对74HC148、74HC138、74HC153、74HC85、74HC283、74HC4511(任选一个)的综合结果,以及相应的仿真结果。

 

四、实验结果和数据处理

1、所有模块及测试平台代码清单

//74HC148代码

module HC148(DataIn,EO,Dataout);

 input [7:

0] DataIn; 

output EO; 

output [2:

0] Dataout;

 reg [2:

0] Dataout;

 reg EO;

 integer I; 

always @(DataIn) 

begin 

Dataout=0;

 EO=1; 

for(I=0;I<8;I=I+1) 

begin 

if(DataIn[I])

 begin 

Dataout=I; 

EO=0;

 end 

end

 end 

endmodule 

//74HC148测试平台代码

// test148.v 

`timescale 1ns/1ns 

module test148;

 reg [7:

0] in;

 wire [2:

0] out; 

wire EO; 

initial 

begin 

in=00000001;

 repeat(9) 

#20 in=in<<1;

 end 

HC148 u148(in,EO,out); 

endmodule

//74HC138代码

//HC138.v 

module HC138(A,B,C,G1,G2AN,G2BN,Y7,Y6,Y5,Y4,Y3,Y2,Y1,Y0); 

input A,B,C; 

input G1,G2AN,G2BN; 

output Y7,Y6,Y5,Y4,Y3,Y2,Y1,Y0; 

wire Y7,Y6,Y5,Y4,Y3,Y2,Y1,Y0;

 reg [7:

0] Eq;

 wire [7:

0] EqN; 

wire [2:

0]DataIn; 

assign EqN=~Eq; 

assign DataIn[0]=A; 

assign DataIn[1]=B; 

assign DataIn[2]=C; 

always @(DataIn or G1 or G2AN or G2BN)

begin

 if(!

G1) 

Eq=8'b11111111; 

else if(!

(G2AN&G2BN)) Eq=8'b11111111; 

else

 Eq=1'b1<

end 

assign Y0=EqN[0]; 

assign Y1=EqN[1];

 assign Y2=EqN[2]; 

assign Y3=EqN[3]; 

assign Y4=EqN[4]; 

assign Y5=EqN[5]; 

assign Y6=EqN[6]; 

assign Y7=EqN[7];

endmodule

//74HC138测试平台代码

// test138.v 

`timescale 1ns/10ps 

module test138; 

reg A,B,C; 

reg G1,G2AN,G2BN; 

wire Y0,Y1,Y2,Y3,Y4,Y5,Y6,Y7; 

initial 

begin 

A=0; 

repeat(20) 

#20 A=$random; 

end 

initial 

begin 

B=0; 

repeat(20) 

#20 B=$random; 

end 

initial 

begin 

C=0; 

repeat(20) 

#20 C=$random; 

end 

initial 

begin 

G1=0; 

#40 G1=1; 

end 

initial 

begin 

G2AN=0; 

#25 G2AN=1; 

end 

initial 

begin 

G2BN=0; 

#45 G2BN=1; 

end 

HC138 u138 

( 

.A (A), 

.B (B), 

.C (C), 

.G1 (G1), 

.G2AN (G2AN), 

.G2BN (G2BN), 

.Y0 (Y0), 

.Y1 (Y1), 

.Y2 (Y2), 

.Y3 (Y3), 

.Y4 (Y4), 

.Y5 (Y5), 

.Y6 (Y6), 

.Y7 (Y7) 

); 

endmodule

 

//74HC153代码

//HC153.v 

module HC153(C0,C1,C2,C3,A,B,Y

G); 

input C0,C1,C2,C3,A,B,G; 

output Y; 

reg Y; 

always @(C0 or C1 or C2 or C3 or A or B) 

begin 

if(G) Y=0; 

else 

case({A,B}) 

0:

Y=C0; 

1:

Y=C1; 

2:

Y=C2; 

3:

Y=C3; 

default:

Y=1'bx; 

endcase 

end 

endmodule

//74HC153测试平台代码

// test153.v 

`timescale 1ns/1ns 

module test153; 

reg C0,C1,C2,C3; 

reg A,B,G; 

wire Y; 

initial 

begin 

G=1; 

repeat(20) 

#20 G=0; 

end 

initial 

begin 

A=0; 

repeat(20) 

#20 A=$random; 

end 

initial 

begin 

B=0; 

repeat(20) 

#20 B=$random; 

end 

initial 

begin 

C0=0; 

repeat(20) 

#20 C0=$random; 

end 

initial 

begin 

C1=0; 

repeat(20) 

#20 C1=$random; 

end 

initial 

begin 

C2=0; 

repeat(20) 

#20 C2=$random; 

end 

initial 

begin 

C3=0; 

repeat(20) 

#20 C3=$random; 

end 

HC153 u153 

( 

.C0 (C0), 

.C1 (C1), 

.C2 (C2), 

.C3 (C3), 

.G (G), 

.A (A), 

.B (B), 

.Y (Y) 

); 

endmodule 

 

//74HC85代码

//HC85.v 

module HC85(A3,A2,A1,A0,B3,B2,B1,B0,QAGB,QASB,QAEB,IAGB,IASB,IAEB); 

input A3,A2,A1,A0,B3,B2,B1,B0,IAGB,IASB,IAEB; 

output QAGB,QASB,QAEB; 

reg QAGB,QASB,QAEB; 

wire [3:

0]DataA,DataB; 

assign DataA[0]=A0; 

assign DataA[1]=A1; 

assign DataA[2]=A2; 

assign DataA[3]=A3; 

assign DataB[0]=B0; 

assign DataB[1]=B1; 

assign DataB[2]=B2; 

assign DataB[3]=B3; 

always @(DataA or DataB) 

begin 

if(DataA>DataB) 

begin 

QAGB=1;QASB=0;QAEB=0; 

end 

else if(DataA

begin 

QASB=1;QAGB=0;QAEB=0; 

end 

else if(IAGB&!

IASB&!

IAEB) 

begin 

QAGB=1;QASB=0;QAEB=0; 

end 

else if(!

IAGB&IASB&!

IAEB) 

begin 

QASB=1;QAGB=0;QAEB=0; 

end 

else if(IAEB) 

begin 

QAEB=1;QASB=0;QAGB=0; 

end 

begin 

if(DataA==DataB) 

if(IAGB&IASB&!

IAEB) 

begin QAGB=0;QASB=0;QAEB=0;end 

if(!

IAGB&!

IASB&!

IAEB) 

begin QAGB=1;QASB=1;QAEB=0;end 

end 

end 

endmodule

//74HC85测试平台代码

// test85.v 

`timescale 1ns/1ns 

module test85; 

reg A3,A2,A1,A0,B3,B2,B1,B0; 

reg IAGB,IASB,IAEB; 

wire QAGB,QASB,QAEB; 

initial 

begin 

A3=0; 

repeat(20) 

#20 A3=$random; 

end 

initial 

begin 

A2=0; 

repeat(20) 

#20 A2=$random; 

end 

initial 

begin 

A1=0; 

repeat(20) 

#20 A1=$random; 

end 

initial 

begin 

A0=0; 

repeat(20) 

#20 A0=$random; 

end 

initial 

begin 

B3=0; 

repeat(20) 

#20 B3=$random; 

end 

initial 

begin 

B2=0; 

repeat(20) 

#20 B2=$random; 

end 

initial 

begin 

B1=0; 

repeat(20) 

#20 B1=$random; 

end 

initial 

begin 

B0=0; 

repeat(20) 

#20 B0=$random; 

end 

initial 

begin 

IAGB=0; 

repeat(10) 

#40 IAGB=$random; 

end 

initial 

begin 

IASB=0; 

repeat(10) 

#40 IASB=$random; 

end 

initial 

begin 

IAEB=0; 

repeat(10) 

#40 IAEB=$random; 

end 

HC85 u85 

( 

.A3 (A3), 

.A2 (A2), 

.A1 (A1), 

.A0 (A0), 

.B3 (B3), 

.B2 (B2), 

.B1 (B1), 

.B0 (B0), 

.IAGB (IAGB), 

.IASB (IASB), 

.IAEB (IAEB), 

.QAGB (QAGB), 

.QASB (QASB), 

.QAEB (QAEB) 

); 

Endmodule

 

//74HC283代码

//HC283.v 

module HC283(A3,A2,A1,A0,B3,B2,B1,B0,Sigma3,Sigma2,Sigma1,Sigma0,C0,C4); 

input A3,A2,A1,A0,B3,B2,B1,B0; 

input C0; 

output Sigma3,Sigma2,Sigma1,Sigma0; 

output C4; 

reg C4; 

reg[3:

0]Sigma; 

wire[3:

0]DataA,DataB; 

assign DataA[0]=A0; 

assign DataA[1]=A1; 

assign DataA[2]=A2; 

assign DataA[3]=A3; 

assign DataB[0]=B0; 

assign DataB[1]=B1; 

assign DataB[2]=B2; 

assign DataB[3]=B3; 

always @(DataA or DataB or C0) 

begin 

{C4,Sigma}=DataA+DataB+C0; 

end 

assign Sigma0= Sigma[0]; 

assign Sigma1= Sigma[1]; 

assign Sigma2= Sigma[2]; 

assign Sigma3= Sigma[3]; 

endmodule

//74HC283测试平台代码

// test283.v 

`timescale 1ns/10ps 

module test283; 

reg A3,A2,A1,A0,B3,B2,B1,B0; 

reg C0; 

wire Sigma3,Sigma2,Sigma1,Sigma0; 

wire C4; 

initial 

begin 

A3=0; 

repeat(20) 

#20 A3=$random; 

end 

initial 

begin 

A2=0; 

repeat(20) 

#20 A2=$random; 

end 

initial 

begin 

A1=0; 

repeat(20) 

#20 A1=$random; 

end 

initial 

begin 

A0=0; 

repeat(20) 

#20 A0=$random; 

end 

initial 

begin 

B3=0; 

repeat(20) 

#20 B3=$random; 

end 

initial 

begin 

B2=0; 

repeat(20) 

#20 B2=$random; 

end 

initial 

begin 

B1=0; 

repeat(20) 

#20 B1=$random; 

end 

initial 

begin 

B0=0; 

repeat(20) 

#20 B0=$random; 

end 

initial 

begin 

C0=0; 

repeat(20) 

#20 C0=$random; 

end 

HC283 u283 

( 

.A3 (A3), 

.A2 (A2), 

.A1 (A1), 

.A0 (A0), 

.B3 (B3), 

.B2 (B2), 

.B1 (B1), 

.B0 (B0), 

.Sigma3 (Sigma3), 

.Sigma2 (S

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

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2