通过生成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即可

相关推荐
1560820721910 小时前
JFMRFVU3P5G的bit正常,但烧录mcs程序后加载异常
fpga开发
狂奔蜗牛(bradley)10 小时前
把 EtherCAT 初始化从 FPGA 搬到 ARM:命令通道的接口设计与11个坑
arm开发·人工智能·fpga开发·架构
女神下凡1 天前
芯参谋(37):EEPROM_电路设计指南
arm开发·单片机·嵌入式硬件·fpga开发·设计规范
szxinmai主板定制专家2 天前
工业视觉新思路:FPGA图像预处理+RK NPU推理,实现高速缺陷检测
人工智能·嵌入式硬件·fpga开发·rk3576+codesys
FPGA小徐3 天前
【硬件实战】立创 EDA 绘制 TF/SD 卡模块电路|SPI 模式原理图 + 阻抗匹配 + PCB 布局布线全教程
单片机·嵌入式硬件·fpga开发
狂奔蜗牛(bradley)3 天前
EtherCAT DC 分布式时钟同步的 ModelSim 仿真:从帧模板到从站行为建模
人工智能·嵌入式硬件·fpga开发·架构
ALINX技术博客3 天前
8 通道同步采样 ADC!AN706 波形显示实验 【FPGA黑金云课堂】
fpga开发
szxinmai主板定制专家4 天前
RK3568+FPGA+CODESYS异构控制方案:赋能半导体设备与工业自动化升级
人工智能·fpga开发·自动化·rk3576·半导体设备
辰丁电子4 天前
allegro入门教程-菜单栏Logic
fpga开发·pcb设计·pcb工艺·layout·pcb layout
FPGA小徐4 天前
数字IC/FPGA设计基础_ILA原理与使用
fpga开发