柳 萌,安軍社,周昌義
(1.中國科學院大學北京100049;2.國家空間科學中心復雜航天系統綜合電子與信息技術重點實驗室,北京100190)
隨著空間探測領域的逐漸擴大,探測設備和儀器性能不斷提高,星載電子設備產生和待處理的數據總量迅猛增長,對數據總線處理能力提出更高的要求。SpW高速數據總線標準是ESA(歐洲航天局)提出的一種高速、點對點、全雙工的串行總線協議,以IEEE1355-1995和LVDS兩個商業標準為基礎,吸取了1394技術、ATM技術、以太網技術的優點,同時根據空間應用的特點,對故障檢測與時間確定性方面做了加強。它是目前在航天領域應用較廣泛的高速數據總線,方便高性能板載數據處理系統的構建、降低系統集成成本、提高數據處理系統和子系統之間的兼容性、方便不同航天任務中數據處理設備的復用。
2003年ESA正式通過的SpW標準規定協議鏈路初始化啟動速率為10 Mbps,這使得必須為SpW接口提供10 MHz的時鐘(DDR數據傳輸模式下為5 MHz)。在追求超低功耗、輸入接口時鐘改變等某些特殊的應用場景下,不能為該接口提供該指定速率的時鐘,直接降低初始化速率會導致鏈路無法成功建立連接[3]。如圖1是SpW協議編解碼器(Codec)結構框圖,文中基于實驗室開發的Codec IP核,通過對協議分析,提出一種改進方法,通過該方法可以在低于標準初始化速率(10 Mbps)甚至兩端初始化速率不同的情況下成功建立鏈路,最低初始化速率達2 Mbps。
SpW進行數據通信前要求先由鏈路節點(Codec)建立鏈路,節點主要由發送端,接收端和控制器三大子模塊組成,其原理框圖如圖1。數據通信時用戶將待發送數據暫存至發送緩存(TXFIFO),由發送端處理并轉化為符合鏈路要求的低電壓差分信號對(LVDS)經鏈路發送。接收端從鏈路接收LVDS信號,進行時鐘數據信號恢復,并解析數據存入接收緩存(RXFIFO),同時將鏈路數據接收狀態反饋給控制器。控制器根據定時器、接收端、發送端以及用戶外部輸入控制鏈路接收端和發送端的運行。

圖1 SpW編解碼器結構框圖
SpW鏈路共有6種狀態,其狀態轉換及相應的轉換條件如圖2所示。

圖2 SpW協議鏈路狀態機圖
完成鏈路的建立,兩端的節點需要交換NULL字符和FCT字符,鏈路完成建立后,兩端節點都進入Run狀態。根據協議狀態機,鏈路初始化的時候,接收方獲得字符的類型和接收時間、接收方對接收字符的處理以及超時延遲不符合要求都會導致鏈路建立失敗。
通常節點在鏈路建立時,有兩種啟動模式:主動模式和被動(Auto)模式。在主動模式時,節點在進入Ready狀態后會立即跳轉至Started狀態,同時向對方發送NULL字符嘗試建立鏈路。在被動模式時,節點在進入Ready狀態后要判斷Link_Enabled條件是否成立,若不滿足,則等待和接收對方字符,繼續判斷該條件是否滿足,直至發生超時或者鏈路接收錯誤。自動啟動功能使得系統可以實現鏈路一端等待另一端主動連接來建立鏈路,狀態機中的鏈路跳轉條件Link Enabled和RxErr分別表示鏈路的使能有效條件和接收錯誤條件,它們描述如下述兩式:

這里,Link Disabled、LinkStart和 AutoStart都是由用戶軟件或硬件設置的信號量,Link Disabled的置位將導致用戶鏈路禁止,LinkStart和AutoStart分別表示鏈路的主動啟動模式和被動啟動模式。
在應用中,鏈路兩端節點都可以被配置主動或者被動模式,如果鏈路兩端節點都配置為被動模式,則由于兩端都無法進入Started狀態完成第一次的NULL字符交換,故無法建立鏈路,這種情況比較簡單。鏈路在初始化及運行過程中,會進行鏈路斷開超時檢測,協議規定標準的超時計數值為850 ns,該值與鏈路最低信號速率的關系是:

鏈路最低信號速率的變化會影響該值,該機制在鏈路初始化的時候也會影響到鏈路是否能成功建立,在本例2 Mbps的情況下,可以保持該值不變。接收方在收到對方發來的第一個比特位后即開啟鏈路斷開檢測機制,由于實驗采用的Codec在接收1bit時間后判斷超時結果,考慮到一定的誤差,將超時值取為:

下面討論鏈路至少一端采用主動模式的情況,兩端節點在鏈路建立時等價,為方便說明假設SpW總線應用于衛星平臺和載荷之間數據傳輸的典型情況。平臺端固定采用主動模式,載荷端則分別采用主動模式或者被動模式。
載荷端為被動模式時,平臺端由Ready自動進入Started狀態主動發送NULLs字符。重啟時鏈路兩端節點按時間發生如圖3事件:

圖3 載荷端被動模式下鏈路初始化事件圖
圖中:
Tdis為鏈路斷開檢測所花費時間。
TA1、TA2、TB1、TB2分別為兩端 Codec內部數據NULL和FCT準備時間。
Ta、Tb為啟動時雙向鏈路上各傳送1比特時間(NULL字符為8比特,FCT字符為4比特)。
Tpa、Tpb為奇偶校驗所花費時間。
Tsyna、Tsynb為信號同步所花費時間。
Ttransa、Ttransb為狀態轉換所花費時間。
據上圖可知以下必要條件:

為取得最大值,在2 Mbps互聯時,Tb=Ta=Tbit_max。
TA1、TA2、TB1、TB2準備時間包括計算奇偶校驗值,對數據發送緩存存取操作等。
綜上所述代入:

在Started超時計數不變的情況下,2 Mbps互聯鏈路兩端的狀態轉換和數據準備時間要求不超過2.8 μs,這幾乎是不能實現的。要實現低速鏈路啟動,必須增加Started超時計數值。
載荷端為主動模式時,鏈路兩端都可以由Ready自動進入Started狀態主動發送NULLs字符,雙方交換NULL字符進入Connecting狀態不存在困難。兩端只要再接收到FCT字符,完成FCT字符交換,就能完成鏈路初始化。啟動時鏈路兩端節點按時間發生如下圖4事件:
圖中:

圖4 載荷端主動模式下鏈路初始化事件圖
Tdis為鏈路斷開檢測所花費時間。
TA1、TA2、TB1、TB2分別為兩端Codec內部數據NULL和FCT準備時間。
Ta、Tb為啟動時雙向鏈路上各傳送1比特時間。
Tpa、Tpb為奇偶校驗所花費時間。
Tsyna、Tsynb為信號同步所花費時間。
Ttransa、Ttransb為狀態轉換所花費時間。
據上圖可知以下必要條件:

將Tdis、TA1、Ta等代入上述兩式:

設協議規定的 6.4 μs、12.8 μs 超時值分別為t6_4和t12_8,即這里Tstarted=Tconnecting=t12_8,對于上述兩個必要條件是易于滿足的。不難發現鏈路在主動模式下比被動模式下對Tstarted和Tstarted要求更低,即SpW鏈路在載荷端主動模式下比被動模式下更容易建立鏈路。
以實驗室開發的IP核進行仿真驗證,固定一端(平臺端)為主動啟動模式,分別設置另一端(載荷端)為被動啟動模式和主動啟動模式。以低速率建立鏈路時,增加Started和Connecting超時值,并修改鏈路斷開檢測超時值,針對鏈路斷開檢測超時Tdis和協議原有的 6.4 μs、12.8 μs超時值t6_4和t12_8 進行的更改如下表1:

表1 鏈路時間參數變更表
仿真結果如下圖5和圖6,圖中反映了被動模式下鏈路兩端節點從ErrorReset狀態到Run狀態的初始化過程。結果表明鏈路兩端實現了低速率(2 Mbps)互連啟動,也可以不同的速率啟動,這里只展示了2 Mbps與2 Mbps和2 Mbps與10 Mbps互連啟動仿真結果,主動模式以及兩端節點其它速率組合情況類似,在此不再贅述。

圖5 自動模式下鏈路兩端均以2 Mbps啟動

圖6 自動模式下鏈路兩端分別以2 Mbps和10 Mbps啟動
SpW鏈路在低于協議規定的初始化速率下存在無法建立的情況。本文在文獻[3]的基礎上,提出的通過增加對標準規定的鏈路斷開超時檢測值和延長鏈路狀態機中標準12.8 μs超時計數值,經仿真驗證可以有效擴展SpW鏈路初始化建立速率的范圍,對工程應用有較強的指導意義。