基于Libero的数字逻辑设计仿真和验证实验报告实验1.docx
《基于Libero的数字逻辑设计仿真和验证实验报告实验1.docx》由会员分享,可在线阅读,更多相关《基于Libero的数字逻辑设计仿真和验证实验报告实验1.docx(10页珍藏版)》请在冰豆网上搜索。
基于Libero的数字逻辑设计仿真和验证实验报告实验1
实验报告
1、基本门电路
一、实验目的
1、熟悉EDA工具的使用;仿真基本门电路。
掌握基于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代码-与非门
//
moduleHC00(A,B,Y);
input[4:
1]A,B;
output[4:
1]Y;
assignY=~(A&B);
endmodule
//74HC00测试平台代码
//
`timescale1ns/1ns
moduletestbench();
reg[4:
1]a,b;
wire[4:
1]y;
HC00u1(a,b,y);
initial
begin
a=4'b0000;b=4'b0001;
#10b=b<<1;
#10b=b<<1;
#10b=b<<1;
a=4'b1111;b=4'b0001;
#10b=b<<1;
#10b=b<<1;
#10b=b<<1;
end
endmodule
//74HC02代码-或非门
//
moduleHC02(A,B,Y);
input[4:
1]A,B;
output[4:
1]Y;
assignY=~(A|B);//或非
endmodule
//74HC02测试平台代码
`timescale1ns/1ns
moduletest02();
reg[4:
1]a,b;
wire[4:
1]y;
HC02u2(a,b,y);
initial
begin
a=4'b0000;b=4'b0001;
#10b=b<<1;
#10b=b<<1;
#10b=b<<1;
#10
a=4'b1111;b=4'b0001;
#10b=b<<1;
#10b=b<<1;
#10b=b<<1;
end
endmodule
//74HC04代码-非门
moduleHC04(A,Y);
input[6:
1]A;
output[6:
1]Y;
assignY=~A;//非
endmodule
//74HC04测试平台代码
`timescale1ns/1ns
moduletest04();
reg[6:
1]a;
wire[6:
1]y;
HC04u4(a,y);
initial
begin
a=6'b000001;
#10b=b<<1;
#10b=b<<1;
#10b=b<<1;
#10b=b<<1;
#10b=b<<1;
end
endmodule
//74HC08代码-与门
moduleHC08(A,B,Y);
input[4:
1]A,B;
output[4:
1]Y;
assignY=A&B;//与
endmodule
//74HC08测试平台代码
`timescale1ns/1ns
moduletest08();
reg[4:
1]a,b;
wire[4:
1]y;
HC08u8(a,b,y);
initial
begin
a=4'b0000;b=4'b0001;
#10b=b<<1;
#10b=b<<1;
#10b=b<<1;
#10
a=4'b1111;b=4'b0001;
#10b=b<<1;
#10b=b<<1;
#10b=b<<1;
end
endmodule
//74HC32代码-或门
moduleHC32(A,B,Y);
input[4:
1]A,B;
output[4:
1]Y;
assignY=A|B;//或
endmodule
//74HC32测试平台代码
`timescale1ns/1ns
moduletest32();
reg[4:
1]a,b;
wire[4:
1]y;
HC32u32(a,b,y);
initial
begin
a=4'b0000;b=4'b0001;
#10b=b<<1;
#10b=b<<1;
#10b=b<<1;
#10
a=4'b1111;b=4'b0001;
#10b=b<<1;
#10b=b<<1;
#10b=b<<1;
end
endmodule
//74HC86代码-异或门
moduleHC86(A,B,Y);
input[4:
1]A,B;
output[4:
1]Y;
assignY=A&(~B)|(~A&B);//异或
endmodule
//74HC86测试平台代码
`timescale1ns/1ns
moduletest86();
reg[4:
1]a,b;
wire[4:
1]y;
HC86u86(a,b,y);
initial
begin
a=4'b0000;b=4'b0001;
#10b=b<<1;
#10b=b<<1;
#10b=b<<1;
#10
a=4'b1111;b=4'b0001;
#10b=b<<1;
#10b=b<<1;
#10b=b<<1;
end
endmodule
2、第一次仿真结果(任选一个门,请注明,插入截图,下同)。
(将波形窗口背景设为白色,调整窗口至合适大小,使波形能完整显示,对窗口截图。
后面实验中的仿真使用相同方法处理)
3、综合结果(截图)。
(将相关窗口调至合适大小,使RTL图能完整显示,对窗口截图,后面实验中的综合使用相同方法处理)
4、第二次仿真结果(综合后)(截图)。
回答输出信号是否有延迟,延迟时间约为多少?
5、第三次仿真结果(布局布线后)(截图)。
回答输出信号是否有延迟,延迟时间约为多少?
分析是否有出现竞争冒险。
2、基本门电路的程序烧录及验证
一、实验目的
1、熟悉利用EDA工具进行设计及仿真的流程。
2、熟悉实验箱的使用和程序下载(烧录)及测试的方法。
二、实验环境及仪器
1、Libero仿真软件。
2、DIGILOGIC-2011数字逻辑及系统实验箱。
3、ActelProasic3A3P030FPGA核心板及FlashPro4烧录器。
三、实验内容
1、新建一个工程文件,将前面已经设计好的74HC00、74HC02、74HC04、74HC08、74HC32、74HC86实例文件导入,(在SmartDesign窗口分别添加这6个模块,可选),完成相应连线。
按实验指导书P175的附录中所列引脚对应表来分配引脚,最后通过烧录器烧录至FPGA核心板上。
按分配的引脚连线,实测相应功能并记录结果。
详细步骤请参考教材及实验指导书的相关内容。
四、实验结果和数据处理
6、写入程序文件(烧录)
表4-174HC00输入输出状态
输入端
输出端Y
A
B
LED
逻辑状态
0
0
0
1
1
0
1
1
表4-274HC02输入输出状态
输入端
输出端Y
A
B
LED
逻辑状态
0
0
0
1
1
0
1
1
表4-374HC04输入输出状态
输入端
输出端Y
A
LED
逻辑状态
0
1
表4-474HC08输入输出状态
输入端
输出端Y
A
B
LED
逻辑状态
0
0
0
1
1
0
1
1
表4-574HC32输入输出状态
输入端
输出端Y
A
B
LED
逻辑状态
0
0
0
1
1
0
1
1
表4-674HC86输入输出状态
输入端
输出端Y
A
B
LED
逻辑状态
0
0
0
1
1
0
1
1
五、结论
六、问题与讨论