一、FPGA开发流程
二、创建模块
打开Quartus --》create new project --》new file,选择Verilog HDL file–》写模块
模块一:
module led_test(a,b,key_in,led_out);
input a; //输入端口
input b;
input key_in;
output led_out; //输出端口
//当key_in ==0, led_out = a
assign led_out = (key_in == 0)? a : b;//assign是赋值
endmodule
模块二:
`timescale 1ns/1ps //一撇是键盘左上角那个
//时间单位和仿真精度
module led_test_tb;
//激励信号定义,连接到待测试模块的输入端口
reg signal_a;
reg signal_b;
reg signal_c;
//待测信号定义,连接到待测试模块的输出端口
wire led;
led_test t0( //例化待测试模块
.a(signal_a),
.b(signal_b),
.key_in(signal_c),
.led_out(led)
);
//产生激励
initial begin
signal_a = 0;signal_b = 0;signal_c = 0;
#100 //延时100ns
signal_a = 0;signal_b = 0;signal_c = 1;
#100
signal_a = 0;signal_b = 1;signal_c = 0;
#100
signal_a = 0;signal_b = 1;signal_c = 1;
#100
signal_a = 1;signal_b = 0;signal_c = 0;
#100
signal_a = 1;signal_b = 0;signal_c = 1;
#100
signal_a = 1;signal_b = 1;signal_c = 0;
#100
signal_a = 1;signal_b = 1;signal_c = 1;
#200
$stop;
end
endmodule
三、仿真步骤:
assignment--》setting --》 simulation --》选择modelsim
--》选择compile testbench
--》tools中run RTL simulation(功能仿真)
--》start compilation(布局布线)
--》tools 中run simulation 中选择gate level simulation(时序仿真,后仿真)
后面再进行RTL simulation, compilation 、gate simulation
四、仿真结果
上述功能在后仿真完毕时,会发现与功能仿真的结果有差异,出现了多余的冲激信号,并且信号跳变时出现了延迟。
五、引脚分配
1、点击assignments中的Pin Planner。
2、引脚要与开发板的引脚相对应。
3、分配完后再次start compilation(布局布线)
4、点击Programmer下载程序,可以自己add file,在outfile文件夹下是已经编译完成的sof文件。
5、点击hardware setup选择插入的硬件
6、点击start进行下载
六、验证开发板功能
本实验中,将signal_a和signal_b通过连线连接到供电源上表示高电平,如果接地就代表低电平,然后尝试按键key_in。
led时低电平时候亮。
当按下键key_in时,led显示与signal_a状态一致。
当释放按键key_in时,led显示与signal_b一致。
七、修改tb文件后,进行RTL仿真,modsim操作
八、modelsim查看子模块波形进行调试
在modelsim中,点击sim,右键add wave
然后,选中所有,再按ctrl+G自动分组。