古 月,姜 威,劉躍澤,洪應平
(1.中國運載火箭技術研究院 研究發展部,北京 100076;2.北京宇航系統工程研究所,北京 100076;3.中北大學 儀器科學與動態測試教育部重點實驗室,山西 太原 030051)
隨著測試技術的發展,飛行器在飛行狀態中需要記錄的傳感信息也更加復雜多樣,記錄器需要記錄的數據量不斷增多,對記錄的速度和時間等要求也不斷提高[1-4]。傳統航天、航空記錄器應用的RS485、RS422、CAN等總線已無法適應高速數據記錄以及傳輸等要求[5-7],且常規的存儲介質如NAND Flash裸片、SPI Flash等,也無法滿足高速存儲需求。為了能更快、更準確地記錄數據,本系統提出一種新型可靠解決方案,選用高速的千兆以太網接口,應用TCP作為通信協議[8-11],即保證數據通信的完整性和可靠性,又具備高速數據傳輸功能;同時選用eMMC作為存儲介質,該存儲介質與傳統記錄器的NAND Flash 相比,具備更大的存儲容量、存儲速度,可完成長時間高速記錄[12-13]。豐富航天航空領域高速傳感信息數據記錄手段,為高過載下提供了可行性解決方案。
本系統需要對飛行器的大量傳感數據進行實時記錄,飛行過程中任何傳感信息都會對后期設備的優化和改良提供重要依據,所以對數據完整性、準確性的要求極高,必須保證無丟幀、誤碼等異常情況。所以本系統采用可靠性極高的基于以太網的TCP交互協議,通過不斷的握手、校驗信息,保證每幀數據準確接收。常規存儲器采用FPGA作為主要控制器,無法應付TCP協議的復雜交互進程,所以本系統選用異構ARM+FPGA體系處理器,應用ARM處理器保證TCP協議交互正常,同時具備高性能FPGA,滿足后續處理高速、大量數據,并可滿足嚴苛時序約束用以驅動高速存儲芯片。
筆者設計了一種基于ZYNQ的千兆以太網數據記錄器,在兼容性能和成本需求下,本系統選用了Xilinx公司推出的一款低成本、低功耗的ZYNQ7020系統處理方案。該芯片內集成了ARM處理器及FPGA,也就是PS(Process System)端及PL(Progarmmable Logic)端,采用PS端實時處理TCP數據流,發揮ARM嵌入式平臺處理優勢。PL端做高速數據編碼、寫入操作,為系統高速時序處理提供性能保障。兩端共享DDR3作為數據緩存單元,用于數據高速交互;選用eMMC作為存儲單元,其內部集成了 NAND Flash 和控制器,由控制器對NAND Flash進行讀寫控制,同時,還具備壞塊管理、損耗均衡以及ECC校驗等較為復雜的功能,相對于傳統存儲介質,eMMC容量大、讀寫速度快,能夠滿足本系統千兆以太網數據流的高速存儲需求。
系統采用電腦上位機模擬數據源,直接向記錄器寫入數據,并通過軟件實時監控寫入數據流情況。同樣采用以太網接口回讀數據,通過軟件查看數據,驗證數據準確性。預期可完成任務,為航天航空領域傳感信息數據記錄提供可靠方案[14-16]。
針對記錄器存儲需求及TCP千兆網高速傳輸等難點要求,設計了一款可滿足TCP千兆以太網傳輸及高速數據存儲的新型記錄器。記錄器設計如圖1所示,因TCP協議用FPGA純邏輯實現會浪費大量資源,且實現效果不理想,所以本記錄器選用Xilinx 公司的ZYNQ7020芯片作為主控,其內部集成了ARM Cortex-A9處理器,其內部包含以太網硬核協議棧,可以保證高速、可靠地實現千兆以太網TCP通信,同時該芯片內部還包含基于Artix-7的邏輯資源,實現eMMC的高速時序控制。

圖1 記錄器設計框圖
系統采用模塊化設計,分為存儲模塊、緩存模塊、主控模塊、穩壓模塊和以太網接口模塊,如圖2所示。為保證存儲單元的抗過載要求,將主板與存儲單元分離,采用小型化設計便于保護存儲單元,在記錄器經過載沖擊后回收存儲單元,讀取數據。同時采用PCIE作為存儲介質接口,在保證系統傳輸穩定的情況下,可更靈活地更換存儲單元,更方便在測試時和后期回收時進行操作。以太網模塊選用Microchip Technology公司的KSZ9031千兆網PHY芯片;存儲單元選用三星公司的KLMCG2KERM-B041,具備64 GB的存儲容量用于數據存儲;DDR緩存模塊選用具備512 MB緩存的MT41K256M16JT-125芯片,為本系統長時間記錄提供了可靠保障。

圖2 實物圖
兼容存儲單元穩定性及小型化設計的需要,如圖2所示,存儲單元尺寸設計為4.3 mm×3 mm。設計卡槽用于固定線纜,同時將過載結構設計為橢圓,用以抵抗更高的沖擊,抗過載結構實物如圖3所示。在灌封后可經受高強度過載,為試驗過程中和試驗后的數據回收提供強有力的保障。

圖3 抗過載結構實物圖
系統上電后,首先由主控處理器對底層PHY芯片復位,并通過系統與以太網PHY芯片實現交互,確定MAC及IP地址,并協商通信速度,保證PHY芯片在千兆模式下正常工作。
通信鏈路建立完成后,通過PHY芯片接收以太網數據信息,直接用PS端調用LwIP庫,實現傳輸層通信。系統解幀處理后判斷數據類型,當收到存儲指令,將內部數據信息提取經DMA直接操作存入DDR3緩存單元中,并等待寫完成中斷,中斷觸發后開始存入下一幀數據。因存儲器存在寫入時間延遲特性,所以采用DDR3作為中介緩存,保證不會因為后級溢出導致丟數。因PS與PL可以獨立運行,當PL端判斷出緩存單元內有數據,且后級緩存單元數據沒有滿,則將數據通過DMA提取出DDR3,編幀寫入eMMC存儲控制單元的FIFO,用以數據位寬轉換和跨時鐘域處理,保證寫入存儲單元數據準確、有效。寫控制流程如圖4所示。

圖4 千兆以太網接收數據存儲流程圖
回讀流程與存儲流程相似,當PS端接收到回讀指令后,通過AXI總線向PL端發送回讀指令,將eMMC切換到回讀狀態,通過DMA直接將數據寫入DDR3緩存單元,DMA中斷信號觸發PS端提取數據工作,數據處理后經PHY芯片通過以太網接口直接傳入電腦,用于后期數據解析、判讀。如圖5所示。

圖5 千兆以太網數據回讀流程
存儲芯片選用三星公司的KLMCG2KERM-B041,該芯片存儲容量為64 GB,在HS400模式下工作時鐘200 MHz存儲速度最大可達到400 MB/s。時鐘速率太高必然會對鏈路信號質量及邏輯資源消耗等提出更高要求,因本系統設計記錄器是為了長時間穩定工作,考慮在兼容系統性能和系統穩定的情況下,本記錄器選用High Speed DDR模式,該模式工作時鐘為0~52 MHz,采用雙沿數據傳輸,數據傳輸位寬8 bit,則瞬時最大傳輸速度為104 MB/s。因系統接收TCP數據最大速度為500 Mbit/s,數據包最大速度不超過60 MB/s,所以系統選擇50 MHz時鐘作為eMMC芯片的存儲時鐘。因存在寫入延遲的情況,采用DDR3作為緩存單元,用以緩存寫入的數據信息,保證數據可以及時處理寫入存儲單元。為記錄器實時記錄千兆以太網TCP數據包提供保障。
存儲芯片eMMC上電復位后,首先要對芯片以低速400 kHz時鐘進行初始化操作,包含識別器件、配置芯片等工作。該模式下芯片I/O工作電壓可配置為3 V、1.8 V、1.2 V,在綜合考慮器件功耗、工作性能及主控芯片的選型后,選用1.8 V為工作電壓,保證主控芯片PL端可以使用高性能Bank。初始化流程如圖6所示,配置完成后,進行總線測試,測試成功后將存儲芯片切換進傳輸模式,進行讀、寫、擦等操作。

圖6 初始化流程圖
進入傳輸模式后,芯片有3種工作模式:存儲模式、回讀模式和擦除模式。通過以太網收回的數據指令經PS端處理后發送給PL端,轉化成邏輯端可以識別的指令,并將指令下發給eMMC控制模塊,通過控制指令實現模式切換。eMMC操作流程如圖7所示。

圖7 eMMC操作流程
在存儲模式下首先向eMMC芯片發送CMD23指令設置多塊存儲并設置單次存儲塊數,因eMMC芯片每塊容量為512 B,每次發送后,需要寫入申請的多塊數據量才可以開始編譯到芯片內部存儲空間。因eMMC芯片特性,每次編譯時間存在編譯延時,延時因器件批次及編譯區域不同導致時間不定,但基本時間相差不大。所以每次申請的塊數越多,單次編譯的數據量越大,存儲速度越接近最大速度。在考慮到寫入速度與邏輯資源消耗的情況以及緩存資源的占用情況,經多次實際測試,本系統工況下將申請存儲塊數設置為2048塊,也就是每次申請1 MB存儲空間下,既可以保證寫入速度穩定,又可以將緩存資源快速釋放,速率平均,效果最穩定。
設置好單次存儲容量后,發送CMD24命令,設置存儲起始地址。即存儲開始地址,每次申請固定存儲塊數后,eMMC內部存完當前的塊會自行切入下一塊空間繼續寫,所以每完成一次申請的塊數存儲后,只需將下次的寫入起始地址設置為上次寫入最后一塊地址的下一塊,再申請寫入塊數,以此循環申請,保證連續存儲。配置芯片時可以讀出該芯片共有多大的地址用于存儲,當存到最后一片地址時將起始地址清零,重新開始循環記錄,本系統在沒有外部指令觸發的情況下,存儲器會一直停留在存儲模式下,并且循環覆蓋記錄數據。
在擦除模式工況下,eMMC芯片也是對每塊地址空間進行操作。因為在配置階段,可以從寄存器中獲取該芯片的容量,得到該芯片的最大地址,即芯片時間可用容量。本記錄器工況不需要部分擦除操作,所以接收到以太網擦除指令后,進行全空間擦除。首先發送CMD35將起始設置為0地址;發送CMD36將結束地址設置為最大地址;發送CMD38執行擦除操作;擦除完成后退出該模式。
在回讀模式工況下,用電腦對記錄器直接進行回讀,與存儲模式相似。首先發送CMD16設置讀取塊數,在發送CMD18設置讀取起始地址,同時將數據通過以太網TCP協議將數據傳回到電腦,用于數據判讀。如果外部控制命令沒有更新,系統會讀取所有容量的數據后自動停止,當其他控制命令輸入,則退出回讀模式。
為驗證記錄器的可靠性以及記錄數據的準確性。系統采用電腦上位機作為模擬數據設備,模擬數據格式00-FF循環4次,包總長1078 B,其中內部數據量共1024 B,發送速率為500 Mbit/s,在存儲模式下持續寫入數據,通過Wireshark監控數據流,如圖8所示,可以看到電腦端發送的TCP數據包和記錄器的應答包。單幀數據信息如圖9所示,可以看到內部數據,用Wireshark實時抓取數據流,經長時間測試,無誤碼、丟包等異常現象。

圖8 數據流監控圖

圖9 單幀數據信息圖
通過電腦回讀數據,將數據存儲為.dat格式,用hexedit打開后可見如圖10所示的回讀數據。將數據幀長設置為1024,即代表單幀數據量,整體數據對齊,并通過數據判斷軟件分析,千兆以太網TCP數據接收無誤碼現象。本記錄器連續進行超過100次試驗,在記錄模式下每次記錄容量大于30 GB,均無丟包誤碼現象,則可驗證本系統記錄數據的準確性。

圖10 回讀數據圖
分別從硬件、軟件及結構方面介紹了基于ZYNQ的千兆以太網數據記錄器設計方法,并通過實驗驗證了系統的穩定性和可靠性。實現了單路千兆網TCP協議數據記錄,以太網傳輸平均速率可達500 Mbit/s,并可實時將解碼后數據存入eMMC存儲單元,平均速度達到60 MB/s,瞬時最大存儲速度為100 MB/s。通過優化硬件設計和FPGA時序約束實現了eMMC存儲單元的長線傳輸,為保護存儲單元提供可行的手段。
同時系統在測試階段可以通過TCP回傳數據到電腦端,用以數據判讀及驗證,并將存儲單元結構設計為接插模式,為記錄器在經受高過載后主板損壞提供有效的回讀手段。在兼容成本及性能的情況下對整體系統進行小型化設計,同時將存儲單元與主板分離,使存儲單元更適用于彈上狹小空間安裝,有利于設計抗高過載結構,用以抵抗高過載沖擊。
綜上,系統滿足了航天航空飛行器的高速傳感信息數據的存儲、回收及設備抗高過載需求,為航天航空高速記錄器的設計提供了一種有效的解決方案。