李旭峰 周 莉 朱 巖 趙文杰 郝 澄
1(中國科學院國家空間科學中心 北京 100190)
2(中國科學院大學 北京 101499)
在進行星上設備研發的同時,還需要設計有相應的地面檢測設備(簡稱地檢)對其進行功能和性能檢測,確保滿足任務要求[1]。衛星載荷分系統的載荷管理器負責星上有效載荷的統一供配電管理、遙測遙控、運行控制和數據處理,以及衛星平臺與載荷之間的通信,是衛星重要功能部件之一。不同的衛星載荷分系統配置載荷的數量、硬件接口、軟件協議等各不相同,導致不同型號任務的載荷管理器功能和接口各不相同,相應的載荷管理器地檢需要進行個性化設計。不同型號任務載荷管理器的差異性使得地檢的通用性一直成為設計難點[2]。
衛星平臺對外電接口包括供配電接口、總線接口、科學數據輸入接口、直接遙測輸入接口、遙控輸出接口、秒脈沖輸出接口等[1-4]。載荷對外電接口包括供配電接口、總線接口、科學數據輸出接口、直接遙測輸出接口、遙控輸入接口、秒脈沖輸入接口等[5,6]。載荷管理器既連接衛星平臺又連接多臺載荷,因此載荷管理器接口分為對平臺和對載荷兩種。按照電接口傳輸速率可以分為高速接口和低速接口[6-8];高速接口速率為幾百Mbit·s-1至幾Gbit·s-1,通常采用同軸電纜或者光纖接口;低速接口包括速率小于100 Mbit·s-1的接口,以及一些分立的遙測遙控接口。星上總線接口有1553 B總線、CAN總線、RS422總線、RS485總線等,星上低速科學數據接口包括單線制或者三線制的LVDS接口或者RS422接口。
載荷管理器地檢的常規方案是每種接口使用獨立的設備或硬件板卡實現,再通過一個或多個上位機控制。當前常規方案一般是采購工控機[3,9],即帶有PCIE接口的1553 B板卡、RS422板卡、LVDS板卡、模擬量采集板卡、OC板卡等貨架設備,每個板卡上有可編程器件FPGA,在工控機進行上位機的界面設計以及與每個板卡FPGA的接口和邏輯設計。這種方案的缺點是成本高,集成度低,軟件設計復雜,需要編程的FPGA數量多,通用性差。為減少對地檢的人力、物力和時間投入,提出一款硬件接口兼容性高、軟件可配置、通用性高、使用成本低、與上位機接口簡單的地檢板卡,為多種任務型號的載荷管理器提供支持,加速管理器的研制進度,使得每個任務型號無需單獨研制一臺專用的地檢。
本文根據地檢實現通用性在數據格式與物理層約定的難點,針對以上問題,分析了板卡硬件設計和FPGA軟件設計方法,并對地檢測試板卡通用性進行測試,驗證板卡設計的可行性。
載荷分系統結構如圖1 所示。為了適配不同型號任務載荷分系統的硬件和軟件接口協議[3,10-12],基于配置文件的通用地檢測試板卡的系統設計基本思想是:地檢測試板卡集成盡可能多通道的常用硬件接口,在硬件上通過撥碼開關或跳線實現物理層的兼容;軟件方面,在FPGA設計時允許上位機通過配置文件修改內部寄存器,并將配置文件存儲在非易失性存儲器Nor flash上,后續上電自動從Nor flash加載寄存器配置,不需要重新配。適配不同任務時,FPGA代碼不需要重新寫,只需要設置對應的配置文件,達到通用的要求。

圖1 載荷分系統結構Fig.1 Load subsystem structure
下面從硬件設計、FPGA設計和上位機設計三方面進行分析。
地檢測試板卡系統架構如圖2所示,板卡由4部分組成,包括與上位機的通信模塊、緩存和配置文件模塊、模擬平臺接口模塊和模擬載荷接口模塊。

圖2 地檢測試板卡系統Fig.2 Block diagram of ground testing board system
與上位機的通信模塊包括RS422接口和百兆/千兆網口,用于接收上位機的指令和配置文件等,并且發送地檢板卡狀態和接收數據。緩存和配置文件模塊由SRAM和Nor flash組成,SRAM用于緩存科學數據,Nor flash用于存儲對應型號任務軟硬件接口協議的配置參數。模擬的平臺接口模塊具備OC指令輸出、遙測采集、秒脈沖產生、科學數據接收功能;模擬的載荷接口模塊具備載荷總線響應、科學數據發送、載荷模擬量產生、OC指令接收檢測、秒脈沖接收、GPIO接口功能。
板卡硬件設計的硬件接口和通道數如表1所示,能夠滿足絕大部分衛星平臺、載荷硬件接口和數量的要求;由于1553 B總線、CAN總線板卡技術成熟,接口標準,以及高速Serdes接口速率較高,因此未在地檢板卡中集成,可以采購貨架板卡集成在工控機中。

表1 通用地檢測試板卡硬件接口Table 1 Hardware interface of ground testing board
板卡支持的科學數據和載荷總線通道,支持UART協議、三線制LVDS協議和單線制8 B/10 B編碼的LVDS協議。UART協議的奇偶校驗位、停止位、數據位和波特率可配置,數據位支持8位和7位,停止位支持1位、1.5位和2位。三線制LVDS協議的使能和速率均可配置,支持低有效和高有效的使能,數據支持在時鐘的下降沿或上升沿改變;單線制LVDS的K碼和速率均可配置。
硬件的可重構設計基于撥碼開關/跳線和通過軟件重配置FPGA管腳控制寄存器實現。如圖3所示,OC指令輸出通過撥碼開關和跳線選擇,若OC指令為輸出低電平脈沖,撥碼開關U132將置于關閉,跳線J37短接1/2兩點;若輸出指令為高電平脈沖,撥碼開關U132將置于打開,驅動后級MOSFET(U136)工作輸出高電平,跳線J37短接2/3兩點。

圖3 基于撥碼開關/跳線的硬件可重構設計Fig.3 Hardware reconfigurable design based on dial switch/jumper
科學數據輸入與輸出選擇RS422還是LVDS接口,由FPGA內部寄存器控制,該寄存器控制輸入與輸出接口連接內部UART邏輯、三線制或者單線制邏輯模塊。具體通過一個寄存器控制多路器,根據寄存器的值導通多路器的相應通路實現。寄存器配置為0時,輸入與輸出使用UART協議;配置為1時,輸入與輸出使用三線制PCM協議;配置為2時,輸入與輸出使用8 B/10 B單通道協議。
FPGA設計根據外部輸出接口(見圖2),分為配置控制、科學數據、命令工參、DA控制、AD采集等功能模塊,這里重點介紹配置控制、科學數據、命令工參等核心功能模塊。
1.2.1 配置控制模塊
FPGA通用性的設計由配置控制模塊和Nor Flash實現。具體型號任務應用時需根據平臺和載荷的接口類型、數量、數據格式對地檢測試板卡上的FPGA寄存器進行配置,并將這些信息按照設計的地址定義存放到Nor Flash中;后續上電不需要上位機重新配置FPGA內的寄存器,由配置控制模塊自動從載荷配置的Nor Flash中將配置信息讀到各功能模塊。配置信息包括科學數據格式、載荷指令格式、工程應答格式、通信協議選擇及配置、常用功能接口模塊的配置。
載荷管理器地檢測試板卡的具體軟件工作流程如圖4所示。針對具體型號任務的載荷指令和科學數據格式,形成載荷指令和科學格式配置表;上位機通過串口將載荷指令和科學格式配置表發送給FPGA,由FPGA寫入載荷配置表Flash中。后續FPGA上電后,首先檢查載荷配置Flash的地址0,驗證配置Flash中的數據是否可用:如果可用,則按照載荷配置Flash中數據配置各功能單元的寄存器組,等待上位機的啟動命令,根據上位機的命令響應處理結果;如果不可用,則進入等待配置命令模式。

圖4 FPGA配置控制模塊工作流程Fig.4 FPGA configuration control module workflow
1.2.2 科學數據模塊
不同的任務型號科學數據以及指令應答數據包格式一般是不同的[6],主要體現在數據包內字段的組成不同、單一字段長度不同、單一字段取值不同和數據包長度不同,如圖5所示。科學數據與命令工參中多變的數據格式使得地檢測試板卡FPGA設計很難通用。

圖5 某兩個任務型號科學數據的數據格式對比Fig.5 Data format comparison of scientific data of two task models
針對這一難點,采用基于序列解析的數據包生成方法。將數據格式中的字段根據其特點進行分類、編碼(見表2)??茖W數據與命令工參的數據包中固定不變的字段,例如包同步碼、版本號、包標識、載荷標識等,定義為固定字節;循環冗余校驗(CRC)、校驗和等需要根據校驗規則計算得出的字段,定義為校驗字節;有效數據、科學數據等需要填入隨機數或有序自增數的字段,定義為填充字節;需要填入實時時間的時間碼字段,定義為時間碼字節;包序列計數、分組標識、包計數等起到計數作用的字段,定義為計數字節;在命令工參中,由于無需關注時間碼、包計數等字段,因此均被歸納為無關字節。

表2 字段的抽象表示Table 2 Abstract representation of fields
依照上述規則將具體數據包內各個字段轉換為由編碼表示的組包控制序列(見表3),上位機將序列以及對應數據寫入科學數據模塊,科學數據模塊根據讀出的編碼在數據包對應字節位置填入相應的數據。具體FPGA的實現如圖6所示,分為讀取、生成、發送三個階段。讀取是讀取上位機發送過來的組包控制序列,生成是根據組包控制序列的編碼填充數據包,發送是根據任務要求的協議產生相應的時序輸出。

圖6 科學數據模塊架構Fig.6 Scientific data module architecture
1.2.3 命令工參模塊
命令工參模塊采用與科學數據模塊相同的方法解決數據格式不同的問題,但命令工參模塊還需要判斷接收指令的有效性。具體實現方法是,命令工參模塊會根據編碼序列預生成一個字節,當收到一個字節時,會將當前接收到的字節與預生成的字節比較,然后根據編碼序列生成下一個字節,以此循環。若兩個字節不相同,則會生成錯誤信息發送至應答控制模塊,用于控制應答數據包的生成。
與科學數據包不同的是,在某些任務中,指令數據包的長度也存在較大差異,例如校時時間碼指令只有6字節,而平臺狀態信息指令長數百字節。有的任務指令數據包存在有效數據字節數字段,有的任務指令數據包不存在有效數據字節數字段,無法推出整包的長度。因此在指令數據包不可預知長度時,判別指令數據包是否接收完畢,是地檢測試板卡通用設計的另一個難點。
為此,采用一種超時接收的方法,即將依據長度接收指令數據包轉換為依據時間接收指令數據包。當數據接收接口超過規定時間未接收到數據時,即認為指令數據包接收完畢。在任務型號中一般嚴格規定接收到指令數據包后的應答時間,為此設計了一個經驗公式用于計算超時時間,保證命令工參模塊可以接收到完整的指令數據包,并且應答數據包的時間間隔滿足任務要求。
超時接收用于解決命令工參中指令數據包長度不可知的問題,以等待時間為依據判別指令數據包是否接收完畢。設超時接收等待時間為T,當一個字節接收完畢后,若在時間T內未收到下一個字節,則認為當前指令數據包接收完畢,將接收的數據送至指令解析單元,并復位接收單元準備接收下一個指令數據包。指令解析單元接收到指令數據包后,核驗數據包的格式和內容是否正確。若數據包的格式與文件要求的格式不符,則不響應該條命令,并通過串口向上位機發送鏈路異常信息。若數據包的格式與文件要求的格式相符,則根據數據包內容的正誤分別應答指令正確應答數據包和指令錯誤應答數據包。
在命令工參中不同類型的應答數據包的回復時間的要求一般是不同的,設一路命令工參存在n種應答數據包,每種應答數據包的回復時間最大不超過ti,max,在吞吐率為1的情況下每種應答數據包發送完畢所需時間為ti。等待時間T不應大于Tmax, 即
當時間T小于Tmax才能嚴格保證應答數據包能在規定時間內發送完畢。設接收一個字節的數據需要時間tr,則T應滿足
命令工參模塊按照上述功能劃分為解包單元和組包單元,如圖7所示。解包單元與科學數據模塊類似,根據上位機配置的序列進行比對,將比對結果發送給組包單元,并增加了超時接收檢測功能;組包單元根據接收到的指令進行組包,組包格式也是按照配置序列格式進行響應。命令工參模塊目前支持最常用的UART協議。

圖7 命令工參模塊架構Fig.7 Structure of command working parameter module
整個功能單元按流水線處理,保證命令工參模塊的吞吐率為1,并且發送應答包時不會因為數據未準備好而中斷。
命令工參模塊的設計解決了數據格式多樣和指令數據包數據無法預知長度的問題,是一種與具體數據格式和數據長度無關的實現方法,具有更高的通用性。
上位機通過RS422接口對FPGA進行控制和狀態讀取,通過以太網口接收科學數據。如前所述,基于序列的配置文件由上位機生成。使用地檢測試板卡時,只需要將給定需求/數據格式轉化為對板卡寄存器的配置,再將全部寄存器待配置值組織成配置表寫入FPGA內,即實現了FPGA參數的重配置。另外,上位機可以周期性讀取各個功能接口采集到的數據并實時顯示,為用戶實時監測工程參數。
如圖8所示,板卡中設計了一片Norflash用于存儲最新的寄存器配置表,由上位機控制FPGA進行維護。板卡上電后,FPGA自動讀取存儲在NorFlash內的寄存器配置表并配置內部寄存器,用戶將無需再次生成并寫入寄存器配置表。寄存器配置表可以通過上位機界面或者excel表生成,通過excel管理寄存器配置表便于用戶進行配置項編寫、版本管理和調試。

圖8 上位機架構Fig.8 Upper computer architecture
以科學數據輸出為例對板卡的通用性進行驗證??茖W數據輸出功能是板卡的核心功能模塊,也是板卡的設計要點。
搭建一套地檢測試板卡測試平臺,包含直流穩壓電源、示波器、工控機箱、地檢測試板卡和電壓表各一塊。另外,工控機箱配有一塊PCIe接口的LVDS板卡,用于接收地檢測試板卡發出的三線制LVDS和單線制LVDS數據,還配有一塊MOXA盒通過RS422通路與板卡相連,用于向板卡發送命令工參的指令數據包并接收板卡的數據。示波器用于測量板卡接口的參數,電壓表用于測量模擬量產生接口的模擬量,檢查板卡的輸出是否符合預期。
為驗證科學數據模塊的通用性,首先設計了一系列接口測試例程,用于遍歷接口的全部功能,其次選取多個任務型號的科學數據格式,測試科學數據模塊產生的數據是否能滿足全部要求。測試流程如下。
步驟1根據表4通過上位機配置板卡,使板卡產生相應的接口。

表4 板卡傳輸接口測試例程Table 4 Test routine of board transmission interface
步驟2使用示波器測試對應引腳,觀察波形是否符合預期。RS422接口需要關注波特率、校驗位、起始位、停止位、數據位是否符合預期,如圖9所示。PCM接口需要關注線速率、使能有效電平和數據位變化時刻與時鐘邊沿的對齊情況是否符合預期,如圖10所示。8B/10B需要關注線速率和同步碼流是否符合預期,如圖11所示。重復步驟1和步驟2遍歷表4的測試用例。

圖9 RS422接口波形Fig.9 Waveform of RS422 interface

圖10 PCM接口波形Fig.10 Waveform of PCM interface

圖11 8B/10B接口波形Fig.11 Waveform of 8B/10B interface
步驟3以嫦娥系列任務型號的接口控制文件中對科學數據的格式要求作為測試例程,通過上位機配置板卡,使板卡發送對應數據。
步驟4使用MOXA盒和LVDS板卡接收數據,通過上位機觀察接收的數據是否符合預期,如表5所示。其中RS422接口發送的數據通過MOXA盒接收,LVDS接口發送的數據通過LVDS板卡接收。重復步驟3和步驟4遍歷測試用例。

表5 科學數據Table 5 Scientific data
遍歷表4和嫦娥系列任務型號的數據格式的全部測試用例后,測試結果全部符合預期。
為驗證命令工參模塊的通用性,首先設計了一系列接口測試例程,用于遍歷接口的全部功能,其次選取多個任務型號的命令工參數據格式,測試命令工參模塊是否能正確解析指令數據包并應答對應的應答數據包。測試流程如下。
步驟1根據表4中UART部分通過上位機配置板卡,使板卡產生相應的接口。該模塊還需要配置超時接收時間與應答間隔時間,如圖12所示。

圖12 命令數據包的接收與應答Fig.12 Command packet reception and response
步驟2使用示波器測試對應引腳,觀察波形是否符合預期。
步驟3以嫦娥系列任務型號的接口控制文件中對命令工參的格式要求作為測試例程,通過上位機配置板卡并發送指令數據包,使板卡應答對應的應答數據包。
步驟4使用MOXA盒接收數據,通過上位機觀察接收的數據是否符合預期,如表6和表7所示。重復步驟3和步驟4遍歷測試用例。

表6 指令正確應答數據包Table 6 Response packet when command packet is correct

表7 指令錯誤應答數據包Table 7 Response packet when command packet is wrong
遍歷表4和嫦娥系列任務型號的數據格式的全部測試用例后,測試結果全部符合預期。
為了驗證模塊OC指令控制模塊、模擬量生成模塊、秒脈沖生成模塊和PWM輸出模塊的通用性,設計了一系列接口測試例程,用于遍歷接口的全部功能。
步驟1根據表8中接口測試例程配置板卡,使板卡產生相應的接口。
步驟2使用示波器和電壓表測試對應引腳,觀察波形是否符合預期。OC指令控制模塊需要關注有效電平與有效電平持續時間,如圖13所示;模擬量生成模塊需要使用電壓表測量對應管腳,觀察電壓值是否與配置值相符,誤差需要在±20 mV內;秒脈沖生成模塊與PWM輸出模塊基于同一模塊實現,需要關注脈沖周期和脈沖寬度,如圖14所示。

圖13 OC指令輸出波形Fig.13 Waveform of Open Collector (OC)

圖14 PWM輸出波形Fig.14 Waveform of Pulse Width Modulation (PWM)
遍歷表8的全部測試用例后,測試結果全部符合預期。
針對不同型號任務載荷硬件接口和軟件協議差異大導致載荷管理器地檢通用性差的難題,提出了一種硬件可重構、軟件協議可配置的通用地檢測試板卡的系統設計,該設計具有高集成度、高通用性、低成本、可重用、開發界面友好等優點,保證了項目研制進度,降低了對開發、成本和測試的需求。地檢測試板卡已在嫦娥任務多臺載荷管理器中得到應用,后續將支持空間科學衛星以及其他應用衛星等多個任務,具有較高應用價值。