本發(fā)明涉及通信技術(shù)領(lǐng)域,具體涉及一種基于fpga的srio光纖鏈路在線重鏈接的實(shí)現(xiàn)方法。
背景技術(shù):
srio為一種串行的rapidio技術(shù),rapidio技術(shù)是一種高性能、高可靠性、低時(shí)延、低引腳數(shù)且基于報(bào)文交換的高速互聯(lián)技術(shù),它包括并行rapidio和串行rapidio兩類技術(shù),并行接口主要面向高性能微處理器、網(wǎng)絡(luò)處理器與高性能背板的8位或16位并行鏈路的互連,其傳輸距離比較有限。而串行接口則一般以1x、2x或4x的方式實(shí)現(xiàn)高性能dsp、fpga、微處理器或與背板之間的高速串行互連,串行rapidio技術(shù)(srio)也因?yàn)閭鬏斁嚯x更長(zhǎng)、可靠性更高、引腳數(shù)較少的特點(diǎn)得到了更為廣泛的應(yīng)用。
fpga是一種可編程的邏輯器件,具有其他集成電路芯片所不具有的可編程靈活性,同時(shí)fpga有豐富的i/o引腳,開(kāi)發(fā)周期短,可靠性較高。xilinx公司的serialrapidioip核可以很方便的在fpga器件上實(shí)現(xiàn)srio的接口協(xié)議,其中,virtex-7系列器件支持的serialrapidiogen2v3.2版本ip核可以實(shí)現(xiàn)單通道最高6.25gbps的數(shù)據(jù)傳輸。serialrapidioip核底層硬件基于fpga的gtx收發(fā)器,支持1x、2x和4x多種位寬的接口方式,在virtex-7系列器件中,srioip核的實(shí)現(xiàn)使用最新的axi4接口協(xié)議。完整的serialrapidio端點(diǎn)ip核實(shí)現(xiàn)方案共包括四個(gè)部分:serialrapidio物理層協(xié)議ip核(phy)、邏輯(i/o)和傳輸層ip核(log)、數(shù)據(jù)緩沖ip核以及控制時(shí)鐘、復(fù)位和配置信息的相關(guān)邏輯。
雷達(dá)與記錄儀之間的光纖鏈路存在一個(gè)建立的過(guò)程,當(dāng)雷達(dá)和記錄儀都已經(jīng)上電,再將兩者之間的光纖st或lc接口接上時(shí),若srio模塊不做有效復(fù)位會(huì)導(dǎo)致鏈路建立的失敗。此外,若srio光纖鏈路建立后,因某些突發(fā)原因?qū)е骆溌窋嚅_(kāi),若不在fpga中監(jiān)測(cè)srio光纖鏈路的狀態(tài)并做有效復(fù)位,重新建立鏈路,也會(huì)導(dǎo)致數(shù)據(jù)傳輸失敗。
技術(shù)實(shí)現(xiàn)要素:
為了解決上述問(wèn)題,本發(fā)明提供了一種基于fpga的srio光纖鏈路在線重鏈接的實(shí)現(xiàn)方法。目的是監(jiān)測(cè)任意時(shí)刻雷達(dá)與記錄儀之間光纖鏈路的通斷,若鏈路斷開(kāi),則控制fpga邏輯做鏈路復(fù)位來(lái)嘗試重新建立光纖鏈路。
該實(shí)現(xiàn)方法主要包括以下步驟:
步驟一、周期內(nèi)獲取srio鏈路上port_initialized變量值與link_initialized變量值;
步驟二、若port_initialized變量處于上升沿或者link_initialized變量值為0,則繼續(xù)執(zhí)行步驟三,否則,返回步驟一,在下一個(gè)周期內(nèi)重新取值,所述上升沿是指連續(xù)周期內(nèi)port_initialized變量值處于上升趨勢(shì);
步驟三、啟動(dòng)計(jì)時(shí)器,計(jì)時(shí)4秒;
步驟四、啟動(dòng)復(fù)位指令,復(fù)位有效保持2秒;
步驟五、復(fù)位結(jié)束后,等待2秒,之后返回步驟一,重復(fù)執(zhí)行上述過(guò)程。
優(yōu)選的是,所述步驟一中,周期的時(shí)鐘頻率為200mhz。
優(yōu)選的是,在所述步驟二中,所述判斷port_initialized變量處于上升沿包括:第一次檢測(cè)port_initialized變量值;延時(shí)一個(gè)周期后第二次檢測(cè)port_initialized變量值;第二次檢測(cè)值大于第一次檢測(cè)值。
通過(guò)上述方式,以時(shí)鐘周期為最小時(shí)間間隔,持續(xù)進(jìn)行鏈路中兩個(gè)變量的檢測(cè),以判斷srio鏈路是否需要重連,并在需要進(jìn)行srio鏈路重連時(shí),啟動(dòng)重連步驟,實(shí)現(xiàn)鏈路復(fù)位來(lái)嘗試重新建立光纖鏈路。
本發(fā)明可應(yīng)用于雷達(dá)與記錄儀之間基于fpga的srio光纖鏈路的在線重鏈接,并可推廣到任何基于fpga的srio鏈路在線重鏈接。
附圖說(shuō)明
圖1為本發(fā)明基于fpga的srio光纖鏈路在線重鏈接的實(shí)現(xiàn)方法的一優(yōu)選實(shí)施例的流程圖。
圖2為雷達(dá)信號(hào)處理板與記錄儀之間的srio光纖鏈路結(jié)構(gòu)框圖。
具體實(shí)施例
為使本發(fā)明實(shí)施的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行更加詳細(xì)的描述。在附圖中,自始至終相同或類似的標(biāo)號(hào)表示相同或類似的元件或具有相同或類似功能的元件。所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。下面通過(guò)參考附圖描述的實(shí)施例是示例性的,旨在用于解釋本發(fā)明,而不能理解為對(duì)本發(fā)明的限制?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。下面結(jié)合附圖對(duì)本發(fā)明的實(shí)施例進(jìn)行詳細(xì)說(shuō)明。
本發(fā)明基于fpga的srio光纖鏈路在線重鏈接的實(shí)現(xiàn)方法,目的是監(jiān)測(cè)任意時(shí)刻雷達(dá)與記錄儀之間光纖鏈路的通斷,不管何種原因造成的鏈路斷開(kāi),都控制fpga邏輯做鏈路復(fù)位來(lái)嘗試重新建立光纖鏈路。
rapidio互連架構(gòu)是一種點(diǎn)對(duì)點(diǎn)的包交換技術(shù),支持芯片間以及板間的互連與通信,其數(shù)據(jù)傳輸速率能夠達(dá)到1gbps至60gbps。rapidio互聯(lián)體系結(jié)構(gòu)共分為三層,分別為邏輯層、傳輸層和物理層。邏輯層規(guī)范處于最高層,定義了全部操作協(xié)議和包格式,為端點(diǎn)器件發(fā)起和完成事務(wù)提供必要的信息;傳輸層規(guī)范處于協(xié)議層次的中間層,該層定義了rapidio的地址空間、尋址機(jī)制和用于包交換的路由信息;物理層規(guī)范處于最底層,內(nèi)容包括器件級(jí)接口的細(xì)節(jié),如包傳輸機(jī)制、流量控制、電氣參數(shù)以及低級(jí)錯(cuò)誤管理。
如圖2所示,為本發(fā)明針對(duì)的雷達(dá)信號(hào)處理板與記錄儀之間的srio光纖鏈路結(jié)構(gòu)框圖。在雷達(dá)信號(hào)處理領(lǐng)域,數(shù)據(jù)在雷達(dá)信號(hào)處理板與記錄儀間通常是通過(guò)光纖鏈路傳輸?shù)摹J紫?,?shù)據(jù)在雷達(dá)信號(hào)處理板上由fpga按srio協(xié)議打包送往四路并行光收發(fā)一體模塊,光模塊將電信號(hào)轉(zhuǎn)換成光信號(hào)后送到光纖鏈路,光纖與記錄儀之間通過(guò)四路st或lc收發(fā)接口連接,數(shù)據(jù)由此經(jīng)光纖傳輸?shù)接涗泝x上,再經(jīng)過(guò)逆變換轉(zhuǎn)換成數(shù)字信號(hào)并存儲(chǔ)下來(lái)。
調(diào)用fpga的srioip核,在鏈路建立時(shí),有如下特征:port_initialized=1且link_initialized=1,(port_initialized為端口初始化狀態(tài),link_initialized為鏈路初始化狀態(tài))若鏈路斷開(kāi),則port_initialized上下跳變或link_initialized=0(例如圖2中右側(cè)光纖st或lc接口與記錄儀接口斷開(kāi),會(huì)導(dǎo)致端口初始化上下跳變,鏈路初始化link_initialized為0,即使接口重新連接,該狀態(tài)也會(huì)保持,若不在fpga中監(jiān)測(cè)srio光纖鏈路的斷開(kāi)狀態(tài)并做有效復(fù)位,重新建立鏈路,也會(huì)導(dǎo)致數(shù)據(jù)傳輸失敗),利用該特征,本技術(shù)在fpga的邏輯算法上對(duì)這兩個(gè)信號(hào)進(jìn)行檢測(cè),將port_initialized變量處于上升沿或者link_initialized變量值為0作為srio鏈路復(fù)位的判決條件,從而進(jìn)行srio鏈路在線重鏈接,如圖1所示,具體包括以下步驟:
步驟一、周期內(nèi)獲取srio鏈路上port_initialized變量值與link_initialized變量值;
步驟二、若port_initialized變量處于上升沿或者link_initialized變量值為0,則繼續(xù)執(zhí)行步驟三,否則,返回步驟一,在下一個(gè)周期內(nèi)重新取值,所述上升沿是指連續(xù)周期內(nèi)port_initialized變量值處于上升趨勢(shì);
步驟三、啟動(dòng)計(jì)時(shí)器,計(jì)時(shí)4秒;
步驟四、啟動(dòng)復(fù)位指令,復(fù)位有效保持2秒;
步驟五、復(fù)位結(jié)束后,等待2秒,之后返回步驟一,重復(fù)執(zhí)行上述過(guò)程。
本實(shí)施例中,在所述步驟一中,每個(gè)時(shí)鐘周期檢測(cè)一次,時(shí)鐘頻率為200mhz。
本實(shí)施例中,在所述步驟二中,所述判斷port_initialized變量處于上升沿包括:第一次檢測(cè)port_initialized變量值;延時(shí)一個(gè)周期后第二次檢測(cè)port_initialized變量值;第二次檢測(cè)值大于第一次檢測(cè)值。例如,步驟一至步驟二可以修改為:將srio的port_initialized延時(shí)1個(gè)時(shí)鐘周期,進(jìn)去初始狀態(tài);初始狀態(tài),計(jì)數(shù)器清零,復(fù)位信號(hào)置0,進(jìn)入下一步;判斷狀態(tài),利用port_initialized的延時(shí)狀態(tài)檢測(cè)其上升沿或者檢測(cè)srio的link_initialized=0,若條件為真,進(jìn)入下一步,否則,繼續(xù)監(jiān)測(cè)port_initialized的上升沿或link_initialized=0。
本技術(shù)方案應(yīng)考慮到srio鏈路重新建立所需的時(shí)間,所以復(fù)位信號(hào)恢復(fù)為0,即失效后,應(yīng)保持2秒再進(jìn)入port_initialized和link_initialized信號(hào)的下一次檢測(cè)判斷狀態(tài)。該重鏈接實(shí)現(xiàn)方法耗時(shí)8秒,包括等待狀態(tài)、復(fù)位狀態(tài)與保持狀態(tài),其中復(fù)位信號(hào)置1為有效,置0為無(wú)效。具體參考圖1,等待狀態(tài),計(jì)數(shù)器計(jì)數(shù)4秒后,復(fù)位信號(hào)置1,進(jìn)入下一步;復(fù)位狀態(tài),計(jì)數(shù)器計(jì)數(shù)2秒后,復(fù)位信號(hào)置0,進(jìn)入下一步;保持狀態(tài),計(jì)數(shù)器計(jì)數(shù)2秒后,保證復(fù)位完成,鏈路重新建立,跳回兩個(gè)變量的監(jiān)測(cè)步驟,繼續(xù)監(jiān)測(cè)鏈路狀態(tài)。
最后需要指出的是:以上實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案,而非對(duì)其限制。盡管參照前述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的精神和范圍。