和单片机一样,FPGA运行也要有程序在里面,将程序烧写到FPGA内部的过程叫做FPGA的配置。FPGA的配置有很多种,但是无论那一种最终目的都是将程序弄到FPGA内部从而让FPGA能够运行。
从大方向可以分为两类,主动配置或者被动配置。Altera取名为Active和Passive配置,而Xilinx则取名为Master和Slave,根据配置数据位宽,又可以分为串行和并行两类。因此,Altera Cyclone系列 FPGA 的配置具体有以下四种:
1:主动串行,最常用配置,具体过程这样,上电后FPGA从串行的FLASH里面一位一位的读取FLASH中的配置数据,注意,读FLASH的起始地址固定为0地址,数据全部读进FPGA后,由FPGA进行CRC校验,如果错误,FPGA会将nSTATUS管脚拉低表示内部配置出错。所以在配置过程中,nSTATUS管脚应该永远是高的。另外,FPGA还带有一个CRC_ERROR管脚,来显示CRC校验的成功与否。注意,有些Cyclone芯片没有该管脚,如Cyclone IV E系列的低电平1.0V内核器件就没有这个管脚。这种配置好处在于省事,数据的读取都有FPGA出时序,不需要我们考虑,缺点在于速度慢,反正串行的缺点慢是不可避免的,还有就是串行的FLASH为Altera公司的FLASH,Altera的配置文档上面始终始终只有自家的串行配置芯片EPCS系列,因而这个EPCS芯片就身娇价贵了,而且随着大容量的FPGA问世,要求EPCS的容量也越来越大,价格自然越来越贵。另外,早期的采用0.18um工艺的EPCS1和EPCS4只支持20MHZ速度,的确慢了点,后来EPCS16,EPCS64Y以及EPCS128由于容量大了,所以采用了0.15um更甚至0.13um,速度自然也上去了,值得注意的是,自CycloneIII开始,就不在支持EPCS1了,并且只支持0.15um技术的EPCS4。而且为了防止过压和不稳定,CycloneIII开始需要并联保护二极管和电容。不过Altera虽说只有EPCS系列可以用,但是市面上喝多25系列的串行FLASH其实都是支持该模式的,因为指令和EPCS系列的FLASH都一样。估计Altera的EPCS也是25系列的FLASH包了层皮,而性能却大了个折扣,据本人熟悉的25系列的FLASH,速度都要高于EPCS。
2:主动并行,由于串行的确定,速度慢,串行FLASH容量太小,像Altera的大容量FPGA,例如EP4SGX530,最大的EPCS128都不够,还需要对数据压缩才够。所以可以采用并行的FLASH,这样FLASH容量就不在是问题。上电后,由FPGA自动读取并行FLASH里面的数据来配置FPGA自己,数据宽度采用16位,FLASH芯片选型也没有特定要求为Altera的了,只要和Numonyx的P30和P33标准兼容就可以了。这样的配置优点显而易见,就是速度快,FLASH容量不再受限制,还有一个优点就是可以用一块FLASH配置多个FPGA,当然,这个在主动串行配置也可以。缺点就是配置接口或者说管脚复杂,地址线,数据线,控制线加起来四五十更,布线就麻烦啦。不过这种方式也很常见。
3:被动串行,很多产品都用该方式,所谓被动串行,就是上电后FPGA不再出时序,而是由外部控制器将数据按照时序要求一位一位的写到FPGA内部,全部写完后,FPGA工作。这种配置的书序和主动串行配置时序很相像,只是这个时候FPGA为被动器件。由外部的CPLD或者微处理器来配置数据,这种配置,尤其是以前,多用于需要升级FPGA程序的产品中,如远程升级等。这种方法优点就是时序控制简单明了,器件连接也简单,程序升级可控 ,缺点就是需要外部的控制器来配置,速度慢。可能上电后很久FPGA才配置完。
4:被动并行,针对被动串行速度慢的情况下,就推出了这种模式,这时候数据位宽变为8位,这样速度就快了,但是缺点就是对处理器的IO口要多出来7根,布线就麻烦点,但是比主动并行还是好多了。
除以上四种配置让FPGA工作外,还有一种最基本的就是JTAG下载程序,以前Altera的JTAG就扮演了和普通微处理器的JTAG一样的功能,下载程序到FPGA,注意,是到FPGA,调试程序,比如抓数据啊什么的,但是后来增加了两个功能,就是可以通过JTAG下载主动串行/主动并行外挂的FLASH,原理就是先在FPGA内部用JTAG下载一个Altera的IP,然后由这个IP将FPGA程序写到串行或者并行的FLASH中,其实说白了就是FLASH的一个写控制器。
另外,从CycloneIII开始,芯片内部集成一种在线升级模块,Altera命名为SEU Mitigation,有了它,FPGA的IO口可以直接接收FPGA程序 ,然后将程序写到外挂的FLASH中空余的部分,写完以后通过该模块对写的程序进行检查是不是有效程序,CRC是否有错,然后该模块用心的程序覆盖之前0地址开始的程序,再复位FPGA,这样FPGA上电后就更新了程序。不过改功能只支持主动串行和主动并行配置,因为这两个外挂FLASH。这样,远程升级就不再需要微控制器了。再说明一点,如果外挂的FLASH还有空间剩余,咱们也可以用来存咱们需要的数据,或者NiosII的程序,而不像以前配置FLASH之能用于配置。这个已经是后话。
除此之外,CycloneV系列更是增加了CvP配置。并且主动串行支持四位,被动并行支持8位和16位,具体如何,可能还要等CycloneV的详细Datasheet出来,我们一起期待。总之,FPGA的配置和FPGA本身一样越来越神奇,让我们一起期待。
以上的详细内容,各位可以去看各个Cyclone的DataSheet,里面都有详细的介绍。在此也只是抛砖引玉。
用户1305701 2014-3-6 15:43
用户1372824 2013-8-3 16:55
路边侬 2013-7-12 09:26
用户1654288 2013-5-17 14:42
用户1557450 2013-3-21 13:33
用户1604124 2013-1-30 09:19
用户377235 2012-12-10 22:59
用户377235 2012-12-10 22:58
用户1433395 2012-12-8 10:54
用户377235 2012-12-6 10:03
很好的资料,我想要一份,可以给我发吗?我是专业做大功率TVS管的,您能不能把TVS具体使用在什么地方和线路说的具体一点,我的邮箱renwei.rw@163.com,先谢谢您了。