数字逻辑及EDA设计实验48实验报告.docx

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

数字逻辑及EDA设计实验48实验报告.docx

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

数字逻辑及EDA设计实验48实验报告.docx

数字逻辑及EDA设计实验48实验报告

 

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(DataA,DataB,Y);

input[3:

0]DataA,DataB;

output[3:

0]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;

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

#10b=b<<1;

#10b=b<<1;

#10b=b<<1;

end

endmodule

//74HC02代码-或非

moduleHC02(A,B,Y);

input[4:

1]A,B;

output[4:

1]Y;

assignY=~(A|B);

endmodule

//74HC04代码-非

moduleHC04(A,Y);

input[4:

1]A;

output[4:

1]Y;

assignY=~A;

endmodule

//74HC08代码-与

moduleHC08(A,B,Y);

input[4:

1]A,B;

output[4:

1]Y;

assignY=A&B;

endmodule

//74HC32代码-或

moduleHC32(A,B,Y);

input[4:

1]A,B;

output[4:

1]Y;

assignY=A|B;

endmodule

//74HC86代码-异或

moduleHC86(A,B,Y);

input[4:

1]A,B;

output[4:

1]Y;

assignY=A^B;

endmodule

/门电路测试平台代码

//testbench.v

`timescale1ns/1ns

moduletestbench();

reg[4:

1]a,b;

wire[4:

1]y;

HC00test(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

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

//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=0;

else

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

if(Din==I)

Eq[I]=1;

else

Eq[I]=0;

end

endmodule

//74HC138测试平台代码

//testbench.v

`timescale1ns/1ns

moduletestbench;

reg[2:

0]Din;

regenable;

wire[7:

0]dataout;

initial

#400$finish;

initial

begin

enable=1;

#40enable=0;

end

initial

begin

repeat(20)

#20dataIn=$random;

end

decoder138test(Din,enable,dataout);

endmodule

//74HC148代码

moduleencoder148(Din,EO,Dout,EI,GS);

input[7:

0]Din;

inputEI;

outputEO;

output[2:

0]Dout;

regEO;

regGS;

integerI;

always(DinorEI)

begin:

local

if(EI)

begin

Dout=7;

EO=1;

GS=1;

end

elseif(Din==16'b11111111)

begin

Dout=7;

EO=0;

GS=1;

end

else

begin

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

begin

if(~Din[I])

begin

Dout=~I;

EO=1;

GS=0;

end

end

end

endmodule

//74HC148测试平台代码

`timeccale1ns/10ps

moduletestbench;

reg[7:

0]in;

regEI;

wire[2:

0]out;

wireEO,GS;

initial

begin

in='b00000001;

repeat(9)

#20in=in<<1;

end

encoder148testbench148(in,EO,out,EI,GS);

endmodule

//74HC153代码

modulemux4_1_a(D0,D1,D2,D3,Sel0,Sel1,Result);

inputD0,D1,D2,D3;

inputSel0,Sel1;

outputResult;

regResult;

always(D0orD1orD2orD3orSllorSel0)

begin

case({Sel1,Sel0})

0:

Result=D0;

1:

Result=D1;

2:

Result=D2;

3:

Result=D3;

default:

Result=1`bx;

endcase

end

endmodule

//74HC153测试平台代码

`timescale1ns/1ps

moduletestbench_4mux_1;

regD0,D1,D2,D3,Sel1,Sel0;

wireResult;

mux4_1_aDUT(D0,D1,D2,D3,Sel1,Sel0,Result);

initial

begin

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

#100D0=1;D1=0;D2=0;D3=1;

#100Sel1=0;Sel0=1;

#100Sel1=1;Sel0=0;

#100Sel1=1;Sel0=1;

#100;

end

endmodule

//74HC85代码

modulecomparator_4_a(A,B,AGEB);

input[3:

0]A,B;

outputAGEB;

regAGEB;

always(AorB)

begin

if(A>=B)

AGEB=1;

else

AGEB=0;

end

endmodule

//74HC85测试平台代码

`timescale1ns/10ps

moduletestbench;

reg[3:

0]ina,inb;

wireAGEB;

comparator_4_atestbench_4_a(ina,inb,AGEB);

initial

begin

ina=0;

repeat(20)

#20ina=$random;

#20$finish;

end

initial

begin

inb=0;

repeat(10)

#40inb=$random;

end

endmodule

//74HC283代码

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

parameterN=4;

input[N-1:

0]A,B;

inputCin;

output[N-1:

0]Sum;

reg[N-1:

0]Sum;

outputCout;

regCout;

reg[N:

0]q;

always(AorBorCin)

begin:

adder

integeri;

q[0]=Cin;

for(i=0;i<=N;i=i+1)

begin

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

Sum[i]=A[i]^B[i]^q[i];

end

Cout=q[N];

end

endmodule

//74HC283测试平台代码

`timescale1ns/10ps

moduletestbench;

reg[3:

0]ina,inb;

regcin;

wire[3:

0]sum;

wirecout;

HC283testbench283(ina,inb,cin,sum,cout);

initial

begin

ina=0;

repeat(20)

#20ina=$random;

end

initial

begin

inb=0;

repeat(10)

#40inb=$random;

end

initial

begin

cin=0;

#200cin=1;

end

endmodule

//74HC4511代码

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测试平台代码

`timescale1ns/10ps

moduletestbench;

reg[3:

0]a;

reglt_n,bi_n,le;

wire[7:

0]seg;

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

initial

begin

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

#30a=4'b0001;

#30a=4'b1000;

#30a=4'b0111;

#30a=4'b1010;

#30a=4'b0101;

#30le=1;

#30bi_n=0;

#30lt_n=0;

#20;

end

endmodule

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

74HC153模块

3、综合结果

RTL图

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

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

延迟300ps

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

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

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

延迟5200ps

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

//74hc74.v

moduled_ff(Set,Reset,Clk,D,Q);

inputSet,Reset,Clk,D;

outputQ;

regQ;

always(posedgeClkornegedgeResetornegedgeSet)

begin

if(!

Reset)

begin

if(!

Set)Q<=D;

elseQ<=1;

end

else

if(!

Set)Q<=0;

end

endmodule

//74HC74测试平台代码

//74hc74.v

`timescale1ns/1ns

moduletestbench;

regD,Reset,Set,Clk;

wireQ;

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

initial

begin

Clk=0;

#400$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=0;

repeat(20)

#20Set=$random;

end

endmodule

//74HC112代码

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

inputJ,K,Clk;

outputQ,Qn;

regQ;

assignQn=~Q;

always(posedgeClk)

case({J,K})

2'b00:

Q<=Q;

2'b01:

Q<=1'b0;

2'b10:

Q<=1'b1;

2'b11:

Q<=~Q;

default:

Q<=1'bx;

endcase

endmodule

//74HC112测试平台代码

`timescale1ns/1ns

moduletestbench;

regj,k,Clk;

wireQ,Qn;

parameterclock_period=20;

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

initial

begin

j=0;Clk=0;

repeat(20)

#20j=$random;

end

initial

begin

k=0;

repeat(20)

#20k=$random;

end

initial

#300$finish;

jk_fftestbench_jk(j,k,Clk,Q,Qn);

endmodule

//74HC161代码

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

inputCP;

inputCEP,CET;

output[3:

0]Qn;

inputMRN,PEN;

input[3:

0]Dn;

outputTC;

reg[3:

0]qaux;

regTC;

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&&CET==1)

TC=1'b1;

elseTC=1'b0;

end

assignQn=qaux;

endmodule

//74HC161测试平台代码

`timescale1ns/1ns

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=1;

repeat(15)

#DELYcet=$random;

end

initial

begin

pen=1;

#DELYpen=0;

#60pen=1;

end

initial

begin

mrn=1;

repeat(20)

#15mrn=$random;

end

initial

#300$finish;

HC161test(cp,cep,cet,mrn,pen,dn,qn,tc);

endmodule

 

//74HC194代码

m

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

当前位置:首页 > 解决方案 > 学习计划

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

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