以太網(wǎng)IP核的1588功能是用來實現(xiàn),在IP內(nèi)部為TX側(cè)發(fā)送包打上發(fā)送出去這個時間節(jié)點的時間戳,以及獲得RX側(cè)收回來的包在IP接口處的時間戳。然而10G/25G的IP例子工程沒有提供演示,本文主要介紹了如何使用這個IP的1588功能
產(chǎn)生一個例子工程的仿真
01
1. 打開Vivado新建工程,添加一個10G/25G以太網(wǎng)IP core,注意在IP的GUI里勾上1588功能(如圖),然后右鍵產(chǎn)生example design
為了能同時支持 1-step 和 2-step,這里在產(chǎn)生 IP 時選擇了“OneStep”的 1588
2. 工程產(chǎn)生完成后,需要先給 tx/rx_systemtimer 加上參考時間值。如果用的是 2020.2,新的 IP 例子工程已經(jīng)自帶了 timer_syncer 模塊,為 systemtimer 提供輸入。但如果用的是之前的版本,你只需要寫一個計數(shù)器的邏輯,輸出為標準時間 ns 計數(shù),提供給 systemtimer 輸入就行了,到時候 IP 在發(fā)出包的那一刻,會把 tx_systemtimer 當(dāng)時的值作為時間戳使用,或者在收到包的那一刻,把當(dāng)時的 rx_systemtimer 的值拿來使用
下面是一個簡單的計數(shù)器代碼示例,選自 100GCMAC 的 IP 參考設(shè)計中產(chǎn)生 tx_systemtimer的邏輯,供參考使用
3. 最后給工程加上仿真選項,幫助加速仿真速度,就可以開始做工程的功能仿真了
如何使用1588功能
02
1. 首先使能IP的1588的1-step功能,可以在邏輯里將IP的輸入“ctl_tx_1step_enable”置1,如果使能了IP的AXI讀寫寄存器接口的話,也可以將地址0038的bit0寫1
2. 同樣地方式,通過修改信號 “ctl_ptp_transpclk_mode”選擇OrdinaryClock模式或者TransparentClock模式。在OC模式下,時間戳?xí)苯痈采w原以太網(wǎng)包里的值,但在TC模式下,時間戳則會疊加在原來位置的數(shù)值上面。具體可參考1588協(xié)議
3. 接著跑仿真,先在設(shè)計邏輯里將 “tx_ptp_1588op_in”接為01,觀察1-step模式下的IP的工作行為,仿真結(jié)果如下圖示
由于這里的 “tx_ptp_tstamp_offset_in”為0,發(fā)送包的第一拍數(shù)據(jù) “tx_axis_tdata”會從原來的值“fe14ffffffffffff”被IP替換成時間戳,也就是在RX側(cè)看到收到的數(shù)據(jù)包的第一拍數(shù)據(jù)“rx_axis_tdata”已經(jīng)變成了 “010005xxxxxxxxxx”
實際上 IP 在 1-step 工作模式下,2-step也是同時工作的,對應(yīng) “tx_ptp_tstamp_valid_out” 拉高的“tx_ptp_stamp_out” 的值,就是這個包的時間戳,輸出給客戶,這個時間戳的值客戶可以自行稍加修改添加到下一個包再發(fā)出去,這就是 2-step 的工作模式
用于2-step的“tx_ptp_stamp_out”和填進包里的1-step時間戳略有區(qū)別,差距就是 “ctl_tx_ptp_latency_adjust”,差異的原理細節(jié)可參考 IP 的文檔 PG210
用戶可以自行給他發(fā)的每個包輸入不同的“tx_ptp_tag_field_in”值,然后當(dāng)IP輸出 “tx_ptp_stamp_out” 時間戳的時候,只要找到對應(yīng)的 “tx_ptp_pstamp_tag_out” 值,就是相同 tag_in 對應(yīng)的那個包的時間戳
RX 側(cè)收進包的時間戳,為 "rx_ptp_stamp_out”,目前時間戳的點都是 IP 的接口,所以在環(huán)回仿真里面,RX 側(cè)的時間戳?xí)萒X側(cè)的時間戳大,差了一整個 GT 的延時沒有計算進去,用戶應(yīng)當(dāng)在AR搜索中找到自己用的器件對應(yīng)GT的具體latency,靜態(tài)延時值可通過ctl_tx/rx_latency 信號合進 IP。并且,延時結(jié)果能在功能仿真里面體現(xiàn)出來
4. 最后你還可以隨時在邏輯里修改 "tx_ptp_1588op_in" 的輸入,當(dāng)接為 00 或者 10 的時候,IP 就不會再自動打上時間戳,第一拍保留了數(shù)據(jù)包的原始數(shù)據(jù) "fe14ffffffffffff”,并且如果1588op=00 的時候,"tx_ptp_tstamp_valid_out" 也不會再拉高,如下圖
原文標題:開發(fā)者分享 | 如何使用 10G/25G 以太網(wǎng) IP core 上的 1588 功能
文章出處:【微信公眾號:FPGA開發(fā)圈】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
責(zé)任編輯:haq
-
以太網(wǎng)
+關(guān)注
關(guān)注
40文章
5343瀏覽量
170799 -
IP
+關(guān)注
關(guān)注
5文章
1610瀏覽量
149243
原文標題:開發(fā)者分享 | 如何使用 10G/25G 以太網(wǎng) IP core 上的 1588 功能
文章出處:【微信號:FPGA-EETrend,微信公眾號:FPGA開發(fā)圈】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論