随着半导体和芯片技术的飞速发展,现在的FPGA集成了越来越多的可配置逻辑资源、各种各样的外部总线接口以及丰富的内部RAM资源,使其在国防、医疗、消费电子等领域得到了越来越广泛的应用。但是FPGA 大多数是基于SRAM工艺的,具有易失性,因此FPGA 通常使用外部存储器件(如PROM)存储必需的配置信息,防止设备掉电后FPGA丢失自我配置能力。但FPGA配置在一定的条件和时间下才能成功完成,随着FPGA容量的不断攀升,配置时间也被大大加长,上电时如不充分考虑FPGA的配置时序以及对其他器件的影响,根据常规经验设计电路,往往会影响系统其他外围器件的正常工作,严重时会导致整个系统的失效。因此,FPGA的配置方式和上电时序已成为系统设计的重要一环。
2 Xilinx FPGA的配置方式和特点Xilinx FPGA支持多种配置方式,其中包括串行主模式(Master Serial)、串行从模式(Slave Serial)、并行主模式(Master SelectMAP)、并行8 位从模式(Slave Select MAP8)、并行32 位从模式(Slave Select MAP32),以及边界扫描模式(JTAG),Virtex5器件后还增加了对SPI和BPI接口Flash的支持。
现在设计中通常用到的是串行主模式和并行主模式两种配置方式,它们共同的特点是电路硬件设计时不需再接入一个配置时钟,配置时由FPGA 自身提供时钟,这样减小了PCB设计难度以及时钟带来的时序干扰。但是它们也有各自的优缺点。并行配置的电路设计相对复杂,需要使用到一些多功能的配置引脚,如果在复杂或高速的配置电路中还要考虑到数据线的阻抗匹配和等长,从而加大了PCB设计难度。因此,在选择FPGA配置方式时需要根据外围器件的上电初始化时间和受FPGA配置影响程度以及电路复杂特性等正确选择,同时也需要对必要的配置管脚做相应处理,后面会进行详细分析。表1为FPGA 重要的配置管脚和定义,可以看到,有些配置管脚在并行模式下才需要用到。
3 Xilinx FPGA上电配置时
FPGA和CPLD不同,上电不能直接工作,它需要一个配置过程。Xilinx FPGA需要经过8个步骤才能运行正常的运行用户逻辑,整个流程如图1所示
3.1 FPGA上电启动
FPGA工作的第一步就是给器件加电。Xilinx要求VCCINT(核心电压)先动,然后再是VCCO(I/O电压),最坏情况是它们之间不能相差1s以上。在并行配置模式下,VCCO_2 要求参考电压必须和PROM参考电压相同,上电的过程如图2所示。其中,TPOR(Power-on-Reset)为5~30ms,T(PL)(Program Latency)为Max 4ms,T(icck)(CCLK (output delay)为Min500ns。
在系统正常上电或者PROG-B是一个低脉冲时,FPGA开始配置寄存器空间。这段时间除定义好的配置管脚外,其他I/O 管脚均被设置为高阻态(High-Z)。经多次测试,这个阶段需要30ms左右的时间。
FPGA启动阶段最后一步就是配置启动模式。在PROG-B变高时,FPGA 开始采集配置方式引脚(M3、M2、M1),并同时驱动CCLK输出。在这个阶段,有两种方法可以延迟FPGA的配置时序,一种是拉低INIT-B管脚,这是由于FPGA检测到自身还没有初始化完毕,不会进行接下来的 *** 作步骤,直到INIT-B管脚变高。另一种就是拉低PROG-B管脚,使FPGA还处于等待配置状态。
3.2 FPGA数据加载
FPGA 正常数据加载前,需要做一个器件与PROM之间的同步检查。方法是传输一个特殊的32位数值(0xAA995566)到FPGA中,提示FPGA下面开始传输的是配置数据。这个步骤对用户来说是透明的,因为在Xilinx ISE Bitstream Generator 中生成的.bit文件中已经自动加入了这个校验码。
在做完配置前的通信同步后,FPGA 与PROM之间还无法识别相互间是个什么器件,于是Xilinx 就给每一个型号的FPGA 设计了一个唯一的器件ID号,这个ID号可以在Xilinx 配置手册中查到。如上述例子中用到的XC4VS35,其ID 号为0x02088093。FPGA需要从PROM中读出这个器件号和自身比对,如果相同就继续下面的步骤,不同的话,配置失败,并打印出配置故障信息。
所有准备工作正常完成后,FPGA 开始载入配置文件。这一步对大多数用户也是透明的,由器件自行完成。这也是配置过程中最耗时的步骤,时间从100ms到几秒不等。这个过程中,FPGA 的所有可配置I/O根据HSWAPEN管脚的设置变为弱上拉(HSWAPE=1)或者高阻态(HSWAPE=0)。这个阶段的I/O管脚还没有变为用户需要的状态,也最有可能影响到其他外围电路的上电时序和运行。设计硬件电路时要特别注意并采取必要措施,如加入上下拉电阻,改变器件加电顺序等来尽量避免或减少FPGA配置时对电路其他器件的影响。
配置文件载入完成后,为了验证数据的正确性,FPGA还自动设置了CRC校验(这个在ISE配置选项中也可以去掉,但是为了确保载入数据的正确性,这个是必须选择的)。如果CRC 校验不正确,FPGA会自动把INIT-B拉低,放弃这次配置。用户必须把PROG-B引脚拉低,才能进行重新配置。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)