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

<think> 我们正在讨论如何将Verilog程序固化FPGA开发板。所谓固化,是指将程序写入开发板上的非易失性存储器(如Flash),使得FPGA开发板在掉电重新上电后,程序仍然能够自动加载运行。这与通过JTAG下载到FPGA的易失性存储器(如SRAM)不同,因为后者掉电后程序会丢失。 根据引用[4]中提到Vivado配置FPGA固化功能(掉电保存),以及引用[2]中关于Quartus程序下载与固化的教程,我们可以知道固化流程大致分为两个步骤: 1. 生成用于固化的非易失性存储器文件(如MCSBIN文件等)。 2. 将该文件烧录到开发板的Flash存储器中。 下面将针对Vivado和Quartus两个主流工具分别说明固化步骤。 ### Vivado固化流程(以Xilinx FPGA为例) #### 步骤1:生成比特流文件 (.bit) - 在Vivado中完成综合与实现后,生成比特流文件(.bit)。这是通过JTAG直接下载到FPGA运行的临时文件,掉电丢失。 - 确保在生成比特流前已经添加了正确的约束文件(XDC),包括引脚约束和时序约束。 #### 步骤2:生成固化文件MCSBIN) - 固化文件需要根据目标板上的Flash存储器类型生成。常见的Flash类型有SPI Flash(如Winbond、Micron等)。 - 在Vivado中打开`Tools -> Generate Memory Configuration File`。 - 选择输出文件类型:通常为MCS格式(用于通用烧写器)或BIN格式(二进制格式)。 - 设置Flash存储器参数: - 接口类型(Interface):根据FPGA连接Flash的方式,通常是SPIx1/x2/x4等。 - 存储器型号(Part):选择具体型号(如`n25q128-3.3v-spi-x1_x2_x4`)。 - 加载模式(Load Data):从比特流文件(.bit)加载配置数据。 - 指定输出路径和文件名。 - 点击`OK`生成MCS/BIN文件。 #### 步骤3:烧录到Flash - 连接开发板:通过JTAG(如Xilinx Platform Cable)连接FPGA开发板,并确保开发板供电(有些烧录需要外部供电)。 - 在Vivado中打开硬件管理器(Open Hardware Manager),并连接目标设备(FPGA)。 - 在硬件管理器中,右键单击FPGA设备,选择`Add Configuration Memory Device`。 - 在弹出的对话框中,搜索并选择目标Flash型号(如`n25q128-3.3v-spi-x1_x2_x4`)。 - 确认后,Vivado会将该Flash设备添加到硬件树中。 - 然后,右键单击新添加的Flash设备,选择`Program Configuration Memory Device`。 - 在对话框中: - 指定生成MCS文件路径。 - 勾选`Verify`(可选,用于验证烧写正确性)。 - 点击`OK`开始烧录。 - 烧录完成后,需要断电重启开发板(或者通过重新上电触发FPGA从Flash加载配置)。 ### Quartus固化流程(以Intel/Altera FPGA为例) #### 步骤1:生成编程文件 (.sof) - 在Quartus中编译完成后,会生成SOF(SRAM Object File)文件,用于直接下载到FPGA。 #### 步骤2:生成固化文件 (.jic) - 在Quartus中,打开`File -> Convert Programming Files`。 - 设置输出文件类型:选择`JTAG Indirect Configuration File (.jic)`。 - 配置名称:指定输出文件路径和名称。 - 在`Configuration device`中选择目标Flash型号(如EPCS64)。 - 在`Flash Loader`部分添加目标FPGA型号(如Cyclone IV E)。 - 在`Input files to convert`部分,点击`Add SOF File`,添加之前生成的SOF文件。 - 点击`Generate`生成.jic文件。 #### 步骤3:烧录到Flash - 连接开发板:通过USB Blaster连接JTAG接口。 - 打开Quartus Programmer(`Tools -> Programmer`)。 - 点击`Add File`,选择生成的.jic文件。 - 在编程器界面: - 选择编程模式为`JTAG`。 - 勾选`Program/Configure`和`Verify`(可选)。 - 点击`Start`开始烧录。 - 烧录完成后,重新上电即可从Flash加载。 ### 关键注意事项 1. **Flash型号匹配**:必须正确选择开发板上的Flash型号,否则烧录会失败。可查阅开发板手册。 2. **烧录接口**:有些开发板需要将跳线帽切换至Flash烧录模式(如JTAG模式)。 3. **烧录速度**:如果烧录失败,尝试降低时钟频率(在烧录配置中调整)。 4. **配置文件路径**:避免路径中包含中文或空格,以免工具识别失败。 引用[4]提供了一个数码管项目固化操作的视频教程链接,可以参考具体操作过程[^4]。引用[2]虽然描述的是Quartus的操作,但原理类似[^2]。 §§相关问题§§ 1. Vivado中如何解决生成MCS文件时Flash型号不匹配的问题? 2. Quartus生成.jic文件时出现错误如何排查? 3. 如何验证FPGA是否成功从Flash启动了配置? </think> ### Verilog程序固化FPGA开发板的方法 固化(烧录到非易失性存储器)是确保FPGA开发板掉电后程序不丢失的关键步骤。以下是详细操作流程(以Vivado和Quartus平台为例): #### 一、Vivado固化流程(Xilinx FPGA) 1. **生成比特流文件**: ```tcl # 在Tcl控制台执行 launch_runs impl_1 -to_step write_bitstream wait_on_run impl_1 ``` 成功后在`<project_dir>/<project_name>.runs/impl_1`生成`.bit`文件 2. **生成固化文件**: - 打开`Tools > Generate Memory Configuration File` - 设置参数: - 格式:`MCS`或`BIN`(推荐MCS) - 接口:`SPIx4`(适配常见Flash芯片) - 存储器型号:选择开发板Flash型号(如`n25q128-3.3v`) - 加载数据:选择`.bit`文件位置 - 点击`Generate`生成`.mcs`文件 3. **烧录到Flash**: ```tcl # 连接设备后执行 open_hw_manager connect_hw_server open_hw_target create_hw_cfgmem -hw_device [lindex [get_hw_devices] 0] -mem_dev [get_cfgmem_parts {n25q128-3.3v-spi-x1_x2_x4}] set_property PROGRAM.BLANK_CHECK 0 [ get_property PROGRAM.HW_CFGMEM [lindex [get_hw_devices] 0]] set_property PROGRAM.ERASE 1 [ get_property PROGRAM.HW_CFGMEM [lindex [get_hw_devices] 0]] program_hw_devices [lindex [get_hw_devices] 0] ``` 烧录成功后需**断电重启**开发板[^4]。 #### 二、Quartus固化流程(Intel/Altera FPGA) 1. **生成编程文件**: - 编译工程后生成`.sof`文件(SRAM Object File) 2. **转换文件格式**: - 打开`File > Convert Programming Files` - 设置: - 输出类型:`JTAG Indirect Configuration File (.jic)` - 配置器件:选择开发板Flash型号(如EPCS64) - 添加`.sof`文件到输入文件列表 - 点击`Generate`生成`.jic`文件 3. **烧录到Flash**: - 打开`Tools > Programmer` - 添加`.jic`文件 - 勾选`Program/Configure`和`Verify` - 点击`Start`开始烧录[^2][^3] #### 三、关键注意事项 1. **Flash型号匹配**: - 必须准确选择开发板Flash型号(查阅开发板手册) - 常见型号:Winbond W25Q128JV(SPI Flash),Micron MT25QL(QSPI) 2. **启动模式设置**: - 开发板需设置为**Flash启动模式** - 通过跳线帽设置:通常标为`BOOT_MODE[0:1]` 3. **烧录后验证**: ```tcl # Vivado验证命令 verify_cfgmem -hw_device [lindex [get_hw_devices] 0] -file {path/to/file.mcs} ``` 返回`Verification complete`表示成功[^4] 4. **常见问题处理**: - **烧录失败**:检查JTAG连接和供电稳定性 - **启动失败**:确认启动模式跳线设置 - **Flash不识别**:更新Vivado/Quartus到最新版本 #### 四、固化原理 固化过程本质是将FPGA配置数据写入非易失性存储器: $$ \text{FPGA配置数据} \xrightarrow{\text{烧写工具}} \text{Flash存储器} $$ 开发板重新上电时: 1. FPGA从Flash读取配置数据 2. 将配置载入SRAM配置存储器 3. 启动逻辑电路执行[^1][^4] > ⚠️ **重要提示**:不同开发板(如Digilent、Terasic等)的Flash型号和启动模式可能不同,请务必查阅具体型号的开发板手册。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值