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

圖1 SpW編解碼器結(jié)構(gòu)框圖
SpW鏈路共有6種狀態(tài),其狀態(tài)轉(zhuǎn)換及相應(yīng)的轉(zhuǎn)換條件如圖2所示。

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

這里,Link Disabled、LinkStart和 AutoStart都是由用戶(hù)軟件或硬件設(shè)置的信號(hào)量,Link Disabled的置位將導(dǎo)致用戶(hù)鏈路禁止,LinkStart和AutoStart分別表示鏈路的主動(dòng)啟動(dòng)模式和被動(dòng)啟動(dòng)模式。
在應(yīng)用中,鏈路兩端節(jié)點(diǎn)都可以被配置主動(dòng)或者被動(dòng)模式,如果鏈路兩端節(jié)點(diǎn)都配置為被動(dòng)模式,則由于兩端都無(wú)法進(jìn)入Started狀態(tài)完成第一次的NULL字符交換,故無(wú)法建立鏈路,這種情況比較簡(jiǎn)單。鏈路在初始化及運(yùn)行過(guò)程中,會(huì)進(jìn)行鏈路斷開(kāi)超時(shí)檢測(cè),協(xié)議規(guī)定標(biāo)準(zhǔn)的超時(shí)計(jì)數(shù)值為850 ns,該值與鏈路最低信號(hào)速率的關(guān)系是:

鏈路最低信號(hào)速率的變化會(huì)影響該值,該機(jī)制在鏈路初始化的時(shí)候也會(huì)影響到鏈路是否能成功建立,在本例2 Mbps的情況下,可以保持該值不變。接收方在收到對(duì)方發(fā)來(lái)的第一個(gè)比特位后即開(kāi)啟鏈路斷開(kāi)檢測(cè)機(jī)制,由于實(shí)驗(yàn)采用的Codec在接收1bit時(shí)間后判斷超時(shí)結(jié)果,考慮到一定的誤差,將超時(shí)值取為:

下面討論鏈路至少一端采用主動(dòng)模式的情況,兩端節(jié)點(diǎn)在鏈路建立時(shí)等價(jià),為方便說(shuō)明假設(shè)SpW總線(xiàn)應(yīng)用于衛(wèi)星平臺(tái)和載荷之間數(shù)據(jù)傳輸?shù)牡湫颓闆r。平臺(tái)端固定采用主動(dòng)模式,載荷端則分別采用主動(dòng)模式或者被動(dòng)模式。
載荷端為被動(dòng)模式時(shí),平臺(tái)端由Ready自動(dòng)進(jìn)入Started狀態(tài)主動(dòng)發(fā)送NULLs字符。重啟時(shí)鏈路兩端節(jié)點(diǎn)按時(shí)間發(fā)生如圖3事件:

圖3 載荷端被動(dòng)模式下鏈路初始化事件圖
圖中:
Tdis為鏈路斷開(kāi)檢測(cè)所花費(fèi)時(shí)間。
TA1、TA2、TB1、TB2分別為兩端 Codec內(nèi)部數(shù)據(jù)NULL和FCT準(zhǔn)備時(shí)間。
Ta、Tb為啟動(dòng)時(shí)雙向鏈路上各傳送1比特時(shí)間(NULL字符為8比特,F(xiàn)CT字符為4比特)。
Tpa、Tpb為奇偶校驗(yàn)所花費(fèi)時(shí)間。
Tsyna、Tsynb為信號(hào)同步所花費(fèi)時(shí)間。
Ttransa、Ttransb為狀態(tài)轉(zhuǎn)換所花費(fèi)時(shí)間。
據(jù)上圖可知以下必要條件:

為取得最大值,在2 Mbps互聯(lián)時(shí),Tb=Ta=Tbit_max。
TA1、TA2、TB1、TB2準(zhǔn)備時(shí)間包括計(jì)算奇偶校驗(yàn)值,對(duì)數(shù)據(jù)發(fā)送緩存存取操作等。
綜上所述代入:

在Started超時(shí)計(jì)數(shù)不變的情況下,2 Mbps互聯(lián)鏈路兩端的狀態(tài)轉(zhuǎn)換和數(shù)據(jù)準(zhǔn)備時(shí)間要求不超過(guò)2.8 μs,這幾乎是不能實(shí)現(xiàn)的。要實(shí)現(xiàn)低速鏈路啟動(dòng),必須增加Started超時(shí)計(jì)數(shù)值。
載荷端為主動(dòng)模式時(shí),鏈路兩端都可以由Ready自動(dòng)進(jìn)入Started狀態(tài)主動(dòng)發(fā)送NULLs字符,雙方交換NULL字符進(jìn)入Connecting狀態(tài)不存在困難。兩端只要再接收到FCT字符,完成FCT字符交換,就能完成鏈路初始化。啟動(dòng)時(shí)鏈路兩端節(jié)點(diǎn)按時(shí)間發(fā)生如下圖4事件:
圖中:

圖4 載荷端主動(dòng)模式下鏈路初始化事件圖
Tdis為鏈路斷開(kāi)檢測(cè)所花費(fèi)時(shí)間。
TA1、TA2、TB1、TB2分別為兩端Codec內(nèi)部數(shù)據(jù)NULL和FCT準(zhǔn)備時(shí)間。
Ta、Tb為啟動(dòng)時(shí)雙向鏈路上各傳送1比特時(shí)間。
Tpa、Tpb為奇偶校驗(yàn)所花費(fèi)時(shí)間。
Tsyna、Tsynb為信號(hào)同步所花費(fèi)時(shí)間。
Ttransa、Ttransb為狀態(tài)轉(zhuǎn)換所花費(fèi)時(shí)間。
據(jù)上圖可知以下必要條件:

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

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

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

圖5 自動(dòng)模式下鏈路兩端均以2 Mbps啟動(dòng)

圖6 自動(dòng)模式下鏈路兩端分別以2 Mbps和10 Mbps啟動(dòng)
SpW鏈路在低于協(xié)議規(guī)定的初始化速率下存在無(wú)法建立的情況。本文在文獻(xiàn)[3]的基礎(chǔ)上,提出的通過(guò)增加對(duì)標(biāo)準(zhǔn)規(guī)定的鏈路斷開(kāi)超時(shí)檢測(cè)值和延長(zhǎng)鏈路狀態(tài)機(jī)中標(biāo)準(zhǔn)12.8 μs超時(shí)計(jì)數(shù)值,經(jīng)仿真驗(yàn)證可以有效擴(kuò)展SpW鏈路初始化建立速率的范圍,對(duì)工程應(yīng)用有較強(qiáng)的指導(dǎo)意義。