閆勝剛,江偉偉
(中國船舶集團(tuán)有限公司第八研究院,南京 211153)
I/O接口在工業(yè)應(yīng)用中一直扮演著重要角色,隨著信號處理越來越復(fù)雜,其I/O傳輸數(shù)據(jù)率也從600 Mb/s激增到12 Gb/s,甚至更高的帶寬。由于無法提供可靠的系統(tǒng)同步時鐘、并行端口位寬的激增以及同步開關(guān)噪聲問題的引入,傳統(tǒng)并行I/O接口不再是可靠、經(jīng)濟的方法。千兆位串行I/O技術(shù)由于較少的引腳數(shù)、不需要同步時鐘、EMI較低,逐漸成為解決高速接口的選擇,廣泛用于芯片到芯片的接口、VPX背板連接以及系統(tǒng)板級的通信。
基于GTX核的高速差分串行通信方式已成為FPGA內(nèi)構(gòu)建串行SRIO協(xié)議、PCIE協(xié)議、千兆以太網(wǎng)的標(biāo)準(zhǔn)物理基礎(chǔ)。根據(jù)傳輸鏈路的物理特性,合理設(shè)置GTX的收發(fā)參數(shù)成為高速I/O可靠傳輸數(shù)據(jù)的基礎(chǔ)。本文基于Virtex-6的FPGA芯片,配置GTX的相關(guān)參數(shù),分析相關(guān)設(shè)置對鏈路的影響,最后將該參數(shù)用于SRIO協(xié)議的物理層,通過實際測試驗證SRIO的傳輸性能。
GTX由發(fā)送模塊和接收模塊、時鐘管理模塊三部分組成,如圖1所示。
圖1 GTX結(jié)構(gòu)圖
發(fā)送模塊在內(nèi)部接收并行數(shù)據(jù),經(jīng)過線路編碼、發(fā)送FIFO緩存、極性控制、并串轉(zhuǎn)換、預(yù)加重等處理,最后通過發(fā)送前端輸出串行信號。
接收模塊通過模擬前端接收串行數(shù)據(jù),經(jīng)過RX均衡器、時鐘數(shù)據(jù)恢復(fù)模塊、串并轉(zhuǎn)換、字節(jié)對齊模塊、失步狀態(tài)機、線路解碼、時鐘修正和通道綁定等處理,轉(zhuǎn)換成并行數(shù)據(jù)輸入。
時鐘管理模塊由FPGA專用時鐘引腳,在FPGA內(nèi)部通過PLL鎖相環(huán)產(chǎn)生串行發(fā)送器時鐘以及接收器的參考時鐘,并且通過分頻供內(nèi)部并行通道以及外部邏輯使用。
數(shù)據(jù)編碼將輸入的原始數(shù)據(jù)轉(zhuǎn)變成一種數(shù)據(jù)格式,保證有足夠的高低電平切換提供給時鐘恢復(fù)電路,并提供約定的comma控制字符用于數(shù)據(jù)按字對齊,同時編碼后的數(shù)據(jù)保持0和1個數(shù)一致以達(dá)到良好的直流平衡。
FPGA可用的編碼機制有8 b/10 b編碼、64 b/66 b和擾碼技術(shù)。由于8 b/10 b編碼機制連0或連1最長為5位,相對64 b/66 b和擾碼具有更豐富的0/1跳變,但是8 b/10 b編碼開銷相對較大,為了獲得8 G的帶寬,需要10 G的線路速率,而64 b/66 b開銷小很多。擾碼技術(shù)采用隨機碼對數(shù)據(jù)進(jìn)行按位異或?qū)崿F(xiàn)數(shù)據(jù)的隨機化,不需要額外的帶寬。在高速數(shù)據(jù)傳輸時考慮碼間串?dāng)_影響,同時參考SRIO傳輸規(guī)范,本文采用8 b/10 b編碼機制。
發(fā)送的數(shù)據(jù)隨著傳輸速率的提高,數(shù)據(jù)間的干擾逐漸嚴(yán)重,如果串行流中包含多個比特的相同數(shù)據(jù),而其后面跟著一個比特的相反數(shù)據(jù),就會發(fā)生符號間串?dāng)_,具體原因是由于傳輸通道在短時間過程中沒有足夠時間充電,從而產(chǎn)生較低的幅度,進(jìn)而造成0/1的錯誤判斷。圖2描述了這種現(xiàn)象的發(fā)生情況。
圖2 碼間串?dāng)_
采用預(yù)加重技術(shù),使發(fā)送轉(zhuǎn)變的數(shù)據(jù)有過量驅(qū)動,通過設(shè)置前加重、后加重以及去加重參數(shù)減小碼間串?dāng)_的影響,從而可以降低數(shù)據(jù)傳輸?shù)恼`碼率,預(yù)加重電路如圖3所示。
圖3 預(yù)加重電路
發(fā)送的數(shù)據(jù)在鏈路傳輸過程中,由于高頻衰減、阻抗匹配以及頻率不同引起波移。通過線路均衡能夠達(dá)到一定的補償作用,彌補傳輸過程中的損失,提高接收數(shù)據(jù)的正確判斷。均衡通常有兩種方式:頻率響應(yīng)補償均衡器和判決反饋均衡器。頻率均衡器采用抑制低頻放大高頻的方式對接收的頻帶進(jìn)行線性濾波,但是鏈路的實際衰減比較復(fù)雜,針對不同鏈路,頻率衰減曲線各不相同,并且隨著時間和溫度變化,衰減會有響應(yīng)變化。頻率均衡技術(shù)如圖4所示,只能選擇最接近線路衰減的一種曲線進(jìn)行補償,并不能完全匹配線路真實衰減。
圖4 頻率補償濾波器
對于串?dāng)_的精細(xì)調(diào)節(jié),可以通過調(diào)節(jié)判決反饋均衡器中的反饋系數(shù),消除每個數(shù)據(jù)的響應(yīng)拖尾,進(jìn)而消除對后續(xù)數(shù)據(jù)的影響,此方法適用于更高頻率的串?dāng)_處理。判決反饋均衡器結(jié)構(gòu)如圖5所示。
圖5 判決反饋均衡器
時鐘數(shù)據(jù)恢復(fù)和comma字節(jié)對齊是高速串行傳輸?shù)暮诵模捎诟咚俅袛?shù)據(jù)包含了時鐘信息,所以需要從收到的數(shù)據(jù)中恢復(fù)時鐘,并采用恢復(fù)時鐘讀取接收的串行碼,獲得串行數(shù)據(jù),并采用comma字節(jié)對齊功能對串行數(shù)據(jù)設(shè)置窗口,從而保障串行到并行的轉(zhuǎn)換后,數(shù)據(jù)不會亂碼。
串行信號進(jìn)入Gbit級別后,對串行信號傳輸質(zhì)量的測試變得十分必要,Xilinx提供了IBERT輔助工具,用于串行IO接口傳輸性能的測試。IBERT可以在線調(diào)整高速串行接口的多種參數(shù),還能實時測量傳輸誤比特率以及眼圖參數(shù)的功能。
采用VPX機箱搭建測試平臺,如圖6所示,通過光纖遠(yuǎn)程環(huán)回模式進(jìn)行測試,F(xiàn)PGA板的發(fā)送端發(fā)送PRBS-7類型的測試數(shù)據(jù),通過VPX背板的高速差分線轉(zhuǎn)發(fā)到控制接口模塊,控制接口模塊轉(zhuǎn)化為光信號后發(fā)送出去,通過光纖鏈路回收光信號,并最終傳輸?shù)紽PGA板的接收端,通過和發(fā)送端的PRBS-7模型對比判定接收數(shù)據(jù)的誤碼率。
圖6 測試鏈路
打開ISE開發(fā)環(huán)境,新建測試工程,設(shè)置器件的類型、封裝、速度等級等,生成工程文件。新建IP核,在Debug&Verification下選擇IBERT核,配置參考時鐘為200 MHz、GTX協(xié)議相關(guān)的位置選擇117、數(shù)據(jù)寬度為20 bit和線速率為4 G,生成bitstream。由于IBERT核只能獨立使用,不可以插入工程,所以要注意配置和芯片參數(shù)一致,并且生成不依賴工程的獨立bit文件,使用JTAG邊界掃描鏈連接FPGA芯片,加載bit文件后,在chipscope軟件中打開ibert console窗口,由MGT settings、DRP settings、Port settings和Sweep Test Settings功能框組成,如圖7所示。
在MGT界面查看MGT LINK status和PLL status,確認(rèn)收發(fā)鏈路正常工作,在loopback mode中設(shè)置環(huán)回方式,設(shè)置發(fā)送端的參數(shù),TX Data Pattern設(shè)置數(shù)據(jù)模型,采用BRPS-7 bit模型,在TX Diff output swing設(shè)置發(fā)送端的輸出電壓幅度,在pre-cursor和post-cursor調(diào)節(jié)預(yù)加重處理系數(shù),通過數(shù)字示波器查看輸出信號波形圖。圖8為調(diào)整前示波器測試眼圖,圖9為調(diào)整后眼圖,通過比較發(fā)現(xiàn)眼圖形狀有明顯改善。
圖9 調(diào)整后波形眼圖
設(shè)置好輸出端口系數(shù)后,進(jìn)一步調(diào)試接收端系數(shù),在DRP Setting界面把工作模式轉(zhuǎn)換為測試垂直眼圖功能,如圖10所示。調(diào)節(jié)REqualization和DFETAPOVERD,通過DFEEYEDACMON值查看內(nèi)置眼圖張開幅度,從而判定接收均衡器和反饋系數(shù)的值。從圖7可以看到,當(dāng)設(shè)置的參數(shù)比較理想時,眼圖張開到最大值200 mV。
圖10 工作模式設(shè)置界面
最后把工作模式轉(zhuǎn)換為水平采樣點測試功能,在Sweep Test Settings界面測試采樣點位置和誤碼率之間的關(guān)系,如圖11所示,發(fā)送端和接收端參數(shù)都理想時,采樣點在0.375~0.87之間,誤碼率可以達(dá)到10-10,在MGT界面精細(xì)調(diào)節(jié)采樣點,在0.598UI時可以達(dá)到10-13的精度,從而確定采樣點最優(yōu)位置。
圖11 采樣誤碼關(guān)系圖
SRIO協(xié)議是一種高性能、低引腳數(shù)、基于數(shù)據(jù)包交換的體系結(jié)構(gòu),是為滿足高性能嵌入式系統(tǒng)需求而設(shè)計的一種開放式互連技術(shù)標(biāo)準(zhǔn)。圖12為SRIO協(xié)議工作流圖,數(shù)據(jù)在邏輯層和傳輸層按照協(xié)議打包處理后發(fā)送到物理層。
圖12 SRIO工作流圖
在FPGA的SRIO協(xié)議程序中,為了保證數(shù)據(jù)無誤碼傳輸,對物理層的收發(fā)端口修改參數(shù),使用ibert驗證過的參數(shù)設(shè)置。另外,采用/K27.7/碼實現(xiàn)四通道綁定,采用/K29.7/碼進(jìn)行時鐘補償,采用/K28.5/碼完成comma對齊功能,采用8 B/10 B編碼提高數(shù)據(jù)變化率。在鏈路正常工作后,監(jiān)測非8 B/10 B有效編碼的計數(shù)器值,在參考時鐘為125 MHz,線速率為4*3.125 GHz時,經(jīng)過6 h的監(jiān)測,計數(shù)器累計值一直為0,說明傳輸誤碼率低于10-13,鏈路的物理設(shè)置保證了SRIO的高速穩(wěn)定無誤碼工作。
在工程設(shè)計中,F(xiàn)PGA的高速串行端口數(shù)據(jù)高速穩(wěn)定傳輸至關(guān)重要。本文通過ibert工具調(diào)試電壓擺幅、預(yù)加重參數(shù)、線路均衡和反饋參數(shù)以及時鐘采樣位置,得到誤碼率較低的理想?yún)?shù),最后把相應(yīng)參數(shù)以及串行技術(shù)用到SRIO協(xié)議中,進(jìn)一步驗證了本文方法的正確性。