EDA实验报告终极版.docx
《EDA实验报告终极版.docx》由会员分享,可在线阅读,更多相关《EDA实验报告终极版.docx(62页珍藏版)》请在冰点文库上搜索。
EDA实验报告终极版
学院—专业—班、学号_
姓名协作者教师评定
实验题目基于Libero的数字逻辑设计仿真及验证实验.
1、熟悉EDA工具的使用;仿真根本门电路。
2、仿真组合逻辑电路。
3、仿真时序逻辑电路。
4、根本门电路、组合电路和时序电路的程序烧录及验证。
5、数字逻辑综合设计仿真及验证。
实验报告
1、根本门电路
一、实验目的
1、了解基于verilog的根本门电路的设计及其验证。
2、熟悉利用EDA工具进行设计及仿真的流程。
3、学习针对实际门电路芯片74HC00、74HC02、74HC04、74HC08、74HC32、74HC86进行VerilogHDL设计的方法。
二、实验环境
Libero仿真软件。
三、实验内容
1、掌握Liber。
软件的使用方法。
2、进行针对74系列根本门电路的设计,并完成相应的仿真实验。
3、参考教材中相应章节的设计代码、测试平台代码〔可自行编程〕,完成74HC00、74HC02、74HC04、74HC08、74HC32、74HC86相应的设计、综合及仿真。
4、提交针对74HC00、74HC02、74HC04、74HC08、74HC32、74HC86〔任选一个〕的综合结果,以及相应的仿真结果。
四、实验结果和数据处理
1、所有模块及测试平台代码清单
//74HC00代码-与非
//
moduleHCOO(A,B,Y);input[3:
0]A,B;output[3:
0]Y;
assignY=~(A&E);
endmodule
//74HC00测试平台代码
//
'timescaleIns/Ins
moduletest_OO;
reg[3:
0]a,b;
wire[3:
0]y;
HCOOu(a,b,y);
irdtial
begin
a=4'b0000;b=4'b0001;
#10b=b«l;//0010
#10b=b«l;//0100
#10b=b«l;//1000
a=4'bllll;b=4'bOOOl;
#10b=b«l;
#10b=b«l;
#10b=b«l;
end
endmodule
//74HC02代码-或非
moduleHC02(A,B,Y);
input
[3:
0]A,B;
output
[3:
0]Y;
assign
Y=~(A|B);
endmodule
//74HC02测试平台代码
//
'timescaleIns/Ins
moduletest_02;
reg[3:
0]a,b,c;
wire[3:
0]y;
HC02u(a,b,y);
initial
begin
a=4'bllll;c=4'bOOOl;
b=~c;c=c<<1;
#10b=~c;c=c<<1;
#10b=~c;c=c<<1;
#10b=~c;
a=4'b0000;c=4'bOOOl;
b=~c;c=c<<1;
#10b=~c;c=c<<1;
#10b=~c;c=c<<1;
#10b=~c;
end
endmodule
//74HC04代码-非
moduleHC04(A,Y);input[3:
0]A;output[3:
0]Y;
assignY=~A;
endmodule
//74HC04测试平台代码
//
'timescaleIns/Ins
moduletest_O4;
reg[3:
0]a;
wire[3:
0]y;
HC04u(a,y);
initial
begin
a=4'bOOOl;
#10a=a<<1;
#10m=a<<1;
#10a=a<<1;
end
endmodule
//74HC08代码-与
moduleHC08(A,B,Y);
input[3:
0]A,B;
output[3:
0]Y;
assignY=A&E;
endmodule
//74HC08测试平台代码
//
'timescaleIns/Ins
moduletest_08;
reg[3:
0]a,b;
wire[3:
0]y;
HCOOu(a,b,y);
initial
begin
a=4'b0000;b=4'bOOOl;
#10b=b«l;
#10b=b«l;
#10b=b«l;
a=4'bllll;b=4'bOOOl;
#10b=b«l;
#10b=b«l;
#10b=b«l;
end
endmodule
//74HC32代码-或
moduleHC32(A,B,Y);
input[3:
0]A,B;
output[3:
0]Y;
assignY=A|B;
endmodule
//74HC32测试平台代码
//
^timescaleIns/Ins
moduletest_32;
reg[3:
0]a,b,c;
wire[3:
0]y;
HC02u(a,b,y);
irdtial
begin
a=4'bllll;c=4'bOOOl;
b=~c;c=c<<1;
#10b=~c;c=c<<1;
#10b=~c;c=c<<1;
#10b=~c;
a=4'b0000;c=4'b0001;
b=~c;c=c<<1;
#10b=~c;c=c<<1;
#10b=~c;c=c<<1;
#10b=~c;
end
endmodule
//74HC86代码-异或moduleHC86(A,B,Y);
input[3:
0]A,B;output[3:
0]Y;assignY=AAB;
endmodule
//74HC86测试平台代码
//
^timescaleIns/Insmoduletest_86;
reg[3:
0]a,b;
wire[3:
0]y;
HC86u〔a,b,y〕;
initial
begin
a=4'b0000;b=4'bOOOl;
#10b=b«l;
#10b=b«l;
#10b=b«l;
#10
a=4'bllll;b=4'bOOOl;
#10b=b«l;
#10b=b«l;
#10b=b«l;
end
endmodule
2、第一次仿真结果〔任迪一个门,.诸注明,.插入截图,.下同〕。
〔将波形窗口背景设为白色,调整窗口至适宜大小,使波形能完整显示,对窗口截图。
后面
••••
实验中的仿真使用相同方法处理〕
Messes
/testbendi/a
mi
(CDDO
mi
,[3]
1
i
'[2]
i
i
'[I]
1
i
CT
1
i
/tcstbcndi/b
10CO
(CODlJ3D:
O
010D
COOL
DO10
010DtlOOC
一'[3]
1
i
一'[2]
0
1
一'[1]
0
I
•[0]
0
i
/testberxh/y
0111
(.111
1110
1101
1C11
0111
一'[3]
sto
i
一'[2]
Stl
i
」[1]
5tl
i
[ol
Stl
i
综合结果〔截图〕。
〔将相关窗口调至适宜大小,使RTL图能完整显示,
••
对窗口截图,后面实验中的综合使用相同方法处理〕
4.第二次仿真结果〔综合后〕〔截图〕。
答复输出信号是否有延迟,延迟时
••
间约为多少?
Pcssogcs
/testbendi/a
1111
[CODO
[1111
—
'[3]
1
'[2]
1
'[1]
1
CT
1
/testbenzh/b
1003
[C031
3010
0100[0301
DO10
Cloo1
100C
o-J
一'卩]
1
一'[2]
0
一'CH
0
L
Lj[0]
0
/testberxh/y
0111
<1111
X-iio
1101ttlGll
:
C1U—
F[3]
sto
一'R]
Stl
」
|
i
一"[1]
Stl
厂
•[0]
5tl
」
1
lOCOrs
■■■iiiiii)n$
■iiiiiiiiIiii■iiiiii•iiiiiiiiIiiiii■iiiIii•iiiii•lii■iiii■i
20ns40n$60ns
输出信号有延迟,延迟时间约为0・3ns
5>第三次仿真结果〔布局布线后〕〔截图〕。
答复输出信号是否有延迟,延
>•
迟时间约为多少?
分析是否有出现竞争冒险。
输出信号有延迟,延迟时间约为3ns,没有出现竞争冒险。
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〞,E数为“1001〞。
假设两数相等,需考虑级联输入〔级联输入的各种取值情况均需包括〕;假设两数不等,那么需增加一对取值情况,验证A、B相等时的比拟结果。
5、74HC4511设计成扩展型的,即能显示数字0~9、字母a~f。
提交针对74HC148、74HC138、74HC153、74HC85、74HC283、
74HC4511〔任选一个〕的综合结果,以及相应的仿真结果。
四、实验结果和数据处理
1、所有模块及测试平台代码清单
//74HC148代码
//
moduleHC148(EI,In,Out,EO,GS);
inputEl;
input[7:
0]In;
output[2:
0]Out;
outputEO,GS;
reg[2:
0]Out;
regEO,GS;
intergerI;
always@(EIorIn)
if(EI)
begin
Out=3'blll;EO=1;GS=1;
end
else
if(In==8'bllllllll)
begin
Out=3'blll;EO=0;GS=1;end
else
begin
for(I=0;I<8;I=I+1)
begin
if(~In[I])
begin
Out=~I;EO=1;GS=0;
end
end
end
endmodule
//74HC148测试平台代码
//
^timescaleIns/Ins
moduletest_148;
regei;
wire[7:
0]in=~tum;
wire[2:
0]out;
wireeo,gs;
HC148u(ei,in,out,eo,gs);
initial
begin
ei=1;turn=8fbl;
repeat(8)
#10turn=turn<ei=0;turn=8'bl;
repeat(8)
#10turn=turn<end
endmodule
//74HC138代码
moduledecoder3_8_l(DataIn,Enable,Eq);
input[2:
0]Dataln;
inputEnable;
reg[7:
0]Eq;
wire[2:
0]Dataln;
integerI;
always@(DatalnorEnable)
begin
if(Enable)
Eq=0;
else
for(I=0;I<=7;I=I+l)
辻(D?
itaIn==I)
Eq[I]=l;
else
Eq[I]=0;
end
endmodule
//74HC138测试平台代码
//
^timescaleIns/Ins
moduletest_138;
reg[7:
0]in;
reg[2:
0]ei;
HC138u(out,in,ei);
taskcircle;
begin
in=0;
repeat(8)
#10in=in+1;
end
endtask
in让i?
d
begin
ei=l;circle();
ei=0;circle();
ei=2;
repeat(6)
begin
circlef);
#10ei=ei+1;
end
end
endmodule
//74HC153代码
moduleHC153(DateOut,Datein,Sei,Enable);
input[3:
0]DateIn;
input[l:
O]Sel;
inputEnable;
outputregDateOut;
always@(EnableorSeiorDatein)
辻(Enable)DateOut=0;
elseDateOut=DateIn[Sel];
endmodule
//74HC153测试平台代码
//
'timescaleIns/Ins
moduletest_153();
wireout;
reg[l:
O]sel;
regei;
HC153u(out,in,sei,ei);
initial
begin
ei=0;sei=0;in=4'bl010;
repeat(4)
#10sei=sei+1;
ei=1;sei=0;in=4'bl010;
repeat(4)
#10sei=sei+1;
end
endmodule
//74HC85代码
moduleHC85(DateA,DateB,Cas,Q);
input[3:
0]DateA,DateB;
input[2:
0]Cas;
outputreg[2:
0]Q;
intergerI;
always@(DateAorDateBorCas)
begin
if(DateA==DateB)
begin
if(Cas[l])Q=3'bOlO;
elseif(Cas==3'b000)Q=3'blOl;
elseif(Cas==3'bl01)Q=3'b000;
elseQ=Cas;
end
else
begin
for(I=0;I<4;I=I+l)
if(DateA[I]>DateB[I])Q=3'blOO;
elseif(DateA[I]end
endmodule
//74HC85测试平台代码
//
'timescaleIns/Ins
moduletest_85;
reg[3:
0]a,b;
reg[2:
0]cas;
wire[2:
0]res;
HC85u(a,b,cas,res);
taskcascade_input;
begin
#0cas=0;#10cas=1;#10cas=3'blOO;#10cas=
3'blOl;
#10cas=3'bOlO;#10cas=3'bOll;#10cas=3'bllO;#10cas=3'blll;#10;
end
endtask
initial
begin
a=4d9;
b=a;cascade_input();
b=4rd7;cascade_input();
end
endmodule
//74HC283代码
//
moduleHC283(DateA,DateB,Cin,Sum,Cout);
input[3:
0]DateA,DateB;
inputCin;
output[3:
0]Sum;
outputCout;
reg[4:
0]Buf;
assign{Cout,Sum}=Buf;
always@(DateAorDateBorCin)
Buf=DateA+DateB+Cin+5'dO;
endmodule
//74HC283测试平台代码
//
'timescaleIns/Ins
moduletest_283;
reg[3:
0]a,b;
regin;
wireout;
intergerI;
HC283u(a,b,in,sum,out);taskaccumulate;
begin
a=4'b0100;
for(I=0;I<16;I=I+l)
begin
b=I;#10;
end
endtask
initial
begin
in=0;accumulate();
in=l;accumulate();
end
endmodule
//74HC4511代码
moduleHC451l(DateOut,Datein,LE,BL_N,LT_N);
output[7:
0]DateOut;
input[3:
0]DateIn;
inputLE,BL_N,LT_N;
reg[7:
0]Buf;
assignDateOut=Buf;
always@(DateInorLEorBL_NorLT_N)begin
辻(!
LT_N)Buf=8'bl1111111;
elseif(!
BL_N)Buf=8'bOOOOOOO;
elseif(LE)Buf=Buf;
else
case(Dateln)
4,dO:
Euf=S'bOOllllll;
4'dl:
Buf=8'bOOOOOUO;
4,d2:
Euf=8'bOlOllOU;
4'd3:
Buf=8'bOlOOUU;
4*d4:
Buf=8'bOllOOUO;
4,d5:
Buf=8'bOllOUOl;
4'd6:
Buf=8'bOlllUOl;
4'd7:
Buf=8'bOOOOOUl;
4'd8:
Buf=S'bOlllllll;
4'd9:
Buf=8'bOllOUll;
4'ha:
Buf=8'bOlllOlll;
4'hb:
Buf=8'bOlllllOO;
4'hc:
Buf=8'bOOlllOOl;
4'hd:
Buf=8'b01011U0;
4'he:
Buf=8'bOllllOOl;
4'hf:
Buf=8'bOlllOOOl;default:
;
endcase
end
2、第一次仿真结果〔任选一个模块,请注明〕
74HC148
3、综合结果
4.第二次仿真结果〔综合后〕。
答复输出信号是否有延迟,延迟时间约为多
少?
7
A^5t_t48/ei
0
i
AesLt46iin
11111111
fill..1111..
:
ll..(ill..[:
!
:
...
10】..:
Dll..
111..Xlll.
111...Illi..till...)116..
ioi..ton..
111...
一丄[7]
StL
i
1
一,⑹
StI
i
厂
d⑸
StL
i
11
-1
,HJ
Stl
i
n厂
L1
"同
StL
1
"i―r
r
>
(2)
Stl
1
i
—“[1]
Stl
11
1
一'(01
Stl
11
1
Ae5t_l48/eo
sto
J
1
Aest_i48/gs
SIL
J
1
0’
/test_L48/out
111
Jill
inhie
101Xioo[onfo:
o
jG1XXG
Ill
由
Stl
J
1
」[1]
Stl
J
厂
"[0]
Stl
j
II1
[
Now
1000ns
•1•]H5
iiii■i1i
50ns
•
1
■iiiii
100r®
11111
i1iiii
150H5
输出信号有延迟,延迟时间约为
5、第三次仿真结果〔布局布线后〕。
答复输出信号是否有延迟,延迟时间约为多少?
分析是否有出现竞争冒险。