2025年数字逻辑设计与实验教程核心实验解析与技巧掌握_第1页
2025年数字逻辑设计与实验教程核心实验解析与技巧掌握_第2页
2025年数字逻辑设计与实验教程核心实验解析与技巧掌握_第3页
2025年数字逻辑设计与实验教程核心实验解析与技巧掌握_第4页
2025年数字逻辑设计与实验教程核心实验解析与技巧掌握_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

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

2、仿真组合逻辑电路。

3、仿真时序逻辑电路。

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

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

试验汇报

1、基本门电路

一、试验目的

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

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

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

计的措施。

二、试验环境

Libero仿真软件。

三、试脸内容

1、掌握Liber。软件的使用措施。

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

3、参照教材中对应章节的设计代码、测试平台代码(可自行编程),完毕74HC00.74HC02、74HC04.74HC08、

74HC32.74HC86对应的设计、综合及仿真。

4、提交针对74HC00、74HC02、74HC04.74HC08、74HC32、74HC86(住域一秤)的综合成果,以及对应

的仿真成果。

四、试验成果和数据处理

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

//74HC00代码-与非

//74HC00.V

moduleHC00(DataA,I)ataB,Y);

input[3:0]DataA,DataB;

output|3:0]Y;

assignY=-(A&B);

endmodule

//74HC00测试平台代码

//testbench,v

'(imcscalcIns/Ins

moduletestbench();

reg[4:1]a,b;

wire|4:1]y;

HCOOul(a,b,y);

initial

begin

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

#1()b=b«l;

#10b=b«1:

#10b=b«l;

aM'blllkbM'bOOOI;

#10b=b«l;

#l()b=b«l;

#10b=b«l;

end

cndnioclulc

//74HC02代码-或非

moduleHC02(A.B,Y);

input[4:I]A,B;

output[4:1]Y;

assignY=~(A|B);

cndmodulc

//74HC04代码-非

moduleHC04(A,Y);

input[4:1]A;

output|4:1]Y;

assignY=~A;

cndniodule

//74HC08代码-与

moduleHC08(A.B,Y);

input[4:1]A,B;

output

assignY=A&B;

endmodule

//74HC32代码-或

moduleHC32(A.B,Y);

MilYIBAMXgMI>r»4»x

3、综合成果(截留)。(将有关窗口调至合适大小,使RTL图能完整显示,对窗口截图,背面试验中的综合使用

相似措施处理)

与非门:

口回唾:0】有西甘^~\―川⑶Q\CH'S⑶01f

|DataB[3。]A[前I3%>>/。]枭叫[

un1_Y[3:0]Y[3:0]

4、第二次仿真成果(综合后)(截留)。回答输出信号与否有延迟,延迟时间约为多少?

与非门:

输出信号有延迟,延迟时间约为300Ps

延迟300Ps

5、第三次仿真成果(布局布线后)(截图)。回答输出信号与否有延迟,延迟时间约为多少?分析与否有出现

竞争冒险。

与非门:

输出信号在开始视延迟3200ps

背面延迟4000ps左右

由上图分析可以懂得,在黄线以右的输出转折点处出现了竞争冒险,总共3次。

2、组合逻辑电路

一、试脸目的

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

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

3、学习针对实际组合逻辑电路芯片74HC148、74HC138、74HC153、74HC85、74HC283、74HC4511进行

VerilogHDL设计的措施。

二、试脸环境

Libero仿真软件。

三、试验内容

1、掌握Libero软件的使用措施。

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

3、参照教材中对应章节的设计代码、测试平台代码(可自行编程),完毕74HC148.74HC138、74HCI53.

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、所有模块及测试平台代码清单

//74HC138代码

//decoder,v

moduledecoder138(Din.Enable.Eq);

input|2:0)Din;

inputEnable;

output[7:0]Eq;

reg[7:0]Eq:

wire[2:0]Din;

integerI;

always@(DinorEnable)

begin

if(Enable)

Eq=O;

else

for(I=0;I<=7;I=I+l)

if(Din==I)

Eq|I|=l;

else

Eq[I]=O;

end

cndniodule

//74HC138测试平台代码

//testbench.v

'timescaleIns/Ins

moduletestbench;

reg[2:0]Din;

regenable:

wire|7:()]dataout;

initial

#400Sfinish;

initial

begin

enable=I;

#40cnablc=0;

end

initial

begin

repeat(20)

#20dataln=$random;

end

decoder138test(Din,cnablc.dataout);

endmodule

//74HC148代码

moduieencoder148(Din,E(),Dout,EI,GS);

input[7:0]Din;

inputEI;

outputEO;

oulput|2:0]Dout;

rezEO:

regGS;

integerI;

always@(DinorEI)

begin:local

if(EI)

begin

Dout=7;

EO=1;

GS=1;

end

elseif(Din==16'bl1111111)

begin

Dout=7;

EO=();

GS=I;

end

else

begin

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

begin

if(-Din[I])

begin

Dout=-I;

EO=1;

GS=0;

end

end

end

endniodule

//74HC148测试平台代码

'(imeccaleIns/lOps

moduletestbench;

reg[7:O]in;

regEI;

wire[2:0]out;

wireEO.GS;

initial

begin

in='b00000001;

repeat(9)

#20in=in«);

end

encoder148testbench148(in,EO.ou(,EI,GS);

endmodule

//74HC153代码

modulemux4_l_a(DO,DI,D2.D3,SelO,Sell,Result);

inputDO,D1,D2,D3;

inputSelO,Sell;

outputResult;

regResult;

always@(D0orDIorD2orD3orSilorSelO)

begin

case({Sell,Sel()})

0:Result=DO;

1:Result=DI;

2:Result=D2;

3:Result=D3;

default:Result=1'bx;

endcase

end

endmodule

//74HC153测试平台代码

'timescaleIns/Ips

moduletestbench_4mux_1;

regEX).D1,D2,D3,Scl1,Sc!O;

wireResult:

mux4_l_aDUT(D(),D1,D2,D3,Scl1,SclO,Rcsult);

initial

begin

D0=0:D1=O;D2=O;D3=O:Sel1=0;Sel0=0;

#1(X)D0=l;DI=0;D2=0;D3=l;

#100Sell=O;SclO=l;

#1(X)Sell=l;SelO=O;

»100Scll=l;5cl0=l;

end

endmodule

//74HC85代码

modulecomparator_4_a(A,B,AGEB);

input13:0]A,B;

outputAGEB;

regAGEB;

always(§)(AorB)

begin

if(A>=B)

AGEB=I;

else

AGEB=0;

end

endmodule

//74HC85测试平台代码

'timescaleIns/lOps

moduletestbench;

reg[3:0]ina.inb;

wireAGEB;

comparator_4_ates(bcnch_4_a(ina,inb,AGEB);

initial

begin

ina=();

rcpcat(20)

#20ina=$random;

#20Sfinish;

end

initial

begin

inb=0;

repeat(lO)

#40inb=$random;

end

endmodule

//74HC283代码

moduleHC283(A,B.Cin.Sum.Cout);

parameterN=4;

input[N-I:O]A,B;

inputCin;

output[N-l:0]Sum;

regfN-l:O]Sum:

outputCout;

regCou(;

reg[N:OJq;

always@(AorBorCin)

beginzadder

integeri;

q[OJ=Cin;

for(i=0:i<=N;i=i+l)

begin

q[i+l]=(A[i]&B[i])|(A[i]&q[i])|(B[i]&q[i]);

Sum|i]=A|i]AB|i|Aq|i|;

end

Coul=q[N];

end

cndniodule

//74HC283测试平台代码

'timescaleIns/lOps

moduletestbench;

reg(3:0]inajnb;

regcin;

wire[3:0]sum;

wirecout;

HC283tcstbcnch283(ina,inb.cin,sum,cou();

initial

begin

ina=0;

repeat(20)

#2()ina=$random;

end

initial

begin

inb=0;

repeat(lO)

#40inb=Srandom;

end

initial

begin

cin=0;

#200cin=l;

end

cndniodule

//74HC4511代码

modu:eHC451l(A,Seg,UT_N,BI_N,LE);

inputLT_N,BI_N,LE;

input[3:()]A;

oulput[7:0]Seg;

reg(7:()]SM_8S;

assignSeg=SM_8S;

always@(AorLT_NorBI_NorLE)

begin

if(!LT_N)SM_8S=8'blill1111;

elseif(!BI_N)SM_8S=8'bOOOOOOOO;

elseif(LE)SM_8S=SM_8S;

else

case(A)

4'd0:SM_8S=8'b00llllll;

4,dl:SN4_8S=8'b00000I10;

4,d2:SM_8S=8'b()IOIIOH;

4,d3:SM_8S=8'b01001111;

4'd4:SM_8S=8'b()l1(X)110;

4'd5:SM_8S=8'b0110H01;

4,d6:SM_8S=8,b01111101;

4'd7:SM_8S=8'bOOOOOI1l;

4'd8:SM_8S=8,b01111111;

4'd9:SM_8s=8'bOllOIII1;

4'dlO:SM_8s=8'b01110Ul;

4,dll:SM_8S=8,b01H1100;

4'dl2:SM_8S=8'b00111001;

4,dl3:SM_8S=8,b01011110;

4,dI4:SM_8S=8'b0IH1001;

4'dl5:SM_8S=8'b01110001;default:;

endcase

end

endmodule

//74HC4511测试平台代码

'timescalelns/l()ps

module(estbcnch;

reg|3:0]a;

reglt_n,bi_n,le;

wire[7:0]seg;

IIC4511hc451l(a,seg,lt_n,bi_n,le);

initial

begin

a=0;lt_n=1;bi_n=l;le=0;

#30a=4'b0001;

#3()a=4'b1(X)();

#30a=4'b0111;

#3()a=4'bl()IO;

#30a=4'b0101;

#3()le=1;

#30bi_n=0;

#30lt_n=0;

#20;

end

endmodule

2、第一次仿真成果(任选一种模块,请注明)

74HC153模块

3、综合成果

RTL图

9才④(30/24。MS仲080@。弗⑦岑OOQQQMam的小叵

®□•・而向旗口

住)

8Farit(?)

0*«U(12)

SCl。aTrte

“4」.•■丽”Jg•«<-1-<«1

tnforMtxoQ6x42

4、第二次仿真成果(综合后)。回答输出信号与否有延迟,延迟时间约为多少?

延迟300ps

5、第三次仿真成果(布局布线后)。回答输出信号与否有延迟,延迟时间约为多少?分析与否有出现竞争冒

险。

延迟5200ps

3、时序逻辑电路

一、试验目的

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

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

3、学习针对实际时序逻辑电路芯片74HC74、74HC112.74HC194、74HC⑹进行VerilogHDL设计的措施。

二、试验环境

Libero仿真软件。

三、试脸内容

1、纯熟掌握Liber。软件的使用措施。

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

3、参照教材中对应章节的设“代玛、测试平台代码(可自行编程),完毕74HC74>74HC112.74HC161>74HC194

对应的设计、综合及仿真。

4、提交针对74HC74、74HC112、74HC16K74HC194(隹选二种)的综合成果,以及对应的仿真成果。

四、试验成果和数据处理

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

//74HC74代码

//74hc74.v

modu.ed_ff(Set,Reset,Clk,D,Q);

inputSct.Reset.Clk.D;

outputQ;

regQ;

always@(posedgeClkornegedgeResetornegedgeSet)

begin

if(!Reset)

begin

if(!Sei)Q<=D;

elseQ<=1;

end

else

if(!Set)Q<=0;

end

endmodule

//74HC74测试平台代码

//74hc74.v

'(imcscalcIns/Ins

moduletestbench;

regD,Reset,Set,Clk;

wireQ;

d_fftestbench_dff(D,Clk,Q,Set.Reset);

initial

begin

Clk=0:

#4(X)$finish;

end

parameterclock_period=20;

always#(clock_period/2)Clk=-Clk;

initial

begin

D=0:

repeat(20)

#20D=$random;

end

initial

begin

Reset=0;

repeat(20)

#20Reset=$random;

end

initial

begin

Set=O;

repeat(20)

#20Set=$random;

end

cndniodule

//74HCU2代码

modulejk_ff(J,K.Clk.Q.Qn);

inputJ,K,Clk;

outputQ.Qn:

regQ;

assignQn=-Q;

always@(posedgeClk)

casc({J.K})

2'b()0:Q<=Q;

2'bOl:Q<=l'bO;

2,bl():Q<=rbl;

2'bll:Q<=~Q;

default:Q<=l'bx;

endcase

endmodule

//74HC112测试平台代码

'timescaleIns/1ns

module(estbcnch;

regj,k,Clk;

wireQ,Qn;

parameterclock_period=20;

always#(clock_period/2)Clk=-Clk;

initial

begin

j=O:Clk=O;

repeat(2O)

#20j=$random:

end

initial

begin

k=0;

repeat(20)

#2()k=$random;

end

initial

#300Sfinish;

jk_fftestbenchJk(j,k,Clk.Q.Qn);

endmodule

//74HC161代码

moduleHC161(CRCERCET.MRN.PEN,Dn,Qn.TC);

inputCP;

inputCERCET:

oulput|3:0|Qn;

inputMRN,PEN;

input[3:0]Dn;

outputTC;

rcg[3:0]qaux;

regTC;

always@(posedgeCP)

begin

if(!MRN)

qaux<=4'b()0(X);

elseif(!PEN)

qaux<=Dn;

elseif(CEP&CET)

qaux<=qaux+l;

elseqaux<=qaux;

end

always@(posedgeCP)

begin

if(qaux==4'bl111&&CET==1)

TC=l'bl:

elseTC=1'bO;

end

assignQn=qaux;

endmodule

//74HC161测试平台代码

'timescaleIns/Ins

moduletestbench;

regcp,cep,cet,mrn.pen;

reg(3:0]dn;

wiretc;

wire[3:0]qn;

parameterDELY=20;

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

initial

begin

cep=I;

repeat(15)

#DELYcet=$random;

end

initial

begin

pen=l;

#DELYpen=O;

#60pen=1;

end

initial

begin

mm=1;

repeat(20)

#15mm=$random;

end

initial

#300$finish;

HCI61tcs((cp,ccp.cct.mni,pcn,dn.qn,(c);

endmodule

//74HC194代码

moduleHC194(Data,Enable,Shiften,Shiftin,Aclr,Clock,Shiftout);

input[3:0]Data;

inputAclr;

inputEnable;

inputShifien;

inputShiftin;

inputClock;

outputShiftout:

reg[3:0]Qaux;

always@(posedgeAclrorposedgeClock)

begin

if(Aclr)

Qaux=0;

elseif(Enable)

Qaux=Data;

elseif(Shiftcn)

Qaux={Qauxl2:0J,Shiftin};

end

assignShiftoul=Qaux|3|;

endmodule

//74HC194测试平台代码

'timescaleIns/Ins

moduletestbench;

reg[3:0]Data;

regAclr,Enable,Shiften,Shiftin,Clock;

wireShiftout;

parameterclock_period=20;

always#(clock_period/2)Clock=-Clock;

initial

#400Sfinish;

initial

begin

Data=();

rcpeat(20)

#20Data=$random;

end

initial

begin

Clock=0;

Aclr=0:

#40Aclr=l;

#100Aclr=0;

end

initial

begin

Enable=O:

#10()Enable=l;

#100Enablc=0;

end

initial

begin

Shiften=0;

repeat(20)

#20Shiftcn=$random;

end

initial

begin

Shiftin=0;

repeat(10)

#40Shif(in=$random;

end

shift_reg_pisotestbench_piso(Data.Enable,Shiften,Shiftin,Aclr,Clock,Shiftout);

endmodule

2、第一次仿真成果(任选一种模块,请注明)

74HC74

L

RTL图

SjnplifyProE-2010X)9A-l-(Sheetlofl-topF.srs

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

延迟时间为:300Ps

5、第二次仿真成果(布局布线后)

We⑼ViewMdTool*Window

Q@7二3三二|,Mg:%夕我立e♦*r18P«型tuts⑪OKS1科型企R型缶至IB»||C二七"?|去1£叫

wkjK|>第]■i

0pitD4Xrw

延迟时间为:56OOps

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

一、试验目的

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

2、熟悉试验箱的使用和程序下载(烧录)及测试的措施。

二、试验环境及仪器

1、Libero仿真软件。

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

3、ActelProasic3A3P030FPGA关键板及FlashPro4烧录器。

三、试验内容

1、新建一种工程文献,将前面已经设计好的74HC00、74HC02、74HC04、74HC08、74HC32、74HC86实例

文献导入,在SmartDesign窗口分别添加这6个模块,完毕对应连线。按试验指导书P175的附录B.3中所列引脚

对应表来分派引脚,最终通过烧录器烧录至FPGA关键板上。按分派的引脚连线,实测对应功能并记录成果。详

细环节请参照教材及试验指导书的有关内容。

2、新建一种工程文献,将前面已经设计好的74HC148、74HC138、74HCI53.74HC85、74HC283实例文献

导入,在SmartDesign窗口分别添加这5个模块,完毕对应连线。按试验指导书P176的附录B.4中所列引脚对应

表来分派引脚,最终通过烧录器烧录至FPGA关键板上。按分派的引脚连线,实测对应功能并记录成果。详细环

节请参照教材及试验指导书的有关内容。

3、新建一种工程文献,将前面已经设计好的74HC4511实例文献导入,在SmartDesign窗口添加这I个模块,

完毕对应连线。按试验指导书P173的附录B.2中所列引脚对应表来分派引脚,最终通过烧录器烧录至FPGA关键

板上。按分派的引脚连线,实测对应功能并记录成果。详细环节请参照教材及试验指导书的有关内容。

4、新建一种工程文献,将前面己经设计好的74HC74、74HC112、74HC194.74HCI61实例文献导入,在

SmartDesign窗口分别添加这4个模块,完毕对应连线。按试验指导书P178的附录B.5中所列引脚对应表来分派

引脚,最终通过烧录器烧录至FPGA关键板上。按分派的引脚连线,实测对应功能并记录成果。详细环节请参照

教材及试验指导书的有关内容。

四、试验成果和数据处理

表4/74HC00输入输出状态

输入端输出端丫

ABLED逻辑状态

00亮1

01亮1

10亮1

11灭0

表4.274HC02输入输出状态

输入端输出端Y

ABLED逻辑状态

00

01

10

11

表4-374HC04输入输出状态

输入端输出端丫

ALED逻辑状态

0

1

表4-474HC08输入输出状态

输入端输出端丫

ABLED逻辑状态

00

01

10

1!

表4-574HC32输入输出状态

输入端输出端Y

ABLED逻辑状态

00

01

10

11

表4-674HC86输入输出状态

输入端输山端Y

ABLED逻辑状态

00

01

10

1I

表4-774HCI48输入输出状本

控制十进制数字信号输入.・进制数码输出状态输出

[21A]Ao

1<>1|hI..5k17GsEo

1XXXXXXXX

011111111

0XXXXXXX0

0XXXXXX01

0XXXXX011

0XXXX0111

0XXX01111

0XX011111

0X0111111

001111111

注:X为任意状态

表4-874HC138输入输出状方

使能输入数据输入译码输出

E;

及E?AiA.A<i丫。Y.丫2丫3工丫5丫6丫?

1XXXXX

X1XXXX

XX0XXX

001000

001001

001010

001011

001100

001101

001110

001111

注:X为任意状态

表4-974HCI53输入输出状态

选择输入数据输入输出使能输入输出

SiSo11(1IIIlbIE1Y

XXXXXX1

000XXX0

001XXX0

10X0XX0

选择输入数据输入输出使能输入输出

“2

S,SoHoII.11?1E1Y

10X1XX0

0iXX0X0

01XX1X0

11XXX00

11XXX10

注:K为任该状态

表4-1074HC85输入输出状杰

比较输入级联输入输出

A3A2A1A0B3B2B0BIIA>BIA=BIA<BA>BA=BA<B

1XXX0XXXXXX

0XXXIXXXXXX

11XX10XXXXX

00XX01XXXXX

101X)00XXXX

000X001XXXX

11011100XXX

00100011XXX

110I1101000

01000100001

11011101100

00000000101

11111111001

注:X为任意状态

表4-1174HC283输入输出状态

进位

4位加数输入4位被加数输入输出加法成果和进位

输入

CinA4A3A2AlB4B3B2BlCoutS4S3S2SI

000000110

111111111

001110010

I01000110

I01010111

110000111

010011001

表4-1274HC45II输入输出状态

使能输入数据输入译码输出

LTBILEDCBAabcdcrg

0XXXXXX

10XXXXX

1100000

1100001

1100010

1100011

1100100

1100101

1100110

1100111

1101000

1101001

1101010

1101011

11011

温馨提示

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

评论

0/150

提交评论