陳曉靜 (長江大學電子信息學院,湖北 荊州 434023 )
李開成,李 沁 (華中科技大學電氣與電子工程學院,湖北 武漢 430074)
基于FPGA和SDRAM的雷電地閃探測單元存儲系統(tǒng)設計
陳曉靜 (長江大學電子信息學院,湖北 荊州 434023 )
李開成,李 沁 (華中科技大學電氣與電子工程學院,湖北 武漢 430074)
針對雷電地閃信號存儲的特點,提出了基于FPGA和SDRAM的地閃探測單元存儲系統(tǒng)的總體設計,介紹了SDRAM控制器設計中的關鍵問題及解決方案,給出了SDRAM接口硬件電路,詳細介紹了SDRAM控制器的核心部分——時序控制器的狀態(tài)轉換設計,最后給出SIGNALTAPII的運行結果。實際雷電信號測試結果證明該存儲系統(tǒng)的設計能夠滿足雷電地閃探測單元系統(tǒng)的需要。
FPGA;SDRAM;地閃探測;存儲系統(tǒng)
雷電災害是指雷雨云中電能釋放、擊中物體或所形成的強烈電磁輻射而造成損失的災害現象。隨著高科技的發(fā)展,雷電災害越來越嚴重,雷電監(jiān)測與氣象災害預警技術的研究顯得尤為迫切。雷電地閃探測單元是全能型雷電探測設備的一個子課題,全能型雷電探測設備的研制和應用將會滿足有關部門雷電監(jiān)測和氣象災害預警應用的需求。雷電地閃探測單元[1]的主要任務是拾取天線接收的地閃磁場信號和大氣電場信號,并提取雷電信號的特征量包括波達時間、磁場/電場峰值、方位角等信息,同時保存地閃波形數據供探測站主機讀取。雷電地閃信號采集屬于多通道高速數據采集,因此采用FPGA完成雷電地閃探測單元的設計。探測單元中的存儲系統(tǒng)必不可少,因為探測站主機需要采集處理的數據不僅包括地閃信號,而且還包括云閃、光探測單元等其他信號,這些信號具有并發(fā)特性,因此要求各探測單元必須具備存儲的環(huán)節(jié),以防止主機不能及時處理數據而造成的數據丟失??紤]到雷電地閃信號采集速率高、存儲容量大、存取速度快以及成本因素,地閃探測單元存儲系統(tǒng)采用SDRAM來設計。
1.1SDRAM存儲容量計算及選型
根據雷電信號存儲的要求,需要存儲至少10次雷電閃擊的數據,每次閃擊包括雷電特征量和三通道的波形數據。雷電特征量包括波達時間、方位角、磁場/電場峰值等,每次閃擊特征量占用空間不到100字,所以1K字的存儲空間足以存放10次閃擊的雷電特征量。三通道包括兩路從正交環(huán)天線輸入的磁場信號,一路從平板電場天線輸入的大氣電場信號。波形數據所占容量大小與通道數、通道采樣率、采樣位寬、采樣時間有關,地閃信號頻率覆蓋范圍在300kHz以下,并考慮留有裕量,探測單元的采樣頻率定為2MHz,采樣時間應保證能完整保存全部閃擊的波形,1s的采樣時間足以滿足要求。按照采樣頻率2MHz,采樣位寬14bits(約2字節(jié)),3通道,1s采樣時間,10次閃擊計算,需要存儲容量大小為2×3×2M×10字節(jié)=120M字節(jié)。
該設計選用SDRAM型號為MT48LC32M16A2?512MbSDRAMfront.fm.rev.L 10/07 EN.Micron Technology,2000.,該芯片的主要特點為:3.3V電源供電,工作頻率133MHz,所有信號傳輸在系統(tǒng)時鐘的上升沿進行,內部采用流水線技術,列地址可以在任何時鐘周期內改變,可被配置為猝發(fā)長度為1、2、4、8或整頁猝發(fā)讀寫模式,具有自刷新節(jié)電功能,可實現自動預充電,行刷新周期64ms,133MHz工作頻率下CAS延時為5.4ns,芯片位寬為16bits,存儲體共有4個BANKS,每個BANK有8192(213)ROWS,每個ROW有1024個(210)COLUMNS,1片MT48LC32M16A2容量大小為32M字,則2片可滿足要求。
1.2SDRAM控制器設計需解決的關鍵問題和總體設計
1)SDRAM控制器設計需解決的關鍵問題 SDRAM控制器是基于FPGA平臺實現,FPGA選用StratixII公司的EP2S60F672*Stratix II Device Handbook,volume 1.Altera Corporation,2007.,該型號的FPGA內部包括24176個ALMS,48352個ALUTS,2544192 bits 的RAM,36個DSP模塊,144個18bits×18bits的乘法器,4個enhanced PLLs,8個fast PLLS,718個I/O口,足以滿足雷電信號的采集和處理的要求。 SDRAM控制器要完成3通道16位的數據存儲及讀取的控制,其設計需解決以下關鍵問題。
設計關鍵問題1:采集字長和存儲字長不匹配的問題。雷電地閃探測單元需要并行采集3個通道,每個通道位寬16bits,而兩片MT48LC32M16A2并行連接組成的位寬為32bits,某一時刻只能并行存儲2個通道的數據,因此存在采集字長和存儲字長不匹配的問題。解決方法是采用緩存和分時存儲的辦法。為每個通道設計一個FIFO緩存器,采集的數據首先放入緩存,寫SDRAM時先并行存入通道0和通道1的FIFO緩存數據,之后再存入通道2的FIFO緩存數據,從而達到了較快的采集速率,充分利用了存儲容量,并解決了字長匹配問題。
設計關鍵問題2:通道數據存放格式。為簡化FPGA程序的設計,通道數據在SDRAM中的存放需遵循一定的規(guī)律,如表1所示。設計在BANK0的ROW0行中存放雷電特征量共占用1024個雙字單元,從ROW1開始所有單元全部存放波形數據。每個ROW的前512COLUMS存放通道0和通道1的數據,其中通道0占低字單元,通道1占高字單元,后512COLUMS存放通道2的數據,通道2占低字單元,高字單元為無關隨機數。每次閃擊的采樣時間為1s,按2MHz采樣速率計算需要2000000/512=3906ROWS存放。
圖1 SDRAM控制器設計框圖
設計關鍵問題3:通道數據的讀取。通道數據的讀取在PCI總線讀命令下啟動,其讀取要遵循通道數據存放規(guī)律,通道0和通道1的數據能夠并行輸出組成32bits,通道2存放地址與其他兩通道不同,所以需要分時輸出。可設計2個容量為1k字的READ FIFO,一個READ FIFO用于緩沖存儲器的低字單元數據,包括分時出現的通道0和通道2的數據,另一個READ FIFO用于緩沖存儲器的高字單元數據,包括通道1的數據。FIFO輸出數據再送入PCI控制單元被PCI總線所讀取。
2)SDRAM控制器總體設計 控制器設計框圖如圖1所示,設計結構包括3個容量為1k字的WRITE FIFO,2個容量為1k字的READ FIFO,1個時序控制器模塊,1個SDRAM驅動模塊以及特征量提取單元:WRITE FIFO[2]起緩存數據的作用,解決采集字長和存儲字長不匹配的問題以及采樣速率10MHz和SDRAM存儲速率133MHz不同的矛盾;READ FIFO也是起緩存數據的作用,解決了SDRAM讀取速率133MHz和PCI總線讀取速率50M不同的矛盾;SDRAM驅動模塊完成命令、地址譯碼的功能*SDR SDRAM Controller White Paper. Altera Corporation,2000.;時序控制器模塊用于產生協(xié)調各部分模塊工作的時序控制信號,是SDRAM控制器設計的核心;特征量提取單元用于提取雷電信號的特征量包括波達時間、磁場/電場峰值、方位角等信息,該單元與波形存儲模塊并行工作,當波形采集完后,各特征量也提取完畢,并按數據存放格式的要求存放在存儲器的ROW0單元。
1.3SDRAM接口硬件設計
存儲系統(tǒng)由2片MT48LC32M16A2并行連接組成,如圖2所示,其中MT48LC32M16A2(1)用于存放低字,MT48LC32M16A2(2)用于存放高字,2片使用共同的地址線和控制線,不同的數據線和數據屏蔽線,組成容量為32M×32bits的存儲系統(tǒng)。其中的地址線SA是行地址列地址分時復用線,行地址線占SA0~SA12,列地址線占SA0~SA9,地址線BA包括BA0~BA1。
1.4時序控制器的FPGA設計
圖2 SDRAM接口硬件設計
圖3 SDRAM時序控制器的狀態(tài)轉換圖
時序控制器模塊用于產生協(xié)調各部分模塊工作的時序控制信號,是SDRAM控制器設計的核心,其狀態(tài)轉換圖設計如圖3所示。系統(tǒng)復位后,首先進入狀態(tài)1即SDRAM初始化狀態(tài),執(zhí)行一些SDRAM能正常讀寫所需要的一些預操作包括預充電、載入模式字、載入寄存器2的值以及載入寄存器1的值等,初始化完畢后進入狀態(tài)6即SDRAM刷新狀態(tài),同時對磁場信號的峰值大小進行判斷,超過閾值(標志thrld=1)并符合地閃雷電特征,則認為雷電數據到來,使能WRITE FIFO的寫操作并維持1s的雷電采樣時間長度,當WRITE FIFO半滿標志halfen=1時進入狀態(tài)2,即塊寫SDRAM波形數據狀態(tài),此狀態(tài)下進行2次分時塊寫SDRAM某一行的操作,第1次將2個磁場通道的WRITE FIFO中32位數據并行直通式寫入某行的前512列,第二次將電場通道的WRITE FIFO中的16位數據高位補0后補齊32位數據,直通式寫入某行的后512列,行地址從1開始。狀態(tài)2完畢后進入SDRAM刷新狀態(tài)7,當WRITE FIFO半滿標志halfen=1時再次進入狀態(tài)2,重復上述過程,當寫完3906行后(1s采樣過程結束,標志nrdsts=1),進入狀態(tài)3,即塊寫SDRAM特征量狀態(tài),此狀態(tài)下將把特征提取模塊所獲得的所有特征量寫入SDRAM的行0,行地址為0。狀態(tài)3完畢后返回SDRAM刷新狀態(tài)7,延時后進入狀態(tài)4即塊讀SDRAM特征量狀態(tài),將SDRAM的行0中存放的特征量讀出至READ FIFO中,保證PCI局部總線控制模塊讀取時不為空。狀態(tài)4完畢后,SDRAM控制器通過PCI總線向主機發(fā)送一中斷信號,通知主機有雷電數據到來可以進行讀取數據的操作。主機在合適的時候進行讀READ FIFO操作,若READ FIFO被讀為半空狀態(tài)(標志halfnullen=1),則狀態(tài)7切換到狀態(tài)5,即塊讀SDRAM波形數據狀態(tài),此狀態(tài)下進行2次分時塊讀SDRAM的操作,第一次將某行的前512列讀出至2個READ FIFO,數據寬度為32位,第2次將某行的后512列讀出至1個READ FIFO,高16位數據為無關數,直到讀完所有3906行為止(標志位allend=1),重新返回等待雷電數據來到的狀態(tài)6。由于READ FIFO的寫入速率遠大于讀出速率,所以不會出現被讀空或寫滿的情況。
由雷電采集硬件平臺完成對雷電信號的前置放大、濾波處理,當檢測到有過閾值且符合地閃雷電特征的信號產生時,啟動探測單元的存儲系統(tǒng)開始工作。以下是采用QuartusII軟件測試到的SDRAM的工作情況(見圖4):
(1)觀察從SDRAM中讀出的通道0(磁場通道1,如①所示)和通道2(電場通道,如②所示)的數據波形。觀察節(jié)點包括SDRAM的控制信號RAS_N、CAS_N、WE_N,以及READ FIFO的寫讀控制信號nwr、nrd,輸入數據信號Din,輸出數據信號Dout,其中nrd信號來源于PCI控制單元[3]。 從圖4可以看出SDRAM在PCI總線的讀控制命令下能夠正確讀出結果,每次讀操作實現了512個數據的傳輸,并成功實現了通道0和通道2的分時傳輸。
圖4 從SDRAM中讀出的通道0和通道2數據波形
(2)觀察PCI總線上的3路波形。觀察節(jié)點包括READ FIFO的數據輸出,圖5顯示實現了通道0(磁場通道1)和通道1(磁場通道2,如③所示)并行傳輸,通道2(電場通道)分時傳輸。
圖5 PCI總線上的3路波形
在分析雷電信號存儲特點的基礎上,提出了SDRAM控制器設計需要解決的關鍵問題以及具體的控制器設計方案,最后用實際雷電信號測試了存儲單元的工作性能,試驗證明該存儲系統(tǒng)的設計能夠滿足雷電地閃探測單元系統(tǒng)的需要。
[1]陳曉靜,李開成,張明,等.雷電地閃探測單元的研制[J].電測與儀表,2012,49(5):52-55.
[2]高子旺,顧美康.一種基于FPGA的低復雜度SDRAM控制器實現方法[J].計算機與數字工程,2010,38(1):194-196.
[3]王誠,吳繼華.Altera FPGA/CPLD設計(基礎篇、高級篇)[M].北京:人民郵電出版社,2005.
2013-01-12
國家自然科學基金項目(51077058)。
陳曉靜(1980-),女,講師,博士生,現主要從事電磁測量與儀器方面的研究工作。
TP334.7
A
1673-1409(2013)19-0071-04
[編輯] 洪云飛