基于Libero的数字逻辑设计仿真及验证实验分析报告.docx
- 文档编号:9166958
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:48
- 大小:521.34KB
基于Libero的数字逻辑设计仿真及验证实验分析报告.docx
《基于Libero的数字逻辑设计仿真及验证实验分析报告.docx》由会员分享,可在线阅读,更多相关《基于Libero的数字逻辑设计仿真及验证实验分析报告.docx(48页珍藏版)》请在冰豆网上搜索。
基于Libero的数字逻辑设计仿真及验证实验分析报告
基于Libero的数字逻辑设计仿真及验证实验报告
————————————————————————————————作者:
————————————————————————————————日期:
___计算机__学院计算机科学与技术专业班、学号
姓名协作者______________教师评定_________________
实验题目_________基于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[3:
0]A,B;
output[3:
0]Y;
assignY=~(A&B);
endmodule
//74HC00测试平台代码
//test_00.v
`timescale1ns/1ns
moduletest_00;
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
#10b=b<<1;//0100
#10b=b<<1;//1000
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[3:
0]A,B;
output[3:
0]Y;
assignY=~(A|B);
endmodule
//74HC02测试平台代码
//test_02.v
`timescale1ns/1ns
moduletest_02;
reg[3:
0]a,b,c;
wire[3:
0]y;
HC02u(a,b,y);
initial
begin
a=4'b1111;c=4'b0001;
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
//74HC04代码-非
//74HC04.v
moduleHC04(A,Y);
input[3:
0]A;
output[3:
0]Y;
assignY=~A;
endmodule
//74HC04测试平台代码
//test_04.v
`timescale1ns/1ns
moduletest_04;
reg[3:
0]a;
wire[3:
0]y;
HC04u(a,y);
initial
begin
a=4'b0001;
#10a=a<<1;
#10a=a<<1;
#10a=a<<1;
end
endmodule
//74HC08代码-与
//74HC08.v
moduleHC08(A,B,Y);
input[3:
0]A,B;
output[3:
0]Y;
assignY=A&B;
endmodule
//74HC08测试平台代码
//test_08.v
`timescale1ns/1ns
moduletest_08;
reg[3:
0]a,b;
wire[3:
0]y;
HC00u(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
//74HC32代码-或
//74HC32.v
moduleHC32(A,B,Y);
input[3:
0]A,B;
output[3:
0]Y;
assignY=A|B;
endmodule
//74HC32测试平台代码
//test_32.v
`timescale1ns/1ns
moduletest_32;
reg[3:
0]a,b,c;
wire[3:
0]y;
HC02u(a,b,y);
initial
begin
a=4'b1111;c=4'b0001;
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=A^B;
endmodule
//74HC86测试平台代码
//test_86.v
`timescale1ns/1ns
moduletest_86;
reg[3:
0]a,b;
wire[3:
0]y;
HC86u(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、第二次仿真结果(综合后)(截图)。
回答输出信号是否有延迟,延迟时间约为多少?
输出信号有延迟,延迟时间约为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”,B数为“1001”。
若两数相等,需考虑级联输入(级联输入的各种取值情况均需包括);若两数不等,则需增加一对取值情况,验证A、B相等时的比较结果。
5、74HC4511设计成扩展型的,即能显示数字0~9、字母a~f。
6、提交针对74HC148、74HC138、74HC153、74HC85、74HC283、74HC4511(任选一个)的综合结果,以及相应的仿真结果。
四、实验结果和数据处理
1、所有模块及测试平台代码清单
//74HC148代码
//74HC148.v
moduleHC148(EI,In,Out,EO,GS);
inputEI;
input[7:
0]In;
output[2:
0]Out;
outputEO,GS;
reg[2:
0]Out;
regEO,GS;
intergerI;
always@(EIorIn)
if(EI)
begin
Out=3'b111;EO=1;GS=1;
end
else
if(In==8'b11111111)
begin
Out=3'b111;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测试平台代码
//test_148.v
`timescale1ns/1ns
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
begin
ei=1;turn=8'b1;
repeat(8)
#10turn=turn<<1;
ei=0;turn=8'b1;
repeat(8)
#10turn=turn<<1;
end
endmodule
//74HC138代码
//74HC138.v
moduledecoder3_8_1(DataIn,Enable,Eq);
input[2:
0]DataIn;
inputEnable;
output[7:
0]Eq;
reg[7:
0]Eq;
wire[2:
0]DataIn;
integerI;
always@(DataInorEnable)
begin
if(Enable)
Eq=0;
else
for(I=0;I<=7;I=I+1)
if(DataIn==I)
Eq[I]=1;
else
Eq[I]=0;
end
endmodule
//74HC138测试平台代码
//test_138.v
`timescale1ns/1ns
moduletest_138;
wire[2:
0]out;
reg[7:
0]in;
reg[2:
0]ei;
HC138u(out,in,ei);
taskcircle;
begin
in=0;
repeat(8)
#10in=in+1;
end
endtask
initial
begin
ei=1;circle();
ei=0;circle();
ei=2;
repeat(6)
begin
circle();
#10ei=ei+1;
end
end
endmodule
//74HC153代码
//74HC153.v
moduleHC153(DateOut,DateIn,Sel,Enable);
input[3:
0]DateIn;
input[1:
0]Sel;
inputEnable;
outputregDateOut;
always@(EnableorSelorDateIn)
if(Enable)DateOut=0;
elseDateOut=DateIn[Sel];
endmodule
//74HC153测试平台代码
//test_153.v
`timescale1ns/1ns
moduletest_153();
wireout;
reg[3:
0]in;
reg[1:
0]sel;
regei;
HC153u(out,in,sel,ei);
initial
begin
ei=0;sel=0;in=4'b1010;
repeat(4)
#10sel=sel+1;
ei=1;sel=0;in=4'b1010;
repeat(4)
#10sel=sel+1;
end
endmodule
//74HC85代码
//74HC85.v
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[1])Q=3'b010;
elseif(Cas==3'b000)Q=3'b101;
elseif(Cas==3'b101)Q=3'b000;
elseQ=Cas;
end
else
begin
for(I=0;I<4;I=I+1)
if(DateA[I]>DateB[I])Q=3'b100;
elseif(DateA[I] end end endmodule //74HC85测试平台代码 //test_85.v `timescale1ns/1ns 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'b100;#10cas=3'b101; #10cas=3'b010;#10cas=3'b011;#10cas=3'b110;#10cas=3'b111;#10; end endtask initial begin a=4'd9; b=a;cascade_input(); b=4'd7;cascade_input(); end endmodule //74HC283代码 //74HC283.v 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'd0; endmodule //74HC283测试平台代码 //test_283.v `timescale1ns/1ns moduletest_283; reg[3: 0]a,b; regin; wire[3: 0]sum; wireout; intergerI; HC283u(a,b,in,sum,out); taskaccumulate; begin a=4'b0100; for(I=0;I<16;I=I+1) begin b=I;#10; end endtask initial begin in=0;accumulate(); in=1;accumulate(); end endmodule //74HC4511代码 //74HC4511.v moduleHC4511(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 if(! LT_N)Buf=8'b11111111; elseif(! BL_N)Buf=8'b0000000; elseif(LE)Buf=Buf; else case(DateIn) 4'd0: Buf=8'b00111111; 4'd1: Buf=8'b00000110; 4'd2: Buf=8'b01011011; 4'd3: Buf=8'b01001111; 4'd4: Buf=8'b01100110; 4'd5: Buf=8'b01101101; 4'd6: Buf=8'b01111101; 4'd7: Buf=8'b00000111; 4'd8: Buf=8'b01111111; 4'd9: Buf=8'b01101111; 4'ha: Buf=8'b01110111; 4'hb: Buf=8'b01111100; 4'hc: Buf=8'b00111001; 4'hd: Buf=8'b01011110; 4'he: Buf=8'b01111001; 4'hf: Buf=8'b01110001; default: ; endcase end 2、第一次仿真结果(任选一个模块,请注明) 74HC148 3、综合结果 4、第二次仿真结果(综合后)。 回答输出信号是否有延迟,延迟时间约为多少? 输出信号有延迟,延迟时间约为0.5ns 5、第三次仿真结果(布局布线后)。 回答输出信号是否有延迟,延迟时间约为多少? 分析是否有出现竞争冒险。 输出信号有延迟,延迟时间约为5.2ns,出现了竞争冒险。 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、所有模块及测试平台代码清单 //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: Buf<=2'b10; 2: Buf<=2'b01; default: Buf<={D,~D}; endcase endmodule //74HC74测试平台代码 //test_74.v `timescale1ns/1ns moduletest_74; regs,r,clk,d; wireq,qn; HC74u(s,r,clk,d,q,qn); taskclock; repeat(10) begin d=0;#3;d=1;#3; end endtask always begin clk=0;#2;clk=1;#2; end initial begin s=0;r=1;clock; #5s=1;r=0;clock; #5s=0;r=0;clock; #5s=1;r=1;clock; end endmodule //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 数字 逻辑设计 仿真 验证 实验 分析 报告