FPGA开发流程
- 设计定义
- 设计输入
- 分析和综合
- 功能仿真(理想仿真,实际存在逻辑延迟等)
modelsim-altera软件 - 布局布线
- 时序仿真(时序约束,保证时序要求)
modelsim-altera软件 - IO分配以及配置文件的生成
- 配置(烧写FPGA)
- 在线调试
二选一案例
1、设计定义:
两个按键输入I/O(a,b)
输入按键按下时,LED灯与a端口状态保持一致;否则,LED灯与b端口状态保持一致
2、设计输入:
module led_test(a,b,sel,led_out);
input a,b;//input port a and b
input sel;//input port sel
output led_out;//output port led_out
assign key_out = (sel == 0)? a:b; //if sel logic low, key_out<=a ,else b
endmodule
3、仿真综合
4、功能仿真
rtl视图:
编写testbench文件
`timescale 1ns/1ps
// #100.1 //delay 1ns*100, accuracy 1ps 0.1ns = 1ps
module led_test_tb;
//激励
reg signal_a;
reg signal_b;
reg signal_c;
//待检测信号定义,连接到待测试模块输出
wire led;
//例化
led_test led_test_0(
.a(signal_a),
.b(signal_b),
.sel(signal_c),
.led_out(led)
);
//产生激励
initial begin
signal_a = 0; signal_b = 0;signal_c = 0;#100;
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;#100;
$stop;
end
设置好仿真环境以及联络testbench文件
进行仿真
5、布局布线
直接编译
6、后仿真
7、引脚分配
8、配置烧写
9、在线调试