有代码基于某libero的数字逻辑设计仿真及验证实验48.docx

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

有代码基于某libero的数字逻辑设计仿真及验证实验48.docx

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

有代码基于某libero的数字逻辑设计仿真及验证实验48.docx

有代码基于某libero的数字逻辑设计仿真及验证实验48

计算机____学院___专业___班________组

学号______

姓名____协作者______________教师评定_________________

实验题目_________基于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代码-与非

//HC00.v

moduleHC00(A,B,Y);

input[4:

1]A,B;

output[4:

1]Y;

assignY=~(A&B);

endmodule

//74HC00测试平台代码

//test.v

`timescale1ns/1ns

moduletest1();

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;

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

#10b=b<<1;

#10b=b<<1;

#10b=b<<1;

end

endmodule

//74HC02代码-或非

//HC02.v

moduleHC02(A,B,Y);

input[4:

1]A,B;

output[4:

1]Y;

assignY=~(A|B);

endmodule

//74HC02测试平台代码

//test.v

`timescale1ns/1ns

moduletest2();

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;

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

#10b=b<<1;

#10b=b<<1;

#10b=b<<1;

end

endmodule

//74HC04代码-非

//HC04.v

moduleHC04(A,Y);

input[6:

1]A;

output[6:

1]Y;

assignY=~A;

endmodule

//74HC04测试平台代码

//test.v

`timescale1ns/1ns

moduletest3();

reg[6:

1]a;

wire[6:

1]y;

HC04u3(a,y);

initial

begin

a=4'b000001;

#10a=a<<1;

#10a=a<<1;

#10a=a<<1;

#10a=a<<1;

#10a=a<<1;

end

endmodule

//74HC08代码-与

//HC08.v

moduleHC08(A,B,Y);

input[4:

1]A,B;

output[4:

1]Y;

assignY=A&B;

endmodule

//74HC08测试平台代码

//test.v

`timescale1ns/1ns

moduletest4();

reg[4:

1]a,b;

wire[4:

1]y;

HC08u4(a,b,y);

initial

begin

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

#10b=b<<1;

#10b=b<<1;

#10b=b<<1;

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

#10b=b<<1;

#10b=b<<1;

#10b=b<<1;

end

endmodule

//74HC32代码-或

//HC32.v

moduleHC32(A,B,Y);

input[4:

1]A,B;

output[4:

1]Y;

assignY=A|B;

endmodule

//74HC32测试平台代码

//test.v

`timescale1ns/1ns

moduletest5();

reg[4:

1]a,b;

wire[4:

1]y;

HC32u5(a,b,y);

initial

begin

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

#10b=b<<1;

#10b=b<<1;

#10b=b<<1;

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

#10b=b<<1;

#10b=b<<1;

#10b=b<<1;

end

endmodule

//74HC86代码-异或

//HC86.v

moduleHC86(A,B,Y);

input[4:

1]A,B;

output[4:

1]Y;

assignY=A^B;

endmodule

//74HC86测试平台代码

//test.v

`timescale1ns/1ns

moduletest6();

reg[4:

1]a,b;

wire[4:

1]y;

HC86u6(a,b,y);

initial

begin

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

#10b=b<<1;

#10b=b<<1;

#10b=b<<1;

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

#10b=b<<1;

#10b=b<<1;

#10b=b<<1;

end

endmodule

 

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

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

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

异或门:

3、综合结果。

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

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

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

输出信号有延迟,延迟时间为300ps。

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

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

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

输出信号有延迟,延迟时间是4200ps。

没有出现竞争冒险。

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代码

//HC148.v

moduleHC148(DataIn,EO,Dataout);

input[7:

0]DataIn;

outputEO;

output[2:

0]Dataout;

reg[2:

0]Dataout;

regEO;

integerI;

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

`timescale1ns/1ns

moduletest148;

reg[7:

0]in;

wire[2:

0]out;

wireEO;

initial

begin

in=00000001;

repeat(9)

#20in=in<<1;

end

HC148u148(in,EO,out);

endmodule

//74HC138代码

//HC138.v

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

inputA,B,C;

inputG1,G2AN,G2BN;

outputY7,Y6,Y5,Y4,Y3,Y2,Y1,Y0;

wireY7,Y6,Y5,Y4,Y3,Y2,Y1,Y0;

reg[7:

0]Eq;

wire[7:

0]EqN;

wire[2:

0]DataIn;

assignEqN=~Eq;

assignDataIn[0]=A;

assignDataIn[1]=B;

assignDataIn[2]=C;

always@(DataInorG1orG2ANorG2BN)

begin

if(!

G1)

Eq=8'b11111111;

elseif(!

(G2AN&G2BN))

Eq=8'b11111111;

elseEq=1'b1<

end

assignY0=EqN[0];

assignY1=EqN[1];

assignY2=EqN[2];

assignY3=EqN[3];

assignY4=EqN[4];

assignY5=EqN[5];

assignY6=EqN[6];

assignY7=EqN[7];

endmodule

//74HC138测试平台代码

//test138.v

`timescale1ns/10ps

moduletest138;

regA,B,C;

regG1,G2AN,G2BN;

wireY0,Y1,Y2,Y3,Y4,Y5,Y6,Y7;

initial

begin

A=0;

repeat(20)

#20A=$random;

end

initial

begin

B=0;

repeat(20)

#20A=$random;

end

initial

begin

C=0;

repeat(20)

#20A=$random;

end

initial

begin

G1=0;

#40G1=1;

end

initial

begin

G2AN=0;

#25G2AN=1;

end

initial

begin

G2BN=0;

#45G2BN=1;

end

HC138u138

.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

moduleHC153(C0,C1,C2,C3,A,B,Y,G);

inputC0,C1,C2,C3,A,B,G;

outputY;

regY;

always@(C0orC1orC2orC3orAorB)

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

`timescale1ns/1ns

moduletest153;

regC0,C1,C2,C3;

regA,B,G;

wireY;

initial

begin

G=1;

repeat(20)

#20G=0;

end

initial

begin

A=0;

repeat(20)

#20A=$random;

end

initial

begin

B=0;

repeat(20)

#20B=$random;

end

initial

begin

C0=0;

repeat(20)

#20C0=$random;

end

initial

begin

C1=0;

repeat(20)

#20C1=$random;

end

initial

begin

C2=0;

repeat(20)

#20C2=$random;

end

initial

begin

C3=0;

repeat(20)

#20C3=$random;

end

HC153u153

.C0(C0),

.C1(C1),

.C2(C2),

.C3(C3),

.G(G),

.A(A),

.B(B),

.Y(Y)

);

endmodule

//74HC85代码

//HC85.v

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

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

outputQAGB,QASB,QAEB;

regQAGB,QASB,QAEB;

wire[3:

0]DataA,DataB;

assignDataA[0]=A0;

assignDataA[1]=A1;

assignDataA[2]=A2;

assignDataA[3]=A3;

assignDataB[0]=B0;

assignDataB[1]=B1;

assignDataB[2]=B2;

assignDataB[3]=B3;

always@(DataAorDataB)

begin

if(DataA>DataB)

begin

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

end

elseif(DataA

begin

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

end

elseif(IAGB&!

IASB&!

IAEB)

begin

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

end

elseif(!

IAGB&IASB&!

IAEB)

begin

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

end

elseif(IAEB)

begin

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

end

begin

if(DataA==DataB)

if(IAGB&IASB&!

IAEB)

beginQAGB=0;QASB=0;QAEB=0;end

if(!

IAGB&!

IASB&!

IAEB)

beginQAGB=1;QASB=1;QAEB=0;end

end

end

endmodule

//74HC85测试平台代码

//test85.v

`timescale1ns/1ns

moduletest85;

regA3,A2,A1,A0,B3,B2,B1,B0;

regIAGB,IASB,IAEB;

wireQAGB,QASB,QAEB;

initial

begin

A3=0;

repeat(20)

#20A3=$random;

end

initial

begin

A2=0;

repeat(20)

#20A2=$random;

end

initial

begin

A1=0;

repeat(20)

#20A1=$random;

end

initial

begin

A0=0;

repeat(20)

#20A0=$random;

end

initial

begin

B3=0;

repeat(20)

#20B3=$random;

end

initial

begin

B2=0;

repeat(20)

#20B2=$random;

end

initial

begin

B1=0;

repeat(20)

#20B1=$random;

end

initial

begin

B0=0;

repeat(20)

#20B0=$random;

end

initial

begin

IAGB=0;

repeat(10)

#40IAGB=$random;

end

initial

begin

IASB=0;

repeat(10)

#40IASB=$random;

end

initial

begin

IAEB=0;

repeat(10)

#40IAEB=$random;

end

HC85u85

.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

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

inputA3,A2,A1,A0,B3,B2,B1,B0;

inputC0;

outputSigma3,Sigma2,Sigma1,Sigma0;

outputC4;

regC4;

reg[3:

0]Sigma;

wire[3:

0]DataA,DataB;

assignDataA[0]=A0;

assignDataA[1]=A1;

assignDataA[2]=A2;

assignDataA[3]=A3;

assignDataB[0]=B0;

assignDataB[1]=B1;

assignDataB[2]=B2;

assignDataB[3]=B3;

always@(DataAorDataBorC0)

begin

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

end

assignSigma0=Sigma[0];

assignSigma1=Sigma[1];

assignSigma2=Sigma[2];

assignSigma3=Sigma[3];

endmodule

//74HC283测试平台代码

//test283.v

`timescale1ns/10ps

moduletest283;

regA3,A2,A1,A0,B3,B2,B1,B0;

regC0;

wireSigma3,Sigma2,Sigma1,Sigma0;

wireC4;

initial

begin

A3=0;

repeat(20)

#20A3=$random;

end

initial

begin

A2=0;

repeat(20)

#20A2=$random;

end

initial

begin

A1=0;

repeat(20)

#20A1=$random;

end

initial

begin

A0=0;

repeat(20)

#20A0=$random;

end

initial

begin

B3=0;

repeat(20)

#20B3=$random;

end

initial

begin

B2=0;

repeat(20)

#20B2=$random;

end

initial

begin

B1=0;

repeat(20)

#20B1=$random;

end

initial

begin

B0=0;

repeat(20)

#20B0=$random;

end

initial

begin

C0=0;

repeat(20)

#20C0=$random;

end

HC283u283

.A3(A3),

.A2(A2),

.A1(A1),

.A0(A0),

.B3(B3),

.B2(B2),

.B1(B1),

.B0(B0),

.Sigma3(Sigma3),

.Sigma2(Sigma2),

.Sigma1(Sigma1),

.Sigma0(Sigma0),

.C0(C0),

.C4(C4)

);

Endmodule

//74HC4511代码

//HC4511.v

moduleHC4511(A,Seg,LT_N,BI_N,LE);

inputLT_N,BI_N,LE;

input[3:

0]A;

output[7:

0]Seg;

reg[7:

0]SM_8S;

assignSeg=SM_8S;

always@(AorLT_NorBI_NorLE)

begin

if(!

LT_N)SM_8S=8'b11111111;

elseif(!

BI_N)SM_8S=8'b00000000;

elseif(LE)SM_8S=SM_8S;

else

case(A)

4'd0:

SM_8S=8'b00111111;

4'd1:

SM_8S=8'b00000110;

4'd2

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

当前位置:首页 > 小学教育 > 语文

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

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