数字逻辑实验报告综合版
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于Libero的数字逻辑仿真实验
1.基本门电路
一、实验目的
1、了解基于Verilog的基本门电路的设计及其验证。
2、熟悉利用EDA工具进行设计及仿真的流程。
二、实验环境
Libero仿真软件。
三、实验内容
1、参考4.1基本门电路实验掌握Libero软件的使用方法。
2、参考74HC00的实验,完成74HC00、74HC02、74HC04、74HC08、74HC32、
74HC86相应的设计、综合及仿真
3、提交针对74HC00、74HC02、74HC0
4、74HC08、74HC32、74HC86(任选
一个)的综合结果,以及相应的功能仿真结果。
4、自选一个器件演示其布线后仿真过程。
四、实验结果和数据处理
1、模块及测试平台代码清单
74HC32:
(a)模块代码
// main.v
module HC32(a,b,y);
input [4:1]a,b;
output[4:1]y;
assign y=a|b;
endmodule
(b)测试平台代码
// testbench.v
`timescale 1ns/1ns
module testbench;
reg [4:1]a,b;
wire [4:1]y;
HC32 ul(a,b,y);
initial
begin
a=4'b0000;b=4'b0001;
#10 b=b<<1;
#10 b=b<<1;
#10 b=b<<1;
#10 b=b<<1;
end
endmodule
2、第三次仿真结果(布局布线后)
2.组合逻辑电路
一、实验目的
1、了解基于Verilog的组合逻辑电路的设计及其验证。
2、熟悉利用EDA工具进行设计及仿真的流程。
二、实验环境
Libero仿真软件。
三、实验内容
1、参考74HC00的实验,完成74HC283、74HC85、74HC138、74HC148、74HC15、
相应的设计、综合及仿真。
2、记录74HC85的综合结果,以及相应的功能仿真结果。测试平台的测试数
据要求:进行比较的A、B两数,分别为本人学号的末两位,如“89”,则A数为“1000”,B数为“1001”。若两数相等,需考虑级联输入(级联输入的各种取值情况均需包括);若两数不等,则需增加一对取值情况,验证
A、B相等时的比较结果。
3、自选一个器件演示其布线后仿真过程。
四、实验结果和数据处理
1、74HC85模块及测试平台代码清单
a)模块代码
// 74HC85.v
Module
HC85(A3,A2,A1,A0,B3,B2,B1,B0,QAGB,QASB,QAEB,IAGB,IASB,IAEB);
input A3,A2,A1,A0,B3,B2,B1,B0,IAGB,IASB,IAEB;
output QAGB,QASB,QAEB;
reg QAGB,QASB,QAEB;
wire[3:0] DataA,DataB;
assign DataA={A3,A2,A1,A0};
assign DataB={B3,B2,B1,B0};
always @(DataA or DataB)
begin
if(DataA>DataB)
begin
QAGB=1;QASB=0;QAEB=0;
end
else if(DataA begin QAGB=0;QASB=1;QAEB=0; else if(IAGB&!IASB&!IAEB) begin QAGB=1;QASB=0;QAEB=0; end else if(!IAGB&IASB&!IAEB) begin QAGB=0;QASB=1;QAEB=0; end else if(IAEB) begin QAGB=1;QASB=0;QAEB=0; end else if(IAGB&IASB&!IAEB) begin QAGB=0;QASB=0;QAEB=0; end else if(!IAGB&!IASB&!IAEB) begin QAGB=1;QASB=1;QAEB=0; end end endmodule b)测试平台代码 // test.v `timescale 1ns/1ns module testbench; reg A3,A2,A1,A0,B3,B2,B1,B0; reg IAGB,IASB,IAEB; wire QAGB,QASB,QAEB; initial begin A3=1; repeat(20) #20 A3=$random; end initial begin A2=0; repeat(20) #20 A2=$random; end initial begin