1.FPGA固化/烧录程序到FLASH原理
在使用JTAG将程序下载到FII-PRA006/010开发板后,如果需要FPGA开发板在关闭电源,再次上电时仍然能跑原先的工程,就需要FPGA固化/烧录程序到FLASH。FII-PRA006/010开发板上有一颗板载FLASH芯片,参考文章PRA006/010 原理图如图1所示:

图1-1 FII-PRA006/010 FLASH芯片

图1-2 FPGA配置
N25Q128A是一颗提供SPI接口(关于SPI协议,参见文章 SPI 通讯协议(1)SPI定义与应用 )的,容量为128 Mbit的芯片。FLASH芯片的作用是将程序固化/烧录保存下来,在断电之后程序不消失,开发板在下次通电后,可以再从FLASH中加载程序,在实际生活中很实用。图1中所示的SPI_CLK时钟驱动FPGA通过SPI_ASDO将程序烧录到FPGA中保存起来,在重新上电后,FPGA会通过SPI_XDATA将程序重新读取到FPGA中。FPGA通过JTAG烧录FLASH 芯片的示意图如图2所示。

图2 FPGA通过JTAG烧录FLASH
2. 固化/烧录步骤
以工程数码管动态扫描显示Verilog实现–秒表为例,在已经编译过工程,管脚锁定,重新编译生成*.sof文件后,打开Programmer,可以看到实际上JTAG是将*.sof文件下载到FPGA上(示意说明JTAG直接连接到FPGA芯片,不需要将*.sof文件下载到FPGA板上),如图3所示。

图3
在完成*.sof文件生成后,遵循以下步骤,生成*.jic文件,并通过JTAG,将其固化/烧录到FLASH:
- 点击主菜单上的File > Convert Programming Files… ,如图4所示:

图4
- 在如下图所示弹出窗口中Programming file type选择JTAG Indirect Configuration File(.jic)。

图5
- 在Configuration device中选择EPCQ128A(兼容FII-PRA006开发板上的N25Q128A FLASH芯片)

图6
- 在Mode中选择Active Serial, 如图7所示:

图7
- 点击Advanced按键,在弹出窗口中按照图8进行设置,注意在勾选方框中,
选择方式不可以,一定要点击到方框中出现“勾选符号”:

图8
- 添加需要转换的*.sof文件:在Input files to convert中点击SOF Data,然后再点击Add File.. 。

图9
- 在弹出窗口中,点击路径..\scan_8seg\output_files,点击scan_8seg.sof,然后点击Open。

图10
- 图11中可以看到在上一步骤中添加的*.sof文件成功,接下来需要添加设备,在Input files to convert中点击Flash Loader ,然后再点击Add Device.. 。

图11
- 在弹出的Select Devices窗口中选择FII-PRA006对应的FPGA器件: Cyclone 10 LP > 10CL006Y,点击OK。

图12
- 在图13中可以看到上个步骤添加的FPGA器件,保持其它上面步骤没有提及的选项默认,对比图13中的设置,如果相同,点击Generate,即可生成*.jic文件,如图14所示。

图13

图14
- 在成功生成*.jic文件后,再次打开Programmer,点击*.sof文件,Delete。

图15
- 再点击Add File… ,在弹出窗口中打开..\scan_8seg\output_files目录,选择scan_8seg.jic,并点击Open。之后如图17所示,可以看出在固化/烧录 FLASH时,JTAG,FPGA,FLASH芯片的连接方式正如上文图2所示,JTAG通过FPGA间接烧录FLASH。

图16

图17
- 勾选*.jic文件之后的Program, 点击Start,如图18所示。烧录完成后,如图19所示,注意此时FPGA可能没有任何实验现象,可以通过reset按键或是重新断电,上电启动程序,之后就可以看到存储在FLASH中的程序被boot到了FPGA上。

图18

图19
至此,FPGA固化/烧录FLASH的步骤已经全部完成。本实验相关的工程下载:
[content_control]
[/content_control]
3.扩展
对于FII-PRX100-D FPGA开发板上FLASH的固化/烧录,参见文章FII-PRX100-D开发板FPGA的烧录和RISC-V 软件代码下载。
对应视频:
老师,我使用18.1版本的quartus软件固化附件中的jic文件后,可以正常的运行工程。
我固化一个简单的fadd1工程的jic文件,程序不能运行。
我再把附件的scan_8seg.zip工程重新生成jic文件后,也是不能运行程序,PRA006板上亮蓝灯。为什么呢?