前言
為什么每次都將時鐘和復位單獨拿出來講?
對于我們使用Xilinx或其他的成熟IP而言,IP相當于一個黑匣子,內部實現的邏輯功能我們知道,但是控制不了,只能默認OK;一般而言,成熟IP都是經過反復驗證和使用,確實沒有什么問題。所以,IP能不能用,首先要做的就是確保時鐘和復位。
如果初始化不成功,我們也只能從這兩個方面入手檢查。
一、Aurora核的時鐘
打開Aurora配置界面,我們可以看到有三個時鐘:
參考時鐘、init clock、DRP CLOCK,如下圖所示:
對應到代碼:
input INIT_CLK_P;
input INIT_CLK_N;
input DRP_CLK_IN;
input GTXQ0_P;
input GTXQ0_N;
1. GT Refclk : 上一篇我們介紹過,Aurora其實是基于GT作為物理層實現的,這個參考時鐘就是GT的參考時鐘,可以翻筆者之前介紹GTX時鐘博文詳細了解。由外部一對差分輸入時鐘而來,具體根據硬件而定。默認值:125Mhz。
2. INIT CLK :初始化時鐘,之所以要INIT CLK,是因為在GT復位時,user_clk是停止工作的;Xilinx推薦的配置是INIT CLK時鐘頻率要低于GT參考時鐘。另外,筆者在查看example design的時候,發現GT復位是工作在INIT CLK。默認值:50Mhz。
3. DRP CLK : DRP時鐘,動態重配置,感覺沒怎么用到,默認值:50Mhz。對于UltraScale器件而言,DRP CLK與INIT CLK相連接。
我們再打開example design,看看這幾個時鐘跟Aurora核是怎么連接的:
注意到沒,差分時鐘轉為單端時鐘,這里用了兩個原語:IBUFDS_GTE2是GT專用;IBUFDS則是一般情況使用。
那么,用戶邏輯時鐘又是多少呢?繼續上圖:
user_clk, 即是用戶邏輯時鐘,我們設計的用戶接口信號(AXI4-S接口)就是工作在該時鐘域。
而tx_out_clk,其實就是GTX里所講的gt_txoutclk。
這里一頓分析,只為了我們更好的了解Aurora核。如果只是使用,我們只需要按照IP配置界面選定的時鐘頻率給過去就好。
需要注意的是,參考時鐘必須由專用GT差分輸入時鐘得到,而INIT_CLK和DRP_CLK可以由PLL輸出。
二、復位設計
先來看下《PG046》文檔對復位的描述:
復位信號是用來將 Aurora 8B/10B core置為一個已知的開始狀態。在復位時,核停止當前所有操作然后重新初始化一個新的channel。
channel:兩個Aurora所建立的鏈路,可以有多條lane,每條lane對應一個高速收發器GT,統稱為channel。
在全雙工模式下,復位信號對channel的TX和RX都進行復位。
在單工模式下,tx_system_reset復位TX鏈路,rx_system_reset復位RX鏈路。
而gt_reset則是復位高速收發器GT,最終也會復位Aurora核。(這說明GT復位更加底層,只要GT復位,就會對核進行復位,后面代碼也會證實這一點)
再來看兩個case:
CASE 1:全雙工配置下的系統復位
在全雙工配置模式下,復位信號應至少保持6個時鐘周期(user_clk)。channel_up在3個時鐘周期(user_clk)后拉低,如下圖所示:
CASE2:全雙工配置下的GT復位
在全雙工配置模式下,GT復位信號應至少保持6個時鐘周期(init_clk)。復位的結果user_clk會在幾個時鐘周期后停止,因為沒有了來自GT的txoutclk。隨后,channel_up也會跟著拉低。跟前文講述一致。如下圖所示:
其他的就不再展開了,感興趣的可以詳細查閱《PG046》。
我們再從代碼的角度來看看復位:
Aurora復位信號有兩個,一個是系統復位RESET,一個是GT復位GT_RESET;復位邏輯就如同前文描述,具體到代碼,感興趣的可以查閱示例工程的reset_logic.v;這里直接給出結論:
1. GT復位更加底層,優先級要高于系統復位RESET;也就是說,若GT復位,那么系統復位也拉高;《PG046》對復位的描述也是如此。
2. 當GT復位沒有拉高時,根據輸入的系統復位RESET,使用移位寄存器對其打拍,輸出復位。
3. GT復位同步于INIT_CLK,所以先將其同步到user_clk時鐘域,再對Aurora進行復位。
最后,Xilinx大佬操作來了!
①channel_up : 只要channel_up信號為高,那么說明核初始化完成,且建立了channel,在channel_up拉高之前,lane_up會拉高。我們邏輯設計可以直接使用該信號,在初始化完成之后,再進行邏輯操作。
②debug流程:具體查看P.105
后記
現在FPGA都集成了高速收發器硬核,各種協議的高速接口都是基于GT物理層來實現的。所以,在學習這些高速接口IP之前,最好先熟悉GT。后面就會發現很多東西都是通的。
審核編輯:湯梓紅
-
Xilinx
+關注
關注
70文章
2137瀏覽量
120397 -
時鐘
+關注
關注
10文章
1673瀏覽量
130969 -
復位
+關注
關注
0文章
166瀏覽量
24124
發布評論請先 登錄
相關推薦
評論