??? 摘? 要: 提出一種基于FPGA的動(dòng)態(tài)相位調(diào)整實(shí)現(xiàn)方案,。在高速數(shù)據(jù)傳輸接口中,,由于數(shù)據(jù)窗縮小以及傳輸路徑不一致,造成數(shù)據(jù)和時(shí)鐘信號(hào)在FPGA的接收端發(fā)生位偏移和字偏移,。動(dòng)態(tài)相位調(diào)整技術(shù)根據(jù)當(dāng)前各數(shù)據(jù)線物理狀態(tài),對(duì)各信號(hào)線動(dòng)態(tài)進(jìn)行去偏移操作,克服了靜態(tài)相位調(diào)整中參數(shù)不可再調(diào)的缺點(diǎn),,使接口不斷適應(yīng)外部環(huán)境的變化,從而保證數(shù)據(jù)的可靠傳輸,。?
????關(guān)鍵詞: FPGA,;動(dòng)態(tài)相位調(diào)整;位偏移,;字偏移,;靜態(tài)相位調(diào)整
?
??? 隨著單線傳輸速率不斷接近于1 Gb/s,使每位所占的時(shí)間窗不斷減小,,導(dǎo)致采樣時(shí)鐘對(duì)信號(hào)線的采樣點(diǎn)很難在其有效區(qū)間進(jìn)行準(zhǔn)確采樣,;再加上傳輸路徑的不同,各數(shù)據(jù)線和采樣時(shí)鐘到達(dá)接收端的延遲時(shí)間不能保證完全一致,,從而帶來了各信號(hào)線之間的位偏移(Bit Skew)和字偏移(Word Skew)[1],,如圖1所示,。位偏移為采樣時(shí)鐘沿不在各數(shù)據(jù)窗口的中心位置采樣,可能會(huì)導(dǎo)致數(shù)據(jù)采樣保持時(shí)間不夠長,,易使bit位發(fā)生瞬間突變,,從而導(dǎo)致接收的數(shù)據(jù)不穩(wěn)定;字偏移是指采樣接收后的各數(shù)據(jù)信號(hào)之間不同步,,使得同時(shí)在發(fā)送端發(fā)送的數(shù)據(jù)在接收端卻不能同一時(shí)刻被采樣,,導(dǎo)致接收的數(shù)據(jù)無效。?
?
?
??? 靜態(tài)相位調(diào)整SPA(Static Phase Alignment)通過匹配時(shí)鐘線和數(shù)據(jù)線的長度[2],,使各信號(hào)在其傳輸線上延時(shí)相等,。SPA過程將耗費(fèi)大量勞動(dòng)和時(shí)間,而且其設(shè)定的參數(shù)靜態(tài)只針對(duì)板卡當(dāng)前的物理狀態(tài),,不能適應(yīng)外部環(huán)境的變化,。采用動(dòng)態(tài)相位調(diào)整DPA(Dynamic Phase Alignment)技術(shù)[3],則根據(jù)當(dāng)前各信號(hào)線物理狀態(tài),,每次系統(tǒng)上電后,,自動(dòng)對(duì)各信號(hào)線進(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)練序列,,而接收端首先對(duì)承載各數(shù)據(jù)的傳輸線進(jìn)行位校正,,利用PFGA內(nèi)部的IDELAY功能,對(duì)各個(gè)數(shù)據(jù)線進(jìn)行不同程度的精確線延遲操作,,使數(shù)據(jù)窗的中心位置都正對(duì)著采樣時(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)部對(duì)應(yīng)一個(gè)并串轉(zhuǎn)換(OSERDES)核,該核內(nèi)有倍頻電路以及并串轉(zhuǎn)換功能,,將內(nèi)部的并行數(shù)據(jù)串化后送到發(fā)送端的外部輸出管腳。?
??? 接收端的每個(gè)輸入管腳在FPGA內(nèi)部都對(duì)應(yīng)一個(gè)串并轉(zhuǎn)換核(ISERDES),,在其內(nèi)部分別嵌入IDELAY線延遲核和BITSLIP位偏移核,,如圖2所示。IDELAY線延遲核將串行輸入數(shù)據(jù)在其內(nèi)部進(jìn)行精確延遲,,提供可調(diào)的64級(jí)抽頭線延遲功能,,對(duì)應(yīng)的最大延遲時(shí)間為5 ns,則Bit alignment提供的最小延遲顆粒度為78.125 ps,,其初始化值設(shè)為零延遲,。IDELAY線延遲核提供dlyce和dlyinc兩個(gè)輸入控制信號(hào)。當(dāng)dlyce輸入為高電平時(shí),,表明IDELAY處于工作狀態(tài),,此時(shí)dlyinc每置一周期的高電平,信號(hào)線的延遲就增加一級(jí),;而dlyinc每置一周期的低電平,,信號(hào)線的延遲就減少一級(jí)。?
?
?
??? BITSLIP字偏移核內(nèi)部提供串并轉(zhuǎn)換和位調(diào)整功能,,每個(gè)并串轉(zhuǎn)換器的最大并行輸出寬度為6,,若需要更寬的并行數(shù)據(jù)輸出,可以以主從模式將兩個(gè)相鄰的ISERDES連接在一起,,最大提供10位的并行輸出,。BITSLIP的位調(diào)整功能將并行輸出數(shù)據(jù)存儲(chǔ)并對(duì)數(shù)據(jù)進(jìn)行移位,提供bitslp輸入控制信號(hào),,通過控制bitslip信號(hào),,對(duì)輸出數(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兩輸入信號(hào),,對(duì)每個(gè)數(shù)據(jù)線都進(jìn)行精確的線延遲,,使采樣時(shí)鐘沿正好位于各自信號(hào)數(shù)據(jù)窗的中心位置。各個(gè)數(shù)據(jù)通道的Bit alignment調(diào)整完成以后,,分別給其Word alignment模塊發(fā)送ready信號(hào),,然后Word alignment模塊通過Bitslip字偏移核進(jìn)行字調(diào)整,使各信號(hào)線的并行輸出數(shù)據(jù)中出現(xiàn)同步字匹配,,即“0011”,,表明采樣后的數(shù)據(jù)分別為“0000”、“0000”,、“0011”,、“1111”和“1111”,從而接收端的各信號(hào)線的并行輸出都保持同步,,此時(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校正模塊的主要功能是對(duì)輸入的串行流進(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對(duì)信號(hào)線的延遲增加一級(jí),并不斷對(duì)新輸出的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)的線延遲級(jí)數(shù)記為counter1,,并將edge_info_new值賦給edge_info。?
?
?
??? (4)繼續(xù)增加信號(hào)線的延遲,,將新得到的edge_info_new與edge_info邏輯右移兩位的值比較,。若比較的值不同,則重復(fù)(4),,否則執(zhí)行(5),。?
??? (5)此時(shí)采樣時(shí)鐘位于前后bit位的邊緣處,如圖6所示,,記為前一bit位的右邊沿,,稱之為RIGHT_EDGE狀態(tài),并記錄處于該狀態(tài)時(shí)的線延遲級(jí)數(shù),,記為counter2,。?
?
?
??? (6)將處于LEFT_EDGE與RIGHT_EDGE狀態(tài)的延遲級(jí)數(shù)的中間位置即為數(shù)據(jù)窗的中心位置,通過控制dlyce和dlyinc信號(hào)不斷遞減其延遲值,,最終使Idelay的延遲級(jí)數(shù)調(diào)整為(counter1+counter2)/2,。位校正的處理流程如圖7所示。?
?
?
2.2 Word alignment字校正模塊?
當(dāng)Bit alignment位校正完成以后,通過其ready信號(hào)告知Word alignment模塊,,采樣時(shí)鐘已置于各數(shù)據(jù)線的數(shù)據(jù)窗的中心位置,,可以對(duì)并行輸出數(shù)據(jù)進(jìn)行字調(diào)整。在DPA過程中,,發(fā)送端將每20位的訓(xùn)練序列分為“0000”,、“0000”、“0011”,、“1111”和“1111”,,以5次串化過程為一次循環(huán)進(jìn)行發(fā)送。各信號(hào)線上的訓(xùn)練序列經(jīng)過不同的傳輸路徑到達(dá)接收端,,并經(jīng)過Bit alignment位校正后,,各串行流經(jīng)過并行輸出的4 bit數(shù)據(jù)不一定為“0000”、“0000”,、“0011”,、“1111”和“1111”這5種狀態(tài),因此需要對(duì)輸出數(shù)據(jù)進(jìn)行移位操作,。?
??? Word alignment字校正的目的是通過Bitslip操作,,使解串輸出的并行輸出值出現(xiàn)同步字“0011”,從而使各信號(hào)線并行輸出的4 bit數(shù)據(jù)為“0000”,、“0000”,、“0011”、“1111”和“1111”這5種狀態(tài),,則接收端和發(fā)送端保持同步,,接收數(shù)據(jù)有效。Word alignment將并行輸出值與“0011”相比較,,如果輸出值為“0011”,,則該信號(hào)線不需要進(jìn)行字調(diào)整;否則激活一次bitslip操作,,即對(duì)bitslip信號(hào)輸入一周期的高電平,,如此反復(fù),直至輸出的數(shù)據(jù)出現(xiàn)同步字“0011”,,則認(rèn)為該信號(hào)線的Word alignment字校正完成,。其處理流程如圖8所示。當(dāng)各個(gè)信號(hào)線的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í)際采樣的動(dòng)態(tài)相位調(diào)整效果圖,。?
?
?
??? 采用DPA實(shí)現(xiàn)方案,使通信接口根據(jù)當(dāng)前接口中各數(shù)據(jù)線的物理狀態(tài),,實(shí)時(shí)自動(dòng)對(duì)各信號(hào)線進(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.