SSD系统中多级FPGA在线升级电路的设计与实现

2013-04-29 13:47徐晶晶陈帅
考试周刊 2013年72期
关键词:在线

徐晶晶 陈帅

摘 要: 为了解决多级FPGA在线自动升级与加载的技术难题,本文提出了利用其中一片FPGA实现自动更新的方案,设计了存储系统的逻辑方案,主要功能有:PCI-E接口的桥、多级FPGA在线系统升级、NANDFLASH的读写等操作控制、DDR2的读写等操作控制及校验与智能磨损平衡技术算法等,降低了硬件成本。

关键词: SSD FPGA 在线 升级电路

1.引言

目前,传统的FPGA升级与加载方式主要有两种[1]-[5]:一种是通过JTAG口直接加载配置文件到FPGA内部的SRAM中,但是由于SRAM掉电后数据将丢失,因此在下次重新上电时,需要重新通过JTAG加载线进行手动加载;另外一种是通过外置FLASH存储器件,首先将加载文件烧录到FLASH中,然后在每次上电时,利用FPGA的专用接口直接自动加载FLASH中的配置文件,克服第一种方法存在的每次上电都要手动加载的缺点[6]-[7]。对于单FPGA硬件系统来说,利用上述的第二种方法与网络接口的联合可以实现对单个FPGA的在线自动升级与加载,但是如果对于多级FPGA系统来说,为了保证下电后配置文件不丢失,采用上述第二种办法则需要在每个FPGA的外围都挂上一个NANDFLASH存储器,才能保证重新上电后能够自动加载,硬件成本较高。同时对FLASH中的配置文件的更新需要更多的外围器件支持。

本文利用一片FPGA并通过SPI接口与加载接口实施更新NORFLASH与其他四片FPGA加载的方案。设计了存储系统的逻辑方案,采用MLC结构的NANDFLASH颗粒作为存储单元,使用多片FPGA器件作为整个系统的逻辑控制核心。逻辑部分主要功能有:PCI-E接口的桥、多级FPGA在线系统升级、NANDFLASH的读写等操作控制、DDR2的读写等操作控制,以及校验与智能磨损平衡技术算法等,降低了硬件成本和系统复杂性。

2.多级FPGA在线自动升级与加载方案的电路结构

设计如图1所示的硬件系统的核心结构,由5片FPGA组成;其中的FPGA1采用xilinx公司的Virtex5系列的30T器件,内部包含PCI-EXPRESS endpoint IP核,利用IP核构成的总线节点实现FPGA1与内存和CPU之间的通信。其他四片FPGA2采用xilinx公司的SPARTAN6系列的150T器件。首先通过PCIE的IP核接口实现从内存中读取到新的加载文件,然后再进行并串的转换,通过SPI接口控制模块实现从SPI_NORFLASH中读取数据与下发擦除、读写状态寄存器等指令,更新了SPI_NORFLASH中的存储的文件,存储的文件内容包括FPGA1与FPGA2的配置文件存放地址不同。为了保证在升级或者加载失败时避免FPGA瘫痪,因此还需在FLASH空间里把上述两个文件内容实现备份,供发生意外所需。其次在SPI_NORFLASH文件更新成功后,FPGA1内部通过一些控制模块将SPI_NORFLASH中的数据读出,然后进行数据串并转换与并串转换,并将转换后的数据按照SPARTAN6 150T的串行SLAVE加载模式,加载到其他4片FPGA中,从而实现整个5片FPGA的在线自动升级与加载。

图1 多级FPGA在线升级与加载方案

3.多级FPGA在线自动升级与加载方案的模块化实现

在FPGA1内部为了实现在线自动升级与加载的功能,特设计了以下几个模块,包括PCI-E IP核的包装模块,SPI接口控制器模块SPI_CONTROLLER,以及对其他4片FPGA的加载控制模块UPDATA_CONTROLLER,这3个部分共同组成了整个在线自动升级与加载的控制模块如图2所示。其中PCI-E ENDPIONT模块主要是实现PCI-E IP所需要的各种接收与发送数据的时序与数据的封装,包括TLP帧的封装与解析并将数据传送给SPI_CONTROLLER模块。

图2 FPGA1内部部分结构框图

SPI_CONTROLLER模块需要将接收到的数据处理后才能通过SPI接口烧录到NORFLASH中。从总线上传送下来的数据为32位比特,其中包括8比特命令码和24比特的地址码或者32比特全为数据或者32比特中前8位为指令码,剩余24比特无效,等格式数据。由于外置的SPI_NORFLASH根据M25P128 FLASH器件的特点,特设计了SPI_CONTROLLER模块中的一些状态机,如图3所示,根据接收到指令状态机由空闲状态转移到解码状态,分析出32位比特数据中前8位是具体指令。根据解码后的分析并进行相关状态,模块内的其他部分小模块根据这些状态产生相关的时序与数据,待操作完成后,状态机跳转到操作完成等待状态,并随后跳转到空闲状态,从而完成整个操作流程,实现对外置NORFLASH的数据更新等其他操作。具体模块内部的状态机转换如下图3所示:

图3 SPI控制模块内部状态机

其中操作完成中最主要的两个操作是读FLASH与写FLASH,根据M25P128器件的特点及SPI接口的时序要求,因此所设计模块中clk,spi_di,spi_do及片选信号满足下面的时序要求,具体如图4、图5所示:

图4 SPI读操作时序

图5 SPI写操作时序

本模块加载过程中的状态机为:首先进入复位状态,然后判断复位是否成功;通过启动加载状态直接进入初始化状态;从发完读加载数据指令后直接进入等待读取数据完成状态;开始加载后计入加载计时状态如果加载成功则进入空闲状态;最终无论加载成功与否都需要释放SPI端口。在加载过程中,可以利用在加载部分文件期间同时读取下一部分需加载的内容,从而提高加载效率。

4.仿真与调试

上述的电路设计方案利用VERILOG语言编写实现,并通过NC-VERILOG仿真工具。首先进行仿真验证,在仿真结果正确的条件下,再进行板级调试。仿真波形如下图6所示:

图6 FPGA在线升级系统仿真波形

5.结语

通过上述设计的方案和模块与最后的调试与完善,该方案已经在SSD存储卡产品中稳定可靠地应用于整个硬件核心FPGA系统中,实现在线自动升级与加载,很大程度上降低了维护的人力与物力成本,从而提高了产品的市场竞争力。

参考文献:

[1]魏书军,刘振安,赵棣新,过雅南.VME总线在线“从串模式”配置FPGA的设计与实现[J].核电子学与探测技术,2007,(05).

[2]张炜,杨虎,张尔扬.一种灵活的实时FPGA数据配置方法[J].通信技术,2003,(02).

[3]李鹏,兰巨龙.用CPLD和Flash实现FPGA配置[J].电子技术应用,2006,(06).

[4]彭冰,刘舒,黄振.基于共用总线的多片FPGA配置电路的设计与实现[J].中国新通信,2009,(05).

[5]毛剑慧,黑勇,吴斌,乔树山.一种新颖的多模式FPGA配置方案[J].微计算机信息,2008,(29).

[6]苏岚,陈铭,钟锐.FPGA被动串行配置方法在税控机中的应用[J].电子器件,2007,(02).

[7]孙云峰,段哲民.基于微处理器系统的FPGA在线配置方法[J].微处理机,2008,(05).

猜你喜欢
在线
代表“在线”助力监督
综合气象业务在线培训考试系统设计
在线凝胶渗透色谱—气相色谱—串联质谱联用检测烟叶中的农药残留
MOOC综述与高校图书馆应对策略
基于ASP.Net的实时用工呼叫平台设计与实现