FPGA在线加载模式简介

http://blog.c114.net/html/15/562315-75915.html

 

FPGA是基于SRAM编程的,编程信息在系统掉电时会丢失,每次上电时,都需要从器件外部的FLASHEEPROM中存储的编程数据重现写入内部的SRAM中。FPGA在线加载需要有CPU的帮助,并且在加载前CPU已经启动并工作。中国通信人博客 JG:P L&A u9u w)RMf

        FPGA的加载模式主要有以下几种:

6L/J2{)t}0

       1).PS模式(Passive Serial Configuration Mode),即被动串行加载模式。PS模式适合于逻辑规模小,对加载速度要求不高的FPGA加载场合。在此模式下,加载所需的配置时钟信号CCLKFPGA外部时钟源或外部控制信号提供。另外,PS加载模式需要外部微控制器的支持。中国通信人博客 tD0/H4D:DWK4X

       2).AS模式(Active Serial Configuration Mode),即主动串行加载模式。在AS模式下,FPGA主动从外部存储设备中读取逻辑信息来为自己进行配置,此模式的配置时钟信号CCLKFPGA内部提供。中国通信人博客 Mlz4Mq;sV

       3).PP模式(Passive Parallel Configuration Mode),即被动并行加载模式。此模式适合于逻辑规模较大,对加载速度要求较高的FPGA加载场合。PP模式下,外部设备通过8bit并行数据线对FPGA进行逻辑加载,CCLK信号由外部提供。中国通信人博客E8i5Ed Lj

       4).BS模式(Boundary Scan Configuration Mode),即边界扫描加载模式。也就是我们通常所说的JTAG加载模式。

.?~i(@~.s(nE0

    所有的FPGA芯片都有三个或四个加载模式配置管脚,通过配置来选取不同的加载模式。

%g q9F"O}?j;p0

        首先来介绍下PS加载模式,各个厂商FPGA产品的PS加载端口定义存在一些差异,下面就对目前主流的三个FPGA厂商Altera, Xilinx,Lattice的PS加载方式进行一一介绍。中国通信人博客 bw5/h%|d u

 中国通信人博客"szg2c ] nm

    中国通信人博客Xqz ? zN2_

       Altera公司的FPGA产品PS加载接口如下图所示。

W T:YU4U+Uhm0

    中国通信人博客0b]vG;^k

         1).CONFIG_DONE:加载完成指示输出信号,I/O接口,高有效,实际使用中通过4.7K电阻上拉到VCC,使其默认状态为高电平,表示芯片已加载完毕,当FPGA正在加载时,会将其驱动为低电平。

*n_8u2v+l,QzQIf0

         2).nSTATUS:芯片复位完成状态信号,I/O接口,低有效,为低时表示可以接收来自外部的加载数据。实际使用中通过4.7K电阻上拉到VCC,使其默认状态为高,表示不接收加载数据。中国通信人博客q'[ Xo6j#^ W

        3).nCE:芯片使能管脚,输入信号,低有效,表示芯片被使能。当nCE为高电平时,芯片为去使能状态,禁止对芯片进行任何操作。对于单FPGA芯片单板,nCE直接接GND即可,而对于多FPGA芯片单板,第一片芯片的nCEGND,下一芯片的nCE接上一芯片的nCEO中国通信人博客1~9p1j|9P;o8e^D

        4).nCEO:使能输出信号,当芯片加载完成时,该管脚输出为低电平,未加载完成时输出为高电平。对于单FPGA芯片单板,nCEO悬空,对于多FPGA芯片单板,nCEO接下一芯片的nCE中国通信人博客;NH^}ph wE/](]

        5).nCONFIG:启动加载输入信号,低电平时表示外部要求FPGA需要重新加载,复位FPGA芯片,清空芯片中现有数据。实际使用中该管脚通过4.7K电阻上拉到VCC,使其默认状态为高。

NG(c.~ F%dTy7Q0

        6).DCLK:加载数据参考时钟。PS模式下为输入,AS模式下为输出。中国通信人博客"O Z};ps{t d5dk

        7).DATA0:加载数据输入,输入信号。中国通信人博客?7mv!e ~ d%NH&Z

        8).MSEL[0:3]:加载模式配置管脚。

7]phs ]0

'|P~kF0

     上图为利用CPU扩展I/O端口对多片FPGA进行PS加载的硬件连接实例。CPU可以利用自己的I/O端口来对FPGA进行直接加载,不过,由于CPUI/O端口有限,在大多数情况下,都是利用扩展I/O端口,扩展器件可以是CPLDFPGA,不过在大多数情况下都是CPLD。上图为同步加载方案,两片FPGAnCE管脚都接GND,所以两片FPGA的加载操作会同时开始和结束,此种设计方案适用于两片FPGA来自同一个厂家,并且逻辑数据相同。如果两片FPGA的逻辑数据不同,则需要采取异步加载模式,如下图所示。

3s H!VO.?Al8S0

-T C |qAhl0/%J0

    如上图所示,第一片芯片的nCEO输出管脚与第二片芯片的nCE管脚连接,当第一片芯片加载逻辑时,nCEO输出高电平,将第二片芯片禁止,直到第一片芯片加载完成时,nCEO输出低电平,让第二片芯片使能,然后开始接收加载数据。中国通信人博客M"N#cL2n7XN0_

.T:xaG0W.Mec`0

        FPGA的加载流程

#O!`0hBeKD6{ V0

       1).CPUI/O端口或扩展I/O端口将FPGAnCONFIG驱动为低,通知FPGA去完成加载前的准备工作(复位芯片,清空FPGA内部数据)

Ru)iY;s0

       2).FPGA完成准备工作,将nSTATUS信号驱动为低,表示准备工作已完成,可以接收加载数据。中国通信人博客 t'O Vvx

       3).CPUFPGA加载逻辑,在此器件,FPGACONFIG_DONE驱动为低,表示正在加载。中国通信人博客R5Q l/NJNv+l7M

       4).加载完成后,FPGACONFIG_DONE驱动为高,通知CPU加载已完成。如果加载过程出现错误,需要重新加载的话,FPGA会将CONFIG_DONE保持为低,通知CPU重新加载。中国通信人博客?mlx5eKv,[D

a,[ x?QN-N0

        Xilinx公司FPGA产品的逻辑加载端口信号跟Altera公司的有点差别,如下图所示。

jgcU(V7G+s0

   

C0z'P:mEu2`u&w4l0

         1).DONE:加载完成指示信号,I/O信号,OD输出,低有效,使用时需要上拉到VCC,此信号与Altera芯片的CONFIG_DONE信号功能相同。中国通信人博客+?+N];a f{.`)`%xw

         2).INTI_BI/O信号,OD输出,在配置模式采样之前,此信号为输入,为低电平时,表示延迟配置。在配置模式采样后,用于指示配置过程中是否有CRC错误,为低电平时表示有CRC错误。使用时需要上拉到VCC

V0d7{uO)J`%a0

         3).PROG_B:输入信号,低电平时,异步复位芯片,为接收加载数据作准备。与Altera芯片的nCONFIG信号功能相同。中国通信人博客Y9d(N bS!`}'w@

         4).CCLKI/O信号,JTAG模式外的所有配置模式下的时钟输入。中国通信人博客}K(BN}%rb vSV

         5).D_IN:输入信号,加载数据输入,与CCLK信号的上升沿同步。

yF fg&d E3O QTDx0

         6).D_OUT:输出信号,串行数据输出。当FPGA芯片配置为bypass模式时,D_IN可以直接透传过芯片从D_OUT管脚输出。中国通信人博客zDb3XSv^j

        

V1FQL0a7AP0

       Lattice公司的FPGA产品逻辑加载端口跟Xilinx很相似,如下图所示。中国通信人博客7Q:g!qg#}1{X

   

o W9t;{|m.E,^^0

         CFG是加载模式配置管脚,PROGRAMN是加载控制管脚,输入信号,低电平进入加载状态。DI是加载数据输入管脚,非加载状态下可作为普通I/O端口使用。

j!^W't]0

        下面是Lattice FPGA芯片的PSAS加载模式混合使用的实例,如下图所示。

LX*`!^%p8HF y0

1cuA k!h0

     如上图所示,左边的FPGA使用AS模式,通过CPUSPI接口给自己加载逻辑,时钟信号CCLK由左边的FPGA提供,等左边的FPGA加载完成后,它会作为主控制器给右边的FPGA加载,此时的加载方式为PS模式。CPU通过I/O口与两片FPGAPROGRAMN管脚相连,可以控制加载的先后顺序。中国通信人博客/d7kf dHhO

 

2v0SPc G1q&C0

         PP加载模式

-x'S6tT)L9H0

 Altera芯片的并行加载端口与串行加载差不多,只是数据宽度由1位增加到8位。中国通信人博客r[!rY:i$/

 Xilinx芯片的并行加载端口与串行加载端口相比,多出如下信号线:

@'/'E*Hme0

        1).数据宽度由1位增加到8位;

0|7p(H#ra$zV5^0

        2).DOUT_BUSY:回读数据Ready指示信号。

8E c2uOo$DUMO q l0

        3).CS_B:芯片加载选择管脚,低有效;中国通信人博客 fGa;w ER2a*py

        4).RPWD_B:读写控制信号,低电平为写,高电平为读。中国通信人博客&F9RdE&F2{-qu

Lattice芯片的并行加载端口与串行加载端口相比,多处如下信号线:

fcCk Ou~#U0

        1).CSN/CS1N:加载启动信号,CSNCS1N为高时,D[7:0]BUSY变为高;CSNCS1N同为高时,flow_throughbypass寄存器将被复位;CSNCS1N同为低时,FPGA进入加载状态。中国通信人博客S1{xy'K7c'P9{

        2).WRITEN:读写控制信号,低电平时表示写,高电平时表示读。

@ {.}lud0

        3).BUSY:三态输出,BUSY0时,表示已准备好接收D[0:7]或送出D[0:7];为高电平时表示忙碌。

7g2F5l}{ o GT0

        4).CSON:当flow_through使能时,当第一个FPGA芯片加载完成后,CSON将输出低电平,使第二个FPGA进入加载状态。此信号可连接下一片芯片的CSN, CS1N

Xilinx 芯片 PS 加载的硬件连接方式同 Altera 芯片的相同,这里就不画了,同样的, Xilinx 芯片多片加载时也支持同步和异步两种方式。同步方式下,加载数据分别跟每一片 FPGA 芯片的 D_IN 信号连接。异步方式下,前一芯片的 D_OUT 接后一芯片的 D_IN ,等前一芯片加载完毕后,切换到 bypass 模式,数据直接从 D_OUT 管脚透传过去给后面一片芯片加载。

你可能感兴趣的:(编程,c,工作,扩展,产品,parallel)