朱文斌,劉春平,黃振
基于FPGA的高可靠性SDRAM控制器設計與實現?
朱文斌1,劉春平1,黃振2
(1.深圳大學,廣東深圳518060;2.清華大學航天航空學院,北京100084)
為了實現空間電磁環境中數據緩存,提出了一種采用FPGA設計具有高可靠性的SDRAM控制器方案。該控制器采用自頂向下的模塊化設計,包括頂層控制和底層驅動兩層狀態機,并且通過上電自校驗和關鍵控制模塊三模冗余提高其可靠性。在此基礎上,完成了控制器的FPGA硬件實現和測試。測試結果表明,該設計方案具有很高可靠性和可移植性,對應用于空間電磁環境中的數據緩存系統的工程實現具有指導意義。
空間電磁環境;數據緩存;SDRAM控制器;可靠性;三模冗余;自校驗
在空間電磁環境中,由于受到高能輻射粒子的影響,電子器件會出現單離子翻轉(Single Event Upset,SEU)等現象,從而導致FPGA內部寄存器內容改變,引起傳輸數據的錯誤,控制信號的錯亂,甚至是整個工作系統的失效[1],因此,需要設計高可靠性的數據緩存控制器。常用的數據存儲芯片包括SDRAM和DDR-SDRAM兩種,均具有單位面積存儲容量大和存取速度快的特點。但與DDR-SDRAM相比,SDRAM外圍電路更簡單,其控制器實現的復雜度低,有利于可靠性的提高。從控制器的實現方案來看,采用FPGA實現具有較強的靈活性,并能支持更高的數據吞吐量[2]。因此,本文將主要解決如何利用FPGA實現具有高可靠性的SDRAM控制器,首先是采用自頂向下的模塊化設計思路,根據SDRAM的工作原理,將控制器劃分成不同的功能模塊,使各個模塊功能上主次分明;其次是增加上電自校驗功能,對關鍵控制模塊進行三模冗余設計,進一步增強控制器的可靠性。
在控制器總體設計方面,考慮到其可靠性,盡量簡化頂層控制模塊和底層控制模塊之間的接口,頂層控制模塊只需管理讀寫操作;為了提高控制器的可移植性,元件實例化時需要通過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.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中。當刷新或者換行操作完成之后再進行相應讀或寫操作。
在外空間環境中,單粒子翻轉(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個模塊做了三模冗余設計,來提高控制器的可靠性。
控制器設計使用的開發工具是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的各種工作模式進行了測試,測試結果表明該控制器對各種工作模式均適應,完全滿足數據緩存系統的需要。
本文采用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