利用Altera增强型配置片实现FPGA动态配置

时间:2007-04-14

1. 引言
在当今复杂数字电路设计中,大多采用以"嵌入式微控制器+FPGA"为的体系结构此体系结构中FPGA配置效率和灵活性的差异影响了产品的开周期和产品升级的易施性。传统的FPGA配置方案(例如调试阶段的专用电缆方式。成品阶段的专用配置片方式)在成本、效率、灵活性方面都存在着明显不足。针对这样的实际问题,基于嵌入式微控制器与FPGA广泛共存于复杂数字系统的背景,借鉴软件无线电"一机多能"的思想,提出了一种对现有传统FPGA配置方案硬件电路稍做调整并增加部分软件功能。即可实现FPGA动态配置的方案。本文将在介绍Altera公司Stratix系列FPGA配置模式、FPGA配置流程、增强型配置片内部工作原理的基础上给出利用EPCI6实现FPGA动态配置的方案。并给出软硬件接口电路。

2 FPGA配置方式

编程器件的配置方式分为主动配置和被动配置两类。主动配置由可编程器件引导配置过程,被动配置则由外部处理器控制配置过程。 根据配置数据线数,器件配置可分为并行配置和串行配置两类。串行配置以Bit(比特)为单位将配置数据载人可编程器件:而并行配置一般以Byte(字节)为单位向可编程器件载入配置数据。被动配置根据配置数据与时钟的关系可分为同步和异步两种方式。
表1列举了Altera公司常用FPGA(Stratix、Cyclone、APEXⅡ、APEX20K、Mercury、ACE XK、FLEXlOK和FLEX6000)的配置方式。

3 FPGA配置流程

FPGA的配置数据存储在内部SRAM单元中。由于SRAM掉电后配置数据会丢失,因此每次上电时必须重新将配置数据写入SRAM中。这个过程称为FPGA的配置。FPGA配置过程如图1所示。表2为Stratix配置引脚定义。



(1) 上电
上电过程中FPGA内部状态机被复位,nSTA-TUS和CONF_DONE引脚由FPGA置为低电平,所有I/O引脚为三态且FPGA内部配置寄存器被清空。

(2) 复位

当nCONFIG或nSTATUS引脚为低电平时,FPGA进入复位状态。在此状态下,FPGA采样MSEL引脚的电平值,以确定采用的配置方式。同时nSTATUS和CONF_DONE引脚被拉低,所有I/O引脚三态并且FPGA内部配置寄存器被清空。

(3) 配置

当nCONFIG为高电平,nSTATUS被FPGA释放并由外部上拉电阻拉为高电平后进入配置状态。此状态下配置数据在DCLK时钟的上升沿载入FP-GA。若正确接收所有配置数据(CRC校验无误)。FPGA释放CONF_DONE引脚且当其被外部上拉电阻拉高后进入初始化状态。

(4) 初始化

此状态下FPGA内部逻辑和寄存器被初始化:使能I/0缓冲,释放INIT_DONE引脚(可选)。

(5) 用户模式

在此状态下FPGA开始执行用户程序。

Ahera公司增强型配置片支持在一块配置片上进行多块高密度PLD(Programmable Logic De-vice)配置。配置片主要由两大模块构成一控制器和Flash存储器。存储空间除用于存储配置数据外,未使用的部分可用于微处理器或PLD的外部存储器。下面将分别阐述增强型配置片的模块。

4.1增强型配置片控制单元

控制单元由以下子模块构成:

(1) 上电复位电路(POR)

在电源电压未达到需要的稳定电压时此模块将使配置片处于复位状态。有两种上电复位时间可选,100 mS,和2 mS,。配置片PORSEL引脚决定复位时间长短。此引脚为低电平时复位时间为100 ms,反之为2 ms。

(2) 内部振荡器(IOSC)

内部振荡器有四种模式(四个不同频率),可通过编译FPGA代码在OuatrusⅡ软件中选择。
(3) 时钟分频单元(CDU)

时钟分频单元对内部振荡器产生的时钟或外部输入时钟进行分频,得到配置片内部系统时钟SYSCLK和外部数据输出时钟DCLK。其内部有两个分频器,一个分频器的分频系数为N,产生DCLK信号;另一个分频器的分频系数为M,产生SYSCLK信号。其内部结构如图2所示。



上电后配置片默认采用内部振荡器中A模式,振荡频率为8 MHzo其中,一个分频器分频系数为1。另一个分频器分频系数为2。

(4)压缩引擎(PCU)

增强型配置片支持数据压缩。数据压缩由QuatrusⅡ软件实现,解压由压缩引擎实现。压缩后的数据存储在内部Flash中。配置过程中压缩引擎解压从Flash读出的数据。这一特性极大地增强了配置片的有效使用空间。以EPCI6为例,通过数据压缩可存储30 Mbit数据。

(5) PLD配置单元

PLD配置单元负责传输解压后的数据到PLD。它支持四种并行配置模式,即可将解压数据按1比特、2比特、4比特或8比特输出。根据预先配置的配置模式,PLD配置单元将数据移位输出到有效数据引脚上。无用的数据引脚输出低电平。

(6) JTAG接口单元(JIU)

由于本文未采用JTAG实现FPGA动态配置,故此单元不做详细介绍。

4.2 Flash存储器

不同配置片内部Flash容量不同。EPCI6有16Mbit容量,而EPC8、EPC4分别只有8 Mbit、4 Mbit,。Flash存储器分成三个块存储区,分别为启动块、参数块和配置数据块存储区。每个块存储区都有自己独立的保护机制并能单独进行擦除。下面将分别阐述各个块的功能。

(1) 启动块

以EPC16为例,启动块大小为16 KB,可用它替代微处理器专用PROM,也可用于存储其他系统的数据。启动块的保护机制由配置片RP引脚、WR引脚和块锁存位共同确定。

(2)参数块

参数块用来存储少量而需频繁更新的参数。EPCI6有6个参数块,每块为8 KB。参数块的保护机制是由配置片RP引脚和块锁存位共同确定。

(3) 配置数据块

EPC片内Flash上除启动块和参数块之外的空间均为配置块存储区。可用于存储配置数据和作为用户的存储空间。EPC16有31块64 KB的配置块。和参数块一样,配置块的保护机制也由配置片RP引脚和块锁存位共同确定。

4.2.1 Flash内存映射

EPCI6的内存映射分为两部分:配置控制器存储空间和用户存储空间。配置摔制器存储空间由控制器功能选择比特和8页配置数据组成。其起始地址是08000h (在64 KB的启动块/参数块后)。08000h~0801Fh地址范围是保留的控制器功能选择比特空间。图3是EPCI6内部Flash的存储空间映射。

4.2.2页模式选择

页模式选择功能使配置片多可存储8页不同的PLD配置数据,并由用户选择页号配置不同的PLD。页模式选择需要由软件和硬件配合实现。硬件上通过设定配置片PGM[2:0]引脚(PGM[2]是位)电平决定页号。同时在用QuatrusⅡ编译程序时修改编译文件的属性为所选择页号。第0页是默认的配置页。


4.2.3配置片工作模式

配置片有两种工作模式:正常模式和编程模式。

(1) 正常模式

正常模式是使用配置片内Flash中的压缩数据实现PLD配置。整个过程包括从Flash读出数据、数据解压和传输数据到PLD。

上电时,上电复位电路(POR)产生所有复位信号。该电路用10 MHz内部默认时钟复位配置片内控制单元。在开始配置前,配置片采样PGM[2:0]引脚上的电平值以确定从Flash的配置块内读取配置数据的页号。控制单元根据Flash中的选择比特值重新配置系统内部时钟。此后开始从配置块内读出压缩数据。当配置片的OE引脚变为高电平时,压缩引擎(PCU)输出DCLK时钟,开始传输配置数据到PLD。

当所选配置块内的一个比特从Flash读出后,配置片内部页计数器溢出,压缩引擎停止读Flash数据。若PLD正确接收所有配置数据(PLD拉高nCONF_DONE引脚),nCS引脚将被拉高,说明成功配置过程结束。若未正确接收数据(PLD拉低nCONF_DONE引脚),上电复位电路拉低OE引脚并重新配置。配置结束,压缩引擎(PCU)停止输出DCLK时钟。

(2) 编程模式

当用JTAG通过配置片内JTAG接口单元进行配置PLD时,配置片处于编程模式。由于本文采用正常模式,故不详细阐述。

图4、图5所示分别为笔者参与的某项目中与动态配置相关部分的框图和电路图。


如图4所示,为避免对传统配置电路做较大改动。本动态配置方案未采用由:DSP直接动态配置FPGA的方式,而是将配置时序由配置片承担。在FPGA处于用户模式时。若配置片nCONFIG引脚为低电平,将会触发FPGA重新进行配置。从而实现动态配置。

具体过程为:

(1)在FPGA处于用户模式时,配置片内Flash处于可读写状态。DSP将需要更新的代码在此模式下写入Flash相应的配置数据块内。

(2)在FPGA内设置一个1比特位宽配置寄存器。DSP写入配置命令,当其值为1时。EPC_jTAG_nlNIT(FPGA的一个I/0)引脚配置O。由于此引脚连接FPGA的nCONFIG引脚,故FPGA将由用户模式进人复位状态,nSTATUS引脚输出低电平从而使配置片复位。复位结束后将开始启动新的配置。


  
上一篇:基于CAN总线的客车轻便换档系统设计与实现
下一篇:基于并行流水线结构的可重配FIR滤波器的FPGA实现

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料