信号模拟设备中的FPGA重配置设计

2012-06-28 03:05伟,安
舰船电子对抗 2012年5期
关键词:配置文件字节被动

洪 伟,安 涛

(船舶重工集团公司723所,扬州225001)

0 引 言

信号模拟设备在雷达或其他侦察设备的调试、测试和检修过程中发挥了重要的作用。随着我军信息化程度的不断提高,侦察设备的种类也越来越多,为了适应这种变化,多功能成为信号模拟设备的一个重要发展方向。

随着现场可编程门阵列(FPGA)技术的发展及其在信号模拟设备中的广泛应用,各种信号模拟功能越来越集中于FPGA中实现,因此FPGA重配置成为信号模拟设备多功能化的一个重要手段。本文正是为了满足这种应用需求,设计并实现了FPGA重配置。

1 FPGA配置技术简介

FPGA是目前电子设备中应用非常广泛的电子器件,其集成度很高,器件密度从数万系统门到数千万系统门不等,可以完成极其复杂的时序与组合逻辑电路,适用于高速、高密度的高端数字逻辑电路设计。除了一些专用器件采用Flash工艺或反熔丝工艺以外,目前使用的FPGA器件一般是基于静态随机存储器(SRAM)工艺的,这种FPGA每次上电后都需要进行配置,配置过程就是对FPGA内容进行编程的过程[1]。

根据FPGA在配置电路中的角色,配置方式分为联合测试行动组(JTAG)方式、主动方式和被动方式3种。JTAG方式一般用于设计调试阶段,设计完成后一般使用主动方式或者被动方式进行配置。

在主动方式下,配置数据存放在外部配置芯片中,上电之后FPGA主动输出控制信号和同步信号,配置芯片在FPGA的控制下将数据发送到FPGA,完成配置过程。配置数据一般使用FPGA厂商提供的软件工具直接写入配置芯片。

在被动方式下,配置过程由系统中的其他设备发起并控制,配置设备一般是微处理器、微控制器或者复杂可编程逻辑器件(CPLD)等。配置数据一般存放在连接到配置设备的存储器中,需要自行设计程序将其写入存储器并进行管理。

FPGA重配置是利用FPGA可编程的特性,在设备正常工作期间,通过调用不同的配置文件对FPGA重新配置以实现特定功能的过程。采用这种方式能够在不增加或者只增加很少设备和成本的情况下在单一设备上实现更多的功能。FPGA的3种配置方式理论上均可用于实现重配置,但是由于被动方式方便灵活,所以在设计中较常采用。

2 FPGA重配置设计

2.1 电路设计

本设计中使用的FPGA为Altera公司Stratix II系列中的EP2S90,配置设备微控制器(MCU)为TI公司的TMS320F2812。Stratix II系列FPGA的被动配置方式根据接口信号及时序的不同细分为多种具体模式,包括被动串行(PS)、快速被动并行(FPP)、被动并行同步(PPS)、被动并行异步(PPA)以及被动串行异步(PSA)等。PS方式由于使用的引脚少,便于在各种配置设备上实现,所以本设计采用这种方式[2]。

使用PS方式首先要正确设置FPGA芯片上的配置方式选择引脚 MSEL[3.0],根据器件手册要求,这4个引脚状态分别为0,0,1,0。

PS方式使用DCLK(配置时钟)、DATA0(配置数据)、nCONFIG(配置命令)、nSTATUS(状态信号)和CONF_DONE(配置完成指示)5个引脚来完成配置过程。本设计电路连接如图1所示,FPGA的5根配置信号线全部连接到MCU的通用输入输出(IO)上,MCU通过其IO引脚实现FPGA配置时序。配置数据存储在Flash芯片中,Flash芯片通过串行外围设备接口(SPI)接口与MCU连接。

图1 电路连接框图

因为重配置是在设备正常工作的状态下进行的,因此在电路设计时必须考虑FPGA的配置过程对设备中其他电路的影响。FPGA在配置过程中,其IO引脚为高阻,但是因为FPGA的控制信号都是通过电平转换芯片与其他电路相连,所以在FPGA输出为高阻的状态下,电平转换芯片输入相当于悬空,导致其输出为高电平。对于在FPGA配置期间必须保持低电平的信号需要在电平转换芯片的输入端增加下拉电阻。

2.2 数据存储设计

FPGA的配置数据如何写入Flash芯片、在Flash芯片中如何存储是FPGA重配置设计中一个重要的部分,它不仅与FPGA和Flash芯片型号相关,还会直接影响软件设计的复杂度。

本设计使用的Flash芯片为M25P128,其总存储量为128Mbit,分为64个Sector,每个Sector分为1 024个Page,每个Page包含256个字节。本设计将Flash芯片等分为8个子存储区,每个子存储区由8个Sector组成,大小为16Mbit,分别用来存储不同的FPGA配置数据或者其他数据。子存储区从0到7进行编号,这样只需知道子存储区编号,即可计算出每个子存储区的起始段地址(等于子存储区编号乘8)和起始页地址(等于子存储区编号乘8 192)。

FPGA EP2S90的原始配置数据大小约为25.7Mbit,直接使用的话将无法放进1个子存储区中,因此配置数据必须先进行压缩处理,压缩处理在Altera公司的设计软件Quartus II中完成。配置数据压缩之后体积可以减少35%~55%,考虑到FPGA在正常使用中并不会用完所有资源,所以压缩后的配置数据完全可以存储到一个16Mbit的子存储区中。

压缩之后的配置数据大小是字节的整数倍但并不固定,根据FPGA设计的不同,其大小也不同,为了尽量降低MCU程序的复杂度和代码尺寸,本设计对压缩后的配置数据按照统一的格式进行处理。在配置数据的前面插入256字节的数据用来存储描述信息,其前4个字节用于描述配置文件的大小(单位为字节),其他字节根据需要可以存储如文件版本、编译时间等信息,未使用的全部填充0xFF,在配置数据的后面添加若干个0xFF,将整个配置数据大小凑成256字节的整数倍。

因为经过处理后的文件大小为256字节(Page)的整数倍,所以MCU在数据存储操作中只需要用到并 实 现 “sector erase”和 “page program”2 条Flash操作指令,在FPGA配置操作中只需要用到并实现“page read”1条Flash操作指令,降低了程序设计的复杂度。

2.3 软件设计

软件设计主要是MCU指令处理子程序的设计,包括数据存储和FPGA配置程序2个部分。

数据存储程序由段擦除指令处理子程序和页编程指令处理子程序共同构成,其执行流程如图2所示。

图2 数据存储程序流程图

MCU正常加电初始化后处于等待指令状态,接收到段擦除指令后,根据指令中的子存储区编号zone计算得到本存储区的起始段地址s,并通过串行外设接口(SPI)向Flash芯片发出擦除段s的指令,段s擦除完毕后继续擦除下一个段,直到本存储区8个段都擦除完毕。

在程序返回主程序之前根据子存储区编号zone计算得到本存储区的起始页地址p供页编程指令处理子程序执行时使用。段擦除指令执行完毕后告知主控系统并返回主程序,等待执行下一条指令。

因为整个配置文件的大小已经被预处理为Page大小的整数倍,所以页编程指令处理子程序每次都将收到一个完整Page大小的数据,MCU只需调用一次Flash的页编程指令将数据写入当前页p,然后将p指向下一个Page的起始地址即可。每次执行完毕后,告知主控系统并返回主程序,等待执行下一条指令。

FPGA配置程序执行流程如图3所示。

图3 FPGA配置程序流程图

MCU首先将nCONFIG引脚置0,保持5μs后再置1,由此启动FPGA配置,等待200μs后查看nSTATUS引脚状态,如果不等于1,则FPGA没能进入配置状态,本次配置失败,MCU告知主控系统本次配置失败,然后程序返回,等待主控系统下一条指令。如果nSTATUS引脚为1,则表示FPGA已经进入配置状态,可以接收外部配置数据。

MCU根据接收指令中的子存储区编号计算得到该子存储区起始页地址,先读取第1个Page的数据以获得该配置文件大小,接着读取下一个Page的数据并写入MCU缓存区,记录当前有效数据个数N为256个字节,然后通过改变DATA0和DCLK引脚状态将1个字节的数据串行发送给FPGA,并将总配置文件剩余字节数Size减1,当前缓存区有效字节数N减1。

每发送1个字节给FPGA后查看一下nSTATUS引脚状态,判断配置过程是否出错,判断一下剩余字节数是否为0,判断一下当前缓存区有效数据个数是否为0。如果nSTATUS引脚为0,则配置过程出错,MCU告知主控系统本次配置失败,然后程序返回,等待主控系统下一条指令。如果剩余字节数为0,则配置数据发送完毕;如果不为0,则需要继续写入数据。

如果缓存区有效数据不为0,则继续从缓存区读取一个字节数据写入FPGA,如果缓存区有效数据为0,则需要先读取下一个Page的数据写入缓存区,再从缓存区读取一个字节数据写入FPGA。

所有数据都写入FPGA后,MCU查看CONF_DONE引脚状态,如果该引脚为1,则表示本次配置成功;否则,本次配置不成功。配置结束后MCU将结果告知主控系统并返回主程序,等待主控系统下一条指令。

3 结束语

本文基于EP2S90和TMS320F2812设计实现了FPGA重配置功能,并已成功应用于某型信号模拟设备中,使得该设备以较小体积和成本实现了多种功能的集成,竞争力显著增强,经济效益明显。本设计通用性强,实用性高,未来可以推广到其他设备和应用中。

[1]王诚,蔡海宁.Altera FPGA/CPLD 设计(基础篇)[M].北京:人民邮电出版社,2011.

[2]苏奎峰,吕强,常天庆.TMS320X281xDSP原理及C程序开发 [M].北京:北京航空航天大学出版社,2008.

猜你喜欢
配置文件字节被动
基于Docker的实时数据处理系统配置文件管理软件的设计与实现
No.8 字节跳动将推出独立出口电商APP
从Windows 10中删除所有网络配置文件
新闻语篇中被动化的认知话语分析
蔓延
用软件处理Windows沙盒配置文件
互不干涉混用Chromium Edge
第五课 拒绝被动
No.10 “字节跳动手机”要来了?
轻量级分组密码Midori64的积分攻击