技术文章

当前页面: 首页 >技术文章 >一种基于ARM 的FPGA可重构配置方法的实现及应用

一种基于ARM 的FPGA可重构配置方法的实现及应用

--一种基于ARM 的FPGA可重构配置方法的实现及应用

供稿:ARM92010 2010/7/1 0:00:00

0 人气:604

  • 关键词: FPGA ARM 重构配置
  • 摘要:通过介绍FPGA的各种配置方式,提出了一种基于ARM处理器的FPGA动态配置方法,充分利用ARM处理器功能强、速度快、应用广的特点,结合FPGA重配置特性,实现了对FPGA的动态配置.文中详述了FPCA被动串行配置方式的时序,给出配置流程图及实现的程序代码,并通过实例验证了该方法的优越性及应用前景.

       随着半导体工艺技术的迅猛发展,现场可编程逻辑器件FPGA的集成度迅速提高,已达到百万门量级,与此同时,FPGA中的逻辑资源也日益丰富,使得基于FPGA的片上系统设计成为可能.基于FPGA的片上系统设计因其具有开发周期短,设计成本低,软硬件可编程,系统设计灵活、可裁减、可扩充、可升级等优点正在成为电子系统设计的研究热点,且已经在通讯、工控等领域得到实际应用.

    目前FPGA从实现技术上进行分类,可以分为基于查找表(LuT,k—up table)技术,SRAM工艺的FPGA、基于nash技术的FPGA和基于反熔丝(Anti—fuse)技术的FPGA,而使用最多的还是基于SRAM工艺的FPGA,如Altem的Cycl0ne和S tix系列、xilin)【的Spanan和Virtex系列.基于SRAM 的FPGA片内带有存储配置位流的sRAM,上电时,将存储在专用配置芯片中的配置信息加载到FPGA中,从而实现一定的逻辑功能,掉电时片内SRAM中的配置数据遗失,需要下一次加电时重新加载配置.这种片内易失存储器存储配置数据的结构,使得FPGA可以在线动态的对其sRAM中的配置数据进行更新,从而实现电路逻辑功能动态改变.系统可重构主要就是利用基于sRAM的FPGA这种动态重配置特性才得以实现的,下面就以Altem公司Cyclone II系列FPGA分析其配置方式及其可重构应用.

1 可重构配置方法

    根据FPGA在配置过程中的角色可把cyclone II系列FPGA的配置方式分为三种:FPGA主动串行(As)方式、FPGA被动串行(PS)方式和JATG方式.不同配置模式通过配置模式选择管脚MsEL[1:0]进行选择,其中MsEL[1:0]=o0时选择As模式,MsEL[1:O]=01时选择PS模式,对于某些串行配置器件当MsEL[1:0]=l0时为快速AS模式,配置速度比PS模式快一倍.Cyclone II系列FPGA支持配置数据自解压,将压缩的配置数据存储在配置器件或其它存储器中,配置时传送压缩的位流数据到FPGA中,FPGA可实时的解压缩并对内部sRAM进行编程,配置数据的压缩比例可达35%-5O% ,可有效节省配置存储空间.

    在As方式下,由FPGA主动输出控制和同步信号给专用串行配置芯片,配置芯片接收到配置命令后,就开始将配置数据串行的发送至FPGA,完成配置工作.目前常用的专用串行配置芯片为容量为4 Mb的EPCS4和16 Mb的EPcS16等.AS配置模式主要用到四个信号:串行数据输入DcLK、控制信号输入AsDI、片选信号ncs和串行数据输出DATA.

    在PS方式下,由系统中其它设备发起配置过程,FPGA在配置过程中只输出应答信号,发起控制配置过程的设备可以是处理器、Altem EPC系列配置芯片、CPLD等功能设备.在下一小节将对PS配置方式做详细的介绍.JTAG调试接口已经作为一个标准接口集成在芯片内,主要用于芯片的测试,cycl0ne II系列FPGA都支持JTAG方式对FPGA进行配置,JrrAG方式具有比其它配置方式都高的优先级.JrI'AG接口定义了四个标准信H号:

● rI℃K测试时钟,各种信号都需要与测试时钟同步;

● TDI测试数据输入,测试数据串行输入,数据在TCK上升沿传送;

● TDO测试数据输出,测试数据串行输出,数据在TCK下降沿传送;

●TMs测试模式选择,决定JTAG电路内部TAP控制器状态机的变化.

2 基于ARM的配置方法及实现

2.1 PS配置原理

     如图l所示,利用s3c2410x作为主控制器采用被动串行方式对EP2c20内部逻辑进行重构.FPGA的PS配置方式是比较常用的一种配置方式,可以有效实现FPGA的在线配置,其基本流程为:在系统中将FPGA被动配置方式配置接口与ARM处理器的IO管脚相连,在处理器端通过软件控制相应管脚的高低电平将数据串行的发送到FPGA中.重构程序运行在ARM处理器中作为实时系统的一个任务,当需要重配FPcA内部逻辑时,调用相应任务,配置完成后,删除当前任务即可,因此,可将预先建立的配置文件库存储到ARM的nash中,由ARM处理器中运行的配置程序来完成动态重构任务。FPGA与Ps配置方式有关的管脚功能如表l所示:

 

 

    整个配置过程几个关键信号的时序图如图2所示,配置过程可以分为复位、配置和初始化三个阶段:

在复位阶段,微处理器首先在nc0NFIG信号线上产生一个宽度大于8 s的负脉冲,然后开始检测nsTATus信号的状态.FPGA检测到ncONFIG信号的下降沿后会迫使nsTATus和cONF—DONE信号拉低,使FPGA处于复位状态,当ncONFIG变为高电平时,FPGA退出复位状态,释放漏级开路的nSTATUS管脚,nSTATuS在外部需要被l0 K的上拉电阻拉高,nSTATUS管脚变为高电平后,FPGA即进人配置阶段,此时,FPGA已做好了接收配置数据的准备.

    FPGA的nsTATuS管脚变高后,延时5 s左右,在DCLK的上升沿FPGA即可从DA L0管脚串行的接收配置数据,配置数据按低位在先高位在后的顺序从数据线上送出.当所有数据都接收完后释放漏级开路的CONFIG— DONE管脚,CONFIG—DONE管脚在外部需要被10 K的上拉电阻拉高,CONFIG—DONE管脚由低到高的跳变表明配置阶段结束,FPGA进入初始化阶段.如果在配置过程中出现错误,则n rATuS管脚将输出低电平,FPGA在内部自动复位,处理器可以通过查询ns1IATuS管脚状态判断在配置过程中是否有错误发生,如果nsTATuS管脚在配置过程中变低则表明有错误发生,如果在软件中设置了错误发生后自动重新开始配置选项则FPcA会延时一段时间后释放nsTATuS,此时nsTATuS被外部上拉电阻拉高,CPu在nsTA—Tus上检测到一个由低到高的跳变后重新开始配置.若软件中未设置“错误发生后自动重新开始配置”选项则需要CPu首先将nCONFIC管脚置低再拉高以开始重新配置.

    在初始化阶段,初始化时钟可以是FPGA内部时钟或外部由CLKusR管脚提供的时钟,本例使用了FPGA内部时钟,FPGA将为初始化提供时钟,这样,初始化阶段不再需要外部时钟.初始化阶段完成后INIT—DONE管脚变为高电平,指示FPGA成功进人用户模式,配置过程结束.需要注意的是,若此时CONF—DONE或INIT_DONE未变为高电平,则表明此次配置过程不成功,需要cPu重新进行配置.

2.2 配置程序设计

   下面是完整的重构程序及流程图(图3所示),作为s3c24lOx ARM处理器 μC/OS—II实时操作系统的一个任务运行,但在工程应用中要结合实际情况做适当修改.

基于μC/OS—II配置程序:

U8Fpga~DownLoad(v0id)

{U8 Bootaddr;

U32 CountNum =O柏:

u8 FpgaBu如;

U16 i:

Bo0taddT:(u8 )(O】(33ooooo0);/ 配置数据起始地址 /

SeI— Datao(O);

seLnCONFIG(0);/_将ncONFIG置低电平 /

set— DCLK(O);

hude1ay(10);/}延时1O /

if(Re们一nSTATUS)

{prin (”err0r:nSTATuSis 1 1”);

retum O;}

Set— nC0NFIG(1);

while(!Read—nsTATUS);

hudelay(5);

p nd(”十co gIlre FPGA.-);

while(c0untNum <=O)(24294)/}串行配置数据 /

{FpgaBu任er= (Bo0t&ddT+c0un um);

手机扫描二维码分享本页

工控网APP下载安装

工控速派APP下载安装

 

我来评价

评价:
一般