摘 要:介绍了采用CPLD" title="CPLD">CPLD和Flash" title="Flash">Flash器件对FPGA" title="FPGA">FPGA实现快速并行配置" title="并行配置">并行配置,并给出了具体的硬件电路设计和关键模块的内部编程思路。
关键词:FPGA 并行配置 Flash CPLD
基于SRAM工艺的FPGA(现场可编程门阵列)具有集成度高、逻辑功能强等特点;应用FPGA进行数字电路设计,不但能减小电路的体积,提高系统运行的可靠性,而且其先进的开发工具可使电路设计和系统调试周期大大缩短;FPGA可无限次重复擦写,可使数字系统在线重新配置,设计更加灵活,功能更加强大,且易于更改和升级。由于FPGA中静态随机存储器(SRAM)掉电后数据会丢失,系统每次上电后需重新配置数据,如何快速、高效地将配置数据写入目标器件,并且保证其在掉电后再次上电能自动可靠地恢复配置,就成为整个系统的关键所在。本文就基于CPLD的FPGA并行数据配置方法和配置电路的设计进行初步的研究,并给出具体的硬件电路设计和关键模块的内部编程思路。
1 FPGA数据配置方法比较
实现FPGA的数据配置方法有很多,但根据器件类型和应用场合,Xilinx公司为其FPGA系列产品提供了多种数据配置方式,归纳起来主要有以下四种[3]:①采用JTAG方式加载;②采用主串方式加载;③采用从串方式加载;④采用并行方式加载。
JTAG方式数据加载方法是基于IEEE1149.1和IEEE1532的配置模式,通过TDI、TDO、TMS和TCK四根信号线接到FPGA上的相应引脚实现数据加载。这种方式电路结构简单、工作可靠、无需外接PROM等存储器件进行数据配置,但需要专用的数据配置电缆,因此该方法适用于数字系统的开发阶段。
主串方式数据加载方法是通过串行方法读取专用PROM存储介质中数据,实现FPGA的在线配置的,其配置时钟由FPGA内部送出。这种方式电路实现较为简单,但该配置方式必须使用Xilinx公司生产的专用PROM,应用不灵活。
从串方式数据加载方法类似于主串方式,但配置时钟由FPGA外部提供,需要设计专用电路控制整个配置过程。
并行方式数据加载方法是通过并行方法读取通用Flash或E2PROM等存储介质中的数据,实现FPGA的在线配置的。由于采用并行方式,八位数据可同时被写入FPGA,数据配置速度最快。其配置时钟由外部提供,需要设计专用电路控制整个配置过程。常用的配置控制器可以是各类处理器、微控制器或可编程逻辑器件,目前应用较多的是采用单片机和E2PROM构成控制电路。随着FPGA规模和性能的不断提升,其配置文件越来越大,对配置速度的要求也越来越高,所以快速的并行配置方式必将得到越来越广泛的应用。
2 FPGA并行方式数据配置原理
采用并行方式进行FPGA数据配置时,其相关配置引脚可分为专用配置引脚和非专用配置引脚。专用配置引脚包括:配置模式引脚M2、M1、M0;配置时钟引脚CCLK;配置逻辑异步复位引脚;启动控制引脚DONE。这些引脚只在配置时起作用,配置完成后不能作其它用途。非专用配置引脚包括:数据接口D0~D7、片选信号CS、写信号、BUSY、等引脚,这些引脚在配置时作为信号通道使用,配置完成后还可作为普通I/O口使用。数据配置时序如图1所示。当为低电平时,FPGA内部数据初始化,初始化完成后,DONE信号变为低电平,同时信号自动置为低电平,开始清空配置存储器。配置存储器清空后,信号重新被置为高电平,同时器件对模式引脚进行采样,确定以并行方式加载配置数据。当、信号都为低电平时,就可以通过数据接口D0~D7进行数据配置。图1清晰地表明了并行配置的全过程。
3 系统设计
3.1 系统组成
并行方式的FPGA数据配置系统由上位机、可编程逻辑器件(CPLD)、Flash、FPGA等组成,其结构如图2所示。控制器件对整个系统的性能具有重要影响,低成本的处理器、微控制器工作频率较低,在对速度要求较高的场合,会成为系统速度的瓶颈,不能发挥并行配置的速度优势,而且仅作为配置控制器使用又造成资源的浪费。采用CPLD作为控制器,Flash作为存储器件,不仅能满足速度和功能的要求,而且硬件电路更为简洁。
并行数据配置系统的上位机可以选用PC机、工控机等,主要对CPLD进行简单的功能控制,并对系统数据进行处理。CPLD是整个系统设计的核心,其主要功能是进行配置控制和地址生成。Flash闪存是配置文件的存储器件,由专用开发工具生成FPGA配置文件,预先烧写进Flash中。FPGA是系统中配置的目标器件,本系统采用六片Spartan II" title="Spartan II">Spartan II系列中的XilinxXC2S200。
3.2 硬件设计
3.2.1 芯片选型
配置电路中CPLD采用XC9500系列中的XC9536芯片,宏单元数目为36个,采用快闪存储技术,最高工作频率可达100MHz。PC44封装的XC9536包括时钟端口在内共有34个通用I/O口,可以满足系统的要求。配置存储器采用Winbond公司的W29C040-90,其512K×8bit的容量可以依次存放三个不同的配置文件,存取周期可达90ns。Spartan II系列FPGA的配置时钟最高可达66 MHz,但考虑到闪存的存取时间限制,配置晶振采用8MHz有源晶振。
3.2.2 原理图
配置电路接口如图3所示,并行配置的多片FPGA的控制信号CCLK、、、DONE、和BUSY以及数据线DATA(7:0)并行连接,通过分别设置片选信号CS(0:5)实现各器件的依次配置,直到所有FPGA都配置完成后才进入START-UP阶段,经过八个时钟周期延迟后一起进入工作状态。
图中Flash的存储区被分配成三个区域,分别存储不同的配置文件。其使能信号和地址信号由CPLD提供,当EN为高时,在时钟信号的下降沿对应A(18:0)的八位数据就出现在数据线D(7:0)上。CPLD的作用主要是:①实现与上位机通讯,接收指令并将工作状态反馈到上位机;②通过置PROG低电平控制FPGA的初始化过程;③初始化完成后,控制各FPGA的配置过程。
在数据配置过程中,相应FPGA的和信号应置低电平,若CS信号已被设置,则的状态就不能改变,否则将引起一个Abort过程[1],使配置过程中断。为确保在CCLK上升沿采到正确的数据,在CCLK下降沿改变数据线D(7:0)上的数据。在CCLK的上升沿,若BUSY信号为低电平,数据在此时钟周期内被接收;若BUSY为高电平,数据不能被接收,直到BUSY变低后的第一个时钟周期才能继续接收数据。因此,这时的配置数据需要一直保持。
需要注意的是,多片FPGA的START-UP过程是同时进行的,为实现这一功能,在由Xilinx的开发工具ISE[4]中生成配置文件时,需要修改相应的属性。
3.3 软件设计
CPLD的设计是本系统中最重要的部分,它所实现的功能模块包括接口模块、控制模块、地址发生器模块。接口模块实现与上位机的通信,接收上位机的指令并作相应处理,同时将工作状态反馈给上位机;控制模块提供控制时序命令,操纵整个配置过程;地址发生器模块为读取闪存数据提供数据地址。内部各功能模块采用VHDL硬件描述语言实现,控制主程序用mealy状态机实现。控制主程序的状态转移图如图4所示,其中状态Start是初始状态,Init是初始化过程,Clear RAM过程清空配置存储器,Config是配置过程,Wait过程是配置多片FPGA的中间过程。
控制模块根据上位机的控制指令完成FPGA的初始化、配置等过程,并将运行结果回传给上位机。由VHDL硬件描述语言生成的原理图符号如图5所示,其中,CLK是配置时钟,RESET是启动信号,DONE、是FPGA的反馈信号,CEND是地址发生器模块计数结束标志,EN是计数允许信号;、是控制信号,TRUE、FALSE是状态信号,反馈给上位机;CS(0:3)是多片FPGA的片选信号。控制模块的ModelSim仿真结果如图6所示。
参考文献
1XilinxSpartan II 2.5V FPGA Complete Data Sheet.Xilinx,2004
2 王道宪.CPLD/FPGA可编程逻辑器件应用与开发[M].北京:国防工业出版社, 2004
3 任晓东,文博.CPLD/FPGA高级应用开发指南[M]. 北京:电子工业出版社, 2003
4 王诚.FPGA/CPLD设计工具XilinxISE 5.X使用详解[M]. 北京:人民邮电出版社, 2003
5 房 磊,张焕春. FPGA的配置及接口电路[J]. 世界电子元器件, 2003(11):55~57