首先明确,所谓配置文件,是指,将FPGA配置成某个特定电路的文件,又可以叫内核;所谓程序代码,是指,当FPGA被配置成处理器后,该处理器所执行的程序。
FPGA是基于RAM的可编程逻辑器件,器件掉电后,配置信息会完全丢失。所以需要有外部非易失性存储器来存储配置信息。一般使用专用配置器件,如EPCS4,EPCS16,作为外部存储器。当FPGA上电时,就会把外部存储器的配置信息加载到FPGA中,之后才能正常工作。
当配置文件和程序代码烧写到外部存储器好后,FPGA就可以脱机工作了。每次上电,FPGA都会加载配置文件和程序。加载(被称为配置)的几种方式和过程如下:
FPGA的配置方式:
务必注意,这些是FPGA的配置方式。所以,类似“通过AS方式将配置文件下载到外部存储器”的说法是错误的。因为AS方式是FPGA的配置方式,而不是将配置文件烧写到外部存储器的方式。
主动(AS)方式:由FPGA引导配置操作过程,它控制着外部存储器和初始化过程。EPCS系列如EPCS1,EPCS4配置器件专供AS模式。例如,先通过JTAG接口将配置文件烧写到外部存储器中,当每次上电时,FPGA将从外部存储器中加载配置文件,这就是AS方式。
被动(PS)方式:由外部计算机或控制器控制配置过程。配置通过下载电缆、加强型配置器件(EPC16,EPC8)或智能主机(如微处理器和CPLD)来完成。
JTAG方式。例如,利用PC,通过下载电缆和JTAG接口,将配置文件加载到FPGA中。
FPGA的配置过程:
FPGA上电之后,外部电路需要将配置数据重新载入到芯片内的RAM中。在芯片配置完成之后,内部的寄存器以及I/O管脚必须进行初始化,等到初始化完成以后,芯片才会按照用户设计的功能正常工作。
以下,以FPGA的一般应用和FPGA的SOPC应用为例,比较详细地讨论FPGA配置和外部存储器烧写,理清概念。
FPGA的一般应用
综合器编译完成后,生成了.pof(Programmer Object File)和.sof(SRAM ObjectFile)文件。其中,.pof文件用于通过AS接口烧写到外部存储器中;.sof用于通过JTAG方式配置FPGA。
配置FPGA:
JTAG方式。通过JTAG接口将.sof文件配置到FPGA。
AS方式。通过AS接口将存储器中的配置文件加载到FPGA。
PS方式。不作讨论。
烧写外部存储器(以EPCS为例):
方法一:通过AS接口,将.pof文件直接烧写到外部存储器中。烧写完成后需要释放AS接口,系统才能正常运作。
方法二:将.sof文件转化为.jic文件,通过JTAG接口,将配置文件烧写到外部存储器中。
2 FPGA中,当选用AS 下载pof文件,无法成功时
将sof转换为jic文件,用EPCSx配置,下载时选用JTAG 下载转换后的jic文件。
转换过程如下:
1.Use the Assembler to generate an SRAMObject File (.sof) containing the FPGA configuration data.
1.使用汇编器产生一个包含FPGA配置数据的SRAM目标文件(.sof)。
2.Choose Convert Programming Files (Filemenu).
2.选择转换编程文件(File->ConvertProgramming Files)。
3.Under Output programming file, selectJTAG Indirect Configuration File (.jic) in the Programming file type list.
3. 在输出编程文件下面,在编程文件类型列表中选择JTAG间接配置文件(.jic)。(Output programmingfile:Programming file type:选择JTAGIndirect Configuration File (.jic)。
4.In the Configuration device list, selectthe target EPCS configuration device you want to program.
4.在配置器件列表里,选择你想对之编程的目标EPCS配置器件。(Configurationdevice:你要配置的芯片型号)
5.In the File name box, type the file namefor the JIC File you want to create.
5.在文件名选择栏(Filename:output_file.jic),指定你想生成的JIC文件的名字(把output_file换成你想要的名字)。
6.To specify an existing SRAM Object File(.sof) for conversion to a JIC File, select the SOF Data item under Input filesto convert and click Add File.
6.指定一个现有的SRAM目标文件(.sof)来转换成JIC文件,在Inputfiles to convert下面选择SOF Data,点击Add File...。
7.To specify the target FPGA device thatwill program the EPCS device, select the Flash Loader item under Input files toconvert and click Add Device.
7.指定将要编程的EPCS的FPGA目标器件,选择FlashLoader项,点击Add Device。
8.To generate the JIC file containing theSerial Flash Loader IP and EPCS programming data, click OK.
8.生成包含串行Flash载入IP和EPCS编程数据的JIC文件,点OK。
9.Choose Programmer (Tools menu).
9.编程。
10.If necessary, in the Mode list, selectJTAG.
10.选择JTAG模式。
11.To add the newly created JIC File to theprogramming list, click Add File in the Programmer window and select the JICFile.
11.添加新生成的JIC文件到编程列表。
12.In the same row as the FPGA device inthe programming list, turn on the Program/Configure option.
12.在编程列表中FPGA器件的同一行,开启编程/配置选项。
13.In the same row as the EPCS device in theprogramming list, turn on the Program/Configure option.
13.在编程列表中EPCS器件的同一行,开启编程/配置选项。
14.To configure the FPGA with the SerialFlash Loader IP and then program the EPCS device, click Start in the Programmerwindow.
14.开始编程。
3 sof转换为jic文件失败时
sof转换为jic文件失败,提示错误:文件大小超出存储器大小时。选择sof Data选项,点击Properties,然后在界面中多勾画几个页即可增加下载指定的存储空间。然后重新产生jic文件,即可成功。
FPGA的下载方式(配置方式)与掉电不丢失下载
FPGA的下载方式(配置方式)与掉电不丢失下载
如果还超过最大容量,需对sof文件进行压缩。选中sof文件,点击Properties,选择压缩选项Compression。再重新产生jic文件。
FPGA的下载方式(配置方式)与掉电不丢失下载
FPGA的SOPC应用
综合器编译完成后,Quartus生成了软核.ptf,.pof和.sof文件。其中,.ptf用于之后在Nios Ⅱ IDE中编写在NIOS处理器运行的程序,它是程序和NIOS处理器(FPGA配置文件)的桥梁。在Nios Ⅱ IDE中编写完程序后,编译生成.elf文件。
首先配置FPGA:
JTAG方式。通过JTAG接口将.sof文件配置到FPGA。此时FPGA已被配置成NIOS处理器,注意要为NIOS添加EPCS控制器。
之后烧写外部存储器(以EPCS为例):
利用Nios Ⅱ IDE的工具flash programmer,通过JTAG接口,将FPGA的配置文件.sof(不是.pof)和程序代码.elf一起烧写到外部存储器中