1、 ___计算机__学院计科专业2班________组、学号3115004949 姓名 朱远鹏 协作者______________ 教师评定_________________ 实验题目_________基于Libero的数字逻辑设计仿真及验证实验_________ 1、 熟悉EDA工具的使用;仿真基本门电路。 2、 仿真组合逻辑电路。 3、 仿真时序逻辑电路。 4、 基本门电路、组合电路和时序电路的程序烧录及验证。 5、 数字逻辑综合设计仿真及验证。 实验报告 1、基本门电路 一、实验目的 1、了解基于Verilog的基本门电路的设计及其验证。 2、熟悉利用
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、7
3、4HC32、74HC86(任选一个)的综合结果,以及相应的仿真结果。 四、实验结果和数据处理 1、所有模块及测试平台代码清单 //74HC00代码-与非 //74HC00.v module HC00(A,B,Y); input [4:1] A,B; output [4:1] Y; assign Y = ~(A&B); endmodule //74HC00测试平台代码 //test_00.v `timescale 1ns/1ns module testbench(); reg [4:1] a,b; wire [4:1] y;
4、 HC00 ul(a,b,y); initial begin a=4'b0000; b=4'b0001; #10 b=b<<1; #10 b=b<<1; #10 b=b<<1; a=4'b1111; b=4'b0001; #10 b=b<<1; #10 b=b<<1; #10 b=b<<1; end endmodule //74HC02代码-或非 //74HC02.v module HC02(A,B,Y); input [3:0] A,B; output [3:0] Y; assign Y = ~
5、A|B); endmodule //74HC02测试平台代码 // test_02.v `timescale 1ns/1ns module test_02; reg [3:0] a,b,c; wire [3:0] y; HC02 u(a, b, y); initial begin a = 4'b1111;c = 4'b0001; b = ~c;c = c<<1; #10 b = ~c;c = c<<1; #10 b =
6、 ~c;c = c<<1; #10 b = ~c; a = 4'b0000;c = 4'b0001; b = ~c;c = c<<1; #10 b = ~c;c = c<<1; #10 b = ~c;c = c<<1; #10 b = ~c; end endmodule //74HC04代码-非 // 74HC04.v module HC04(A, Y); input [3:0] A; output [3:0]Y;
7、 assign Y = ~A; endmodule //74HC04测试平台代码 // test_04.v `timescale 1ns/1ns module test_04; reg [3:0] a; wire [3:0] y; HC04 u (a, y); initial begin a = 4'b0001; #10 a = a<<1; #10 a = a<<1; #10 a = a<<1; end endm
8、odule //74HC08代码-与 // 74HC08.v module HC08(A, B, Y); input [3:0] A, B; output [3:0]Y; assign Y = A&B; endmodule //74HC08测试平台代码 // test_08.v `timescale 1ns/1ns module test_08; reg [3:0] a,b; wire [3:0] y; HC00 u(a, b, y); initial begin
9、 a = 4'b0000;b = 4'b0001; #10 b = b<<1; #10 b = b<<1; #10 b = b<<1; a = 4'b1111;b = 4'b0001; #10 b = b<<1; #10 b = b<<1; #10 b = b<<1; end endmodule //74HC32代码-或 //74HC32.v module HC32(A, B, Y); input [3:0
10、] A, B; output [3:0]Y; assign Y = A|B; endmodule //74HC32测试平台代码 // test_32.v `timescale 1ns/1ns module test_32; reg [3:0] a,b,c; wire [3:0] y; HC02 u(a, b, y); initial begin a = 4'b1111;c = 4'b0001; b = ~c; c = c<<1; #10 b = ~c;c =
11、 c<<1; #10 b = ~c;c = c<<1; #10 b = ~c; a = 4'b0000;c = 4'b0001;b = ~c; c = c<<1; #10 b = ~c;c = c<<1; #10 b = ~c;c = c<<1; #10 b = ~c; end endmodule //74HC86代码-异或 //74HC86.v module HC86(A, B, Y); input [3:0] A, B; output [
12、3:0]Y; assign Y = A^B; endmodule //74HC86测试平台代码 // test_86.v `timescale 1ns/1ns module test_86; reg [3:0] a, b; wire [3:0] y; HC86 u (a, b, y); initial begin a = 4'b0000;b = 4'b0001; #10 b = b<<1; #10 b = b<<1; #10 b
13、 = b<<1; #10 a = 4'b1111;b = 4'b0001; #10 b = b<<1; #10 b = b<<1; #10 b = b<<1; end endmodule 实验数据:74HC00 2、第一次仿真结果 3、 综合结果 4、 第二次仿真结果(综合后)。回答输出信号是否有延迟,延迟时间约为多少? 输出信号有延时,延时约为300ps 5、第三次仿真结果(布局布线后)。回答输出信号是否有延迟,延迟时间约为多少?分析是否有出现竞争冒险。 延时约
14、为3200ps,存在竞争冒险 2、组合逻辑电路 一、实验目的 1、了解基于Verilog的组合逻辑电路的设计及其验证。 2、熟悉利用EDA工具进行设计及仿真的流程。 3、学习针对实际组合逻辑电路芯片74HC148、74HC138、74HC153、74HC85、74HC283、74HC4511进行VerilogHDL设计的方法。 二、实验环境 Libero仿真软件。 三、实验内容 1、掌握Libero软件的使用方法。 2、进行针对74系列基本组合逻辑电路的设计,并完成相应的仿真实验。 3、参考教材中相应章节的设计代码、测试平台代码(可自行编程),完成74HC148、
15、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(任选一个)的综合结果,以及相应的仿真结果。
16、 四、实验结果和数据处理 1、所有模块及测试平台代码清单 //74HC148代码 module HC148(EI,I,A,GS,EO); input EI; input [7:0]I; output [2:0]A; output GS,EO; reg [2:0]A; reg GS,EO; integer j; always @ (EI,I) begin if(EI) begin {A,GS,EO}=5
17、'b11111; end else if(I==8'b11111111) begin {A,GS,EO}=5'b11110; end else for(j=0;j<8;j=j+1) begin if(~I[j]) begin A=~j;
18、 GS=0; EO=1; end end end endmodule //74HC148测试平台代码 `timescale 1ns/1ns module test_HC148; reg ei; reg [7:0]i; wire [2:0]a; wire gs,eo; HC148 u1(ei,i,a,gs,eo);
19、 initial begin ei=1; #20 ei=0; i=8'b11111111; #20 i=8'b11111110; #20 i=8'b11111101; #20 i=8'b11111011; #20 i=8'b11110111; #20 i=8'b11101111; #20 i=8'b11011111; #2
20、0 i=8'b10111111; #20 i=8'b01111111; end endmodule //74HC138代码 module HC138(E1,E2,E3,A,Y); input E1,E2,E3; input [2:0] A; output [7:0] Y; reg [7:0] Y; integer I; always@(E1,E2,E3,A) begin if(E1==1||E2==1||E3==0)






