qcl0111

FPGA配置及接口电路

0
阅读(2767)

与CPLD 不同,FPGA是基于门阵列方式为用户提供可编程资源的,其内部逻辑结构的形成是由配置数据决定的。这些配置数据通过外部控制电路或微处理器加载到 FPGA内部的SRAM中,由于SRAM的易失性,每次上电时,都必须对FPGA进行重新配置,在不掉电的情况下,这些逻辑结构将会始终被保持,从而完成用户编程所要实现的功能。
FPGA的配置方式分为主动式和被动式,数据宽度有 8位并行方式和串行方式两种。在主动模式下,FPGA在上电后,自动将配置数据从相应的外存储器读入到SRAM中,实现内部结构映射;而在被动模式下, FPGA则作为从属器件,由相应的控制电路或微处理器提供配置所需的时序,实现配置数据的下载。
配置引脚
FPGA的配置引脚可分为两类:专用配置引脚和非专用配置引脚。专用配置引脚只有在配置时起作用,而非专用配置引脚在配置完成后则可以作为普通的I/O口使用。
专用的配置引脚有:配置模式脚 M2﹑M1﹑M0;配置时钟 CCLK ; 配置逻辑异步复位 PROG,启动控制DONE及边界扫描 TDI , TDO , TMS , TCK 。非专用配置引脚有Din , D0 : D7 ,CS ,WRITE , BUSY , INIT。
在不同的配置模式下,配置时钟CCLK可由FPGA内部产生,也可以由外部控制电路提供。
FPGA的配置模式
FPGA 共有四种配置模式:从串模式(Slave Serial),主串模式(Master Serial),从并模式(Slave Parallel/SelectMap)以及边界扫描模式(Boundary-Scan)。具体的配置模式由模式选择引脚M2﹑M1﹑M0决定。表1为不同的配置模式所对应的M2﹑M1﹑M0,配置时钟的方向以及相应的数据位宽。
配置过程
初始化
系统上电后,如果FPGA满足以下条件:
Bank2 的I/O输出驱动电压Vcc0_2大于1V;
器件内部的供电电压Vccint为2.5V,器件便会自动进行初始化。在系统上电的情况下,通过对PROG引脚置低电平,便可以对FPGA进行重新配置。初始化过程完成后,DONE信号将会变低。
清空配置存储器
在完成初始化过程后,器件会将INIT信号置低电平,同时开始清空配置存储器。在清空完配置存储器后,INIT信号将会重新被置为高电平。用户可以通过将 PROG或INIT信号(INIT为双向信号)置为低电平,从而达到延长清空配置存储器的时间,以确保存储器被清空的目的。
加载配置数据
配置存储器的清空完成后,器件对配置模式脚M2﹑M1﹑M0进行采样,以确定用何种方式来加载配置数据。
CRC错误检查
器件在加载配置数据的同时,会根据一定的算法产生一个CRC值,这个值将会和配置文件中内置的CRC值进行比较,如果两者不一致,则说明加载发生错误,INIT引脚将会被置低电平,加载过程被中断。此时若要进行重新配置,只需将PROG置为低电平即可。
START-UP
START-UP阶段是FPGA由配置状态过渡到用户状态的过程。在START-UP完成后,FPGA便可实现用户编程的功能。在START-UP阶段中,FPGA会进行一下操作:
①将DONE信号置高电平,若DONE信号没有置高,则说明数据加载过程失败;
②在配置过程中,器件的所有I/O引脚均为三态,此时,全局三态信号GTS置低电平,这些I/O脚将会从三态切换到用户设置的状态;
③全局复位信号GSR置低电平,所有触发器进入工作状态;
④全局写允许信号GWE置低电平,所有内部RAM有效;
整个过程共有8个时钟周期C0-C7。在默认的情况下,这些操作都和配置时钟CCLK同步,在DONE信号置高电平之前,GTS , GSR , GWE 都保持高电平。
SelectMap并行配置模式
Virtex系列FPGA是Xilinx公司的一款高密度,大容量的现场可编程门阵列,其最大容量可达100万门,最高工作频率可达200M,支持多达16种I/O标准,内置了4个BLOCKRAM。这些特性使它在数字图像处理,通信等领域得到了广泛的应用。
SelectMap模式是一种8位并行配置模式,它是Virtex系列FPGA最快的一种配置模式,其配置时钟最高可达66MHz,每个配置时钟周期内有8位配置数据下载到FPGA内。在对配置速度要求较高的一些应用场合,一般使用SelectMap模式。
SelectMap 端口是一个8位双向数据端口,通过它实现对Virtex的配置。利用SelectMap对Virtex进行配置时,共有8个数据信号D0-D7和7个控制 /状态信号,分别为:CCLK , PROG , DONE , INIT , CS , WRITE , BUSY 。
对Virtex 进行并行配置,应用最为广泛的接口电路便是 CPLD + 并行EPROM。
由于FPGA管脚内部有上拉电阻,因此,当管脚悬空时,便是高电平。
CPLD 所要实现的功能模块包括:地址发生器,写控制寄存器,三态缓冲。其中,PROG为全局复位,DONE为全局三态控制,INIT和BUSY用来控制地址发生器;地址发生器的总线位宽由存储器的容量决定,若EPROM的容量为1MByte,则地址总线需要20位;在配置阶段,CS和WRITE引脚必须置低电平。
对VIRTEX系列的FPGA而言,其配置时钟最高可达66MHz, 但是,在一般情况下,配置时钟是达不到66MHz的,它由PROM的存储时间(tACC)和FPGA配置数据的建立时间(tSMDCC)决定的:晶振频率=1/(tACC+TSMDCC)。VIRTEX的TSMDCC为2.0ns,EPROM的存取时间通常为100ns,在这种情况下,配置时钟为 9.6MHz,要远远低于66MHz,因此,提高配置速度关键是要选用存取速度快的EPROM。
串行菊花链配置方式
串行菊花链配置方式是指将配置数据从串行PROM顺序下载到主FPGA器件和从FPGA器件中。配置时钟CCLK由主FPGA器件提供。
主器件将会被首先配置,在主器件配置完成前,其Dout引脚是没有数据输出的,从器件处于空闲状态。在主器件配置完成后,其Din,Dout便形成直通状态,配置数据通过主器件的Dout进入从器件的Din,对从器件进行配置。
由于菊花链配置方式要求只能有一个用于下载的位流文件,因此,需要在软件开发环境中利用PROM文件生成工具将主器件和从器件的配置位流文件合成为一个文件。
主器件在配置完成后,并不立即启动,进入工作状态。只有菊花链中所有FPGA的DONE引脚都被置为高电平时,即所有的配置数据都下载到相应的FPGA中,各个器件才会启动,其各自的全局三态结束GTS﹑全局复位GSR﹑全局写允许GWE才会置低电平。因此,虽然主从器件的配置是有先后顺序的,但基本上它们是同时进入工作状态的。
结束语
使用并行EPROM对FPGA进行配置时,速度相对较快,存储容量较大;而在一些对空间较为敏感,速度要求不太高的应用中,利用串行方法进行配置,可以减小电路板的面积,同时可以简化系统结构。
---------------------------------------------------------------------------------------------------------------
ALTERA fpga配置 
ALTERA SRAM工艺的FPGA配置方式主要分为两大类:主动配置和被动配置。主动配置方式由PLD器件引导配置操作过程,它控制着外部存储器和初始化过程;而被动配置方式则由外部计算机或控制器控制配置过程。根据数据线的多少又可以将PLD器件配置方式分为并行配置和串行配置两大类。下面以ALTERA APEX20KC系列器件为例,介绍两种在微处理器系统里连接简单且使用方便的配置方式:被动串行配置和被动并行异步配置。
被动串行配置(PS)
被动串行配置的主要配置引脚如下:
nSTATUS: 命令状态下为器件的状态输出。加电后,FPGA立即驱动该引脚到低电位,然后在5μs内释放它。 NSTATUS经过10kΩ电阻上拉到Vcc,如果配置中发生错误,FPGA将其拉低。在配置或者初始化时,若配置电路将nSTATUS拉低,FPGA进入错误状态。
NCONFIG:配置控制输入。低电位使器件复位,由低到高的电位跳变启动配置。
CONF_DONF:双向漏极开路;在配置前和配置期间为状态输出,FPGA将其驱动为低。所有配置数据无错误接收并且初始化时钟周期开始后,FPGA将其置为三态,由于有上拉电阻,所以将其变为高电平,表示配置成功。在配置结束且初始化开始时,CONF_DONE为状态输入:若配置电路驱动该管脚到低,则推迟初始化工作;输入高电位则引导器件执行初始化过程并进入用户状态。
DCLK:时钟输入,为外部数据源提供时钟。
nCE:FPGA器件使能输入。nCE为低时,使能配置过程。单片配置时,nCE必须始终为低。
nCEO:输出(专用于多片器件)。FPGA配置完成后,输出为低。在多片级联配置时,驱动下一片的nCE端。
DATA0:数据输入,在DATA0引脚上的一位配置数据。
PORSEL:专用输入,用来设置上电复位(POR)的延时时间。
nIO_PULLUP:输入。低电平时,在配置前和配置期间使能内部弱的上拉电阻,将用户管脚拉至VCCIO。
几乎所有ALTERA FPGA器件都支持被动串行配置。被动串行配置的是序图如图1所示,在这种配置方式中没有握手信号,配置时钟的工作频率必须在器件允许的范围,最低频率没有限制。为了开始配置,配置管脚和JTAG管脚所在的bank的VCCINT、VCCIO必需供电。FPGA上电后进入复位状态。nCONFIG被置为低电平,使FPGA进入复位状态;nCONFIG由低到高的电位跳变启动配置过程。整个配置包括三个阶段:复位、配置和初始化。当nSTATUS或者 nCONFIG为低电平时,器件脱离复位状态,并且释放漏极开路的nSTATUS管脚。在nSTATUS释放后,被外部电阻拉高,这时nSTATUS和 nCONFIG同时为高电平,FPGA准备接收配置数据,配置阶段开始。在串行配置过程中,FPGA在DCLK上升沿锁存DATA0引脚上的数据。成功接收到所有数据后,释放CONF_DONE引脚,并被外部电阻拉高。CONF_DONE由低到高的转变标志配置结束,初始化开始。此后,DCLK必须提供几个周期的时钟(具体周期数据与DCLK的频率有关),确保目标芯片被正确初始化。初始化完成后,FPGA进入用户工作模式。如果使用了可选的 INIT_DONE信号,在初始化结束后,INIT_DONE被释放,且被外部电阻拉高,这时进入用户模式。DCLK、DATA、DATA0配置后不能三态,可置高或者置低。
在配置过程中,一旦出现错误,FPGA将nSTATUS拉低。系统可以实时监测,当识别到这个信号后,重新启动配置过程。NCONFIG由高变低,再变高可以重新进行配置。一旦nCONFIG被置低,nSTATUS和CONF_DONE也将被FPGA置低。当 nSTATUS和nCONFIG同时为高电平时,配置开始。
配置过程为:由微处理器将nCONFIG置低再置高来初始化配置;检测到nSTATUS变高后,就将配置数据和移位时钟分别送到 DATA0和DCLK管脚;送完配置数据后,检测CONF_DONE是否变高,若未变高,说明配置失败,应该重新启动配置过程。在检测CONF_DONE 变高后,根据器件的定时参数再送一定数量的时钟到DCLK管脚;待FPGA初始化完毕后进入用户模式。如果单片机具有同步串口,DATA0、DCLK使用同步串口的串行数据输出和时钟输出,这时只需要简单把数据字节或字锁存到发送缓冲器就可以了。在使用普通I/O线输出数据时,每输出1个比特,就要将DCLK置低再置高产生一个上升沿。它比ALTERA公司手册给出的电路连接图更有效地使用了存储器。