当前位置:文档之家› 广工数字逻辑与dea设计实验报告

广工数字逻辑与dea设计实验报告

实验报告1、基本门电路一、实验目的1、了解基于Verilog的基本门电路的设计及其验证。

2、熟悉利用EDA工具进行设计及仿真的流程。

3、学习针对实际门电路芯片74HC00、74HC02、74HC04、74HC08、74HC32、7 4HC86进行VerilogHDL设计的方法。

4、掌握Libero软件的使用方法。

二、实验环境Libero仿真软件。

三、实验内容1、在自己的工程文件中,新建一个设计代码文件(Verilog Source File),文件命名规则:学号+下划线+BasGate例:3115000001_BasGate.v在自己的工程文件中,新建一个测试平台文件(HDL Stimulus File),文件命名规则:test_BasGate.v2、进行针对74系列基本门电路的设计,并完成相应的仿真实验。

3、参考教材P192页的设计代码、测试平台代码(可自行编程,所有门电路放在一个模块里面),完成2输入与非门、2输入或非门、2输入与门、2输入或门、2输入异或门、非门的设计、综合及仿真。

4、提交针对基本门电路的综合结果,以及相应的仿真结果。

四、实验结果和数据处理1、门电路...模块清单及测试平台代码清单(1)所有硬件功能模块的代码清单(关键代码应有注释)// 3117005278_BasGate.v (综合设计与、或、异或、与非、或非在一个模块)module gates(a,b,y1,y2,y3,y4,y5);input a,b;output y1,y2,y3,y4,y5;assign y1=a&b;assign y2=a|b;assign y3=a^b;assign y4=~(a&b);assign y5=~(a|b);endmodule// test_BasGate.v(综合设计测试平台)`timescale 1ns/1nsmodule testbench();reg a,b;wire y1,y2,y3,y4,y5;gates test_gates(a,b,y1,y2,y3,y4,y5);initialbegina=0;b=0;#10 b=1;#10 a=1;#10 b=0;#10;endendmodule2、第一次仿真结果(截图..)。

先将波形窗口背景设为白色..,调整窗口至合适大小,使波形能完整显示,再对窗口截图..。

后面实验中的仿真使用相同方法处理。

3、综合结果(截图..)。

先将相关窗口调至合适大小,使RTL图能完整显示,对窗口截图,后面实验中的综合使用相同方法处理)4、第二次仿真结果(综合后)(截图..)。

回答输出信号是否有延迟,延迟时间约为多少?5、第三次仿真结果(布局布线后)(截图..)。

回答输出信号是否有延迟,延迟时间约为多少?分析是否有出现竞争冒险。

6、布局布线的引脚分配(截图..)。

7、烧录(请老师检查)。

2、门电路的综合实验一、实验目的1、了解基于Verilog的组合逻辑电路的设计及其验证。

2、熟悉利用EDA工具进行设计及仿真的流程。

3、学习针对实际要求进行VerilogHDL设计的方法。

4、掌握Libero软件的使用方法。

二、实验环境Libero仿真软件。

三、实验内容继续在上一实验所建的“学号+下划线+BasGate(例:3115000001_BasGate.v)”文件中添加两段模块设计代码,分别完成以下第1、2项实验内容,模块名自拟,要求有注释。

两个设计所对应的测试平台模块代码继续放在test_BasGate.v文件中,模块名自拟,要求有注释。

1、裁判表决电路设计一个3输入、1输入的举重裁判表决电路,使用VerilogHDL描述该电路的功能,设计相关测试平台,完成综合、布局布线、仿真。

2、交通灯故障检测电路设计一个3输入、1输入的交通灯故障检测电路,使用VerilogHDL描述该电路的功能,设计相关测试平台,完成综合、布局布线、仿真。

3、以上两个电路任选一个完成烧录和接电测试。

四、实验结果和数据处理1、所有模块及测试平台代码清单//举重模块// BaseGate.v 举重门module juzhongY(A,B,C,Y);input A,B,C;output Y;assign Y=(A&B)|(B&C)|(A&C);endmodule// test_juzhongY.v 举重测试`timescale 1ns/1nsmodule testbench();reg a,b,c;wire y;juzhongY test_gates(a,b,c,y);initialbegina=0;b=0;c=0;#10 a=0;b=1;c=0;#10 a=0;b=1;c=1;#10 a=1;b=0;c=0;#10 a=1;b=1;c=0;#10 a=1;b=0;c=1;#10 a=1;b=1;c=1;#10;endendmodule//红绿灯模块// honglvdeng.vmodule honglvdengY(R,Y,G,Z);input R,Y,G;output Z;assign Z=(~(R|Y|G))|(R&Y)|(R&G)|(Y&G); endmodule// test_honglvdengY.v`timescale 1ns/1nsmodule testbench();reg a,b,c;wire y;honglvdengY test_gates(a,b,c,y);initialbegina=0;b=0;c=0;#10 a=0;b=1;c=0;#10 a=0;b=1;c=1;#10 a=1;b=0;c=0;#10 a=1;b=1;c=0;#10 a=1;b=0;c=1;#10 a=1;b=1;c=1;#10;endendmodule2、综合前仿真结果截图(举重)3、综合结果RTL视图截图(举重)4、综合后仿真截图(举重)。

最大的传输延迟时间大概为多少?5、布局布线引脚分配窗口截图6、布局布线后仿真结果截图。

最长的传输延迟时间约为多少?分析是否有出现竞争冒险。

答:最大传输延迟400ps。

由于时序图中存在毛刺,固存在竞争冒险7、烧录后接电测试,给老师检查。

3、组合逻辑电路一、实验目的1、了解基于Verilog的组合逻辑电路的设计及其验证。

2、熟悉利用EDA工具进行设计及仿真的流程。

3、学习针对实际组合逻辑电路芯片74HC148、74HC138、74HC153、74HC85、7 4HC283、74HC4511进行VerilogHDL设计的方法。

4、掌握Libero软件的使用方法。

二、实验环境Libero仿真软件。

三、实验内容在同学自己的工程文件中,新建一个设计文件和一个测试代码文件,命名要求:(1)设计文件命名为“学号+下划线+Comb”(例3115000001_comb.v),在该文件中,以下每一个设计对应一个模块,模块名为“姓名拼音首字母+下划线+74HCX X”。

(2)测试文件命名为test_Comb,在该文件中,以下每一个设计对应一个模块,模块名为test_74HCXX。

1、按课本P52的功能表完成74HC148的设计,编写设计代码、测试平台代码。

2、按课本P56的功能表完成74HC138的设计,编写设计代码、测试平台代码。

3、按课本P60的功能表完成74HC153的设计,编写设计代码、测试平台代码。

4、按课本P64的功能表完成74HC85的设计,编写设计代码、测试平台代码。

其中测试平台的测试数据要求:进行比较的A、B两数,分别依次为本人学号的奇数位和偶数位(例如,当学号为3212005896时,A数依次取学号从左到右的奇数位,即数字3、1、0、5、9,B数依次取学号从左到右的偶数位,即数字2、2、0、8、6),验证A、B的比较结果。

注意:若两数相等,需考虑级联输入(级联输入的各种取值情况均需包括)。

5、按课本P72的功能表完成74HC283的设计,编写设计代码、测试平台代码。

6、上述内容均要求完成综合、布局布线及三次仿真,选择一个完成烧录及接电测试,完成后给老师检查。

四、实验结果和数据处理1、所有模块及测试平台代码清单(关键语句要有注释)//74HC148代码// 74HC148.vmodule HC148(EI, In, Out, EO, GS);input EI;input [7:0]In;output [2:0]Out;output EO, GS;reg [2:0]Out;reg EO, GS;integer I;always @(EI or In)if(EI)beginOut = 3'b111; EO = 1; GS = 1;endelseif( In == 8'b11111111 )beginOut = 3'b111; EO = 0; GS = 1;endelsebeginfor(I = 0;I < 8; I = I + 1)beginif( ~In[I])beginOut = ~I; EO = 1; GS = 0;endendendendmodule//74HC148测试平台代码// test_148.v`timescale 1ns/1nsmodule test_148;reg ei;reg [7:0]turn;wire [7:0]in = ~turn;wire [2:0]out;wire eo,gs;HC148 u(ei, in, out, eo, gs);initialbeginei = 1;turn = 8'b1;repeat(8)#10 turn = turn<<1;ei = 0;turn = 8'b1;repeat(8)#10 turn = turn<<1;endendmodule//74HC138代码// 74HC138.vmodule decoder3_8_1(DataIn,Enable,Eq);input [2:0] DataIn;input Enable;output [7:0] Eq;reg [7:0] Eq;wire[2:0] DataIn;integer I;always @ (DataIn or Enable)beginif(Enable)Eq=0;elsefor(I=0;I<=7;I=I+1)if(DataIn==I)Eq[I]=1;elseEq[I]=0;endendmodule//74HC138测试平台代码// test_138.v`timescale 1ns/1nsmodule test_138;wire [2:0] out;reg [7:0] in;reg [2:0] ei;HC138 u(out, in, ei);task circle;beginin = 0;repeat(8)#10 in = in + 1;endendtaskinitialbeginei = 1;circle();ei = 0;circle();ei = 2;repeat(6)begincircle();#10 ei = ei + 1;endendendmodule//74HC153代码// 74HC153.vmodule HC153(DateOut, DateIn, Sel, Enable); input [3:0]DateIn;input [1:0]Sel;input Enable;output reg DateOut;always @(Enable or Sel or DateIn)if(Enable) DateOut = 0;else DateOut = DateIn[Sel]; endmodule//74HC153测试平台代码// test_153.v`timescale 1ns/1nsmodule test_153();wire out;reg [3:0]in;reg [1:0]sel;reg ei;HC153 u(out, in, sel, ei);initialbeginei = 0; sel = 0; in = 4'b1010;repeat(4)#10 sel = sel +1;ei = 1; sel = 0; in = 4'b1010;repeat(4)#10 sel = sel +1;endendmodule//74HC85代码// 74HC85.vmodule HC85(DateA, DateB, Cas, Q);input [3:0] DateA, DateB;input [2:0]Cas;output reg [2:0]Q;interger I;always @(DateA or DateB or Cas)beginif(DateA==DateB)beginif(Cas[1]) Q = 3'b010;else if(Cas==3'b000) Q = 3'b101;else if(Cas==3'b101) Q = 3'b000;else Q = Cas;endelsebeginfor(I=0;I<4;I=I+1)if(DateA[I]>DateB[I]) Q = 3'b100;else if(DateA[I]<DateB[I]) Q = 3'b001;endendendmodule//74HC85测试平台代码(学号为:3117005278)// test_85.v`timescale 1ns/1nsmodule test_85;reg [3:0] a,b;reg [2:0] cas;wire [2:0] res;HC85 u(a, b, cas, res);task cascade_input;begin#0 cas = 0; #10 cas = 1; #10 cas = 3'b100; #10 cas = 3'b101; #10 cas = 3'b010; #10 cas = 3'b011; #10 cas = 3'b110; #10 cas = 3'b111; #10; endendtaskinitialbegina = 4'd2;b = a; cascade_input();a = 4'd3;b = 4'd1; cascade_input();a = 4'd1;b = 4'd7; cascade_input();a = 4'd0;b = 4'd0; cascade_input();a = 4'd5;b = 4'd2; cascade_input();a = 4'd7;b = 4'd8; cascade_input(); endendmodule//74HC283代码// 74HC283.vmodule HC283(CIN,A,B,COUT,S);input CIN;input [3:0]A,B;output COUT;output [3:0]S;reg COUT;reg [3:0]S;always@(CIN,A,B)begin{COUT,S}=CIN+A+B;endendmodule//74HC283测试平台代码// test_283.v`timescale 1ns/1nsmodule test_HC283;reg cin;reg [3:0]a,b;wire cout;wire [3:0]s;HC283 u5(cin,a,b,cout,s);initialbegincin=0;repeat(20)#15 cin=$random;endinitialbegina=0;repeat(20)#10 a=$random;endinitialbeginb=0;repeat(20)#10 b=$random;endendmodule2、第一次仿真结果截图(74HC85模块)3、综合结果(截图)4、第二次仿真结果(综合后仿真截图)。

相关主题