FPGA是基于SRAM的架构,所以具有SRAM的特点:数据掉电丢失。因此,FPGA每次重新上电后,需要重新写入配置数据。根据码流载入的方式,可以将配置模式分为两大类:
1. 通过JTAG直接下载到FPGA中,每次重新上电都需要再下载一遍。 (JTAG配置模式)
2. 固化/sysCONFIG加载方式。配置数据存储在外部非易失存储器中,上电后再加载到FPGA中。(主串、主并、从并、从串)
(题外话: CPLD基于非易失性器件(EEPROM FLASH),因此掉电不丢失。所以它的上电不需要配置加载,上电速度快。某些FPGA内部内部集成了Flash,声称CPLD,实则上电仍需要从Flash中加载配置信息,并不能真正意义上称其为CPLD)
具体:
1. 调试阶段常用直接下载的方式。
如图是基于JTAG的下载配置方式
2. 固化/sysCONFIG
FPGA掉电数据仍丢失,但是可以把配置信息存储到非易失器件里,当FPGA上电后,再从该器件里读取配置数据,就可以重新加载FPGA了。
根据谁提供时钟, 分为 FPGA主动加载(master) 和 从加载(slave);
根据加载的数据位宽 分为 串行(serial) 和 并行(parallel) ;
思想都是: 把需要的配置信息存在掉电不丢失的器件里, FPGA上电后, 把信息取出来 。 只是存的器件,取的方式可能有很多分类。
例如,FPGA主动向外部的SPI Flash请求数据,这种配置方式可称为Master_SPI