___计算机__学院______________专业_____班________组、学号______姓名______________协作者______________教师评定_________________实验题目_________基于Libero的数字逻辑设计仿真及验证实验_________1、熟悉EDA工具的使用;仿真基本门电路。2、仿真组合逻辑电路。3、仿真时序逻辑电路。4、基本门电路、组合电路和时序电路的程序烧录及验证。5、数字逻辑综合设计仿真及验证。1实验报告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测试平台代码//74HC02代码-或非//74HC02测试平台代码2//74HC04代码-非//74HC04测试平台代码//74HC08代码-与//74HC08测试平台代码//74HC32代码-或//74HC32测试平台代码//74HC86代码-异或//74HC86测试平台代码2、第一次仿真结果(任选一个....门,请注明,......插入截图,.....下同..)。(将波形窗口背景设为白色..,调整窗口至合适大小,使波形能完整显示,对窗口截图..。后面实验中的仿真使用相同方法处理)3、综合结果(截图..)。(将相关窗口调至合适大小,使RTL图能完整显示,对窗口截图,后面实验中的综合使用相同方法处理)4、第二次仿真结果(综合后)(截图..)。回答输出信号是否有延迟,延迟时间约为多少?5、第三次仿真结果(布局布线后)(截图..)。回答输出信号是否有延迟,延迟时间约为多少?分析是否有出现竞争冒险。32、组合逻辑电路一、实验目的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.vmoduleencoder8_3_1(DataIn,EO,Dataout);input[7:0]DataIn;outputEO;output[2:0]Dataout;reg[2:0]Dataout;regEO;integerI;always@(DataIn)4beginDataout=0;EO=1;for(I=0;I8;I=I+1)beginif(DataIn[I])beginDataout=I;EO=0;endendendendmodule//74HC148测试平台代码//testbench.v`timescale1ns/10psmoduletestbench_8_3encoder;reg[7:0]in;wire[2:0]out;wireEO;initialbeginin='b00000001;repeat(9)#20in=in1;endencoder8_3_1testbench_8_3encoder(in,EO,out);endmodule//74HC138代码//74HC138.vmoduledecoder3_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)//当输入或使能端发生变化时,开始进行译码beginif(Enable)//Enable为1时,输出为0Eq=0;5elsefor(I=0;I=7;I=I+1)if(DataIn==I)//语句组1(4行)Eq[I]=1;elseEq[I]=0;endendmodule//74HC138测试平台代码//testbench.v`timescale1ns/10psmoduletestbench;reg[2:0]in;regenable;wire[7:0]eq;decoder3_8_1decoder_tb(//按端口名称连接,可不按照端口顺序写出.DataIn(in),.Enable(enable),.Eq(eq));initialbeginin=0;repeat(20)#20in=$random;//采用随机函数生成3位的输入数据endinitialbeginenable=1;#40enable=0;endendmodule//74HC153代码//74HC153.vmodulemux4_1_a(D0,D1,D2,D3,Sel0,Sel1,Result);inputD0,D1,D2,D3;inputSel0,Sel1;outputResult;regResult;always@(D0orD1orD2orD3orSel1orSel0)//任一输入或选择项发生变化时执行begin6case({Sel1,Sel0})//根据选择项进行分支控制0:Result=D0;1:Result=D1;//语句12:Result=D2;3:Result=D3;default:Result=1'bx;//其他情况下输出xendcaseendendmodule//74HC153测试平台代码//testbench.v`timescale1ns/1psmoduletestbench_mux4_1;regD0,D1,D2,D3,Sel1,Sel0;wireResult;mux4_1_aDUT(D0,D1,D2,D3,Sel0,Sel1,Result);initialbeginD0=0;D1=0;D2=0;D3=0;Sel1=0;Sel0=0;#100D0=1;D1=0;D2=0;D3=1;#100Sel1=0;Sel0=1;#100Sel1=1;Sel0=0;#100Sel1=1;Sel0=1;#100;//加入一些延迟,以便波形显示效果更好endendmodule//74HC85代码//74HC85.vmodulecomparator_4_a(DataA,DataB,AGEB);input[3:0]DataA,DataB;outputAGEB;regAGEB;always@(DataAorDataB)beginif(DataA=DataB)AGEB=1;elseAGEB=0;endendmodule7//74HC85测试平台代码//testbench.v`timescale1ns/10psmoduletestbench;reg[3:0]ina,inb;wireAGEB;comparator_4_acomparator_testbench(ina,inb,AGEB);initialbeginina=0;repeat(20)#20ina=$random;#20$finish;endinitialbegininb=0;repeat(10)#40inb=$random;endendmodule//74HC283代码//74HC283.vmodulehalfadder_1(DataA,DataB,Sum,Cout);inputDataA,DataB;outputSum,Cout;assign{Cout,Sum}=DataA+DataB;endmodule//74HC283测试平台代码//testbench.v`timescale1ns/10psmoduletestbench;rega,b;wiresum,cout;halfadder_1adder_te(a,b,sum,cout);initialbegina=0;b=0;8#20b=1;#20a=1;#20b=0;#20;endendmodule//74HC4511代码//74HC4511.vmoduleHC4511(A,Seg,LT_N,BI_N,LE);inputLT_N,BI_N,LE;input[3:0]A;output[7:0]Seg;reg[7:0]SM_8S;assignSeg=SM_8S;always@(AorLT_NorBI_NorLE)beginif(!LT_N)SM_8S=8'b11111111;//根据4511真值表写出elseif(!BI_N)SM_8S=8'b00000000;elseif(LE)SM_8S=SM_8S;elsecase(A)4'd0:SM_8S=8'b00111111;//3f(00111111对应的十六进制数),方便结果查看//数字按gfedcba顺序,最高位0表示小数点不显示4'd1:SM_8S=8'b00000110;//064'd2:SM_8S=8'b01011011;//5b4'd3:SM_8S=8'b01001111;//4f4'd4:SM_8S=8'b01100110;//664'd5:SM_8S=8'b01101101;//6d4'd6:SM_8S=8'b01111101;//7d4'd7:SM_8S=8'b00000111;//074'd8:SM_8S=8'b01111111;//7f4'd9:SM_8S=8'b01101111;//6f,用1100111表示9也是可以的4'd10:SM_8S=8'b01110111;//774'd11:SM_8S=8'b01111100;//7c4'd12:SM_8S=8'b00111001;//394'd13:SM_8S=8'b01011110;//5e4'd14:SM_8S=8'b01111001;//794'd15:SM_8S=8'b01110001;//71default:;endcaseend9endmodule//74HC4511测试平台代码`timescale1ns/10psmoduletestbench;rega,b,c;reg[3:0]in;reg[7:0]out;HC4511decoder(LT_N,BI_N,LE,A,Seg);initialbeginin=0;repeat(14)#20in=$random;endinitialbegina=0;b=0;c=0;#4