陳夢(mèng)旎,鮑愛達(dá),馬游春,李學(xué)超
(1.中北大學(xué) 電子測試技術(shù)國家重點(diǎn)實(shí)驗(yàn)室,太原 030051;2.中北大學(xué) 儀器科學(xué)與動(dòng)態(tài)測試教育部重點(diǎn)實(shí)驗(yàn)室,太原 030051)
隨著軍用武器的不斷發(fā)展,電磁軌道炮作為新一代戰(zhàn)略武器,受到了各國軍方的青睞。和傳統(tǒng)火藥不同,電磁炮能夠?qū)椡柙诙虝r(shí)間內(nèi)超高速發(fā)射,利用電磁力轉(zhuǎn)變?yōu)閯?dòng)力,大幅度提高彈丸的速度和射程[1]。電磁發(fā)射作為一種新概念的武器發(fā)射手段,研究測量發(fā)射過程中的關(guān)鍵參數(shù)至關(guān)重要。其中,對(duì)電樞的瞬態(tài)過載測試是輔助研制電磁炮、評(píng)估電磁炮性能的重要手段,主要以獲取彈丸發(fā)射時(shí)的加速度為主。過載測試數(shù)據(jù)一般通過搭載加速度計(jì)的彈載數(shù)據(jù)記錄儀來獲取[2]。
通常在工程應(yīng)用數(shù)據(jù)回讀傳輸時(shí),采用的422總線或485總線等通信接口,在傳輸過程中會(huì)受到電磁干擾、噪聲、功耗等制約,同時(shí)需要滿足傳輸速率和距離等要求,這些接口不滿足實(shí)際需求[3]。USB 2.0通用串行總線的傳輸速度可達(dá)到480 Mbps,滿足過載測試數(shù)據(jù)回讀系統(tǒng)傳輸率和穩(wěn)定性的需求[4],具有即插即用、成本低廉、傳輸速率高、接口應(yīng)用廣泛和占用資源少等優(yōu)點(diǎn)[5]。因此本系統(tǒng)選擇USB 2.0接口作為過載測試系統(tǒng)與上位機(jī)的交互接口。一般的USB接口設(shè)計(jì)中,USB傳輸協(xié)議使用較為復(fù)雜[6],需開發(fā)USB專用固件,開發(fā)時(shí)間相對(duì)較長[7];不需開發(fā)USB專用固件的情況下,采用異步FIFO通信模式,數(shù)據(jù)傳輸速率僅達(dá)到8 MB/s[8]。
基于以上傳輸方式存在的問題,本文設(shè)計(jì)了一種針對(duì)電樞發(fā)射的瞬態(tài)過載數(shù)據(jù)回讀系統(tǒng)。系統(tǒng)采用了較少的邏輯單元實(shí)現(xiàn)了瞬態(tài)過載數(shù)據(jù)采集系統(tǒng)與上位機(jī)的數(shù)據(jù)傳輸,顯著降低了數(shù)據(jù)回讀系統(tǒng)的成本。該系統(tǒng)開發(fā)周期短,降低了硬件設(shè)計(jì)的復(fù)雜性,能夠?qū)崿F(xiàn)數(shù)據(jù)的可靠、快速傳輸,數(shù)據(jù)傳輸速率可達(dá)到46 MB/s。
該系統(tǒng)主要由四部分組成,分別是過載數(shù)據(jù)采集模塊、電源模塊、FPGA主控模塊和USB回讀模塊,如圖1所示。過載數(shù)據(jù)采集模塊主要實(shí)現(xiàn)采集彈丸發(fā)射時(shí)的瞬態(tài)過載數(shù)據(jù)。彈丸發(fā)射后,通過加速度傳感器獲取到信號(hào),經(jīng)過信號(hào)調(diào)理和數(shù)字量化后,經(jīng)由FPGA模塊內(nèi)部的FIFO將數(shù)據(jù)傳輸給存儲(chǔ)模塊。電源模塊負(fù)責(zé)轉(zhuǎn)換電壓,為回讀系統(tǒng)提供穩(wěn)定的電流和電壓。FPGA模塊是核心部分,接收到上位機(jī)下發(fā)的指令后判斷指令內(nèi)容,再相應(yīng)地根據(jù)指令內(nèi)容進(jìn)行操作[9]。根據(jù)上位機(jī)下發(fā)的讀取數(shù)據(jù)指令,F(xiàn)PGA讀取過載數(shù)據(jù)存儲(chǔ)模塊內(nèi)的信息,將并行數(shù)據(jù)暫時(shí)緩存到FPGA內(nèi)部FIFO,上位機(jī)下發(fā)指令后,傳輸給USB模塊。USB模塊利用FT232HL芯片的同步讀寫模式,通過其內(nèi)部的讀、寫FIFO實(shí)現(xiàn)數(shù)據(jù)傳輸,最后使用USB接口輸出到上位機(jī)顯示和儲(chǔ)存。
圖1 系統(tǒng)設(shè)計(jì)方案
過載數(shù)據(jù)采集模塊用于處理加速度傳感器采集的數(shù)據(jù)。電磁炮發(fā)射完成后,傳感器采集的過載數(shù)據(jù)電壓輸出范圍為±50 mV,必須經(jīng)過信號(hào)調(diào)理放大和A/D轉(zhuǎn)換電路,之后由主控模塊內(nèi)部緩存將數(shù)據(jù)傳輸?shù)酱鎯?chǔ)模塊。采集模塊的原理如圖2所示。在該采集模塊中,采用儀表放大芯片和數(shù)字電位器相結(jié)合的辦法,可根據(jù)需要調(diào)整調(diào)理電路的放大倍數(shù)。一般的信號(hào)調(diào)理電路根據(jù)運(yùn)算放大器外圍電阻確定放大倍數(shù),該電路解決了這種一旦確定阻值放大倍數(shù)就不可更改的問題。
圖2 數(shù)據(jù)采集模塊原理圖
2.1.1 調(diào)理放大電路
該系統(tǒng)采用儀表放大器和數(shù)字電位器實(shí)現(xiàn)信號(hào)的調(diào)理放大,MAX4208是具有超低失調(diào)電壓、低功耗、高精度等特性的儀表放大器。由于加速度傳感器輸出的是差分信號(hào),因此需要提供一個(gè)偏置電壓使得輸出信號(hào)始終為正值,便于后續(xù)電路的處理。該芯片采用雙運(yùn)放跨導(dǎo)架構(gòu),可充分使用差分輸入信號(hào)的全部動(dòng)態(tài)范圍。由于芯片供電電源為5 V,因此偏置電壓值通過數(shù)字電位器設(shè)置為2.5 V。通過利用該偏置電壓引腳,該電路實(shí)現(xiàn)將過載信號(hào)的差分輸入轉(zhuǎn)為可調(diào)增益的單端輸出。
電路中的信號(hào)增益是通過調(diào)整芯片的REF引腳與FB引腳和OUT引腳與FB引腳之間兩個(gè)外部電阻值來確定的。這兩個(gè)外部電阻連接的是數(shù)字電位器的LB、WB和HB引腳。數(shù)字電位器芯片具有兩個(gè)通道,在功能上彼此獨(dú)立,兩端電阻值為10 kΩ,分別具有256位分辨率,意味著有256種阻值可選擇。兩個(gè)電位器的電阻配比都由WA、WB劃片引腳確定,每次劃片位置信息由芯片內(nèi)部的非易失性存儲(chǔ)器存儲(chǔ),可通過FPGA 發(fā)送指令調(diào)整劃片位置,改變儀表放大器外圍電阻值的大小,從而實(shí)現(xiàn)自定義增益大小。
2.1.2 A/D轉(zhuǎn)換電路
該系統(tǒng)采集單通道過載數(shù)據(jù),經(jīng)過調(diào)理電路的過載信號(hào)為模擬信號(hào),由于進(jìn)入FPGA處理的信號(hào)需為數(shù)字信號(hào),所以設(shè)計(jì)一個(gè)A/D模數(shù)轉(zhuǎn)換電路,以此保證對(duì)原始信號(hào)進(jìn)行處理分析。A/D芯片的采樣吞吐率和轉(zhuǎn)換速率直接影響到采集模塊的采集效率,同時(shí)還有功耗和噪聲干擾等方面對(duì)模塊的影響,因此,選擇合適的A/D芯片是數(shù)據(jù)采集模塊的關(guān)鍵。在該系統(tǒng)中,A/D轉(zhuǎn)換電路采用的芯片是AD7686。該芯片是16位的單通道模數(shù)轉(zhuǎn)換器,具有低噪聲、低功耗等特性,在供電電壓為5 V,采樣速率為100 kSPS時(shí),功耗僅有3.75 mW。該芯片采樣吞吐率達(dá)到500 kSPS,完全滿足對(duì)過載數(shù)據(jù)的采樣需求。當(dāng)時(shí)鐘沿上升,芯片對(duì)IN+、IN-輸入電壓差進(jìn)行采樣,電壓差范圍為0-REF。REF參考電壓設(shè)置為芯片供電電壓5 V。該芯片可使用三線或四線的SPI串行接口直接與FPGA連接,本系統(tǒng)中使用三線接口模式,節(jié)約資源。該模式下,F(xiàn)PGA通過SCK和CNV引腳控制AD芯片,CNV引腳拉高后,在時(shí)鐘約束下AD芯片開始對(duì)模擬過載數(shù)據(jù)量轉(zhuǎn)化,通過SDO引腳輸出數(shù)字量。
由于USB接口能夠提供穩(wěn)定電壓[10],因此,本設(shè)計(jì)中各個(gè)模塊的電壓均由USB接口提供,電源模塊的原理如圖3所示。過載數(shù)據(jù)采集模塊使用的供電電壓為5 V,可直接通過USB接口得到。FPGA主控模塊和過載數(shù)據(jù)存儲(chǔ)模塊使用的供電電壓分別是3.3 V、1.2 V、2.5 V,均需通過線性穩(wěn)壓器降壓得到。本設(shè)計(jì)模塊中,USB接口提供的5 V電壓通過SPX3819穩(wěn)壓器,分別輸出3.3 V、2.5 V、1.2 V電壓。相比于DC-DC穩(wěn)壓器,SPX3819系列穩(wěn)壓器具有很好的低噪聲輸出性能,芯片尺寸小,設(shè)計(jì)簡單。
圖3 電源電路原理圖
主控模塊是整個(gè)系統(tǒng)的核心,控制著數(shù)據(jù)采集模塊、存儲(chǔ)模塊和USB回讀模塊的正常運(yùn)行,負(fù)責(zé)接收數(shù)據(jù)采集模塊的數(shù)據(jù),將模擬數(shù)據(jù)量化編碼后編幀發(fā)送給存儲(chǔ)模塊;負(fù)責(zé)從FLASH中讀取存儲(chǔ)模塊的數(shù)據(jù),通過USB接口芯片將數(shù)據(jù)發(fā)送到上位機(jī);負(fù)責(zé)接收應(yīng)答上位機(jī)的傳輸、讀數(shù)等指令,將有效指令信息分發(fā)給相應(yīng)的模塊單元。在控制芯片的選擇上,選用FPGA作為主控芯片。在常見的主控芯片中,單片機(jī)是單線程芯片,硬件固定,通過軟件編程實(shí)現(xiàn)功能,按照順序?qū)崿F(xiàn)邏輯;DSP用于高速執(zhí)行串行算法,常用于數(shù)字信號(hào)處理中,硬件設(shè)計(jì)一旦確定,不宜修改;FPGA是硬件可編程芯片,具有并行處理的能力,適合處理并行任務(wù),可顯著提高工作效率,工作更穩(wěn)定,性能更可靠,普遍應(yīng)用于實(shí)現(xiàn)數(shù)字電路[11]。本系統(tǒng)選用XILINX Spartan-3系列的XC3S400芯片作為主控模塊,內(nèi)置高達(dá)25 344個(gè)邏輯單元,具有最多502個(gè)I/O引腳數(shù)和 576 Kb 的Block RAM,性能滿足瞬態(tài)過載測試數(shù)據(jù)回讀系統(tǒng)的要求。并且芯片內(nèi)部具有可配置嵌入式SRAM塊,可設(shè)置為不同容量的存儲(chǔ)器結(jié)構(gòu),可將SRAM塊配置為內(nèi)部FIFO控制單元,負(fù)責(zé)對(duì)過載存儲(chǔ)數(shù)據(jù)進(jìn)行緩存。
該系統(tǒng)選用USB接口負(fù)責(zé)過載測試系統(tǒng)與上位機(jī)之間的指令和數(shù)據(jù)傳輸。一般來說,USB的接口設(shè)計(jì)有多種方法,除了選擇支持USB接口的單片機(jī)和專用的USB接口芯片外[12],還可使用USB/FIFO橋接芯片。前兩種方式通常需要自己開發(fā)驅(qū)動(dòng)程序,電路設(shè)計(jì)方面較為復(fù)雜。第三種方式的芯片內(nèi)部集成了USB協(xié)議,不需編寫驅(qū)動(dòng)程序。因此本文采用第三種方式。
本文選用FTDI公司的FT232 HL芯片進(jìn)行通信傳輸。該芯片是基于USB 2.0的單通道高速橋接芯片,驅(qū)動(dòng)自行處理USB協(xié)議數(shù)據(jù)。此款芯片可通過EEPROM配置為不同的串行或并行接口,如UART、245 FIFO、JTAG、SPI(MASTER)和I2C等接口。在并行FIFO傳輸模式下,異步數(shù)據(jù)傳輸速率高達(dá)8 MB/s,同步模式可達(dá)40 MB/s。同步通信模式下,通信雙方在同步時(shí)鐘域工作,在時(shí)鐘的邊沿控制下進(jìn)行數(shù)據(jù)的讀寫[13]。異步通信模式下,通信雙方則工作在不同的時(shí)鐘域。因此,同步通信與異步通信相比,具有較高的傳輸速率。本系統(tǒng)使用同步245 FIFO模式,進(jìn)行數(shù)據(jù)的高吞吐量傳輸,大幅提高數(shù)據(jù)的傳輸速率。
該系統(tǒng)將FT232HL內(nèi)部時(shí)鐘作為上位機(jī)和FPGA的同步信號(hào)。FPGA和FT232HL的接口如圖4所示,USB芯片的ADBUS[7:0]為8位雙向I/O數(shù)據(jù)接口,與主控模塊的數(shù)據(jù)輸入引腳連接,用于數(shù)據(jù)的發(fā)送和接收。RXF#和TXE#分別為讀、寫準(zhǔn)備信號(hào),當(dāng)兩者都為低電平時(shí)表示FPGA可讀、可寫。RD#和WR#分別為讀信號(hào)和寫信號(hào),由FPGA控制。與異步模式相比,同步FIFO接口獨(dú)有兩個(gè)信號(hào):CLKOUT時(shí)鐘信號(hào)和OE#輸入信號(hào)。該芯片驅(qū)動(dòng)60 MHz的時(shí)鐘供外部系統(tǒng)使用,并且所有信號(hào)在時(shí)鐘上升沿到來時(shí)有效。讀信號(hào)有效之前,輸出OE#使能信號(hào)需提前至少一個(gè)時(shí)鐘周期有效,以供數(shù)據(jù)緩存區(qū)的周轉(zhuǎn)。
圖4 FT232HL模塊與FPGA接口連接圖
FT232HL的硬件接口電路如圖5所示,直接與USB接口相連,右邊的引腳均與FPGA相連。通過與93LC56 存儲(chǔ)芯片相連,將FT232HL配置為FT245 FIFO模式的信息存儲(chǔ)于芯片中。FT232HL雖然內(nèi)部可自行產(chǎn)生時(shí)鐘,無需外掛晶振,但沒有外部晶振可能會(huì)導(dǎo)致輸出信號(hào)錯(cuò)亂。因此,該芯片電路設(shè)計(jì)外接12 MHz晶振,連接該芯片的XCSI和XCSO引腳[4]。將12 MHz晶振五倍頻得到60 MHz時(shí)鐘信號(hào),供數(shù)據(jù)回讀系統(tǒng)和上位機(jī)使用。
圖5 FT232HL硬件電路
該芯片使用的總線電源經(jīng)過濾波電路處理,為整個(gè)電路提供+5 V電壓。DM、DP引腳連接USB數(shù)據(jù)線,用于數(shù)據(jù)通信。通過VCCD輸出引腳向 VCCIO、VPLL和VPHY 引腳提供+3.3 V的電壓,同時(shí)為了減小噪聲干擾,在VCCD引腳與VCCIO、VPLL和VPHY引腳之間加入了電容濾波電路。
該模塊采集的過載數(shù)據(jù)是單路信號(hào),采樣率一般不超過10 kHz。系統(tǒng)上電復(fù)位后,主控模塊FPGA控制單路信號(hào)進(jìn)入信號(hào)調(diào)理模塊,經(jīng)過調(diào)理放大后,進(jìn)行A/D轉(zhuǎn)換。在A/D轉(zhuǎn)換過程中,將CONV信號(hào)置低來控制模數(shù)轉(zhuǎn)換。轉(zhuǎn)換完成后,需要時(shí)刻判斷BUSY信號(hào)的狀態(tài),若BUSY置高,則說明正在執(zhí)行模數(shù)轉(zhuǎn)換操作,若該信號(hào)為低電平,則說明轉(zhuǎn)換結(jié)束。在轉(zhuǎn)換結(jié)束后,使用讀控制信號(hào)控制數(shù)據(jù)的讀取,完成過載數(shù)據(jù)的采集。
數(shù)據(jù)采集模塊中,采用單通道16位的AD芯片對(duì)數(shù)據(jù)模數(shù)轉(zhuǎn)換,轉(zhuǎn)換的數(shù)字信號(hào)傳輸?shù)酱鎯?chǔ)模塊。由于AD轉(zhuǎn)換速率和存儲(chǔ)芯片存儲(chǔ)的速度不同,直接傳輸可能導(dǎo)致數(shù)據(jù)錯(cuò)傳、少傳等問題,因此在FPGA內(nèi)部建立FIFO IP核緩沖數(shù)據(jù)。由于采用16位的AD芯片,因此分為兩個(gè)八位進(jìn)行傳輸。本系統(tǒng)調(diào)用FPGA內(nèi)部寬度八位、深度4K的FIFO IP核,實(shí)現(xiàn)采集模塊向存儲(chǔ)模塊的通訊。系統(tǒng)上電后,每次都要對(duì)FIFO塊內(nèi)清空,避免殘留數(shù)據(jù)干擾。當(dāng)讀速度快于寫速度,F(xiàn)IFO內(nèi)的數(shù)據(jù)全部被讀出,則會(huì)產(chǎn)生空信號(hào);當(dāng)寫速度快于讀速度,F(xiàn)IFO內(nèi)數(shù)據(jù)量會(huì)達(dá)到最大深度,則易產(chǎn)生滿信號(hào)。在軟件設(shè)計(jì)中,需設(shè)定空標(biāo)志、半滿標(biāo)志和滿標(biāo)志,控制相應(yīng)的讀寫操作,使數(shù)據(jù)傳輸無誤。
當(dāng)AD采集完成時(shí),F(xiàn)IFO的讀控制信號(hào)置高,在時(shí)鐘沿來臨時(shí),采集模塊向FPGA內(nèi)部FIFO寫入數(shù)據(jù),存儲(chǔ)芯片按照FIFO先進(jìn)先出的原則讀出數(shù)據(jù)。數(shù)據(jù)存儲(chǔ)模塊與回讀模塊通信時(shí),使用FT232HL同步FIFO模式實(shí)現(xiàn)通信,芯片內(nèi)部包含1K字節(jié)的讀寫緩沖區(qū)。FIFO的寫控制信號(hào)由USB接口芯片給出,芯片內(nèi)部寫FIFO寫入FPGA內(nèi)的數(shù)據(jù),將其轉(zhuǎn)換為8字節(jié)數(shù)據(jù),可與FPGA實(shí)現(xiàn)直接通信。上位機(jī)讀取USB接口芯片內(nèi)部讀FIFO塊內(nèi)的數(shù)據(jù),寫FIFO與讀FIFO之間互相傳輸。USB 2.0物理層與上位機(jī)信息交互,將主控模塊的8位數(shù)據(jù)以串口形式傳輸,處理FT232HL的讀寫請(qǐng)求,實(shí)現(xiàn)對(duì)FIFO控制信號(hào)和數(shù)據(jù)的處理。
在本系統(tǒng)中,過載數(shù)據(jù)存儲(chǔ)在FLASH中,上位機(jī)發(fā)送固定的讀取數(shù)據(jù)、擦除數(shù)據(jù)、停止讀數(shù)等操作指令來實(shí)現(xiàn)與測試系統(tǒng)的數(shù)據(jù)傳輸與通信。接收到來自上位機(jī)的“EF91”讀數(shù)操作指令后,存儲(chǔ)模塊控制FIFO將過載數(shù)據(jù)通過USB接口傳輸?shù)缴衔粰C(jī)。存儲(chǔ)模塊利用CE、RB、ALE、CLE 控制線實(shí)現(xiàn)了存儲(chǔ)芯片的數(shù)據(jù)讀取與上傳[14]。上電后,由FPGA向FLASH發(fā)送讀數(shù)據(jù)00H命令,然后發(fā)送數(shù)據(jù)的行地址和列地址,之后寫入確認(rèn)命令30H,若FIFO非空,則讀取該地址的數(shù)據(jù)。若接收到“EF90”擦除命令,則FLASH以塊為單位進(jìn)行擦除,上位機(jī)接收到芯片擦除完成的信息后再進(jìn)行讀取等操作。“EF92”是停止讀數(shù)指令,可根據(jù)系統(tǒng)的需要進(jìn)行操作。
由于瞬態(tài)過載數(shù)據(jù)量過大且變化率過快,在讀取數(shù)據(jù)時(shí),可自行設(shè)置起始讀取地址,目的在于省略有效數(shù)據(jù)到來前的無效數(shù)據(jù),只取中間有效的數(shù)據(jù),以此來節(jié)省讀數(shù)時(shí)間。同時(shí),將兩個(gè)8位串口數(shù)據(jù)編幀為16位的并行數(shù)據(jù),讀取操作的地址位標(biāo)志是通過將高三位設(shè)置為“101”來實(shí)現(xiàn)的,起始地址位由剩下的十三位來實(shí)現(xiàn),用以提高數(shù)據(jù)傳輸速率。
USB模塊的主要功能是接收FPGA內(nèi)部FIFO的緩存數(shù)據(jù),通過FT232HL發(fā)送到上位機(jī)。FPGA與FT232HL之間通過8路雙向數(shù)據(jù)線傳輸數(shù)據(jù)和控制信號(hào)。此外,F(xiàn)T232HL包含1 K字節(jié)的接收和發(fā)送緩沖區(qū)[15],用于USB數(shù)據(jù)和FPGA串行I/O數(shù)據(jù)之間的交換緩沖。FT232HL的同步245 FIFO模式時(shí)序如圖6所示。CLKOUT是一個(gè)60 MHz時(shí)鐘信號(hào),用于芯片驅(qū)動(dòng),系統(tǒng)信號(hào)狀態(tài)的變化與時(shí)鐘信號(hào)同步。
圖6 FT232HL同步245 FIFO讀寫時(shí)序圖
若讀準(zhǔn)備信號(hào)為低電平,則芯片F(xiàn)IFO接收緩存區(qū)內(nèi)不為空,表示數(shù)據(jù)可讀。若該信號(hào)為高,則表明FIFO 接收緩沖區(qū)為空或有數(shù)據(jù)正在處理,此時(shí),無法從緩沖區(qū)讀取數(shù)據(jù)[16]。如果寫入準(zhǔn)備信號(hào)為低,則FIFO發(fā)送緩沖區(qū)未滿,說明可寫入數(shù)據(jù)。若該信號(hào)為高電平,則表明當(dāng)前的FIFO傳輸緩沖區(qū)已滿或正被寫入新字節(jié),此時(shí)無法執(zhí)行寫入操作[17]。當(dāng)接收到上位機(jī)下發(fā)的控制信號(hào)時(shí),先拉低讀準(zhǔn)備信號(hào),在OE#信號(hào)拉低持續(xù)至少一個(gè)時(shí)鐘周期后,拉低讀信號(hào),芯片可通過八位數(shù)據(jù)總線將數(shù)據(jù)傳輸給FPGA。當(dāng)芯片接收到發(fā)送數(shù)據(jù)的命令后,通過驅(qū)動(dòng)WR#為低電平,F(xiàn)PGA在CLKOUT上升沿開始持續(xù)向FT232HL寫入數(shù)據(jù)。寫數(shù)據(jù)過程中,F(xiàn)PGA需持續(xù)判斷FIFO發(fā)送緩沖區(qū)的狀態(tài)。
本系統(tǒng)中,F(xiàn)PGA控制USB芯片的讀寫使用狀態(tài)機(jī)實(shí)現(xiàn),如圖7所示。整個(gè)控制流程有5種狀態(tài),分別為IDLE空閑狀態(tài)、START讀寫預(yù)備狀態(tài)、READ讀數(shù)據(jù)、WRITE寫數(shù)據(jù)和讀寫數(shù)據(jù)完畢。當(dāng)USB接口芯片處于空閑狀態(tài)時(shí),使能OE信號(hào)和讀寫控制信號(hào)置高,F(xiàn)PGA和上位機(jī)不能進(jìn)行讀寫數(shù)據(jù)操作。此時(shí)判斷FT 232HL芯片內(nèi)部讀寫FIFO狀態(tài),若讀FIFO非滿,則進(jìn)入讀操作預(yù)備狀態(tài),讀數(shù)據(jù)準(zhǔn)備信號(hào)RXF拉低。之后將OE使能信號(hào)和讀數(shù)據(jù)信號(hào)拉低,芯片內(nèi)部讀FIFO從FPGA內(nèi)部FIFO中讀取數(shù)據(jù)。若讀操作過程中RXF拉高,表明FPGA要發(fā)送的數(shù)據(jù)發(fā)送完畢,可進(jìn)行下一次的操作。讀操作完成后,OE使能信號(hào)和讀數(shù)據(jù)信號(hào)置高,返回空閑狀態(tài)。若寫FIFO非空,則進(jìn)入寫操作預(yù)備狀態(tài),寫數(shù)據(jù)準(zhǔn)備信號(hào)TXE拉低。在寫操作時(shí),先將OE使能信號(hào)拉高,再拉低寫數(shù)據(jù)信號(hào),寫FIFO塊中的數(shù)據(jù)通過USB接口開始發(fā)送至上位機(jī)。若寫操作過程中TXE拉高,表明上位機(jī)未準(zhǔn)備好接收數(shù)據(jù),等TXE信號(hào)置低后可繼續(xù)寫操作。寫操作完成后,OE使能信號(hào)拉低,寫數(shù)據(jù)信號(hào)置高,返回空閑狀態(tài)。
圖7 FT232HL同步245 FIFO讀寫時(shí)序圖
要想通過USB接口實(shí)現(xiàn)主控模塊與上位機(jī)的數(shù)據(jù)通信,還需對(duì)上位機(jī)軟件進(jìn)行設(shè)計(jì)。由于FT232HL芯片內(nèi)部集成了USB協(xié)議,省去了驅(qū)動(dòng)程序的編寫工作,芯片可直接配置為高速USB轉(zhuǎn)串口通信或單通道USB通信。前者是將芯片模擬為虛擬串口,可直接與上位機(jī)通訊,但該種方式傳輸速率較低。為獲得更好的傳輸性能,本系統(tǒng)選用單通道USB通信。
3.5.1 上位機(jī)軟件設(shè)計(jì)
上位機(jī)控制USB通信的流程如圖8所示。采用D2XX作為USB接口的設(shè)備驅(qū)動(dòng)程序[18],通過調(diào)用鏈接庫的函數(shù)實(shí)現(xiàn)USB與上位機(jī)的通信。上位機(jī)調(diào)用函數(shù)可檢測到當(dāng)前連接的所有USB接口設(shè)備,通過FT_GetDeviceInfoList函數(shù)能夠獲得指定USB接口的詳細(xì)信息。確認(rèn)設(shè)備信息后,通過調(diào)用 FT_Open()以及 FT_Read()函數(shù)打開并讀取 USB 設(shè)備的傳輸數(shù)據(jù)[19]。成功連接指定設(shè)備后,清空FT232HL的發(fā)送和接收緩沖區(qū),之后再對(duì)USB 設(shè)備進(jìn)行配置。
圖8 上位機(jī)流程圖
在配置設(shè)備時(shí),最為關(guān)鍵的是設(shè)置FT232HL的工作模式。FT232HL默認(rèn)為異步串行模式,通過FT_SetBitMode(ftHandle, 0, 0x40)將芯片進(jìn)行設(shè)置,由應(yīng)用程序發(fā)送到當(dāng)前驅(qū)動(dòng)程序,芯片則被設(shè)置為同步模式。另外,需對(duì)USB傳輸塊大小、FT232HL工作模式、讀寫等待時(shí)間等進(jìn)行配置。配置完成后,上位機(jī)向 USB 設(shè)備發(fā)送讀取數(shù)據(jù)命令,若緩沖區(qū)此時(shí)無數(shù)據(jù),則上位機(jī)開始讀取FPGA上傳的數(shù)據(jù)信息,并對(duì)數(shù)據(jù)進(jìn)行處理并存儲(chǔ)。讀取和寫入 USB 設(shè)備所用到的函數(shù)分別是FT_Read和FT_Write函數(shù)。
讀取數(shù)據(jù)完成后,通過上位機(jī)得出數(shù)據(jù)傳輸?shù)乃俣取V骺啬K按照固定的幀格式編幀通信內(nèi)容,通過檢查通信幀幀頭來分析上位機(jī)接收數(shù)據(jù)的錯(cuò)誤率[20]。上位機(jī)讀取完數(shù)據(jù)后,可通過FT_close函數(shù)關(guān)閉USB接口。
3.5.2 FT232模式配置
過載測試系統(tǒng)通過USB芯片連接FPGA主控模塊和上位機(jī)之前,需先安裝USB驅(qū)動(dòng)程序?qū)π酒M(jìn)行配置,下載固件后才能控制芯片的使用。使用的配置軟件是官方軟件FT_Prog,點(diǎn)擊掃描之后,軟件會(huì)自動(dòng)檢測到USB設(shè)備。首先需要配置93LC56,并設(shè)置 USB 設(shè)備的各種信息和同步245 FIFO模式。要注意的是當(dāng)配置外部晶振時(shí),需選中USB External Oscilator,若無配置選中該項(xiàng)則會(huì)導(dǎo)致芯片無法啟動(dòng)。上電后,F(xiàn)T232HL會(huì)讀取到設(shè)備的VID、PID以及各種信息,同時(shí)LED指示燈D1被點(diǎn)亮[21],表明芯片的同步245FIFO工作模式已配置成功。
為驗(yàn)證芯片時(shí)序,對(duì)FT232HL芯片進(jìn)行了時(shí)序仿真,芯片接收上位機(jī)下發(fā)數(shù)據(jù)時(shí),時(shí)序波形如圖9所示??梢钥吹絩xf_n、oe_n、rd_n依次拉低電平,在oe_n拉低至少一個(gè)時(shí)鐘周期后,F(xiàn)T232HL在時(shí)鐘上升沿接收到有效數(shù)據(jù),上位機(jī)發(fā)送的數(shù)據(jù)和芯片接收到的數(shù)據(jù)相同,因此可認(rèn)為芯片接收數(shù)據(jù)功能沒有問題。芯片發(fā)送數(shù)據(jù)時(shí)序仿真波形如圖10所示,可以看到txe_n、we_n依次拉低電平,數(shù)據(jù)從34開始,每次加1,持續(xù)向上位機(jī)發(fā)送數(shù)據(jù)。由時(shí)序仿真波形可知,F(xiàn)T232HL的讀寫控制達(dá)到要求。
圖9 接收數(shù)據(jù)時(shí)序仿真
圖10 發(fā)送數(shù)據(jù)時(shí)序仿真
在過載測試數(shù)據(jù)回讀系統(tǒng)實(shí)物測試中,搭建了系統(tǒng)硬件電路。上位機(jī)與回讀系統(tǒng)使用USB接口連接,存儲(chǔ)模塊接收到讀數(shù)指令,上位機(jī)對(duì)其進(jìn)行參數(shù)設(shè)置、系統(tǒng)復(fù)位和數(shù)據(jù)讀取擦除等操作。為驗(yàn)證過載數(shù)據(jù)回讀系統(tǒng)的傳輸能力,將數(shù)據(jù)回讀至上位機(jī)進(jìn)行速度測試。經(jīng)過多次測試,本系統(tǒng)采用FT232HL高速芯片,數(shù)據(jù)傳輸速度能夠穩(wěn)定達(dá)到46 MB/s。
將該回讀系統(tǒng)搭載在電磁軌道炮實(shí)彈測試,測試完成后,將存儲(chǔ)數(shù)據(jù)導(dǎo)出,測試結(jié)果如圖11所示?;刈x過程中,數(shù)據(jù)沒有丟失現(xiàn)象,該彈丸發(fā)射過程中最大加速度可達(dá)13 330 g。該測試表明,該回讀系統(tǒng)能實(shí)現(xiàn)可靠傳輸,已成功應(yīng)用于過載測試項(xiàng)目中,能夠完成存儲(chǔ)模塊內(nèi)過載測試數(shù)據(jù)的讀取。
圖11 過載測試數(shù)據(jù)結(jié)果
本文設(shè)計(jì)了一種基于FPGA的瞬態(tài)過載測試數(shù)據(jù)回讀系統(tǒng),系統(tǒng)使用高速USB 2.0芯片F(xiàn)T232HL與上位機(jī)實(shí)現(xiàn)通信,利用該芯片的同步接口,數(shù)據(jù)傳輸速率達(dá)到46 MB/s,在滿足數(shù)據(jù)傳輸準(zhǔn)確性的同時(shí)提升了速率。該回讀系統(tǒng)集成度高,降低了USB接口設(shè)計(jì)的難度,加快了系統(tǒng)的開發(fā)進(jìn)程。測試結(jié)果表明,該系統(tǒng)可成功實(shí)現(xiàn)過載數(shù)據(jù)的可靠回讀,驗(yàn)證了瞬態(tài)過載測試數(shù)據(jù)回讀系統(tǒng)的可靠性和穩(wěn)定性。整體硬件電路設(shè)計(jì)簡單,可廣泛應(yīng)用于類似的數(shù)據(jù)傳輸項(xiàng)目中。