1 、引言
ARM(Advanced RISC Machines)既可以认为是一个公司。也可以认为是对一类微处理器的统称,还可以认为是一项技术。基于ARM技术的微处理器应用约占据了32位RISC微处理器75%以上的市场份额,ARM技术正在逐步渗入到人们生活的各个方面。到目前为止,ARM微处理器及技术已经广泛应用到各个领域,包括工业控制领域、网络应用、消费类电子产品、成像和安全产品等。
FPGA(Field Programmable Gate Array)是一种高密度现场可编程逻辑器件,其逻辑功能是通过把设计生成的数据文件配置到器件内部的静态配置数据存储器(SRAM)来实现的。FPGA具有可重复编程性,能灵活实现各种逻辑功能。
基于SRAM工艺的FPGA具有易失性。系统掉电以后其内部配置数据容易丢失,因此需要外接ROM保存其配置数据,系统上电后必须重新配置数据才能正常工作。目前有两种方案可以实现,一种是使用专用的PROM,以Xilinx公司FPGA,XCFxx系列PROM为例,能够提供FPGA的配置时序,上电时自动加载PROM中的配置数据到FPGA的SRAM中;另一种是在含有微处理器的系统(如嵌入式系统)中采用其他非易失性存储器如E2PROM、Flash存储配置数据,微处理器模拟FPGA的配置时序将ROM中的数据置入FPGA。与第一种方案相比,该方案节省成本、缩小系统体积。适用于对成本和体积苛刻要求的系统。
在便携式虚拟仪器设计中,使用嵌入式系统和FPGA实现系统功能。嵌入式微处理器采用Samsung公司的ARM7TDMI系列处理器S3C44BOX:FPGA采用Xilinx公司的Spartan-3E系列XC3S100E,采用S3C44BOX完成对XC3S100E的配置。取得了良好效果。
2 、从串配置的原理
2.1从串配置原理
Xilinx公司的Spartan-3E系列FPGA产品是采用90 nm工艺的2.5 V低电压FPGA器件,具有高性能、低功耗、可无限次编写的特点。XC3S100E是Spartan-3E系列FPGA中的一款,总门数达10万门,可采用从串、主串、从并、主并、JTAG等模式对其进行配置[2]。XC3S100E与从串配置模式相关的主要引脚功能如下:
M[2:0]:配置模式选择。M2、M1、M0均接上拉电阻,即M[2:0]:111时为从串模式;
CCLK:配置时钟,微处理器提供时钟源,且上升沿有效:
DIN:串行配置数据输入:
DOUT:串行数据输出,用于菊花链式配置:
PROG_B:低电平异步复位FPGA内部逻辑,内部可配置:Memory完全复位后,该引脚指示高电平。
当此引脚为高时,才能配置FPGA:
INIT_B:由低电平到高电平跳变时,采样配置模式,即M[2:0]的值确定配置方式;配置过程中若出现配置错误,INIT_B将呈现低电平;
DONE:复位时为低电平。若配置成功,则为高电平。
2.2微处理器从串配置:FPGA的时序
FPGA的配置过程如下:
系统上电后,将PROG_B拉低以复位FPGA内部逻辑重新配置FPGA,充分复位内部逻辑后(约100μs),将PROG_置高。
INIT_B为低电平,PROG_B拉高保持300 ns后,FPGA将INIT_B置高。在INIT_B由低向高跳变的瞬间,采样配置模式M[2:0]。此系统采用从串配置模式。
在FPGA采样配置模式后,微处理器就可以向FPGA配置时钟CCLK和数据,在CCLK的上升沿,传输数据至DIN,数据字节先发送低位,再发送高位。配置过程中若发生错误,则INIT_B为低电平。
所有的配置数据传送完成,CRC校验无误。则DONE为高电平,否则为低电平。
微处理器从串配置FPGA的时序如图1所示。
2.3 配置文件的产生方法
利用Xilinx公司提供的开发工具ISE8.1,经过综合、映射、布局布线后可产生编程文件,编程文件含有.bit、.bin、.mcs、.tek、.hex等格式。其中,.bit格式用于JTAG下载,其他几种格式用于专用PROM编程。首先按照产生专用PROM编程文件的方法来产生.bin文件.然后将该.bin文件转换成ASCⅡ码文件的存储形式,并且各个字节之间用逗号分隔。再将该配置数据存放在系统程序的一个头文件的数组config_data_array[]中,作为系统程序源代码的一部分,并和其他程序一起编译。
3、 硬件设计
嵌入式微处理器S3C44BOX内置ARM7TDMI核,集成了丰富的外围功能模块,内部8 kB Cache大大提高了性能。S3C44BOX可访问256MB的地址空间,最高工作频率达66 MHz。采用4 MBFlash作为程序存储器,可用于存放系统运行的代码。XC3S100E从串配置程序和配置文件都固化于其中保存,该Flash支持低电压(1.65V~3.3 V)写操作。8MB的SDRAM是程序的运行空间,直接运行Flash中的代码,但速度非常慢。通常是将Flash中的代码移至SDRAM中。S3C44BOX与XC3S100E主要通过PROG_B、INIT_B、DONE、CCLK、DIN 5根信号线连接,如图2所示。其中VCC33表示3.3V,VCC25表示2.5 V。
4、 软件设计
软件设计流程如图3所示。配置软件的编程要确保ARM完全按照配置信号的时序工作,关键问题
是采用S3C44BOX的通用I/O口GPF0、GPF1、GPF2、GPF3、GPF4模拟DIN、CCLK、DONE、INIT_B、PROG_B的时序。
在S3C44BOX中,大多数引脚都是多功能引脚,可以通过端口配置寄存器选择相应的引脚功能。
以端口F为例,控制寄存器rPCONF用作设定引脚的输入、输出或特殊功能;数据寄存器rPDATF[0:8]对应于GPF0~GPF8引脚上的数据。读写寄存器rPDATF的各个位对应于引脚的读或写。例如,CCLK上升沿时序是向GPF1先写0,再写1得到,延时程序则由for循环实现。
则一直循环等待
CCLK在每个上升沿把1 bit的数据置入DIN中,先将GPF1置低,在GPF0准备好1 bit数据,再将GPF1置高即可,以此循环将config_data_array[]中的每个字节按先低位再高位的次序写入FPGA。
Xilinx的FPGA配置文件大小相同,与FPGA内部逻辑设计的复杂度无关。以Spartan_3E系列的10万门FPGA XC3S100E为例,它的配置文件固定为581 344 bit,若CCLK的时钟周期置为2μs,配置时间约为1.2 s。
5 、实验结果验证
验证环境:硬件采用自行开发的实验板和武汉创维特公司的:JTAG硬件仿真器;软件则使用Xilinx公司的开发工具ISE8.1和武汉创维特公司的集成开发环境ADT 1000(支持ARM7,ARM9)。
利用VerilogHDL编写程序led.v在七段数码管上循环显示0~F,采用:ISE8.1编译、综合、映射、布局布线。生成用于编程专用PROM的led.bin文件。用一个简单的C程序将.bin文件转换成ASCⅡ码文件,再将ASCⅡ码文件复制到配置数据数组config_data_array[]中,然后在ADT环境下编译配置程序、配置数据和系统程序,将生成的.bin文件通过JTAG口烧写到Flash中。重新上电后,FPGA配置正常,实验结果与预设相一致。
6、 结束语
基于ARM的FPGA从串配置方案结构简单、接线容易、软件编程简单,非常适用于嵌入式系统设计。虽然该控制电路是为Xilinx公司Spartan-3E系列的FPGA设计的,但稍加修改也可用于其他系列FPGA器件,故具有一定的通用性。另外,由于FPGA具有可重复配置的灵活性,在嵌入式系统中可通过串口、网口远程烧写Flash,重构系统功能,这种在线重构技术为设备的智能化在线维护、功能重组和在线升级等提供了可能,而且灵活性很强。本文提出的方案对数字系统设计具有借鉴意义,有着广阔的应用前景。