基于Libero的数字逻辑设计仿真及验证实验实验报告剖析Word下载.docx
《基于Libero的数字逻辑设计仿真及验证实验实验报告剖析Word下载.docx》由会员分享,可在线阅读,更多相关《基于Libero的数字逻辑设计仿真及验证实验实验报告剖析Word下载.docx(49页珍藏版)》请在冰豆网上搜索。
endmodule
(2)//模块二:
6个非门(同74HC04)
modulegates_2(A,Y);
input[1:
6]A;
output[1:
6]Y;
assignY=~A;
(3)测试平台代码
`timescale1ns/1ns
moduletestgates_1();
regA,B;
wireY1,Y2,Y3,Y4,Y5;
gates_1v1(A,B,Y1,Y2,Y3,Y4,Y5);
initial
begin
A=0;
B=0;
#10B=1;
#10A=1;
#10B=0;
#10;
end
moduletestgates_2();
reg[1:
wire[1:
gates_2v2(A,Y);
A=000001;
#10A=A<
<
1;
2、模块一第一次仿真结果(截图)。
将波形窗口背景设为白色,调整窗口至合适大小,使波形能完整显示,对窗口截图。
后面实验中的仿真使用相同方法处理)
模块二第一次仿真结果(截图)
3、模块一综合结果(截图)。
(将相关窗口调至合适大小,使RTL图能完整显示,对窗口截图,后面实验中的综合使用相同方法处理)
4、模块一第二次仿真结果(综合后)(截图)。
回答输出信号是否有延迟,延迟时间约为多少?
延迟约为300ps左右。
6、模块一第三次仿真结果(布局布线后)(截图)。
分析是否有出现竞争冒险。
延迟时间约为4500ps左右,无竞争冒险。
6、模块一布局布线的引脚分配(截图)。
7、烧录(请老师检查)。
2、组合逻辑电路
1、了解基于Verilog的组合逻辑电路的设计及其验证。
3、学习针对实际组合逻辑电路芯片74HC148、74HC138、74HC153、74HC85、74HC283、74HC4511进行VerilogHDL设计的方法。
2、进行针对74系列基本组合逻辑电路的设计,并完成相应的仿真实验。
3、参考教材中相应章节的设计代码、测试平台代码(可自行编程),完成74HC148、74HC138、74HC153、74HC85、74HC283、74HC4511相应的设计、综合及仿真。
4、74HC85测试平台的测试数据要求:
进行比较的A、B两数,分别依次为本人学号的奇数位和偶数位(例如,当学号为3212005896时,A数依次取学号从左到右的奇数位,即数字3、1、0、5、9,B数依次取学号从左到右的偶数位,即数字2、2、0、8、6),验证A、B的比较结果。
注意:
若两数相等,需考虑级联输入(级联输入的各种取值情况均需包括)。
5、74HC4511设计成扩展型的,即能显示数字0~9、字母a~f。
6、提交针对74HC148、74HC138、74HC153、74HC85、74HC283、74HC4511(任选一个)的综合、布局布线结果,以及相应的仿真结果。
7、完成课堂布置实验的Vierilog代码,并实现综合前仿真。
1、所有模块及测试平台代码清单
学号末4位+下划线+comb,例如陈静(3212005896)芯片的工程名为“5896_comb”。
设计代码文件,要求每个模块对应一个文件,文件名要求:
学号末4位+下划线+芯片名,如74HC148芯片文件命名为“5896_74HC148.v”。
//74HC148代码
moduleHC148(EI,I,A,GS,EO);
inputEI;
input[7:
0]I;
output[2:
0]A;
outputGS,EO;
reg[2:
regGS,EO;
integerj;
always@(EI,I)
begin
if(EI)
{A,GS,EO}=5'
b11111;
elseif(I==8'
b11111111)
b11110;
else
for(j=0;
j<
8;
j=j+1)
if(~I[j])
A=~j;
GS=0;
EO=1;
endmodule
//74HC148测试平台代码
moduletest_HC148;
regei;
reg[7:
0]i;
wire[2:
0]a;
wiregs,eo;
HC148u1(ei,i,a,gs,eo);
ei=1;
#20
ei=0;
i=8'
b11111111;
#20i=8'
b11111110;
b11111101;
b11111011;
b11110111;
b11101111;
b11011111;
b10111111;
b01111111;
//74HC138代码
moduleHC138(E1,E2,E3,A,Y);
inputE1,E2,E3;
input[2:
output[7:
0]Y;
integerI;
always@(E1,E2,E3,A)
if(E1==1||E2==1||E3==0)
Y=8'
Y=1'
b1<
A;
//74HC138测试平台代码
moduletest_HC138;
rege1,e2,e3;
wire[7:
0]y;
HC138u2(e1,e2,e3,a,y);
a=0;
repeat(20)
#20a=$random;
e1=1;
#10e2=1;
#10e3=0;
#10e1=0;
#10e2=0;
#10e3=1;
//74HC153代码
moduleHC153(S,I1,I2,E1,E2,Y1,Y2);
0]S;
input[3:
0]I1;
0]I2;
inputE1,E2;
outputY1,Y2;
regY1,Y2;
always@(S,I1,I2,E1,E2)
if(E1)
Y1=0;
Y1=I1[S];
if(E2)
Y2=0;
Y2=I2[S];
//74HC153测试平台代码
moduletest_HC153;
0]s;
reg[3:
0]i1;
0]i2;
rege1,e2;
wirey1,y2;
HC153u3(s,i1,i2,e1,e2,y1,y2);
e2=1;
#15e1=0;
e2=0;
s=0;
i1=0;
i2=0;
#10i1=4'
b1001;
i2=4'
b1100;
#10s=1;
#10s=2;
#10s=3;
//74HC85代码
moduleHC85(A,B,I,Q);
0]A,B;
0]Q;
always@(A,B)
if(A>
B)
Q=3'
b100;
elseif(A<
b001;
elseif(I[1]==1)
b010;
elseif(I==3'
b101)
b000;
elseif(I==0)
b101;
Q=I;
//74HC85测试平台代码
moduletest_HC85;
reg[3:
0]a,b;
0]q;
HC85u4(a,b,i,q);
i=0;
repeat(4)
#10i=$random;
a=3;
b=1;
#10
a=1;
b=4;
b=0;
a=6;
a=5;
b=9;
//74HC283代码
moduleHC283(CIN,A,B,COUT,S);
inputCIN;
outputCOUT;
output[3:
regCOUT;
always@(CIN,A,B)
{COUT,S}=CIN+A+B;
//74HC283测试平台代码
moduletest_HC283;
regcin;
wirecout;
wire[3:
HC283u5(cin,a,b,cout,s);
cin=0;
#15cin=$random;
#10a=$random;
b=0;
#10b=$random;
//74HC4511代码
moduleHC4511(LE,BI,LT,A,Y);
inputLE,BI,LT;
output[6:
reg[6:
always@(LE,BI,LT,A)
if(!
LT)
Y=7'
b1111111;
elseif(!
BI)
Y=0;
elseif(LE)
Y=Y;
case(A)
4'
d0:
Y=7'
b1111110;
//数字按abcdefg顺序
d1:
b0110000;
d2:
b1101101;
d3:
b1111001;
d4:
b0110011;
d5:
b1011011;
d6:
b1011111;
d7:
b1110000;
d8:
d9:
b1111011;
d10:
b1110111;
d11:
b0011111;
d12:
b1001110;
d13:
b0111101;
d14:
b1001111;
d15:
b1000111;
default:
;
endcase
//74HC4511测试平台代码
moduletest_HC4511;
regle,bi,lt;
wire[6:
HC4511u6(le,bi,lt,a,y);
lt=0;
lt=1;
bi=0;
bi=1;
le=1;
le=0;
repeat(30)
3、第一次仿真结果截图(任选一个模块,请注明)
74HC85:
4、综合结果(截图)
5、第二次仿真结果(综合后仿真截图)。
回答输出信号是否有延迟,最长延迟时间约为多少?
最大延迟约为700ps
。
6、布局布线(引脚分配截图)
7、第三次仿真结果(布局布线后)。
最大延迟约为11500ps,出现竞争冒险。
8、烧录,给老师检查。
3、时序逻辑电路
1、了解基于Verilog的时序逻辑电路的设计及其验证。
3、学习针对实际时序逻辑电路芯片74HC74、74HC112、74HC194、74HC161进行VerilogHDL设计的方法。
1、熟练掌握Libero软件的使用方法。
2、进行针对74系列时序逻辑电路的设计,并完成相应的仿真实验。
3、参考教材中相应章节的设计代码、测试平台代码(可自行编程),完成74HC74、74HC112、74HC161、74HC194相应的设计、综合及仿真。
4、提交针对74HC74、74HC112、74HC161、74HC194(任选一个)的综合结果,以及相应的仿真结果。
1、74HC74、74HC112、74HC161、74HC194四个模块及测试平台代码设计。
将以上4个模块及相应测试平台代码均写在一个工程文件中。
工程(project)名要求:
学号末4位+下划线+seq,例如陈静(3212005896)的工程名为“5896_seq”。
设计模块代码文件名要求:
A)4个模块可以写在同一个Verilog文件中,如果这样,文件命名要求同上,即“5896_seq.v”;
B)4个模块分别写在不同的Verilog文件中,如果这样,文件命名要求:
学号末4位+下划线+芯片名,例如“5896_74HC161.v”。
测试平台文件名:
分别为每个模块建立一个测试平台文件,文件命名要求:
test+下划线+芯片名,例如“test_74HC161.v”。
(1)代码清单
//74HC74代码
moduleHC74(S1,S2,R1,R2,CLK1,CLK2,D1,D2,Q1,QF1,Q2,QF2);
inputS1,S2,R1,R2,CLK1,CLK2,D1,D2;
outputQ1,QF1,Q2,QF2;
regQ1,QF1,Q2,QF2;
always@(posedgeCLK1)
S1&
&
R1)
Q1<
=1;
QF1<
=0;
elseif(S1&
!
=D1;
=!
D1;
always@(posedgeCLK2)
S2&
R2)
Q2<
QF2<
=D2;
D2;
//74HC74测试平台代码
`timescale1ns/1ns
moduletest_HC74;
regs1,s2,r1,r2,clk1,clk2,d1,d2;
wireq1,qf1,q2,qf2;
HC74u1(s1,s2,r1,r2,clk1,clk2,d1,d2,q1,qf1,q2,qf2);
clk1=0;
#400$finish;
always
#10clk1=~clk1;
clk2=0;
#10clk2=~clk2;
s1=0;
#20s1=$random;
s2=0;
#20s2=$random;
r1=1;
#20r1=$random;
r2=1;
#20r2=$random;
d1=0;
#20d1=$random;
d2=0;
#20d2=$random;
//74HC112代码
moduleHC112(S1,S2,,R1,R2,CLK1,CLK2,J1,J2,K1,K2,Q1,QF1,Q2,QF2);
inputS1,S2,R1,R2,CLK1,CLK2,J1,J2,K1,K2;
regQ1,Q2;
assignQF1=~Q1;
assignQF2=~Q2;
always@(negedgeCLK1,negedgeS1,negedgeR1)
case({J1,K1})
2'
b00:
Q1<
=Q1;
b01:
b10:
b11:
=~Q1;
always@(negedgeCLK2,negedgeS2,negedgeR2)
elseif(S2&
case({J2,K2})
Q2<
=Q2;
=~Q2;
//74HC112测试平台代码
moduletest_HC112;
regs1,s2,r1,r2,clk1,clk2,j1,j2,k1,k2;
HC112u1(s1,s2,r1,r2,clk1,clk2,j1,j2,k1,k2,q1,qf1,q2,qf2);
r1=0;
j1=0;
#20j1=$random;
k1=0;
#20k1=$random;