陳夢旎,鮑愛達,馬游春,李學超
(1.中北大學 電子測試技術國家重點實驗室,太原 030051;2.中北大學 儀器科學與動態測試教育部重點實驗室,太原 030051)
隨著軍用武器的不斷發展,電磁軌道炮作為新一代戰略武器,受到了各國軍方的青睞。和傳統火藥不同,電磁炮能夠將彈丸在短時間內超高速發射,利用電磁力轉變為動力,大幅度提高彈丸的速度和射程[1]。電磁發射作為一種新概念的武器發射手段,研究測量發射過程中的關鍵參數至關重要。其中,對電樞的瞬態過載測試是輔助研制電磁炮、評估電磁炮性能的重要手段,主要以獲取彈丸發射時的加速度為主。過載測試數據一般通過搭載加速度計的彈載數據記錄儀來獲取[2]。
通常在工程應用數據回讀傳輸時,采用的422總線或485總線等通信接口,在傳輸過程中會受到電磁干擾、噪聲、功耗等制約,同時需要滿足傳輸速率和距離等要求,這些接口不滿足實際需求[3]。USB 2.0通用串行總線的傳輸速度可達到480 Mbps,滿足過載測試數據回讀系統傳輸率和穩定性的需求[4],具有即插即用、成本低廉、傳輸速率高、接口應用廣泛和占用資源少等優點[5]。因此本系統選擇USB 2.0接口作為過載測試系統與上位機的交互接口。一般的USB接口設計中,USB傳輸協議使用較為復雜[6],需開發USB專用固件,開發時間相對較長[7];不需開發USB專用固件的情況下,采用異步FIFO通信模式,數據傳輸速率僅達到8 MB/s[8]。
基于以上傳輸方式存在的問題,本文設計了一種針對電樞發射的瞬態過載數據回讀系統。系統采用了較少的邏輯單元實現了瞬態過載數據采集系統與上位機的數據傳輸,顯著降低了數據回讀系統的成本。該系統開發周期短,降低了硬件設計的復雜性,能夠實現數據的可靠、快速傳輸,數據傳輸速率可達到46 MB/s。
該系統主要由四部分組成,分別是過載數據采集模塊、電源模塊、FPGA主控模塊和USB回讀模塊,如圖1所示。過載數據采集模塊主要實現采集彈丸發射時的瞬態過載數據。彈丸發射后,通過加速度傳感器獲取到信號,經過信號調理和數字量化后,經由FPGA模塊內部的FIFO將數據傳輸給存儲模塊。電源模塊負責轉換電壓,為回讀系統提供穩定的電流和電壓。FPGA模塊是核心部分,接收到上位機下發的指令后判斷指令內容,再相應地根據指令內容進行操作[9]。根據上位機下發的讀取數據指令,FPGA讀取過載數據存儲模塊內的信息,將并行數據暫時緩存到FPGA內部FIFO,上位機下發指令后,傳輸給USB模塊。USB模塊利用FT232HL芯片的同步讀寫模式,通過其內部的讀、寫FIFO實現數據傳輸,最后使用USB接口輸出到上位機顯示和儲存。

圖1 系統設計方案
過載數據采集模塊用于處理加速度傳感器采集的數據。電磁炮發射完成后,傳感器采集的過載數據電壓輸出范圍為±50 mV,必須經過信號調理放大和A/D轉換電路,之后由主控模塊內部緩存將數據傳輸到存儲模塊。采集模塊的原理如圖2所示。在該采集模塊中,采用儀表放大芯片和數字電位器相結合的辦法,可根據需要調整調理電路的放大倍數。一般的信號調理電路根據運算放大器外圍電阻確定放大倍數,該電路解決了這種一旦確定阻值放大倍數就不可更改的問題。

圖2 數據采集模塊原理圖
2.1.1 調理放大電路
該系統采用儀表放大器和數字電位器實現信號的調理放大,MAX4208是具有超低失調電壓、低功耗、高精度等特性的儀表放大器。由于加速度傳感器輸出的是差分信號,因此需要提供一個偏置電壓使得輸出信號始終為正值,便于后續電路的處理。該芯片采用雙運放跨導架構,可充分使用差分輸入信號的全部動態范圍。由于芯片供電電源為5 V,因此偏置電壓值通過數字電位器設置為2.5 V。通過利用該偏置電壓引腳,該電路實現將過載信號的差分輸入轉為可調增益的單端輸出。
電路中的信號增益是通過調整芯片的REF引腳與FB引腳和OUT引腳與FB引腳之間兩個外部電阻值來確定的。這兩個外部電阻連接的是數字電位器的LB、WB和HB引腳。數字電位器芯片具有兩個通道,在功能上彼此獨立,兩端電阻值為10 kΩ,分別具有256位分辨率,意味著有256種阻值可選擇。兩個電位器的電阻配比都由WA、WB劃片引腳確定,每次劃片位置信息由芯片內部的非易失性存儲器存儲,可通過FPGA 發送指令調整劃片位置,改變儀表放大器外圍電阻值的大小,從而實現自定義增益大小。
2.1.2 A/D轉換電路
該系統采集單通道過載數據,經過調理電路的過載信號為模擬信號,由于進入FPGA處理的信號需為數字信號,所以設計一個A/D模數轉換電路,以此保證對原始信號進行處理分析。A/D芯片的采樣吞吐率和轉換速率直接影響到采集模塊的采集效率,同時還有功耗和噪聲干擾等方面對模塊的影響,因此,選擇合適的A/D芯片是數據采集模塊的關鍵。在該系統中,A/D轉換電路采用的芯片是AD7686。該芯片是16位的單通道模數轉換器,具有低噪聲、低功耗等特性,在供電電壓為5 V,采樣速率為100 kSPS時,功耗僅有3.75 mW。該芯片采樣吞吐率達到500 kSPS,完全滿足對過載數據的采樣需求。當時鐘沿上升,芯片對IN+、IN-輸入電壓差進行采樣,電壓差范圍為0-REF。REF參考電壓設置為芯片供電電壓5 V。該芯片可使用三線或四線的SPI串行接口直接與FPGA連接,本系統中使用三線接口模式,節約資源。該模式下,FPGA通過SCK和CNV引腳控制AD芯片,CNV引腳拉高后,在時鐘約束下AD芯片開始對模擬過載數據量轉化,通過SDO引腳輸出數字量。
由于USB接口能夠提供穩定電壓[10],因此,本設計中各個模塊的電壓均由USB接口提供,電源模塊的原理如圖3所示。過載數據采集模塊使用的供電電壓為5 V,可直接通過USB接口得到。FPGA主控模塊和過載數據存儲模塊使用的供電電壓分別是3.3 V、1.2 V、2.5 V,均需通過線性穩壓器降壓得到。本設計模塊中,USB接口提供的5 V電壓通過SPX3819穩壓器,分別輸出3.3 V、2.5 V、1.2 V電壓。相比于DC-DC穩壓器,SPX3819系列穩壓器具有很好的低噪聲輸出性能,芯片尺寸小,設計簡單。

圖3 電源電路原理圖
主控模塊是整個系統的核心,控制著數據采集模塊、存儲模塊和USB回讀模塊的正常運行,負責接收數據采集模塊的數據,將模擬數據量化編碼后編幀發送給存儲模塊;負責從FLASH中讀取存儲模塊的數據,通過USB接口芯片將數據發送到上位機;負責接收應答上位機的傳輸、讀數等指令,將有效指令信息分發給相應的模塊單元。在控制芯片的選擇上,選用FPGA作為主控芯片。在常見的主控芯片中,單片機是單線程芯片,硬件固定,通過軟件編程實現功能,按照順序實現邏輯;DSP用于高速執行串行算法,常用于數字信號處理中,硬件設計一旦確定,不宜修改;FPGA是硬件可編程芯片,具有并行處理的能力,適合處理并行任務,可顯著提高工作效率,工作更穩定,性能更可靠,普遍應用于實現數字電路[11]。本系統選用XILINX Spartan-3系列的XC3S400芯片作為主控模塊,內置高達25 344個邏輯單元,具有最多502個I/O引腳數和 576 Kb 的Block RAM,性能滿足瞬態過載測試數據回讀系統的要求。并且芯片內部具有可配置嵌入式SRAM塊,可設置為不同容量的存儲器結構,可將SRAM塊配置為內部FIFO控制單元,負責對過載存儲數據進行緩存。
該系統選用USB接口負責過載測試系統與上位機之間的指令和數據傳輸。一般來說,USB的接口設計有多種方法,除了選擇支持USB接口的單片機和專用的USB接口芯片外[12],還可使用USB/FIFO橋接芯片。前兩種方式通常需要自己開發驅動程序,電路設計方面較為復雜。第三種方式的芯片內部集成了USB協議,不需編寫驅動程序。因此本文采用第三種方式。
本文選用FTDI公司的FT232 HL芯片進行通信傳輸。該芯片是基于USB 2.0的單通道高速橋接芯片,驅動自行處理USB協議數據。此款芯片可通過EEPROM配置為不同的串行或并行接口,如UART、245 FIFO、JTAG、SPI(MASTER)和I2C等接口。在并行FIFO傳輸模式下,異步數據傳輸速率高達8 MB/s,同步模式可達40 MB/s。同步通信模式下,通信雙方在同步時鐘域工作,在時鐘的邊沿控制下進行數據的讀寫[13]。異步通信模式下,通信雙方則工作在不同的時鐘域。因此,同步通信與異步通信相比,具有較高的傳輸速率。本系統使用同步245 FIFO模式,進行數據的高吞吐量傳輸,大幅提高數據的傳輸速率。
該系統將FT232HL內部時鐘作為上位機和FPGA的同步信號。FPGA和FT232HL的接口如圖4所示,USB芯片的ADBUS[7:0]為8位雙向I/O數據接口,與主控模塊的數據輸入引腳連接,用于數據的發送和接收。RXF#和TXE#分別為讀、寫準備信號,當兩者都為低電平時表示FPGA可讀、可寫。RD#和WR#分別為讀信號和寫信號,由FPGA控制。與異步模式相比,同步FIFO接口獨有兩個信號:CLKOUT時鐘信號和OE#輸入信號。該芯片驅動60 MHz的時鐘供外部系統使用,并且所有信號在時鐘上升沿到來時有效。讀信號有效之前,輸出OE#使能信號需提前至少一個時鐘周期有效,以供數據緩存區的周轉。

圖4 FT232HL模塊與FPGA接口連接圖
FT232HL的硬件接口電路如圖5所示,直接與USB接口相連,右邊的引腳均與FPGA相連。通過與93LC56 存儲芯片相連,將FT232HL配置為FT245 FIFO模式的信息存儲于芯片中。FT232HL雖然內部可自行產生時鐘,無需外掛晶振,但沒有外部晶振可能會導致輸出信號錯亂。因此,該芯片電路設計外接12 MHz晶振,連接該芯片的XCSI和XCSO引腳[4]。將12 MHz晶振五倍頻得到60 MHz時鐘信號,供數據回讀系統和上位機使用。

圖5 FT232HL硬件電路
該芯片使用的總線電源經過濾波電路處理,為整個電路提供+5 V電壓。DM、DP引腳連接USB數據線,用于數據通信。通過VCCD輸出引腳向 VCCIO、VPLL和VPHY 引腳提供+3.3 V的電壓,同時為了減小噪聲干擾,在VCCD引腳與VCCIO、VPLL和VPHY引腳之間加入了電容濾波電路。
該模塊采集的過載數據是單路信號,采樣率一般不超過10 kHz。系統上電復位后,主控模塊FPGA控制單路信號進入信號調理模塊,經過調理放大后,進行A/D轉換。在A/D轉換過程中,將CONV信號置低來控制模數轉換。轉換完成后,需要時刻判斷BUSY信號的狀態,若BUSY置高,則說明正在執行模數轉換操作,若該信號為低電平,則說明轉換結束。在轉換結束后,使用讀控制信號控制數據的讀取,完成過載數據的采集。
數據采集模塊中,采用單通道16位的AD芯片對數據模數轉換,轉換的數字信號傳輸到存儲模塊。由于AD轉換速率和存儲芯片存儲的速度不同,直接傳輸可能導致數據錯傳、少傳等問題,因此在FPGA內部建立FIFO IP核緩沖數據。由于采用16位的AD芯片,因此分為兩個八位進行傳輸。本系統調用FPGA內部寬度八位、深度4K的FIFO IP核,實現采集模塊向存儲模塊的通訊。系統上電后,每次都要對FIFO塊內清空,避免殘留數據干擾。當讀速度快于寫速度,FIFO內的數據全部被讀出,則會產生空信號;當寫速度快于讀速度,FIFO內數據量會達到最大深度,則易產生滿信號。在軟件設計中,需設定空標志、半滿標志和滿標志,控制相應的讀寫操作,使數據傳輸無誤。
當AD采集完成時,FIFO的讀控制信號置高,在時鐘沿來臨時,采集模塊向FPGA內部FIFO寫入數據,存儲芯片按照FIFO先進先出的原則讀出數據。數據存儲模塊與回讀模塊通信時,使用FT232HL同步FIFO模式實現通信,芯片內部包含1K字節的讀寫緩沖區。FIFO的寫控制信號由USB接口芯片給出,芯片內部寫FIFO寫入FPGA內的數據,將其轉換為8字節數據,可與FPGA實現直接通信。上位機讀取USB接口芯片內部讀FIFO塊內的數據,寫FIFO與讀FIFO之間互相傳輸。USB 2.0物理層與上位機信息交互,將主控模塊的8位數據以串口形式傳輸,處理FT232HL的讀寫請求,實現對FIFO控制信號和數據的處理。
在本系統中,過載數據存儲在FLASH中,上位機發送固定的讀取數據、擦除數據、停止讀數等操作指令來實現與測試系統的數據傳輸與通信。接收到來自上位機的“EF91”讀數操作指令后,存儲模塊控制FIFO將過載數據通過USB接口傳輸到上位機。存儲模塊利用CE、RB、ALE、CLE 控制線實現了存儲芯片的數據讀取與上傳[14]。上電后,由FPGA向FLASH發送讀數據00H命令,然后發送數據的行地址和列地址,之后寫入確認命令30H,若FIFO非空,則讀取該地址的數據。若接收到“EF90”擦除命令,則FLASH以塊為單位進行擦除,上位機接收到芯片擦除完成的信息后再進行讀取等操作。“EF92”是停止讀數指令,可根據系統的需要進行操作。
由于瞬態過載數據量過大且變化率過快,在讀取數據時,可自行設置起始讀取地址,目的在于省略有效數據到來前的無效數據,只取中間有效的數據,以此來節省讀數時間。同時,將兩個8位串口數據編幀為16位的并行數據,讀取操作的地址位標志是通過將高三位設置為“101”來實現的,起始地址位由剩下的十三位來實現,用以提高數據傳輸速率。
USB模塊的主要功能是接收FPGA內部FIFO的緩存數據,通過FT232HL發送到上位機。FPGA與FT232HL之間通過8路雙向數據線傳輸數據和控制信號。此外,FT232HL包含1 K字節的接收和發送緩沖區[15],用于USB數據和FPGA串行I/O數據之間的交換緩沖。FT232HL的同步245 FIFO模式時序如圖6所示。CLKOUT是一個60 MHz時鐘信號,用于芯片驅動,系統信號狀態的變化與時鐘信號同步。

圖6 FT232HL同步245 FIFO讀寫時序圖
若讀準備信號為低電平,則芯片FIFO接收緩存區內不為空,表示數據可讀。若該信號為高,則表明FIFO 接收緩沖區為空或有數據正在處理,此時,無法從緩沖區讀取數據[16]。如果寫入準備信號為低,則FIFO發送緩沖區未滿,說明可寫入數據。若該信號為高電平,則表明當前的FIFO傳輸緩沖區已滿或正被寫入新字節,此時無法執行寫入操作[17]。當接收到上位機下發的控制信號時,先拉低讀準備信號,在OE#信號拉低持續至少一個時鐘周期后,拉低讀信號,芯片可通過八位數據總線將數據傳輸給FPGA。當芯片接收到發送數據的命令后,通過驅動WR#為低電平,FPGA在CLKOUT上升沿開始持續向FT232HL寫入數據。寫數據過程中,FPGA需持續判斷FIFO發送緩沖區的狀態。
本系統中,FPGA控制USB芯片的讀寫使用狀態機實現,如圖7所示。整個控制流程有5種狀態,分別為IDLE空閑狀態、START讀寫預備狀態、READ讀數據、WRITE寫數據和讀寫數據完畢。當USB接口芯片處于空閑狀態時,使能OE信號和讀寫控制信號置高,FPGA和上位機不能進行讀寫數據操作。此時判斷FT 232HL芯片內部讀寫FIFO狀態,若讀FIFO非滿,則進入讀操作預備狀態,讀數據準備信號RXF拉低。之后將OE使能信號和讀數據信號拉低,芯片內部讀FIFO從FPGA內部FIFO中讀取數據。若讀操作過程中RXF拉高,表明FPGA要發送的數據發送完畢,可進行下一次的操作。讀操作完成后,OE使能信號和讀數據信號置高,返回空閑狀態。若寫FIFO非空,則進入寫操作預備狀態,寫數據準備信號TXE拉低。在寫操作時,先將OE使能信號拉高,再拉低寫數據信號,寫FIFO塊中的數據通過USB接口開始發送至上位機。若寫操作過程中TXE拉高,表明上位機未準備好接收數據,等TXE信號置低后可繼續寫操作。寫操作完成后,OE使能信號拉低,寫數據信號置高,返回空閑狀態。

圖7 FT232HL同步245 FIFO讀寫時序圖
要想通過USB接口實現主控模塊與上位機的數據通信,還需對上位機軟件進行設計。由于FT232HL芯片內部集成了USB協議,省去了驅動程序的編寫工作,芯片可直接配置為高速USB轉串口通信或單通道USB通信。前者是將芯片模擬為虛擬串口,可直接與上位機通訊,但該種方式傳輸速率較低。為獲得更好的傳輸性能,本系統選用單通道USB通信。
3.5.1 上位機軟件設計
上位機控制USB通信的流程如圖8所示。采用D2XX作為USB接口的設備驅動程序[18],通過調用鏈接庫的函數實現USB與上位機的通信。上位機調用函數可檢測到當前連接的所有USB接口設備,通過FT_GetDeviceInfoList函數能夠獲得指定USB接口的詳細信息。確認設備信息后,通過調用 FT_Open()以及 FT_Read()函數打開并讀取 USB 設備的傳輸數據[19]。成功連接指定設備后,清空FT232HL的發送和接收緩沖區,之后再對USB 設備進行配置。

圖8 上位機流程圖
在配置設備時,最為關鍵的是設置FT232HL的工作模式。FT232HL默認為異步串行模式,通過FT_SetBitMode(ftHandle, 0, 0x40)將芯片進行設置,由應用程序發送到當前驅動程序,芯片則被設置為同步模式。另外,需對USB傳輸塊大小、FT232HL工作模式、讀寫等待時間等進行配置。配置完成后,上位機向 USB 設備發送讀取數據命令,若緩沖區此時無數據,則上位機開始讀取FPGA上傳的數據信息,并對數據進行處理并存儲。讀取和寫入 USB 設備所用到的函數分別是FT_Read和FT_Write函數。
讀取數據完成后,通過上位機得出數據傳輸的速度。主控模塊按照固定的幀格式編幀通信內容,通過檢查通信幀幀頭來分析上位機接收數據的錯誤率[20]。上位機讀取完數據后,可通過FT_close函數關閉USB接口。
3.5.2 FT232模式配置
過載測試系統通過USB芯片連接FPGA主控模塊和上位機之前,需先安裝USB驅動程序對芯片進行配置,下載固件后才能控制芯片的使用。使用的配置軟件是官方軟件FT_Prog,點擊掃描之后,軟件會自動檢測到USB設備。首先需要配置93LC56,并設置 USB 設備的各種信息和同步245 FIFO模式。要注意的是當配置外部晶振時,需選中USB External Oscilator,若無配置選中該項則會導致芯片無法啟動。上電后,FT232HL會讀取到設備的VID、PID以及各種信息,同時LED指示燈D1被點亮[21],表明芯片的同步245FIFO工作模式已配置成功。
為驗證芯片時序,對FT232HL芯片進行了時序仿真,芯片接收上位機下發數據時,時序波形如圖9所示??梢钥吹絩xf_n、oe_n、rd_n依次拉低電平,在oe_n拉低至少一個時鐘周期后,FT232HL在時鐘上升沿接收到有效數據,上位機發送的數據和芯片接收到的數據相同,因此可認為芯片接收數據功能沒有問題。芯片發送數據時序仿真波形如圖10所示,可以看到txe_n、we_n依次拉低電平,數據從34開始,每次加1,持續向上位機發送數據。由時序仿真波形可知,FT232HL的讀寫控制達到要求。

圖9 接收數據時序仿真

圖10 發送數據時序仿真
在過載測試數據回讀系統實物測試中,搭建了系統硬件電路。上位機與回讀系統使用USB接口連接,存儲模塊接收到讀數指令,上位機對其進行參數設置、系統復位和數據讀取擦除等操作。為驗證過載數據回讀系統的傳輸能力,將數據回讀至上位機進行速度測試。經過多次測試,本系統采用FT232HL高速芯片,數據傳輸速度能夠穩定達到46 MB/s。
將該回讀系統搭載在電磁軌道炮實彈測試,測試完成后,將存儲數據導出,測試結果如圖11所示?;刈x過程中,數據沒有丟失現象,該彈丸發射過程中最大加速度可達13 330 g。該測試表明,該回讀系統能實現可靠傳輸,已成功應用于過載測試項目中,能夠完成存儲模塊內過載測試數據的讀取。

圖11 過載測試數據結果
本文設計了一種基于FPGA的瞬態過載測試數據回讀系統,系統使用高速USB 2.0芯片FT232HL與上位機實現通信,利用該芯片的同步接口,數據傳輸速率達到46 MB/s,在滿足數據傳輸準確性的同時提升了速率。該回讀系統集成度高,降低了USB接口設計的難度,加快了系統的開發進程。測試結果表明,該系統可成功實現過載數據的可靠回讀,驗證了瞬態過載測試數據回讀系統的可靠性和穩定性。整體硬件電路設計簡單,可廣泛應用于類似的數據傳輸項目中。