基于Libero的数字逻辑设计仿真及验证实验实验报告edaWord下载.docx
- 文档编号:18742091
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:40
- 大小:146.13KB
基于Libero的数字逻辑设计仿真及验证实验实验报告edaWord下载.docx
《基于Libero的数字逻辑设计仿真及验证实验实验报告edaWord下载.docx》由会员分享,可在线阅读,更多相关《基于Libero的数字逻辑设计仿真及验证实验实验报告edaWord下载.docx(40页珍藏版)》请在冰豆网上搜索。
#10A=1;
#10B=1;
#10A=0;
#10;
end
//74HC02代码-或非
moduleHC02(A,B,Y);
assignY=~(A||B);
//74HC02测试平台代码
HC02testbench02(A,B,Y);
//74HC04代码-非
moduleHC04(A,Y);
inputA;
assignY=~A;
//74HC04测试平台代码
regA;
HC04testbench04(A,Y);
#10;
A=1;
//74HC08代码-与
moduleHC08(A,B,Y);
assignY=A&
B;
//74HC08测试平台代码
HC08testbench08(A,B,Y);
//74HC32代码-或
moduleHC32(A,B,Y);
assignY=A||B;
//74HC32测试平台代码
HC32testbench32(A,B,Y);
//74HC86代码-异或
moduleHC86(A,B,Y);
assignY=A^B;
//74HC86测试平台代码
HC86testbench86(A,B,Y);
2、第一次仿真结果(任选一个门,请注明,插入截图,下同)。
(将波形窗口背景设为白色,调整窗口至合适大小,使波形能完整显示,对窗口截图。
后面实验中的仿真使用相同方法处理)
解:
选择74HC02或非门:
3、综合结果(截图)。
(将相关窗口调至合适大小,使RTL图能完整显示,对窗口截图,后面实验中的综合使用相同方法处理)
4、第二次仿真结果(综合后)(截图)。
回答输出信号是否有延迟,延迟时间约为多少?
有延迟,延迟时间约300ps。
5、第三次仿真结果(布局布线后)(截图)。
分析是否有出现竞争冒险。
有延迟,延迟时间约4100ps。
无竞争冒险。
2、组合逻辑电路
1、了解基于Verilog的组合逻辑电路的设计及其验证。
3、学习针对实际组合逻辑电路芯片74HC148、74HC138、74HC153、74HC85、74HC283、74HC4511进行VerilogHDL设计的方法。
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(任选一个)的综合结果,以及相应的仿真结果。
//74HC148代码
moduleHC148(DataIn,EO,Dataout,EI,GS);
input[7:
0]DataIn;
inputEI;
outputEO;
output[2:
0]Dataout;
outputGS;
reg[2:
regEO;
regGS;
integerI;
always@(DataInorEI)
begin:
local
if(EI)
begin
Dataout=7;
EO=1;
GS=1;
end
elseif(DataIn==8`b11111111)
EO=0;
else
for(I=0;
I<
8;
I=I+1)
if(~DataIn[I])
Dataout=~I;
GS=0;
//74HC148测试平台代码
`timescale1ns/10ps
reg[7:
0]in;
regEI;
wire[2:
0]out;
wireEO,GS;
HC148testbench148(in,EO,out,EI,GS);
EI=0;
#20;
EI=1;
in=`b00000001;
repeat(9)
#20in=in<
<
1;
//74HC138代码
moduleHC138(DataIn,E1N,E2N,E3,Eq);
input[2:
inputE1N,E2N,E3;
output[7:
0]Eq;
IntegerI;
always@(DataIn,E1N,E2N,E3)
if((!
E1N)&
(!
E2N)&
E3)
if(DataIn==I)
Eq[I]=1;
elseEq[I]=0;
elseEq=0;
//74HC138测试平台代码
regE1N,E2N,E3;
wire[7:
0]eq;
HC138testbench138(in,E1N,E2N,E3,eq);
in=0;
repeat(20)
#20in=$random;
begin
E1N=1;
#40;
E2N=1;
E3=0;
E1N=0;
E2N=0;
E3=1;
//74HC153代码
moduleHC153(EN,D0,D1,D2,D3,S0,S1,Y);
inputEN,D0,D1,D2,D3,S0,S1;
regY;
always@(EN,D0,D1,D2,D3,S0,S1)
if(!
EN)case({S1,S0})
0:
Y=D0;
1:
Y=D1;
2:
Y=D2;
3:
Y=D3;
default:
Y=1’bx;
endcase
//74HC153测试平台代码
regEN,D0,D1,D2,D3,S0,S1;
HC153testbench153(EN,D0,D1,D2,D3,S0,S1,Y);
EN=1;
#50;
EN=0;
D0=0;
D1=0;
D2=0;
D3=0;
S0=0;
S1=0;
#100D0=1;
D3=1;
#100S1=0;
S0=1;
#100S1=1;
#100;
//74HC85代码
moduleHC85(DataA,DataB,QAGB,QASB,QAEB,IAGB,IASB,IAEB);
input[3:
0]DataA,DataB;
inputIAGB,IASB,IAEB;
outputQAGB,QASB,QAEB;
regQAGB,QASB,QAEB;
always@(DataA,DataB)
if(DataA>
DataB)
QAGB=1;
QASB=0;
QAEB=0;
elseif(DataA<
QAGB=0;
QASB=1;
elseif(IAGB&
!
IASB&
IAEB)
elseif(!
IAGB&
elseif(IAEB)
//74HC85测试平台代码
reg[3:
regIAGB,IASB,IAEB;
wireQAGB,QASB,QAEB;
HC85testbench85(DataA,DataB,QAGB,QASB,QAEB,IAGB,IASB,IAEB);
DataA=0;
#20DataA=$random;
DataB=0;
#20DataB=$random;
for((I=0;
I=I+1))
{IAGB,IASB,IAEB}=I;
//74HC283代码
moduleHC283(DataA,DataB,Cin,Sum,Cout);
inputCin;
output[3:
0]Sum;
outputCout;
regCout;
always@(DataA,DataB,Cin)
{Cout,Sum}=DataA+DataB+Cin;
//74HC283测试平台代码
regCin;
wire[3:
wireCout;
HC283testbench283(DataA,DataB,Cin,Sum,Cout);
#40DataB=$random;
Cin=0;
#200Cin=1;
//74HC4511代码
moduleHC4511(A,Seg,LTN,BIN,LE);
inputLTN,BIN,LE;
input[3:
0]A;
output[7:
0]Seg;
always@(A,LTN,BIN,LE)
if(!
LTN)Seg=8`b11111111;
BIN)Seg=8`b00000000;
elseif(LE)Seg=Seg;
else
case(A)
4`d0:
Seg=8`b00111111;
4`d1:
Seg=8`b00000110;
4`d2:
Seg=8`b01011011;
4`d3:
Seg=8`b01001111;
4`d4:
Seg=8`b01100110;
4`d5:
Seg=8`b01101101;
4`d6:
Seg=8`b01111101;
4`d7:
Seg=8`b00000111;
4`d8:
Seg=8`b01111111;
4`d9:
Seg=8`b01101111;
4`d10:
Seg=8`b01110111;
4`d11:
Seg=8`b01111100;
4`d12:
Seg=8`b00111001;
4`d13:
Seg=8`b01011110;
4`d14:
Seg=8`b01111001;
4`d15:
Seg=8`b01110001;
default;
//74HC4511测试平台代码
regLTN,BIN,LE;
reg[3:
wire[7:
HC4511testbench4511(A,Seg,LTN,BIN,LE);
#10A=$random;
LTN=0;
#10
BIN=0;
LTN=1;
#10
LE=0;
BIN=1;
#10;
2、第一次仿真结果(任选一个模块,请注明)
选择74HC148:
3、综合结果
4、第二次仿真结果(综合后)。
有延迟,延迟时间约为300ps。
5、第三次仿真结果(布局布线后)。
有延迟,延迟时间约为4000ps。
有竞争冒险。
3、时序逻辑电路
1、了解基于Verilog的时序逻辑电路的设计及其验证。
3、学习针对实际时序逻辑电路芯片74HC74、74HC112、74HC194、74HC161进行VerilogHDL设计的方法。
1、熟练掌握Libero软件的使用方法。
2、进行针对74系列时序逻辑电路的设计,并完成相应的仿真实验。
3、参考教材中相应章节的设计代码、测试平台代码(可自行编程),完成74HC74、74HC112、74HC161、74HC194相应的设计、综合及仿真。
4、提交针对74HC74、74HC112、74HC161、74HC194(任选一个)的综合结果,以及相应的仿真结果。
//74HC74代码
moduleHC74(SDN,RDN,Clk,D,Q,QN);
inputSDN,RDN,Clk,D;
outputQ,QN;
regQ;
assignQN=~Q;
always@(posedgeClkornegedgeSDNornegedgeRDN)
if((!
SDN)&
RDN)Q<
=1;
elseif(SDN&
RDN))Q<
=0;
=D;
//74HC74测试平台代码
regSDN,RDN,Clk,D;
wireQ,QN;
HC74testbench1(SDN,RDN,Clk,D,Q,QN);
parameterclock_period=20;
always#(clock_period/2)Clk=~Clk;
D=0;
Clk=0;
#20D=$random;
SDN=0;
#20SDN=$random;
RDN=0;
#20RDN=$random;
#300$finish;
//74HC112代码
moduleHC112(J,K,Clk,SDN,RDN,Q,Qn);
inputJ,K,Clk,SDN,RDN;
outputQ,Qn;
assignQn=~Q;
always@(negedgeClkornegedgeSDNornegedgeRDN)
=1`b1;
=1`b0;
RDN))
case({J,K})
2`b00:
Q<
=Q;
2`b01:
2`b10:
2`b11:
=~Q;
Q<
=1`bx;
//74HC112测试平台代码
regJ,K,Clk,SDN,RDN;
wireQ,Qn;
HC112testbench112(J,K,Clk,SDN,RDN,Q,Qn);
J=0;
K=0;
Clk=1;
#10J=1;
#10K=1;
#10J=0;
RDN=1;
#10RDN=0;
#10SDN=1;
#10RDN=1;
//74HC161代码
moduleHC161(CP,CEP,CET,MRN,PEN,Dn,Qn,TC);
inputCP,CEP,CET,MRN,PEN;
0]Dn;
0]Qn;
outputTC;
regTC;
always@(posedgeCP)
MRN)Qn<
=4`b0000;
PEN)Qn<
=Dn;
elseif(CEP&
CET)Qn<
=Qn+1;
elseQn<
=Qn;
if(Qn==4`b1110&
CET==1)TC=1`b1;
elseTC=1`b0;
//74HC161测试平台代码
regCP,CEP,CET,MRN,PEN;
reg[3
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Libero 数字 逻辑设计 仿真 验证 实验 报告 eda