首先,FPGA相当于一个万能芯片,可以通过编程来实现其逻辑功能。为了实现其功能,就要把这个万能芯片变成自己想要的芯片,因此其内部结构就必须要改变,也就是它内部的资源要重新互联(通过熔丝的断与连),这就必须要有一个文件,这个文件也就是我们经常说的配置文件,因为fpga内部的逻辑结构是有配置数据决定的。
那好,既然我们想要这样的配置文件,那么这个配置文件从哪里来呢?fpga上电前还是一片空白的万能芯片,即使上次用它做成了一个系统,但只要断电,它又恢复了空白,也就是说其万能的内部如果落实到一个具体的结够必须要有电的维持。一旦fpga上电,它首先就会通过一定的严格时序去读取内部SRAM(因为fpga芯片内部嵌有ram,这里装有配置文件的sram应该就是其内部嵌有的ram,比如cyclon系列的M4KRAM等)的配置文件,当然这里不仅仅是读,因为FPGA是基于SRAM结构的,这里读的目的就是实现万能芯片最终的功能,即把硬件也固化了。(FPGA 没有DDR,内部是使用的SRAM原理,断电消失。
FPGA使用的程序是使用外部的EPCS配置芯片,也就是串行FLASH芯片。在FPGA上电时,FPGA自动从Flash中读取配置数据,DDR应该是外部自己加的SDRAM,可以作为数据暂存使用,里面的数据作为一个缓冲,而不能在其中存储数据,断电后消失,只在运算的过程中使用。)
我们平时一般都是用JTAG模式下载.sof(SRAM Object File)到fpga中,既然是sof,这里下载到fpga是指下载到fpga的SRAM中,因为下载时候是必须上电的,所以这时候SRAM就有配置文件了,此时的FPGA在一定时序下读取并配置了其逻辑就可以开始运行了。一旦fpga开始工作了,我估计此时的内部SRAM(开始说的M4