?

高層次綜合技術在遙測地面站數據處理中的應用

2021-10-08 02:22遲東明劉兆輝王燕玲
計算機測量與控制 2021年9期
關鍵詞:遙測數據處理代碼

遲東明,劉兆輝,王燕玲

(上海航天電子有限公司,上海 201800)

0 引言

遙測地面站所接收的火箭、衛星等飛行器的原始遙測數據中包含有大量的重要遙測信息,如姿態信息、油量信息、位置信息等。地面站需要將這些關鍵遙測參數從原始數據中提取出來并進行綜合、計算,最后將處理的結果顯示在終端設備上,以便操作人員進行分析、決策。隨著火箭、衛星等飛行器的結構日益復雜,地面站所接收的遙測數據不僅數據量更大,且數據結構更也為復雜,這就對地面站的數據處理能力提出的更高的要求。

地面站對于遙測信息的處理一般采用“FPGA+DSP+通用CPU”或“FPGA+通用CPU”的方式。

“FPGA+DSP+通用CPU”的實現方式中,FPGA負責數據幀檢索、重組幀等密集型計算,DSP負責遙測數據計算、數據判斷等復雜度較高的計算,而通用CPU負責數據決策、人機交互等。這種實現方式適應面廣,但集成度低且功耗較大,不利于地面站的小型化設計。

“FPGA+通用CPU”的實現方式中,如果FPGA負責數據幀檢索、重組幀等密集型計算,通用CPU負責其他計算,則FPGA與通用CPU之間需要傳輸大量數據,對于總線的數據吞吐量及通用CPU的性能提出了極高的要求,不利于地面站低成本設計。雖然目前FPGA內部可以集成通用CPU的IP,但由于通用CPU IP性能較弱,無法滿足高速率的遙測數據處理任務。

而如果FPGA負責數據幀檢索、重組幀、遙測數據計算、數據判斷等,通用CPU負責其他計算,雖然降低了總線及通用CPU的負擔,但由于遙測數據處理往往涉及到復雜的數據檢索、浮點計算以及數據分析,如果使用傳統的基于寄存器傳送級(register transfer level,RTL)的設計流程實現遙測數據處理,其代碼的設計、調試難度會大大增加,且代碼的維護成本也會加大。

本文將FPGA的高層次綜合技術(high-level synthesis,HLS)引入到地面站的遙測數據處理中,利用該技術可以將遙測數據處理功能用抽象層級較高的C代碼實現,這樣就有效降低了FPGA進行遙測數據處理的設計難度,提高了開發效率,從而縮短了產品的研制周期。

1 地面站遙測數據處理流程介紹

地面站的遙測數據處理流程一般是以如圖1所示的方式進行[1-2],主要分為5個步驟:

圖1 地面站遙測數據處理流程

1)遙測解調。地面站對接收到的無線遙測信號進行解調,并將解調出的遙測數據以數據流形式發送給后端的遙測數據處理模塊做進一步處理。

2)遙測幀數據重組。遙測數據處理模塊對解調后的遙測數據流進行檢索,并根據遙測幀同步頭檢索出完整的遙測幀,最后根據遙測幀的數據結構進行遙測幀數據重組,從而得到連續的遙測幀。

3)遙測參數提取。遙測數據處理模塊根據一定的提取規則,對遙測幀內的遙測參數進行提取,從而得到需要的遙測參數。

4)遙測參數計算。遙測數據處理模塊對提取出的遙測參數進行計算及分析,最終得出計算結果。

5)計算結果組幀。遙測數據處理模塊將計算結果打包并根據一定的成幀規則形成新的數據幀發送給后端的數據處理模塊或終端設備進行后續數據處理或數據顯示。

一般情況下遙測數據是以一系列遙測幀的形式進行存儲和傳輸的,如果遙測數據的數據結構較復雜,則每一個遙測幀又可分為一系列不同的遙測子幀,子幀內部的不同區域存放有各類遙測參數或其他數據。換言之,遙測幀一般以二維數據表的形式存放各類參數及數據,而遙測參數則以某一點、某一行(列)或多行(列)的形式分布于該二維表中,其數據結構示意圖如圖2所示。

圖2 遙測數據的數據結構示意圖

由于火箭、衛星等飛行器內部包含數量眾的多傳感器和各類設備,因此其遙測數據的數據結構可能會變得非常復雜。以圖2為例,遙測參數集1是遙測幀中子行(列)抽取出來的二維數組,數組中數據可以代表飛行器總線中的某些總線指令,而總線指令在遙測參數集1中的出現的時間以及相對位置可能都不固定,需要遙測數據處理模塊通過總線指令的同步頭對接收到的每一個遙測幀進行搜索。而搜索到總線指令后,還要對指令進行校驗,校驗通過后才能提取其中的遙測參數并進行計算。同時在處理遙測幀時也可能需要對遙測幀進行記數操作,以便統計通信狀態或超時重傳等。

由于飛行器內傳感器及設備工作狀態各異,其遙測參數的數據類型也千差萬別,通常情況下提取出的遙測參數的數據類型并不一致,需要經過一系列變換、統計等操作。比如某遙測幀中的遙測參數就可能包含8位無符號數、16位無符號數、32位單精度及64位雙精度浮點數等多種數據類型。

綜上所述,在使用FPGA進行遙測參數處理時,會遇到以下兩方面的難點:

1)遙測參數的提取涉及到復雜的搜索、判斷、校驗過程,如果使用RTL級代碼實現,其描述工作狀態的狀態機將異常復雜,相關代碼量也將非常大,不利于代碼的維護和調試。

2)遙測參數的計算會經常遇到浮點計算、數據類型轉換以及復雜公式計算(如正弦、對數計算等),使用RTL級代碼進行描述較為困難。

針對以上問題,本文將FPGA高層次綜合技術引入到遙測數據處理過程中。利用高層次綜合技術對遙測數據進行處理具有以下優勢:

1)開發周期短。應用高層次綜合技術編寫的遙測數據處理相關代碼屬于行為級描述,抽象層級較高,比較符合高級語言的編程習慣。相對于RTL級的實現方式,其代碼精簡易懂,也便于修改,因此可以有效縮短產品的開發周期。

2)實時性高。相對于DSP或通用CPU等軟件實現方式,應用高層次綜合技術編寫的遙測數據處理相關代碼仍屬于硬件實現,延時可控且可以多模塊并行處理,實時性高。

3)支持浮點計算。高層次綜合技術支持IEEE754標準的浮點數據計算[7,10],且支持標準32位單精度及64位雙精度浮點數據類型,因此非常適合描述復雜遙測參數計算。

2 基于高層次綜合技術的遙測數據處理

2.1 高層次綜合技術介紹

高層次綜合(High-Level Synthesis)并不是最近才發展起來的技術,早在20世紀70年代就提出了相關的概念,隨著軟、硬件技術的不斷發展,高層次綜合的相關技術才逐步完善、成熟[14]。

對于高層次綜合技術的應用,目前國外的相關報道較多,比如基于FPGA或GPU的計算加速[13]、圖像處理[11-12]、算法開發[17-18]等。尤其在異構計算方面,利用高層次綜合技術能夠有效提升異構計算平臺的設計、開發效率[20-21]。國內目前高層次綜合技術相關報道主要集中于圖像處理及算法開發上,在衛星測控領域的應用還較少。

簡單來說,高層次綜合是一種代碼的綜合技術,其作用是將抽象層級較高的語言(如C、C++、SystemC、OpenCL等)編寫的行為級描述代碼自動轉換為RTL級代碼。而利用高層次綜合技術的FPGA開發工具[15-16](如Xilinx公司的VIVADO HLS),除了提供高層次綜合的功能外,還提供了如寄存器分配、I/O接口生成、操作調度、狀態機生成等諸多功能,有效提高了FPGA設計、開發效率。

利用高層次綜合工具進行FPGA設計開發,可以帶來以下幾方面的優勢[19]:

1)開發周期短。高層次綜合技術可以屏蔽很多的硬件具體實現細節,使設計師將更多精力放在算法設計、產品功能描述上,從而大大縮短開發周期[5]。根據統計,相對于手工編寫RTL級代碼,采用高層次綜合技術的代碼設計效率可以提高約4倍~10倍,結果質量(quality of results,QoR)約0.7倍~1.2倍。

2)測試激勵開發效率高。對于FPGA的設計、開發,測試激勵(Testbench)的編寫非常重要且非常耗時,而高層次綜合技術可以將基于高級語言(如C/C++)的測試激勵直接用于RTL級代碼的功能驗證,這就有效提高了代碼驗證的效率。

3)便于代碼的修改和維護。由于基于高層次綜合技術編寫的代碼是屬于行為級的描述,其抽象層級較高,便于設計師的閱讀理解,也便于代碼的后期維護。

基于高層次綜合技術的特點,其非常適合應用于衛星、火箭等飛行器的遙測數據處理過程中(如遙測參數的提取、計算、重組等過程)。

2.2 遙測數據處理模塊的對外接口設計

為了實現對遙測參數的處理,首先需要對遙測數據處理模塊的對外接口進行定義。這里使用的開發平臺為Xilinx公司的VIVADO HLS[3-4,8],且使用C語言對遙測數據處理模塊的功能及接口進行描述。

假設所有遙測數據均以1Byte為單位存儲于遙測幀中,而遙測幀是一種M*N的二維表格,經過遙測數據處理模塊的處理后會生成一個長度為L的一維數據幀輸出給后續處理模塊。遙測數據處理模塊的對外接口定義如圖3所示。

圖3 遙測數據處理模塊對外接口定義

其中input_data為unsigned char類型的二維數組,用于存放接收到的遙測幀;output_data為unsigned char類型的一維數組,用于存放處理后的數據幀;tm_process_block為該遙測數據處理模塊函數名,經過VIVADO HLS綜合后會轉換為相應的RTL模塊。

由于遙測幀內部數據是按照地址的先后順序輸入到遙測處理模塊的,不存在隨機訪問情況,輸出結果也是如此,因此可以將模塊的對外接口理解為一個FIFO,而在VIVADO HLS中可以使用約束語句對其進行約束。

為了使VIVADO HLS能夠正確識別對外接口的輸入輸出關系和具體接口形式,需要在代碼中添加相應的約束語句,具體如圖4所示。

圖4 遙測數據處理模塊的外接口約束

其中,第一條約束語句用于指導VIVADO HLS為遙測數據處理模塊添加模塊級握手信號。模塊級握手信號用于控制和監測模塊的工作狀態,以便于不同模塊之間的數據交換;第二、三條約束語句用于通知VIVADO HLS對input_data、output_data采用FIFO接口形式。

圖5為經過VIVADO HLS綜合后生成的遙測數據處理模塊的對外接口,可以看出主要分為三部分:輸入接口、輸出接口以及相關的握手信號。

圖5 遙測數據處理模塊的硬件接口

2.3 基于高層次綜合技術的遙測數據處理的設計與實現

前文簡要介紹了對衛星、火箭等飛行器的遙測數據的處理過程,而使用高層次綜合技術對遙測數據進行處理,主要的技術難點在于如何使用高級語言描述遙測數據的數據結構,以及如何使用高級語言描述遙測數據的處理過程。

從前面的分析可以看出,遙測數據的數據結構可以由高級語言的一維或二維數組描述,并且可以很方便地對數組中的指定數據進行尋址訪問,而遙測數據的處理過程可以使用高級語言的循環、條件判斷等常用的語句描述,其工作流程如圖6所示。具體描述如下:

圖6 遙測數據處理模塊工作流程圖

1)對input_data、output_data以及其他用于存放中間結果的臨時數據緩沖區進行初始化,可以使用For循環完成。如輸出結果中還要包含幀計數功能,則初始化幀計數相關變量。

2)將input_data中的遙測幀數據拷貝到臨時數據緩沖區中。由于遙測幀是二維結構,存放遙測幀的緩沖區可以聲明為unsigned char類型的二維數組,并使用二級For循環實現數據拷貝。

3)校驗遙測幀內部數據(如奇偶校驗、CRC校驗),如果校驗正確則進行下一步處理,如果校驗不正確則返回FALSE,表明本次遙測幀處理失敗。

4)遙測參數提取。該過程實際上就是對二維數組的訪問過程,將二維數組中指定遙測數據拷貝到臨時數據緩沖區,或按照一定規則在二維數組中指定區域搜索指定的遙測參數集再進行進一步處理。

5)遙測參數計算。對提取出的遙測參數進行計算,并將計算結果保存到臨時緩沖區。

6)將遙測參數計算結果保存到臨時緩沖區,并根據一定的規則重新組幀,同時將計算結果填入幀內。如輸出結果中需要有幀計數功能,則將幀計數變量加1并填入幀內相應位置。

7)根據一定規則計算輸出幀的校驗和并填入輸出幀的相應位置。

8)將臨時緩沖區中的輸出幀拷貝到output_data中,該過程可用For循環實現,最后返回TRUE,表明本次遙測幀處理成功。

遙測地面站在輸出處理結果時經常需要標記當前輸出幀的幀序號,以便于后端設備根據幀序號進行通信握手或誤碼統計,這就要用到幀計數功能。幀計數變量需要在不同的遙測幀處理過程中持續保持更新,而不像其他變量那樣每次處理過程都置零或恢復初始狀態,因此幀計數變量需要設置為static類型,這樣幀計數變量就可以保持上一次調用遙測數據處理模塊時的狀態。

對于浮點計算,VIVADO HLS支持標準IEEE754浮點數(32位單精度及64位雙精度浮點數據類型)及相關浮點計算。因此使用高層次綜合技術實現遙測參數的浮點計算非常簡潔、高效。以標準32位單精度浮點數為例,配合C語言的強制類型轉換及位操作便可以實現復雜的浮點計算。

這里假設提取遙測幀中的11行85列的遙測參數(unsigned char類型),將該參數進行浮點計算(float類型)并將計算結果存儲到輸出幀中的[10:13]位置,其實現代碼如圖7所示。

圖7 浮點計算實現代碼示例

可以看出基于高層次綜合技術的浮點計算代碼非常簡潔,遙測數據的尋址、浮點運算等只需一條語句描述,將計算結果存儲到輸出幀中也僅需要簡單的移位、強制類型轉換等操作完成,而如使用RTL方式實現相同功能,則代碼量將大大增加。

3 測試結果與分析

本文將以上描述的遙測數據處理模塊使用VIVADO HLS進行了設計、仿真,同時將轉換的RTL代碼進行了硬件測試。代碼在VIVADO開發環境[9]中進行綜合、布局、布線,最后在Xilinx公司的XC7A200T[6]平臺上進行了硬件測試。

硬件測試過程中,遙測數據處理模塊對96 Byte*64 Byte的遙測幀進行處理,輸出幀長度為360 Byte。處理過程涉及到若干次的參數集提取、浮點計算以及校驗和計算等操作,模塊工作時鐘為10 MHz。

圖8為該模塊的FPGA資源占用情況,LUT及DSP資源占用率分別為5%和1%??梢钥闯銎?FPGA資源占用率是非常低的。

圖8 遙測數據處理模塊FPGA資源占用情況

圖9是遙測數據處理模塊的時鐘及延時情況??梢钥闯?,該模塊最高工作頻率可以達到11.2 MHz,延時最高為24 367個時鐘周期,約2.4 ms,因此理論上達到400幀/s的處理速度。由于遙測數據處理模塊使用的是FPGA的基本邏輯資源,因此也可以多個模塊并行處理遙測數據,以適應更高速的遙測數據處理需求。

圖9 遙測數據處理模塊時鐘及延時情況

圖10是遙測數據處理模塊接口部分的RTL級仿真圖??梢钥闯?,當遙測幀輸入到模塊后,經過一定的處理周期,模塊輸出處理結果,RTL級仿真結果與行為級仿真一致。

圖10 遙測數據處理模塊接口部分RTL仿真圖

從開發周期上進行對比,應用高層次綜合技術,整個模塊從代碼設計、仿真直到最后的硬件測試僅僅耗費了1周的時間,而如果使用傳統的RTL開發流程,保守估計預計要耗費2個月的時間。

從代碼量上進行對比,由于模塊是基于C語言描述的,其抽象級別較高(行為級描述),因此相關代碼極為精簡,模塊主體代碼量僅300行左右,加上Testbench的代碼量為500行左右。與之對比,如果采用基于RTL的設計流程,整個設計的代碼量預計要增加10倍以上。

4 結束語

綜上所述,使用高層次綜合技術對遙測數據進行處理,在同樣滿足設計要求的情況下,其設計、開發效率要遠遠高于傳統的基于RTL的開發流程,同時也在很大程度上減輕了設計工程師的工作量。

目前高層次綜合技術主要應用在圖像處理、數據編解碼[11-12]等領域,而在衛星測控領域的應用報道還很少。本文將高層次綜合技術應用到地面站的遙測數據處理過程中,證明了利用高層次綜合技術可以有效提高衛星測控產品相關FPGA的設計、開發效率,縮短產品的研制周期,因此具有推廣價值和參考價值。

猜你喜歡
遙測數據處理代碼
認知診斷缺失數據處理方法的比較:零替換、多重插補與極大似然估計法*
基于ARCGIS 的三種數據處理方法的效率對比研究
高層建筑沉降監測數據處理中多元回歸分析方法的應用研究
高層建筑沉降監測數據處理中多元回歸分析方法的應用研究
視頻大數據處理的設計與應用
神秘的代碼
一周機構凈增(減)倉股前20名
重要股東二級市場增、減持明細
調度監控系統畫面數據信息糾錯方法討論
近期連續上漲7天以上的股
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合