基于Libero的数字逻辑设计仿真及验证实验分析报告Word下载.docx
- 文档编号:22303059
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:48
- 大小:521.34KB
基于Libero的数字逻辑设计仿真及验证实验分析报告Word下载.docx
《基于Libero的数字逻辑设计仿真及验证实验分析报告Word下载.docx》由会员分享,可在线阅读,更多相关《基于Libero的数字逻辑设计仿真及验证实验分析报告Word下载.docx(48页珍藏版)》请在冰豆网上搜索。
reg[3:
0]a,b;
wire[3:
0]y;
HC00u(a,b,y);
initial
begin
a=4'
b0000;
b=4'
b0001;
#10b=b<
<
1;
//0010
//0100
//1000
b1111;
end
//74HC02代码-或非
//74HC02.v
moduleHC02(A,B,Y);
input[3:
0]Y;
assignY=~(A|B);
//74HC02测试平台代码
//test_02.v
moduletest_02;
reg[3:
0]a,b,c;
HC02u(a,b,y);
c=4'
b=~c;
c=c<
#10b=~c;
//74HC04代码-非
//74HC04.v
moduleHC04(A,Y);
0]A;
assignY=~A;
//74HC04测试平台代码
//test_04.v
moduletest_04;
0]a;
HC04u(a,y);
#10a=a<
//74HC08代码-与
//74HC08.v
moduleHC08(A,B,Y);
input[3:
output[3:
assignY=A&
B;
//74HC08测试平台代码
//test_08.v
moduletest_08;
//74HC32代码-或
//74HC32.v
moduleHC32(A,B,Y);
input[3:
assignY=A|B;
//74HC32测试平台代码
//test_32.v
moduletest_32;
a=4'
//74HC86代码-异或
moduleHC86(A,B,Y);
assignY=A^B;
//74HC86测试平台代码
//test_86.v
moduletest_86;
0]a,b;
HC86u(a,b,y);
#10
2、第一次仿真结果(任选一个门,请注明,插入截图,下同)。
(将波形窗口背景设为白色,调整窗口至合适大小,使波形能完整显示,对窗口截图。
后面实验中的仿真使用相同方法处理)
3、综合结果(截图)。
(将相关窗口调至合适大小,使RTL图能完整显示,对窗口截图,后面实验中的综合使用相同方法处理)
4、第二次仿真结果(综合后)(截图)。
回答输出信号是否有延迟,延迟时间约为多少?
输出信号有延迟,延迟时间约为0.3ns
5、第三次仿真结果(布局布线后)(截图)。
分析是否有出现竞争冒险。
输出信号有延迟,延迟时间约为3ns,没有出现竞争冒险。
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代码
//74HC148.v
moduleHC148(EI,In,Out,EO,GS);
inputEI;
input[7:
0]In;
output[2:
0]Out;
outputEO,GS;
reg[2:
regEO,GS;
intergerI;
always@(EIorIn)
if(EI)
begin
Out=3'
b111;
EO=1;
GS=1;
end
else
if(In==8'
b11111111)
EO=0;
for(I=0;
I<
8;
I=I+1)
if(~In[I])
begin
Out=~I;
EO=1;
GS=0;
end
//74HC148测试平台代码
//test_148.v
moduletest_148;
regei;
reg[7:
0]turn;
wire[7:
0]in=~turn;
wire[2:
0]out;
wireeo,gs;
HC148u(ei,in,out,eo,gs);
initial
ei=1;
turn=8'
b1;
repeat(8)
#10turn=turn<
ei=0;
//74HC138代码
//74HC138.v
moduledecoder3_8_1(DataIn,Enable,Eq);
input[2:
0]DataIn;
inputEnable;
output[7:
0]Eq;
wire[2:
integerI;
always@(DataInorEnable)
if(Enable)
Eq=0;
for(I=0;
I<
=7;
I=I+1)
if(DataIn==I)
Eq[I]=1;
else
Eq[I]=0;
//74HC138测试平台代码
//test_138.v
moduletest_138;
0]out;
0]in;
0]ei;
HC138u(out,in,ei);
taskcircle;
in=0;
#10in=in+1;
endtask
initial
ei=1;
circle();
ei=0;
ei=2;
repeat(6)
circle();
#10ei=ei+1;
//74HC153代码
//74HC153.v
moduleHC153(DateOut,DateIn,Sel,Enable);
0]DateIn;
input[1:
0]Sel;
outputregDateOut;
always@(EnableorSelorDateIn)
if(Enable)DateOut=0;
elseDateOut=DateIn[Sel];
//74HC153测试平台代码
//test_153.v
moduletest_153();
wireout;
reg[3:
0]in;
reg[1:
0]sel;
HC153u(out,in,sel,ei);
sel=0;
in=4'
b1010;
repeat(4)
#10sel=sel+1;
//74HC85代码
//74HC85.v
moduleHC85(DateA,DateB,Cas,Q);
0]DateA,DateB;
0]Cas;
outputreg[2:
0]Q;
always@(DateAorDateBorCas)
if(DateA==DateB)
if(Cas[1])Q=3'
b010;
elseif(Cas==3'
b000)Q=3'
b101;
b101)Q=3'
b000;
elseQ=Cas;
for(I=0;
4;
if(DateA[I]>
DateB[I])Q=3'
b100;
elseif(DateA[I]<
b001;
//74HC85测试平台代码
//test_85.v
moduletest_85;
0]cas;
0]res;
HC85u(a,b,cas,res);
taskcascade_input;
#0cas=0;
#10cas=1;
#10cas=3'
#10cas=3'
#10cas=3'
b011;
b110;
#10;
d9;
b=a;
cascade_input();
b=4'
d7;
//74HC283代码
//74HC283.v
moduleHC283(DateA,DateB,Cin,Sum,Cout);
inputCin;
0]Sum;
outputCout;
reg[4:
0]Buf;
assign{Cout,Sum}=Buf;
always@(DateAorDateBorCin)
Buf=DateA+DateB+Cin+5'
d0;
//74HC283测试平台代码
//test_283.v
moduletest_283;
regin;
wire[3:
0]sum;
HC283u(a,b,in,sum,out);
taskaccumulate;
b0100;
16;
b=I;
accumulate();
in=1;
accumulate();
//74HC4511代码
//74HC4511.v
moduleHC4511(DateOut,DateIn,LE,BL_N,LT_N);
0]DateOut;
inputLE,BL_N,LT_N;
reg[7:
assignDateOut=Buf;
always@(DateInorLEorBL_NorLT_N)
if(!
LT_N)Buf=8'
b11111111;
elseif(!
BL_N)Buf=8'
b0000000;
elseif(LE)Buf=Buf;
case(DateIn)
4'
d0:
Buf=8'
b00111111;
d1:
b00000110;
d2:
b01011011;
d3:
b01001111;
d4:
b01100110;
d5:
b01101101;
d6:
b01111101;
d7:
b00000111;
d8:
b01111111;
d9:
b01101111;
4'
ha:
b01110111;
hb:
b01111100;
hc:
b00111001;
hd:
b01011110;
he:
b01111001;
hf:
b01110001;
default:
;
endcase
2、第一次仿真结果(任选一个模块,请注明)
74HC148
3、综合结果
4、第二次仿真结果(综合后)。
输出信号有延迟,延迟时间约为0.5ns
5、第三次仿真结果(布局布线后)。
输出信号有延迟,延迟时间约为5.2ns,出现了竞争冒险。
3、时序逻辑电路
1、了解基于Verilog的时序逻辑电路的设计及其验证。
3、学习针对实际时序逻辑电路芯片74HC74、74HC112、74HC194、74HC161进行VerilogHDL设计的方法。
1、熟练掌握Libero软件的使用方法。
2、进行针对74系列时序逻辑电路的设计,并完成相应的仿真实验。
3、参考教材中相应章节的设计代码、测试平台代码(可自行编程),完成74HC74、74HC112、74HC161、74HC194相应的设计、综合及仿真。
4、提交针对74HC74、74HC112、74HC161、74HC194(任选一个)的综合结果,以及相应的仿真结果。
//74HC74代码
//74HC74.v
moduleHC74(Set_N,Rst_N,Clk,D,Q,Qn);
inputSet_N,Rst_N,Clk,D;
outputQ,Qn;
reg[1:
0]Buf;
assign{Q,Qn}=Buf;
always@(negedgeSet_NornegedgeRst_NorposedgeClk)
case({Rst_N,Set_N})
0:
Buf<
=2'
b11;
1:
b10;
2:
b01;
default:
Buf<
={D,~D};
endcase
//74HC74测试平台代码
//test_74.v
moduletest_74;
regs,r,clk,d;
wireq,qn;
HC74u(s,r,clk,d,q,qn);
taskclock;
repeat(10)
d=0;
#3;
d=1;
always
clk=0;
#2;
clk=1;
s=0;
r=1;
clock;
#5s=1;
r=0;
#5s=0;
//74HC112代码
//74HC112.v
moduleHC112(Set_N,Rst_N,Clk_N,J,K,Q,Qn);
inputSet_N,Rst_N,Clk_N,J,K;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Libero 数字 逻辑设计 仿真 验证 实验 分析 报告