??? 摘? 要: 提出一種基于FPGA的動態相位調整實現方案。在高速數據傳輸接口中,由于數據窗縮小以及傳輸路徑不一致,造成數據和時鐘信號在FPGA的接收端發生位偏移和字偏移。動態相位調整技術根據當前各數據線物理狀態,對各信號線動態進行去偏移操作,克服了靜態相位調整中參數不可再調的缺點,使接口不斷適應外部環境的變化,從而保證數據的可靠傳輸。?
????關鍵詞: FPGA;動態相位調整;位偏移;字偏移;靜態相位調整
?
??? 隨著單線傳輸速率不斷接近于1 Gb/s,使每位所占的時間窗不斷減小,導致采樣時鐘對信號線的采樣點很難在其有效區間進行準確采樣;再加上傳輸路徑的不同,各數據線和采樣時鐘到達接收端的延遲時間不能保證完全一致,從而帶來了各信號線之間的位偏移(Bit Skew)和字偏移(Word Skew)[1],如圖1所示。位偏移為采樣時鐘沿不在各數據窗口的中心位置采樣,可能會導致數據采樣保持時間不夠長,易使bit位發生瞬間突變,從而導致接收的數據不穩定;字偏移是指采樣接收后的各數據信號之間不同步,使得同時在發送端發送的數據在接收端卻不能同一時刻被采樣,導致接收的數據無效。?
?
?
??? 靜態相位調整SPA(Static Phase Alignment)通過匹配時鐘線和數據線的長度[2],使各信號在其傳輸線上延時相等。SPA過程將耗費大量勞動和時間,而且其設定的參數靜態只針對板卡當前的物理狀態,不能適應外部環境的變化。采用動態相位調整DPA(Dynamic Phase Alignment)技術[3],則根據當前各信號線物理狀態,每次系統上電后,自動對各信號線進行去偏移操作,從而使相位調整的參數適合當前物理狀態,保證了相位調整的時效性。所以,DPA技術能夠使通信接口不斷適應外部環境的變化,避免由于相位偏移而導致的數據采樣錯誤,從而保證了數據的可靠傳輸。?
1 DPA在FPGA上實現?
??? 為保證接送端可靠并有效接收數據,用于去偏移的DPA設計方案必須具有消除位偏移和字偏移的功能。在DPA過程中,發送端不停地發送訓練序列,而接收端首先對承載各數據的傳輸線進行位校正,利用PFGA內部的IDELAY功能,對各個數據線進行不同程度的精確線延遲操作,使數據窗的中心位置都正對著采樣時鐘的邊沿;在完成位調整的基礎上,接收端以bit為基本單位,利用BITSLIP功能分別調整各數據線解串后的并行數據,使并行輸出數據都調整到預先設定的同步字模式,從而實現各數據通道接收數據同步。在SPI4-4.2接口中[4],其訓練序列定為“00000000001111111111”,其同步字為“0011”。?
1.1 ISERDES核介紹?
??? 在接口設計中采用了Xilinx 公司的Xc4vlx160 FPGA[5],在FPGA間的收發雙方利用16個外部差分管腳進行器件間高速傳輸。每個輸出管腳都在FPGA內部對應一個并串轉換(OSERDES)核,該核內有倍頻電路以及并串轉換功能,將內部的并行數據串化后送到發送端的外部輸出管腳。?
??? 接收端的每個輸入管腳在FPGA內部都對應一個串并轉換核(ISERDES),在其內部分別嵌入IDELAY線延遲核和BITSLIP位偏移核,如圖2所示。IDELAY線延遲核將串行輸入數據在其內部進行精確延遲,提供可調的64級抽頭線延遲功能,對應的最大延遲時間為5 ns,則Bit alignment提供的最小延遲顆粒度為78.125 ps,其初始化值設為零延遲。IDELAY線延遲核提供dlyce和dlyinc兩個輸入控制信號。當dlyce輸入為高電平時,表明IDELAY處于工作狀態,此時dlyinc每置一周期的高電平,信號線的延遲就增加一級;而dlyinc每置一周期的低電平,信號線的延遲就減少一級。?
?
?
??? BITSLIP字偏移核內部提供串并轉換和位調整功能,每個并串轉換器的最大并行輸出寬度為6,若需要更寬的并行數據輸出,可以以主從模式將兩個相鄰的ISERDES連接在一起,最大提供10位的并行輸出。BITSLIP的位調整功能將并行輸出數據存儲并對數據進行移位,提供bitslp輸入控制信號,通過控制bitslip信號,對輸出數據進行左移或右移,最終使并行輸出數據的排序滿足本DPA方案中設定的同步字格式。?
1.2 DPA設計方案?
??? 由于FPGA之間數據總線寬度為16 bit位,當FPGA的內部總線寬度為64 bit位時,從管腳輸入的串行數據將被轉換成4 bit位寬的內部并行格式。在DPA訓練過程中,發送端分5個周期發送訓練序列“0000_0000_0011_1111_1111”,以5個周期為一次循環,如此反復。定義“0011”為同步字,作為各數據線解串后需匹配的固定數據格式。?
??? 在接收端的DPA包括位校正(Bit alignment)和字校正(Word alignment)2個模塊,如圖3所示,并以5個周期作為基本時間單位進行去偏移操作。Bit alignment模塊通過控制Idelay硬核的dlyce和dlyinc兩輸入信號,對每個數據線都進行精確的線延遲,使采樣時鐘沿正好位于各自信號數據窗的中心位置。各個數據通道的Bit alignment調整完成以后,分別給其Word alignment模塊發送ready信號,然后Word alignment模塊通過Bitslip字偏移核進行字調整,使各信號線的并行輸出數據中出現同步字匹配,即“0011”,表明采樣后的數據分別為“0000”、“0000”、“0011”、“1111”和“1111”,從而接收端的各信號線的并行輸出都保持同步,此時即可認為接收端已完成DPA功能,兩FPGA之間可以發送有效數據。?
?
?
??? 當其支持內128 bit位寬格式時,輸入的串行數據被轉換為8 bit位寬的內部并行格式,訓練序列為“00000000_00000000_00001111_11111111_11111111”,同步字定為“00001111”, 其DPA的具體實現過程不再詳述。?
2 DPA內部功能模塊?
2.1 Bit alignment位校正模塊?
??? Bit alignment校正模塊的主要功能是對輸入的串行流進行精確的線延遲,最終使采樣時鐘沿置于被采數據窗的中心位置。由于各數據流經過不同的傳輸路徑后所產生的線延遲不可知,只知周期性的訓練序列被采樣輸出5個4位并行數據,其集合為“0000”、“0001”、“0011”、“0111”、“1111”、“1110”、“1100”和“1000”,而且輸出的5個4 bit并行數據不可能全為“0000”或“1111”,因此必存在某并行數據中同時存在‘0’和‘1’,如“0001”、“0011”等,此處為串行流電平的變化沿。在此基礎上,Bit alignment位校正模塊按照下述步驟進行:?
??? (1)首先搜索出串行數據流電平的變化沿,具體實現方法為將解串輸出的4 bit并行數據中相鄰的bit位兩兩執行異或操作,得到3 bit的edge_info。若edge_info不全為‘0’,則采樣數據處于串行流的‘0’和‘1’變化位置,以“0111”為例,其edge_info=“100”,如圖4所示。?
?
?
??? (2)每次循環訓練就通過控制dlyce和dlyinc對信號線的延遲增加一級,并不斷對新輸出的4 bit位數據兩兩執行異或操作,得到edge_info_new,將edge_info_new與原edge_info邏輯右移一位的值比較。若比較的值不同,則重復(2),否則執行(3)。?
??? (3)此時采樣時鐘位于前后bit位的邊緣處,如圖5所示。原輸出的“0111”變為“0011”,edge_info由“100”變為“010”,表明后一bit位的左邊緣被采樣,稱之為LEFT_EDGE狀態。此時將處于該狀態的線延遲級數記為counter1,并將edge_info_new值賦給edge_info。?
?
?
??? (4)繼續增加信號線的延遲,將新得到的edge_info_new與edge_info邏輯右移兩位的值比較。若比較的值不同,則重復(4),否則執行(5)。?
??? (5)此時采樣時鐘位于前后bit位的邊緣處,如圖6所示,記為前一bit位的右邊沿,稱之為RIGHT_EDGE狀態,并記錄處于該狀態時的線延遲級數,記為counter2。?
?
?
??? (6)將處于LEFT_EDGE與RIGHT_EDGE狀態的延遲級數的中間位置即為數據窗的中心位置,通過控制dlyce和dlyinc信號不斷遞減其延遲值,最終使Idelay的延遲級數調整為(counter1+counter2)/2。位校正的處理流程如圖7所示。?
?
?
2.2 Word alignment字校正模塊?
當Bit alignment位校正完成以后,通過其ready信號告知Word alignment模塊,采樣時鐘已置于各數據線的數據窗的中心位置,可以對并行輸出數據進行字調整。在DPA過程中,發送端將每20位的訓練序列分為“0000”、“0000”、“0011”、“1111”和“1111”,以5次串化過程為一次循環進行發送。各信號線上的訓練序列經過不同的傳輸路徑到達接收端,并經過Bit alignment位校正后,各串行流經過并行輸出的4 bit數據不一定為“0000”、“0000”、“0011”、“1111”和“1111”這5種狀態,因此需要對輸出數據進行移位操作。?
??? Word alignment字校正的目的是通過Bitslip操作,使解串輸出的并行輸出值出現同步字“0011”,從而使各信號線并行輸出的4 bit數據為“0000”、“0000”、“0011”、“1111”和“1111”這5種狀態,則接收端和發送端保持同步,接收數據有效。Word alignment將并行輸出值與“0011”相比較,如果輸出值為“0011”,則該信號線不需要進行字調整;否則激活一次bitslip操作,即對bitslip信號輸入一周期的高電平,如此反復,直至輸出的數據出現同步字“0011”,則認為該信號線的Word alignment字校正完成。其處理流程如圖8所示。當各個信號線的Word alignment字調整完成以后,整個接收端的DPA訓練就結束,此后本接口就可以用于傳輸應用數據。?
?
?
3 工程實現與結論?
??? 在路由器設計中,負責包處理的FPGA之間的高速接口設計中就采用本DPA設計方案,發送端的輸出時鐘頻率超過400 MHz,且數據線采用雙邊沿觸發,則其單線傳輸速率大于800 Mb/s。在接口中采用16位數據線,則整個接口的傳輸帶寬高達800 Mb/s×16=12.8 Gb/s,足以滿足支持10 Gb/s接入處理的應用需求。圖9為實際采樣的動態相位調整效果圖。?
?
?
??? 采用DPA實現方案,使通信接口根據當前接口中各數據線的物理狀態,實時自動對各信號線進行去偏移操作,不斷適應外部環境的變化,保證數據的可靠傳輸,因此具有很好的應用推廣價值。?
參考文獻?
[1] Frenzel,Louis.Serializer/Deserializer Creates Low-cost,Short?10-Gbit/s Optical Links[J].ElectronicDesign,2001,49(3):41.?
[2] MONTROSE M I.電磁兼容和印刷電路板:理論、設計和布線[M].北京:人民郵電出版社,2002:44-46.?
[3] TZE Yeoh.Dynamic phase alignment with chipSync technology in Virtex-4 FPGAs[J].2005-01-15,http://china.xilinx.com/publications/xcellonline/xc_v4chipsync52.htm.?
[4] Xilinx.Virtex-4 User Guide ug070(v2.0)[R].San Jose,CA:Xilinx,2006.?
[5] Optical Internetworking Forum.Implementation Agreement:OIF-SPI4-02.10[R].Fremont,CA:Optical Internetworking?Forum,2003.