03-点亮LED灯
1.FPGA设计流程
1.设计规划
对项目需求了解,划分子功能模块,子功能模块的输入输出信号及通信关系
2.波形绘制
了解子模块的功能,画出框图,搞清楚如何通过输入信号得到输出信号,进而绘制波形图
3.代码编写
参照绘制的波形图
4.代码编译
检查代码中的语法错误
5.逻辑仿真
编写仿真代码,对verilog代码进行验证
6.波形对比
7.绑定管脚
8.分析综合,布局布线
9.上板验证
2.点亮LED灯
2.1项目文件的管理
Led
doc -- 文档手册
quartus project -- 项目文件夹
rtl -- 存放可综合的代码
sim(tb) -- 仿真文件
matlab -- matlab文件夹
2.2 功能需求
- 点亮LED灯,使用按键控制LED灯的亮灭
- 使用一个module就可以实现
2.3 硬件资源
- 使用KEY1点亮LED灯
2.4 波形绘制
2.5 编写代码
module led
(
input wire key_in,
output wire led
);
assign led_out = key_in;
endmodule
2.6 代码编译
- quartus新建工程,选择位置及设置名称
- 加载verilog代码
- 编译verilog代码
2.7 逻辑仿真
- 通过编写仿真文件tb,给待仿真的module灌入激励,查看输出波形是否和预期一致
module tb_led();
// 输入给被测module的变量reg
// 从被测module输出的使用wire
wire led_out;
reg key_in;
// 初始化输入信号
initial key_in <= 1'b0;
// key_in:产生输入随机数,模拟按键的输入情况
always #10 key_in <= ($random) % 2 ; // 求模,取余,产生非负随机数0,1
//例化
// 先写module的输入输出信号,括号里写连入的信号
led led_inst (
.key_in (key_in), // input key_in
.led_out (led_out) // output led_out
);
endmodule
- 将tb添加到工程,并进行编译
2.8 绑定管脚
- 进行一次全编译
2.9 上板验证
固化程序
- 勾选之后,重新开始下载,下载程序完成之后要重新上电,固化程序才能下载到板子上