高 杰 張斌珍 劉建林
(中北大學電子與計算機科學技術學院1,山西 太原 030051;電子測試國防科技重點實驗室2,山西 太原 030051)
利用海洋進行水下軍事活動的技術早己引起人們極大的重視。導彈在現代戰爭中具有突出地位,而潛射導彈由于其良好的生存性,愈加受到人們的重視。潛射導彈水下發射技術的研究與設計方案緊密相關,且需要大量的試驗研究工作。因此,只有在充分的、大量的水下試驗的基礎上,才能對水下發射技術進行透徹的認識和了解,從而作出明確的方案選擇。
本設計主要針對某型號導彈模型試驗的實際要求,進行導彈模型水下發射動響應動態參數的測試,目的在于為某一類潛射導彈的型號設計提供重要的參考依據[1]。
系統由導彈模型、地面計算機、傳感器、地面采集控制裝置和內置測試系統五部分組成,其組成原理框圖如圖1所示。

圖1 系統組成原理框圖Fig.1 Composition principle of the system
地面采集控制裝置用于發動機點火,并啟動觸發記錄裝置。地面讀數裝置在數據記錄結束后成為連接數據記錄裝置與地面計算機的接口。地面計算機通過地面讀數裝置從數據記錄裝置來讀取數據,并且采用專用軟件對數據進行顯示、判讀和處理等。導彈模型包括發動機、彈體和彈頭等。發動機作為彈體水下運動的動力;彈體部分放置配重、數據記錄裝置和傳感器等;彈頭呈圓形,以減小水對彈體運動的阻力。測試記錄裝置將加速度傳感器、表面壓力傳感器和光纖陀螺傳感器的模擬信號通過變換電路轉變成數字信號,并對這些信號進行記錄、存儲和保持。加速度傳感器安裝在彈體的重心處,表面壓力傳感器和光纖陀螺傳感器安裝在彈體內關心部位的壁上。
試驗過程中,首先將傳感器和記錄器安裝到彈體模型上,連接好彈體后把模型放入水中,再由岸上的控制裝置進行點火和啟動記錄設備。試驗結束后,把彈體模型打撈至岸上,連接好地面讀數裝置、上位機和數據記錄設備,讀取數據至上位機,由數據分析軟件進行數據處理。試驗過程示意圖如圖2所示。

圖2 試驗過程示意圖Fig.2 Schematic of the experimental process
系統要求能對3路加速度、3路陀螺和9路表壓信號進行采集,采樣率為每路50 kS/s,選用12位的高精度A/D進行轉換,記錄時間不小于30 s。系統采用電池供電,待機時間不小于12 h。為了滿足至少1.6 MB/s的數據寫入能力和48 MB的數據容量,本設計選用三星公司生產的K9K8G08U0A大容量1 GB Flash,其寫入速度典型值為300 μs寫入2112 B。
整個系統分為電源、信號調理、電源控制、A/D轉換和記錄存儲五個模塊,其硬件設計原理如圖3所示。

圖3 硬件整體設計原理圖Fig.3 The general design principle of the hardware
由于系統采用電池供電,而干電池和鋰電池不能提供瞬間較大的電流,因此,系統采用了傳感器和控制電路分開供電的雙電源設計。電源模塊采用北京北達眾人電源技術研究所生產的DC-DC模塊,它具有輸入電壓寬(6~18 V)、隔離電壓高(>500 V)、輸出電壓精度高(±1%)、帶負載能力強和溫度系數小(0.03%)等特點,且該模塊具有一個片選引腳,通過控制該引腳電平的高低,可以很方便地實現傳感器的電源控制。
整個系統通過MSP430F149單片機對DC-DC模塊、FPGA和Flash外圍電路進行上電與斷電的控制,從而實現系統的超低功耗。美國德州儀器公司(TI)推出的MSP430系列超低功耗、16位混合信號處理器集多種領先技術于一體,尤以16位RISC處理器、超低功耗、高性能模擬技術及豐富的片內外設和JTAG仿真調試為特色[2]。A/D轉換模塊采用AD公司生產的AD7490芯片,它具有精度高(12 bit)、16路信號同步采集、采樣率高(最高1 MS/s)和功耗低(典型值5.4 mW)等特點。
在本設計中,我們以Xilinx公司生產的Spartan-E系列的XC3S100E為主控制器,它采用1.2 V的內核電壓,系統時鐘達到200 MHz。該器件集成了豐富的邏輯門,且內含72 kB的雙端口 RAM,通過雙端口RAM可以組成內部FIFO來緩存數據[3]。
在硬件設計時,需要注意以下問題。
①在電源的輸入端串聯一個抗大電流的二極管,以防止電源反接電流過大燒毀器件。
②由于MSP430F149單片機和XC3S100E都為低功耗器件,與TTL電平不兼容。所以必須接一個電平轉換芯片74LVC4245,將5 V電平轉換為3.3 V。
③由于MSP430系列單片機為超低功耗單片機,所以I/O口的驅動能力不是很強,在驅動一些功耗較大的器件時,需要增加專門的驅動芯片[4]。
系統的軟件設計由單片機和FPGA兩部分組成。單片機程序流程圖如圖4所示[5]。

圖4 MSP430F149單片機程序流程圖Fig.4 Program flowchart of MSP430F149 MCU
單片機主要控制系統的電源,通過地面采集控制裝置發給記錄器上電指示。單片機在P1.0引腳接收到指示后,通過發送給DC-DC模塊的片選引腳高電平來給傳感器和記錄器供電。大約1 s后,傳感器上電趨于穩定,地面控制裝置便會給FPGA發送一個采集觸發信號。FPGA在采集完畢后發送一個高電平指示信號給單片機,單片機P1.1引腳接收到采集完畢信號后則斷開傳感器和記錄器的電源,并進入低功耗等待狀態,等待下一次的上電指令和采集指令。
FPGA主要控制A/D轉換和大容量Flash的讀、寫和擦除操作,是整個系統的主控制器。其主要工作流程如下。
首先,FPGA檢測記錄器是否連接地面讀數裝置,如果沒有,則FPGA對Flash芯片進行上電自檢,檢測Flash芯片是否為空,如果為空,則工作指示燈亮,否則工作指示燈滅。如果工作指示燈亮,FPGA在檢測到由地面采集控制裝置發出的采集觸發指示后,啟動A/D轉換和存儲數據,在采集完畢后工作指示燈和觸發指示燈滅。
導彈模型在點火后,觸發線會落入水中,這時往往會造成誤觸發進行下一次采集。因此,設計了外部復位信號,要求設備只有在復位信號和觸發信號都觸發的時候才開始下一次采集。雙觸發有效地解決了誤觸發的問題[6]。
記錄器在采集完畢后被打撈到地面,由計算機和讀數裝置將數據讀取到計算機硬盤,并采用專用的數據分析軟件對數據進行判讀、分析和描繪波形。
FPGA的程序流程圖如圖5所示。

圖5 FPGA程序流程圖Fig.5 Program flowchart of FPGA
為了便于上位機對采集到的數據進行處理,必須規定好數據的幀結構。經多次試驗測試,采用了以EB、90為幀頭,中間為16路A/D轉換的數據,其排列順序具體為第1路高字節、低字節,第2路高字節、低字節。依次類推,直到第16路的高字節和低字節數據。其中,每路的高字節的高四位為每一路的標志位,最后為一個字節為遞增的幀計數。試驗證實,上述幀結構穩定可靠,能有效地防止數據的錯位存儲或讀取。同時,在采樣率一定的情況下,對于多通道的數據采集,上述幀結構能使寫入的數據流最小。幀計數的加入無論對數據的寫入錯誤還是讀取錯誤都能起到很好的調試作用。數據幀結構如表1所示。

表1 數據幀格式Tab.1 Format of data frame
由于制造工藝水平的限制,大容量的Flash芯片往往存在無效塊,所以,在存儲、讀數和擦除的時候必須要檢測并跳過無效塊。FPGA通過檢測每塊的第一或者第二頁的第2048個字節是否為FF來檢測是否為無效塊,如為FF,則該塊為無效塊。由于Flash芯片是按頁存儲的,當一頁寫完后要進行下一頁的控制字和地址的重新寫入,在這段時間內必須有一個緩存裝置來存儲A/D轉換的數據,否則數據會溢出,從而造成丟數的現象。異步FIFO由于不需要同步時鐘,數據的寫入和讀出彼此獨立,很適合于不同速度的處理器之間的數據緩存。由于FPGA內部的寄存器資源是有限的,如果在VHDL編程時用數組來構建異步FIFO結構,綜合時會耗用大量的寄存器。XC3S100E內部集成了40 kB的塊RAM,可以直接調用它來構建異步FIFO,提高了FPGA的芯片資源利用率。在數據讀寫時采用各自的時鐘輸入,配合各自不同的時序需要,如果寫地址A大于讀地址B,則數據寫入Flash芯片,否則數據寫入內部FIFO中緩存。內部FIFO功能示意圖如圖6 所示[7]。

圖6 內部FIFO功能示意圖Fig.6 Schematic of inner FIFO function
下面以Flash的頁編程時序為例來說明對Flash的操作。Flash芯片控制時序由命令鎖存使能信號CLE、芯片使能信號、地址鎖存使能信號ALE、寫使能信號、數據輸入和輸出端口I/OX和Flash芯片反饋信號R組成。Flash頁編程時序如圖7所示[8]。

圖7 Flash頁編程時序圖Fig.7 Programming sequence of Flash page
具體的頁編程時序為首先寫入命令字80 H,接著在四個寫周期內分別將字節地址、頁地址和塊地址按順序依次寫入,然后從FIFO中讀取2 kB的數據,最后寫入頁編程命令字10 H。此后,Flash會返回狀態信號,在大約 40 μs的時間內,都會一直為低電平,說明Flash一直處于忙狀態,此時,對Flash進行任何操作,其都不會有響應;當為高電平,在一頁數據寫入結束時,開始寫入下一頁數據。信號是Flash工作狀態的真實反映,為了防止信號抖動對Flash工作狀態的誤判,必須對信號進行軟件消抖處理。
當數據采集完以后,需要將數據讀取到上位機,以便軟件進行數據處理。這時,遠程讀數裝置便是連接上位機與記錄器的橋梁。遠程讀數裝置主要由FPGA、RS-422接口芯片MAX3087、高速數據緩存FIFO和USB單片機CY7C68013組成。Cypress公司推出的USB接口芯片CY7C68013除集成了超強的USB2.0引擎SIE外,還集成了改進的增強型8051內核。所以,開發者只要具有8051單片機的基礎和初步的應用程序編程能力,就可以快速開發USB接口[9]。
讀數時的數據流程為首先讀數裝置將記錄器的數據經RS-422總線接口遠程讀取到FPGA,然后將數據緩存到大容量的高速緩存FIFO。當FIFO半滿后,半滿信號經FPGA傳遞給CY7C68013,CY7C68013接收到半滿信號后,將數據經GPIF接口打包上傳至上位機。試驗后上位機還原的波形如圖8所示[10]。

圖8 試驗波形圖Fig.8 Waveforms of experiments
本文針對某潛射導彈模型的點火發射試驗的具體要求,設計了基于MSP430F149單片機和FPGA的超低功耗數據采集系統。系統利用雙電源供電和MSP430F149單片機控制系統的電源以及配置本身的省電模式,在用電池供電的情況下實現了系統的超長待機;通過手動復位和觸發雙觸發模式,有效解決了系統的誤觸發,提高了系統的可靠性;通過FPGA對A/D轉換和大容量Flash芯片的控制[11-12],完整地獲取了試驗數據;利用USB接口實現數據的高速傳輸,兼容性強,充分利用了微機的資源。實踐證明,本系統不僅體積小、功耗低,而且便于維護與升級,具有較大的實際應用價值。
[1]張文棟.存儲測試系統的設計理論及其應用[M].北京:高等教育出版社,2002.
[2]沈建華,楊艷琴,翟驍曙.MSP430系列16位超低功耗單片機實踐與系統設計[M].北京:清華大學出版社,2005:2-10.
[3]覃永新,陳文輝,章帆.實時視頻數據采集的FPGA實現[J].電子技術應用,2009,35(9):1 -4.
[4]劉國勤.基于FPGA和DSP的數據采集器設計與實現[J].艦船電子工程,2006,26(6):2 -3.
[5]張貴清,張天序,顏露新,等.數據采集的硬件自校準方法與FPGA實現[J].數據采集與處理,2006(B12):236-241.
[6]胡大可.MSP430系列單片機C語言程序設計與開發[M].北京:北京航空航天大學出版社,2003:2-5.
[7]潘松,王國棟.VHDL實用教程[M].成都:電子科技大學出版社,2005:20 -27.
[8]張明,王禮平.基于FPGA的非對稱同步FIFO設計[J].電子設計應用,2005(1).
[9]錢峰.EZ-USB FX2單片機原理、編程及應用[M].北京:北京航空航天大學出版社,2006:20-27.
[10]吳振宇,常玉保,馮林.基于FPGA和USB2.0的高速數據采集系統[J].儀器儀表學報,2006(z1):1-3.
[11]黃容蘭,萬德煥.基于FPGA的A/D轉換采集控制模塊設計[J].數據采集與處理,2009,24(S1):238 -240.
[12]陳明義,連帥軍,周建國.基于FPGA的Flash控制器系統設計與實現[J].電子科技,2008,21(7):11 -13.