1、数字逻辑及EDA设计实验48实验报告1、熟悉EDA工具的使用;仿真根本门电路。2、仿真组合逻辑电路。3、仿真时序逻辑电路。4、根本门电路、组合电路和时序电路的程序烧录及验证。5、数字逻辑综合设计仿真及验证。实验报告1、根本门电路一、实验目的1、了解基于Verilog的根本门电路的设计及其验证。2、熟悉利用EDA工具进展设计及仿真的流程。3、学习针对实际门电路芯片74HC00、74HC02、74HC04、74HC08、74HC32、74HC86进展VerilogHDL设计的方法。二、实验环境Libero仿真软件。三、实验容1、掌握Libero软件的使用方法。2、进展针对74系列根本门电路的设计,
2、并完成相应的仿真实验。3、参考教材中相应章节的设计代码、测试平台代码可自行编程,完成74HC00、74HC02、74HC04、74HC08、74HC32、74HC86相应的设计、综合及仿真。4、提交针对74HC00、74HC02、74HC04、74HC08、74HC32、74HC86任选一个的综合结果,以及相应的仿真结果。四、实验结果和数据处理1、所有模块及测试平台代码清单/74HC00代码-与非/ 74HC00.vmodule HC00(DataA, DataB,Y); input 3:0DataA,DataB; output 3:0Y; assign Y=(A&B);endmodule/7
3、4HC00测试平台代码/ testbench.vtimescale 1ns/1nsmodule testbench(); reg 4:1 a,b; wire 4:1 y; HC00 u1(a,b,y); initial begin a=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代码-或非module HC02(A,B,Y); input 4:1A,B; output 4:1Y; assign Y=(A|B);
4、endmodule/74HC04代码-非module HC04(A,Y); input 4:1A; output 4:1Y; assign Y=A;endmodule/74HC08代码-与module HC08(A,B,Y); input 4:1A,B; output 4:1Y; assign Y=A&B;endmodule/74HC32代码-或module HC32(A,B,Y); input 4:1A,B; output 4:1Y; assign Y=A|B;endmodule/74HC86代码-异或module HC86(A,B,Y); input 4:1A,B; output 4:1Y
5、; assign Y=AB;endmodule/门电路测试平台代码/ testbench.vtimescale 1ns/1nsmodule testbench(); reg 4:1 a,b; wire 4:1 y; HC00 test(a,b,y); initial begin a=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; endendmodule2、第一次仿真结果任选一个门,请注明,插入截图,下同。将波形窗口背景设为白色,调整窗口至适宜大小,使
6、波形能完整显示,对窗口截图。后面实验中的仿真使用一样方法处理与非门:3、综合结果截图。将相关窗口调至适宜大小,使RTL图能完整显示,对窗口截图,后面实验中的综合使用一样方法处理与非门:4、第二次仿真结果综合后截图。答复输出信号是否有延迟,延迟时间约为多少?与非门:输出信号有延迟,延迟时间约为300ps延迟300ps5、第三次仿真结果布局布线后截图。答复输出信号是否有延迟,延迟时间约为多少?分析是否有出现竞争冒险。与非门:输出信号在开场视延迟3200ps后面延迟4000ps左右由上图分析可以知道,在黄线以右的输出转折点处出现了竞争冒险,总共3次。2、组合逻辑电路一、实验目的1、了解基于Veril
7、og的组合逻辑电路的设计及其验证。2、熟悉利用EDA工具进展设计及仿真的流程。3、学习针对实际组合逻辑电路芯片74HC148、74HC138、74HC153、74HC85、74HC283、74HC4511进展VerilogHDL设计的方法。二、实验环境Libero仿真软件。三、实验容1、掌握Libero软件的使用方法。2、进展针对74系列根本组合逻辑电路的设计,并完成相应的仿真实验。3、参考教材中相应章节的设计代码、测试平台代码可自行编程,完成74HC148、74HC138、74HC153、74HC85、74HC283、74HC4511相应的设计、综合及仿真。4、74HC85测试平台的测试数据
8、要求:进展比较的A、B两数,分别为本人学号的末两位,如“89,那么A数为“1000,B数为“1001。假设两数相等,需考虑级联输入级联输入的各种取值情况均需包括;假设两数不等,那么需增加一对取值情况,验证A、B相等时的比较结果。5、74HC4511设计成扩展型的,即能显示数字09、字母af。6、提交针对74HC148、74HC138、74HC153、74HC85、74HC283、74HC4511任选一个的综合结果,以及相应的仿真结果。四、实验结果和数据处理1、所有模块及测试平台代码清单/74HC138代码/ decoder.vmodule decoder138 (Din,Enable,Eq);
9、 input 2:0 Din; input Enable; output 7:0 Eq; reg 7:0 Eq; wire 2:0Din; integer I; always (Din or Enable) begin if(Enable) Eq=0; else for(I=0;I=7;I=I+1) if(Din=I) EqI=1; else EqI=0; endendmodule/74HC138测试平台代码/ testbench.vtimescale 1ns/1nsmodule testbench; reg 2:0Din; reg enable; wire 7:0dataout; initi
10、al #400 $finish; initial begin enable=1; #40 enable=0; end initial begin repeat(20) #20 dataIn=$random; end decoder138 test(Din,enable,dataout);endmodule/74HC148代码module encoder148(Din,EO,Dout,EI,GS); input 7:0Din; input EI; output EO; output 2:0Dout; reg EO; reg GS; integer I; always (Din or EI) be
11、gin:local if(EI) begin Dout=7; EO=1; GS=1; end else if(Din=16b11111111) begin Dout=7; EO=0; GS=1; end else begin for(I=0;I8;I=I+1) begin if(DinI) begin Dout=I; EO=1; GS=0; end end endendmodule/74HC148测试平台代码timeccale 1ns/10psmodule testbench; reg7:0 in; reg EI; wire2:0 out; wire EO,GS; initial begin
12、in=b00000001; repeat(9) #20 in=in=B) AGEB=1; else AGEB=0; endendmodule/74HC85测试平台代码timescale 1ns/10psmodule testbench; reg 3:0 ina,inb; wire AGEB; comparator_4_a testbench_4_a(ina,inb,AGEB); initial begin ina=0; repeat(20) #20 ina=$random; #20 $finish; end initial begin inb=0; repeat(10) #40 inb=$ra
13、ndom; endendmodule/74HC283代码module HC283(A, B,Cin,Sum,Cout); parameter N=4; input N-1:0 A, B; input Cin; output N-1:0 Sum; reg N-1:0 Sum; output Cout; reg Cout; reg N:0 q; always (A or B or Cin) begin:adder integer i; q0=Cin; for(i=0;i=N;i=i+1) begin qi+1=(Ai& Bi)|(Ai&qi)|( Bi&qi); Sumi=Ai Biqi; end
14、 Cout=qN; endendmodule/74HC283测试平台代码timescale 1ns/10psmodule testbench; reg 3:0 ina,inb; reg cin; wire 3:0 sum; wire cout; HC283 testbench283(ina,inb,cin,sum,cout); initial begin ina=0; repeat(20) #20 ina=$random; end initial begin inb=0; repeat(10) #40 inb=$random; end initial begin cin=0; #200 cin
15、=1; endendmodule/74HC4511代码module HC4511(A,Seg,LT_N,BI_N,LE); input LT_N,BI_N,LE; input 3:0A; output 7:0Seg; reg 7:0SM_8S; assign Seg=SM_8S; always (A or LT_N or BI_N or LE) begin if(!LT_N) SM_8S=8b11111111; else if(!BI_N) SM_8S=8b00000000; else if(LE) SM_8S=SM_8S; else case(A) 4d0:SM_8S=8b00111111;
16、 4d1:SM_8S=8b00000110; 4d2:SM_8S=8b01011011; 4d3:SM_8S=8b01001111; 4d4:SM_8S=8b01100110; 4d5:SM_8S=8b01101101; 4d6:SM_8S=8b01111101; 4d7:SM_8S=8b00000111; 4d8:SM_8S=8b01111111; 4d9:SM_8S=8b01101111; 4d10:SM_8S=8b01110111; 4d11:SM_8S=8b01111100; 4d12:SM_8S=8b00111001; 4d13:SM_8S=8b01011110; 4d14:SM_8
17、S=8b01111001; 4d15:SM_8S=8b01110001; default:; endcase endendmodule/74HC4511测试平台代码timescale 1ns/10psmodule testbench; reg 3:0 a; reg lt_n,bi_n,le; wire 7:0 seg; HC4511 hc4511(a,seg, lt_n,bi_n,le); initial begin a=0; lt_n=1;bi_n=1;le=0; #30 a=4b0001; #30 a=4b1000; #30 a=4b0111; #30 a=4b1010; #30 a=4b
18、0101; #30 le=1; #30 bi_n=0; #30 lt_n=0; #20; endendmodule2、第一次仿真结果任选一个模块,请注明74HC153模块3、综合结果RTL图4、第二次仿真结果综合后。答复输出信号是否有延迟,延迟时间约为多少?延迟300ps5、第三次仿真结果布局布线后。答复输出信号是否有延迟,延迟时间约为多少?分析是否有出现竞争冒险。延迟5200ps3、时序逻辑电路一、实验目的1、了解基于Verilog的时序逻辑电路的设计及其验证。2、熟悉利用EDA工具进展设计及仿真的流程。3、学习针对实际时序逻辑电路芯片74HC74、74HC112、74HC194、74HC1
19、61进展VerilogHDL设计的方法。二、实验环境Libero仿真软件。三、实验容1、熟练掌握Libero软件的使用方法。2、进展针对74系列时序逻辑电路的设计,并完成相应的仿真实验。3、参考教材中相应章节的设计代码、测试平台代码可自行编程,完成74HC74、74HC112、74HC161、74HC194相应的设计、综合及仿真。4、提交针对74HC74、74HC112、74HC161、74HC194任选一个的综合结果,以及相应的仿真结果。四、实验结果和数据处理1、所有模块及测试平台代码清单/74HC74代码/ 74hc74.vmodule d_ff (Set,Reset,Clk,D,Q);
20、input Set,Reset,Clk,D; output Q; reg Q; always (posedge Clk or negedge Reset or negedge Set) begin if(!Reset) begin if(!Set)Q=D; else Q=1; end else if(!Set) Q=0; endendmodule/74HC74测试平台代码/ 74hc74.vtimescale 1ns/1nsmodule testbench; reg D,Reset,Set,Clk; wire Q; d_ff testbench_dff(D,Clk,Q,Set,Reset);
21、initial begin Clk =0; #400 $finish; end parameter clock_period=20; always#(clock_period/2)Clk=Clk; initial begin D=0; repeat(20) #20 D=$random; end initial begin Reset=0; repeat(20) #20 Reset=$random; end initial begin Set=0; repeat(20) #20 Set=$random; endendmodule/74HC112代码module jk_ff(J,K,Clk,Q,Q
22、n); input J,K,Clk; output Q,Qn; reg Q; assign Qn=Q; always (posedge Clk) case(J,K) 2b00:Q=Q; 2b01:Q=1b0; 2b10:Q=1b1; 2b11:Q=Q; default:Q=1bx; endcaseendmodule/74HC112测试平台代码timescale 1ns/1nsmodule testbench; reg j,k,Clk; wire Q,Qn; parameter clock_period=20; always #(clock_period/2) Clk=Clk; initial
23、begin j=0;Clk=0; repeat(20) #20 j=$random; end initial begin k=0; repeat(20) #20 k=$random; end initial #300 $finish; jk_ff testbench_jk(j,k,Clk,Q,Qn);endmodule/74HC161代码module HC161(CP,CEP,CET,MRN,PEN,Dn,Qn,TC); input CP; input CEP,CET; output3:0 Qn; input MRN,PEN; input3:0 Dn; output TC; reg3:0 qa
24、ux; 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; end always (posedge CP) begin if(qaux=4b1111 & CET=1) TC=1b1; else TC=1b0; end assign Qn=qaux;endmodule/74HC161测试平台代码timescale 1ns/1nsmodule testbench; reg cp,cep,cet,mrn,
25、pen; reg3:0 dn; wire tc; wire3:0 qn; parameter DELY=20; always #(DELY/2) cp=cp; initial begin cep=1; repeat(15) #DELY cet=$random; end initial begin pen=1; #DELY pen=0; #60 pen=1; end initial begin mrn=1; repeat(20) #15 mrn=$random; end initial #300 $finish; HC161 test(cp,cep,cet,mrn,pen,dn,qn,tc);endmodule/74HC194代码m
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1