在Xilinx FPGA上快速實現JESD204B

2021-08-09 10:29:56 字數 4011 閱讀 9280

jesd204是一種連線資料轉換器(adc和dac)和邏輯器件的高速序列介面,該標準的 b 修訂版支援高達 12.5 gbps序列資料速率,並可確保 jesd204 鏈路具有可重複的確定性延遲。隨著轉換器的速度和解析度不斷提公升,jesd204b介面在adi高速轉換器和整合rf收發器中也變得更為常見。此外,fpga

和asic中靈活的序列器/解串器(serdes)設計正逐步取代連線轉換器的傳統並行lvds/cmos介面,並用來實現 jesd204b物理層。本文介紹如何快速在xilinx

® fpga

上實現jesd204b介面,並為fpga

設計人員提供部分應用和除錯建議。

jesd204b 協議實現概述

jesd204b規範定義了實現該協議資料流的四個關鍵層,如圖1所示。傳輸層完成樣本和未加擾的幀資料之間的對映和解對映。可選的加擾層可用來加擾/解擾8 位字,以擴散頻譜尖峰來降低emi。資料鏈路層處理鏈路的同步、建立與保持,並對加擾後的資料進行8b10b編碼或解碼。物理層負責以位元速率傳送和接收編碼後的字元。

圖1. jesd204b標準的關鍵層級

不同的jesd204b ip**商可能以不同的方式實現這些層級。圖 2和圖3顯示adi如何實現jesd204b的傳送和接收協議。

圖2. jesd204b傳送器實現

圖3. jesd204b接收器實現

傳輸層實現和特定的轉換器配置及其樣本與幀之間的對映方式強相關,因此大部分fpga**商將其排除在各自的jesd204 ip之外。此外,fpga整合了高度可配置、高整合度的serdes收發器,這些serdes收發器可用來支援所有型別的序列協議,包括pcie、sata、srio、cpri和jesd204b。因此,乙個實現鏈路層的邏輯核和實現物理層的可配置serdes 便構成了jesd204b 鏈路的基礎。圖4 和圖5 顯示xilinx

fpga上的jesd204b傳送器和接收器框圖。傳送器/接收器通道實現加擾和鏈路層;8b/10b 編碼器/解碼器和物理層在 gtp/gtx/gth gbit 收發器中實現。

圖4. 使用xilinx

fpga實現jesd204b傳送器

圖5. 使用xilinx fpga實現jesd204b接收器

採用xilinx fpga的jesd204b設計示例

最新的 xilinx jesd204 ip 核通過 vivado®設計套件以黑盒子加密交付。xilinx還提供使用高階 extensible介面(axi)的verilog設計示例,但該示例專案對大部分應用而言是過設計的, 因為使用者通常採用自己的配置介面,無需針對jesd204b 邏輯整合乙個額外的axi。圖6 顯示的是乙個jesd204簡化設計,旨在幫助fpga使用者理解jesd204結構,並讓他們快速著手設計自己的jesd204 fpga專案。

圖6. jesd204b設計示例

vivado產生的jesd204邏輯ip核,即經過加密的 rtl 摸塊相當於圖4和圖5中的傳送和接收模組,其加密介面定義可在xilinx示例設計檔案中找到。然後,可將經過加密的rtl 模組巢狀入jesd204b使用者頂層。來自加密rtl 模組的控制、配置、狀態和jesd 資料介面直接通過巢狀層連線到使用者邏輯和gtx/gth收發器。gtx/gth符號對齊配置經優化和更新,使收發器工作更為穩定。

給serdes收發器的gtx/gth參考時鐘應採用專用引腳,對用於fpga邏輯的全域性時鐘設計必須仔細的考慮,包括內部pll、並行介面時鐘、jesd204邏輯核以及使用者邏輯時鐘。此外,必須 確保給jesd204b邏輯核(子類1)的sysref輸入被準確採到,以確保jesd204鏈路的確定性延遲。

若要獲得可靠的jesd鏈路初始化效能,gtx/gth收發器和jesd204核的復位序列十分關鍵;因此,jesd204核應處於復位狀態,直到gtx/gth收發器的內部pll 鎖定,且gtx/gth復位完成。

f2s 模組實現jesd204的傳輸層,該模組根據特定jesd204b配置將樣本對映至幀,或從幀解對映至樣本。然後根據特定的應用去處理樣本資料。採用輔助模組監測jesd204邏輯和物理層(phy)狀態,供系統除錯。/p>

xilinx serdes收發器的符號對齊

在serdes接收器中,序列資料必須與符號邊界對齊,才能用作 並行資料。為了對齊資料,可讓傳送器傳送乙個可供識別的序 列,通常稱為"逗號"。接收器搜尋輸入序列資料流中的逗號, 一旦找到便將其移到符號邊界。這樣可讓接收到的並行字與發 送的並行字相匹配。逗號通常用k 碼表示,它是8b/10b表中用 作控制符的一些特殊字元。對於jesd204b應用,傳送器傳送k = k28.5符號流,以便進行碼組同步(cgs)。因此,fpga可採用 k28.5 作為逗號,來對齊符號邊界,而使用者可以指定逗號匹配是 由極性為正的逗號或是由極性為負的逗號所組成,或由兩者共同 組成。jesd204b針對gtx/gth逗號檢測的預設設定允許利用 正極性逗號或負極性逗號來對齊。

某些應用中,預設逗號設定可能導致符號的重新對齊,或者對齊至錯誤的符號邊界。這可能會導致大量的8b/10b解碼錯誤,並使jesd204b鏈路斷鏈。而正極性逗號加上負極性逗號使用會更穩定,可以使逗號對齊模組連續搜尋兩個逗號,並僅當收到的資料為正極性逗號(或負極性)後跟乙個負極性逗號(或正極性逗號)且中間無額外位時才認為檢測到逗號。當線路速率較高或系統雜訊過多時,這樣做有助於保持符號邊界和鏈路穩定性。

fpga上的jesd204專案設計考慮因素

來自jesd204 接收器輸出到傳送器的同步、低電平有效sync訊號用於表示同步狀態。正常工作時,鏈路重新初始化將導致樣本資料混亂,因此必須實時監測鏈路狀態。具體而言,sync上的連續低電平表示接收器在接收到的資料流中無法識別出至少四個連續k28.5符號。如果發生這種情況,請檢查傳送器/接收器serdes 配置,或確保傳送器正在傳送k28.5。sync上的連續高電平表示鏈路已建立,且保持穩定。若sync從高電平變為低電平然後返回高電平,則必須記錄低電平狀態的持續時間。如果持續時間長於5個幀加9 個位元組,則表示接收器檢測到了較大的錯誤,並將傳送請求以重新初始化jesd204鏈路。如果持續時間等於兩個幀時鐘,則表示接收器檢測到了較小的錯誤,但不會觸發鏈路重新初始化。這個功能可極大地簡化系統除錯,並為進一步的鏈路監測提供便利。因此,使用者應當在設計中包含這個功能。

8b/10b解碼錯誤可能導致jesd204b鏈路重新初始化,但這並非是唯一的原因;因此,使用者在設計時應能夠對各通道的解碼錯誤進行計數,從而確定鏈路重新同步的原因。此外,可通過8b/10b解碼錯誤狀態實時確定serdes鏈路質量。

偽隨機位序列(prbs)提供了乙個測量高速鏈路中訊號質量和抖動容差的有用資源。大部分fpga 中的serdes收發器都內建了prbs發生器和檢查器,無需額外的fpga資源。因此,不要忘了例項化此功能,在評估位元誤位元速率(ber)或眼圖時會使用到這個功能。

serdes收發器中通常會使用乙個緩衝器,來改變內部時鐘域。如果傳送器和接收器的時鐘設計不佳或者時鐘資料恢復模組(cdr)設定錯誤,那麼就會導致緩衝器上溢或下溢。此時可能會發生某些鏈路錯誤,因此有必要監測緩衝器狀態。緩衝器上溢或下溢的中斷記錄對於系統除錯而言是很有用的,所以同樣應當監測使用者邏輯中不允許發生下溢或上溢的其它內部緩衝器的狀態。

結論本文討論了如何在xilinx fpga上快速實現jesd204模組,實現方法同樣可用於其它fpga。首先,應了解fpga**商提供的jesd204邏輯核和收發器的功能以及介面,然後將其實例化並與您的邏輯整合。其次,從全域性角度出發設計fpga時鐘樹,和整個工程的復位順序。然後,仔細定義jesd204邏輯核、使用者邏輯和收發器之間的介面。最後,加入必要的除錯資源。遵循這些步驟有助於您快速、成功地設計jesd204介面。

Xilinx FPGA的上電配置過程 高階篇

總結xilinx fpga的上電模式可以分為以下4型別 主模式 從模式 jtag模式 除錯模式 系統模式 多片配置模式 典型的主模式都是載入片外非易失 斷電不丟資料 性儲存器中的配置位元流,配置所需的時鐘訊號 稱為cclk 由fpga內部產生,且fpga控制整個配置過程。在主模式下,fpga上電後,...

快速排序(Quick sort)Python實現

快速排序用到了分而治之 divide and conquer,d c 的思想,簡單地說就是把複雜的問題分解成相同或相似的可直接求解的簡單問題。快速排序的速度比選擇要快,平均執行時間為 python 如下 def quicksort array if len array 2 return array ...

快速在linux上搭建基於git ssh的伺服器

在主機上建立乙個 git 賬戶,讓每個需要寫許可權的人傳送乙個 ssh 公鑰,然後將其加入 git 賬戶的 ssh authorized keys 檔案。這樣一來,所有人都將通過 git 賬戶訪問主機。這絲毫不會影響提交的資料 訪問主機用的身份不會影響提交物件的提交者資訊。sudo adduserg...