摘要:文中详述了fpga被动串行配置方式的时序,给出配置流程图及实现的程序代码,并通过实例验证了该方法的优越性及应用前景.通过介绍fpga的各种配置方式,提出了一种基于arm处理器的fpga动态配置方法,充分利用arm处理器功能强、速度快、应用广的特点,结合fpga重配置特性,实现了对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 > = 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现场升级、灵活运用的设计理念,方案的提出,对嵌人式数字系统设计具有相当的借鉴意义.
探讨人工智能硬件发展和人工智能基础设施的发展趋势
氧饱夹语音芯片,内置功放直推喇叭输出,低成本语音IC,WTN6系列
什么是饱和变压器?饱和变压器的特点有哪些?饱和变压器的应用场景?
电子产品中的电磁发射和磁场干扰的产生机理分析
关于HDI板与普通PCB的区别
ARM设计的FPGA可重构配置方法的实现及应用
ARCH电源模块DC-DC转换器规格
东芝推出新款通用电源IC,集成多种故障检测功能保障汽车安全
整体来看目前中国的乘用车的需求
OPPO R11巴萨定制版已正式发布!OPPO R11巴萨定制版怎么样?这价格有点让人心疼
工业智能化席卷全球 本土机器人制造企业铆足了干劲
纳芯微推出单通道MLVDS收发器NLC530x系列, 助力通信电力仪器仪表市场
美国新禁令正式生效,中芯国际已向美方申请继续供货华为
iphone14mini机型还会有吗?
AI+视觉技术,将给城市带来怎样的改变
LTC4274-Single IEEE 802.3at Po
赛普拉斯借助全新的802.11ac解决方案拓展其在无线连接领域的领导地位,为该解决方案在物联网设备中的大规
华为Nova青春版这款手机作为新青年良品:麒麟935+4G+64GB+18W快充
2021年各省市5G规划是怎样的?
关于系统设计的辅助分析和优势介绍