熊青玉 王慧泉 金仲和
(浙江大學微小衛星研究中心,杭州 310027)
作為在軌服務技術的重要組成部分,在軌模塊更換技術能夠延長和增加衛星的使用壽命、降低衛星使用成本并增強衛星對需求變化及新技術應用的快速響應能力,可以增加空間系統的靈活性和衛星應用的適應性[1]。而在軌升級則是在軌模塊更換的一大重要應用場景[2],在軌升級涉及到衛星功能升級或更換,此時替換的模塊通信需求則會所有不同,星上總線可能面臨著同時掛接多種通信協議的模塊的情景。可更換的模塊的種類繁多,且其電信號接口種類多樣[3],如串行外設接口(SPI)、集成電路總線(I2C)、1553B總線等,為使衛星能更大限度兼容已有的成熟模塊,適應更多種可更換模塊,需要設計一種融合總線的通用接口,可以在衛星更換了部分模塊后,衛星的通信總線能兼容不同模塊的不同接口通信協議,使得衛星的綜合電子系統能夠與不同接口協議的模塊進行通信。
融合總線的通用接口技術一般分為兩類,一種是原本硬件電路就通用的幾種通信協議,經過軟件上的兼容設計,使得接口對外能兼容幾種不同的通信協議[4],或者硬件不進行通用設計,對接口進行轉接設計,然后進行軟件層面兼容設計[5-6],但是航天常用總線包括SPI、I2C、1553B總線、CAN總線等,并不都是硬件上完全通用的接口協議,所以此類方法并不適用;另一種是硬件上設計兼容的電路,軟件上也進行兼容設計,使得接口對外能兼容幾種硬件原本不兼容的通信協議,如南航的李淵提出的基于現場可編程門陣列(FPGA)部分動態可重構功能提出的通用總線接口,利用FPGA部分重構后更改接口此時的通信協議,使得接口在不同時刻能夠實現不同的通信協議[7],但是FPGA的重構時間根據重構面積的大小從幾十毫秒到幾百毫秒不等,如果綜合電子系統采用FPGA重構的方式與不同接口協議的模塊進行通信,每次切換協議都需要等待一次不短的重構時間,相對通信時間一般在微秒級別而言,幾十到幾百毫秒的重構時間使得接口在頻繁切換接口協議時的通信效率變得很低。
綜上所述,本文設計的融合總線的通用接口,保留了軟硬件均兼容的設計,但是改變了切換協議的方式,大幅減少了協議切換的時間,提高了通信的效率。同時,傳統的通用接口當接口的協議重構時,是通信的兩邊同時重構,不存在不同通信協議的信號之間互相干擾的情況,而本設計需要考慮不同通信協議的信號之間互相干擾的問題,所以還制定了應對不同協議模塊掛接時可能帶來的信號干擾的解決方案并且基于衛星綜合電子系統的需求進行了總線工作方式的設計。
為達到兼容不同總線協議,能同時掛接不同總線節點并與之通信的目的,融合總線通用接口包括3個層次的設計:首先,在硬件上能兼容不同的總線,且從一種總線通信切換至另一種總線通信所需時間相對于通信時間而言占比很小,可以一定程度上達到實時切換通信協議;其次,需要實現節點抗干擾技術,即當一種總線正在通信時,掛接在總線上的其他種類的總線節點不會被誤觸發通信進而改變總線電平,造成信號干擾甚至通信錯誤;最后,為了使融合總線能夠在掛接多種協議的節點時正確高效的進行通信行為,需要在原有總線的工作模式基礎上結合衛星應用背景,進行二次開發,確保每個節點能夠正確高效的進行數據傳輸。
綜合電子系統采用數字信號處理器(DSP)+FPGA的架構設計,本文在此基礎上進行通用接口設計,由于FPGA承擔的功能包括接口擴展,所以本文提出的通用接口的實現主要依靠于FPGA模塊及接口電路模塊。FPGA模塊的主要功能是在芯片內實現各種總線協議,轉換數據格式,連接主處理器與外設的通信鏈路,實現數據交換功能,接口電路模塊實現底層驅動電路。
FPGA中與本設計相關的模塊包括:數據交換模塊、控制信息模塊、數據存儲模塊、接口協議模塊和輸出數據模塊。通過數據交換模塊搭建FPGA與DSP通信的鏈路,通信的信息包括要發送的數據信息和相關的控制信息,分別存儲于數據存儲模塊和控制信息模塊。而接口協議模塊則是根據控制信息將數據信息以一定的格式發送給輸出數據模塊,輸出數據模塊負責控制外部電路向接口發送信息,如圖1所示。

注:EMIF(A)為外部存儲器接口(A組)。
本設計將整個通信過程分割為主處理器DSP→FPGA內數據協議轉換→驅動電路→選擇電路→接口→外設的過程,在主處理器發送的數據中加入選擇的總線通信協議信息,FPGA就可以選擇到對應的總線通信協議將數據發送至接口與外設進行數據交互,如圖2所示。
主處理器通過控制信息對整個通信鏈路進行控制,包括通信協議控制信息、通信過程控制信息和接口控制信息。也可以通過修改控制信息在線切換通信協議或接口等,直接在上層進行控制。主處理器發送給FPGA的數據還包括要發送的數據信息,要發送的數據信息則會按照控制信息和協議要求被發送到對應接口的總線上。

圖2 協議切換Fig.2 Switch of communication protocols
FPGA會根據地址信息將對應的數據按照對應的總線協議進行數據轉換,并根據選擇信息將數據發送到被選擇的接口上。
比如現在想在接口輸出CAN協議的數據,那么主處理器在控制信息中修改相應的數據,控制信息寫入后FPGA將會解析控制信息,而后主處理器發送的數據便會以CAN協議的形式發送到接口上。此段數據傳輸完畢后,可以實時通過修改控制信息改變輸出數據的協議類型而無需等待重構時間,也不受限于預先設置的接口配置信息。
驅動電路是為需要驅動的總線而設計,而無需驅動的總線則可以直接發送到選擇電路上。由于不同總線的電平波動范圍有區別,所以選擇電路設計為可通過電壓在±12 V,以適應不同總線的電平要求。選擇電路的切換時間控制在5 μs以內,5 μs的切換時間相對數據通信的時間一般在100 μs以上,可以達到實時切換總線協議類型的目的。
對于硬件電路上的電信號隔離,在單一總線掛接多個節點進行通信時,為保證掛接的節點與總線之間的隔離,增加輸入阻抗,會采用一定的隔離技術。如I2C總線,采用場效應管(MOS)+二極管的方式,隔離輸出節點的輸出直接對總線信號產生的影響[8]。其他多節點總線通信方式的器件也有類似的隔離技術[9]。
但是多種通信協議的節點連接到同一總線上,除了硬件上的隔離技術以外,還需要考慮不同總線通信之間信號干擾的問題,不同的總線通信格式不同,某一節點可能會收到不是自身通信協議下的信號而產生誤判,進入通信狀態,為保證融合總線的通信可靠性,融合總線需要定義一些特別的約束來確保每個節點能夠準確判斷總線上通過的信號。
1.3.1 硬件電路層面抗信號干擾
首先在硬件電路層面通過約束不同通信協議的信號線的共用方式來減少信號干擾,同為差分信號,1553B和CAN總線為了避免通信層面的干擾,可以按照如圖3所示的方式分配信號線,H1和L1是一對差分信號線,H2和L2是一對差分信號線,隔離1553B的通信鏈路和CAN的通信鏈路,CAN總線的一對差分線H1和L1通信時,1553B總線對應的是H1和H2,是兩根接收高電平信號的線,所以就不會接收到任何信息,此種方式可以隔離CAN總線和1553B總線互相之間的干擾。差分通信線由于其差分機制,很難在I2C或者SPI通信時收到誤通信差分信號,所以在物理層不需要考慮非差分信號會誤觸發差分通信,即便偶有一位差分信號產生,也不可能形成完整的通信數據,而兩種差分通信的協議互相之間已經完全隔離了干擾的可能,故而CAN總線和1553B總線的通信信號已經達到了抗干擾的目的。
I2C總線通信和SPI總線通信同為TTL電平信號,且都有時鐘線和數據線,串行通信的依據是時鐘線,所以為了減少誤通信信號的產生,將兩種協議的時鐘信號線錯開,但是不能完全保證信號干擾已經消除,所以需要進一步的設計。

注:H1、H2為高電平1、高電平2,L1、L2為低電平1、低電平2,SDL1、SDL2為時鐘線1、時鐘線2,SDA1、SDA2為數據線1、數據線2,CS為片選線,CLK為時鐘線,MISO為主入從出,MOSI為主出從入。
圖3 四線制接口
Fig.3 Four-wire interface
1.3.2 通信協議層面抗信號干擾
為進一步保證I2C節點和SPI節點準確判斷總線上通過的信號,在通信協議層面也要有一定的約束。I2C總線協議規范中,被定義為起始S和停止P條件的情況如圖4所示,SCL 線是高電平時SDA線從高電平向低電平切換這個情況表示起始條件,SCL 是高電平時SDA 線由低電平向高電平切換表示停止條件。

圖4 起始條件和停止條件Fig.4 Start and stop condition
起始條件之后進行數據傳輸,傳輸的每一個字節都帶有響應位,響應位的時鐘脈沖期間,接收器必須將SDA線拉低。起始條件和響應位雙重約束,進一步隔離了其他總線通信信號對I2C總線的信號干擾。且接收器發送信息之前必須接收到正確的地址信息和讀寫控制信息,所以被其他通信信號誤觸發的概率很小。
SPI總線通信由于是每一個節點都需要一根片選信號線,所以四線制接口只能接一個SPI部件,但是由于CS線在其他協議通信時可能會被拉低,而同時時鐘線上的電平也在不斷變化時,SPI節點就有可能在其他總線通信時收到錯誤數據。
為進一步隔離I2C節點和SPI節點互相之間的干擾,也為了防止差分信號通信時對I2C節點和SPI節點產生干擾,融合總線會對通信協議進行二次開發,添加更多的約束來抗信號干擾。融合總線上所有的通信協議在通信過程會加入識別碼和節點響應,相當于進行一次配對。識別碼和節點響應的信息分別為一個字節,每一個節點均會被分配一個識別碼,識別碼作為通信的最開始的一組信息,節點接收到正確的識別碼之后,會發送節點響應信息,雙方配對成功,該節點則會進入通信激活狀態,之后進行有效數據通信。節點未接收到正確的識別碼信息時,不會對總線的電平有操作,防止干擾通信過程。通過對協議的二次開發, I2C總線節點和SPI總線節點接收到誤通信信號恰好和節點自身識別碼相同的概率大約趨近于零,已經從概率上將此兩類總線達到了抗干擾的目的。但是這也要求了掛接在融合總線上的I2C的節點和SPI的節點,不可以是不可編程的節點,要求節點可以對協議進行二次開發,在啟動通信前加入識別碼信息。
由于融合總線的特殊性,總線競爭模式難以實現,多主機通信將難以控制,故而采用主從模式,但是為了能及時接受從節點主動發送的數據,將采用節點分類和動態調整總線的方式。
根據不同節點的通信需求,構建一個合適的通信方式,使得星上通信能夠正常進行,首先在第一層次上將總線上的工作狀態分為查詢狀態、通信狀態、空閑狀態,主從模式方便了總線狀態的管理和確認,查詢狀態即主機對各個從節點發送查詢信息,獲得從節點反饋,記錄從節點能否通信的狀態;通信狀態是主機與某個或某些節點進行數據交換;空閑狀態是既沒有進行查詢也沒有進行通信時的狀態。其次在第二層次上,由于從節點通信需求各異,在通信狀態時需要分別考慮,將節點分為完全式從節點和不完全式從節點,需要主動發送數據的節點為不完全式從節點,如遙控,不需要主動發送數據的節點為完全式從節點,只被動接受主機的控制,發送數據也是在主機問詢之后。根據衛星綜合電子系統的通信需求[10],對節點進行了整理(見表1)。

表1 星上通信節點

續 表
根據表1中節點通信需求,制定總線工作方式,首先按照遙測數據2 s發送一次作為周期,周期開始總線進入查詢狀態,并在查詢狀態結束后進入每0.2 s訪問遙控,執行程控的循環中,2 s周期結束前進行星上狀態信息采集,向遙測節點發送遙測數據包,更新傳回地面的遙測數據,如圖5所示。此方式可以應對絕大部分星上通信需求,但是有一個限制,如果某節點需要進行不能間斷且超過0.2 s的通信,如果通信被打斷則會數據丟失甚至導致通信無效,如某些無緩存功能但數據量龐大的相機。

圖5 總線工作周期Fig.5 Working period of the bus
查詢時間估計方式如下:SPI節點只能有一個,通信速率從100 kbit/s到最高30 Mbit/s,查詢時間最多0.5 ms;I2C節點每兩根線最多驅動8個節點,所以四線制接口一共最多16個I2C節點,通信速率為100~400 kbit/s,全部查詢需要的時間最多4 ms;1553B總線協議規定最多驅動31個節點,并且需要一組差分線通信和一組差分線備份,且有廣播模式,通信速率1 Mbit/s到4 Mbit/s,查詢時間低于1 ms,CAN總線協議規定最多驅動節點數能達110個,也是一組差分線通信和一組差分線備份,通信速率125~500 Mbit/s,同樣具有廣播模式,所以查詢時間也低于1 ms。所以融合總線查詢全部的節點所需的最大查詢時間小于7 ms。
為了應對星上可能出現的某節點需要進行不能間斷且超過0.2 s的通信的需求,可以通過將此通信過程放在與0.2 s定時器中斷同級的中斷函數中進行,則主機每0.2 s訪問一次遙控的行為則不會發生,優先進行不可被打斷的通信,但是為了保證遙測數據能夠按時回傳,2 s定時器中斷要高于0.2 s定時器中斷,所以總線并不能支持進行超過2 s的不可被打斷通信,此類節點需專口專用,不可掛接在總線上,中斷表如圖6所示。

圖6 中斷表
本試驗采用的試驗平臺如圖7和圖8所示,大板上包括控制主芯片,小板為設計的融合接口電路,連線通過面包板轉接連接SPI模塊和I2C模塊。
試驗設計首先驗證通信時從一種協議切換到另一種協議所需時間小于5 μs,相對于通信時間而言可以做到忽略不計,然后驗證從不同的模塊上收到了正確的數據。

圖7 試驗平臺Fig.7 Test platform

圖8 連線圖Fig.8 Connection diagram
由于CAN總線和1553B總線的差分通信機制,隔離得更為徹底,所以驗證系統時選擇I2C模塊和SPI模塊進行測試,如圖8所示總線上同時連接了I2C模塊和SPI模塊,第一次試驗時先后讀I2C模塊的數據和SPI模塊的數據,并計算I2C模塊通信結束之后,總線切換為SPI通信之前,到SPI通信結束時的時間。第二次試驗只進行SPI通信,計算SPI通信所需的時間。兩次計算的時間差則為加入了協議切換后多出來的時間。
從圖9得知在加入切換協議這一步時,通信時間增加了2 μs,協議切換的時間達到了設計要求小于5 μs。
然后驗證收到的數據是否是正確的數據,在通信過程中通過示波器的探頭點到模塊的數據輸出管腳,捕捉到通信的波形來進行判斷,如圖10是I2C和SPI通信的電壓波形圖,前八位分別是0x18和0x7f,通信數據正確。

圖9 試驗結果Fig.9 Testing result


圖10 I2C和SPI的輸出時鐘和數據電壓波形圖Fig.10 Voltage of output clock as well as data of I2C and SPI
本文設計的融合總線通用接口囊括了I2C總線、SPI總線、1553B總線和CAN總線等4種協議的總線,總線通信速率根據節點的協議不同最高可達30 Mbit/s(SPI協議的理論值),通過在FPGA平臺開發和硬件電路的設計,實現了在融合總線接口上掛接不同的通信協議模塊并成功通信,且能夠達到實時切換。掛接多種協議的模塊時不同通信協議的模塊之間通信也沒有被干擾,能夠正確的收到通信數據。另外根據綜合電子系統作為主機的通信需求和星上各個從節點的通信需求,規定了總線的工作方式,節點通信最高支持2 s以內的不間斷通信。本設計旨在提高衛星綜合電子系統的兼容性,當發生在軌模塊更換行為時,擁有融合總線通用接口的衛星可以適用于更多種類的可更換模塊,無論是升級功能還是重構功能均能有更好的包容性,但是融合總線不適合掛接需要長時間不間斷占用通信口的節點和設備,該類節點適合專口專用,接入總線反而不便。本文作為驗證系統故設計較為簡潔,但是可擴展性強,通信的自由度高。此融合總線通用接口可為衛星在軌升級提供良好的基礎。