通过查阅xilinx芯片开发板的相关文件后基本算是解决了这个问题。在FPGA Configuration User Guide和Configuring FPGAs from SPI Serial Flash两个文档中有详细的关于flash下载的配置说明。通过阅读文档知道xilinx主要是JTAG在线调试和SPI Serial Flash两种模式,而SPI Serial Flash包含三种:Third-party programmers (off-board programming)、Indirect in-system programming (JTAG tool vendor or custom solution)和Direct in-system programming (SPI direct interface connect)。在此本人理解是,通过JTAG连接器将程序固化到flash中的是第二种间接模式,但是查看原理图发现flash芯片M25P16并没有直接与JTAG相连的引脚都是连接到FPGA芯片引脚(如图1),文档中也没有作具体解释,故本人认为这种间接模式是通过JTAG将.mcs文件通过FPGA后再传到flash中保存的。
图1 M25P16
对于直接进行SPI模式下载的配置,如图2,以Virtex-5 FPGA的配置为例。图中左边是JTAG在线调试模式,右边是恒忆的M25PXX系列flash芯片,flash芯片和FPGA相关引脚互联,通过类似JTAG接口对通常的SPI四线进行相应的控制输入,既是直接将程序下载到外部flash中,掉电重新上电后程序不会丢失,即可启动。但是这要注意主从配置问题。
图2
现在来说说多芯片控制问题。多芯片中和单芯片一样,下载方式也是上面几种。直接用图说明。
图3 JTAG多芯片模式
图4 并行flash多芯片
图5 串行主从多芯片
图6 FPGA 主从模式
以上仅是本人的一定理解,如有不对,欢迎大交流指正。