1、FPGA开发流程
开发流程
1、设计定义(QuartusⅡ13.0.1)
2、设计输入
3、分析与综合
4、功能仿真(modelsim-altera)
5、布局布线
6、时序仿真(modelsim-altera)
7、IO口分配以及配置文件的生成(QuartusⅡ13.0.1)
8、配置(烧写FPGA)
9、在线调试(。。。)
例程:通过按键控制LED(低电平)————二选一多路器
1、设计定义:
两个IO口(a,b),可以是高电平,也可以是低电平
输入按键按下时,LED灯与a端口状态保持一致
输入按键释放时,LED灯与b端口状态保持一致
2、设计输入:
//Verilog语言中模块的开头以来表明设计模块的开始,后紧跟模块名,之后是端口列表,模块有哪些端口包括输入输出
module led_test(a, b, key_in, led_out);//此模块作为顶层模块,顾模块名与工程名一致
//定义端口类型input output
input a;//输入端口A 以input开头,表明这是一个输入端口
input b;//输入端口B 可以写成input a,b;但不方便查看和注释,所以建议写分开写
input key_in;//按键输入,实现输入通道的选择
output led_out ;//led 控制端口
//按键按下,为低电平,当key_in == 0;led_ out == a;
//逻辑设计,assign连续赋值语句,设计出来一个组合逻辑,assign后接待赋值的信号。”?“表示条件,满足则选择a,否则就选对立面
assign led_out = (key_in == 0)? a : b;
endmodule//Verilog语言中,模块以endmodule结尾
写完后点击三角形旁边的按键(star analysis &synthesis)开始检查有无语法错误
3、分析与综合:
//testbench是为了验证模块功能而搭建的一个平台
//写代码是养成好的习惯,将其保存在testbnech文件夹下
`timescale 1ns/1ps//定义一个仿真精度,前面为仿真步进,后面为仿真进度
//'`'为Esc下按键,并非Enter旁的', 错误会使得程序出错。
//1为数字1,并非i
module led_test_tb;//_tb为testbench文件,仿真模块为led_test,方便识别而已
//此时桌子搭建完毕
//激励信号定义,对应连接到待测试模块的输入端口
reg signal_a;
reg signal_b;
reg signal_c;
//待测试信号定义,对应连接到待测试模块的输出端口
wire led;//定义一个信号来观测输出,将这个信号记为led,并于led_out连接起来,后面只要观察led就知道led_out的情况
//例化待测试模块
//实验平台上用的是led_test0这个编号,一个设计可以进行多次例化
//把模块的每一个端口用回车隔开后前面加上.后面加上(),并在其中写上信号激励源,一一映射起来
led_test led_test0(
.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;//延时100*1ns //1ns为第一句定义的仿真步进
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
4、功能仿真
-
设置脚本
- 使用modelsim-altera进行仿真,需要将待测试模块和testbench测试平台告诉modelsim,所以要设置我们的脚本
- Assignment —> Settings —> Simulation
- 使用modelsim-altera进行仿真,需要将待测试模块和testbench测试平台告诉modelsim,所以要设置我们的脚本
-
仿真:Tools —> Run Timulation Tool —> RTL Simulation
- 可能报错:无法加载modelsim软件(指定路径无法找到软件)
- 解决方案:设置路径
- Tools —> Options —> General —> EDA Tool Option —> 设置路径
-
设置成功后再次点击运行即可跳转的modelsim软件进行仿真,观察仿真波形。此时的波形为理想状态下的。
功能仿真完成没有问题可以进行布局布线操作。
5、布局布线
- 布局布线为工具自动完成的,直接点击全编译按钮即可
- 全编译按钮(三角形)(Start Compilation)
- 或者Processing —> Start Compilation
- 编译的时间会很长
- 有警告暂时不用担心,后期会讲
编译完成后可以进行下一步操作,后仿真(门级仿真,时序仿真)
6、时序仿真
- Tools —> Run Timulation Tool —> Gate Level Simulation
- 弹出的对话框要求选择仿真环境,选择速度,电压,温度
部分地方可能与前仿真不一样,此时可以利用modelsim工具来进行分析
- 点击左下角的锁,会固定当前黄线的位置,再点击加号,会新增一条黄线,利用这两条黄线可以进行测量
7、IO分配
- 将端口和板子的管脚一一对应起来
- Assignments —> Pin Planner(或快捷按键)
- 参照板子的引脚图输入即可,分配完成关闭即可。
- 分配完成后还需要一次全编译才可生效,点击全编译按钮(三角形)(Start Compilation)
8、配置(烧写FPGA)
- 专用的下载按钮(Programmer)右上角
- 配置文件 .sof
- 自动添加,也可以手动
- 位置:prj —> output_files —> xxx.sof
- 板子连接后才可以下载
- 下载界面没有端口。
- 解决方法:DE2 USB-Blaster 驱动安装
DE2 USB-Blaster 驱动安装