聶 飛,張 榮,黃?,?/p>
(中國(guó)工程物理研究院 總體工程研究所,綿陽(yáng) 621900)
半硬回收系統(tǒng)作為多通道數(shù)據(jù)采集存儲(chǔ)裝置,主要負(fù)責(zé)記錄某系統(tǒng)空中飛行試驗(yàn)全程的加速度、環(huán)境參數(shù)以及各種動(dòng)作控制信號(hào)。在飛行試驗(yàn)完成后,將半硬回收裝置內(nèi)的存儲(chǔ)器取出并連接到新的數(shù)據(jù)采集存儲(chǔ)裝置上,利用計(jì)算機(jī)將存儲(chǔ)器內(nèi)的信號(hào)回讀并顯示出來(lái)。由于在設(shè)計(jì)中要求半硬回收系統(tǒng)硬件尺寸不大于φ60 mm,同時(shí)要與3.3 V和5 V系統(tǒng)接口,這對(duì)硬件設(shè)計(jì)提出了較高難度的要求,在硬件上確保計(jì)算機(jī)軟件的高速數(shù)據(jù)回讀、高速校驗(yàn),保證了科技人員在試驗(yàn)現(xiàn)場(chǎng)即可觀測(cè)測(cè)量的結(jié)果。本文利用VHDL語(yǔ)言和 QuartusⅡ7.1軟件作為開(kāi)發(fā)環(huán)境完成了整個(gè)半硬回收系統(tǒng)硬件設(shè)計(jì)。
半硬回收數(shù)據(jù)采集存儲(chǔ)系統(tǒng)主要由 FPGA、A/D轉(zhuǎn)換器、Flash存儲(chǔ)器、USB接口芯片以及電源模塊構(gòu)成,系統(tǒng)原理如圖1所示。
數(shù)據(jù)采集、存儲(chǔ)系統(tǒng)設(shè)計(jì)技術(shù)指標(biāo)如下:(1) 模擬信號(hào)輸入通道數(shù)16路;(2) 模擬信號(hào)輸入范圍0~5 V;(3) 數(shù)據(jù)分辨率12 bit;(4)3路數(shù)字信號(hào)輸入,1路數(shù)字信號(hào)輸出;(5) 采樣頻率 10 kHz(最大可升級(jí)到 20 kHz);(6) 存儲(chǔ)器容量1 GB。
圖1 半硬回收數(shù)據(jù)采集存儲(chǔ)系統(tǒng)Fig.1 Schematic diagram of half-reclaimable data acquisition and storage system
主控邏輯模塊在半硬回收數(shù)據(jù)采集系統(tǒng)中擔(dān)任時(shí)序控制、數(shù)據(jù)緩存、Flash讀寫(xiě)擦除、A/D轉(zhuǎn)換器的啟動(dòng)、USB接口讀寫(xiě)以及與程控系統(tǒng)通信等重要工作,是設(shè)計(jì)的重點(diǎn)。FPGA選用ALTERA公司的 EP1K50。設(shè)計(jì)思路采用“自上而下”[1]的模式。
系統(tǒng)在通電時(shí)完成FPGA配置后,F(xiàn)PGA開(kāi)始工作。首先要完成系統(tǒng)的自檢,自檢工作主要包括Flash的無(wú)效塊檢測(cè)和初始化、A/D轉(zhuǎn)換器和USB接口控制模塊的初始化。系統(tǒng)自檢完后通過(guò)LED指示系統(tǒng)向程控輸出狀態(tài)信號(hào),系統(tǒng)正常則啟動(dòng) A/D轉(zhuǎn)換器,此時(shí)數(shù)據(jù)不存儲(chǔ),系統(tǒng)處于等待命令狀態(tài),當(dāng)接收到來(lái)自程控系統(tǒng)的存儲(chǔ)指令后,啟動(dòng)Flash存儲(chǔ)模塊,并返回一個(gè)信號(hào)至程控系統(tǒng)。系統(tǒng)自檢完后,若USB接口連接至計(jì)算機(jī),計(jì)算機(jī)發(fā)出讀指令后,F(xiàn)PGA啟動(dòng)讀Flash模塊并將數(shù)據(jù)送往計(jì)算機(jī)進(jìn)行處理;數(shù)據(jù)讀完后,計(jì)算機(jī)發(fā)出清空Flash指令,F(xiàn)PGA則啟動(dòng)擦除Flash模塊。主控邏輯模塊工作流程如圖2。主控邏輯模塊包含C_F、N、W_F、R_F、E_F、W_D、NN、R_D共8個(gè)狀態(tài),其狀態(tài)轉(zhuǎn)移如圖3。
圖2 主控邏輯模塊工作流程Fig.2 Flow chart of main controller module
圖3 主控邏輯狀態(tài)轉(zhuǎn)移Fig.3 Transferring of main controller logic states
本系統(tǒng)中A/D芯片選用AD7928[2],該芯片為8路模擬輸入,輸入電壓范圍2.5~5 V可選,采樣數(shù)據(jù)為 12 bit,單通道最高采樣頻率 1 Mbit/s,每次數(shù)據(jù)轉(zhuǎn)換需要16個(gè)時(shí)鐘周期,輸出數(shù)據(jù)格式見(jiàn)表1。
在本系統(tǒng)中,使用了2片AD7928,共16個(gè)模擬輸入通道,1#A/D的輸入通道編號(hào)為0~7,2#A/D的輸入通道編號(hào)為8~15,因此需用4位表示當(dāng)前數(shù)據(jù)輸出通道號(hào),即當(dāng)1#A/D輸出數(shù)據(jù)時(shí)在其輸出地址的基礎(chǔ)上增加一位“0”,2#A/D輸出數(shù)據(jù)時(shí)在其輸出地址的基礎(chǔ)上增加一位“1”,這樣通道和數(shù)據(jù)共16位,采用2個(gè)字節(jié)表示,其數(shù)據(jù)編碼格式見(jiàn)表 2。編碼好后的數(shù)據(jù)依次存入在FPGA內(nèi)開(kāi)辟的2 048 B的FIFO中。
表1 AD7928數(shù)據(jù)輸出格式Table 1 Data output format of AD7928
表2 16通道采樣數(shù)據(jù)編碼格式樣表Table 2 Code format of 16 channel sample data
A/D在通電后,首先需對(duì)控制寄存器進(jìn)行操作,AD7928的控制寄存器為12 bit只寫(xiě)寄存器,在控制寄存器中完成通道輸入電壓范圍設(shè)置、A/D通道選擇、輸出數(shù)據(jù)編碼格式設(shè)置以及電源模式設(shè)置等,本設(shè)計(jì)中控制字為“110111111001”,由于輸入控制字在16個(gè)周期內(nèi)完成,最后4個(gè)周期一般設(shè)置為“1”。圖4為QuartusⅡ7.1下VHDL代碼編寫(xiě)的A/D控制模塊仿真結(jié)果。
圖4 A/D時(shí)序仿真結(jié)果Fig.4 Simulation result of AD time sequence
系統(tǒng)選用了三星公司的閃存芯片K9K8G08U0A[3]作為數(shù)據(jù)存儲(chǔ)器,該 Flash容量為8 Gbit,采用3.3 V供電,它可以在400 μs內(nèi)完成一頁(yè)2 112個(gè)字節(jié)的編程操作,還可以在2 ms內(nèi)完成128 kB字節(jié)的擦除操作,同時(shí)數(shù)據(jù)區(qū)內(nèi)的數(shù)據(jù)能以50 ns/B的速度讀出。K9K8G08U0A大容量閃存芯片的 I/O口既可以作為地址的輸入端,也可以作為數(shù)據(jù)的輸入/輸出端,同時(shí)還可以作為指令的輸入端。芯片上的寫(xiě)控制器能自動(dòng)控制所有編程和擦除操作,包括提供必要的重復(fù)脈沖、內(nèi)部確認(rèn)和數(shù)據(jù)空間等。
Flash芯片在出廠時(shí)可能存在壞塊,在使用過(guò)程中也會(huì)產(chǎn)生壞塊。壞塊是包含一位或多位無(wú)效位的塊。壞塊在大多數(shù)情況下也是可擦寫(xiě)的,并且一旦被擦掉就不可能恢復(fù)。因此在Flash進(jìn)行讀、寫(xiě)或擦除操作前,必須檢測(cè)出Flash中的壞塊,并建立塊的好壞狀態(tài)表以備執(zhí)行其他操作時(shí)進(jìn)行查詢。K9K8G08U0A的塊檢測(cè)操作流程如圖5。
對(duì)于 Flash的寫(xiě)操作如果按頁(yè)進(jìn)行,在保證不丟失 A/D采樣數(shù)據(jù)的情況下至少需要開(kāi)辟4 096 B的緩存空間,同時(shí)對(duì)于建立塊的好壞信息表需要8 192 bit的存儲(chǔ)空間,在這種情況下就超過(guò)了所選FPGA的內(nèi)部資源容量,因此Flash的讀寫(xiě)操作均改為半頁(yè)操作,即將數(shù)據(jù)緩存空間改為2 048 B,當(dāng)FIFO半滿時(shí)主控邏輯啟動(dòng)Flash的寫(xiě)操作。
圖5 K9K8G08U0A的塊檢測(cè)操作流程Fig.5 Block check flow chart of K9K8G08U0A
半硬回收系統(tǒng)所采集數(shù)據(jù)最終通過(guò) USB接口上傳到計(jì)算機(jī),同時(shí)計(jì)算機(jī)通過(guò)USB接口下發(fā)指令到半硬回收系統(tǒng),其指令包括:(1) 利用計(jì)算機(jī)向回讀裝置發(fā)送與結(jié)束數(shù)據(jù)預(yù)采集命令。該功能用于調(diào)試半硬回收裝置硬件時(shí)使用;(2) 利用計(jì)算機(jī)向裝置發(fā)送擦寫(xiě) Flash存儲(chǔ)記憶體的命令。該功能用于數(shù)據(jù)采集前清除 Flash內(nèi)容。命令功能表見(jiàn)表3。
表3 USB命令表Table 3 Commands of USB
半硬回收裝置數(shù)據(jù)回讀系統(tǒng)硬件利用 FTDI公司生產(chǎn)的FT245BM芯片實(shí)現(xiàn)系統(tǒng)與計(jì)算機(jī)之間的 USB總線接口通訊。FT245BM 芯片支持USB1.1與USB2.0規(guī)范,數(shù)據(jù)最大傳輸速率可達(dá)1 MB/s。USB接口的VHDL設(shè)計(jì)主要包括接收數(shù)據(jù)和發(fā)送數(shù)據(jù)兩個(gè)狀態(tài)。
多次利用標(biāo)準(zhǔn)信號(hào)源以及振動(dòng)試驗(yàn)、火炮試驗(yàn)對(duì)半硬回收裝置進(jìn)行考核調(diào)試,結(jié)果表明系統(tǒng)能有效采集、存儲(chǔ)數(shù)據(jù),與計(jì)算機(jī)通信時(shí)能有效接收命令和回傳數(shù)據(jù),數(shù)據(jù)上傳速率為8 Mbit/s,系統(tǒng)運(yùn)行穩(wěn)定可靠。
(References)
[1]Stefan S, Lennart L.VHDL設(shè)計(jì)電子線路[M].邊計(jì)年, 薛宏熙, 譯.北京: 清華大學(xué)出版社, 2008: 10
[2]Analog Device.8-channel, 1MSPS, 8-/10-/12-bit ADCs AD7908/AD7918/ AD7928[G], 2006
[3]Samsung Electronics Co., Ltd..K9XXG08UXA Flash Memory[G], 2006