通过生成mcs、bin文件将程序固化到FPGA

通过将程序固化到FPGA,可以做到断电不丢失程序,上电之后就自动启动程序的作用,整个固化步骤主要分为3步,一是修改约束文件,二是生成mcs或bin文件,三是将程序固化到开发板flash

1.修改约束文件

生成固化文件之前,首先需要在约束文件内添加一段原语,添加这段原语的目的主要是为了生成的 bit 流文件转换成固化文件后能够适用于 4bit 位宽 SPI 通信的flash 器件(这里的4位宽以及SPI通信都是根据板载flash决定的)。

set_property CFGBVS VCCO [current_design]
set_property CONFIG_VOLTAGE 3.3 [current_design]
set_property BITSTREAM.GENERAL.COMPRESS true [current_design]
set_property BITSTREAM.CONFIG.CONFIGRATE 50 [current_design]
set_property BITSTREAM.CONFIG.SPI_BUSWIDTH 4 [current_design]
set_property BITSTREAM.CONFIG.SPI_FALL_EDGE Yes [current_design]

将这段代码直接添加到约束文件最下方即可。

2.生成mcs或bin文件

生成mcs文件

生成mcs文件有两种方法

方法1

Tools栏位内点击 Generate Memory Configuration File

format用于选择生成文件的类型,这里我们选择mcs

custom memory size(MB)选择flash的容量,根据自己的开发板确定,这里读说明书的时候要注意MB(MByte)和Mb(Mbit)的区别,MB与Mb相差8倍,MB * 8 = Mb

filename这里选择保存文件位置,注意这里选择文件夹是不行的,需要选择一个mcs文件或是手动添加一个/filename用于生成mcs文件

interface用于选择接口类型,也是根据自己的开发板flash说明书决定

load bitstream file勾选上后可以选择比特流文件

write checksum表示写校验

disable bit swapping表示禁止位交换

overwrite表示覆盖原文件

点击ok即可生成mcs文件。

方法2

直接在tcl命令行内输入以下内容

write_cfgmem -format mcs -size 16 -interface SPIx4 -loadbit {up 0x00000000 "C:/Software/Vivado2019.1/project/project_1/project_1.runs/impl_1/ctr.bit" } -checksum -force -disablebitswap -file "C:/Software/Vivado2019.1/project/project_1/project_1.runs/impl_1/ctr1."

实现的功能和方法1一样,不过是通过指令进行控制

成功之后会显示信息

现在回过头来看方法1,我们会发现配置界面最下方有个command栏后面跟的就是我们直接在tcl输入的内容,也就是说Generate Memory Configuration File的作用就是辅助我们生成命令行指令

生成bin文件

生成bin文件也有两种方法

方法1

同生成mcs文件的方法1,在format栏内选择bin文件类型即可

方法2

点击setting

在bitstream页面勾选bin_file选项,点击apply后点击ok

勾选上之后,我们在生成bitstream的同时会生成bin文件,这里我们重新生成bitstream既可

3.将程序固化到flash

固化程序需要我们先将开发板连接到电脑

如图,右击我们的芯片型号后选择add configuration memory device

这里需要根据自己开发板上的flash型号选择对应的,添加完flash后即可选择文件写入flash

然后添加mcs文件以及prm文件(prm文件随mcs文件同时生成,是一种日志文件)既可

bin文件的使用与mcs相同,只是不需要选择prm文件

至此,程序固化完成,断电后重新上电即可进行测试

当我们选择flash型号之后,我们就可以在开发板连接页面看见芯片型号下面多了一个flash的名称,此时,我们通过直接右击flash名称进行程序的固化,减少了选择flash型号的步骤

4.擦除固化程序

最后,如果我们想要擦除固化的程序,只需要在添加mcs/bin文件的页面内单独勾选erase即可

相关推荐
ThreeYear_s4 小时前
基于FPGA的FM调制(载波频率、频偏、峰值、DAC输出)-带仿真文件-上板验证正确
fpga开发
ThreeYear_s7 小时前
基于FPGA的2FSK调制-串口收发-带tb仿真文件-实际上板验证成功
fpga开发
亮锅锅来啦19 小时前
如何做含有identify抓信号的fpga版本(image或者Bit)
fpga开发
亮锅锅来啦19 小时前
如何使用identify_debugger去抓取信号
fpga开发
小灰灰的FPGA19 小时前
低速接口项目之串口Uart开发(二)——FIFO实现串口数据的收发回环测试
fpga开发
fei_sun2 天前
【Verilog】第三章作业
fpga开发·verilog
hexiaoyan8272 天前
FMCJ456-14bit 2通道3/2.6/2GS/s ADC +16bit 2通道12.6GS/s DAC FMC AD/DA子卡
fpga开发·fmc子卡·软件无线电·异构加速服务器·fmc子板·ad da子卡
ThreeYear_s2 天前
FPGA学习-FFT变换-解决频率低信号进行FFT运算的取点问题
学习·fpga开发
Water_Sounds2 天前
【FPGA开发】Vivado自定义封装IP核,绑定总线
fpga开发
FPGA_Linuxer2 天前
基于RFSOC实现LFMCW雷达测距测速
fpga开发