我们在对程序进行仿真,确认仿真无误后,就需要上板子进行验证
下面我以花式流水灯程序为例FPGA状态机实现花式流水灯_居安士的博客-CSDN博客
介绍FPGA如何上板,以及抓信号的几种方法
目录
FPGA上板
写约束文件
首先创建约束文件
点击add source,选择add or create constraints

点击crate file,给约束文件命名


constraints里面会出现约束文件.xdc文件,接下来根据FPGA原理图在约束文件里面把管脚和电平标明。


可见LED1对应AB11,LED2对应AB12,LED3对应AA9,LED4对应AB10
set_property PACKAGE_PIN Y18 [get_ports clk_50m]
set_property IOSTANDARD LVCMOS33 [get_ports clk_50m]
set_property PACKAGE_PIN AB11 [get_ports {led_out[0]}]
set_property PACKAGE_PIN AB12 [get_ports {led_out[1]}]
set_property PACKAGE_PIN AA9 [get_ports {led_out[2]}]
set_property PACKAGE_PIN AB10 [get_ports {led_out[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led_out[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led_out[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led_out[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led_out[3]}]前两行是时钟约束,信号名称需要和代码对应起来
后面是管脚约束,将led信号放在芯片的引脚:set_property PACKAGE_PIN xxx [get_ports xxx]
将led所在引脚的电气标准设置为LVCMOS33:set_property IOSTANDARD LVCMOS33 [get_ports xxx]
保存约束文件,之后生成比特流文件
生成比特流文件的步骤:
1 点击 Run Synthesis 进行综合
2点击Run Implementation 。如果工程尚没有进行综合(Synthesis)则会先进行综合,之后再进行实现(Implementation)。
3 点击Generate Bitstream。则会同时检查是否已经进行了综合和实现,如果没有则依次进行综合、实现最后再生成二进制文件。

若不出现严重警告和错误,则生成比特流文件

出现下面界面:
接着将板子进行连接
上板步骤:
1.点击open hardware manager——open target——自动连接

2鼠标右键选择program device

3点击运行
随着掉电之后,比特流程序也就随之消失,再次上电,又要重新编译下载程序,如果想把程序保留,需要固化程序
固化步骤:
1.鼠标右键 Generate Bitstream点击Bitstream setting

2.勾选bin文件——ok

3 鼠标右键选择add configuration memory device

4.选128 Mb;选spi;选x1_x2_x4;下面芯片选倒数第二个——ok

5.选择bin文件:.tuns——impl——bin

6.固化成功显示:

7.再次运行,将bit文件改成bin文件

ps:若要擦除,就再下载一次,只勾选Erase
在这里LED灯的亮灭是清晰可见的,我们可以判断程序运行成功,但是有些程序是否成功运行是无法通过板子反映出来的,这个时候就需要抓信号
FPGA抓信号
抓信号有几种方法,在这里分别进行列举,大家可以根据自己的喜好选择
1综合图像法
点击run synthesis——运行完成后点击schematic
在图像上选中信号线,鼠标右击Mark debug

再进行综合,选择save

再进行综合,连线图上面出现小虫:

若想去掉:鼠标右键unmark debug
接下来设置debug:鼠标右键setup debug

修改抓的时间(数据深度1024等)——finish

重新生成比特流文件并运行
2.添加代码法
在需要检测的信号前面加(*mark_debug=”ture”*)
(*mark_debug=”ture”*)wire time1_en;
(*mark_debug=”ture”*)wire time2_en;重新生成比特流文件并运行
3.调用IP核法
搜索ILA,选择ILA(integrated logic analyzer)

选择检测多少路和数据深度

设置信号的位宽(根据自己的程序)
把ILA例化进有待检测信号的程序里面
ila_0 your_instance_name (
.clk(clk_25m), // input wire clk
.probe0(time1_en), // input wire [0:0] probe0
.probe1(time2_en), // input wire [0:0] probe1
.probe2(led_out) // input wire [3:0] probe2
);重新生成比特流文件并运行
抓信号操作
这个时候会自动出现.ltx文件

点击program,会自动弹出下面的debug页面

对需要抓取的信号进行触发条件设置,之后运行

单个信号抓取,红线会在信号满足触发条件的地方
多个抓取,红线会在同时满足触发条件的地方
抓取的信号位宽不为1时,可以修改需要抓取的数值

综上, 我以花式流水灯为例,介绍了FPGA上板的方法:包括写约束文件,生成比特流文件,以及固化操作;此外还介绍了3种抓信号方法