由於 Intel® Quartus® Prime Pro Edition 軟體版本 22.3 中存在問題,F-tile 乙太網Intel® FPGA Hard IP的多通道 PTP 變體的設計範例中提供的「ptp_fw.tcl」腳本可能會產生不正確的rx_tam_adjust值。
要變通解決此問題,請執行以下步驟:
- 打開位於<生成的示例設計資料夾 >/hardware_test_design/hwtest/altera/ptp/ptp_fw.tcl的PTP 固件腳本
- 查找 並 替換 以下 程式碼:
從 | 自 |
# b) 計算 脈衝調整 for {set fl 0} {$fl < $::FL} {incr fl} { |
# b)計算脈衝調整並檢查從同一收發器通道接收的 FEC 通道之間的FEC cw_pos翻轉 for {set fl 0} {$fl < $::FL} {incr fl} { set cond2a [expr ($rx_fec_cw_pos_fl($fl_minus) > $rx_fec_cw_pos_fl($fl))] 如果 {$cond 1a &&$cond 1b} { |
返回 [陣列獲取rx_xcvr_if_pulse_adj] |
設置l_rx_xcvr_if_pulse_adj [陣列獲取rx_xcvr_if_pulse_adj] return [list $l_rx_xcvr_if_pulse_adj $l_rx_xcvr_if_pulse_adj_sign] |
proc determine_rx_ref_lane {lst_rx_xcvr_if_pulse_adj VL UI rx_pcs_bitslip_cnt rx_pcs_dlpulse_aligned l_rx_apulse_offset l_rx_apulse_offset_sign l_rx_apulse_wdelay l_rx_apulse_time ip_inst_base_addr} { # # 參數: # 返回:rx 脈衝偏移量(+符號位)的「陣列清單」。RX 參考 PL/VL/FL
陣列集 rx_apulse_offset $l_rx_apulse_offset 陣列集 rx_apulse_offset_sign $l_rx_apulse_offset_sign 陣列集 rx_apulse_wdelay $l_rx_apulse_wdelay 陣列集 rx_apulse_time $l_rx_apulse_time 陣列集 rx_xcvr_if_pulse_adj $lst_rx_xcvr_if_pulse_adj
print_info_time 「確定 RX 參考車道」 # a)參考非同步脈衝確定同步脈衝(對齊標記)偏移 如果 {$::FEC > 0} { print_out 「\t變體:FEC>0」 for {set fl 0} {$fl < $::FL} {incr fl} { 設定fl_minus [expr $fl - [expr $fl % $::P L_FL_MAP]] set val0 [format 0x%X [expr $rx_xcvr_if_pulse_adj($fl_minus) & 0x0000001F]] set val1 [format 0x%X [expr $rx_xcvr_if_pulse_adj($fl) + $val 0]]
if {$val 1 > $rx_xcvr_if_pulse_adj($fl_minus)} { 設置rx_spulse_offset_sign($fl) 0 set rx_spulse_offset_0 [format 0x%lX [expr [expr ($rx_xcvr_if_pulse_adj($fl) - $rx_xcvr_if_pulse_adj($fl_minus)) + $val 0] * $ui * $::P L_FL_MAP]] set rx_spulse_offset_1 [format 0x%lX [expr $rx_spulse_offset_0 & 0x7FFFFFFFFFF]] ;# 43'rx_spulse_offset_0 設置rx_spulse_offset($fl) [格式 0x%X [expr $rx_spulse_offset_1 >> [expr 28 - 16]]] } else { 套裝rx_spulse_offset_sign($fl) 1 set rx_spulse_offset_0 [format 0x%lX [expr [expr ($rx_xcvr_if_pulse_adj($fl_minus) - $rx_xcvr_if_pulse_adj($fl)) - $val 0] * $ui * $::P L_FL_MAP]] set rx_spulse_offset_1 [format 0x%lX [expr $rx_spulse_offset_0 & 0x7FFFFFFFFFF]] ;# 43'rx_spulse_offset_0 設置rx_spulse_offset($fl) [格式 0x%X [expr $rx_spulse_offset_1 >> [expr 28 - 16]]] } |
proc determine_rx_ref_lane {lst_rx_xcvr_if_pulse_adj lst_rx_xcvr_if_pulse_adj_sign VL UI rx_pcs_bitslip_cnt rx_pcs_dlpulse_aligned l_rx_apulse_offset l_rx_apulse_offset_sign l_rx_apulse_wdelay l_rx_apulse_time ip_inst_base_addr} { # # 參數: # 返回:rx 脈衝偏移量(+符號位)的「陣列清單」。RX 參考 PL/VL/FL
陣列集 rx_apulse_offset $l_rx_apulse_offset 陣列集 rx_apulse_offset_sign $l_rx_apulse_offset_sign 陣列集 rx_apulse_wdelay $l_rx_apulse_wdelay 陣列集 rx_apulse_time $l_rx_apulse_time 陣列集 rx_xcvr_if_pulse_adj $lst_rx_xcvr_if_pulse_adj 陣列集 rx_xcvr_if_pulse_adj_sign $lst_rx_xcvr_if_pulse_adj_sign
print_info_time 「確定 RX 參考車道」 # a)參考非同步脈衝確定同步脈衝(對齊標記)偏移 如果 {$::FEC > 0} { print_out 「\t變體:FEC>0」 for {set fl 0} {$fl < $::FL} {incr fl} { 設定fl_minus [expr $fl - [expr $fl % $::P L_FL_MAP]] set val0 [format 0x%X [expr $rx_xcvr_if_pulse_adj($fl_minus) & 0x0000001F]] set val1 [format 0x%X [expr $rx_xcvr_if_pulse_adj($fl) + $val 0]]
if { $rx_xcvr_if_pulse_adj_sign($fl) == 1} { 套裝rx_spulse_offset_sign($fl) 1 set rx_spulse_offset_0 [format 0x%lX [expr $rx_xcvr_if_pulse_adj($fl) * $ui * $::P L_FL_MAP]] set rx_spulse_offset_1 [format 0x%lX [expr $rx_spulse_offset_0 & 0x7FFFFFFFFFF]] ;# 43'rx_spulse_offset_0 設置rx_spulse_offset($fl) [格式 0x%X [expr $rx_spulse_offset_1 >> [expr 28 - 16]]] } else { if {$val 1 > $rx_xcvr_if_pulse_adj($fl_minus)} { 設置rx_spulse_offset_sign($fl) 0 set rx_spulse_offset_0 [format 0x%lX [expr [expr ($rx_xcvr_if_pulse_adj($fl) - $rx_xcvr_if_pulse_adj($fl_minus)) + $val 0] * $ui * $::P L_FL_MAP]] set rx_spulse_offset_1 [format 0x%lX [expr $rx_spulse_offset_0 & 0x7FFFFFFFFFF]] ;# 43'rx_spulse_offset_0 設置rx_spulse_offset($fl) [格式 0x%X [expr $rx_spulse_offset_1 >> [expr 28 - 16]]] } else { 套裝rx_spulse_offset_sign($fl) 1 set rx_spulse_offset_0 [format 0x%lX [expr [expr ($rx_xcvr_if_pulse_adj($fl_minus) - $rx_xcvr_if_pulse_adj($fl)) - $val 0] * $ui * $::P L_FL_MAP]] set rx_spulse_offset_1 [format 0x%lX [expr $rx_spulse_offset_0 & 0x7FFFFFFFFFF]] ;# 43'rx_spulse_offset_0 設置rx_spulse_offset($fl) [格式 0x%X [expr $rx_spulse_offset_1 >> [expr 28 - 16]]] } } |
陣列集 rx_xcvr_if_pulse_adj [configure_rx_fec_cw_pos $inst_num $init_pl] |
如果 {$::FEC > 0} { set int_list [configure_rx_fec_cw_pos $inst_num $init_pl] lassign $int_list l_rx_xcvr_if_pulse_adj l_rx_xcvr_if_pulse_adj_sign
陣列集 rx_xcvr_if_pulse_adj $l_rx_xcvr_if_pulse_adj 陣列集 rx_xcvr_if_pulse_adj_sign $l_rx_xcvr_if_pulse_adj_sign 如果 {$::d ebug} { for {set fl 0} {$fl < $::FL} {incr fl} { print_out 「\trx_xcvr_if_pulse_adj($fl) : [format 0x%08X $rx_xcvr_if_pulse_adj($fl)]」 print_out 「\trx_xcvr_if_pulse_adj_sign($fl) : [format 0x%08X $rx_xcvr_if_pulse_adj_sign($fl)]」 } } |
# 第 3 步:確定 RX 參考通道 設置int_list [determine_rx_ref_lane [陣列獲取rx_xcvr_if_pulse_adj]\ $VL\ |
# 第 3 步:確定 RX 參考通道 設置int_list [determine_rx_ref_lane [陣列獲取rx_xcvr_if_pulse_adj]\ [陣列獲取 rx_xcvr_if_pulse_adj_sign]\ $VL |
- 儲存檔案
此問題已從 Intel® Quartus® Prime Pro Edition 軟體版本 22.4 開始修復。