首先,FPGA相当于一个万能芯片,可以通过编程来实现其逻辑功能。为了实现其功能,就要把这个万能芯片变成自己想要的芯片,因此其内部结构就必须要改变,也就是它内部的资源要重新互联(通过熔丝的断与连),这就必须要有一个文件,这个文件也就是我们经常说的配置文件,因为fpga内部的逻辑结构是有配置数据决定的。
那好,既然我们想要这样的配置文件,那么这个配置文件从哪里来呢?fpga上电前还是一片空白的万能芯片,即使上次用它做成了一个系统,但只要断电,它又恢复了空白,也就是说其万能的内部如果落实到一个具体的结够必须要有电的维持。一旦fpga上电,它首先就会通过一定的严格时序去读取内部SRAM(因为fpga芯片内部嵌有ram,这里装有配置文件的sram应该就是其内部嵌有的ram,比如cyclon系列的M4KRAM等)的配置文件,当然这里不仅仅是读,因为FPGA是基于SRAM结构的,这里读的目的就是实现万能芯片最终的功能,即把硬件也固化了。
我们平时一般都是用JTAG模式下载.sof(SRAM Object File)到fpga中,既然是sof,这里下载到fpga是指下载到fpga的SRAM中,因为下载时候是必须上电的,所以这时候SRAM就有配置文件了,此时的FPGA在一定时序下读取并配置了其逻辑就可以开始运行了。一旦fpga开始工作了,我估计此时的内部SRAM(开始说的M4K等)就可以被我们用来读写或其他应用,比如FIFO啊什么的。也就是说我们的fpga内部ram在fpga没有工作时是装载配置数据的,当fpga开始工作了,就可以覆盖其配置数据了,把它当一个存储器来用。
那如果fpga上电按照初始固定的时序去读取内部的SRAM,发现其中没有配置数据怎么办?这里就要讨论下我们所说的AS下载配置了。如果上电后fpga发现内部SRAM没有配置数据,它又会通过固定引脚和时序去看看有没有配置芯片(比如说epcs系列)存在,如果有(下载到配置芯片内部的是.pof文件)它就会先把配置芯片的数据主动读取到内部sram中,至于后面的过程跟上一段所描述的就一样了。因为配置芯片都是基于ROM的,所以其内部的数据不会改变,因此我们系统掉电后上电通过此过程照样可以启动工作,它需要的时间非常少,只是人反应不过来,就好像fpga内部数据固化了一样。
鉴于上述原因,我们一般调试时下载.sof文件,调试成功定板时下载.pof文件。
注:小弟刚接触fpga,很多东西不了解,最近虽然能用fpga实现一些小功能,但对fpga启动过程很少不了解,为了了结这个纠结,就查了几天的资料,单独介绍这方面的资料很少,自己只能根据这些资料来推测其启动过程了,估计很多理解有误,因为我才刚接触,但是这个纠结不搞定,我都没心思往下学,呵呵。所以下面的理解算是给我自己找的一个暂时性的理解吧,如果哪位大虾发现我理解有错误,非常欢迎指出,谢谢!
用户377235 2014-5-23 15:54
用户377235 2014-4-14 15:16
有帮助
用户466857 2011-7-24 11:22