在Xilinx FPGA上快速實(shí)現(xiàn)JESD204B
簡(jiǎn)介
本文引用地址:http://www.ex-cimer.com/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接口,并用來(lái)實(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ù)之間的映射和解映射。可選的加擾層可用來(lái)加擾/解擾8 位字,以擴(kuò)散頻譜尖峰來(lái)降低EMI。數(shù)據(jù)鏈路層處理鏈路的同步、建立與保持,并對(duì)加擾后的數(shù)據(jù)進(jìn)行8B10B編碼或譯碼。物理層負(fù)責(zé)以比特速率發(fā)送和接收編碼后的字符。
圖1. JESD204B標(biāo)準(zhǔn)的關(guān)鍵層級(jí)
不同的JESD204B IP供應(yīng)商可能以不同的方式實(shí)現(xiàn)這些層級(jí)。圖 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ā)器可用來(lái)支持所有類型的串行協(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 核通過(guò) Vivado®設(shè)計(jì)套件以黑盒子加密交付。Xilinx還提供使用高級(jí) eXtensible接口(AXI)的Verilog設(shè)計(jì)示例,但該示例項(xiàng)目對(duì)大部分應(yīng)用而言是過(guò)設(shè)計(jì)的, 因?yàn)橛脩敉ǔ2捎米约旱呐渲媒涌冢瑹o(wú)需針對(duì)JESD204B 邏輯集成一個(gè)額外的AXI。圖6 顯示的是一個(gè)JESD204簡(jiǎn)化設(shè)計(jì),旨在幫助FPGA用戶理解JESD204結(jié)構(gòu),并讓他們快速著手設(shè)計(jì)自己的JESD204 FPGA項(xiàng)目。
圖6. JESD204B設(shè)計(jì)示例
Vivado產(chǎn)生的JESD204邏輯IP核,即經(jīng)過(guò)加密的 RTL 摸塊相當(dāng)于圖4和圖5中的發(fā)送和接收模塊,其加密接口定義可在Xilinx示例設(shè)計(jì)文件中找到。然后,可將經(jīng)過(guò)加密的RTL 模塊嵌套入JESD204B用戶頂層。來(lái)自加密RTL 模塊的控制、配置、狀態(tài)和JESD 數(shù)據(jù)接口直接通過(guò)嵌套層連接到用戶邏輯和GTX/GTH收發(fā)器。GTX/GTH符號(hào)對(duì)齊配置經(jīng)優(yōu)化和更新,使收發(fā)器工作更為穩(wěn)定。
給SERDES收發(fā)器的GTX/GTH參考時(shí)鐘應(yīng)采用專用引腳,對(duì)用于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)測(cè)JESD204邏輯和物理層(PHY)狀態(tài),供系統(tǒng)調(diào)試。/p>
Xilinx SERDES收發(fā)器的符號(hào)對(duì)齊
在SERDES接收器中,串行數(shù)據(jù)必須與符號(hào)邊界對(duì)齊,才能用作 并行數(shù)據(jù)。為了對(duì)齊數(shù)據(jù),可讓發(fā)送器發(fā)送一個(gè)可供識(shí)別的序 列,通常稱為"逗號(hào)"。接收器搜索輸入串行數(shù)據(jù)流中的逗號(hào), 一旦找到便將其移到符號(hào)邊界。這樣可讓接收到的并行字與發(fā) 送的并行字相匹配。逗號(hào)通常用K 碼表示,它是8B/10B表中用 作控制符的一些特殊字符。對(duì)于JESD204B應(yīng)用,發(fā)送器發(fā)送K = K28.5符號(hào)流,以便進(jìn)行碼組同步(CGS)。因此,F(xiàn)PGA可采用 K28.5 作為逗號(hào),來(lái)對(duì)齊符號(hào)邊界,而用戶可以指定逗號(hào)匹配是 由極性為正的逗號(hào)或是由極性為負(fù)的逗號(hào)所組成,或由兩者共同 組成。JESD204B針對(duì)GTX/GTH逗號(hào)檢測(cè)的默認(rèn)設(shè)置允許利用 正極性逗號(hào)或負(fù)極性逗號(hào)來(lái)對(duì)齊。
某些應(yīng)用中,默認(rèn)逗號(hào)設(shè)置可能導(dǎo)致符號(hào)的重新對(duì)齊,或者對(duì)齊至錯(cuò)誤的符號(hào)邊界。這可能會(huì)導(dǎo)致大量的8B/10B解碼錯(cuò)誤,并使JESD204B鏈路斷鏈。而正極性逗號(hào)加上負(fù)極性逗號(hào)使用會(huì)更穩(wěn)定,可以使逗號(hào)對(duì)齊模塊連續(xù)搜索兩個(gè)逗號(hào),并僅當(dāng)收到的數(shù)據(jù)為正極性逗號(hào)(或負(fù)極性)后跟一個(gè)負(fù)極性逗號(hào)(或正極性逗號(hào))且中間無(wú)額外位時(shí)才認(rèn)為檢測(cè)到逗號(hào)。當(dāng)線路速率較高或系統(tǒng)噪聲過(guò)多時(shí),這樣做有助于保持符號(hào)邊界和鏈路穩(wěn)定性。
FPGA上的JESD204項(xiàng)目設(shè)計(jì)考慮因素
來(lái)自JESD204 接收器輸出到發(fā)送器的同步、低電平有效SYNC信號(hào)用于表示同步狀態(tài)。正常工作時(shí),鏈路重新初始化將導(dǎo)致樣本數(shù)據(jù)混亂,因此必須實(shí)時(shí)監(jiān)測(cè)鏈路狀態(tài)。具體而言,SYNC上的連續(xù)低電平表示接收器在接收到的數(shù)據(jù)流中無(wú)法識(shí)別出至少四個(gè)連續(xù)K28.5符號(hào)。如果發(fā)生這種情況,請(qǐng)檢查發(fā)送器/接收器SERDES 配置,或確保發(fā)送器正在發(fā)送K28.5。SYNC上的連續(xù)高電平表示鏈路已建立,且保持穩(wěn)定。若SYNC從高電平變?yōu)榈碗娖饺缓蠓祷馗唠娖剑瑒t必須記錄低電平狀態(tài)的持續(xù)時(shí)間。如果持續(xù)時(shí)間長(zhǎng)于5個(gè)幀加9 個(gè)字節(jié),則表示接收器檢測(cè)到了較大的錯(cuò)誤,并將發(fā)送請(qǐng)求以重新初始化JESD204鏈路。如果持續(xù)時(shí)間等于兩個(gè)幀時(shí)鐘,則表示接收器檢測(cè)到了較小的錯(cuò)誤,但不會(huì)觸發(fā)鏈路重新初始化。這個(gè)功能可極大地簡(jiǎn)化系統(tǒng)調(diào)試,并為進(jìn)一步的鏈路監(jiān)測(cè)提供便利。因此,用戶應(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ù),從而確定鏈路重新同步的原因。此外,可通過(guò)8B/10B解碼錯(cuò)誤狀態(tài)實(shí)時(shí)確定SERDES鏈路質(zhì)量。
偽隨機(jī)位序列(PRBS)提供了一個(gè)測(cè)量高速鏈路中信號(hào)質(zhì)量和抖動(dòng)容差的有用資源。大部分FPGA 中的SERDES收發(fā)器都內(nèi)置了PRBS發(fā)生器和檢查器,無(wú)需額外的FPGA資源。因此,不要忘了實(shí)例化此功能,在評(píng)估比特誤碼率(BER)或眼圖時(shí)會(huì)使用到這個(gè)功能。
SERDES收發(fā)器中通常會(huì)使用一個(gè)緩沖器,來(lái)改變內(nèi)部時(shí)鐘域。如果發(fā)送器和接收器的時(shí)鐘設(shè)計(jì)不佳或者時(shí)鐘數(shù)據(jù)恢復(fù)模塊(CDR)設(shè)置錯(cuò)誤,那么就會(huì)導(dǎo)致緩沖器上溢或下溢。此時(shí)可能會(huì)發(fā)生某些鏈路錯(cuò)誤,因此有必要監(jiān)測(cè)緩沖器狀態(tài)。緩沖器上溢或下溢的中斷記錄對(duì)于系統(tǒng)調(diào)試而言是很有用的,所以同樣應(yīng)當(dāng)監(jiān)測(cè)用戶邏輯中不允許發(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接口。
評(píng)論