目录
1. FPGA下载文件简介
FPGA常见的下载文件格式有sof、pof、jic和elf,通常称.sof 文件和.pof 文件为FPGA“硬件”或“固件”文件。
sof为FPGA内部SRAM配置数据,通过JTAG下载,下载后实现FPGA的硬件功能,掉电后即挥发。
pof为配置器件Flash数据,通过AS模式下载到配置器件内,掉电后重新上电时FPGA会自动从配置器件内读出配置数据,然后配置FPGA内部的SRAM,实现FPGA的硬件功能。如果设计中包含NIOS,pof中仅仅包含NIOS的硬件,上电后配置后NIOS存在于FPGA内,NIOS会根据设定在预设的Memory空间取指运行。另外,pof文件可以转换成jic文件,通过JTAG方式下载到EPCS内,因此硬件设计可以省掉AS配置接口。
jic文件为JTAG间接配置文件(JTAG Indirect Configuration File),使用QuartusII File菜单下Convert Programming File命令将.sof文件转换生成,然后使用QuartusII的Tools菜单下Programmer命令下载到FLASH中(注意:jic文件下载到FLASH后必须关机重新加电!)
elf 为NIOS软件,在Nios II IDE中设计编译产生,源文件为C语言。可以通过JTAG加载到NIOS的RAM中运行,也可以通过epcs_controller(通过NIOS的Flash Programmer)加载到配置器件内(位于pof配置数据之后),如果NIOS的复位向量指向epcs_controller,NIOS上电后会从配置器件内取第一条指令执行。如果指定NIOS的复位向量到SDRAM而SDRAM是空的,NIOS会跑飞掉。
2. FPGA下载文件特点比较
下载文件 | 生成工具 | 下载方式 | 下载存储器 | 是否掉电丢失 |
.sof | Quartus II编译生成 | JTAG | FPGA(SRAM) | 丢失 |
.pof | Quartus II编译生成 | AS (Active Slave) | FLASH(EPCS16) | 不会丢失 |
.jic | Quartus II “File / Convert Programming File” | JTAG | FLASH(EPCS16) | 不会丢失 |
.elf | Nios II IDE | JTAG(调试模式) | FPGA(SRAM) | 丢失 |
.elf | Nios II IDE | JTAG(烧写模式) | FLASH(EPCS16) | 不会丢失 |
3. 下载文件的烧写方法
(1)sof
使用Programmer在JTAG接口下进行烧写,烧写时需要勾选Program/Configure。
(2)pof
使用Programmer在AS接口下进行烧写,烧写时需要勾选Program/Configure和Verify。
(3)jic
使用Programmer在JTAG接口下进行烧写,烧写时需要勾选Program/Configure和Verify。
(4)elf
详情请看:
Nios II 程序固化(如何下载elf文件) - 瓜儿不甜的博客 - CSDN博客
https://blog.csdn.net/snaking616/article/details/83064887
4. 参考
[1] NIOS 中的sof、pof和elf关系 - DanielLee_ustb的专栏 - CSDN博客
https://blog.csdn.net/daniellee_ustb/article/details/8539249
[2] Altera FPGA带NiosII内核程序的JTAG下载方法总结 - 百度文库
https://wenku.baidu.com/view/5fd49863f18583d048645950.html
[3] FPGA开发中sof和elf文件的合并与格式转换 - 瓜儿不甜的博客 - CSDN博客
https://blog.csdn.net/snaking616/article/details/83049985
[4] 使用Nios II 10.0sp1 Command Shell [gcc3]合并sof和elf文件——调试记录 - 瓜儿不甜的博客 - CSDN博客
https://blog.csdn.net/snaking616/article/details/83022956
[5] Nios II 程序固化(如何下载elf文件) - 瓜儿不甜的博客 - CSDN博客
https://blog.csdn.net/snaking616/article/details/83064887