一、關(guān)于 PRBS13、QPRBS13、PRBS13Q 和 QPRBS13-CEI 的定義。
1. PRBS13 的表達式為 x13 + x12 + x2 + x + 1。
2. 在 AR72117 中對 QPRBS13、PRBS13Q 和 QPRBS13-CEI 有以下定義:
PRBS13Q 按照 IEEE 802.3bs-2017 120.5.11.2.1 被定義為重復(fù)兩次以格雷編碼的 PRBS13
QPRBS13-CEI 與 PRBS13Q 相同
QPRBS13 是 PRBS13 和反轉(zhuǎn)的 PRBS13 組合
目前對于 Vivado 2023.1 版本的 IBERT GUI 界面暫時不支持 QPRBS13 的設(shè)置,需要通過 tcl 或者端口設(shè)置的方法來實現(xiàn)。
Tips:不建議同時用 IBERT GUI 和 Properties 窗口設(shè)置 GTM 的 Attributes,可能會導(dǎo)致寄存器值出錯。
3. PRBS13、QPRBS13、PRBS13Q 解析。
首先,根據(jù) PRBS13 的表達式來構(gòu)建一個數(shù)列表格, PRBS13 每 8191 個 bit 循環(huán)一次,此處選取前 64 位數(shù)據(jù)展示并且與仿真波形作對比:
PRBS13 仿真波形 (TXQPRBSEN = 0, TX_GRAY_BYP_EN = 1)
注意:按照 AM017 的描述,當(dāng) TX_GRAY_BYP_EN 為 1 時,關(guān)閉 GARY 編碼器。當(dāng) TX_GRAY_BYP_EN 為 0 時,使能 GARY 編碼器。
PRBS13Q 仿真波形 (TXQPRBSEN = 0, TX_GRAY_BYP_EN = 0)
QPRBS13 仿真波形 (TXQPRBSEN = 1, TX_GRAY_BYP_EN = 1)
當(dāng)前輸入為反轉(zhuǎn)后的 PRBS13(連續(xù)12位“1”),因此按照 PRBS13 表達式產(chǎn)生的 64 位數(shù)據(jù)如下表所示:
在了解 QPRBS13 的編碼規(guī)則后,接下去搭建工程做實際的測試。
二、新建 Versal GTM 工程
對于 Versal GTM,IBERT 工具已經(jīng)被集成到 GTM 內(nèi)部。因此需要使用 Versal Transceivers Wizard 新建一個測試工程,本文的測試工程基于 VPK120 評估板設(shè)計。
在 Wizard 中主要更改兩個地方的設(shè)置:
Transceiver type:設(shè)置為 GTM
Preset:選擇 GTM(PAM4) Ethernet 51G
設(shè)置完成后打開 IP Example Design:
三、調(diào)整硬件設(shè)置
此處需要對 Example design 做四個調(diào)整:
1. 把 gpio_enable、gt_reset 和 rate_sel 三個信號連接到 VIO 的輸出。
2. 添加 Clocking wizard 模塊,設(shè)置 clk_out1 的頻率為 200MHz,并且提供給 gt_bridge 和 gt_quad 的 apb3_clk 作為時鐘。
3. 設(shè)置 TX 和 RX 的 Reference Clock 頻率為 156.25MHz。
4. 把 GT Quad 約束到 Quad 202,Reference clock 約束到管腳 V45。
修改完成后點擊 Generate Device Image 生成 PDI 文件,連接 JTAG 并且把 PDI 下載到 VPK120。
四、構(gòu)建寄存器讀寫函數(shù)
控制 GTM 相關(guān)寄存器需要按位操作,因此首先需要設(shè)計一個能夠按位讀寫的函數(shù),函數(shù)內(nèi)部執(zhí)行步驟如下:
1. 獲取對象名稱。
本文中的 IBERT 名稱為 IBERT_0,在后面的操作中都以 IBERT_0 作為操作的對象名稱。因為工程中用了 GT Quad202,所以 tcl 命令對于 Quad202 的 ch0 定義為:IBERT_0.Quad_202.CH_0 ,其他通道可參照這個命名類推。
2. 刷新全部寄存器。
這一步操作很重要,如果沒有刷新全部寄存器的步驟,將無法讀取到最新的寄存器數(shù)據(jù),可能會讀出來上一次的數(shù)據(jù)或者全 0 的數(shù)據(jù)。
3. 數(shù)據(jù)格式轉(zhuǎn)換。
刷新寄存器后會發(fā)現(xiàn)在 GT Properties 窗口顯示的數(shù)據(jù)從 0xXXXXXXXX 變?yōu)榱?0xXXXX_XXXX,然而在 tcl 的按位與和按位或的運算中無法識別下劃線,下劃線會導(dǎo)致數(shù)據(jù)運算出錯,這一步需要先從相應(yīng)的寄存器把數(shù)據(jù)讀取出來,然后將下劃線移除。
這里的 channel 和 reg 是函數(shù)的參數(shù),channel 代表 GT 的通道編號,reg 是需要操作的寄存器。
4. 判斷和位運算。
這里的 op 和 value 是函數(shù)的參數(shù),op 代表運算操作是按位與還是按位或,value 是具體運算的值。
5. 將系數(shù)設(shè)回到相應(yīng)的寄存器 。
6. 操作函數(shù)定義。
操作函數(shù)有4個傳遞參數(shù) proc change_gtm_attributes { channel reg value op },具體作用在上文已經(jīng)說明。例如對于下面這個函數(shù),其對應(yīng)的操作是向 Quad_202.CH_0 的 CH0_FABRIC_INTF_CFG0 寄存器按位與的方式寫入 0xFFFEFFDF,即將 CH0_FABRIC_INTF_CFG0 寄存器的 Bit5 和 Bit16 置為“0”,其余位保持不變。
五、配置 GTM 的相關(guān)寄存器產(chǎn)生 QPRBS13 序列
1. 打開 Attributes 控制使能,關(guān)閉端口控制。
2. 設(shè)置 TX PRBS 的 Pattern。
3. 設(shè)置 RX PRBS 的 Pattern。
4. 打開 TXQPRBS 使能。
5. 打開 RXQPRBS 使能。
6. 關(guān)閉 TX Gray Encoder 使能。
7. 關(guān)閉 TX Gray Decoder 使能。
8. 設(shè)置 LOOPBACK 為 Near end PCS。
六、實際運行結(jié)果
1. 將 PDI 文件下載到器件中,并且運行 tcl 命令,先不使能 QPRBS,設(shè)置為常規(guī) PRBS13 輸出。
可以看到 NEAR-END PCS 回環(huán)已經(jīng)建立,并且 RXPRBSLOCKED 也已經(jīng)拉高。
2. 運行 TCL 命令,打開 TXQPRBS 使能,對于 RX 繼續(xù)輸出常規(guī) PRBS,此時 Link status 顯示為 No Link 和實際速率之間翻轉(zhuǎn),且 RXPRBSLOCKED 輸出狀態(tài)也呈現(xiàn)為周期性翻轉(zhuǎn)。
3. 再次運行 TCL 命令,打開 RXQPRBS 使能,此時的 Link status 再次恢復(fù)顯示為實際速率,RXPRBSLOCKED 輸出也再次呈現(xiàn)為高電平。
4. Versal GTM 除了不支持 QPRBS-7,其他的 Pattern 都是支持的。
5. 這個方法也可以用于產(chǎn)生其他 QPRBS Pattern。
審核編輯:湯梓紅
-
amd
+關(guān)注
關(guān)注
25文章
5420瀏覽量
133807 -
仿真
+關(guān)注
關(guān)注
50文章
4023瀏覽量
133336 -
命令
+關(guān)注
關(guān)注
5文章
676瀏覽量
21965 -
GUI
+關(guān)注
關(guān)注
3文章
638瀏覽量
39482 -
Versal
+關(guān)注
關(guān)注
1文章
151瀏覽量
7624
原文標(biāo)題:開發(fā)者分享|Versal GTM 如何用 Tcl 命令在 IBERT 生成 QPRBS13 序列
文章出處:【微信號:gh_2d1c7e2d540e,微信公眾號:XILINX開發(fā)者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論