張娟娟,蒲南江
(中北大學 儀器科學與動態(tài)測試教育部重點實驗室 山西 太原 030051)
本文介紹一種基于FPGA的嵌入式數(shù)據(jù)采集系統(tǒng)的控制電路、數(shù)字信號處理模塊、信號的顯示模塊以及接口電路的設計。這樣可以將一個數(shù)據(jù)采集系統(tǒng)做成一個靈活完整的可編程片上系統(tǒng)SOPC,與以前的專用集成電路(ASIC)相比,SOPC具有更大的靈活性,基于SOPC的設計可以充分滿足數(shù)據(jù)采集器高可靠性、靈活性、前端智能化的要求,同時降低了成本,擁有廣闊的市場前景[4-5]。
以FPGA為載體構建SOPC系統(tǒng)作為控制平臺,其外圍電路由調理單元、控制單元、存儲單元、顯示單元組成。框圖如圖1所示。

圖1 系統(tǒng)原理框圖
控制器控制前置調理電路、AD采集模塊、FIFO數(shù)據(jù)緩存模塊、Flash存儲器在各自時序下工作,完成對每次試驗數(shù)據(jù)的采集與存儲。
前置調理電路:信號調理在數(shù)據(jù)采集系統(tǒng)中很重要,不同的輸入信號,所需的前端預處理技術不盡相同,通常包括放大、過濾、隔離、激勵、線性化等,本電路主要完成對數(shù)據(jù)采集通道和各通道信號相應放大倍數(shù)選擇,滿足AD采集模塊模擬信號輸入要求。
A/D的控制:控制器根據(jù)AD的工作時序,控制AD在不同采樣頻率下工作,完成數(shù)據(jù)的采集。
FIFO緩存控制:配合前端AD采集電路,控制緩存器工作時序,對數(shù)據(jù)緩存,之后對數(shù)據(jù)的進行處理。
數(shù)據(jù)處理單元:控制器控制時序、將FIFO中的數(shù)據(jù)進行FFT運算,將結果存入存儲單元,以供后續(xù)單元的使用。
顯示單元:將處理過的數(shù)字信號進行頻譜顯示,觀察其頻譜特征和其他的一些特性,以進行一些控制措施。
XILINX公司的Spartan 3E 系列的XC3S500E FPGA芯片內嵌20個硬件乘法器,可以實現(xiàn)FFT算法用以滿足基于FPGA的數(shù)字信號處理的設計方法。FFT的硬件實現(xiàn)結構如圖2所示。

圖2 FFT實現(xiàn)流程
圖2是FFT的總體結構框圖主要包括4部分:存儲器、蝶形運算單元、控制器、ROM。圖中,蝶形運算單元選為基2或者基4運算,ROM中存儲的是N點旋轉因子。控制模塊產生所有的控制信號以及存儲器1和2的讀寫地址、寫使能、運算模塊的啟動信號及ROM的讀地址等信號。存儲器1作為當前輸入標志對應輸入N點數(shù)據(jù)的緩沖器,存儲器2作為中間結果存儲器。采用兩個存儲器可實現(xiàn)數(shù)據(jù)的流水線操作,即在向存儲器2中寫入數(shù)據(jù)的同時,可以從存儲器1中讀出下一組的輸入數(shù)據(jù)。
整個系統(tǒng)的工作流程是:外部輸入數(shù)據(jù)在時鐘的控制下,寫入存儲器1中,當控制器接收到存儲器1準備就緒的信號后,控制器使能存儲器1和旋轉因子存儲器的讀取信號,讀出存儲器1中相應地址的數(shù)據(jù)與ROM中的旋轉因子數(shù)據(jù)進行蝶形運算;每一級運算的中間結果都寫入存儲器2中,在圖中各種使能信號和數(shù)據(jù)的緊密配合下,最后將FFT計算結果輸出。蝶形運算單元是FFT處理器的基本單元,基2蝶形運算單元是由一個復數(shù)加法器、一個復數(shù)減法器和一個旋轉因子復數(shù)乘法器組成,所以在FFT中設計一個高效的乘法器可以提高FFT的計算速度,提高運算效率。采用一種高效乘法器算法來設計實現(xiàn)旋轉因子復數(shù)乘法器,由于XILINX公司的FPGA內置有高速乘法器模塊,選用其內置乘法器來完成乘法運算單元的設計,調用CORE Generator核生成器,可以進行FFT的設計。經過處理的數(shù)據(jù)通過FPGA控制顯示被采集的信號的頻譜特征曲線或者其他特征數(shù)據(jù)。
為了能夠對采集的信號的頻譜進行實時顯示,需要將經過處理的數(shù)據(jù)直接送入液晶進行顯示。一般采用單片機進行控制,而且現(xiàn)在大多數(shù)液晶的控制器支持復雜的指令,也更適合在單片機下使用。但是液晶的讀寫本身就受時序的控制,這就為使用FPGA控制提供了方便,也就是說,無論哪種類型液晶,只要明白了液晶控制的時序,就很容易控制它。對于液晶顯示方式,先計算出波形在液晶屏幕的位置,通過對液晶的操作時序,將所需顯示的像素點一個個顯示到液晶屏上,當一屏顯示結束時就有完整的波形顯示出來。本設計中采用分辨率為320×240的單色液晶顯示屏就可以達到設計中顯示所采集的信號頻譜曲線的目的。
顯示單元采用分辨率為320×240一種單色液晶模塊可以用來進行頻譜顯示。由于本設計中FPGA所要控制的外設LCD不是較為常用的外設器件。因此,在EDK集成開發(fā)環(huán)境中,Xilinx并未提供與其相應的外設控制IP核。這就要求設計員自己開發(fā)滿足設計需求的外設IP核,使FPGA內的MicroBlaze處理器軟核通過總線能夠實現(xiàn)對外部芯片的控制和讀寫數(shù)據(jù)。
傳統(tǒng)的嵌入式系統(tǒng)在程序設計上一般采用的是前后臺方式或超循環(huán)方式。對于簡單的應用,這種前后臺方式是可以滿足需求的,但是隨著應用的復雜化,系統(tǒng)可能要同時監(jiān)測/控制多個外部設備,要求較高的實時性,有多個任務要處理。如果在系統(tǒng)軟件設計上仍然采用上述的傳統(tǒng)方式,就會出現(xiàn)兩個比較突出的問題。一是中斷響應,一般為了保證某一項重要任務的實時性,就必須在ISR中進行較為復雜的處理,這樣一來就要考慮代碼重入、系統(tǒng)硬件堆棧溢出等問題。二是任務多,要考慮的各種可能性也多,各種資源調度不當就會造成共享數(shù)據(jù)的不一致,降低系統(tǒng)的可靠性,同時程序量也加大。
解決這些問題的最好方法就是使用嵌入式實時操作系統(tǒng)RTOS。使用RTOS可以有效的對多個任務進行調度,對各個任務賦予不同的優(yōu)先級可以保證緊急任務得到及時響應。RTOS也體現(xiàn)了一種新的應用程序設計思想和開放的框架,降低了程序的復雜度和開發(fā)周期。系統(tǒng)采用uC/OS-II實時操作系統(tǒng)。
實驗過程由信號發(fā)生器產生信號,系統(tǒng)對信號的采集圖像如圖3所示。實驗驗證得到系統(tǒng)最高采樣速度能達到12MB/s。且能夠將測量數(shù)據(jù)無失真還原,并實現(xiàn)了四通道波形同時顯示,分別控制的功能。該模塊能更方便、更直觀的完成波形的比較。

圖3 實驗波形
本文介紹了一種基于FPGA的嵌入式數(shù)據(jù)記錄儀的實現(xiàn)方法,該記錄儀能有效進行高速高精度存儲測試,能夠方便、可靠地實現(xiàn)對武器系統(tǒng)參數(shù)的測試,充分發(fā)揮存儲測試技術所具有的無需引線、抗干擾能力強的優(yōu)點,是解決高溫、高沖擊、高壓環(huán)境下參數(shù)測試的先進手段,值得大力推廣應用。
[1]譚斌,雷宏.基于FPGA的數(shù)據(jù)記錄器數(shù)據(jù)源的研究與實現(xiàn)[J].電子測量技術,2006(6):4-5.
[2]劉文怡,張彥軍,李海宏,譚秋林.全覆蓋型彈載數(shù)據(jù)記錄器的研究與實現(xiàn)[J].電測與儀表,2008(1):1-2.
[3]李春,吳世通,鄧黎.航天器空投試驗用大容量數(shù)據(jù)記錄器的研究[J].航天返回與遙感, 2006(1):2-4.
[4]譚斌.數(shù)據(jù)記錄器的研究與數(shù)據(jù)源的實現(xiàn)[D].北京:中國科學院,2006:34-37.
[5]王玲,焦新泉,甄國涌.彈載數(shù)據(jù)記錄器的設計與應用[J].飛航導彈, 2010(4): 3-4.
[6]趙玉印,白玉賢,張澤宏.一種彈載數(shù)據(jù)記錄器的設計[J].兵工自動化, 2004(2): 2-3.
[7]胡云峰,陳虹,劉明星,許芳.基于FPGA/SOPC的預測控制器設計與實現(xiàn)[J].儀器儀表學報,2010(6):1-2.
[8]于曉洲,周軍,周鳳岐.基于SOPC技術的陣列信息處理技術實現(xiàn)研究[J].西北工業(yè)大學學報,2009(2).