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

相关推荐
坏孩子的诺亚方舟4 天前
FPGA系统架构设计实践15_高云Arora V系列时钟体系
fpga开发·系统架构
FPGA小徐4 天前
入门 CNN 结构全解析|从流程图理论到 FPGA Verilog 硬件实现(含习题带讲解)
fpga开发
FPGA小徐4 天前
FPGA 数字信号处理:并行 FIR 与串行滤波器设计原理、对比与完整 Verilog 实现
fpga开发
Saniffer_SH5 天前
【高清视频】Gen6 服务器还没到,Gen6 SSD 怎么测?Emily 现场演示三种测试环境
人工智能·驱动开发·测试工具·缓存·fpga开发·计算机外设·压力测试
zlinear数据采集卡5 天前
双核架构深度解析:ARM+FPGA如何让数据采集卡实现500Ksps高性能?
arm开发·fpga开发·架构
9527华安5 天前
FPGA实现GTH Transceivers Wizard传输2路视频,基于aurora 8b10b编解码架构,提供4套工程源码和技术支持
fpga开发·gth·aurora 8b10b·transceivers
FPGA小徐6 天前
FPGA 数字信号处理(二):并行 FIR 滤波器的 Verilog 全流程设计与实现
fpga开发
国科安芯6 天前
基于AS32S601ZIT2型抗辐照MCU的商业航天卫星姿态确定与控制系统研究
单片机·嵌入式硬件·安全·fpga开发·架构·risc-v
ALINX技术博客6 天前
【黑金云课堂】FPGA技术教程FPGA基础:I2C 总线通信技术
fpga开发·i2c
Hello-FPGA6 天前
Xilinx KU040 FPGA Camera Link 图像采集
c++·fpga开发