《基于Libero的数字逻辑设计仿真及验证实验实验报告(实验4到8)YMT(18页).docx》由会员分享,可在线阅读,更多相关《基于Libero的数字逻辑设计仿真及验证实验实验报告(实验4到8)YMT(18页).docx(18页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、-基于Libero的数字逻辑设计仿真及验证实验实验报告(实验4到8)YMT-第 16 页_计算机_学院_专业_班_组、学号_姓名_协作者_教师评定_实验题目_基于Libero的数字逻辑设计仿真及验证实验_1、 熟悉EDA工具的使用;仿真基本门电路。2、 仿真组合逻辑电路。3、 仿真时序逻辑电路。4、 基本门电路、组合电路和时序电路的程序烧录及验证。5、 数字逻辑综合设计仿真及验证。实验报告1、基本门电路一、实验目的1、了解基于Verilog的基本门电路的设计及其验证。2、熟悉利用EDA工具进行设计及仿真的流程。3、学习针对实际门电路芯片74HC00、74HC02、74HC04、74HC08、7
2、4HC32、74HC86进行VerilogHDL设计的方法。二、实验环境Libero仿真软件。三、实验内容1、掌握Libero软件的使用方法。2、进行针对74系列基本门电路的设计,并完成相应的仿真实验。3、参考教材中相应章节的设计代码、测试平台代码(可自行编程),完成74HC00、74HC02、74HC04、74HC08、74HC32、74HC86相应的设计、综合及仿真。4、提交针对74HC00、74HC02、74HC04、74HC08、74HC32、74HC86(任选一个)的综合结果,以及相应的仿真结果。四、实验结果和数据处理1、所有模块及测试平台代码清单/74HC00代码-与非/ 74HC
3、00.vmodule HC00(A,B,Y);input 4:1A,B;output 4:1Y;assign Y=(A&B);endmodule/74HC00测试平台代码/ testbench.vtimescale 1ns/1nsmoduletestbench ();reg 4:1a,b;wire 4:1y;HC00 u1(a,b,y);initialbegina=4b0000; b=4b0001;#10 b=b1;#10 b=b1;#10 b=b1;a=4b1111; b=4b0001;#10 b=b1;#10 b=b1;#10 b=b1;endendmodule/74HC02代码-或非/
4、74HC02.vmodule HC02(A,B,Y);input 4:1A,B;output 4:1Y;assign Y=(A|B);endmodule/74HC02测试平台代码/ testbench.vtimescale 1ns/1nsmoduletestbench ();reg 4:1a,b;wire 4:1y;HC02 u1(a,b,y);initialbegina=4b0000; b=4b0001;#10 b=b1;#10 b=b1;#10 b=b1;a=4b1111; b=4b0001;#10 b=b1;#10 b=b1;#10 b=b1;endendmodule/74HC04代码-
5、非/ 74HC04.vmodule HC04(A,Y);input 4:1A;output 4:1Y;assign Y=A;endmodule/74HC04测试平台代码/ testbench.vtimescale 1ns/1nsmodule testbench();reg 2:1a;wire 2:1y;HC04 u4(a,y);initialbegina=2b01;#10 a=2b10;#10 a=2b11;#10 a=2b00;endendmodule/74HC08代码-与module HC08(A,B,Y);input 4:1A,B;output 4:1Y;assign Y=A&B;/与e
6、ndmodule/74HC08测试平台代码timescale 1ns/1nsmodule test08();reg 4:1a,b;wire 4:1y;HC08 u8(a,b,y);initialbegina=4b0000; b=4b0001;#10 b=b1;#10 b=b1;#10 b=b1;#10a=4b1111; b=4b0001;#10 b=b1;#10 b=b1;#10 b=b1;endendmodule/74HC32代码-或module HC32(A,B,Y);input 4:1A,B;output 4:1Y;assign Y=A|B;/或endmodule/74HC32测试平台代
7、码timescale 1ns/1nsmodule test32();reg 4:1a,b;wire 4:1y;HC32 u32(a,b,y);initialbegina=4b0000; b=4b0001;#10 b=b1;#10 b=b1;#10 b=b1;#10a=4b1111; b=4b0001;#10 b=b1;#10 b=b1;#10 b=b1;endendmodule/74HC86代码-异或module HC86(A,B,Y);input 4:1A,B;output 4:1Y;assign Y=A&(B)|(A&B);/异或endmodule/74HC86测试平台代码timescal
8、e 1ns/1nsmodule test86();reg 4:1a,b;wire 4:1y;HC86 u86(a,b,y);initialbegina=4b0000; b=4b0001;#10 b=b1;#10 b=b1;#10 b=b1;#10a=4b1111; b=4b0001;#10 b=b1;#10 b=b1;#10 b=b1;endendmodule2、第一次仿真结果(任选一个门,请注明,插入截图,下同)。(将波形窗口背景设为白色,调整窗口至合适大小,使波形能完整显示,对窗口截图。后面实验中的仿真使用相同方法处理)3、综合结果(截图)。(将相关窗口调至合适大小,使RTL图能完整显示,
9、对窗口截图,后面实验中的综合使用相同方法处理)4、第二次仿真结果(综合后)(截图)。回答输出信号是否有延迟,延迟时间约为多少?有延迟 300ps5、第三次仿真结果(布局布线后)(截图)。回答输出信号是否有延迟,延迟时间约为多少?分析是否有出现竞争冒险。延迟约4000PS有竞争冒险2、组合逻辑电路一、实验目的1、了解基于Verilog的组合逻辑电路的设计及其验证。2、熟悉利用EDA工具进行设计及仿真的流程。3、学习针对实际组合逻辑电路芯片74HC148、74HC138、74HC153、74HC85、74HC283、74HC4511进行VerilogHDL设计的方法。二、实验环境Libero仿真软
10、件。三、实验内容1、掌握Libero软件的使用方法。2、进行针对74系列基本组合逻辑电路的设计,并完成相应的仿真实验。3、参考教材中相应章节的设计代码、测试平台代码(可自行编程),完成74HC148、74HC138、74HC153、74HC85、74HC283、74HC4511相应的设计、综合及仿真。4、74HC85测试平台的测试数据要求:进行比较的A、B两数,分别为本人学号的末两位,如“89”,则A数为“1000”,B数为“1001”。若两数相等,需考虑级联输入(级联输入的各种取值情况均需包括);若两数不等,则需增加一对取值情况,验证A、B相等时的比较结果。5、74HC4511设计成扩展型的
11、,即能显示数字09、字母af。6、提交针对74HC148、74HC138、74HC153、74HC85、74HC283、74HC4511(任选一个)的综合结果,以及相应的仿真结果。四、实验结果和数据处理1、所有模块及测试平台代码清单/74HC148代码/ HC148.vmodule encoder8_3_1(DataIn,EO,Dataout,EI,GS); input 7:0DataIn; input EI; output EO; output 2:0Dataout; output GS; reg 2:0Dataout; reg EO; reg GS; integer I; always(D
12、ataIn or EI) begin if(EI) begin Dataout=7; EO=1; GS=1; end else if(DataIn=8b11111111) begin Dataout=7; EO=0; GS=1; end else for(I=0;I8;I=I+1) begin if(DataInI) begin Dataout=-1; EO=1; GS=0; end end end endmodule/74HC148测试平台代码 timescale 1ns/1ns module testbench; reg7:0 in; reg EI; wire GS; wire2:0out
13、; wire EO; initial begin EI=0; in=b00000001; repeat(9) #20 in=in1; /每循环1次,in左移1位,如0000001将移动为0000010 end encoder8_3_1 testbench_8_3encoder(in,EO,out,EI,GS); endmodule/74HC138代码/74HC138测试平台代码/74HC153代码/74HC153测试平台代码/74HC85代码/74HC85测试平台代码/74HC283代码/74HC283测试平台代码/74HC4511代码/ 74HC4511.vmodule HC4511(A,S
14、eg,LT_N,BI_N,LE,DIG4); input LT_N,BI_N,LE; input3:0A; output7:0Seg; output DIG4; reg 7:0SM_8S; assign Seg=SM_8S; assign DIG4=0; always (A or LT_N or BI_N or LE) begin if(!LT_N)SM_8S=8b11111111; /根据4511真值表写出 else if(!BI_N)SM_8S=8b00000000; else if(LE)SM_8S=SM_8S; else case(A) 4d0:SM_8S=8b00111111; /3
15、f 4d1:SM_8S=8b00000110; /06 4d2:SM_8S=8b01011011; /5b 4d3:SM_8S=8b01001111; /4f 4d4:SM_8S=8b01100110; /66 4d5:SM_8S=8b01101101; /6d 4d6:SM_8S=8b01111101; /7d 4d7:SM_8S=8b00000111; /07 4d8:SM_8S=8b01111111; /7f 4d9:SM_8S=8b01101111; /6f 4d10:SM_8S=8b01110111; /77 4d11:SM_8S=8b01111100; /7c 4d12:SM_8S
16、=8b00111001; /39 4d13:SM_8S=8b01011110; /5e 4d14:SM_8S=8b01111001; /79 4d15:SM_8S=8b01110001; /71 default:; endcase endendmodule/74HC4511测试平台代码timescale 1ns/10ps module testbench; reg a,b,c; reg 3:0in; reg 7:0out; HC4511 decoder(LT_N,BI_N,LE, A,Seg); initial begin in=0; repeat(14) #20 in=$random; en
17、d initial begin a=0;b=0;c=0; #40 c=1; #40 b=1; #40 c=0; #40 a=1; #40 b=0; #40 c=1; #40 b=1; end endmodule2、第一次仿真结果(任选一个模块,请注明)74HC1483、综合结果4、第二次仿真结果(综合后)。回答输出信号是否有延迟,延迟时间约为多少?延迟为500ps5、第三次仿真结果(布局布线后)。回答输出信号是否有延迟,延迟时间约为多少?分析是否有出现竞争冒险。延迟为7700ps有竞争冒险3、时序逻辑电路一、实验目的1、了解基于Verilog的时序逻辑电路的设计及其验证。2、熟悉利用EDA工具
18、进行设计及仿真的流程。3、学习针对实际时序逻辑电路芯片74HC74、74HC112、74HC194、74HC161进行VerilogHDL设计的方法。二、实验环境Libero仿真软件。三、实验内容1、熟练掌握Libero软件的使用方法。2、进行针对74系列时序逻辑电路的设计,并完成相应的仿真实验。3、参考教材中相应章节的设计代码、测试平台代码(可自行编程),完成74HC74、74HC112、74HC161、74HC194相应的设计、综合及仿真。4、提交针对74HC74、74HC112、74HC161、74HC194(任选一个)的综合结果,以及相应的仿真结果。四、实验结果和数据处理1、所有模块及
19、测试平台代码清单四、实验结果和数据处理1、所有模块及测试平台代码清单/74HC74代码module HC74(Q1,Q2,D1,D2,Clk1,Clk2,Rst1,Rst2,Set1,Set2);input D1,D2,Clk1,Clk2,Rst1,Rst2,Set1,Set2;output Q1,Q2;reg Q1,Q2;always (posedge Clk1 or negedge Rst1 or negedge Set1)beginif(!Rst1 & Set1)Q1 = 0;else if(Set1 & Rst1)Q1 = D1; else Q1 = 1;endalways (pose
20、dge Clk2 or negedge Rst2 or negedge Set2)beginif(!Rst2 & Set2)Q2 = 0;else if(Set2 & Rst2)Q2 = D2; else Q2 = 1;endendmodule /74HC74测试平台代码timescale 1ns/1nsmodule testHC74;reg D1,D2,Clk1,Clk2,Rst1,Rst2,Set1,Set2;wire Q1,Q2;HC74 u74(Q1,Q2,D1,D2,Clk1,Clk2,Rst1,Rst2,Set1,Set2);parameter clock_period = 20;
21、always #(clock_period / 2) Clk1 = Clk1;always #(clock_period / 2) Clk2 = Clk2;initialbegin D1 = 0; D2 = 0;Clk1 =0;Clk2 = 1;repeat(20)begin#20;D1 = $random; D2 = $random;endendinitialbeginRst1 = 0; Rst2 = 0; Set2 = 0;Set1 = 0;repeat(20)begin#20; Rst1 = $random; Rst2 = $random;Set1 = $random; Set2 = $
22、random;endendendmodule /74HC112代码module HC112(SD,RD,CLK,J,K,Q,NQ); input SD,RD,CLK,J,K; output Q,NQ; reg Q; assign NQ=Q; always (SD or RD or J or K) if(SD&RD) Q=1; else if(SD&RD) Q=0; else if(SD&RD) Q=1; always (negedge CLK) if(SD&RD) if(J&K) Q=Q; else if(J&K) Q=0; else if(J&K) Q=1; else Q=Q;endmodu
23、le/74HC112测试平台代码timescale 1ns/1nsmodule test74HC112; reg SD,RD,CLK,J,K; wire Q,NQ; parameter clock=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; #10 SD=1;RD=0;J=1; #10 SD=0;RD=0;K=1; #10 SD=1;RD=1;J=0;K=0; #10 K=1;
24、#10 J=1; #10 K=0; endendmodule/74HC161代码module HC161(CP,CEP,CET,MRN,PEN,Dn,Qn,TC); input CP; input CEP,CET; output 3:0 Qn; input MRN,PEN; input 3:0 Dn; output TC; reg 3:0 qaux; reg TC; always (posedge CP) begin if(!MRN) qaux=4b0000; else if(!PEN) qaux=Dn; else if(CEP&CET) qaux=qaux+1; else qaux=qaux
25、; end always (posedge CP) begin if(qaux=4b1111) TC=1b1; else TC=1b0; end assign Qn=qaux;endmodule/74HC161测试平台代码timescale 1ns/10psmodule test74HC161; reg cp,cep,cet,mr,pe; reg 3:0dn; wire 3:0qn; wire tc; parameter clock=20; always #(clock/2) cp=cp; HC161 u1(cp,cep,cet,mr,pe,dn,qn,tc); initial begin c
26、p=0; mr=0; pe=0; cet=1; cep=1; #10 mr=1; #10 dn=$random; #20 pe=1; repeat(3) #10 dn=$random; #10 cet=0; repeat(2) #10 dn=$random; #5 cet=1; #5 cep=0; repeat(2) #10 dn=$random; end initial #400 $finish;endmodule/74HC194代码module HC194(MR,S1,S0,CP,DSR,DSL,D,Q); input MR,S1,S0,CP,DSR,DSL; input 3:0D; ou
27、tput 3:0Q; reg 3:0Qaux; always (MR) if(MR) Qaux=0; always (S1 or S0) if(S1&S0) Qaux=Q; always (posedge CP) if(S1&S0) Qaux=Qaux2:0,DSR; else if(S1&S0) Qaux=DSL,Qaux3:1; else if(S1&S0) Qaux=D; assign Q=Qaux;endmodule/74HC194测试平台代码timescale 1ns/1nsmodule test74HC194; reg MR,S1,S0,CP,DSR,DSL; reg 3:0D;
28、wire 3:0Q; parameter clock=20; HC194 u(MR,S1,S0,CP,DSR,DSL,D,Q); initial begin CP=0; #400 $finish; end always #(clock/2) CP=CP; initial begin MR=0; #20 MR=1; #20 S1=0;S0=1;DSR=1; #20 S1=1;S0=0;DSL=1; #20 S1=0;S0=0; #20 S1=1;S0=1;D=4b1111; #20 S1=0;S0=0; #20 MR=0; endendmodule2、第一次仿真结果(任选一个模块,请注明)注:截图为74HC743、综合结果4、第二次仿真结果(综合后)5、第三次仿真结果(布局布线后)