数字逻辑与EDA设计 实验48实验报告.docx
- 文档编号:5227253
- 上传时间:2022-12-14
- 格式:DOCX
- 页数:35
- 大小:29.95KB
数字逻辑与EDA设计 实验48实验报告.docx
《数字逻辑与EDA设计 实验48实验报告.docx》由会员分享,可在线阅读,更多相关《数字逻辑与EDA设计 实验48实验报告.docx(35页珍藏版)》请在冰豆网上搜索。
数字逻辑与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'b)
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'b;
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代码
moduleHC194(Data,En
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字逻辑与EDA设计 实验48实验报告 数字 逻辑 EDA 设计 实验 48 报告