目录
对于 SRAM 工艺的 FPGA 芯片,由于其配置存储单元是易失性的,FPGA 在断电之后内部配置信息将会丢失。为了让 FPGA 在上电时保持之前的电路功能,我们需要使用外部非易失性存储器(通常是 SPI FLASH)存储 FPGA 的位流。
如果 FLASH 存储空间足够大,可以在 FLASH 中存储多个位流,当一个位流加载异常时,FPGA 将尝试加载另一个位流,通常保证后一个加载的位流能正常加载,称为 golden 位流。
图 1 紫光 Logos 系列器件上电加载流程
配置看门狗
上电加载时,看门狗电路负责检测配置过程的超时。每经过 512 个 System Clock 时钟周期,看门狗数值减一,当看门狗数值为 0 时,触发版本回退。
在 Project Setting 中,使能看门狗,并配置看门狗计数器。
图 2 紫光 Project Setting 界面
生成烧写文件
位流不能直接烧写进外部 FLASH,需要借助软件自带的工具进行转换。紫光 Logos 系列器件外部 FLASH 烧写文件为 sfc 文件,生成带 golden 程序的 sfc 文件的步骤如下:
(1)在 PDS 软件中,选择 Tools -> Configuration,打开 Fabric Configuration 工具;
(2)在配置界面中,右键点击器件,选择 Generate Multi/Dual Boot File;
(3)数据流类型选 Multi Boot Data Stream,点击 Next;
(4)选择 golden 位流和 applied 位流,并设置对应的起始地址,点击 Next;
(5)FLASH 读模式选 SPI X1, 24-bit address,点击 Next;
(6)检查配置信息,点击 Next;
(7)最后点击 Finish,就得到带 golden 程序的 sfc 文件。
上板验证
打开配置工具,将 sfc 文件烧写进外部 FLASH,断电重启 FPGA,可以看到 FPGA 状态寄存器 fallback 值为 0。
将 FLASH 中的 applied 位流擦除,断电重启 FPGA,这时 FPGA 状态寄存器 fallback 值变为 1,说明启用了 golden 位流。