一、配置过程总结
FPGA的配置方式主要有三种:AS配置方式,PS配置方式,和JTAG配置方式。AS(主动)配置方式需要专门的串行存储器EPCS,由FPGA发送配置信号给EPCS来进行配置;PS(被动)配置方式需要专门的配置芯片或CPLD来进行配置,由配置芯片或CPLD来控制整个FPGA的配置;JTAG配置方式主要用于调试时的配置。
硬件配置采用的是MAX II CPLD来控制FPGA配置的PS配置方式。MAX II从CFI flash中读取配置文件,然后发送配置信号来配置FPGA。
硬件配置过程主要有两个关键点:
1、 PFL(Parallel Flash Loader)宏模块的配置和下载。
PFL宏模块的作用有两个:一个是读写flash,另一个是将从flash中读出的FPGA配置文件配置到FPGA中。在配置PFL宏模块参数的时候要注意option bit sector地址的设置,这个地址是按照一个字节寻址的方式设置的,我这里设置的是0x3FE0000,option bit sector的作用就是记录8个存储配置文件的page的起始地址和终止地址的,以便PFL根据PGM设置的不同来寻址不同的配置文件来进行FPGA的配置。
2、sof文件转换成pof文件。
PFL配置好并下到MAX II中后,需要将FPGA的配置文件(sof文件)转换为pof文件,转换是在Quartus II中完成,在这个文件转换过程中,关键的两部分分别是:option地址的设置和pof文件下载到flash的page地址的设置。 option地址设置和PFL设置中的option bit sector地址一致,而pof文件下载到flash的page地址可以选择不同的page,设置中总共有8个page,可以选择其中一个或几个page来设置它的起始地址和终止地址,这里需要注意的是起始地址必须是从flash中的block的起始地址里选择,其它地址会报错,而终止地址则不限,只要大于下载的pof文件的容量即可。然后完成文件的转换,并将pof文件通过MAX II下到CFI flash中就可以实现FPGA的硬件配置。
软件的配置需要注意三点:
1、 在构建Nios II系统时需要将Nios II cpu的reset启动位置设置成CFI flash。
2、 在构建Nios II系统的时候将ext_flash控制核添加进去,以便可以使用Nios II flash programmer 将软件程序烧写到flash中。
3、 完成Nios II系统的构建后,在配置FPGA之前,需要注意将MSEL设成非PS模式,否则无法将配置文件下到FPGA中。
软件程序下载到flash中需要使用Nios II flash programmer工具, Nios II flash programmer在下载前会将软件程序(elf文件)转换成flash文件,然后再下到flash中,在这个过程中Nios ii flash programmer会自动加入默认的boot loader程序,而且flash文件的烧写地址默认为offset为0x00000000的地方。
这样整个软硬件的配置文件的烧写基本完成,还需要注意在上电之前需要将MSEL拨到PS配置模式,这样FPGA就能完成上电后软硬件的自动配置