インテルのみ表示可能 — GUID: mhl1614685424495
Ixiasoft
7.1. ステータス・インターフェイス
7.2. TX MAC Avalon STクライアント・インターフェイス
7.3. RX MAC Avalon STアライメント・クライアント・インターフェイス
7.4. TX MACセグメント化クライアント・インターフェイス
7.5. RX MACセグメント化クライアント・インターフェイス
7.6. MACフロー制御インターフェイス
7.7. PCSモードのTXインターフェイス
7.8. PCSモードのRXインターフェイス
7.9. FlexEおよびOTNモードのTXインターフェイス
7.10. FlexEおよびOTNモードのRXインターフェイス
7.11. カスタム・レート・インターフェイス
7.12. 32ビット・ソフトCWBINカウンター
7.13. リコンフィグレーション・インターフェイス
7.14. 高精度時間プロトコル・インターフェイス
インテルのみ表示可能 — GUID: mhl1614685424495
Ixiasoft
4.4.6.2. RX UI調整
- 初期RX TAMのスナップショットを要求します。
csr_write (ptp_uim_tam_snapshot.rx_tam_snapshot, 1’b1)
- スナップショットの初期のTAM値とカウンター値を読み出します。
rx_tam_0_31_0 = csr_read (ptp_rx_uim_tam_info0.tam_31_0[31:0]) rx_tam_0_47_32 = csr_read (ptp_rx_uim_tam_info1.tam_47_32[15:0]) rx_tam_0_cnt = csr_read (ptp_rx_uim_tam_info1.tam_cnt[30:16]) rx_tam_0_valid = csr_read (ptp_rx_uim_tam_info1.tam_valid[31])
- rx_tam_0_valid = 1の場合は、初期TAM値を連結してTAMを完成させます。
rx_tam_0 = {rx_tam_0_47_32, rx_tam_0_31_0};
- rx_tam_0_valid = 0の場合は、ステップ1から再度開始します。
- rx_tam_0_valid = 1の場合は、初期TAM値を連結してTAMを完成させます。
- ステップ1が実行された時点から、UI測定における最小および最大リファレンス時間 (TAM) 間隔 (ハードウェア) のセクションで指定されている時間を待機します。
- N番目のRX TAMのスナップショットを要求します。
csr_write (ptp_uim_tam_snapshot.rx_tam_snapshot, 1’b1)
- スナップショットのN番目のTAM値とカウンター値を読み出します。
rx_tam_n_31_0 = csr_read (ptp_rx_uim_info0.tam_31_0[31:0]) rx_tam_n_47_32 = csr_read (ptp_rx_uim_tam_info1.tam_47_32[15:0]) rx_tam_n_cnt = csr_read (ptp_rx_uim_tam_info1.tam_cnt[30:16]) rx_tam_n_valid = csr_read (ptp_rx_uim_tam_info1.tam_valid[31])
スナップショットのN番目のTAM値を連結してTAMを形成します。rx_tam_n = {rx_tam_n_47_32, rx_tam_n_31_0};
- TAM値に影響するようなTOD値の大きな変更があったかを確認します。
rx_tam_n_valid = csr_read (ptp_rx_uim_tam_info1.tam_valid[31])
rx_tam_n_valid = 0の場合は、ステップ1から再度開始します。rx_tam_n を新しい rx_tam_0、rx_tam_n_cnt を新しい rx_tam_0_cnt として使用している場合は、ステップ1と2をスキップすることができます。その場合、ステップ4が実行された時点がステップ3の待機時間の開始になります。
- 次の計算を行います。
- TAM間隔を取得します。
rx_tam_interval = <Refer to Reference Time Interval> rx_tam_interval_per_pl = rx_tam_interval / PL
- 経過時間を計算します。
rx_tam_delta = (rx_tam_n <= rx_tam_0) ? [(rx_tam_n + 10^9ns) – rx_tam_0] : (rx_tam_n – rx_tam_0)
ステップ3のとおり、rx_tam_0 と rx_tam_n の差は、想定されている時間範囲内に収まっている必要があります。- rx_tam_delta (ミリ秒) が、指定されている最小時間値よりも小さい場合は、結果を破棄し、ステップ3から再度開始します。最小時間に関しては、UI測定における最小および最大リファレンス時間 (TAM) 間隔 (ハードウェア) のセクションにある表: UI測定で許容される最小および最大リファレンス時間 (TAM) 間隔 (ハードウェアBasicモード)、および表: UI測定で許容される最小および最大リファレンス時間 (TAM) 間隔 (ハードウェアAdvancedモード) の時間 (ms) 列を参照してください。
- rx_tam_delta (ミリ秒) が、指定されている最大値よりも大きい場合は、結果を破棄し、ステップ1またはステップ3から再度開始します。また、rx_tam_n を新しい rx_tam_0 として使用します。最大値に関しては、UI測定における最小および最大リファレンス時間 (TAM) 間隔 (ハードウェア) のセクションにある表: UI測定で許容される最小および最大リファレンス時間 (TAM) 間隔 (ハードウェアBasicモード)、および表: UI測定で許容される最小および最大リファレンス時間 (TAM) 間隔 (ハードウェアAdvancedモード) の時間 (ms) 列を参照してください。
注: 10^9ns = 48’h 3B9A_CA00_0000 - TAMカウント値を計算します。
rx_tam_cnt = (rx_tam_n_cnt < rx_tam_0_cnt) ? [(rx_tam_n_cnt + 2^15) – rx_tam_0_cnt] : (rx_tam_n_cnt – rx_tam_0_cnt)
ステップ3のとおり、rx_tam_0 と rx_tam_nの差は、想定されている時間範囲内に収まっている必要があります。- rx_tam_cnt (ミリ秒) が、指定されている最小時間値よりも小さい場合は、結果を破棄し、ステップ3から再度開始します。最小時間値に関しては、UI測定における最小および最大リファレンス時間 (TAM) 間隔 (ハードウェア) のセクションにある表: UI測定で許容される最小および最大リファレンス時間 (TAM) 間隔 (ハードウェアBasicモード)、および表: UI測定で許容される最小および最大リファレンス時間 (TAM) 間隔 (ハードウェアAdvancedモード) のカウント数の列を参照してください。
- rx_tam_cnt (ミリ秒) が、指定されている最大値よりも大きい場合は、結果を破棄し、ステップ1またはステップ3から再度開始します。また、rx_tam_n を新しい rx_tam_0 として使用します。最大値に関しては、UI測定における最小および最大リファレンス時間 (TAM) 間隔 (ハードウェア) のセクションにある表: UI測定で許容される最小および最大リファレンス時間 (TAM) 間隔 (ハードウェアBasicモード)、および表: UI測定で許容される最小および最大リファレンス時間 (TAM) 間隔 (ハードウェアAdvancedモード) のカウント数の列を参照してください。
- UI値を計算します。
rx_ui = (rx_tam_delta) / (rx_tam_cnt * rx_tam_interval_pl)
- TAM間隔を取得します。
- 計算したUI値をIPに書き込みます。
csr_write (rx_ptp_ui, rx_ui)
形式が {4ビット・ナノ秒整数部、28ビット・ナノ秒少数部} になっていることを確認してください。
- 最初のUI測定後は、最小TAM間隔、またはそれ以上の期間ごとにステップ1から8を繰り返します。これにより、クロックのppmが変化した際にシステムの基準となるTime-of-Dayから時間カウンターがドリフトするのを防ぎます。