2

こんにちは、これは専門家の質問になります:) 次のトピックに精通している必要があります

  • ザイリンクス マルチギガビット トランシーバー (MGT)、特に 7 シリーズ GTX/GTH トランシーバー (GTXE2_CHANNEL)
  • Serial-ATA Gen1、Gen2、および Gen3、特に帯域外 (OOB) 通信

質問:

Serial-ATA 用に GTXE2 を構成するにはどうすればよいですか?

RX_ElectricalIdle も ComInit も OOB シグナリングが機能していません。

序章:

複数のベンダー/デバイス プラットフォーム (Xilinx Virtex-5、Altera Stratix II、Altera Stratix IV) をサポートする最後の学士プロジェクト用に SATA コントローラーを実装しました。今度は、このコントローラーを次のデバイス ファミリに移植します。KC705 ボード上の Kintex-7 という名前のザイリンクス 7 シリーズ デバイスです。

SATA コントローラには、SAPIS および PIPE 3.0 に基づく物理層に追加の抽象化層があります。したがって、SATA コントローラーを新しいデバイス ファミリに移植するには、GTXE2 MGT 用の新しいトランシーバー ラッパーを作成するだけです。

ザイリンクスの CoreGenerator は CoreGen ウィザードで SATA プロトコルをサポートしていないため、トランシーバー プロジェクトをゼロから開始し、必要なすべての設定をウィザードで求められる範囲で適用しました。その後、GTXE2_COMMON のインスタンス化をラッパー モジュールにコピーし、ジェネリックとポートを意味のある完全なスキーマに並べました。

3 番目のステップとして、接続されていないすべてのポート (ウィザードはすべての値を割り当てるわけではありません!!) をデフォルト値 (UG476 のデフォルト、または定義されていない場合はゼロ) に接続しました。

手順 4 で、すべてのジェネリックとポートを UG476 に対して再度チェックし、それらが SATA 設定と互換性があるかどうかを確認しました。その後、ラッパー ポートを MGT に接続し、必要に応じてクロス クロック モジュールを挿入しました。

KC705 ボードには 150 MHz 基準クロックがないため、各ボードの「起動」後にこのクロックを「ProgUser_Clock」として供給するように Si570 をプログラムします。この再構成中、MGT はパワーダウン モード (P2) になります。Si570 が安定している場合、MGT に電源が投入され、使用されているチャネル PLL (CPLL) が約 1 秒後にロックされます。6180 クロック サイクル。この CPLL_Locked イベントは GTX_TX|RX_Reset ワイヤを解放し、さらに 270|1760 サイクル後に GTX_TX|RX_ResetDone イベントを発生させます (すべてのサイクル @ 150 MHz -> 6.6 ns)。

この動作は、中断のない安定した補助クロック (200 MHz、わずかにオーバーサンプリング) でキャプチャされた chipscope で確認できます。

そのため、GXTE2 はパワーアップして動作し、すべてのクロックが安定しています。

OOB シグナリングを制御する GTXE2 ポート:

MGT には、OOB シグナリング用のポートがいくつかあります。TX では次のとおりです。

  • TX_ElectricalIdle - TX を強制的に電気的アイドル状態にする
  • TX_ComInit - ComInit シーケンスを送信する
  • TX_ComWake - ComWake シーケンスを送信する
  • TX_ComFinish - シーケンスが送信されました -> 次のコマンドの準備ができました

受信時:

  • RX_ElectricalIdle - RX_n/TX_p が電気的アイドル状態にある (低レベル インターフェイス)
  • RX_ComInit_Detected - 完全な ComInit シーケンスが送信されました
  • RX_ComWake_Detected - 完全な ComWake シーケンスが送信されました

詳細なエラーの説明:

  1. TX_ComInit が 1 サイクルの間 High の場合、TX は OOB シーケンスを送信しません。
  2. RX_ElectricalIdle は常にハイ

テスト:

  1. SATA ループバック ケーブル: SATA ケーブルを切断し、適切なワイヤをはんだ付けします ;) -- KC705 を SATA コネクタで拡張する特別な SFP から SATA へのアダプタを使用しています - http://shop.trioflex.ee/product.php ?id_product=73
  2. SMA ループバック ケーブル: MGT を移動し、LVDS ワイヤを SMA ジャックに接続し、クロスオーバーとして 2 本の SMA ケーブルを取り付けました。
  3. 古い ML505 (Virtex-5) をオンボード SATA コネクタでプログラムして、ComInit シーケンスを送信しました。2 つのボードは、専用の SATA クロスケーブルで接続されています。
  4. HDD を部分的に剥がした SATA ケーブルで KC705 (SFP2SATA アダプター) に接続し、2.5 GSps スコープを接続しました (はい、信号はアンダーサンプリングされていますが、バーストとアイドル期間を見るのは良いことです...)。

経験:

  • テスト 3 は、Virtex-5 から Kintex-7 に送信された OOB シーケンスを示していますが、ChipScope トリガー イベントは発生しません - Rx_ElectricalIdle はまだ High です。
  • テスト 4 は、ケーブル上で OOB シーケンスが送信されていないことを示しています。

パーツまたは完全なトランシーバーのインスタンス化を投稿する必要がありますか?

インスタンスのみが ca を持っています。650行:(

詳細情報、画像、コードなどが必要な場合はお問い合わせください... :)

付録:

電気的アイドルとは、MGT が両方の LVDS ワイヤ (TX_n/TX_p) を 0..2000 mV の範囲のコモン モード電圧 (V_cm) で駆動することを意味します。この条件が満たされている場合、同相デルタ電圧は 100 mV 未満であり、ElectricalIdle 条件と呼ばれます。

OOB シグナリングとは、MGT が電気的アイドルおよび通常のデータ シンボル (8b/10b 表記の D10.2) のバーストを LVDS ワイヤで送信することを意味します。SATA/SAS は、異なるバースト/アイドル期間を持つ 3 つの OOB シーケンス呼び出し ComInit、ComWake、ComSAS を定義します。ホスト コントローラとデバイスは、これらの「モールス信号」を使用してリンクを確立します。

4

1 に答える 1