基于libero的数字逻辑设计仿真及验证实验实验报告实验4到8.docx
- 文档编号:5943233
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:28
- 大小:500.64KB
基于libero的数字逻辑设计仿真及验证实验实验报告实验4到8.docx
《基于libero的数字逻辑设计仿真及验证实验实验报告实验4到8.docx》由会员分享,可在线阅读,更多相关《基于libero的数字逻辑设计仿真及验证实验实验报告实验4到8.docx(28页珍藏版)》请在冰豆网上搜索。
基于libero的数字逻辑设计仿真及验证实验实验报告实验4到8
___计算机__学院______________专业_____班________组、学号______
姓名______________协作者______________教师评定_________________
实验题目_________基于Libero的数字逻辑设计仿真及验证实验_________
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(A,B,Y);
input[4:
1]A,B;
output[4:
1]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代码-或非
//74HC02.v
moduleHC02(A,B,Y);
input[4:
1]A,B;
output[4:
1]Y;
assignY=~(A|B);
endmodule
//74HC02测试平台代码
//testbench.v
`timescale1ns/1ns
moduletestbench();
reg[4:
1]a,b;
wire[4:
1]y;
HC02u1(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
//74HC04代码-非
//74HC04.v
moduleHC04(A,Y);
input[4:
1]A;
output[4:
1]Y;
assignY=~A;
endmodule
//74HC04测试平台代码
//testbench.v
`timescale1ns/1ns
moduletestbench();
reg[2:
1]a;
wire[2:
1]y;
HC04u4(a,y);
initial
begin
a=2'b01;
#10a=2'b10;
#10a=2'b11;
#10a=2'b00;
end
endmodule
//74HC08代码-与
moduleHC08(A,B,Y);
input[4:
1]A,B;
output[4:
1]Y;
assignY=A&B;//与
endmodule
//74HC08测试平台代码
`timescale1ns/1ns
moduletest08();
reg[4:
1]a,b;
wire[4:
1]y;
HC08u8(a,b,y);
initial
begin
a=4'b0000;b=4'b0001;
#10b=b<<1;
#10b=b<<1;
#10b=b<<1;
#10
a=4'b1111;b=4'b0001;
#10b=b<<1;
#10b=b<<1;
#10b=b<<1;
end
endmodule
//74HC32代码-或
moduleHC32(A,B,Y);
input[4:
1]A,B;
output[4:
1]Y;
assignY=A|B;//或
endmodule
//74HC32测试平台代码
`timescale1ns/1ns
moduletest32();
reg[4:
1]a,b;
wire[4:
1]y;
HC32u32(a,b,y);
initial
begin
a=4'b0000;b=4'b0001;
#10b=b<<1;
#10b=b<<1;
#10b=b<<1;
#10
a=4'b1111;b=4'b0001;
#10b=b<<1;
#10b=b<<1;
#10b=b<<1;
end
endmodule
//74HC86代码-异或
moduleHC86(A,B,Y);
input[4:
1]A,B;
output[4:
1]Y;
assignY=A&(~B)|(~A&B);//异或
endmodule
//74HC86测试平台代码
`timescale1ns/1ns
moduletest86();
reg[4:
1]a,b;
wire[4:
1]y;
HC86u86(a,b,y);
initial
begin
a=4'b0000;b=4'b0001;
#10b=b<<1;
#10b=b<<1;
#10b=b<<1;
#10
a=4'b1111;b=4'b0001;
#10b=b<<1;
#10b=b<<1;
#10b=b<<1;
end
endmodule
2、第一次仿真结果(任选一个门,请注明,插入截图,下同)。
(将波形窗口背景设为白色,调整窗口至合适大小,使波形能完整显示,对窗口截图。
后面实验中的仿真使用相同方法处理)
3、综合结果(截图)。
(将相关窗口调至合适大小,使RTL图能完整显示,对窗口截图,后面实验中的综合使用相同方法处理)
4、第二次仿真结果(综合后)(截图)。
回答输出信号是否有延迟,延迟时间约为多少?
有延迟300ps
5、第三次仿真结果(布局布线后)(截图)。
回答输出信号是否有延迟,延迟时间约为多少?
分析是否有出现竞争冒险。
延迟约4000PS
有竞争冒险
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、所有模块及测试平台代码清单
//74HC148代码
//HC148.v
moduleencoder8_3_1(DataIn,EO,Dataout,EI,GS);
input[7:
0]DataIn;
inputEI;
outputEO;
output[2:
0]Dataout;
outputGS;
reg[2:
0]Dataout;
regEO;
regGS;
integerI;
always@(DataInorEI)
begin
if(EI)
begin
Dataout=7;
EO=1;
GS=1;
end
elseif(DataIn==8'b11111111)
begin
Dataout=7;
EO=0;
GS=1;
end
else
for(I=0;I<8;I=I+1)
begin
if(~DataIn[I])
begin
Dataout=-1;
EO=1;
GS=0;
end
end
end
endmodule
//74HC148测试平台代码
`timescale1ns/1ns
moduletestbench;
reg[7:
0]in;
regEI;
wireGS;
wire[2:
0]out;
wireEO;
initial
begin
EI=0;
in='b00000001;
repeat(9)
#20in=in<<1;
//每循环1次,in左移1位,如0000001将移动为0000010
end
encoder8_3_1testbench_8_3encoder(in,EO,out,EI,GS);
endmodule
//74HC138代码
//74HC138测试平台代码
//74HC153代码
//74HC153测试平台代码
//74HC85代码
//74HC85测试平台代码
//74HC283代码
//74HC283测试平台代码
//74HC4511代码
//74HC4511.v
moduleHC4511(A,Seg,LT_N,BI_N,LE,DIG4);
inputLT_N,BI_N,LE;
input[3:
0]A;
output[7:
0]Seg;
outputDIG4;
reg[7:
0]SM_8S;
assignSeg=SM_8S;
assignDIG4=0;
always@(AorLT_NorBI_NorLE)
begin
if(!
LT_N)SM_8S=8'b11111111;//根据4511真值表写出
elseif(!
BI_N)SM_8S=8'b00000000;
elseif(LE)SM_8S=SM_8S;
else
case(A)
4'd0:
SM_8S=8'b00111111;//3f
4'd1:
SM_8S=8'b00000110;//06
4'd2:
SM_8S=8'b01011011;//5b
4'd3:
SM_8S=8'b01001111;//4f
4'd4:
SM_8S=8'b01100110;//66
4'd5:
SM_8S=8'b01101101;//6d
4'd6:
SM_8S=8'b01111101;//7d
4'd7:
SM_8S=8'b00000111;//07
4'd8:
SM_8S=8'b01111111;//7f
4'd9:
SM_8S=8'b01101111;//6f
4'd10:
SM_8S=8'b01110111;//77
4'd11:
SM_8S=8'b01111100;//7c
4'd12:
SM_8S=8'b00111001;//39
4'd13:
SM_8S=8'b01011110;//5e
4'd14:
SM_8S=8'b01111001;//79
4'd15:
SM_8S=8'b01110001;//71
default:
;
endcase
end
endmodule
//74HC4511测试平台代码
`timescale1ns/10ps
moduletestbench;
rega,b,c;
reg[3:
0]in;
reg[7:
0]out;
HC4511decoder(LT_N,BI_N,LE,A,Seg);
initial
begin
in=0;
repeat(14)
#20in=$random;
end
initial
begin
a=0;b=0;c=0;
#40c=1;
#40b=1;
#40c=0;
#40a=1;
#40b=0;
#40c=1;
#40b=1;
end
endmodule
2、第一次仿真结果(任选一个模块,请注明)
74HC148
3、综合结果
4、第二次仿真结果(综合后)。
回答输出信号是否有延迟,延迟时间约为多少?
延迟为500ps
5、第三次仿真结果(布局布线后)。
回答输出信号是否有延迟,延迟时间约为多少?
分析是否有出现竞争冒险。
延迟为7700ps
有竞争冒险
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、所有模块及测试平台代码清单
四、实验结果和数据处理
1、所有模块及测试平台代码清单
//74HC74代码
moduleHC74(Q1,Q2,D1,D2,Clk1,Clk2,Rst1,Rst2,Set1,Set2);
inputD1,D2,Clk1,Clk2,Rst1,Rst2,Set1,Set2;
outputQ1,Q2;
regQ1,Q2;
always@(posedgeClk1ornegedgeRst1ornegedgeSet1)
begin
if(!
Rst1&&Set1)
Q1<=0;
elseif(Set1&&Rst1)
Q1<=D1;
elseQ1<=1;
end
always@(posedgeClk2ornegedgeRst2ornegedgeSet2)
begin
if(!
Rst2&&Set2)
Q2<=0;
elseif(Set2&&Rst2)
Q2<=D2;
elseQ2<=1;
end
endmodule
//74HC74测试平台代码
`timescale1ns/1ns
moduletestHC74;
regD1,D2,Clk1,Clk2,Rst1,Rst2,Set1,Set2;
wireQ1,Q2;
HC74u74(Q1,Q2,D1,D2,Clk1,Clk2,Rst1,Rst2,Set1,Set2);
parameterclock_period=20;
always#(clock_period/2)Clk1=~Clk1;
always#(clock_period/2)Clk2=~Clk2;
initial
begin
D1=0;
D2=0;
Clk1=0;
Clk2=1;
repeat(20)
begin
#20;
D1=$random;
D2=$random;
end
end
initial
begin
Rst1=0;
Rst2=0;
Set2=0;
Set1=0;
repeat(20)
begin
#20;
Rst1=$random;
Rst2=$random;
Set1=$random;
Set2=$random;
end
end
endmodule
//74HC112代码
moduleHC112(SD,RD,CLK,J,K,Q,NQ);
inputSD,RD,CLK,J,K;
outputQ,NQ;
regQ;
assignNQ=~Q;
always@(SDorRDorJorK)
if(~SD&&RD)
Q=1;
elseif(SD&&~RD)
Q=0;
elseif(~SD&&~RD)
Q=1;
always@(negedgeCLK)
if(SD&&RD)
if(~J&&~K)
Q=Q;
elseif(~J&&K)
Q=0;
elseif(J&&~K)
Q=1;
else
Q=~Q;
endmodule
//74HC112测试平台代码
`timescale1ns/1ns
moduletest74HC112;
regSD,RD,CLK,J,K;
wireQ,NQ;
parameterclock=20;
HC112(SD,RD,CLK,J,K,Q,NQ);
initial
begin
CLK=0;
#400$finish;
end
always#(clock/2)CLK=~CLK;
initial
begin
SD<=0;RD<=1;J<=0;K<=0;
#10SD<=1;RD<=0;J<=1;
#10SD<=0;RD<=0;K<=1;
#10SD<=1;RD<=1;J<=0;K<=0;
#10K<=1;
#10J<=1;
#10K<=0;
end
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;
else
qaux<=qaux;
end
always@(posedgeCP)
begin
if(qaux==4'b1111)
TC=1'b1;
else
TC=1'b0;
end
assignQn=qaux;
endmodule
//74HC161测试平台代码
`timescale1ns/10ps
moduletest74HC161;
regcp,cep,cet,mr,pe;
reg[3:
0]dn;
wire[3:
0]qn;
wiretc;
parameterclock=20;
always#(clock/2)cp=~cp;
HC161u1(cp,cep,cet,mr,pe,dn,qn,tc);
initial
begin
cp<=0;
mr<=0;
pe<=0;
cet<=1;
cep<=1;
#10mr=1;
#10dn=$random;
#20pe=1;
repeat(3)
#10dn=$random;
#10cet=0;
repeat
(2)
#10dn=$random;
#5cet=1;
#5cep=0;
repeat
(2)
#10dn=$random;
end
initial
#400$finish;
endmodule
//74HC194代码
moduleHC194(MR,S1,S0,CP,DSR,DSL,D,Q);
inputMR,S1,S0,CP,DSR,DSL;
input[3:
0]D;
output[3:
0]Q;
reg[3:
0]Qaux;
always@(MR)
if(~MR)Qaux=0;
always@(S1orS0)
if(~S1&&~S0)Qaux=Q;
always@(posedgeCP)
if(~S1&&S0)Qaux={Qaux[2:
0],DSR};
elseif(S1&&~S0)Qaux={DSL,Qaux[3:
1]};
elseif(S1&&S0)Qaux=D;
assignQ=Qaux;
endmodule
//74HC194测试平台代码
`timescale1ns/1ns
moduletest74HC194;
regMR,S1,S0,CP,DSR,DSL;
reg[3:
0]D;
wire[3:
0]Q;
parameterclock=20;
HC194u(MR,S1,S0,CP,DSR,DSL,D,Q);
initial
begin
CP=0;
#400$finish;
end
always#(clock/2)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 libero 数字 逻辑设计 仿真 验证 实验 报告