時鐘就是脈搏,能否工作全靠它!
話不多說,直接上干貨!
文中全部使用GTX代指GT Transceiver,同樣適用于GTH。
一、參考時鐘
1.1 收發(fā)測試能跑起來的基本參考時鐘設(shè)置
我們先回顧下上一節(jié)的基礎(chǔ)知識:Quad、QPLL、CPLL、Channel、Common;基礎(chǔ)知識理解了有利于后面內(nèi)容的了解。

每一個GTX獨有的CPLL,4個GTX共有的一個QPLL,2個外部參考時鐘輸入,和專用參考時鐘布線(REFCLK Distribution)。
在Quad中,GTXE2_CHANNEL原語以及GTXE2_COMMON原語都必須例化,需要注意的是不管使用還是不使用QPLL,GT_COMMON都是要例化的,這是工具自動操作的。
外部參考差分時鐘輸入經(jīng)過 IBUFDS_GTE2原語轉(zhuǎn)為單端時鐘后,就是GTX的參考時鐘輸入端口:

IBUFDS IBUFDS_inst (
.O(O), // 1-bit output: Buffer output
.I(I), // 1-bit input: Diff_p buffer input (connect directly to top-level port)
.IB(IB) // 1-bit input: Diff_n buffer input (connect directly to top-level port)
);
前文已說過,1個Quad有2個參考時鐘,我們稱之為REFCLK0,REFCLK1,具體用哪一個,看你外部板卡設(shè)計時,實際給了哪一路。然后在IP配置時候,選擇使用對應(yīng)的參考時鐘:

總結(jié)如下:
①參考時鐘根據(jù)板子實際時鐘來選擇頻率;
②參考時鐘給到REFCLK0 還是REFCLK1也由板子設(shè)計決定。
但是對于我們學(xué)習(xí)做仿真而言,暫時不用管它;如果按照上圖配置來例化IP;那么對應(yīng)到程序中就是:
(根據(jù)IP配置)差分輸入?yún)⒖紩r鐘頻率為156.25Mhz,然后經(jīng)過IBUFDS原語后轉(zhuǎn)為單端時鐘并給到參考時鐘REFCLK1;而REFCLK0由于沒有使用,直接給0 。
1.2 繼續(xù)了解時鐘,走著
如果只是測試收發(fā),跑跑仿真,那么到這里,我們就可以不用繼續(xù)研究了。直接跳到第二章--系統(tǒng)時鐘。但是GTX的時鐘遠不止如此;要知道K7325T有16個GTX ,V7系列更多;當(dāng)GTX數(shù)量多了的時候,時鐘又如何設(shè)定?
繼續(xù)上圖:

注意到紅框的REFCLK Distribution了嗎?專用參考時鐘布線。
REFCLK Distribution的上下參考時鐘引腳分別為南北時鐘輸入引腳。用于Quad之間共享參考時鐘;也就是說,并不一定每一個Quad都需要外部參考時鐘,有的Quad可以和其他Quad共享參考時鐘,而共享的來源就是南北時鐘輸入引腳。Quad的南北參考時鐘稱為GTSOUTHREFCLK以及GTNORTHREFCLK。
我們再繼續(xù)看來自QPLL參考時鐘的4通道結(jié)構(gòu)圖:

又總結(jié)一下:
每個Quad中的GTX通道有6個可用的參考時鐘輸入:
兩個外部輸入?yún)⒖疾罘謺r鐘,經(jīng)過IBUFDS后就是GTREFCLK0和GTREFCLK1;
來自于Quad上面的兩個參考時鐘引腳對,GTSOUTHREFCLK0和GTSOUTHREFCLK1;
來自于Quad下面的兩個參考時鐘引腳對,GTNORTHREFCLK0和GTNORTHREFCLK1;
好家伙,一下子來這么多參考時鐘,GTX都蒙了,用哪個呢?
時鐘多路選擇器安排唄。
下圖是QPLL參考時鐘多路選擇器:

注意:多了一個GTGREFCLK,這個時鐘是由內(nèi)部邏輯產(chǎn)生的參考時鐘。貌似只用于內(nèi)部測試。
CPLL同理,就不啰嗦了,直接上圖:

1.3 單個外部參考時鐘使用情形
(1)單個外部參考時鐘驅(qū)動單個Quad中的多個GTX
這種情況很簡單,也很常見,一個Quad共用一個外部參考時鐘,直接看圖:

用戶設(shè)計直接將外部參考時鐘經(jīng)過IBUFDS_GTE2輸出REFCLK連接到GTX 的COMMON 、CHANNEL 原語。
(2)單個外部參考時鐘驅(qū)動多個Quad中的多個GTX
單個外部參考時鐘也可以驅(qū)動多個Quad中的多個GTX,例如:

但是,須得遵守一定的規(guī)則:
源Quad上方的Quad數(shù)量不能超過1個;
源Quad下方的Quad數(shù)量不能超過1個;
源Quad,指的是直接連接到外部參考時鐘的Quad。
即是說: 1個外部參考時鐘所驅(qū)動的Quad總數(shù)不超過3個,或驅(qū)動的Transceiver不超過12個。
1.4 多個外部參考時鐘使用情形
(1)同一個QUAD中,多個GTX Transceiver使用多個參考時鐘
每個Quad有兩個專用的差分時鐘輸入引腳(MGTREFCLK0[P/N]或 MGTREFCLK1[P/N]) ,可以連接到外部時鐘源。 每個專用的參考時鐘引腳對輸入進來后必須例化IBUFDS_GTE2,再給到GTX使用。
說再多也不如一張圖看的直接:

看圖說話:MGTREFCLK0[P/N]連接到GTREFCLK0,將MGTREFCLK1[P/N]連接到GTREFCLK1管腳。
(2)不同QUAD中,多個GTX Transceiver 使用多個參考時鐘
參考時鐘選擇結(jié)構(gòu)的靈活性允許Quad中的每個Transceiver都可以訪問上下Quad中的專用參考時鐘。
不啰嗦,上圖上圖:

在每個GTX有多個參考時鐘選項的情況下,設(shè)計的時候根據(jù)需求設(shè)置 QPLLREFCLKSEL[2:0]和CPLLREFCLKSEL[2:0]。該遵守的規(guī)則還是要遵守的:1個外部參考時鐘所驅(qū)動的Quad總數(shù)不超過3個,或驅(qū)動的Transceiver不超過12個。
1.5 QPLL/CPLL工作原理
算了, 略過吧,有興趣具體查閱手冊《UG476》。
二、系統(tǒng)時鐘

對應(yīng)IP設(shè)置的第三頁,我們所設(shè)置的時鐘頻率,也是DRP CLOCK;跟板子提供的時鐘對應(yīng);
對應(yīng)到代碼:
input wire DRP_CLK_IN_P,
input wire DRP_CLK_IN_N,
我們參照Example Design中對該時鐘的處理:
先經(jīng)過IBUFDS轉(zhuǎn)為單端時鐘,然后經(jīng)過BUFG,再給到GTX核。
IBUFDS IBUFDS_DRP_CLK (
.I (DRP_CLK_IN_P),
.IB (DRP_CLK_IN_N),
.O (DRPCLK_IN)
);
BUFG DRP_CLK_BUFG(
.I (DRPCLK_IN),
.O (drpclk_in_i)
);
這里,有個有意思的事情:
筆者使用50Mhz / 100Mhz 輸入,最終GTX輸出都是OK的,什么原因呢?
三、邏輯使用的時鐘
TXUSRCLK 和 TXUSRCLK2 生成:
(以下內(nèi)容為UG476翻譯)
FPGA發(fā)送端包含兩個并行時鐘:TXUSRCLK 和 TXUSRCLK2,
TXUSRCLK是GTX中PCS邏輯的內(nèi)部時鐘。它的頻率由TX端的Line Rate和內(nèi)部數(shù)據(jù)總線寬度共同決定:

TXUSRCLK2是GTX的TX端信號的主要同步時鐘。 GTX發(fā)送的大多數(shù)信號都是在TXUSRCLK2的上升沿進行采樣。TXUSRCLK2和TXUSRCLK之間有一個固定比率關(guān)系,由TX_DATA_WIDTH 和TX_INT_DATAWIDTH決定,見下圖:

回想一下,我們要通過某個IP核進行發(fā)送數(shù)據(jù),那么發(fā)送數(shù)據(jù)模塊所使用的時鐘必然是該IP核出來的同步時鐘。
對于GTX而言,我們發(fā)送數(shù)據(jù)所在的時鐘域,就是由核輸出的gt0_txoutclk_i。
再來看兩種情況:
(1)單通道——TXOUTCLK 驅(qū)動TXUSRCLK2 (2-Byte 或者4-Byte 模式)

(2)多通道——TXOUTCLK 驅(qū)動TXUSRCLK2 (2-Byte or 4-Byte 模式)

四、時鐘篇小結(jié)
前面解釋的很詳細了,最后放張圖吧。

-
FPGA
+關(guān)注
關(guān)注
1653文章
22271瀏覽量
629793 -
Xilinx
+關(guān)注
關(guān)注
73文章
2192瀏覽量
129802
發(fā)布評論請先 登錄
使用Xilinx 7系列FPGA的四位乘法器設(shè)計
Xilinx FPGA串行通信協(xié)議介紹
開源RISC-V處理器(蜂鳥E203)學(xué)習(xí)(二)修改FPGA綜合環(huán)境(移植到自己的Xilinx FPGA板卡)
【VPX650 】青翼凌云科技基于 VPX 系統(tǒng)架構(gòu)的 VU13P FPGA+ZYNQ SOC 超寬帶信號處理平臺
一文詳解xilinx 7系列FPGA配置技巧
【TES807】青翼凌云科技基于 XCKU115 FPGA 的雙 FMC 接口萬兆光纖傳輸信號處理平臺
XILINX XCZU67DR FPGA完整原理圖
gtx是光纖嗎
詳解Xilinx的10G PCS PMA IP

Xilinx FPGA平臺GTX簡易使用教程(二)
評論