張佳慧, 王慧泉, 金仲和
(浙江大學 微小衛星研究中心,浙江 杭州 310027)
隨著航天事業發展,皮衛星扮演愈發重要的角色[1]。星上傳感器數據采集對皮衛星許多應用[2,3]至關重要。早期皮衛星如ZDPS—1A衛星在數據采集設計上注重接口容差容錯能力[4,5]設計,而忽略多路數據高速同步采集。受限于能源供給和布線,特別對某些特殊應用來說,傳感器布置在星體外部,需通過遠距離星體外部布線實現互連,因此,皮衛星[5]數據采集系統要求以盡可能少的信號線實現多傳感器通信,且必須低功耗。
吳少軍等人采用4塊AD100子板,4塊DA100子板和1塊MD100控制板實現了某大型導彈的同步數據采集系統[6],這種系統方案復雜,皮衛星無法承受。通過以太網實現多個工控機同步工作,進而實現數據同步采集[7],這種設計每個傳感器節點需采用單獨網線與路由節點相連,對星上布線帶來極大壓力,也不適用于皮衛星。
相比于地面的傳統同步采集系統[8],皮衛星多傳感器同步采集的關鍵在于以有限的通道資源及時獲得所有傳感器數據,系統設計不僅受限于皮衛星綜合電子系統不能長時運行同步采集程序,并且受限于低功耗的傳感器單片機(microcontroller unit,MCU)所能支持的數據傳輸速率。皮衛星在軌正常運行時,需要在后臺主循環中周期運行綜合電子、姿控、電源等周期性業務程序,限制了同步采集任務的運行時間。同時這些周期業務程序進行不定期的外存存儲操作時,最小屏蔽中斷時間在7~8 ms,影響系統實時性。多傳感器同步采集系統的關鍵功能在于同步采集傳感器數據并實時下傳,同時也需要將傳感器數據存入外存中以便后續下傳。以上需求意味著同步采集系統必須具備可以實時響應的中斷系統。若要以100 Hz的頻率完成多傳感器同步采集,同時確保其他皮衛星任務正常運行,則必須妥善處理外存存儲與實時響應中斷之間的矛盾。
本文提出一種數字信號處理器(digital signal processor,DSP)+現場可編程門陣列(field programmable gate array,FPGA)架構利用FPGA實現虛擬直接存儲器存取(direct memory access,DMA)與實時響應中斷系統設計,實現了84路傳感器、100 Hz采樣頻率、同步精度優于10 μs的皮衛星多傳感器同步采集系統。
受限于皮衛星結構布局,采用2線I2C總線與傳感器間通信,根據布線要求將84路傳感器分成6組,每組14只傳感器。利用FPGA擴展6個I2C總線控制器,與各傳感器通信,為了避免因I2C時序造成的同一路上傳感器數據采樣時刻時間差,保證所有傳感器同步采集,為每路I2C總線額外設計了一根同步啟動信號SYNC:當皮衛星綜合電子系統發起同步采集任務時,首先給出同步采集信號,所有傳感器收到同步啟動信號后立即開始采集,綜合電子系統再通過I2C總線獲取數據,該自定義總線結構如圖1。

圖1 自定義總線結構
硬件平臺具體結構如圖2所示,采用基于TI的C6000系列DSP作為核心處理器,用于實時處理傳感器數據。利用FPGA擴展實現6路自動采集的I2C主機,每路I2C主機與14只傳感器采用圖1描述自定義總線協議通信。

圖2 同步采集硬件結構
FPGA程序可劃分為I2C控制器,中斷模塊以及緩存模塊3部分。一次數據采集,首先由I2C控制器讀取傳感器采集到的數據并將數據存入緩存中,每完成2次數據采集,向DSP給出外部中斷,通知DSP讀取緩存數據,以確保中斷間隔時間內可以完成數據存儲操作,因此,數據采集頻率為100 Hz,中斷頻率為50 Hz。具體程序設計本文不再展開描述。
DSP程序中同步采集任務程序可分為同步采集指令接收模塊、數據存儲和數據下傳模塊。指令接收模塊用于接收采集指令后完成對各路I2C主機的配置。出于實時性考慮,數據下傳必須在中斷中進行,受限于DSP內存容量,同步采集數據存儲無法以暫存入內存再利用處理器空閑時間進行外存存儲的方式進行。因此,多傳感同步采集系統軟件設計關鍵在于設計高效的數據下傳和數據存儲模塊。
根據對傳感器數據需求的迫切程度,數據可劃分為Ⅰ類數據和Ⅱ類數據,Ⅰ類數據表示需要實時更新的數據,Ⅱ類數據為實時性需求較弱的數據。根據目前所提供的測控通道。每幀數據幀中數據區長度為398 B,而Ⅰ類數據與Ⅱ類數據長度之和超過了數據區的長度。因此,須對數據幀進行波道復用。復用方式如圖3所示。

圖3 波道復用方式示意
其中,Ⅰ類數據前的序號表示數據幀計數,每一個數據幀中均包含完整的Ⅰ類數據信息,Ⅱ類數據拆分為5組,以數據幀計數對5取余的方式識別本次收到的數據幀中所包含的Ⅱ類數據分組信息。此方法確保了Ⅰ類數據100 Hz的更新頻率,而Ⅱ類數據也能以20 Hz更新。
同步采集系統任務每5次采集中斷讀取到的數據可以拼成一組完整的Ⅱ類數據,因此,同步采集任務數據存儲以每5次采集的數據組成的同步采集存儲數據幀為基本單位。NANDflash寫入時全局中斷屏蔽時長為7~8 ms/page。同步采集存儲數據幀大小為2 page,同步采集中斷服務子程序在不進行數據存儲時耗時為7 ms,若在一次中斷中存入完整的同步采集存儲數據幀,則該中斷耗時將超過20 ms,影響后續中斷的實時性。同時,由業務程序發起的NANDflash讀寫操作也會影響同步采集任務中斷的實時性。通過節拍存儲的方式可解決上述問題:存儲操作以每5個中斷為周期,首先將同步采集存儲數據幀按page分成存儲數據幀1和存儲數據幀2,前2個中斷分別用于寫入存儲數據幀1和存儲數據幀2,后3個中斷則用于調用業務程序數據存儲應用程序界面 (application program interface,API)分別用于存儲姿控數據、電源數據和綜合電子數據。而業務程序中調用的數據存儲API將被禁用,這樣的互斥性設計確保了同步采集任務發起時,所有NANDflash讀寫操作均處于中斷服務子程序中,保證綜合電子系統響應同步采集中斷的實時性。
低功耗傳感器MCU支持最大的通信速率下10 ms僅能傳送10 B的數據,不能為每次數據提供采集時刻信息。若以DSP收到同步采集中斷的時刻t作為該次數據的采樣時刻,則不僅存在DSP中斷響應時間Δt1,并且受到I2C時序時間Δt2的影響,若某路I2C總線上存在無法響應的異常傳感器,將會導致I2C時序持續時間縮短,進而影響由收到中斷時刻修正得到的數據采樣時刻的精度。

式中T表示中斷周期,即20 ms,再將該相對時間t′ 轉換為絕對時間t即可得到本次數據的采樣時刻。
對接口通信進行可靠性測試,驗證接口以及總線協議的性能是否滿足要求。其中容差是指將接口通信速率調整至指標上限的150 %,觀察通信結果,由于同步采集系統中的外設傳感器僅支持固定速率,故不提高其通信速率,表1給出了同步采集系統結果容差容錯測試結果。

表1 接口容差容錯測試結果
中斷實時性測試結果如圖4所示,其中高電平表示皮衛星程序處在同步采集中斷中,低電平表示程序在執行其他衛星任務。可以看出,同步采集中斷觸發間隔為20 ms,每5相鄰中斷中前2個中斷要存儲同步采集存儲數據幀而耗時較長,其他3個中斷由于所調用的業務程序數據存儲API對應的數據尚未達到page的數據量,無需發起存儲操作而耗時較短。同步采集中斷服務子程序耗時占比為45.2 %,皮衛星周期業務程序耗時占比約為30 %,發起同步采集任務時綜合電子系統DSP空閑時間占比約為24.8 %,因此,同步采集任務進行時不會影響皮衛星業務程序正常運行。
由于存在同步啟動信號,84只傳感器采樣數據的同步性僅由傳感器MCU中斷響應時間差異以及布線影響各傳感器收到同步啟動信號時間。經地面測試,各傳感器MCU中斷響應差異在8 μs以下,同一路的第一只傳感器和最后一只傳感器布線長度約為1.5 m,布線對數據同步性的影響約為0.5 ns,與MCU中斷響應時間差異不可比擬,因此,系統同步采集精度滿足10 μs要求。

圖4 同步采集中斷測試結果
從對84路傳感器進行100 Hz實時同步采樣的實際任務需求出發,設計了基于I2C與同步采集信號相結合的自定義通信協議克服I2C時序時延,保證各傳感器采集時刻的一致性。實驗結果表明:該系統滿足100 Hz同步采樣多路傳感器的設計要求,采集數據同步精度優于10 μs;同步采集任務啟動時,皮衛星業務程序運行正常。該系統已在某型號皮衛星中得到良好應用,證明其性能優良,穩定可靠,能滿足任務要求。