访问手机版页面
你的位置:老古开发网 > 其他 > 正文  
一种基于单片机的FPGA并行配置的实现
内容导读:

一种基于单片机的FPGA并行配置的实现
An Implement of FPGA Passive Parallel Configuration Base on MPU


解放军电子工程学院 薛王伟 李小波
解放军驻七八四厂军代室 伍波
摘 要:讨论了基于SRAM技术的FPGA可编程逻辑器件的配置方法,并以Altera公司FLEX 10K系列器件为例, 提出了一种利用单片机对可编程逻辑器件进行被动并行配置(PPA)方案。该方案速度快、简单易行、便于实现, 能在系统复位或上电时自动对器件编程,有效的解决了基于SRAM的FPGA器件掉电易失性的问题。该方法可以广泛应用于很多领域。
关键词: SRAM;FPGA;配置;单片机;被动并行

引言
---FPGA是可编程逻辑器件,经常被用于设计专用集成电路(ASIC),并以其编程方便、集成度高、速度快、价格低等特点受到广大电子设计人员的青睐。特别是Altera公司的嵌入式可编程逻辑器件FLEX 10K系列更是受到人们的重用。它是基于SRAM 查找表(LUT)结构的FPGA器件,配置数据存储在SRAM中。由于SRAM工艺的掉电易失性,所以每次系统上电时,必须重新配置数据,即ICR(In-Circuit Reconfigurability),只有在数据配置正确的情况下系统才能正常工作。所以选取什么配置方案也是设计者必须考虑的一个问题。在笔者参与研制的一种干扰系统中,采用被动并行配置(PPA)方案,利用单片机(AT89C52)对FLEX10K系列的EPF10K10进行在线并行配置,取得了良好效果。本文将对其实现方法予以介绍。

1 基于SRAM的可编程逻辑器件的配置方式及优缺点
---对SRAM加载配置数据常常采用下载电缆的配置方式,这种方法简单易行,只需直接将配置数据通过下载电缆由计算机下载至芯片,可以很方便地修改系统功能,因此被广泛应用在实际系统开发设计阶段。但对于已经设计完的应用系统,如果每次掉电后都要通过计算机下载配置会带来很多不便。因此,如果在对系统重新上电时,系统本身能自动加载可编程逻辑器件的编程文件,从而对可编程逻辑器件进行配置,这样就省去了通过手工由下载电缆对器件配置的过程。该方法的前提是必须在应用系统加上存储器保存器件的编程文件,以供系统自动加载时使用。方法的实现常用的有两种,以Altera公司的FLEX 10K系列器件为例。
---一种是采用主动配置的方法, 即在系统对SRAM加载配置数据时, 由可编程逻辑器件自身控制整个配置过程。FLEX 10K系列常用的主动配置是AS(主动串行 )方式, 即将编程文件存放在Altera公司的EPC系列专用存储器中,在芯片上电时由FLEX器件控制整个配置过程, 实现将编程文件串行地送到FLEX器件的DATA0脚进行配置, 并在配置结束后自动进行器件的初始化过程, 并进入用户状态。该方法简单方便,不需要其他的外围控制器, 由FLEX器件自身引导整个配置过程,但是必须采用专用存储器放置配置数据, 而对专用存储器的编程也需要专用的编程硬件,相对说成本较高。
---另一种是采用被动配置 (PS或PPA、PPS)的方式。编程文件可以放在通用程序存储器中,如EPROM、EEPROM或FLASH中,在FLEX器件上电后,由芯片外部控制器自动地从通用存储器中读出编程文件并送到FLEX器件进行配置,数据传送方式可以为串行,也可以为并行。串行传送时,即PS方式,配置数据送至FLEX的DATA0管脚;并行传送时,即PPA或PPS方式,配置数据送至FLEX器件的DATA0到DATA7脚。常用的外部控制器一般采用微控制器或CPU这样的智能主机,在采用微控制器配置时,如采用MCS51单片机,一般只使用一位宽的串行数据通道而不是字节宽的并行数据通道。该方法的优点是不必采用Altera的专用存储器,使用廉价的通用程序存储器就可以实现,这对需要大容量器件配置文件的场合,在降低成本上是非常有利的。该方法的另一个突出优点是,可实现单系统多方案的配置。因为数据的配置过程是通过外部智能控制器进行的,所以可以根据需要,在通用存储器中对单一系统存放多种功能的配置文件,再由外部控制器根据具体情况自动选择对芯片配置何种功能。这一优点是其他任何一种配置方法所不具备的。下面将探讨利用微处理器(AT89C52 )对FLEX 10K系列进行PPA配置的方法。

2 一种基于AT89C52对FELX 10K系列的PPA配置方案
2.1硬件电路设计
---AT89C52对EPF10K10并行配置的硬件电路示意图如图1所示。经MAX+PLUS II编译生成的配置文件(.sof)通过格式转换成为rbf格式的文件,被存储在图中所示的存储器中。当使用PPA配置方式时,需要将MSEL1和MSEL0锁定为高电平。为了不使DCLK出现不确定信号,必须将其经过1kΩ电阻上拉到Vcc。在采用PPA配置方式时,nCS和CS两个片选信号只需用一个。因此,如果采用其中一个作为片选信号时,另一个必须将其直接置为有效位。如果选用CS作片选信号来控制配置时,nCS必须接地。如果选用nCS作片选信号来控制配置时,CS必须接高电平。本实例中采用后者。nRS为读选通输入信号,低输入时引导FLEX10K将RDYnBSY信号置于DATA7引脚。当nRS不用时,必须将其置为高。nCE为FLEX10K器件的使能输入,nCE为低时使能配置过程,而且为单片配置时,nCE必须始终为低。由于本实例为单片配置,故将nCE直接接地。然后将EPF10K10的nCONFIG、CONF_DONE、nSTATUS、RDYnBSY分别接到AT89C52的P1.7、P1.4、P1.5、P1.3引脚上。DATA[7..0]接到AT89C52的P07~P00。nWS为写选通输入,由低到高的跳变时锁存DATA[7..0]引脚上的字节数据。要注意的是,nSTATUS和CONF_DONE引脚由于是双向漏极开路端口,所以在作输出使用时,应该经过1kΩ的电阻上拉到Vcc。
2.2软件设计
2.2.1 配置原理
---PPA配置方式的下载时序如图2所示,由图可以看出PPA模式的工作过程如下。

(1)启动配置
---在nCONFIG引脚上产生1个低脉冲,等待nSTATUS回应1个低脉冲以及CONF_DONE变低。在nCONFIG跳高后4μs内nSTATUS也跳高,表明FPGA可以配置了。
(2)配置过程
---在对FPGA进行配置时,单片机将8位的配置数据放在FPGA器件的数据端,并且给nWS一个负脉冲,在nWS的上升沿,FPGA器件将该字节配置数据锁存,然后,FPGA器件驱动RDYnBSY为低,表明它正在处理该字节信息,配置过程可以通过nCS或CS引脚暂停。当RDYnBSY为低电平时,FLEX 10K器件利用其内部振荡器(其频率一般为10MHz)在其内部将每一字节的配置数据串行化。当FLEX 10K器件准备接收下一个配置数据时,就使RDYnBSY变高,而单片机检测该高电平信号,决定是否送出下一字节的数据。这一过程一直持续到全部数据配置完成。在配置过程中,系统需要进行实时监测,一旦出现错误,nSTATUS将被拉低,系统必须能识别这个信号,并重新启动配置过程。
(3)结束配置
---配置数据全部正确写入芯片内部后,器件释放CONF_DONE,由外部将其拉高,如果单片机检测到这个信号,则表明配置成功,否则,则要对其重新配置。
2.2.2 配置软件设计
---(1) 程序流程图如图3所示。
---(2) 部分asm语言如下。
---首先按照电路图的连接单片机和FPGA的管脚:
nCONFIG EQU P1.7
nSTATUS EQU P1.5
RDYnBSY EQU P1.3
CONF_DONE EQU P1.4
以下是将数据进行配置的子程序:
COFIG: MOV DPTR,#0000H
CLR nCONFIG
ACALL DELAY2; 延时约为15μs
JB nSTATUS,COFIG; 检测FPGA是否响应置低位
SETB nCONFIG; FPGA响应置低位后,将nCONFIG置高位
JUDGE: JB nSTATUS,COFIG2; 等待FPGA是否响应置高位,然后准备进行配置
LJMP JUDGE
COFIG2: ACALL DELAY1
LJMP SEND_DATA
READY_DATA1:JNB nSTATUS,COFIG
SEND_DATA: MOVX A,@DPTR ;读取数据
PUSH DPH
PUSH DPL
MOV DPTR,#7FFFH;读入FPGA地址(根据硬件电路设定)
JNB RDYnBSY,$ ;判断RDYnBSY的状态
MOVX @DPTR,A;配置数据
POP DPL
POP DPH
INC DPTR
DELAY1: NOP
NOP
NOP
NOP
NOP
RET;延时子程序,延时约为5μs
DELAY2: MOV R1,#08H
DJNZ R1,$
RET;延时子程序,延时约为15μs
END1: END

3 结束语
---这种PPA配置模式为并行配置,其配置速度快,且配置时钟由FPGA内部产生,不需如(PS)配置模式要外加配置时钟加以控制,故其更有利于在线实现。FLEX 10K器件配置好后,通过复位可进行在线重新配置,装入新数据。由于重新配置时间短,系统工作过程中可以实时改变配置。此外,在用单片机完成配置之后,FPGA就可以独立的实现功能了,这时我们还可以将单片机用作其他功能。比如,当FPGA需要的原始数据进行逻辑运算时,我们可用单片机向其I/O端口发送,效果也十分不错。
---虽然上面介绍的配置控制电路是为配置Altera公司FLEX 10K系列的FPGA器件而设计的,但稍加修改也适用于其他系列的器件,故其具有一定的通用性。

 
标签:
来源:今日电子 作者: 时间:2002/1/1 0:00:00
相关阅读
推荐阅读
阅读排行
最近更新
商品推荐