JESD204 ip核使用與例程分析(二)
- JESD204時鐘方案
- 專用差分時鐘對
- 例程分析
- jesd204_0_transport_layer_demapper
- jesd204_0_sig_chk
- jesd204_0_clocking
- jesd204_0 ip核
- port
- 寄存器
- AXI-LITE寄存器配置
- jesd204_phy ip核
JESD204時鐘方案
圖3-1所示為最通用、靈活的時鐘解決方案。在圖中,refclk和glblclk均由同一外部時鐘芯片產生,進入FPGA后分別作為JESD204_PHY內部收發器的參考時鐘和JESD204 IP核的核時鐘。在這種方式下,參考時鐘和核時鐘完全物理上分離,它們可以運行在不同的時鐘頻率下而沒有相互限制。
唯一的限制就是參考時鐘的頻率值要根據收發器線速率的大小而選擇,核時鐘的頻率值則完全等于線速率的1/40倍。
假設線速率為6.25G,那么核時鐘的頻率值為6.25G/40=156.25MHZ,參考時鐘頻率也可選156.25MHZ
專用差分時鐘對
input refclk0p,input refclk0n,input glblclkp,input glblclkn,
- refclk0p/n 是SerDes專用參考時鐘,必須專用;
- glblclkp/n 是FPGA內部邏輯的全局時鐘,強烈建議專用,以保證系統的穩定和可靠。最好專用
例程分析
vivado自帶例程,假設ADC分辨率為14bit,含2bit控制位;
jesd204_0_transport_layer_demapper
該模塊用于JESD204協議接收端的Transport Layer(傳輸層)解包。
- 輸入為寬總線格式的串行接收數據(rx_tdata[255:0]),以及數據有效信號(rx_tvalid)。
- 將輸入的256位數據流,按照JESD204協議格式,分離成8個通道(Channel 0~7),每個通道包含兩個采樣數據(sampl0、sampl1)和兩個控制位(cntrl0、cntrl1)。
- 每個采樣數據為14位,每個控制信號為2位。
- 對每個通道的數據和控制信號進行寄存,同步輸出到下一級模塊,便于后續數據處理和分析。
- 通過ready_out信號,指示當前輸出數據是否有效。
在代碼移植,實現JESD204功能時不使用該模塊,自己拆分ADC接收到的數據
jesd204_0_sig_chk
- 該模塊是JESD204示例工程中的信號校驗模塊,用于對接收到的多通道采樣數據和控制信號進行自動比對和校驗。
- 輸入為8個通道的采樣數據(每通道2組采樣,每組采樣14位)和控制信號(每通道2個控制信號,每個2位)。
為什么每個通道兩組采樣?
每個通道有兩組采樣,是因為JESD204協議和IP核設計時,為了提高數據吞吐率和鏈路利用率,每個時鐘周期會打包傳輸多個采樣數據。這樣既能高效利用帶寬,也方便后續數據處理。
原因1:
- JESD204協議在數據傳輸時,通常會將多個采樣數據打包在一個數據幀/多幀中,以提高鏈路利用率和吞吐率。
- 在FPGA端,每個時鐘周期從IP核輸出的數據總線(如256位)往往包含了多個采樣點的數據,而不是單一采樣。
原因2:提升數據吞吐率
- JESD204鏈路速率很高,單個采樣數據位寬較小(如8位、14位等)。
- 每個時鐘周期傳輸多個采樣,可以充分利用總線帶寬,減少時鐘頻率壓力,提高系統效率。
jesd204_0_clocking
-
接收兩組差分時鐘輸入信號:
refclk_pad_p/n:SerDes(高速收發器)參考時鐘輸入
glblclk_pad_p/n:FPGA全局時鐘輸入
通過 Xilinx 的專用差分輸入緩沖器(IBUFDS_GTE2 和 IBUFDS)將差分時鐘信號轉換為單端時鐘信號,供后續電路使用。 -
全局時鐘分布
使用全局時鐘緩沖器(BUFG)對全局時鐘進行緩沖和分發