劉延飛,楊鐵阡,李 琪,倪 亮
(第二炮兵工程學(xué)院,西安 710025)
航空航天設(shè)備的測試通常根據(jù)不同測試對象的特征采用不同的測試總線,因此有必要提出一種多總線地面測試設(shè)備的設(shè)計(jì)方案,而測試設(shè)備需要讀寫速度快、容量大的存儲器來存儲采集的圖像數(shù)據(jù)和各種總線上傳輸?shù)臄?shù)據(jù)。在各種隨機(jī)存儲器中,SDRAM價(jià)格低、體積小、速度快、容量大、控制相對簡單,是比較理想的器件[1],但是SDRAM讀寫邏輯比較復(fù)雜,需要利用現(xiàn)場可編程邏輯器件對其進(jìn)行控制[2]。另一方面,傳統(tǒng)的單片緩存器數(shù)據(jù)存儲量少、讀寫速度較慢,不能滿足目前某型導(dǎo)彈多總線地面測試設(shè)備傳輸數(shù)據(jù)量大、速度快的要求,為此設(shè)計(jì)了基于乒乓操作的雙SDRAM控制器,用于多總線地面測試設(shè)備中的實(shí)時(shí)圖像采集與數(shù)據(jù)處理。
基于FPGA芯片高速、高集成度、編程靈活等優(yōu)點(diǎn),多總線地面測試設(shè)備以FPGA器件為控制核心,采用硬件描述語言Verilog進(jìn)行編程設(shè)計(jì)[3],可以方便地實(shí)現(xiàn)數(shù)據(jù)的不間斷采集、存儲和顯示等功能。其工作原理為:采集數(shù)據(jù)時(shí),圖像發(fā)生裝置將實(shí)時(shí)圖像數(shù)據(jù)通過 DS90C124轉(zhuǎn)換、FPGA控制,存儲在SDRAM中;數(shù)據(jù)上傳時(shí),通過專用接口芯片PCI9054將SDRAM中存儲的數(shù)據(jù)通過PXI總線傳輸至上位機(jī),完成圖像數(shù)據(jù)的上傳;圖像顯示時(shí),上位機(jī)經(jīng)PXI總線將采集的圖像數(shù)據(jù)通過PCI9054后輸出到SDRAM,FPGA控制SDRAM讀數(shù)據(jù),通過DS90C241轉(zhuǎn)換,實(shí)現(xiàn)圖像的顯示[4]。上位機(jī)也可以通過發(fā)送指令,直接將保存在SDRAM中的數(shù)據(jù)經(jīng)DS90C241轉(zhuǎn)換后輸出顯示。利用同步RS485總線進(jìn)行測試時(shí),上位機(jī)向RS485驅(qū)動(dòng)發(fā)送一個(gè)請求幀,隨后轉(zhuǎn)入數(shù)據(jù)接收等待狀態(tài),有同步串行數(shù)據(jù)到來時(shí),首先完成HDLC協(xié)議分析,然后將其轉(zhuǎn)換為16位并行數(shù)據(jù)由FPGA控制存入SDRAM中,當(dāng)上位機(jī)讀取數(shù)據(jù)時(shí),將SDRAM中暫存的數(shù)據(jù)發(fā)送到上位機(jī)進(jìn)行數(shù)據(jù)存儲。利用CAN總線進(jìn)行測試時(shí),上位機(jī)將采集的圖像與預(yù)先存儲的特征圖進(jìn)行比較,根據(jù)對應(yīng)的誤差解算出控制指令,通過CAN總線接口發(fā)送給被測對象,同時(shí)被測對象將執(zhí)行機(jī)構(gòu)的相關(guān)數(shù)據(jù)通過CAN總線接口上傳至上位機(jī),實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)處理與顯示。其整體設(shè)計(jì)框圖如圖1所示。
圖1 多總線地面測試設(shè)備結(jié)構(gòu)框圖Fig.1 Structure of mutibus ground-based test equipment
SDRAM具有空間存儲量大、讀寫速度快、價(jià)格相對便宜的特點(diǎn),適用于本系統(tǒng)。但其控制邏輯復(fù)雜,需要周期性刷新操作、行列管理、不同延時(shí)和命令序列等[5]。根據(jù)系統(tǒng)對圖像存儲容量及讀寫速度要求,本文采用了三星公司的K4S511632B-TC(L)。
SDRAM控制器針對SDRAM的指令操作特點(diǎn),為SDRAM提供同步命令接口和時(shí)序邏輯控制,下面將以ALTERA公司的CycloneⅡ系列芯片中的EP2C70F67218為例,介紹SDRAM控制器的具體設(shè)計(jì)方法。圖2為SDRAM控制器的接口原理圖。
圖2 SDRAM控制器接口原理圖Fig.2 Schematic diagram of interface for SDRAM controller
SDRAM控制器作為頂層模塊,由3個(gè)主要模塊組成:接口控制模塊、命令解析模塊、數(shù)據(jù)通路模塊[6]。下面將介紹各個(gè)模塊的功能及Verilog語言實(shí)現(xiàn)方法。
接口控制模塊主要實(shí)現(xiàn)的功能是將輸入的命令變量CMD[2∶0]翻譯成接口指令和對刷新計(jì)數(shù)器的控制指令[7],如圖3所示。首先通過狀態(tài)機(jī)來完成對 CMD[2∶0]的解析,根據(jù)CMD[2∶0]的值來決定狀態(tài)的轉(zhuǎn)移,完成對 CMD[2∶0]的解碼,實(shí)現(xiàn)SDRAM的預(yù)充電、刷新、讀、寫等功能。
圖3 接口控制模塊Fig.3 Interface controller module
該模塊主要實(shí)現(xiàn)對輸入的指令請求進(jìn)行仲裁判斷,并將仲裁后要執(zhí)行的指令解碼成SDRAM需要的RAS、CAS等信號,從而實(shí)現(xiàn)對SDRAM的控制[8],如圖4所示。
圖4 命令解析模塊Fig.4 Command analyzer module
部分代碼如下:
數(shù)據(jù)通路模塊主要是在讀寫命令期間處理數(shù)據(jù)的路徑操作。模塊結(jié)構(gòu)圖如圖5所示。其中DQ是雙向數(shù)據(jù)線,用來傳輸從SDRAM讀出的數(shù)據(jù)和向SDRAM寫入的數(shù)據(jù)。無論是數(shù)據(jù)在讀出還是寫入時(shí),都是在OE為高時(shí)有效。DM是由主機(jī)輸出的數(shù)據(jù)掩碼,通過DQM輸出到SDRAM的LDQM和UDQM管腳,進(jìn)而控制SDRAM I/O緩沖的低字節(jié)和高字節(jié)[9],實(shí)現(xiàn)數(shù)據(jù)的有效傳輸。
圖5 數(shù)據(jù)通路模塊Fig.5 Data path module
在本測試設(shè)備中,數(shù)據(jù)是按幀傳輸?shù)?。FPGA把接收到的數(shù)據(jù)先存儲在其外接的SDRAM中,FPGA控制SDRAM再把數(shù)據(jù)通過PCI9054上傳至上位機(jī)。如果FPGA外接一片SDRAM會(huì)使數(shù)據(jù)傳輸效率大打折扣。為了提高傳輸速度,體現(xiàn)面積換取速度的思想,測試設(shè)備數(shù)據(jù)流傳輸使用兩片SDRAM進(jìn)行乒乓操作[10],如圖6所示。乒乓操作的最大特點(diǎn)是通過“輸入數(shù)據(jù)選擇單元”和“輸出數(shù)據(jù)選擇單元”按節(jié)拍相互配合地切換,將經(jīng)過緩沖的數(shù)據(jù)流沒有停頓地送到“數(shù)據(jù)流運(yùn)算處理模塊”進(jìn)行運(yùn)算與處理。對于整個(gè)控制器而言輸入數(shù)據(jù)流和輸出數(shù)據(jù)流都是連續(xù)不斷的,很好地實(shí)現(xiàn)了數(shù)據(jù)的無縫緩沖與處理。
圖6 乒乓操作工作原理圖Fig.6 Schematic diagram of ping-pong operation
其部分代碼如下:
本文設(shè)計(jì)的SDRAM控制器基于Verilog語言編寫程序,所選用的軟件為QuartusⅡ8.1,利用軟件進(jìn)行綜合優(yōu)化。代碼下載到系統(tǒng)后運(yùn)行性能良好,能夠較好地完成SDRAM與FPGA的數(shù)據(jù)交換。圖7為在Quartus環(huán)境下的功能仿真。當(dāng)CMD[2∶0]為001時(shí)開始讀取數(shù)據(jù)總線上的數(shù)據(jù),行、列選通信號依次有效,SDRAM內(nèi)部數(shù)據(jù)讀出至DATAOUT[15∶0]。
圖7 讀數(shù)據(jù)時(shí)功能仿真Fig.7 Function simulation for reading data
本文結(jié)合SDRAM控制指令的特點(diǎn),詳細(xì)地介紹了一種基于FPGA的雙SDRAM控制器的設(shè)計(jì)方案。重點(diǎn)研究了SDRAM各個(gè)基本操作如初始化、行有效、列讀寫以及突發(fā)操作等等,分析了SDRAM控制器的基本功能以及指令操作特點(diǎn)。經(jīng)過軟件仿真和代碼調(diào)試,證明本控制器能夠應(yīng)用于多總線地面測試設(shè)備中,具有良好的開發(fā)利用前景。
[1]Klehn B,Brox M.A Comparison of current SDRAM types:SDR,DDR,and RDRAM[J].Advances in Radio Science,2003(1):265-271.
[2]高子旺,顧美康.一種基于FPGA的低復(fù)雜度SDRA M控制器實(shí)現(xiàn)方法[J].計(jì)算機(jī)與數(shù)字工程,2010,38(1):194-196.GAO Zi-wang,GU Mei-kang.Low Complexity ImplementationMethod of SDRA M Controller based on FPGA[J].Computer and Digital Engineering,2010,38(1):194-196.(inChinese)
[3]吳繼華,王誠.Altera FPGA/CPLD設(shè)計(jì)(高級篇)[M].北京:人民郵電出版社,2005:80-101.WU Ji-hua,WANG Chen.FPGA/CPLD design for Altera(Advanced Level)[M].Beijing:People′s Posts&Telecommunication Press,2005:80-101.(in Chinese)
[4]朱新平,基于CPLD和SDRAM的視頻多功能卡設(shè)計(jì)[J].電視技術(shù),2009,33(2):223-224.ZHU Xin-ping.Design of Video Multi-function Board Based CPLD and SDRAM[J].Video Engineering,2009,33(2):223-224.(in Chinese)
[5]陳焱輝.嵌入式SDRAM控制器設(shè)計(jì)研究[D].西安:西安電子科技大學(xué),2009.CHEN Yan-hui.R esearch on the Design of Embedded SDR AM Controller[D].Xi′an:Xidian University,2009.(in Chinese)
[6]孫睿.基于SDRAM基本結(jié)構(gòu)、操作及相關(guān)時(shí)序參數(shù)的研究[J].中國集成電路,2010,129(2):56-60.SUN Rui.A Research of Basic Structure Operations and Relative Timing Parameters of SDRAM[J].China Integrated Circuit,2010,129(2):56-60.(in Chinese)
[7]WANG Xiaohui,ZHAO Yiqiang,XIE Xiaodong,et al.Design and implementation of an efficient SDRAM controller for HDTV decoder[J].High Technology Letters,2007,13(4):1288-1290.
[8]GUO Li,ZHANG Ying,LI Ning,et al.The Feature of DDR SDRAM and the Implementation of DDR SDRAM Controllers via VHDL[J].Journal of China Universities of Posts and Telecommunications,2002,9(1):61-65.
[9]BI Zhankun,HUANG Zhiping,WANG Yueke.Application in high speed signal acquisition of DDR SDRAM MegaCore Controller[C]//Proceedings of the Seventh International Conference on Electronic Measurement and Instruments.[S.l.]:IEEE,2005:362-365.
[10]徐欣,于紅旗,易凡,等.基于FPGA的嵌入式系統(tǒng)設(shè)計(jì)[M].北京:機(jī)械工業(yè)出版社,2005:79-102.XU Xin,YU Hong-qi,YI Fan,et al.Embedded system design based on FPGA[M].Beijing:China Machine Press,2005:79-102.(in Chinese)