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