FPGA开发全攻略——配置电路
原文链接:
5.5 FPGA相关电路设计知识
FPGA的相关电路主要就是FPGA的配置电路,其余的应用电路只要将外围芯片连接到FPGA的通用I/O管脚上即可。
5.5.1 配置电路
FPGA配置方式灵活多样,根据芯片是否能够自己主动加载配置数据分为主模式、从模式以及JTAG模式。典型的主模式都是加载片外非易失( 断电不丢数据) 性存储器中的配置比特流,配置所需的时钟信号( 称为CCLK) 由FPGA内部产生,且FPGA控制整个配置过程。从模式需要外部的主智能终端( 如处理器、微控制器或者DSP等) 将数据下载到FPGA中,其最大的优点就是FPGA 的配置数据可以放在系统的任何存储部位,包括:Flash、硬盘、网络,甚至在其余处理器的运行代码中。JTAG 模式为调试模式,可将PC 中的比特文件流下载到FPGA中,断电即丢失。此外,目前赛灵思还有基于Internet 的、成熟的可重构逻辑技术System ACE解决方案。
(1) 主模式
在主模式下,FPGA上电后,自动将配置数据从相应的外存储器读入到SRAM中,实现内部结构映射;主模式根据比特流的位宽又可以分为:串行模式( 单比特流) 和并行模式( 字节宽度比特流) 两大类。如:主串行模式、主SPI Flash 串行模式、内部主SPI Flash串行模式、主BPI 并行模式以及主并行模式,如图5-19所示。
(2) 从模式
在从模式下,FPGA 作为从属器件,由相应的控制电路或微处理器提供配置所需的时序,实现配置数据的下载。从模式也根据比特流的位宽不同分为串、并模式两类,具体包括:从串行模式、JTAG模式和从并行模式三大类,其概要说明如图5-20所示。
(3)JTAG模式
在JTAG模式中,PC和FPGA通信的时钟为JTAG接口的TCLK,数据直接从TDI进入FPGA,完成相应功能的配置。
图5-19 常用主模式下载方式示意图
图5-20 常用的从模式下载方式示意图
目前,主流的FPGA芯片都支持各类常用的主、从配置模式以及JTAG,以减少配置电路失配性对整体系统的影响。在主配置模式中,FPGA自己产生时钟,并从外部存储器中加载配置数据,其位宽可以为单比特或者字节;在从模式中,外部的处理器通过同步串行接口,按照比特或字节宽度将配置数据送入FPGA芯片。此外,多片FPGA可以通过JTAG菊花链的形式共享同一块外部存储器,同样一片/ 多片FPGA也可以从多片外部存储器中读取配置数据以及用户自定义数据。
Xilinx FPGA的常用配置模式有5 类:主串模式、从串模式、Select MAP模式、Desktop配置和直接SPI配置。在从串配置中,FPGA接收来自于外部PROM或其它器件的配置比特数据,在FPGA产生的时钟CCLK的作用下完成配置,多个FPGA可以形成菊花链,从同一配置源中获取数据。Select MAP模式中配置数据是并行的,是速度最快的配置模式。SPI配置主要在具有SPI接口的FLASH电路中使用。下面以Spartan-3E系列芯片为例,给出各种模式的配置电路。
5.5.2 主串模式——最常用的FPGA配置模式
1.配置单片FPGA
在主串模式下,由FPGA的CCLK管脚给PROM提供工作时钟,相应的PROM在CCLK的上升沿将数据从D0管脚送到FPGA的DIN管脚。无论PROM芯片类型( 即使其支持并行配置),都只利用其串行配置功能。Spartan3E系列FPGA的单片主串配置电路如图5-21所示。主串模式是赛灵思公司各种配置方式中最简单,也最常用的方式,基本所有的可编程芯片都支持主串模式。
图5-21 Spartan-3E主串模式配置电路
2.配置电路的关键点
主串配置电路最关键的3点就是JTAG链的完整性、电源电压的设置以及CCLK信号的考虑。只要这3步任何一个环节出现问题,都不能正确配置PROM芯片。
(1)JTAG链的完整性
FPGA和PROM芯片都有自身的JTAG接口电路,所谓的JTAG链完整性指的是将JTAG连接器、FPGA、PROM的TMS、TCK连在一起,保证从JTAG连接器TDI到其TDO之间,形成JTAG连接器的“TDI →(TDI~TDO) → (TDI~TDO) → JTAG连接器TDO”的闭合回路,其中(TDI~TDO) 为FPGA或者PROM芯片自身的一对输入、输出管脚。图5-12中配置电路的JTAG链从连接器的TDI到FPGA的TDI,再从FPGA的TDO到PROM的TDI,最后从PROM的TDO到连接器的TDO,形成了完整的JTAG链,FPGA芯片被称为链首芯片。也可以根据需要调换FPGA和PROM的位置,使PROM成为链首芯片。
(2) 电源适配性
如图5-22所示,由于FPGA和PROM要完成数据通信,二者的接口电平必须一致,即FPGA相应分组的管脚电压Vcco_2必须和PROM Vcco的输入电压大小一致,且理想值为2.5V,这是由于FPGA的PROG_B和DONE管脚由2.5V的Vccaux供电。此外,由于JTAG连接器的电压也由2.5V的Vccaux提供,因此PROM的VCCJ也必须为2.5V。因此,如果接口电压和参考电压不同,在配置阶段需要将相应分组的管脚电压和参考电压设置为一致;在配置完成后,再将其切换到用户所需的工作电压。当然,FPGA和PROM也可以自适应3.3V的I/O电平以及JTAG电平,但需要进行一定的改动,即添加几个外部限流电阻,如图5-22所示。在主串模式下,XCFxxS系列PROM的核电压必须为3.3V,XCFxxP系列PROM的核电压必须为1.8V。
图5-22 3.3V的JTAG配置电路示意图
图5-22中的RSER、RPAR这两个电阻要特别注意。首先,RSER= 68Ω将流入每个输入的电流限制到9.5mA ;其次,N= 3三个输入的二极管导通,
RPAR = VCCAUX min/ NIIN = 2.375V/(3*9.5mA)
=83 Ω或82 Ω ( 与标准值误差小于5%的电阻 )
(3)CCLK的信号完整性
CCLK信号是JTAG配置数据传输的时钟信号,其信号完整性非常关键。FPGA 配置电路刚开始以最低时钟工作,如果没有特别指定,将逐渐提高频率。CCLK信号是由FPGA内部产生的,对于不同的芯片和电平,其最大值如表F-1所示。
表5-1 不同PROM芯片的最大配置时钟频率
3.配置多片FPGA
多片FPGA的配置电路和单片的类似,但是多片FPGA之间有主(Master)、从(Slave) 之分,且需要选择不同的配置模式。两片Spartan 3E系列FPGA的典型配置电路如图5-23所示,两片FPGA存在主、从地位之分。
图5-23 主从模式下两片FPGA的配置电路
5.5.3 SPI串行Flash配置模式
1.SPI串行配置介绍
串行Flash的特点是占用管脚比较少,作为系统的数据存贮非常合适,一般都是采用串行外设接口(SPI 总线接口)。Flash 存贮器与EEPROM根本不同的特征就是EEPROM可以按字节进行数据的改写,而Flash只能先擦除一个区间,然后改写其内容。一般情况下,这个擦除区间叫做扇区(Sector),也有部分厂家引入了页面(Page) 的概念。选择Flash产品时,最小擦除区间是比较重要的指标。在写入Flash时,如果写入的数据不能正好是一个最小擦除区间的尺寸,就需要把整个区间的数据全部保存另外一个存贮空间,擦除这个空间,然后才能重新对这个区间改写。大多数Flash工艺更容易实现较大的擦除区间,因此较小擦除区间的Flash 其价格一般会稍贵一些。此外,SPI是标准的4线同步串行双向总线,提供控制器和外设之间的串行通信数据链路,广泛应用于嵌入式设备中。
赛灵思公司的新款FPGA都支持SPI接口。SPI总线通过4根信号线来完成主、从之间的通信,典型的SPI系统中常包含一个主设备以及至少一个从设备,在FPGA应用场合中,FPGA芯片为主设备,SPI 串行FLASH为从设备。4个SPI接口信号的名称和功能如表5-2所示。
表5-2 SPI接口信号列表
一个主芯片和一个从芯片的通信接口如图5-24所示。FPGA通过SCLK控制双方通信的时序,在SS_n为低时,FPGA通过MOSI 信号线将数据传送到FLASH,在同一个时钟周期中,FLASH通过SOMI将数据传输到FPGA芯片。无论主、从设备,数据都是在时钟电平跳转时输出,并在下一个相反的电平跳转沿,送入另外一个芯片。
图5-24 SPI接口连接示意图
其中SCLK信号支持不同的速率,一般常采用20MHz。通过SPI 接口中的CPOL和CPHA这两个比特定义了4种通信时序。其中,CPOL信号定义了SCLK的空闲状态,当CPOL为低时,SCLK的低电平为空闲状态,否则其空闲状态为高电平;CPHA定义了数据有效的上升沿位置,当其为低时,数据在第1 个电平跳转沿有效,否则数据在第2个电平跳转沿有效。其相应的时序逻辑如图5-25所示。
图5-27 CPHA为低时SPI的总线时序示意图
图5-28 CPHA为高时SPI的总线时序示意图
可以通过增加片选信号SS_n的位宽来支持多个从设备,SS_n的位宽等于从设备的个数。对于某时刻被选中的从设备和主设备而言,其读写时序逻辑和图5-29一样。
图5-29 多个从芯片的连接电路图
SPI串行FLASH作为一种新兴的高性能非易失性存储器,其有效读写次数高达百万次,不仅引脚数量少、封装小、容量大,可以节约电路板空间,还能够降低功耗和噪声。从功能上看,可以用于代码存储以及大容量的数据和语音存储,对于以读为主,仅有少量擦写和写入时间的应用来说,支持分区( 多页) 擦除和页写入的串行存储是最佳方案。
2.SPI串行FLASH配置电路
SPI串行配置模式常用于已采用了SPI串行FLASH PROM的系统,在上电时将配置数据加载到FPGA中,这一过程只需向SPI串行发送一个4字节的指令,其后串行FLASH中的数据就像PROM配置方式一样连续加载到FPGA中。一旦配置完成,SPI中的额外存储空间还能用于其它应用目的。
1)SPI 配置电路
虽然SPI接口是标准的4线接口,但不同的SPI FLASH PROM芯片采用了不同的指令协议。FPGA芯片通过变量选择信号VS[2:0] 来定义FPGA和SPI FLASH的通信方式、FPGA的读指令以及在有效接收数据前插入的冗余比特数。常用SPI FLASH与FPGA的有效操作配置如表5-3所示,其余的VS[2:0] 配置留有它用。
表5-3 赛灵思芯片所支持的SPI FLASH存储器以及配置列表
从整体上看来,控制SPI串行闪存比较容易,只需要使用简单的指令就能完成读取、擦除、编程、写使能/禁止以及其它功能。所有的指令都是通过4 个SPI 引脚串行移位输入的。
图5-30 支持快读写的串行FLASH配置电路示意图
不同型号的FPGA芯片具有数目不同的从设备片选信号,因此所挂的串行芯片数目也就不一样。例如:Spartan-3E系列FPGA芯片只有1位SPI从设备片选信号,因此只能外挂一片SPI串行FLASH芯片。在SPI串行FLASH配置模式下,M[2:0]=3’b001。FPGA 上电后,通过外部SPI 串行FLASH PROM完成配置,配置时钟信号由FPGA芯片提供时钟信号,支持两类业界常用的FLASH。
图5-30给出了Spartan3E系列FPGA支持0X0B快速读写指令的STMicro 25系列PROM的典型配置电路。其中的Flash芯片需要Flash编程器来加载配置数据;单片的FPGA芯片构成了完整的JTAG链,仅用来测试芯片状态,以及支持JTAG在线调试模式,与SPI配置模式没有关系。
从中可以看出,SPI Flash容量大,适合于大规模设计场合。但由于SPI配置需要专门的Flash编程器,且操作起来比较麻烦,不适合在产品研发阶段调试FPGA芯片,因此一般还会添加JTAG链专门用于在线调试。
图5-31 Atmel SPI串行FLASH配置电路示意图
图5-31给出了Spartan3E系列FPGA支持SPI协议的Atmel公司“C”、“D”系列串行Flash芯片的典型配置电路。这两个系列的FLASH芯片可以工作在很低温度,具有短的时钟建立时间。同样,单片的FPGA芯片构成了完整的JTAG链,仅用来测试芯片状态,以及支持JTAG在线调试模式,与SPI 配置模式没有关系。
表5-3给出了SPI配置接口的连线说明,每个SPI Flash PROM采用的名字略有不同,SPI Flash PROM的写保护信号和保持控制信号在FPGA配置阶段是不用的。其中HOLD管脚在配置阶段必须为高,为了编程Flash存储器,写保护信号必须为高。
5.5.4 从串配置模式
在串行模式下,需要微处理器或微控制器等外部主机通过同步串行接口将配置数据串行写入FPGA芯片,其模式选择信号M[2:0]=3’b111。典型的Spartan 3E系列FPGA单片配置电路如图5.5.11所示。DIN输入管脚的串行配置数据需要在外部时钟CCLK 信号前有足够的建立时间。其中单片FPGA 芯片构成了完整的JTAG链,仅用来测试芯片状态,以及支持JTAG 在线调试模式,与从串配置模式没有关系。外部主机通过下拉PROG_B启动配置并检测INIT_B 电平,当INIT_B 为高时,表明FPGA 做好准备,开始接收数据。此时,主机开始提供数据和时钟信号直到FPGA 配置完毕且DONE 管脚为高,或者INIT_B 变低表明发生配置错误才停止。整个过程需要比配置文件大小更多的时钟周期,这是由于部分时钟用于时序建立,特别当FPGA 被配置为等待DCM锁存其时钟输入。
图5-32 FPGA从串配置电路示意图
此外,从串配置模式也可配置多片FPGA芯片,典型的两片Spartan 3E系列FPGA的从串配置电路如图5-33所示。所有芯片的CCLK信号都有主控设备提供,靠近主控设备的FPGA要充当桥梁的作用,将配置数据转发到第二个FPGA芯片。可以看到采用从串配置的好处主要在于节省电路板面积,并使得系统具备更大的灵活性。
图5-33 多片FPGA从串模式配置电路
5.5.5 JTAG配置模式
1.JTAG配置电路
赛灵思公司的FPGA芯片具有IEEE 1149.1/1532协议所规定的JTAG接口,只要FPGA上电,不论模式选择管脚M[2:0] 的电平,都可用采用该配置模式。但是将模式配置管脚设置为JTAG模式,即M[2:0]=3’b101时,FPGA芯片上电后或者PROG_B管脚有低脉冲出现后,只能通过JTAG模式配置。JTAG模式不需要额外的掉电非易失存储器,因此通过其配置的比特文件在FPGA断电后即丢失,每次上电后都需要重新配置。由于JTAG模式已更改,配置效率高,是项目研发阶段必不可少的配置模式。典型的Spartan 3E系列芯片的JTAG配置电路如图5-34所示。
图5-34 JTAG模式配置电路示意图
5.5.6 System ACE配置方案
随着FPGA成为系统级解决方案的核心,大型、复杂设备常需要多片大规模的FPGA。如果使用PROM进行配置,需要很大的PCB面积和高昂的成本,因此很多情况下都利用微处理由从模式配置FPGA芯片,但该配置方案容易出现总线竞争且延长了系统启动时间。为了解决大规模FPGA的配置问题,赛灵思公司推出了系统级的System ACE(Advanced Configuration Environment) 解决方案。
System ACE可在一个系统内,甚至在多个板上,对赛灵思的所有FPGA进行配置,使用Flash存储卡或微硬盘保存配置数据,通过System ACE控制器把数据配置到FPGA中。目前,System ACE有System ACE
CF(Compact Flash)、System ACE SC(Soft Controller) 以及System ACE MPM(Muti-Package Module) 三种。读者需要注意的是:System ACE SC/MPM 是和System ACE CF 独立的解决方案。典型的ACE 接口以及系统组成如图5-35 所示。
图5-35 典型的ACE接口以及系统组成示意图
1.System ACE CF解决方案
System ACE CF的核心是System ACE CF存储设备和System ACE控制器芯片。System ACE CF存储设备包括赛灵思的ACE Flash卡或其它厂家的Compact Flash卡以及IBM的微硬盘。Compact Flash卡的容量为32MB~4GB,微硬盘的容量为2GB~6GB,至少可配置数百片FPGA芯片。
System ACE CF控制器提供了存储单元和FPGA器件之间的接口,PC和存储器的标准JTAG接口。控制器芯片默认的配置模式也是通过边界扫描的方式将数据配置到FPGA 链中,同样可由边界扫描链的测试和编程接口来辅助进行系统原形的调试,其主要特点有:
- 支持赛灵思所有FPGA芯片的配置;
- 以最小的PC板空间实现多达8Gb的配置 ;
- 包括高达152Mbps的配置速率;
- 利用带有嵌入式处理器核的FPGA进行系统调节;
- 管理多个比特流( 全部或部分),并按需要对其进行激活;
- 包含处理器核初始化;
- 软件存储加密;
- 可移动存储器件;
- 降低了定制配置系统的成本,支持大多数 CompactFlash卡,包括Microdrive单元;包含内置式微处理器接口,可以直接调整FPGA配置;释放设计资源。
图5-36 System ACE CF配置电路示意图
Compact Flash接口是ACE控制器的关键接口,可连接Compact Flash卡、标准的Compact Flash模块以及IBM微硬盘。Compact Flash可以进行拆卸,因此对存储内容进行修改和升级以及更换容量都非常方便。Compact Flash接口由Compact Flash控制器和Compact Flash仲裁器两部分组成。由System ACE CF配置FPGA的接口电路如图5-36所示。
2.System ACE SC解决方案
System ACE SC为用户提供了自主性,用户可以自由地选择每一部分的元件,可将其置于电路板的任何位置,且所有的功能在一个独立的FPGA中完成,并不需要整合其他组件。System ACE SC有4个主要接口:边界扫描JTAG接口、系统控制接口、Flash存储器接口以及FPGA 接口,如图5-37所示。
图5-37 System ACE SC接口示意图
其中JTAG接口主要提供边界扫描测试和对具有JTAG接口的Flash存储器通信;Flash接口主要和外边的Flash芯片通信,读取存储器内的内容以及对存储器进行编程;系统控制接口主要提供输入时钟、配置控制信号和配置状态信号等;FPGA 接口主要用于配置FPGA,可通过从串、从并以及Selec tMAP等配置模式。
System ACE SC和System ACE CF的主要区别在于,System ACE SC的控制器是一个软核逻辑,而不是芯片,需要和设计一起下载到FPFA中。其余区别如表5-4所列。
表5-4 System ACE CF和System ACE SC的区别
典型的System ACE SC 配置电路如图5-38 所示。
图5-38 System ACE SC配置电路示意图
3.System ACE MPM解决方案
System ACE MPM是一个整合的组件解决方案,包括FPGA和PROM组成的配置控制组件和一个Flash存储组件,并封装为一个模块,通过尽可能少的组件来实现配置电路。赛灵思公司有16M、32M 以及64M位低密度的System ACE MPM。System ACE MPM 有4 个主要接口,和System ACE SC 的接口一样,其特征和功能也与System ACE SC 一样。二者的区别在于:System ACE MPM 封装了整个配置模块,而System ACE SC 允许用户自行配置,其接口电路如图5-39 所示。
图5-39 System ACE MPM接口电路示意图
System ACE MPM是赛灵思公司第一个支持位流压缩的配置方案,支持多种配置模式,同时可多达8个FPGA链的从串配置模式和多达4个FPGA的Select MAP配置模式,最大配置速率为152Mbps,同时又可最大限度地减小电路板空间和连线。典型的System ACE MPM 配置电路如图5-40所示。总之,System ACE技术简化了大型FPGA 系统的配置方案,令开发人员将精力主要集中在系统性能的提高和开发时间的缩短。
图5-40 System ACE MPM配置电路示意图