采用单片机实现对FPGA的配置

时间:2022-07-04 04:36:39

【摘 要】FPGA应用越来越广泛,但专用配置器件比较昂贵。在具有微处理器和FPGA的综合应用系统中,使用微处理器来实现对FPGA的数据配置,是一种经济实用的方法。本文介绍了应用单片机来实现对FPGA的数据配置方法。同时,给出了对FPGA的被动串行配置的时序和具体硬件、软件的实现方法。

【关键词】单片机;FPGA;被动串行;配置数据

0 引言

可编程逻辑器件(PLD)的应用越来越广泛。基于查找表技术、SRAM工艺的FPGA具有密度高且触发器多等特点,多用于复杂的时序逻辑和高速数据处理中。FPGA器件由于工艺原因在应用时需要进行数据配置。配置数据决定了FPGA内部互连和功能,改变配置数据,也就改变了器件的逻辑功能。配置数据必须保存在FPGA器件以外的非易失存储器内,这给实际应用带来了不便[1]。

为了实现在线可重配置(ICR),通常的方法有两种。一是采用专用的配置芯片(如ALTERA的EPC1、EPC2等)来存储配置数据。专用的配置芯片比较昂贵,显著增加了系统成本。而由于FPGA器件在数值计算方面明显地劣于微处理器,所以,经常是单片机和FPGA并行出现在系统中。应用单片机的剩余程序存储区来存放配置数据,上电后由单片机控制实现对FPGA器件的数据配置[2]。本文通过从被动串行(PS)配置时序出发,介绍应用单片机来实现对FPGA的数据配置方法。

1 被动串行配置(PS)及硬件连接

FPGA配置方式主要分为两大类:主动配置和被动配置。主动配置方式由FPGA器件引导配置操作过程,它控制着外部存储器和初始化过程;而被动配置方式则由外部计算机或微处理器控制配置过程。根据数据线的多少又可以将FPGA器件配置方式分为并行配置和串行配置两大类。下面介绍用单片机实现的被动串行配置。

几乎所有FPGA器件都支持被动串行配置。被动串行配置的时序图如图1所示,在这种配置方式中没有握手信号,配置时钟的工作频率必须在器件允许的范围,最低频率没有限制。为了开始配置,配置管脚和JTAG管脚所在的bank的VCCINT、VCCIO必需供电。FPGA上电后进入复位状态。nCONFIG被置为低电平,使FPGA进入复位状态;nCONFIG由低到高的电位跳变启动配置过程。

整个配置包括三个阶段:复位、配置和初始化。当nSTATUS或者nCONFIG为低电平时,器件脱离复位状态,并且释放漏极开路的nSTATUS管脚。在nSTATUS释放后,被外部电阻拉高,这时nSTATUS和nCONFIG同时为高电平,FPGA准备接收配置数据,配置阶段开始。在串行配置过程中,FPGA在DCLK上升沿锁存DATA0引脚上的数据。成功接收到所有数据后,释放CONF_DONE引脚,并被外部电阻拉高。CONF_DONE由低到高的转变标志配置结束,初始化开始。此后,DCLK必须提供几个周期的时钟(具体周期个数与DCLK的频率有关,一般可在20到40之间选择),确保目标芯片被正确初始化。初始化完成后,FPGA进入用户工作模式。如果使用了可选的INIT_DONE信号,在初始化结束后,INIT_DONE被释放,且被外部电阻拉高,这时进入用户模式。DCLK、DATA、DATA0配置后不能三态,可置高或者置低。

在配置过程中,一旦出现错误,FPGA将nSTATUS拉低。系统可以实时监测,当识别到这个信号后,重新启动配置过程。NCONFIG由高变低,再变高可以重新进行配置。一旦nCONFIG被置低,nSTATUS和CONF_DONE也将被FPGA置低。当nSTATUS和nCONFIG同时为高电平时,配置开始。

采用单片机实现对FPGA的被动串行配置方案的硬件连接图如图2所示。

2 单片机的软件编程

配置过程为:由微处理器将nCONFIG置低再置高来初始化配置;检测到nSTATUS变高后,就将配置数据和移位时钟分别送到DATA0和DCLK管脚,送完配置数据后,检测CONF_DONE是否变高,若未变高,说明配置失败,应该重新启动配置过程。在检测CONF_DONE变高后,根据器件的定时参数再送一定数量的时钟到DCLK管脚;待FPGA初始化完毕后进入用户模式。如果单片机具有同步串口,DATA0、DCLK使用同步串口的串行数据输出和时钟输出,这时只需要简单把数据字节或字锁存到发送缓冲器就可以了。在使用普通I/O线输出数据时,每输出1位数据,就要将DCLK置低再置高产生一个上升沿[3]。

配置数据的C51程序:

#include

sbit NCONFIG=P1^2;

sbit CONFDONE=P1^0;

sbit NDTATUS=P1^1;

code unsigned char TABLE[]={255,255,98,255,37,0,255…… };

MAIN()

{unsigned int I=0;

SCON=0;

EA=0;

start: CONFDONE=1;

NDTATUS=1;

NCONFIG=0;

NCONFIG=1;

while(!NDTATUS);

for(I=0;I

{SBUF=TABLE[I];

while(!TI);

TI=0;

if(!NDTATUS)

goto start; }

while(1);

}

3 配置数据文件的生成

Altera的MAX+PLUS II或Quartus II开发工具可以生成多种格式的配置文件,用于不同的配置方法。不同目标器件,配置数据的大小不同。配置文件的大小一般由二进制文件(扩展名为.rbf)决定。Altera提供的软件工具不自动生成*.rbf文件,需要按照下面的步骤生成:① 在MAX+PLUS II编译状态下,选择文件菜单中的变换SRAM目标文件命令。②在变换SRAM目标文件对话框,指定要转换的文件并且选择输出文件格式为*.rbf(Sequential),然后予以确定[4]。③进行编译后便可以在对应的文件夹中查找到.rbf文件。④将*.rbf文件更名为对应的*.bin文件,可以通过编程器将数据写入到存储器的对应地址区域,供配置程序调用进行数据配置。

另外,MAX+PLUS II或Quartus II开发工具可以直接编译生成文件类型为TrueType 字体文件,这个文件没有扩展名,它包含了配置数据的全部信息。可以将这个文件更名为*.txt后由“记事本”打开,将其内容全部复制到C51的unsigned char TABLE[]类型的数组当中(本文的例程便采用这种方法),由C51编译器完成配置数据的提取,配置程序通过调用TABLE[]内容完成数据配置。

4 结论

单片机可以采用C语音编程应用灵活,FPGA速度快适合高速信号处理,两者结合的应用系统越来越多。采用单片机剩余的程序存储空间来存储PPGA的配置数据,实现用单片机对FPGA的配置,可以省去FPGA的配置存储器电路。即简化了电路也节省了硬件成本,是一种即经济又实用的方法。

【参考文献】

[1]陈赜,朱如琪.在系统可编程技术[M].北京:科学出版社,2001.

[2]宋万杰,罗丰,吴顺君.CPLD技术及其应用[M].西安:西安电子科技大学出版社,2000.

[3]侯伯亨,股新.VHDL硬件描述语言与数字逻辑电路设计[M].西安:西安电子科技大学出版社,2000.

[4]刘骛仁,杨万海.在系统可编程技术及其器件原理与应用[M].西安:西安电子科技大学出版社,2000.

上一篇:探究基础素描教学 下一篇:汽车涂装设备的节能问题