郭 晉,王代華,劉 彬,唐 宏,張琳清
(1.中北大學(xué) 電子測(cè)試技術(shù)國(guó)家重點(diǎn)實(shí)驗(yàn)室,山西 太原 030051;2.中北大學(xué) 儀器科學(xué)與動(dòng)態(tài)測(cè)試教育部重點(diǎn)實(shí)驗(yàn)室,山西 太原 030051;3.晉西工業(yè)集團(tuán)有限責(zé)任公司 防務(wù)裝備研究院,山西 太原 030051;4.山西北方機(jī)械制造有限責(zé)任公司,山西 太原 030000)
在迅猛發(fā)展的軍工領(lǐng)域中,導(dǎo)彈毀傷作用的評(píng)判來(lái)源于戰(zhàn)斗部在爆炸時(shí)產(chǎn)生的沖擊波以及破片的相關(guān)測(cè)試。沖擊波超壓測(cè)試的需求日漸增長(zhǎng),測(cè)試的方式也呈現(xiàn)多樣化,包括存儲(chǔ)測(cè)試法和引線電測(cè)法,存儲(chǔ)測(cè)試法依靠傳感器與數(shù)據(jù)采集存儲(chǔ)模塊相結(jié)合的方式,可避免產(chǎn)生引線電測(cè)法由于電纜受到電磁干擾產(chǎn)生的噪聲信號(hào),進(jìn)而在沖擊波超壓測(cè)試領(lǐng)域得到長(zhǎng)足的進(jìn)步,但仍不夠完善。在坑道環(huán)境中,隨著導(dǎo)彈戰(zhàn)斗部威力的增大,爆炸沖擊波造成的毀傷范圍同樣擴(kuò)大,為保證沖擊波超壓測(cè)試結(jié)果的準(zhǔn)確性,測(cè)試方案需要更多的測(cè)試點(diǎn)分布在現(xiàn)場(chǎng)布局中,更多的布點(diǎn)面臨的問(wèn)題之一就是如何準(zhǔn)確快速地回讀數(shù)據(jù)。本文針對(duì)多通道沖擊波超壓測(cè)試系統(tǒng)所需的大量數(shù)據(jù)高速傳輸?shù)男枰瑢?duì)以太網(wǎng)數(shù)據(jù)傳輸方式進(jìn)行研究,優(yōu)化測(cè)試系統(tǒng)的數(shù)據(jù)傳輸效率。
超壓測(cè)試系統(tǒng)完成了對(duì)16 個(gè)坑道沖擊波測(cè)點(diǎn)的模擬信號(hào)的接收,并通過(guò)多路模擬開(kāi)關(guān)和ADC 將模擬信號(hào)轉(zhuǎn)換成數(shù)字信號(hào),再將大量數(shù)據(jù)存儲(chǔ)至eMMC 陣列,待爆炸結(jié)束后通過(guò)千兆以太網(wǎng)接口讀取數(shù)據(jù)。系統(tǒng)的總體設(shè)計(jì)框圖如圖1 所示。
圖1 超壓測(cè)試系統(tǒng)總體設(shè)計(jì)
以太網(wǎng)接口的硬件電路設(shè)計(jì)是實(shí)現(xiàn)測(cè)試系統(tǒng)中FPGA 與PC 端之間的數(shù)據(jù)高速傳輸?shù)年P(guān)鍵,運(yùn)用網(wǎng)絡(luò)通信協(xié)議,即TCP/IP 協(xié)議能夠保證數(shù)據(jù)完整并快速傳輸。底層配置由FPGA 內(nèi)部的三速以太網(wǎng)IP 核完成,利用PHY 芯片實(shí)現(xiàn)物理層的功能,傳輸層以及數(shù)據(jù)鏈路層分別使用UDP協(xié)議和ARP協(xié)議,通過(guò)FPGA編程實(shí)現(xiàn)。
該沖擊波超壓測(cè)試系統(tǒng)選用的千兆網(wǎng)PHY 芯片為RTL8211EG,該芯片兼容1 000 Mb/s 的傳輸速率,支持GMII、RGMII、MII 接口,符合IEEE 802.3 的標(biāo)準(zhǔn),可實(shí)現(xiàn)物理層與上層之間的通信。本設(shè)計(jì)使用的是GMII 接口模式,硬件實(shí)現(xiàn)架構(gòu)如圖2 所示。MAC 層的驅(qū)動(dòng)向PHY 芯片發(fā)送使能信號(hào)、端口信號(hào)、錯(cuò)誤標(biāo)識(shí)及發(fā)送時(shí)鐘,PHY 芯片向MAC 層發(fā)送使能信號(hào)、數(shù)據(jù)信號(hào)、錯(cuò)誤標(biāo)識(shí)及接收時(shí)鐘。PHY 芯片連接一個(gè)網(wǎng)絡(luò)變壓器,其目的是把PHY 芯片送出來(lái)的差分信號(hào)用差模耦合的線圈耦合濾波以增強(qiáng)信號(hào),并且通過(guò)電磁場(chǎng)的轉(zhuǎn)換耦合到不同電平連接的網(wǎng)線的另外一端。通過(guò)RJ 45 的端口與超5 類的屏蔽雙絞線連接,完成測(cè)試系統(tǒng)與PC 端的數(shù)據(jù)通信。PHY 芯片的電路圖如圖3 所示。
圖2 以太網(wǎng)接口設(shè)計(jì)架構(gòu)
圖3 PHY 芯片硬件電路圖
UDP 數(shù)據(jù)包的發(fā)送和接收通過(guò)FPGA 控制PHY 芯片實(shí)現(xiàn),在此之前,需要判斷PC 端與測(cè)試系統(tǒng)是否連接,數(shù)據(jù)包必須事先經(jīng)過(guò)物理層并在測(cè)試系統(tǒng)取得PC端的MAC 地址及IP 地址后,才能進(jìn)入數(shù)據(jù)鏈路層進(jìn)行數(shù)據(jù)傳輸,本設(shè)計(jì)使用ARP 協(xié)議,即地址解析協(xié)議實(shí)現(xiàn)MAC 地址的獲取。
ARP 協(xié)議的工作流程為:FPGA 向PC 端發(fā)送ARP請(qǐng)求幀,并接收返回消息,以此確定目標(biāo)的MAC 地址;收到返回消息后將該IP 地址和物理地址存入ARP 緩存中并保留一定時(shí)間,下次請(qǐng)求時(shí)直接查詢ARP 緩存以節(jié)約資源。令FPGA 為A,PC 端為B,工作流程見(jiàn)圖4。
圖4 ARP 協(xié)議獲取MAC 地址流程
UDP 協(xié)議即用戶數(shù)據(jù)報(bào)協(xié)議,相較于TCP,UDP 協(xié)議是一個(gè)無(wú)狀態(tài)的傳輸協(xié)議,沒(méi)有TCP 的握手、確認(rèn)、窗口、重傳、擁塞控制機(jī)制,使得數(shù)據(jù)傳輸速度更快,更多的使用在快速傳輸大量數(shù)據(jù)的場(chǎng)合。
在經(jīng)過(guò)ARP 協(xié)議完成地址解析后,利用UDP 協(xié)議完成數(shù)據(jù)包的收發(fā)任務(wù),UDP 協(xié)議分為兩個(gè)模塊,即UDP 發(fā)送模塊和UDP 接收模塊。UDP 發(fā)送模塊完成了IP 包頭的校驗(yàn)、UDP 數(shù)據(jù)包的校驗(yàn)、MAC 幀封裝及數(shù)據(jù)發(fā)送。UDP 發(fā)送模塊設(shè)計(jì)步驟為:
1)IP 包頭校驗(yàn)。將數(shù)據(jù)從FIFO 中讀出后,把IP 數(shù)據(jù)包的首部置0,對(duì)首部的每16 位進(jìn)行二進(jìn)制反碼求和,得到的結(jié)果取反后存入校驗(yàn)和字段中;
2)UDP數(shù)據(jù)包校驗(yàn)。在UDP數(shù)據(jù)包之前加上12 bit的偽首部,包含源IP 地址、目的IP 地址和校驗(yàn)和,使之成為UDP 包頭的一部分,得到臨時(shí)的僅用于數(shù)據(jù)校驗(yàn)的UDP 數(shù)據(jù)包,對(duì)UDP 包頭及UDP 數(shù)據(jù)包進(jìn)行二進(jìn)制反碼求和,得到的結(jié)果取反完成UDP 數(shù)據(jù)包校驗(yàn)并存放在UDP 包頭中。
3)MAC 幀封裝。以MAC 幀封裝的格式生成MAC頭和IP 頭,構(gòu)成一個(gè)完整的MAC 幀發(fā)送。
UDP 接收模塊完成了UDP 數(shù)據(jù)幀格式的檢驗(yàn)及UDP 數(shù)據(jù)包接收。UDP 接收模塊設(shè)計(jì)步驟為:
1)UDP 數(shù)據(jù)幀格式檢驗(yàn)。對(duì)接收到的MAC 幀進(jìn)行數(shù)據(jù)解析,判斷數(shù)據(jù)包類型、端口號(hào)以及UDP 包頭的校驗(yàn)和。
2)數(shù)據(jù)接收。在UDP 數(shù)據(jù)幀格式檢驗(yàn)完成后,將IP 包頭及UDP 包頭取消,得到完整的UDP 數(shù)據(jù)。
面對(duì)龐大數(shù)據(jù)量在以太網(wǎng)傳輸時(shí)可能出現(xiàn)的錯(cuò)誤,通常使用CRC 校驗(yàn)算法對(duì)數(shù)據(jù)進(jìn)行檢錯(cuò)。CRC 是數(shù)據(jù)通信領(lǐng)域中使用最廣泛的一種差錯(cuò)校驗(yàn)碼,CRC 校驗(yàn)算法利用模2 除法得余數(shù)的原理檢測(cè)錯(cuò)誤,即對(duì)數(shù)據(jù)流進(jìn)行二進(jìn)制除法,得到的余數(shù)就是校驗(yàn)碼,再將校驗(yàn)碼加到要發(fā)送的數(shù)據(jù)幀之后,使之成為一個(gè)新數(shù)據(jù)幀發(fā)送出去,CRC 校驗(yàn)原理如圖5 所示。
圖5 CRC 校驗(yàn)原理
發(fā)送端將待發(fā)送的原始數(shù)據(jù)(),利用模2 除法求得余數(shù)(),是生成多項(xiàng)式()的長(zhǎng)度減1,將CRC校驗(yàn)碼加在數(shù)據(jù)后面得到實(shí)際發(fā)送數(shù)據(jù)發(fā)送給接收端,接收端進(jìn)行模2 除法計(jì)算余數(shù),余數(shù)為0 則表示數(shù)據(jù)在傳輸中沒(méi)有錯(cuò)誤,余數(shù)不為0 則表示發(fā)生了錯(cuò)誤。為使8 位數(shù)據(jù)并行輸入以保證數(shù)據(jù)校驗(yàn)速度,本文使用CRC?32 校驗(yàn)算法,標(biāo)準(zhǔn)的CRC?32 生成多項(xiàng)式為:
模2 除法的電路實(shí)現(xiàn)是CRC?32 校驗(yàn)算法的關(guān)鍵,本文采用移位寄存器以及異或門完成模2除法的組合邏輯實(shí)現(xiàn)。CRC?32校驗(yàn)算法在串行模式下的余數(shù)項(xiàng)為:
其中data 為串行輸入的數(shù)據(jù),crc_state 為當(dāng)前的移位寄存器狀態(tài),crc_next 為移位寄存器的下一個(gè)狀態(tài)。依靠此原理,CRC?32 是8 位數(shù)據(jù)并行輸入,是在一個(gè)時(shí)鐘周期內(nèi)完成8 次串行運(yùn)算,以迭代運(yùn)算的方法將8 位數(shù)據(jù)有低位到高位依次處理,令校驗(yàn)碼為crc_next,則CRC?32 校驗(yàn)算法在并行模式下得到的校驗(yàn)碼的關(guān)鍵代碼部分如下:
CRC?32 校驗(yàn)算法的驗(yàn)證采取仿真分析的方式,輸入的數(shù)據(jù)為00,F(xiàn)F,00,00,仿真結(jié)果如圖6 所示。得到的結(jié)果為8FD73BF9,再使用CRC 在線計(jì)算工具求得結(jié)果同樣為8FD73BF9,驗(yàn)證了CRC?32 校驗(yàn)算法的準(zhǔn)確性。在10 MHz 的時(shí)鐘周期下校驗(yàn)1 000 bit 的數(shù)據(jù),串行算法需要(1 000×8+32)÷(10 MHz)=803.2 μs,而并行算法只需要1 000÷(10 MHz)=100 μs,說(shuō)明并行的CRC校驗(yàn)算法大幅提升了數(shù)據(jù)校驗(yàn)的速度,同時(shí)在保證數(shù)據(jù)準(zhǔn)確性的同時(shí)也提高了超壓測(cè)試系統(tǒng)的數(shù)據(jù)讀取效率。
圖6 CRC?32 功能仿真圖
圖7 CRC?32 在線計(jì)算
系統(tǒng)的以太網(wǎng)傳輸功能驗(yàn)證是在實(shí)驗(yàn)室環(huán)境下進(jìn)行,使用網(wǎng)絡(luò)調(diào)試助手以及網(wǎng)絡(luò)封包分析工具Wireshark 完成驗(yàn)證。由網(wǎng)絡(luò)調(diào)試助手確認(rèn)PC 端和測(cè)試系統(tǒng)的IP 地址是否相同并負(fù)責(zé)發(fā)送和接收數(shù)據(jù)。在系統(tǒng)與PC 端的網(wǎng)絡(luò)調(diào)試助手進(jìn)行數(shù)據(jù)輸送時(shí),Wireshark 可以在輸送數(shù)據(jù)期間截取網(wǎng)絡(luò)數(shù)據(jù)包,可以顯示時(shí)間戳、源IP 地址、目標(biāo)IP 地址、協(xié)議類型、包長(zhǎng)、物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層、應(yīng)用層等詳細(xì)信息,進(jìn)而可以分析以太網(wǎng)通信是否出現(xiàn)錯(cuò)誤并進(jìn)行錯(cuò)誤分析。將測(cè)試系統(tǒng)的IP 地址設(shè)置為192.168.1.10,將PC端以太網(wǎng)端口的IP 地址設(shè)置為192.168.1.102。通過(guò)網(wǎng)絡(luò)調(diào)試助手發(fā)送數(shù)據(jù)“Ethernet:20210701:11:45”給測(cè)試系統(tǒng),發(fā)送數(shù)據(jù)信息如圖8 方框1 所示。測(cè)試系統(tǒng)接收到的數(shù)據(jù)會(huì)在如圖8 方框2 中顯示,接收到的數(shù)據(jù)與發(fā)送的數(shù)據(jù)相同,成功驗(yàn)證了系統(tǒng)邏輯功能的正確性。Wireshark 網(wǎng)絡(luò)封包工具截取數(shù)據(jù)如圖9 所示,以UDP幀格式發(fā)送的數(shù)據(jù)包如圖9 方框1 所示,接收的數(shù)據(jù)包如圖9 方框2 所示,按照UDP 幀格式,數(shù)據(jù)以十六進(jìn)制發(fā)送和接收,驗(yàn)證了千兆以太網(wǎng)數(shù)據(jù)傳輸?shù)恼_性。
圖8 網(wǎng)絡(luò)調(diào)試助手收發(fā)界面
圖9 Wireshark 截取數(shù)據(jù)界面
為驗(yàn)證本系統(tǒng)用于實(shí)際測(cè)試中的穩(wěn)定性和數(shù)據(jù)精確性,此系統(tǒng)參與了兩次坑道爆炸試驗(yàn)測(cè)試??拥酪粋?cè)的防護(hù)墻壁面正中心有1 個(gè)測(cè)點(diǎn)進(jìn)行測(cè)試,測(cè)試點(diǎn)位距離爆炸中心分別為15 m 和18 m,且兩發(fā)均為相同當(dāng)量?,F(xiàn)場(chǎng)布置在坑道壁面的點(diǎn)位如圖10 所示。
圖10 坑道現(xiàn)場(chǎng)測(cè)點(diǎn)照片
測(cè)試曲線如圖11、圖12 所示。從接收到的測(cè)試曲線看出,該以太網(wǎng)接口可以成功應(yīng)用于超壓測(cè)試系統(tǒng)。
圖11 距爆炸中心15 m 處的超壓曲線
圖12 距爆炸中心18 m 處的超壓曲線
多通道沖擊波超壓測(cè)試系統(tǒng)利用FPGA 實(shí)現(xiàn)了對(duì)千兆以太網(wǎng)收發(fā)數(shù)據(jù)的邏輯控制,通過(guò)ARP 協(xié)議和UDP 協(xié)議完成了地址解析及數(shù)據(jù)包傳輸,使用CRC?32算法對(duì)數(shù)據(jù)進(jìn)行快速檢錯(cuò)并通過(guò)仿真驗(yàn)證。利用網(wǎng)絡(luò)調(diào)試助手完成了測(cè)試系統(tǒng)與PC 端的數(shù)據(jù)傳輸,又經(jīng)過(guò)兩次現(xiàn)場(chǎng)沖擊波超壓試驗(yàn)將有效數(shù)據(jù)讀出。成功驗(yàn)證了千兆以太網(wǎng)接口可應(yīng)用于多通道沖擊波超壓測(cè)試系統(tǒng),在提高了傳輸速度的同時(shí)兼具傳輸穩(wěn)定性。