1. Eタイル・トランシーバーPHYの概要
2. トランシーバーPHYレイヤーの実装
3. Eタイル・トランシーバーPHYのアーキテクチャー
4. クロック・ネットワーク
5. PMAのキャリブレーション
6. トランシーバー・チャネルのリセット
7. ダイナミック・リコンフィグレーション
8. ダイナミック・リコンフィグレーションの例
9. レジスターマップ
10. Eタイル・トランシーバー・リンクのデバッグ
A. E-Tile Channel Placement Tool
B. PMA Direct PAM4 30Gbpsから57.8Gbpsの実装
C. 信号検出アルゴリズム
D. ミッションモードからチャネル保護モードへのリコンフィグレーションの詳細手順
E. チャネル保護モードからミッションモードへのリコンフィグレーションの詳細手順
F. ホールド時間違反
4.2.1. PMA Directチャネル 25Gbps x 1 (FECオン、シングルFECブロック内)
4.2.2. PMA Direct チャネル10Gbps x 1 (FECオフ)
4.2.3. PMA Directチャネル 25Gbps x 4 (FECオン、シングルFECブロック内)
4.2.4. PMA Direct 25Gbps x 4 (FECオフ)
4.2.5. PMA Direct 10.3125Gbps x 4
4.2.6. PMA Direct 100GE 25Gbps x 4 (FECオン)
4.2.7. PMA Direct 100GE PAM4 50Gbps x 2 (アグリゲートFECオン)
4.2.8. PMA Direct High Data Rate (FECオフ)
7.1. チャネルブロックのダイナミック・リコンフィグレーション
7.2. ダイナミック・リコンフィグレーション最大データレートの切り替え
7.3. ダイナミック・リコンフィグレーション・インターフェイスとのインタラクション
7.4. サポートされない機能
7.5. ダイナミック・リコンフィグレーション・インターフェイスからの読み出し
7.6. ダイナミック・リコンフィグレーション・インターフェイスへの書き込み
7.7. 複数のリコンフィグレーション・プロファイル
7.8. アービトレーション
7.9. PMAダイナミック・リコンフィグレーションに関する推奨事項
7.10. ダイナミック・リコンフィグレーションの実行手順
7.11. PMA属性の詳細
7.12. 特殊なケースでのダイナミック・リコンフィグレーション・フロー
7.13. ポートとパラメーター
7.14. エンベデッド・デバッグ機能
7.15. タイミング・クロージャーに関する推奨事項
7.16. トランシーバー・レジスター・マップ
7.17. IPコンフィグレーション設定をロードする
7.18. ダイナミック・リコンフィグレーションの改訂履歴
8.1. リセット・コントローラーを自動モードで使用したデュプレックスPMAのリコンフィグレーション
8.2. PRBS使用モデル
8.3. PMAエラー・インジェクション
8.4. PMAレシーバー・イコライゼーション・アダプテーションの使用モデル
8.5. ユーザー定義パターンの例
8.6. 減衰値 (VOD) のコンフィグレーション
8.7. ポスト・エンファシス値のコンフィグレーション
8.8. pretap1 値のコンフィグレーション
8.9. PMAドライバーのTX極性の反転
8.10. PMAドライバーのRX極性の反転
8.11. アダプティブ・エンジンによって調整可能なPMAパラメーターのコンフィグレーション
8.12. ネイティブPHY IPを使用したPMAパラメーターのコンフィグレーション
8.13. 複数のチャネルで低電力モードをイネーブルする
8.14. RXの初期化
8.15. RXイコライゼーションをリセットする
8.16. ダイナミック・リコンフィグレーションの例の改訂履歴
9.2.1. 0x0001: PMAのイネーブル/ディスエーブル
9.2.2. 0x0002: PMA PRBS設定
9.2.3. 0x0003: データ比較のセットアップと開始/停止
9.2.4. 0x0005: TXチャネル分周比
9.2.5. 0x0006: RXチャネル分周比
9.2.6. 0x0008: 内部シリアル・ループバックおよびリバース・パラレル・ループバック制御
9.2.7. 0x000A: レシーバー調整制御
9.2.8. 0x000E: RXフェーズスリップ
9.2.9. 0x0011: PMA TX/RXキャリブレーション
9.2.10. 0x0013: TX/RX極性およびグレイコードのエンコーディング
9.2.11. 0x0014: TX/RX幅モード
9.2.12. 0x0015: TXイコライゼーション
9.2.13. 0x0017: エラー・カウンター・リセット
9.2.14. 0x0018: ステータス/デバッグレジスター
9.2.15. 0x0019: ステータス/デバッグレジスターの次の書き込みフィールド
9.2.16. 0x001A: ステータス/デバッグレジスターの次の読み出しフィールド
9.2.17. 0x001B: TXエラー・インジェクション信号
9.2.18. 0x001C: 着信RXデータキャプチャ
9.2.19. 0x001E: エラー・カウント・ステータス
9.2.20. 0x0020: 電気的アイドル検出器
9.2.21. 0x002B: RX終端とTXドライバーのトライステート動作
9.2.22. 0x0030: PMA多重化クロックスワップ
9.2.23. 0x0126: レシーバー調整パラメーターの読み出し
9.2.24. 属性を使用したPMAアナログ・パラメーターの読み出しと書き込み
9.5.1. rsfec_top_clk_cfg
9.5.2. rsfec_top_tx_cfg
9.5.3. rsfec_top_rx_cfg
9.5.4. tx_aib_dsk_conf
9.5.5. rsfec_core_cfg
9.5.6. rsfec_lane_cfg
9.5.7. tx_aib_dsk_status
9.5.8. rsfec_debug_cfg
9.5.9. rsfec_lane_tx_stat
9.5.10. rsfec_lane_tx_hold
9.5.11. rsfec_lane_tx_inten
9.5.12. rsfec_lane_rx_stat
9.5.13. rsfec_lane_rx_hold
9.5.14. rsfec_lane_rx_inten
9.5.15. rsfec_lanes_rx_stat
9.5.16. rsfec_lanes_rx_hold
9.5.17. rsfec_lanes_rx_inten
9.5.18. rsfec_ln_mapping_rx
9.5.19. rsfec_ln_skew_rx
9.5.20. rsfec_cw_pos_rx
9.5.21. rsfec_core_ecc_hold
9.5.22. rsfec_err_inj_tx
9.5.23. rsfec_err_val_tx
9.5.24. rsfec_corr_cw_cnt (Low)
9.5.25. rsfec_corr_cw_cnt (High)
9.5.26. rsfec_uncorr_cw_cnt (Low)
9.5.27. rsfec_uncorr_cw_cnt (High)
9.5.28. rsfec_corr_syms_cnt (Low)
9.5.29. rsfec_corr_cw_cnt (High)
9.5.30. rsfec_corr_0s_cnt (Low)
9.5.31. rsfec_corr_0s_cnt (High)
9.5.32. rsfec_corr_1s_cnt (Low)
9.5.33. rsfec_corr_1s_cnt (High)
8.2. PRBS使用モデル
PRBS使用モデルを構成するのは、PRBSパターン・ジェネレーターおよび検証ツールのコンフィグレーションと、ハードPRBSエラーカウンターのコンフィグレーションです。PMA Directモードを使用して、PRBS (10G/25G) チャネルを実装します。
異なるPRBSパターンのコンフィグレーションには、0x84、0x85、0x86、および0x87 Avalon® メモリーマップド・インターフェイス・アドレスを使用します。0x84および0x85 Avalon® メモリーマップド・インターフェイス・アドレスは、PRBSパターンコードを指します。0x86および0x87 Avalon® メモリーマップド・インターフェイス・アドレスは、PMAコード・アドレス0x02を指します。
図 110. Avalon® Memory-Mappedインターフェイスを使用したPRBSのPMA属性の設定
| アドレス | 入力/出力 | 定義 |
|---|---|---|
| 0x84[2:0] | 入力 | 3'b000: prbs7 3'b001: prbs9 3'b010: prbs11 3'b011: prbs15 3'b100: prbs23 3'b101: prbs31 3'b110: prbs13 3'b111: ユーザー |
| 0x84[4] | 入力 | エラー時に再シード |
| 0x84[5] | 入力 | 自動シード訂正 (発生した場合、ジェネレーターはすべて「0」からすべて「1」になります) |
| 0x84[7] | 入力 | エラー時に停止 (RX) |
| 0x85[0] | 入力 | TX PRBSGENをロード |
| 0x85[1] | 入力 | RX PRBSGENをロード |
| アドレス | 入力/出力 | 定義 |
|---|---|---|
| 0x85[7:0] 0x84[7:0] | 入力 | コードのディスエーブル 0x3ff: 両方のジェネレーターをディスエーブルする 0x1ff: TX PRBSGENをディスエーブルする 0x2ff: RX PRBSGENをディスエーブルする |
| 0x89[7:0] 0x88[7:0] | 戻り値 | 0x00: 失敗 (バックグラウンド・プロセスには、要求されたコンフィグレーションを変更する可能性のある動作を完了するための時間が必要なため)。しばらく待ってから、要求を再発行してください。 0x02: 成功 |
例えば、PRBS31ジェネレーターとチェッカーを使用するには、次の手順を実行します。
- TX PRBS31を設定します。
- 0x84[7:0] = 0x25を書き込みます。
- 0x85[7:0] = 0x01を書き込みます。
- 0x86[7:0] = 0x02を書き込みます。
- 0x87[7:0] = 0x00を書き込みます。
- 0x90[0] = 1'b1を書き込みます。
- 0x8A[7] を読み出します。これは1である必要があります。
- 0x8B[0] を読み出します。0になるまで行います。
- 0x8A[7] を1'b1に書き込み、0x8A[7] 値をクリアします。
- RX PRBS31を設定します。
- 0x84[7:0] = 0x35を書き込みます。
- 0x85[7:0] = 0x02を書き込みます。
- 0x86[7:0] = 0x02を書き込みます。
- 0x87[7:0] = 0x00を書き込みます。
- 0x90[0] = 1'b1を書き込みます。
- 0x8A[7] を読み出します。これは1である必要があります。
- 0x8B[0] を読み出します。0になるまで行います。
- 0x8A[7] を1'b1に書き込み、0x8A[7] 値をクリアします。
- トランシーバー・チャネルをまだ実行していない場合は、イネーブルします。
- 0x84[7:0] = 0x07を書き込みます。
- 0x85[7:0] = 0x00を書き込みます。
- 0x86[7:0] = 0x01を書き込みます。
- 0x87[7:0] = 0x00を書き込みます。
- 0x90[0] = 1'b1を書き込みます。
- 0x8A[7] を読み出します。これは1である必要があります。
- 0x8B[0] を読み出します。0になるまで行います。
- 0x8A[7] を1'b1に書き込み、0x8A[7] 値をクリアします。
- tx_ready と rx_ready が両方とも1になるまで待ちます。
- データ・コンパレーターを設定します。
- 0x84[7:0] = 0x03を書き込みます。
- 0x85[7:0] = 0x02を書き込みます。
- 0x86[7:0] = 0x03を書き込みます。
- 0x87[7:0] = 0x00を書き込みます。
- 0x90[0] = 1'b1を書き込みます。
- 0x8A[7] を読み出します。これは1である必要があります。
- 0x8B[0] を読み出します。0になるまで行います。
- 0x8A[7] を1'b1に書き込み、0x8A[7] 値をクリアします。
- エラーカウンターをリセットします。
- 0x84[7:0] = 0x00を書き込みます。
- 0x85[7:0] = 0x00を書き込みます。
- 0x86[7:0] = 0x17を書き込みます。
- 0x87[7:0] = 0x00を書き込みます。
- 0x90[0] = 1'b1を書き込みます。
- 0x8A[7] を読み出します。これは1である必要があります。
- 0x8B[0] を読み出します。0になるまで行います。
- 0x8A[7] を1'b1に書き込み、0x8A[7] 値をクリアします。
- 32ビット幅のエラーカウンターが蓄積されるまで待ちます。
- 読み出すエラー数を設定します。
- 0x84[7:0] = 0x03を書き込みます。
- 0x85[7:0] = 0x00を書き込みます。
- 0x86[7:0] = 0x18を書き込みます。
- 0x87[7:0] = 0x00を書き込みます。
- 0x90[0] = 1'b1を書き込みます。
- 0x8A[7] を読み出します。これは1である必要があります。
- 0x8B[0] を読み出します。0になるまで行います。
- 0x8A[7] を1'b1に書き込み、0x8A[7] 値をクリアします。
- エラーカウンターの下位16ビットを読み出します
- 0x84[7:0] = 0x00を書き込みます。
- 0x85[7:0] = 0x00を書き込みます。
- 0x86[7:0] = 0x1Aを書き込みます。
- 0x87[7:0] = 0x00を書き込みます。
- 0x90[0] = 1'b1を書き込みます。
- 0x8A[7] を読み出します。これは1である必要があります。
- 0x8B[0] を読み出します。0になるまで行います。
- 0x8A[7] を1'b1に書き込み、0x8A[7] 値をクリアします。
- 0x88[7:0] を読み出します。これは、エラーカウンターのビット [7:0] を表します。
- 0x89[7:0] を読み出します。これは、エラーカウンターのビット [15:8] を表します。
- エラーカウンターの上位16ビットを読み出します。
- 0x84[7:0] = 0x00を書き込みます。
- 0x85[7:0] = 0x00を書き込みます。
- 0x86[7:0] = 0x1aを書き込みます。
- 0x87[7:0] = 0x00を書き込みます。
- 0x90[0] = 1'b1を書き込みます。
- 0x8A[7] を読み出します。これは1である必要があります。
- 0x8B[0] を読み出します。0になるまで行います。
- 0x8A[7] を1'b1に書き込み、0x8A[7] 値をクリアします。
- 0x88[7:0] を読み出します。これは、エラーカウンターのビット [23:16] を表します。
- 0x89[7:0] を読み出します。これは、エラーカウンターのビット [31:24] を表します。
注: PMAパフォーマンス検証テスト中、継続アダプテーションがバックグラウンドで実行中の場合、エラービットを蓄積してBERを計算することはできません。これは、ハードPRBSエラーカウンターがビジー状態であるためです。継続アダプテーション中にエラーを読み出すには、ソフトPRBSジェネレーターと検証ツールを実装します。継続アダプテーションの停止後は、エラーはハードPRBSエラーカウンターに蓄積できます。