>
首页 » 业界动态 » 用CPU实现现场可编程门阵列在线配置技术

用CPU实现现场可编程门阵列在线配置技术

作者:吴繁红  时间:2006-10-31 01:10  来源:
摘 要:PLD 器件具有高集成度、高速、高可靠性、在系统编程(或重构)、在系统升级等特点,在电子系统设计中被广泛应用。介绍了Altera公司基于SRAMLUT结构的FPGA器件的PS配置原理。提出了用AT89C51CPU实现FLEX10K系列器件的PS在线配置方法和PC机与AT89C51CPU串行通信方式实现在线升级的方法。采用这种技术不仅改善了系统的工作性能,而且极大地提高了系统硬件功能的灵活性。

关键词:PS配置;FPGA器件;串行通信;在线配置;在线升级
  
引言

产品是否便于现场升级,是否能最大限度地降低成本,目前成为产品是否能进入市场的关键因素。在这种背景下,Altera公司的基于SRAMLUT结构的FPGA器件得到了广泛的应用。由于SRAM的数据是易失的,故每次上电后必须重新配置。目前,大部分成熟的设计都采用Altera的专用配置器件实现重新配置,例:EPC1系列是一次性可编程(OTP)串行PROM;EPC2系列是多次可编程串行EEPROM。一次可编程芯片不适应开发阶段的反复调试、修改和产品的升级;可擦除芯片价格昂贵,且容量有限,对容量较大的FPGA器件,需要多片组成菊花链进行配置,增加了系统的设计成本和难度。因此采用CPU实现FPGA在线配置技术已成为首选的设计方案,但都局限于在系统配置功能的实现,很少涉及到在系统升级的设计方法,且配置软件的纠错性方面考虑不周。笔者设计的用CPU实现FPGA在线配置技术,一方面可以利用CPU子系统中剩余的ROM空间存放FPGA配置数据,降低设计成本,而且利用功能完善的软件设计可纠正如上电次序导致配置不正常等错误,并可确保系统的可靠性和保密性;另一方面,实现了真正“系统在线升级”功能,并给出了具体的软、硬件设计和实现的方法。

硬件设计

PS配置的基本原理
Altera的FPGA器件有两类配置下载方式:主动配置方式和被动配置方式。主动配置方式由FPGA器件引导配置操作过程,它控制着外部存储器和初始化过程;而被动配置方式则由外部计算机或控制器控制配置过程。基于SRAMLUT结构的FPGA器件,查找表LUT(Look-Up-Table)本质上就是有4位地址线的16*1的RAM。当用户用原理图或VHDL语言描述一个逻辑电路后,开发软件会自动计算逻辑电路的所有可能结果,并把结果事先存入查找表。这样,当多信号进行运算时就等于输入一个地址查找表,查找地址所对应的内容,然后将其输出即可。可见这类器件的编程信息保存在SRAM中,SRAM在掉电后编程信息立即丢失,在下次上电后还须重新载入程序信息,而这些数据必须保存在FPGA器件以外的EPROM、EEPROM或Flash ROM等非易失性存储器内。且允许器件在已经配置好的情况下进行重新配置,以改变电路逻辑结构和功能,即ICR(InCircuit Reconfigurabiliti)在线可重配置。FPGA器件可使用6种配置模式:专用器件配置、PS(PassiveSerial)配置、PPS(PassiveParallel Synchronous)配置、PPA(PassiveParallel Asynchronous)配置、J TAG配置。这些配置模式可通过FPGA上的两个引脚MSEL1、MSEL0上的电平来决定。在这6种配置模式中,PS模式因电路连线简单,对配置时钟要求相对较低,与并行配置相比误操作的几率小、可靠性高而被广泛采用。其配置时序如图1所示。可见只需利用CPU的5根I/ O线,就可完成PS配置。

图1 PS配置时序

PS在线配置的硬件设计
利用AT89C51CPU和AT29C256Flash ROM对FLEX10K实现PS配置的硬件原理如图2所示。MSEL1、MSEL0接低电平选择PS配置模式,DATA0、DCLK、nCONFIG、CONF-DONE,和nSTATUS引脚功能见表1。

  Altera的MUX+PLUSII或Quartus开发工具可以生成多种配置文件或编译文件,用于不同模式的配置。采用二进制配置文件(.rbf),该文件包含所有的配置数据,一字节8位,每个字节在配置时要求最低位最先被装入FPGA中,配置数据被放在AT29C256Flash ROM中。配置数据的大小与目标器件有关(和设计逻辑无关)。因此,一旦确定了FPGA的型号,配置数据占据的存储空间也可以在设计中确定。对于FLEX10K的配置文件的计算为:FLEX10K10:10*1.5=15K byte;FLEX10K20:20*1.5=30K byte。因此,采用AT29C256内部包含32K byte容量,可配置FLEX10K10、FLEX10K20两种器件。

表1 PS配置引脚功能表


在线升级的硬件设计
为了实现在线升级,系统设计时必须考虑以下几个问题:1)CPU的启动不依赖FPGA器件;2)FPGA配置前(或配置过程中)必须保证控制的设备处于非工作状态或不影响其它设置工作的稳定状态;3)为了实现FPGA的在线升级,存放FPGA配置数据的存储器必须是CPU可重写的,且此存储器应是非易失性的,以保证系统断电后,FPGA数据不从后台PC机重新获得。FPGA在线升级原理如图3所示。

图2 PS配置原理图

图3 串行通信原理图

系统需要在线升级时,将要配置的(.rbf)文件放在后台PC机中,后台PC机与AT89C51之间通过串行口进行数据通信,由于PC机的串行口都是RS-232C标准接口,与AT89C51的TTL电平不匹配,因此在PC机和单片机之间加入MAX232转换芯片。在线升级时,首先AT89C51将PC机发送来的(.rbf)文件数据存放在AT29C256中,再调用配置程序将数据从AT29C256配置到FPGA文件中。

软件设计

FPGA配置程序的设计
为了确保配置过程的正确,提高系统的配置性能,在软件设计时应严格按照FPGA的PS配置流程进行,并在配置过程中始终监控配置工作状态,在完善的软件配合下可以纠正如上电次序导致配置不正常等错误。根据图1的PS配置时序,其配置流程如下:

1)配置信号的初始化:DATA0=0,DCLK =0,nCONFIG=0,CONF-DONE =1和nSTATUS=1,并保持2μs以上。

2)检测nSTATUS,如果为“0”,表明FPGA已响应配置,可开始进行配置,否则报错,并返回1)。正常情况下,nCONFIG=0后1μs 内nSTATUS为“0”。

3)置nCONFIG=1,并延时5μs。

4)DATA0上放置数据(低位在前),DCLK=1,延时。

5)DCLK =0,并检测nSTATUS,若为“0”,则报错,重返1)。

6)准备下一位数据,并重新执行4)、5),直到数据发送完为止。

7)此时CONF-DONE 应变成“1”,表明FPGA已完成配置,如果数据发送完后,CONF-DONE 为“0”,必须重新配置返回1)。

8)配置完成后,再送别10个周期的DCLK,以便FPGA完成初始化。

完整的C51程序如下:

 # include< reg51.h >
 # include< absacc.h >
 # include< int rins.h >
 typedef unsigned char BYTE;
 typedef unsigned int WORD;
 sbit FIG=P3^0;/* 出错报警标志*/
 sbit DATA0=P1^3;
 sbit DCLK=P1^4;
 sbit NCONFIG=P1^5;
 sbit CONFDONE =P1^6;
 sbit NSTATUS=P1^7;
 void peizi()
 { WORD countnum ;
BYTE i ,j ,k;
BYTE bdatafpagebuffer ;
char xdata*dpt;/* 外部数据地址指针*/
countnum=0;
loop:while(1)
{ P1=0xc6;/* 端口初始化*/
dpt =0x0000;
-nop-();
-nop-();
-nop-();
-nop-();
if(NSTATUS){FIG=0;continue;}
NCONFIG=1;
-nop-();
-nop-();
-nop-();
-nop-();
-nop-();
while(countnum<=0x39a0)/* .rbf 数据长度*/
{ fpagebuffer =3dpt ;
for(i =0;i<8;i++)
{DATA0=fpagebuffer &0x01;/*配置数据输出,低位在前*/
DCLK=1;
-nop-();
-nop-();
-nop-();
DCLK=0;
fpagebuffer =fpagebuffer > > 1;
}
if(! NSTATUS)goto loop ;
dpt++ ;
countnum++ ;
}
if(! CONFDONE){FIG=0;continue;}
for(i =0;i<10;i++)
{ DCLK=1;
for(j =0;j<100;j++)
-nop-();
DCLK=0;
for(k =0;k<100;k++)
-nop-();
}
return;
}
}

PC机与CPU通信程序设计
后台PC机中.rbf文件的发送采用Vusial Basic语言编程。VB支持面向对象的程序设计,其不仅功能强大,而且借助MSDN Library 就能轻松地编制功能完善的应用程序。通过设置MSCommd 通信控件的output 属性,将配置文件向AT89C51发送。为了使PC机与AT89C51之间能正确通信,要求双方具有相同的波特率,利用MSComm的settings 属性来设置:MSComm1.settings =”2400,N ,8,1”。即:发送波特率为2400,无校验位,8位数据长度,1位停止位。AT89C51的串行口接收数据,设置串行工作方式1,其波特率由定时器T1的溢出率、SMOD位和时钟频率决定。当AT89C51的时钟频率为11.0592MHz ,SMOD=0,则T1的计数初值为十六进制F4。

结 语

文中较深入地描述了用CPU实现Altera的FPGA器件的在线配置、在线升级技术,与专用配置芯片相比,可以降低成本,提高配置的可靠性。该设计方法在实际设计中被应用,系统工作稳定、可靠。另外,选择大容量的外部FlashROM,按不同地址放置不同功能的FPGA配置数据,然后由CPU接受不同的命令,以选择不同地址,可实现“多任务电路结构重配置”技术。

相关推荐

TMS320VC5402与PC机进行串行通信的两种方案

串行通信  PC机  2011-07-21

基于MPC860与STl6C654的串行通信设计

MPC860  STl6C654  串行通信  2010-10-08

基于VB的霍尔传感器性能测试系统设计

霍尔  传感器  串行通信  VB  2010-06-02

基于Small RTOS51的多任务串行通信研究

基于未知上位机串行通信波特率检测

基于未知上位机串行通信波特率检测

上位机  串行通信  波特率  2009-06-07
在线研讨会
焦点