嵌入式arm热门培训内容之ARM设计的FPGA可重构配置方法的实现及应用


随着半导体工艺技术的迅猛发展,现场可编程逻辑器件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);

if(!(CountNum%1O24))pdnd(”.”);

f0r(._O;i<8;i++)

{Set—Data0(FpgaBu丘 脚 1);

hudelay(1);

seLDCLK(O);

FpgaBu艉r> > = 1;

if(!ReaⅡ一ns1、ATUS)

{ nEf(”\n、卜C0 gure Error:nsTATus is 0 1、n );

ren】m O;}

Set— DCLK(1);

}

C0untNum + + :

}

SeI— Datao(O);

S eI— DCLK(O);

if(!Reau—nsTATuS)

{p ntf(”、n\r—Configure Ermr:nsrATus is O!、n、r );

retum O;}}

else if(Read—nC0NF—Done)

{p ntf(”\n\卜-Co gure success! 、n );}

fnr(i=O;i(5O;i++)/ 初始化 /

{Set—DcLK(1);

hudeIay(1);

Set— DCLK(O);

hude1.dy(1);} 、

if(!Read—nC0NF—D0ne)

{printf(”、r\n—configure En r:nCO F—Done is 0 1”);

retum 0:}

retum l:

{

3 可重构配置应用

   结合上述可重构配置分析,我们利用了FPGA可重构特性,实现模块化机器人控制器的设计.模块化机器人结构复杂,控制电机数量多,而且针对不同构形控制策略也有差别,如四自由度串联式机器手构形和全向移动小车构形(图4所示)从控制策略到控制电机数量都有很大的不同,这就要求控制器可以根据不同构形动态的改变控制策略,也即控制器的可重构.为此,在模块化机器人可重构控制模块结构设计中,提出基于ARM和FPGA的动态可重构的模块化机器人控制系统方案,充分利用嵌入式ARM核微处理器高性能、低功耗、资源丰富等方面的性能和FPGA内部逻辑可重构的特性,由主处理器根据机器人当前构形选择不同的控制策略并对FPGA内部逻辑进行动态重配,以适应不同构形及应用的需要.结构设计框图如图5所示。

    ARM模块选用s3c241Ox运行 C/OS—II实时操作系统,负责运行控制软件,完成模块化机器人运动规划,实时监控系统运行状态,实现人机交互功能及对FPGA内部逻辑实时重构.FPGA内部运行软核处理器,负责与模块化机器人运动控制相关的任务,如舵机控制、直流电机控制、系统IO控制、传感器数据采集等任务.

    对FPGA配置采用上述基于ARM的PS配置方法,平台充分利用了FPcA内部逻辑可重构的特性,可组成多种不同构形,不同构形具有不同的物理结构和控制方式,以满足不同任务需求.其重构方法采用:

(1)根据具体构形规划系统硬件资源种类,如构形需要的直流电机数量、舵机数量、系统I/,O数量以及各种传感器的数目.

(2)根据硬件资源种类修改FPcA内部逻辑,实现硬件层次的“重构”.

(3)根据FPGA逻辑的变化,进行软件的开发,实现软件层次的“重构”.

(4)将FPGA配置文件下载到ARM的存储器中,系统上电后,ARM结合需求通过读取相应存储区的配

置文件对FPGA进行配置,实现控制系统的动态重构.

经过实验验证,利用ARM的实时处理功能,对FPGA内部逻辑进行动态重配,所设计的控制平台可以满足可重构配置的性能要求.

 

4 结语

文中给出了基于ARM的FPGA的Ps加载配置方案,该方法电路结构简单、易于实现,充分利用ARM处理器功能强、速度快、应用广的特点,在系统中可预先包含多个不同功能的配置文件,根据现场的需要进行相应的配置,实现在线更新FPGA功能,既节省了开发成本,又满足了一些特殊的系统设计要求,也充分显示出FPGA现场升级、灵活运用的设计理念,方案的提出,对嵌人式数字系统设计具有相当的借鉴意义.


立即咨询有惊喜哦 !