吳 衛(wèi),曹元將
(中國船舶集團(tuán)有限公司第八研究院,南京 211153)
隨著各種硬件設(shè)備的性能指標(biāo)不斷提升,其接口數(shù)據(jù)傳輸設(shè)計(jì)也越來越復(fù)雜,因此硬件設(shè)備數(shù)據(jù)傳輸接口的故障檢測(cè)變得越來越重要,采用先進(jìn)的故障檢測(cè)技術(shù)能大大提高硬件設(shè)備的維修效率和故障隔離率,一旦正在工作的數(shù)據(jù)傳輸通道出現(xiàn)故障,系統(tǒng)BIT能夠立即檢測(cè)到該故障,快速進(jìn)行故障定位,縮短了維修時(shí)間,因此硬件設(shè)備數(shù)據(jù)傳輸接口的良好可測(cè)試性對(duì)于獲得高任務(wù)可靠性具有重要意義[1-3]。
本系統(tǒng)硬件平臺(tái)主要由同在一個(gè)VPX機(jī)箱中的多塊FPGA處理板和一塊故檢接口板組成,各FPGA處理板與故檢接口板通過背板的I2C總線連接。FPGA處理板搭載一片F(xiàn)PGA芯片和ARM芯片;故檢接口板搭載一片ARM芯片。數(shù)據(jù)傳輸接口故障檢驗(yàn)工作流程如圖1所示。各FPGA處理板上的FPGA芯片對(duì)傳輸接口進(jìn)行故障檢測(cè),并將故檢結(jié)果通過UART串口送往本板ARM芯片,各FPGA處理板上的ARM芯片收到故檢信息后都通過背板的I2C總線送往故檢接口板上的ARM芯片,再由故檢接口板上的ARM芯片通過千兆網(wǎng)將故檢信息傳輸?shù)缴衔粰C(jī)進(jìn)行后續(xù)匯總處理及故障顯示。
圖1 數(shù)據(jù)傳輸接口故障檢測(cè)數(shù)據(jù)流示意
FPGA硬件接口主要有RS422、RocketIO以及RapidIO等接口形式。
RS422信號(hào)有效性檢測(cè)只能結(jié)合具體使用功能進(jìn)行接口有效性監(jiān)測(cè),這里針對(duì)RS422傳輸匿影通道控制脈沖功能進(jìn)行故障檢測(cè)設(shè)計(jì)。
在匿影功能中,通道高電平有效比例過高通常會(huì)過度抑制輸出,或通道沒有高電平信號(hào)導(dǎo)致電磁兼容屏蔽功能失效,本文采用定時(shí)統(tǒng)計(jì)高電平點(diǎn)數(shù)的方式有效監(jiān)測(cè)RS422。
2.1.1 統(tǒng)計(jì)計(jì)算方法
統(tǒng)計(jì)T時(shí)間內(nèi)RS422接口中高電平點(diǎn)數(shù),即根據(jù)板卡時(shí)鐘讀取T時(shí)間內(nèi)高電平次數(shù)總和。在監(jiān)測(cè)周期到來時(shí),根據(jù)占空比門限、計(jì)數(shù)器是否溢出判斷RS422接口是否異常,流程如圖2所示。
圖2 RS422接口異常判斷軟件流程
高電平次數(shù)總和采用26位計(jì)數(shù)器,在每個(gè)時(shí)鐘下時(shí)間計(jì)數(shù)器加1:當(dāng)高電平時(shí),高電平計(jì)數(shù)器加1;當(dāng)時(shí)間計(jì)數(shù)器為0x3FFFFFF時(shí),比較高電平計(jì)數(shù)值的高8位與占空比門限,以此判定通路是否正常,并且利用功能監(jiān)測(cè)輸出高電平計(jì)數(shù)值的高8位。
這時(shí)在50 M時(shí)鐘下,時(shí)間計(jì)數(shù)器從0計(jì)到0x3FFFFFF的時(shí)間約為1.34 s。高8位輸出有效值在[0,255],量綱為0.004,即輸出8位信息表示高電平有效占比,占比可從0到1,按照0.004的間隔精度表示。
2.1.2 參數(shù)化設(shè)計(jì)
可配置參數(shù)建議:高電平計(jì)數(shù)門限上限、高電平計(jì)數(shù)門限下限和輸出位數(shù)(默認(rèn)為8位,可以根據(jù)實(shí)際情況靈活修改)。
當(dāng)板卡啟動(dòng)初始化時(shí),必須配置占空比上限、占空比下限和輸出位數(shù)3個(gè)變量。
默認(rèn)高電平計(jì)數(shù)門限上限204(對(duì)應(yīng)占空比0.8),高電平計(jì)數(shù)門限下限0(對(duì)應(yīng)占空比0);當(dāng)高電平計(jì)數(shù)高8位大于204或小于0時(shí),輸出RS422傳輸異常。計(jì)數(shù)門限默認(rèn)值可以根據(jù)實(shí)際情況靈活修改。
2.1.3 監(jiān)測(cè)輸出信息
根據(jù)系統(tǒng)應(yīng)用情況,定義多個(gè)字節(jié)用于在RS422接口監(jiān)測(cè)結(jié)果輸出。每個(gè)字節(jié)最多可以表示8路RS422狀態(tài),每路RS422信息監(jiān)測(cè)結(jié)果按位定義輸出,1表示RS422穩(wěn)定,0表示RS422故障。該狀態(tài)用ARM監(jiān)測(cè)輸出。
通過檢測(cè)rxnotintable的狀態(tài)變化次數(shù)判定當(dāng)前光纖鏈路狀態(tài)。當(dāng)光纖鏈路穩(wěn)定時(shí),valid=1,表明當(dāng)前接收數(shù)據(jù)有效;當(dāng)光纖鏈路不穩(wěn)定時(shí),valid=0,表明當(dāng)前接收數(shù)據(jù)可能存在誤碼,建議丟棄當(dāng)前數(shù)據(jù)包。
光纖鏈路監(jiān)測(cè)是在監(jiān)測(cè)周期內(nèi)(秒級(jí))統(tǒng)計(jì)valid狀態(tài)在多次時(shí)鐘周期下的變化次數(shù),共有3種狀態(tài):
當(dāng)鏈路不通時(shí),變化次數(shù)為0,且最近時(shí)鐘周期下valid狀態(tài)為0;
當(dāng)鏈路不穩(wěn)定時(shí),變化次數(shù)>0,最近時(shí)鐘周期下valid狀態(tài)不確定;
當(dāng)鏈路穩(wěn)定時(shí),變化次數(shù)=0,最近時(shí)鐘周期下valid狀態(tài)為1。
2.2.1 統(tǒng)計(jì)計(jì)算方法
在每個(gè)時(shí)鐘周期下,RocketIO鏈路狀態(tài)按圖3狀態(tài)機(jī)執(zhí)行。
圖3 RocketIO鏈路異常判斷狀態(tài)機(jī)
在光纖監(jiān)測(cè)周期內(nèi)統(tǒng)計(jì)valid變化次數(shù)。在監(jiān)測(cè)結(jié)果發(fā)送時(shí)鐘周期,獲取valid變化次數(shù)及當(dāng)前valid狀態(tài),判斷光纖鏈路狀態(tài)并輸出,具體如圖4所示。
圖4 RocketIO鏈路異常判斷軟件流程
2.2.2 參數(shù)化設(shè)計(jì)
光纖狀態(tài)檢測(cè)涉及的參數(shù)包括:
(1)監(jiān)測(cè)時(shí)間間隔,建議1 s;
(2)在監(jiān)測(cè)時(shí)間間隔內(nèi),依據(jù)valid狀態(tài)變化次數(shù)判定光纖接口不穩(wěn)定的門限值,通常設(shè)置為0,即valid有變化就判定為鏈路不穩(wěn)定;該門限參數(shù)越大,表示對(duì)鏈路不穩(wěn)定的容忍度越大;
(3)在IDLE狀態(tài)中,監(jiān)測(cè)rxnotintable狀態(tài)的時(shí)鐘計(jì)數(shù)器門限,建議256或512;該參數(shù)影響傳輸鏈路從不穩(wěn)定到穩(wěn)定狀態(tài)轉(zhuǎn)換的嚴(yán)格程度,數(shù)值越大,表明對(duì)鏈路不穩(wěn)定的容忍度越差,丟棄的數(shù)據(jù)越多。在IDLE狀態(tài)下,通常后續(xù)處理的數(shù)據(jù)不進(jìn)行輸出,因此這個(gè)門限對(duì)應(yīng)的時(shí)間通常不超過數(shù)據(jù)包周期;
(4)SYNC1狀態(tài)轉(zhuǎn)IDLE狀態(tài),監(jiān)測(cè)rxnotintable=1統(tǒng)計(jì)次數(shù)門限,建議3~5之間;該參數(shù)影響傳輸鏈路從穩(wěn)定到不穩(wěn)定狀態(tài)轉(zhuǎn)換的嚴(yán)格程度,數(shù)值越大,表明對(duì)鏈路不穩(wěn)定的容忍度越好,鏈路導(dǎo)致的異常數(shù)據(jù)不會(huì)對(duì)系統(tǒng)影響太大;
(5)SYNC1狀態(tài)轉(zhuǎn)SYNC狀態(tài),監(jiān)測(cè)狀態(tài)的時(shí)鐘計(jì)數(shù)器門限,建議256或512。
注意事項(xiàng):建議同時(shí)長時(shí)間(連續(xù)開機(jī)大于1 h)統(tǒng)計(jì)rxnotintable=1的次數(shù),該次數(shù)用來表征光纖總體的穩(wěn)定情況,例如通常情況下連續(xù)開機(jī)12 h,rxnotintable=1的總次數(shù)為50左右,若出現(xiàn)該次數(shù)統(tǒng)計(jì)為500,發(fā)生明顯變化,說明鏈路狀態(tài)有變化,須關(guān)注,這一點(diǎn)可作為健康管理中的監(jiān)測(cè)項(xiàng)目。
2.2.3 監(jiān)測(cè)輸出信息
根據(jù)系統(tǒng)應(yīng)用情況,定義多個(gè)字節(jié)用來在光纖接口監(jiān)測(cè)結(jié)果輸出,每個(gè)字節(jié)最多可以表示8路光纖狀態(tài),每路光纖信息監(jiān)測(cè)結(jié)果按位定義輸出,1表示光纖穩(wěn)定,0表示光纖故障。該狀態(tài)用ARM監(jiān)測(cè)輸出。
針對(duì)詳細(xì)的接口監(jiān)測(cè)信息、每路光纖valid變化次數(shù)及當(dāng)前時(shí)鐘周期下valid狀態(tài),用4位輸出狀態(tài)信息。輸出4位信息填充方式如圖5所示(當(dāng)狀態(tài)次數(shù)變化統(tǒng)計(jì)值大于7時(shí),低3位填寫7)。
圖5 4位信息填充方式
在RapidIO初始化及通信過程中對(duì)3個(gè)狀態(tài)量進(jìn)行監(jiān)測(cè),以判斷鏈路穩(wěn)定性情況:
(1)port_initialized,鏈路兩端物理鏈路是否通,port_initialized=1表示成功;
(2)link_initialized,鏈路兩端通信協(xié)議是否一致,link_initialized=1表示協(xié)議一致;
(3)port_error,在通信過程中對(duì)誤碼、丟包等信息綜合后的判定狀態(tài),port_error=1表示通訊過程中的鏈路故障。
在之前關(guān)于RapidIO鏈路的故障排查中,當(dāng)初始化正常后,通信過程中port_initialized和link_initialized一般不會(huì)出現(xiàn)問題,但建議在通訊過程中保持監(jiān)測(cè),并根據(jù)狀態(tài)判斷鏈路穩(wěn)定性。
2.3.1 統(tǒng)計(jì)計(jì)算方法
在監(jiān)測(cè)時(shí)段內(nèi),根據(jù)RapidIO內(nèi)核中port_initialized、link_initialized和port_error的狀態(tài)統(tǒng)計(jì),實(shí)現(xiàn)RapidIO鏈路監(jiān)測(cè)。
當(dāng)傳輸鏈路穩(wěn)定時(shí),在秒級(jí)宏觀統(tǒng)計(jì)下,port_initialized、link_initialized和port_error狀態(tài)變化次數(shù)為0,且當(dāng)前時(shí)鐘周期下port_initialized、link_initialized狀態(tài)為1,port_error狀態(tài)為0。
其他均為鏈路不穩(wěn)定。
在RapidIO監(jiān)測(cè)周期內(nèi),統(tǒng)計(jì)port_initialized、link_initialized和port_error變化次數(shù)。在達(dá)到監(jiān)測(cè)周期時(shí),根據(jù)狀態(tài)變化次數(shù)及當(dāng)前狀態(tài)判別鏈路穩(wěn)定性,并發(fā)送監(jiān)測(cè)結(jié)果。具體流程如圖6所示。
圖6 RapidIO鏈路監(jiān)測(cè)軟件流程
RapidIO鏈路穩(wěn)定性判斷(流程如圖7所示):
圖7 RapidIO鏈路穩(wěn)定性判斷軟件流程
鏈路穩(wěn)定:port_initialized、link_initialized和port_error狀態(tài)變化次數(shù)為0,且最近時(shí)鐘周期下port_ini-tialized和link_initialized狀態(tài)為1,port_error狀態(tài)為0;鏈路不穩(wěn)定:不滿足上述RapidIO鏈路穩(wěn)定判定條件的,滿足下面任一條件,即為鏈路不穩(wěn)定:
(1)port_initialized狀態(tài)變化次數(shù)大于0;
(2)link_initialized狀態(tài)變化次數(shù)大于0;
(3)port_error狀態(tài)變化次數(shù)大于0;
(4)port_initialized狀態(tài)變化次數(shù)都為0,且最近時(shí)鐘周期下port_initialized狀態(tài)為0;
(5)link_initialized狀態(tài)變化次數(shù)都為0,且最近時(shí)鐘周期下link_initialized狀態(tài)為0;
(6)port_error狀態(tài)變化次數(shù)都為0,且最近時(shí)鐘周期下port_error狀態(tài)為1。
2.3.2 參數(shù)化設(shè)計(jì)
RapidIO狀態(tài)檢測(cè)涉及的參數(shù)包括監(jiān)測(cè)時(shí)間間隔,建議1 s。
在監(jiān)測(cè)時(shí)間間隔內(nèi),port_initialized、link_initialized和port_error變化次數(shù)門限不建議參數(shù)化,通常狀態(tài)發(fā)生變化就可以判斷為鏈路不穩(wěn)定。
2.3.3 監(jiān)測(cè)輸出信息
根據(jù)系統(tǒng)應(yīng)用情況,定義多個(gè)字節(jié)用來監(jiān)測(cè)RapidIO接口,每個(gè)字節(jié)最多可以表示8路RapidIO狀態(tài),每路RapidIO信息監(jiān)測(cè)結(jié)果按位定義輸出,1表示RapidIO接口穩(wěn)定,0表示RapidIO接口故障。該狀態(tài)用ARM監(jiān)測(cè)輸出。
port_initialized、link_initialized和port_error變化次數(shù)及當(dāng)前時(shí)鐘周期下的狀態(tài)用狀態(tài)監(jiān)測(cè)通道輸出。每路RapidIO接口用兩個(gè)字節(jié)輸出詳細(xì)狀態(tài)檢測(cè)信息,port_initialized、link_initialized和port_error分別用4位輸出狀態(tài)信息,剩余4位保留。輸出4位信息填充方式如圖5所示(當(dāng)狀態(tài)次數(shù)變化統(tǒng)計(jì)值大于7時(shí),低3位填寫7)。
隨著硬件設(shè)備日益復(fù)雜和用戶對(duì)設(shè)備全周期綜合保障需求的提高,硬件設(shè)備數(shù)據(jù)傳輸接口故障檢測(cè)變得越來越重要。本文根據(jù)目前硬件平臺(tái)故障檢測(cè)技術(shù)發(fā)展?fàn)顩r,給出了數(shù)據(jù)傳輸接口的故障檢測(cè)設(shè)計(jì)方法,該設(shè)計(jì)能夠在各硬件平臺(tái)中實(shí)現(xiàn),并為設(shè)備故障定位,為維修保障提供有力的技術(shù)支撐。