基于FPGA的高可靠性SDRAM控制器设计与实现✴
2011-04-02朱文斌刘春平黄振
朱文斌,刘春平,黄振
基于FPGA的高可靠性SDRAM控制器设计与实现✴
朱文斌1,刘春平1,黄振2
(1.深圳大学,广东深圳518060;2.清华大学航天航空学院,北京100084)
为了实现空间电磁环境中数据缓存,提出了一种采用FPGA设计具有高可靠性的SDRAM控制器方案。该控制器采用自顶向下的模块化设计,包括顶层控制和底层驱动两层状态机,并且通过上电自校验和关键控制模块三模冗余提高其可靠性。在此基础上,完成了控制器的FPGA硬件实现和测试。测试结果表明,该设计方案具有很高可靠性和可移植性,对应用于空间电磁环境中的数据缓存系统的工程实现具有指导意义。
空间电磁环境;数据缓存;SDRAM控制器;可靠性;三模冗余;自校验
1 引言
在空间电磁环境中,由于受到高能辐射粒子的影响,电子器件会出现单离子翻转(Single Event Upset,SEU)等现象,从而导致FPGA内部寄存器内容改变,引起传输数据的错误,控制信号的错乱,甚至是整个工作系统的失效[1],因此,需要设计高可靠性的数据缓存控制器。常用的数据存储芯片包括SDRAM和DDR-SDRAM两种,均具有单位面积存储容量大和存取速度快的特点。但与DDR-SDRAM相比,SDRAM外围电路更简单,其控制器实现的复杂度低,有利于可靠性的提高。从控制器的实现方案来看,采用FPGA实现具有较强的灵活性,并能支持更高的数据吞吐量[2]。因此,本文将主要解决如何利用FPGA实现具有高可靠性的SDRAM控制器,首先是采用自顶向下的模块化设计思路,根据SDRAM的工作原理,将控制器划分成不同的功能模块,使各个模块功能上主次分明;其次是增加上电自校验功能,对关键控制模块进行三模冗余设计,进一步增强控制器的可靠性。
2 控制器总体设计
在控制器总体设计方面,考虑到其可靠性,尽量简化顶层控制模块和底层控制模块之间的接口,顶层控制模块只需管理读写操作;为了提高控制器的可移植性,元件实例化时需要通过GENERIC进行参数的映射[3],使用时只需在顶层模块中设置相关参数,可移植性强。
2.1 SDRAM工作原理
控制器通过ras、cas、we 3根控制线向SDRAM发送控制信号。SDRAM的主要工作过程包括上电初始化、正常读写操作、换行和自动刷新操作。
(1)上电初始化
SDRAM芯片上电之后需要等待200μs的稳定时间,然后进行初始化操作。初始化主要包括预充电、自动刷新和模式寄存器设置等操作。
(2)正常读写操作
读写操作包括了突发读写和非突发读写两种工作模式,在读写操作中行列选通分时进行,时间间隔为tRCD。
(3)换行和自动刷新操作
在SDRAM中进行换行操作包括发送预充电命令关闭当前行和发送激活命令打开新的工作行两个步骤。
SDRAM的存储原理是用电容里的电荷量来表示数据,因此需要不断地刷新来保持电容里的电荷。刷新周期为64ms,每次只刷新一行。进行刷新操作之前要先关闭当前工作行,然后发送刷新命令。
2.2 SDRAM控制器功能模块划分
基于SDRAM的工作原理,在控制器的设计过程中采用了自顶向下的模块化设计方法。整个控制器包括了顶层控制和底层控制两大部分。图1是SDRAM控制器的底层模块划分,包括初始化模块、地址命令数据缓存控制模块、控制信号选择模块、读写数据控制模块和主控制模块5个模块,主控制模块是整个控制器的核心。
下面介绍各个模块的功能。
(1)初始化模块
初始化模块的主要功能是上电等待200μs的稳定时间之后进行预充电、自刷新、模式寄存器设置等操作并发出相应的控制命令。
(2)地址命令数据缓存控制模块
SDRAM在工作过程中因为要进行刷新、寻址等操作,不可能总处于数据传输状态,从而使得它的带宽不能达到百分之百的利用率[4]。地址命令数据缓存控制模块的作用就是配合主控制模块工作,当主控制模块进行刷新、寻址等操作时对顶层控制模块送来的命令、地址、数据在fifo中暂存。此外,SDRAM上电自校验的功能也是在该模块中完成。
(3)控制信号选择模块
初始化模块和主控制模块在工作时都会发出控制信号和地址。控制信号选择模块在初始化完成前选择初始化模块发送的控制信号和地址,初始完成之后选择主控制模块的控制信号和地址。
(4)读写数据控制模块
读写数据控制模块配合SDRAM的双向数据总线工作,通过控制双向buffer中三态门的导通来控制数据流方向。
(5)主控制模块
主控制模块是整个控制器的核心,由一个包含13个状态的状态机来完成对SDRAM的控制,这样可以简化顶层控制模块的复杂度。
3 控制状态机设计
3.1 顶层控制状态机设计
控制器顶层控制模块与底层控制模块之间包括读写命令(0为写,1为读)、地址和数据3个主要接口。这样设计的优点是顶层控制模块只需控制SDRAM读写和相应的地址和数据,无需管理刷新、预充电等操作,可以简化顶层控制的复杂度,这样根据具体应用需求只需改变顶层控制模块。
图2包括空闲态、读写判断状态、写状态、写等待、读状态、读等待6个状态。系统复位之后处于空闲态,等待底层控制模块上电初始化和自校验均成功之后进入读写判断状态,并根据外部控制信号进行相应的读写操作。
3.2 底层控制状态机设计
底层控制状态机包含在控制器底层主控制模块中,是整个SDRAM控制器的核心。该状态机包括13个状态,对SDRAM的读、写、预充电和刷新等操作都是通过这个状态机实现。图3是SDRAM控制器底层控制状态机的状态转移图。
状态转移包括4个主要流程:
(1)写流程:激活→fifo判断→地址判断→写状态→写等待→fifo判断;
(2)读流程:激活→fifo判断→地址判断→读状态→读等待→fifo判断;
(3)换行流程:地址判断→预充电等待→预充电→激活;
(4)刷新流程:fifo判断→预充电-1等待→预充电-1→刷新→激活。
当SDRAM需要进行换行或刷新流程的时候,如果有读或写命令从顶层控制模块发送过来,命令、数据、地址被暂存在fifo中。当刷新或者换行操作完成之后再进行相应读或写操作。
4 可靠性增强设计
在外空间环境中,单粒子翻转(Single Event Upset,SEU)、工作温度突变和电磁辐射的干扰都会影响电子器件的正常工作。为了提高SDRAM工作的可靠性,必须采取一些相应的措施:首先,采集系统每次上电开始正常读写工作之前需要通过控制器对SDRAM工作状况进行自校验,确认其能否正常工作;其次,根据控制器模块划分情况,对SDRAM控制器中的部分关键模块做三模冗余(TMR)设计[5]。
4.1 SDRAM上电自校验
所谓上电自校验是指SDRAM上电初始化完成之后向SDRAM写入若干数据再读出来并做累加和校验,确认SDRAM是否工作正常。
上电自校验的控制过程是在控制器底层的地址命令数据缓存控制模块中完成。具体实现方式是控制器上电初始化完成之后向SDRAM的4个bank的第一行分别写8个固定的数据,然后再从4个bank中将写入的数据读出来,并进行累加和校验。因为写入的数据是固定的,所以读出来累加和也是一个固定值。如果累加和与预期的值相等,则认为SDRAM可以正常工作,否则认为其失效。SDRAM自校验的结果会发送到外部控制处理器,根据校验结果,外部控制处理器会对数据采集流程做相应的调整。
4.2 三模冗余设计(TMR)
设计上电自校验功能是为检测SDRAM芯片能否正常工作。为了提高数据缓存的可靠性,SDRAM控制器本身也要进行可靠性设计。考虑到设计的复杂度和硬件资源等综合情况,选择传统的三模冗余(TripleModule Redundancy,TMR)方法进行容错设计。
图4是三模冗余的电路实现方案,模块1、模块2和模块3功能完全相同,3个模块的输出经过表决系统之后有一个最终的输出。在SDRAM控制器中,由于采取了自顶向下的模块化设计思路,控制器的各个模块有主次之分,在控制器中主控制模块、初始化模块和地址命令数据缓存控制模块比较关键,因此对这3个模块做了三模冗余设计,来提高控制器的可靠性。
5 硬件实现及测试结果
控制器设计使用的开发工具是XILINX的ISE10.1[7],仿真工具使用的是Modelsim SE 6.2e。FPGA芯片选用的是XILINX的xc5vsx50t-1ff665,SDRAM芯片是MICRONE的MT48LC16M16A2TG,这两款芯片都是工业级的。在用上述器件搭建好的实验平台上对设计好并且仿真完成的SDRAM控制器进行了测试。图5是用XILINX的Chipscope软件抓取的SDRAM上电自校验测试时序图,ras、cas、we 3根线组成控制总线。自校验时首先向SDRAM 4个bank(0、1、2、3)各写8个数,前4个数是5,后4个数是10,读出来的校验数据累加和为240。图中数据(0)、数据(1)和数据(2)就是从3个功能相同的模块分别输出的数据总线作为三模冗余的表决电路输入,数据门控也是3个。为了测试三模冗余的效果,对数据(2)和相应的数据门控做了特殊处理,全部置为0。自校验标志显示模块(0)和模块(1)发出自校验成功标志,模块(2)发出自校验失败标志,再次经过三模冗余表决之后自校验结果成功。修改了顶层模块中的相关参数对SDRAM的各种工作模式进行了测试,测试结果表明该控制器对各种工作模式均适应,完全满足数据缓存系统的需要。
6 结论
本文采用FPGA设计了具有高可靠性的SDRAM控制器。与传统的SDRAM控制器相比较,由于按照自顶向下的模块化设计思路,控制器具有间接的分层结构的控制状态机,使其具有更好的可靠性和可移植性。特别是为使得控制器适应空间电磁环境,通过对关键控制模块的三模冗余设计,进一步提高了控制器的抗单离子翻转能力。在硬件上的测试结果表明,在部分模块出错的情况下,控制器均能够克服这些错误的影响,正确地完成SDRAM读写操作,该控制器已成功应用于空间电磁环境中的数据缓存系统。
[1]姚睿,王友仁,于盛林,等.基于进化硬件的自修复TMR系统设计及其可靠性分析[J].传感器与微系统,2007,26(8):72-75,78.
YAORui,WANG You-ren,YU Sheng-lin,et al.Design and reliability analysis of selfrepair TMR systems based on evolvable hardware[J].Transducer and Microsystem Technologies,2007,26(8):72-75,78.(in Chinese)
[2]王艳春,祖静,崔春生.基于FPGA的SDRAM的控制器实现与性能分析[J].电子测试,2010(12):44-46,57.
WANGYan-chun,ZU Jing,CUIChun-sheng.Realization of FPGA and the analysis performance of SDRAM controller[J].Electronic Test,2010(12):44-46,57.(in Chinese)
[3]VoInei A Pedroin.VHDL数字电路设计教程[M].乔庐峰,王志功,译.北京:电子工业出版社,2009.
VoInei A Pedroin.Circuit design wth VHDL[M].Translated by QIAO Lu-feng,WANG Zhi-gong.Beijing:Publishing House of Electronics Industry,2009.(in Chinese)
[4]武文杰,刘皓,李少谦.基于FPGA的支持切换Bank的SDRAM控制器设计[J].信息技术,2006,30(1):33-36.
WUWen-jie,LIU Hao,LI Shao-qian.Design of SDRAM controller supporting alterating Bank accesse based on FPGA[J].Information Technology,2006,30(1):33-36.(in Chinese)
[5]李冬梅,王志华,高文焕,等.FPGA中的空间辐射效应及加固技术[J].电子技术应用,2000,26(8):4-6.
LIDond-mei,WANG Zhi-hua,GAOWen-huan,et al. Space Radiation Effects and Reinforcement Technology of FPGA[J].Application of Electronic Technique,2000,26(8):4 -6.(in Chinese)
[6]马连川,刘波.一种分布式三模冗余控制系统的实现[J].北方交通大学学报,2000,24(5):71-74.
MA Lian-chuan,LIU Bo.Implementation of a Distributed Triple Modular Redundancy Control System[J].Journal of Northern Jiaotong University,2000,24(5):71-74.(in Chinese)
[7]田耕,徐文波,胡彬.Xilinx ISE Design Suite 10.x FPGA开发指南:逻辑设计篇[M].北京:人民邮电出版社,2008.
TIANGeng,XUWen-bo,HUBin.Xilinx ISEDesign Suite10.x FPGA Development Guide—LogicDesign[M].Beijing:People′s Posts and Telecommunications Press,2008.(in Chinese)
ZHUWen-bin was born in Xi′an,ShaanxiProvince,in 1986. He is now a graduate student.His research concerns FPGA and embedded system development.
Email:zwb-maci@126.com
刘春平(1968—),男,重庆人,博士,深圳大学副教授;
LIU Chun-ping was born in Chongqing,in 1968.He is now an associate professorwith the Ph.D.degree.
黄振(1969—),男,重庆人,博士,副教授。
HUANG Zhen was born in Chongqing,in 1969.He is now an associate professor with the Ph.D.degree.
Design and Implementation of a High Reliability SDRAM Controller Based on FPGA
ZHUWen-bin1,LIU Chun-ping1,HUANG Zhen2
(1.Shenzhen University,Shenzhen 518060,China;2.School of Aerospace,Tsinghua University,Beijing 100084,China)
A designmethod of high reliability SDRAM controller based on FPGA is proposed for data cache utilized in space electromagnetic environment.This controller ismodularized from top to bottom,including two layers statemachine of top controland bottom driver.Its reliability is improved by the functions of power-on selfchecking and critical controlmodule triplemodular redundancy(TMR).Finally,the FPGA hardware implementation and testing of the controller are completed,and the test results show that this design is highly reliable and flexible,which can be provided as guidance for realization of a practical data cache system in space electromagnetic environment.
space electromagnetic environment;data cache;SDRAM controller;reliability;triple modular redundancy;self-checking
TN409
A
10.3969/j.issn.1001-893x.2011.10.023
朱文斌(1986—),男,陕西西安人,深圳大学光电工程学院硕士研究生,主要从事FPGA及嵌入式系统开发工作;
1001-893X(2011)10-0113-04
2011-06-14;
2011-08-17