こんにちは、これは専門家の質問になります:) 次のトピックに精通している必要があります
- ザイリンクス マルチギガビット トランシーバー (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 シーケンスが送信されました
詳細なエラーの説明:
- TX_ComInit が 1 サイクルの間 High の場合、TX は OOB シーケンスを送信しません。
- RX_ElectricalIdle は常にハイ
テスト:
- SATA ループバック ケーブル: SATA ケーブルを切断し、適切なワイヤをはんだ付けします ;) -- KC705 を SATA コネクタで拡張する特別な SFP から SATA へのアダプタを使用しています - http://shop.trioflex.ee/product.php ?id_product=73
- SMA ループバック ケーブル: MGT を移動し、LVDS ワイヤを SMA ジャックに接続し、クロスオーバーとして 2 本の SMA ケーブルを取り付けました。
- 古い ML505 (Virtex-5) をオンボード SATA コネクタでプログラムして、ComInit シーケンスを送信しました。2 つのボードは、専用の SATA クロスケーブルで接続されています。
- 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 を定義します。ホスト コントローラとデバイスは、これらの「モールス信号」を使用してリンクを確立します。