(有代码)基于libero的数字逻辑设计仿真及验证实验(4-8)_第1页
(有代码)基于libero的数字逻辑设计仿真及验证实验(4-8)_第2页
(有代码)基于libero的数字逻辑设计仿真及验证实验(4-8)_第3页
(有代码)基于libero的数字逻辑设计仿真及验证实验(4-8)_第4页
(有代码)基于libero的数字逻辑设计仿真及验证实验(4-8)_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

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

学号______

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

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

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

仿真组合逻辑电路。

仿真时序逻辑电路。

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

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

实验报告

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

第一次仿真结果〔任选一个门,请注明,插入截图,下同〕。〔将波形窗口背景设为白色,调整窗口至适宜大小,使波形能完整显示,对窗口截图。后面实验中的仿真使用相同方法处理〕

异或门:

综合结果。〔将相关窗口调至适宜大小,使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<<DataIn;

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<DataB)

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:SM_8S=8'b01011011;

4'd3:SM_8S=8'b01001111;

4'd4:SM_8S=8'b01100110;

4'd5:SM_8S=8'b01101101;

4'd6:SM_8S=8'b01111101;

4'd7:SM_8S=8'b00000111;

4'd8:SM_8S=8'b01111111;

4'd9:SM_8S=8'b01101111;

4'd10:SM_8S=8'b01110111;

4'd11:SM_8S=8'b01111100;

4'd12:SM_8S=8'b00111001;

4'd13:SM_8S=8'b01011110;

4'd14:SM_8S=8'b01111001;

4'd15:SM_8S=8'b01110001;

default:;

endcase

end

endmodule

//74HC4511测试平台代码

//test4511.v

`timescale1ns/1ps

moduletest4511;

reg[3:0]pA;

regpLT_N,pBI_N,pLE;

wire[7:0]pSeg;

HC4511u4511(pA,pSeg,pLT_N,pBI_N,pLE);

initial

begin

pA=0;pLT_N=0;pBI_N=0;pLE=0;

#10pLT_N=0;

#10pLT_N=1;pBI_N=0;

#10pLE=0;pLT_N=1;pBI_N=1;pA=4'd0;

#10pA=4'd0;

#10pA=4'd1;

#10pA=4'd2;

#10pA=4'd3;

#10pA=4'd4;

#10pA=4'd5;

#10pA=4'd6;

#10pA=4'd7;

#10pA=4'd8;

#10pA=4'd9;

#10pA=4'd10;

#10pA=4'd11;

#10pA=4'd12;

#10pA=4'd13;

#10pA=4'd14;

#10pA=4'd15;

end

endmodule

第一次仿真结果〔任选一个模块,请注明〕

74HC85

3、综合结果

4、第二次仿真结果〔综合后〕。答复输出信号是否有延迟,延迟时间约为多少?

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

第三次仿真结果〔布局布线后〕。答复输出信号是否有延迟,延迟时间约为多少?分析是否有出现竞争冒险。

输出信号有延迟,延迟时间为4700,有出现竞争

3、时序逻辑电路

一、实验目的

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

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

3、学习针对实际时序逻辑电路芯片74HC74、74HC112、74HC194、74HC161进行VerilogHDL设计的方法。

二、实验环境

Libero仿真软件。

三、实验内容

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

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

3、参考教材中相应章节的设计代码、测试平台代码〔可自行编程〕,完成74HC74、74HC112、74HC161、74HC194相应的设计、综合及仿真。

4、提交针对74HC74、74HC112、74HC161、74HC194〔任选一个〕的综合结果,以及相应的仿真结果。

四、实验结果和数据处理

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

//74HC74代码

//HC74.v

moduleHC74(D1,D2,CP1,CP2,RD1N,RD2N,SD1N,SD2N,Q1,Q2,Q1N,Q2N);

inputD1,D2;

inputRD1N,SD1N,CP1;

inputRD2N,SD2N,CP2;

outputQ1,Q1N,Q2,Q2N;

regQ1,Q2;

assignQ1N=~Q1;

assignQ2N=~Q2;

always@(posedgeCP1)begin

if(!RD1N)Q1<=0;

elseif(!SD1N)Q1<=1;

elseQ1<=D1;

end

always@(posedgeCP2)begin

if(!RD2N)Q2<=0;

elseif(!SD2N)Q2<=1;

elseQ2<=D2;

end

endmodule

//74HC74测试平台代码

//test74.v

`timescale1ns/1ns

moduletest74;

regD1,D2,RD1N,RD2N,CP1,CP2,SD1N,SD2N;

wireQ1,Q2,Q1N,Q2N;

initialbegin

CP1=0;

end

parameterclock_period=20;

always#(clock_period/2)CP1=~CP1;

initialbegin

CP2=0;

end

always#(clock_period/2)CP2=~CP2;

initial

begin

D1=0;

repeat(20)

#20D1=$random;

end

initial

begin

D2=0;

repeat(20)

#20D2=$random;

end

initial

begin

RD1N=0;

repeat(20)

#20RD1N=$random;

end

initial

begin

RD2N=0;

repeat(20)

#20RD2N=$random;

end

initial

begin

SD1N=0;

repeat(20)

#20SD1N=$random;

end

initial

begin

SD2N=0;

repeat(20)

#20SD2N=$random;

end

HC74u74

(

.CP1(CP1),

.CP2(CP2),

.D1(D1),

.D2(D2),

.RD1N(RD1N),

.RD2N(RD2N),

.SD1N(SD1N),

.SD2N(SD2N),

.Q1(Q1),

.Q1N(Q1N),

.Q2(Q2),

.Q2N(Q2N)

);

endmodule

//74HC112代码

//HC112.v

moduleHC112(J1,J2,K1,K2,CPN1,CPN2,RD1N,RD2N,SD1N,SD2N,Q1,Q2,Q1N,Q2N);

inputJ1,J2,K1,K2;

inputRD1N,SD1N,CPN1;

inputRD2N,SD2N,CPN2;

outputQ1,Q2,Q1N,Q2N;

regQ1,Q2;

assignQ1N=~Q1;

assignQ2N=~Q2;

always@(posedgeCPN1)begin

if(!RD1N)Q1<=0;

elseif(!SD1N)Q1<=1;

else

case({J1,K1})

2'b00:Q1<=Q1;

2'b01:Q1<=1'b0;

2'b10:Q1<=1'b1;

2'b11:Q1<=~Q1;

default:Q1<=1'bx;

endcase

end

always@(posedgeCPN2)begin

if(!RD2N)Q2<=0;

elseif(!SD2N)Q2<=1;

else

case({J2,K2})

2'b00:Q2<=Q2;

2'b01:Q2<=1'b0;

2'b10:Q2<=1'b1;

2'b11:Q2<=~Q2;

default:Q2<=1'bx;

endcase

end

endmodule

//74HC112测试平台代码

//test112.v

`timescale1ns/1ns

moduletest112;

regJ1,J2,K1,K2,RD1N,RD2N,CPN1,CPN2,SD1N,SD2N;

wireQ1,Q2,Q1N,Q2N;

initialbegin

CPN1=0;

end

parameterclock_period=20;

always#(clock_period/2)CPN1=~CPN2;

initialbegin

CPN2=0;

end

always#(clock_period/2)CPN2=~CPN2;

initial

begin

J1=0;

repeat(20)

#20J1=$random;

end

initial

begin

K1=0;

repeat(20)

#20K1=$random;

end

initial

begin

J2=0;

repeat(20)

#20J2=$random;

end

initial

begin

K2=0;

repeat(20)

#20K2=$random;

end

initial

begin

RD1N=0;

repeat(20)

#20RD1N=$random;

end

initial

begin

RD2N=0;

repeat(20)

#20RD2N=$random;

end

initial

begin

SD1N=0;

repeat(20)

#20SD1N=$random;

end

initial

begin

SD2N=0;

repeat(20)

#20SD2N=$random;

end

HC112u112

(

.CPN1(CPN1),

.CPN2(CPN2),

.J1(J1),

.K1(K1),

.J2(J2),

.K2(K2),

.RD1N(RD1N),

.RD2N(RD2N),

.SD1N(SD1N),

.SD2N(SD2N),

.Q1(Q1),

.Q1N(Q1N),

.Q2(Q2),

.Q2N(Q2N)

);

endmodule

//74HC161代码

//HC161.v

moduleHC161(CP,CEP,CET,MRN,PEN,Dn,Qn,TC);

inputCP;

inputCEP,CET;

output[3:0]Qn;

inputMRN;

inputPEN;

input[3:0]Dn;

outputregTC;

reg[3:0]qaux;

always@(posedgeCP)

begin

if(!MRN)

qaux<=4'b0000;

elseif(!PEN)

qaux<=Dn;

elseif(CEP&CET)

qaux<=qaux+1;

elseqaux<=qaux;

end

always@(posedgeCP)

begin

if(qaux==4'b1111)

TC=1'b1;

elseTC=1'b0;

end

assignQn=qaux;

endmodule

//74HC161测试平台代码

//test161.v

`timescale1ns/1ns

moduletest161;

regCP,CEP,CET,MRN,PEN;

reg[3:0]Dn;

wire[3:0]Qn;

wireTC;

initial

begin

CP=0;

end

parameterDELY=20;

always#(DELY/2)CP=~CP;

initial

begin

CEP=0;

repeat(20)

#20CEP=1;

end

initial

begin

CET=0;

repeat(20)

#20CET=1;

end

initial

begin

MRN=0;

repeat(20)

#20MRN=1;

end

initial

begin

PEN=0;

repeat(20)

#20PEN=1;

end

initial

begin

Dn=0;

repeat(20)

#20Dn=$random;

end

HC161u161

(

.CP(CP),

.CEP(CEP),

.CET(CET),

.MRN(MRN),

.PEN(PEN),

.Dn(Dn),

.Qn(Qn),

.TC(TC)

);

endmodule

//74HC194代码

//HC194.v

moduleHC194(D0,D1,D2,D3,S0,S1,DSR,DSL,MRN,CP,Q0,Q1,Q2,Q3);

inputD0,D1,D2,D3;

inputS0,S1;

inputDSR,DSL;

inputMRN;

inputCP;

outputQ0,Q1,Q2,Q3;

reg[3:0]Qaux;

wire[3:0]Data;

assignData[0]=D0;

assignData[1]=D1;

assignData[2]=D2;

assignData[3]=D3;

always@(posedgeCP)

begin

if(!MRN)

Qaux=0;

elseif(S1&S0)

Qaux=Data;

elseif(S1&!S0)

Qaux={Qaux[2:0],DSL};

elseif(!S1&S0)

Qaux={DSR,Qaux[2:0]};

elseif(!S1&S0)

Qaux=Qaux;

end

assignQ0=Qaux[0];

assignQ1=Qaux[1];

assignQ2=Qaux[2];

assignQ3=Qaux[3];

endmodule

//74HC194测试平台代码

//test194.v

`timescale1ns/1ns

moduletest194;

regD0,D1,D2,D3,S0,S1,DSR,DSL,MRN,CP;

wireQ0,Q1,Q2,Q3;

initialbegin

CP=0;

end

parameterclock_period=20;

always#(clock_period/2)CP=~CP;

initial

begin

D0=0;

repeat(20)

#20D0=$random;

end

initial

begin

D1=0;

repeat(20)

#20D1=$random;

end

initial

begin

D2=0;

repeat(20)

#20D2=$random;

end

initial

begin

D3=0;

repeat(20)

#20D3=$random;

end

initial

begin

S0=0;

repeat(20)

#20S0=$random;

end

initial

begin

S1=0;

repeat(20)

#20S1=$random;

end

initial

begin

MRN=0;

repeat(20)

#20MRN=$random;

end

initial

begin

DSR=0;

repeat(20)

#20DSR=$random;

end

initial

begin

DSL=0;

repeat(20)

#20DSL=$random;

end

HC194u194

(

.CP(CP),

.D0(D0),

.D1(D1),

.D2(D2),

.D3(D3),

.S1(S1),

.S0(S0),

.DSR(DSR),

.DSL(DSL),

.MRN(MRN),

.Q0(Q0),

.Q1(Q1),

.Q2(Q2),

.Q3(Q3)

);

endmodule

2、第一次仿真结果〔任选一个模块,请注明〕

74HC161

3、综合结果

4、第二次仿真结果〔综合后〕

第三次仿真结果〔布局布线后〕

4、根本门电路、组合电路和时序电路的程序烧录及验证〔3人小组共同完成〕

一、实验目的

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

2、熟悉实验箱的使用和程序下载〔烧录〕及测试的方法。

二、实验环境及仪器

1、Libero仿真软件。

2、DIGILOGIC-2023数字逻辑及系统实验箱。

3、ActelProasic3A3P030FPGA核心板及FlashPro4烧录器。

三、实验内容

1、新建一个工程文件,将前面已经设计好的74HC00、74HC02、74HC04、74HC08、74HC32、74HC86实例文件导入,在SmartDesign窗口分别添加这6个模块,完成相应连线。.按实验指导书P175的附录B.3中所列引脚对应表来分配引脚,最后通过烧录器烧录至FPGA核心板上。按分配的引脚连线,实测相应功能并记录结果。详细步骤请参考教材及实验指导书的相关内容。

2、新建一个工程文件,将前面已经设计好的74HC148、74HC138、74HC153、74HC85、74HC283实例文件导入,在SmartDesign窗口分别添加这5个模块,完成相应连线。按实验指导书P176的附录B.4中所列引脚对应表来分配引脚,最后通过烧录器烧录至FPGA核心板上。按分配的引脚连线,实测相应功能并记录结果。详细步骤请参考教材及实验指导书的相关内容。

3、新建一个工程文件,将前面已经设计好的74HC4511实例文件导入,在SmartDesign窗口添加这1个模块,完成相应连线。按实验指导书P173的附录B.2中所列引脚对应表来分配引脚,最后通过烧录器烧录至FPGA核心板上。按分配的引脚连线,实测相应功能并记录结果。详细步骤请参考教材及实验指导书的相关内容。

4、新建一个工程文件,将前面已经设计好的74HC74、74HC112、74HC194、74HC161实例文件导入,在SmartDesign窗口分别添加这4个模块,完成相应连线。按实验指导书P178的附录B.5中所列引脚对应表来分配引脚,最后通过烧录器烧录至FPGA核心板上。按分配的引脚连线,实测相应功能并记录结果。详细步骤请参考教材及实验指导书的相关内容。

四、实验结果和数据处理

表4-174HC00输入输出状态

输入端

输出端Y

A

B

LED

逻辑状态

0

0

1

0

1

1

1

0

1

1

1

0

表4-274HC02输入输出状态

输入端

输出端Y

A

B

LED

逻辑状态

0

0

1

0

1

0

1

0

0

1

1

0

表4-374HC04输入输出状态

输入端

输出端Y

A

LED

逻辑状态

0

1

1

0

表4-474HC08输入输出状态

输入端

输出端Y

A

B

LED

逻辑状态

0

0

0

0

1

0

1

0

0

1

1

1

表4-574HC32输入输出状态

输入端

输出端Y

A

B

LED

逻辑状态

0

0

0

0

1

1

1

0

1

1

1

1

表4-674HC86输入输出状态

输入端

输出端Y

A

B

LED

逻辑状态

0

0

0

0

1

1

1

0

1

1

1

0

表4-774LS148输入输出状态

控制

十进制数字信号输入

二进制数码输出

状态输出

I0

I1

I2

I3

I4

I5

I6

I7

A2

A1

A0

GS

EO

1

X

X

X

X

X

X

X

X

1

1

1

1

1

0

1

1

1

1

1

1

1

1

1

1

1

1

0

0

X

X

X

X

X

X

X

0

0

0

0

0

1

0

X

X

X

X

X

X

0

1

0

0

1

0

1

0

X

X

X

X

X

0

1

1

0

1

0

0

1

0

X

X

X

X

0

1

1

1

0

1

1

0

1

0

X

X

X

0

1

1

1

1

1

0

0

0

1

0

X

X

0

1

1

1

1

1

1

0

1

0

1

0

X

0

1

1

1

1

1

1

1

1

0

0

1

0

0

1

1

1

1

1

1

1

1

1

1

0

1

注:X为任意状态

表4-874HC138输入输出状态

使能输入

数据输入

译码输出

E3

A2

A1

A0

1

X

X

X

X

X

1

1

1

1

1

1

1

1

X

1

X

X

X

X

1

1

1

1

1

1

1

1

X

X

0

X

X

X

1

1

1

1

1

1

1

1

0

0

1

0

0

0

0

1

1

1

1

1

1

1

0

0

1

0

0

1

1

0

1

1

1

1

1

1

0

0

1

0

1

0

1

1

0

1

1

1

1

1

0

0

1

0

1

1

1

1

1

0

1

1

1

1

0

0

1

1

0

0

1

1

1

1

0

1

1

1

0

0

1

1

0

1

1

1

1

1

1

0

1

1

0

0

1

1

1

0

1

1

1

1

1

1

0

1

0

0

1

1

1

1

1

1

1

1

1

1

1

0

注:X为任意状态

表4-974HC153输入输出状态

选择输入

数据输入

输出使能输入

输出

S1

S0

1I0

1I1

1I2

1I3

1Y

X

X

X

X

X

X

1

0

0

0

0

X

X

X

0

0

0

0

1

X

X

X

0

1

1

0

X

0

X

X

0

0

1

0

X

1

X

X

0

1

0

1

X

X

0

X

0

0

0

1

X

X

1

X

0

1

1

1

X

X

X

0

0

0

1

1

X

X

X

1

0

1

注:X为任意状态

表4-1074HC85输入输出状态

比较输入

级联输入

输出

A3

A2

A1

A0

B3

B2

B0

B1

IA>B

IA=B

IA<B

A>B

A=B

A<B

1

X

X

X

0

X

X

X

X

X

X

1

0

0

0

X

X

X

1

X

X

X

X

X

X

0

0

1

1

1

X

X

1

0

X

X

X

X

X

1

0

0

0

0

X

X

0

1

X

X

X

X

X

0

0

1

1

0

1

X

1

0

0

X

X

X

X

1

0

0

0

0

0

X

0

0

1

X

X

X

X

0

0

1

1

1

0

1

1

1

0

0

X

X

X

1

0

0

0

0

1

0

0

0

1

1

X

X

X

0

0

1

1

1

0

1

1

1

0

1

0

0

0

1

0

1

0

1

0

0

0

1

0

0

0

0

1

0

0

1

1

1

0

1

1

1

0

1

1

0

0

1

0

0

0

0

0

0

0

0

0

0

1

0

1

0

0

0

1

1

1

1

1

1

1

1

0

0

1

0

1

0

注:X为任意状态

表4-1174HC283输入输出状态

进位输入

4位加数输入

4位被加数输入

输出加法结果和进位

Cin

A4

A3

A2

A1

B4

B3

B2

B1

Cout

S4

S3

S2

S1

0

0

0

0

0

0

1

1

0

0

0

1

1

0

1

1

1

1

1

1

1

1

1

1

1

1

1

1

0

0

1

1

1

0

0

1

0

0

1

0

0

1

1

0

1

0

0

0

1

1

0

0

1

0

1

1

1

0

1

0

1

0

1

1

1

0

1

1

0

1

1

1

0

0

0

0

1

1

1

1

0

0

0

0

0

1

0

0

1

1

0

0

1

1

0

0

1

0

表4-1274HC4511输入输出状态

使能输入

数据输入

译码输出

LE

D

C

B

A

a

b

c

d

e

f

g

0

X

X

X

X

X

X

1

1

1

1

1

1

1

1

0

X

X

X

X

X

0

0

0

0

0

0

0

1

1

0

0

0

0

0

1

1

1

1

1

1

0

1

1

0

0

0

0

1

0

1

1

0

0

0

0

1

1

0

0

0

1

0

1

1

0

1

1

0

1

1

1

0

0

0

1

1

1

1

1

1

0

0

1

1

1

0

0

1

0

0

0

1

1

0

0

1

1

1

1

0

0

1

0

1

1

0

1

1

0

1

1

1

1

0

0

1

1

0

0

0

1

1

1

1

1

1

1

0

0

1

1

1

1

1

1

0

0

0

0

1

1

0

1

0

0

0

1

1

1

1

1

1

1

1

1

0

1

0

0

1

1

1

1

0

0

1

1

1

1

0

1

0

1

0

0

0

0

0

0

0

0

1

1

0

1

0

1

1

0

0

0

0

0

0

0

1

1

0

1

1

0

0

0

0

0

0

0

0

0

1

1

0

1

1

0

1

0

0

0

0

0

0

0

1

1

0

1

1

1

0

0

0

0

0

0

0

0

1

1

0

1

1

1

1

0

0

0

0

0

0

0

注:X为任意状态

表4-1374HC74输入输出状态

输入

输出

置位输入

复位输入

CP

D

1Q

0

1

X

X

1

0

1

0

X

X

0

1

1

1

0

0

1

1

1

1

1

0

0

0

X

X

1

1

注:X为任意状态

表4-1474HC112输入输出状态

输入

输出

置位输入

复位输入

1

1J

1K

1Q

0

1

X

X

X

1

0

1

0

X

X

X

0

1

1

1

1

1

Qn

Qn

1

1

0

1

0

1

1

1

1

0

1

0

0

0

X

X

X

1

0

注:X为任意状态

表4-1574HC194输入输出状态

输入

输出

模式

串行

CP

并行

S1

S0

DSR

DSL

D0

D1

D2

D3

Q0n+1

Q1n+1

Q2n+1

Q3n+1

0

X

X

X

X

X

X

X

X

X

0

0

0

0

1

1

1

X

X

D0

D1

D2

D3

D1

D2

D3

D4

1

0

0

X

X

X

X

X

X

Q0n

Q1n

Q2n

Q3n

1

0

1

0

X

X

X

X

X

0

Q0n

Q1n

Q2n

1

0

1

1

X

X

X

X

X

1

Q0n

Q1n

Q2n

1

1

0

X

0

X

X

X

X

Q1n

Q2n

Q3n

0

1

1

0

X

1

X

X

X

X

Q1n

Q2n

Q3n

1

注:X为任意状态

表4-1674HC161输入输出状态

输入

输出

CP

CEP

CET

D3

D2

D1

D0

Q3

Q2

Q1

Q0

TC

0

X

X

X

X

X

X

X

X

0

0

0

0

0

1

X

X

0

0

0

0

0

0

0

0

0

0

1

1

1

0

D3

D2

D1

D0

D3

D2

D1

D0

*

1

1

1

1

X

X

X

X

Count

Count

Count

Count

*

1

X

0

X

1

X

X

X

X

Q0n

Q1n

Q2n

Q3n

*

1

X

X

0

1

X

X

X

X

Q0n

Q1n

Q2n

Q3n

0

注:X为任意状态

*注:TC=CET*Q0n*Q1n*Q2n*Q3n

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

一、实验目的

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

2、熟悉利用EDA工具中的图形化设计界面进行综合设计。

3、熟悉芯片烧录的流程及步骤。

4、掌握分析问题、解决问题的综合能力,通过EDA工具设计出能解决实际问题的电路。

二、实验环境

1、Libero仿真软件。

2、DIGILOGIC-2023数字逻辑及系统实验箱。

3、ActelProasic3A3P030FPGA核心板及FlashPro4烧录器。

三、实验内容

1、编码器扩展实验

设计一个电路:当按下小于等于9的按键后,显示数码管显示数字,当按下大于9的按键后,显示数码管不显示数字。假设同时按下几个按键

温馨提示

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

评论

0/150

提交评论