在Xilinx FPGA上快速實(shí)現(xiàn)JESD204B
簡介
本文引用地址:http://m.butianyuan.cn/article/281798.htmJESD204是一種連接數(shù)據(jù)轉(zhuǎn)換器(ADC和DAC)和邏輯器件的高速串行接口,該標(biāo)準(zhǔn)的 B 修訂版支持高達(dá) 12.5 Gbps串行數(shù)據(jù)速率,并可確保 JESD204 鏈路具有可重復(fù)的確定性延遲。隨著轉(zhuǎn)換器的速度和分辨率不斷提升,JESD204B接口在ADI高速轉(zhuǎn)換器和集成RF收發(fā)器中也變得更為常見。此外,FPGA和ASIC中靈活的串行器/解串器(SERDES)設(shè)計(jì)正逐步取代連接轉(zhuǎn)換器的傳統(tǒng)并行LVDS/CMOS接口,并用來實(shí)現(xiàn) JESD204B物理層。本文介紹如何快速在Xilinx® FPGA上實(shí)現(xiàn)JESD204B接口,并為FPGA設(shè)計(jì)人員提供部分應(yīng)用和調(diào)試建議。
JESD204B 協(xié)議實(shí)現(xiàn)概述
JESD204B規(guī)范定義了實(shí)現(xiàn)該協(xié)議數(shù)據(jù)流的四個(gè)關(guān)鍵層,如圖1所示。傳輸層完成樣本和未加擾的幀數(shù)據(jù)之間的映射和解映射??蛇x的加擾層可用來加擾/解擾8 位字,以擴(kuò)散頻譜尖峰來降低EMI。數(shù)據(jù)鏈路層處理鏈路的同步、建立與保持,并對加擾后的數(shù)據(jù)進(jìn)行8B10B編碼或譯碼。物理層負(fù)責(zé)以比特速率發(fā)送和接收編碼后的字符。
圖1. JESD204B標(biāo)準(zhǔn)的關(guān)鍵層級
不同的JESD204B IP供應(yīng)商可能以不同的方式實(shí)現(xiàn)這些層級。圖 2和圖3顯示ADI如何實(shí)現(xiàn)JESD204B的發(fā)送和接收協(xié)議。
圖2. JESD204B發(fā)送器實(shí)現(xiàn)
圖3. JESD204B接收器實(shí)現(xiàn)
傳輸層實(shí)現(xiàn)和特定的轉(zhuǎn)換器配置及其樣本與幀之間的映射方式強(qiáng)相關(guān),因此大部分FPGA供應(yīng)商將其排除在各自的JESD204 IP之外。此外,F(xiàn)PGA集成了高度可配置、高集成度的SERDES收發(fā)器,這些SERDES收發(fā)器可用來支持所有類型的串行協(xié)議,包括PCIe、SATA、SRIO、CPRI和JESD204B。因此,一個(gè)實(shí)現(xiàn)鏈路層的邏輯核和實(shí)現(xiàn)物理層的可配置SERDES 便構(gòu)成了JESD204B 鏈路的基礎(chǔ)。圖4 和圖5 顯示Xilinx FPGA上的JESD204B發(fā)送器和接收器框圖。發(fā)送器/接收器通道實(shí)現(xiàn)加擾和鏈路層;8B/10B 編碼器/解碼器和物理層在 GTP/GTX/GTH Gbit 收發(fā)器中實(shí)現(xiàn)。
圖4. 使用Xilinx FPGA實(shí)現(xiàn)JESD204B發(fā)送器
圖5. 使用Xilinx FPGA實(shí)現(xiàn)JESD204B接收器
采用Xilinx FPGA的JESD204B設(shè)計(jì)示例
最新的 Xilinx JESD204 IP 核通過 Vivado®設(shè)計(jì)套件以黑盒子加密交付。Xilinx還提供使用高級 eXtensible接口(AXI)的Verilog設(shè)計(jì)示例,但該示例項(xiàng)目對大部分應(yīng)用而言是過設(shè)計(jì)的, 因?yàn)橛脩敉ǔ2捎米约旱呐渲媒涌冢瑹o需針對JESD204B 邏輯集成一個(gè)額外的AXI。圖6 顯示的是一個(gè)JESD204簡化設(shè)計(jì),旨在幫助FPGA用戶理解JESD204結(jié)構(gòu),并讓他們快速著手設(shè)計(jì)自己的JESD204 FPGA項(xiàng)目。
圖6. JESD204B設(shè)計(jì)示例
Vivado產(chǎn)生的JESD204邏輯IP核,即經(jīng)過加密的 RTL 摸塊相當(dāng)于圖4和圖5中的發(fā)送和接收模塊,其加密接口定義可在Xilinx示例設(shè)計(jì)文件中找到。然后,可將經(jīng)過加密的RTL 模塊嵌套入JESD204B用戶頂層。來自加密RTL 模塊的控制、配置、狀態(tài)和JESD 數(shù)據(jù)接口直接通過嵌套層連接到用戶邏輯和GTX/GTH收發(fā)器。GTX/GTH符號對齊配置經(jīng)優(yōu)化和更新,使收發(fā)器工作更為穩(wěn)定。
給SERDES收發(fā)器的GTX/GTH參考時(shí)鐘應(yīng)采用專用引腳,對用于FPGA邏輯的全局時(shí)鐘設(shè)計(jì)必須仔細(xì)的考慮,包括內(nèi)部PLL、并行接口時(shí)鐘、JESD204邏輯核以及用戶邏輯時(shí)鐘。此外,必須 確保給JESD204B邏輯核(子類1)的SYSREF輸入被準(zhǔn)確采到,以確保JESD204鏈路的確定性延遲。
若要獲得可靠的JESD鏈路初始化性能,GTX/GTH收發(fā)器和JESD204核的復(fù)位序列十分關(guān)鍵;因此,JESD204核應(yīng)處于復(fù)位狀態(tài),直到GTX/GTH收發(fā)器的內(nèi)部PLL 鎖定,且GTX/GTH復(fù)位完成。
F2S 模塊實(shí)現(xiàn)JESD204的傳輸層,該模塊根據(jù)特定JESD204B配置將樣本映射至幀,或從幀解映射至樣本。然后根據(jù)特定的應(yīng)用去處理樣本數(shù)據(jù)。采用輔助模塊監(jiān)測JESD204邏輯和物理層(PHY)狀態(tài),供系統(tǒng)調(diào)試。/p>
Xilinx SERDES收發(fā)器的符號對齊
在SERDES接收器中,串行數(shù)據(jù)必須與符號邊界對齊,才能用作 并行數(shù)據(jù)。為了對齊數(shù)據(jù),可讓發(fā)送器發(fā)送一個(gè)可供識別的序 列,通常稱為"逗號"。接收器搜索輸入串行數(shù)據(jù)流中的逗號, 一旦找到便將其移到符號邊界。這樣可讓接收到的并行字與發(fā) 送的并行字相匹配。逗號通常用K 碼表示,它是8B/10B表中用 作控制符的一些特殊字符。對于JESD204B應(yīng)用,發(fā)送器發(fā)送K = K28.5符號流,以便進(jìn)行碼組同步(CGS)。因此,F(xiàn)PGA可采用 K28.5 作為逗號,來對齊符號邊界,而用戶可以指定逗號匹配是 由極性為正的逗號或是由極性為負(fù)的逗號所組成,或由兩者共同 組成。JESD204B針對GTX/GTH逗號檢測的默認(rèn)設(shè)置允許利用 正極性逗號或負(fù)極性逗號來對齊。
某些應(yīng)用中,默認(rèn)逗號設(shè)置可能導(dǎo)致符號的重新對齊,或者對齊至錯(cuò)誤的符號邊界。這可能會(huì)導(dǎo)致大量的8B/10B解碼錯(cuò)誤,并使JESD204B鏈路斷鏈。而正極性逗號加上負(fù)極性逗號使用會(huì)更穩(wěn)定,可以使逗號對齊模塊連續(xù)搜索兩個(gè)逗號,并僅當(dāng)收到的數(shù)據(jù)為正極性逗號(或負(fù)極性)后跟一個(gè)負(fù)極性逗號(或正極性逗號)且中間無額外位時(shí)才認(rèn)為檢測到逗號。當(dāng)線路速率較高或系統(tǒng)噪聲過多時(shí),這樣做有助于保持符號邊界和鏈路穩(wěn)定性。
FPGA上的JESD204項(xiàng)目設(shè)計(jì)考慮因素
來自JESD204 接收器輸出到發(fā)送器的同步、低電平有效SYNC信號用于表示同步狀態(tài)。正常工作時(shí),鏈路重新初始化將導(dǎo)致樣本數(shù)據(jù)混亂,因此必須實(shí)時(shí)監(jiān)測鏈路狀態(tài)。具體而言,SYNC上的連續(xù)低電平表示接收器在接收到的數(shù)據(jù)流中無法識別出至少四個(gè)連續(xù)K28.5符號。如果發(fā)生這種情況,請檢查發(fā)送器/接收器SERDES 配置,或確保發(fā)送器正在發(fā)送K28.5。SYNC上的連續(xù)高電平表示鏈路已建立,且保持穩(wěn)定。若SYNC從高電平變?yōu)榈碗娖饺缓蠓祷馗唠娖?,則必須記錄低電平狀態(tài)的持續(xù)時(shí)間。如果持續(xù)時(shí)間長于5個(gè)幀加9 個(gè)字節(jié),則表示接收器檢測到了較大的錯(cuò)誤,并將發(fā)送請求以重新初始化JESD204鏈路。如果持續(xù)時(shí)間等于兩個(gè)幀時(shí)鐘,則表示接收器檢測到了較小的錯(cuò)誤,但不會(huì)觸發(fā)鏈路重新初始化。這個(gè)功能可極大地簡化系統(tǒng)調(diào)試,并為進(jìn)一步的鏈路監(jiān)測提供便利。因此,用戶應(yīng)當(dāng)在設(shè)計(jì)中包含這個(gè)功能。
8B/10B解碼錯(cuò)誤可能導(dǎo)致JESD204B鏈路重新初始化,但這并非是唯一的原因;因此,用戶在設(shè)計(jì)時(shí)應(yīng)能夠?qū)Ω魍ǖ赖慕獯a錯(cuò)誤進(jìn)行計(jì)數(shù),從而確定鏈路重新同步的原因。此外,可通過8B/10B解碼錯(cuò)誤狀態(tài)實(shí)時(shí)確定SERDES鏈路質(zhì)量。
偽隨機(jī)位序列(PRBS)提供了一個(gè)測量高速鏈路中信號質(zhì)量和抖動(dòng)容差的有用資源。大部分FPGA 中的SERDES收發(fā)器都內(nèi)置了PRBS發(fā)生器和檢查器,無需額外的FPGA資源。因此,不要忘了實(shí)例化此功能,在評估比特誤碼率(BER)或眼圖時(shí)會(huì)使用到這個(gè)功能。
SERDES收發(fā)器中通常會(huì)使用一個(gè)緩沖器,來改變內(nèi)部時(shí)鐘域。如果發(fā)送器和接收器的時(shí)鐘設(shè)計(jì)不佳或者時(shí)鐘數(shù)據(jù)恢復(fù)模塊(CDR)設(shè)置錯(cuò)誤,那么就會(huì)導(dǎo)致緩沖器上溢或下溢。此時(shí)可能會(huì)發(fā)生某些鏈路錯(cuò)誤,因此有必要監(jiān)測緩沖器狀態(tài)。緩沖器上溢或下溢的中斷記錄對于系統(tǒng)調(diào)試而言是很有用的,所以同樣應(yīng)當(dāng)監(jiān)測用戶邏輯中不允許發(fā)生下溢或上溢的其它內(nèi)部緩沖器的狀態(tài)。
結(jié)論
本文討論了如何在Xilinx FPGA上快速實(shí)現(xiàn)JESD204模塊,實(shí)現(xiàn)方法同樣可用于其它FPGA。首先,應(yīng)了解FPGA供應(yīng)商提供的JESD204邏輯核和收發(fā)器的功能以及接口,然后將其實(shí)例化并與您的邏輯整合。其次,從全局角度出發(fā)設(shè)計(jì)FPGA時(shí)鐘樹,和整個(gè)工程的復(fù)位順序。然后,仔細(xì)定義JESD204邏輯核、用戶邏輯和收發(fā)器之間的接口。最后,加入必要的調(diào)試資源。遵循這些步驟有助于您快速、成功地設(shè)計(jì)JESD204接口。
評論