FPGA UltraScale GTY には、ネットワーク全体、aurora 8b/10b コーデック、ボードツーボード ビデオ伝送に関する最も詳細な説明があり、2 セットのエンジニアリング ソース コードとテクニカル サポートが提供されます。


FPGA UltraScale GTY には、ネットワーク全体、aurora 8b/10b コーデック、ボードツーボード ビデオ伝送に関する最も詳細な説明があり、2 セットのエンジニアリング ソース コードとテクニカル サポートが提供されます。

1 はじめに

GT リソースを触ったことがない人でも、FPGA を触ったことがあると言うのは恥ずかしいことです。これは CSDN の上司の言葉であり、私はそれを強く信じています。 。 。 GT リソースはザイリンクス シリーズ FPGA の重要なセールス ポイントであり、高速インターフェイスの基盤でもあります。PCIE、SATA、MAC などのいずれであっても、GT リソースは高速データのシリアル化とデシリアル化に必要です。シリーズにはさまざまな GT リソース タイプがあり、ローエンドの A7 には GTP、K7 には GTX、V7 には GTH、ハイエンドの U+ シリーズには GTY などがあります。それらの速度はますます高速になっており、アプリケーション シナリオは次のとおりです。どんどん高級になっていきます。 。 。 UltraScale GTH は、Virtex UltraScale、Kintex UltraScale、Zynq® UltraScale などのデバイスを含むザイリンクス UltraScale シリーズの FPGA に適しています。UltraScale シリーズの下には GTH のみがあります。GTH と比較して、UltraScale GTH はライン レートが高く、より多くのサポートをサポートしていますプロトコルタイプ、低消費電力、高帯域幅。 。 。

この記事では、ザイリンクスの Kirtex UltraScale+ シリーズの xcku5p-ffvb676-1-i モデル FPGA の UltraScale GTY リソースを使用して、ボード間ビデオ伝送実験を行います。開発者の手には HDMI 入力インターフェイスがあります。1 つの状況として、ラップトップを使用して HDMI ビデオをシミュレートすることがあります。ADV7611 チップは、FPGA で使用するために入力 HDMI ビデオを GRB にデコードします。開発ボードに HDMI 入力インターフェイスがある場合、または開発ボードの HDMI 入力デコード チップが ADV7611 ではない場合、コード内で生成されたダイナミック カラー バーを使用してカメラ ビデオをシミュレートできます。ビデオ ソースは、コードの最上位レベルでの COLOR_TEST マクロ定義の定義を通じて選択されます。 HDMI 入力はデフォルトでビデオ ソースとして使用されます。プロジェクト ソース コードの vivado2022.2 バージョンが 2 セット提供されます。最初のセットは GTY 送信プロジェクトです。FPGA がビデオを収集した後、最初にそれをデータ グループ化モジュールを使用してビデオをパッケージ化し、文字 BC およびその他の識別子に基づいて制御フレーム ヘッダーとフレーム テールを追加し、ザイリンクスの公式 UltraScale GTY IP コアを呼び出します。 5G として設定され、8b/10b エンコードされたビデオがオンボード SFP 光ポート経由で送信されます。2 番目のセットは GTY 受信プロジェクトです。SFP 光ポートは 8b/10b エンコードされたビデオを受信し、UltraScale GTY が 8b/10b デコードを実行します。処理; 次に、データは位置合わせ処理のためにデータ位置合わせモジュールに送信されます; 次に、データはデータ アンパッキング モジュールに送信されて、フレームのヘッダーと末尾が削除され、ビデオのタイミングが復元されます; 便宜上、ビデオはキャッシュされません代わりに、ザイリンクス公式 Video In to AXI4-Stream、Video Timing Controller、および AXI4-Stream to Video Out の 3 つの IP が直接呼び出され、単純にビデオをキャッシュして送信します。純粋な Verilog コードで実装された HDMI 送信モジュールRGB ビデオを HDMI ビデオに変換し、最終的にモニター表示を出力します。

このブログでは 2 セットの vivado プロジェクト ソース コードを提供しています。2 セットのプロジェクトの違いは、送信に GTH が使用されるか受信に使用されるかであり、詳細は次のとおりです。

vivado工程1:HDMI/动态彩条输入,UltraScale GTY 编码,SFP光口1发送出去;
vivado工程2:SFP光口2输入,UltraScale GTY 解码,HDMI输出显示器;

このブログでは、直接プロジェクト移植の UltraScale GTY リソースを使用した基板間ビデオ伝送実験の設計計画について詳しく説明します。これは、学生や大学院生のプロジェクト開発に適しており、オンザ プロジェクトにも適しています。 - エンジニアの研究を改善するためのジョブ。医療、軍事、その他の産業の高速インターフェイスや画像処理分野に適用できます。
完全なエンジニアリング ソース コードと実行に関する技術サポートを提供します。 ;
エンジニアリング ソース コードとテクニカル サポートの入手方法は記事の最後に記載されています。辛抱強く最後までお読みください。

免責事項

このプロジェクトとそのソース コードには、私が書いた部分と、インターネット上のパブリック チャネル (CSDN、ザイリンクス公式 Web サイト、アルテラ公式 Web サイトなどを含む) から入手した部分の両方が含まれています。気分を害される場合は、プライベート メッセージを送信して批判してください。本プロジェクトおよびそのソースコードは、読者またはファンの個人的な学習・研究に限定しており、商業目的での使用を禁止します 読者またはファン自身による商業利用により法的問題が生じた場合、当ブログとブロガー様とは一切関係がございませんので、ご利用の際はご注意ください。 。 。

2. すでにここにある GT 高速インターフェイス ソリューション

私のホームページには FPGA GT 高速インターフェイスの列があります。この列には、GTP、GTX、GTH、GTY などの GT リソースのビデオ送信ルーチンと PCIE 送信ルーチンが含まれています。GTP は A7 シリーズに基づいて構築されていますFPGA 開発ボード、および GTX K7 または ZYNQ シリーズ FPGA 開発ボードに基づいて構築され、GTH は KU または V7 シリーズ FPGA 開発ボードに基づいて構築され、GTY は KU+ シリーズ FPGA 開発ボードに基づいて構築されます。以下は次のとおりです。列アドレス:
クリックして直接移動

3. 詳細設計計画

この記事では、ザイリンクスの Kirtex UltraScale+ シリーズの xcku5p-ffvb676-1-i モデル FPGA の UltraScale GTY リソースを使用して、ボード間ビデオ伝送実験を行います。開発者の手には HDMI 入力インターフェイスがあります。1 つの状況として、ラップトップを使用して HDMI ビデオをシミュレートすることがあります。ADV7611 チップは、FPGA で使用するために入力 HDMI ビデオを GRB にデコードします。開発ボードに HDMI 入力インターフェイスがある場合、または開発ボードの HDMI 入力デコード チップが ADV7611 ではない場合、コード内で生成されたダイナミック カラー バーを使用してカメラ ビデオをシミュレートできます。ビデオ ソースは、コードの最上位レベルでの COLOR_TEST マクロ定義の定義を通じて選択されます。 HDMI 入力はデフォルトでビデオ ソースとして使用されます。プロジェクト ソース コードの vivado2022.2 バージョンが 2 セット提供されます。最初のセットは GTY 送信プロジェクトです。FPGA がビデオを収集した後、最初にそれをデータ グループ化モジュールを使用してビデオをパッケージ化し、文字 BC およびその他の識別子に基づいて制御フレーム ヘッダーとフレーム テールを追加し、ザイリンクスの公式 UltraScale GTY IP コアを呼び出します。 5G として設定され、8b/10b エンコードされたビデオがオンボード SFP 光ポート経由で送信されます。2 番目のセットは GTY 受信プロジェクトです。SFP 光ポートは 8b/10b エンコードされたビデオを受信し、UltraScale GTY が 8b/10b デコードを実行します。処理; 次に、データは位置合わせ処理のためにデータ位置合わせモジュールに送信されます; 次に、データはデータ アンパッキング モジュールに送信されて、フレームのヘッダーと末尾が削除され、ビデオのタイミングが復元されます; 便宜上、ビデオはキャッシュされません代わりに、ザイリンクス公式 Video In to AXI4-Stream、Video Timing Controller、および AXI4-Stream to Video Out の 3 つの IP が直接呼び出され、単純にビデオをキャッシュして送信します。純粋な Verilog コードで実装された HDMI 送信モジュールRGB ビデオを HDMI ビデオに変換し、最終的にモニター表示を出力します。

設計ブロック図

詳細なエンジニアリング設計計画のブロック図は次のとおりです。
ここに画像の説明を挿入します
ブロック図の説明: 矢印はデータ フローの方向を表し、矢印内のテキストはデータ形式を表します。矢印の外側の数字はデータ フロー方向のステップを表します。< a i=2> 上の図の開発ボード 1 は、GTY 送信プロジェクトである vivado プロジェクト 1 に対応します。開発ボード 2 は、vivado プロジェクトに対応します。 2、GTY 受信プロジェクトです。

ビデオソースの選択

これは、vivado プロジェクトの最初のセットの内容です。開発者の手持ちの開発ボードに HDMI 入力インターフェイスがあるかどうかに応じて、2 種類のビデオ ソースがあります。1 つはラップトップを使用してHDMI ビデオをシミュレート、ADV7611 チップ 入力 HDMI ビデオを FPGA で使用できるように GRB にデコードします。開発ボードに HDMI 入力インターフェイスがある場合、または開発ボードの HDMI 入力デコード チップが ADV7611 ではない場合、内部で生成されたダイナミック カラー バーを使用できます。カメラ ビデオをシミュレートするコード内; ビデオ ソースの選択は、コードの最上位レベルの定義マクロ定義によって実行されます。デフォルトでは HDMI 入力がビデオ ソースとして使用されます。ビデオ ソースの選択は引き継がれます。次のように、コードのトップレベルで `define マクロ定義を実行します:
コードはトップレベルの system_wrapper .v;
ここに画像の説明を挿入します
選択内容ロジック コード部分は次のとおりです。
ここに画像の説明を挿入します
選択ロジックは次のとおりです。
COLOR_TEST を (コメント) 定義すると、入力ソース ビデオは HDMI 入力です。 a>
(コメントなしで) COLOR_TEST を定義すると、入力ソース ビデオはダイナミック カラー バーになります。

ADV7611 デコードチップの構成とコレクション

これは、vivado プロジェクトの最初のセットの内容です。ADV7611 を使用して入力 HDMI ビデオをデコードし、ボード上の ADV7611 デコード チップを備えた FPGA 開発ボードに適合します。ADV7611 デコード チップには i2c 構成が必要ですADV7611 デコード チップの構成と取得は、両方の部分が Verilog コード モジュールを使用して実装されています。コード内の解像度は 1920x1080 として構成されており、コードの場所は次のとおりです:
ここに画像の説明を挿入します
解像度コードでは 1920x1080 として設定されています;

ダイナミックカラーバー

これは、vivado プロジェクトの最初のセットの内容です。さまざまな解像度のビデオに対して動的カラー バーを構成できます。ビデオの境界線の幅、動的に移動する四角形のサイズ、移動速度などはすべてパラメータ化できます。ここでは解像度を 1920x1080 に設定しました。コードの場所、トップレベルのインターフェイス、およびダイナミック カラー バー モジュールのインスタンス化は次のとおりです。
ここに画像の説明を挿入します
ここに画像の説明を挿入します

ビデオデータパケット

これは、vivado プロジェクトの最初のセットのコンテンツです。ビデオは UltraScale GTY の aurora 8b/10b プロトコルを通じて送受信する必要があるため、データは aurora 8b/10b プロトコルに適応するようにパッケージ化する必要があります。標準; ビデオ データ パッケージ モジュール コードの場所は次のとおりです:
ここに画像の説明を挿入します
まず、16 ビット ビデオを FIFO に保存します。1 ラインがいっぱいになると、FIFO から読み出されて送信されます。送信のために GTY に送信します。その前に、ビデオのフレームを処理する必要があります。番号 (命令とも呼ばれます)。GTY がパケット化されている場合、データは固定の命令に従って送信されます。GTY がアンパックされている場合、データは固定の命令に従って復元されます。ビデオのフィールド同期信号とビデオ有効信号が復元され、ビデオのフレームのフィールド同期信号の立ち上がりエッジが到着すると、ビデオ開始コマンド 0 のフレームを送信し、ビデオのフィールド同期信号の立ち下がりエッジが到着すると、ビデオ開始コマンド 0 のフレームを送信します。ビデオのフレームが到着する、ビデオ開始コマンド 1 のフレームを送信する、ビデオ有効信号が到着するビデオ ブランキング期間中に無効データ 0 と無効データ 1 を送信する ビデオの各ラインには番号が付けられます。を送信し、その後現在のビデオライン番号を送信します ビデオを 1 行送信すると、ビデオ終了コマンドを送信します ビデオを 1 フレーム送信した後、ビデオ終了コマンド 0 のフレームを最初に送信しますビデオの別のフレーム終了コマンド 1; この時点で、ビデオの 1 フレームが送信されます このモジュールは理解しにくいため、コード内に詳細な中国語のコメントを付けました。表示順序が間違っている場合は、notepad++ エディタを使用してコードを開いてください。コマンド定義は次のとおりです:

32'h55_00_00_bc    一帧视频开始指令032'h55_00_01_bc    一帧视频开始指令132'h55_00_02_bc    无效数据032'h55_00_03_bc    无效数据132'h55_00_04_bc    一行视频开始指令;
32'h55_00_05_bc    一行视频结束指令;
32'h55_00_06_bc    一帧视频结束指令032'h55_00_07_bc    一帧视频结束指令1

命令は任意に変更できますが、最下位バイトは bc でなければなりません。

UltraScale GTY ネットワーク全体の最も詳細な解釈

UltraScale GTY の最も詳細な紹介は、間違いなくザイリンクスの公式「ug578-UltraScale Architecture GTY Transceivers」です。これを解釈するために使用しましょう: 「ug578-UltraScale Architecture GTY Transceivers」の PDF ドキュメントは情報パッケージに含まれています。入手方法は記事の最後にあります。
私が使用した開発ボードの FPGA モデルは、Kirtex UltraScale+ シリーズの xcku5p-ffvb676-1-i モデルです。 UltraScale GTY のトランシーバー速度は 500 Mb/s ~ 30.5 Gb/s で、UltraScale GTH の 2 倍です。UltraScale GTY トランシーバーは、PCIE 1.1/2.0 インターフェイス、10GbE XUAI インターフェイス、OC- 48、シリアル RapidIO インターフェイス、SATA (シリアル ATA) インターフェイス、デジタル コンポーネント シリアル インターフェイス (SDI) など。
プロジェクトは UltraScale GTY を呼び出して、Aurora 8b/のデータ エンコードとデコードを実行します。 10b プロトコル。コードの場所は次のとおりです:
ここに画像の説明を挿入します
UltraScale GTY の基本構成は次のとおりです: オンボード差動水晶発振器 125M、ライン レート構成は 5G、プロトコル タイプは aurora 8b/10b ;
ここに画像の説明を挿入します

UltraScale GTY の基本構造

Ultrascale/Ultrascale+ アーキテクチャ シリーズ FPGA では、GTY 高速トランシーバーは通常、クワッドを使用して分割されます。クワッドは、4 つの GTYE3/4_CHANNEL プリミティブと 1 つの GTYE3/4_COMMON プリミティブで構成されます。各 GTYE3/4_COMMON には、2 つの LC タンク PLL
(QPLL0 および QPLL1) が含まれています。 GTYE3/4_COMMON のインスタンス化は、アプリケーションで QPLL を使用する場合にのみ必要です。次の図は、UltraScale GTY トランシーバーの回路図を示しています。 「ug578-UltraScale アーキテクチャ GT​​Y トランシーバー」 15 ページ;
ここに画像の説明を挿入します
各 GTYE3/4_CHANNEL は、チャネル PLL (CPLL)、トランスミッター、および受信機です。以下に示すように、リファレンス クロックは GTYE3/4_COMMON をインスタンス化せずに GTYE3/4_CHANNEL プリミティブに直接接続できます。
「ug578-UltraScale アーキテクチャ GT​​Y トランシーバー」 ページ 22;
ここに画像の説明を挿入します

Ultrascale GTY トランシーバーのトランスミッター機能とレシーバー機能は互いに独立しており、物理メディア アタッチメント (物理メディア アダプテーション レイヤ PMA) と物理コーディング サブレイヤ (物理コーディング サブレイヤ PCS) で構成されます。 PMA はシリアル/パラレル変換 (PISO)、プリエンファシス、受信イコライゼーション、クロック ジェネレーター、クロック リカバリーなどを内部で統合し、PCS は 8b/10b コーデック、エラスティック バッファー、チャネル ボンディング、クロック補正などを内部で統合します。 /4_CHANNEL ソース言語の論理回路は、次の図に示されています: 「ug578-UltraScale アーキテクチャ GT​​Y トランシーバー」 17 ページ;
ここに画像の説明を挿入します
ここで多くを語ることはあまり意味がありません。私は大規模なプロジェクトをいくつか行ったことがありません。ここで何が起こっているのか理解できないでしょう。初めてのユーザーやすぐに使用したいユーザーにとっては、IP コアの呼び出しと使用にもっとエネルギーを集中する必要があります。後で IP コアの呼び出しと使用にも焦点を当てます。

UltraScale GTY リファレンス クロックの選択と分配

UltraScale デバイスの GTY トランシーバーは、さまざまなリファレンス クロック入力オプションを提供します。基準クロック選択アーキテクチャは、QPLL0、QLPLL1、および CPLL をサポートします。アーキテクチャ的には、各クワッドには 4 つの GTHE3/4_CHANNEL プリミティブ、1 つの GTHE3/4_COMMON プリミティブ、2 つの専用外部リファレンス クロック ピン ペア、および専用リファレンス クロック ルーティングが含まれています。高性能 QPLL を使用する場合は、以下の GTHE3/4_COMMON クロック マルチプレクサ構造の詳細図 (「ug576-ultrascale-gth-transceivers」の 33 ページ) に示すように、GTHE3/4_COMMON をクワッドでインスタンス化する必要があります。クワッド内の 6 つの基準クロック ピン ペア、2 つのローカル基準クロック ピン ペア: GTREFCLK0 または GTREFCLK1、上位 2 つのクワッドからの 2 つの基準クロック ピン ペア: GTSOUTHREFCLK0 または GTSOUTHREFCLK1、下位クワッドからの 2 つの基準クロック ピン ペア 2 つのクワッド: GTNORTHREFCLK0 または GTNORTHREFCLK1 。 「ug578-UltraScale アーキテクチャ GT​​Y トランシーバー」31 ページ。
ここに画像の説明を挿入します

UltraScale GTY の送受信処理フロー

まず、ユーザー ロジック データは 8B/10B エンコードされた後、送信バッファ (位相調整 FIFO) に入ります。このバッファは主に、PMA サブレイヤと PCS サブレイヤの 2 つのクロック ドメインのクロックを分離して、問題を解決するために使用されます。クロック レートのマッチングと 2 つの間の位相差の問題を解決するために、最終的に高速 Serdes がパラレル シリアル変換 (PISO) に使用されます。必要に応じて、プリエンファシス (TX プリエンファシス) とポストエンファシスが行われます。強調表示が可能です。 PCB 設計中に TXP と TXN の差動ピンが誤って相互接続された場合、この設計誤差は極性制御 (Polarity) によって補正できることに注意してください。受信側と送信側の処理は逆であり、類似点も多いため、ここでは詳しく説明しませんが、注目すべきは、クロック補正とチャネルを備えた RX 受信側のエラスティック バッファーです。バインディング関数。ここでは、機能ポイントごとに論文や本を書くことができるため、コンセプトを知ってそれを特定のプロジェクトで使用するだけで済みます。繰り返しますが、初めて使用する場合、またはすぐに使用したい場合、読者の場合は、より多くのエネルギーを集中する必要があります。 IP コアの呼び出しと使用について。

UltraScale GTY 送信インターフェイス

『ug578-UltraScale Architecture GTY Transceivers』の 101 ~ 181 ページでは、送信処理プロセスが詳しく紹介されています。マニュアルでは基本的にユーザー自身の設計について説明しているため、内容のほとんどはユーザーが詳細に説明する必要はありません。この考えに基づいて、ユーザーが操作できるインターフェイスはあまり多くありません。この考えに基づいて、UltraScale GTY をインスタンス化するときに送信側で使用されるインターフェイスに焦点を当てます。
ここに画像の説明を挿入します
ユーザーのみ必要なのは送信インターフェイスのクロックとデータだけです。UltraScale GTY インスタンシエーション モジュールのインターフェイスのこの部分は次のとおりです: ファイル名は gty_aurora_example_wrapper.v で、IP のインスタンス化後に公式によって自動的に生成されます。コード内の a> ファイル名は gty_aurora_example_top.v で、インスタンス化されます。公式 gty_aurora_example_wrapper.v;
ここに画像の説明を挿入します
ここに画像の説明を挿入します
を再バインドして、モジュールのトップレベルを作成しました。コード部分は次のとおりです:

ここに画像の説明を挿入します

UltraScale GTY 受信インターフェイス

『ug578-UltraScale Architecture GTY Transceivers』の 183 ~ 316 ページでは、送信処理プロセスが詳しく紹介されています。マニュアルでは基本的にユーザー自身の設計について説明しているため、内容のほとんどはユーザーが詳細に説明する必要はありません。この考えに基づいて、ユーザーが操作できるインターフェイスはあまり多くありません。この考えに基づいて、UltraScale GTY をインスタンス化するときに送信側で使用されるインターフェイスに焦点を当てます。
ここに画像の説明を挿入します
ユーザーのみ必要なのは送信インターフェイスのクロックとデータだけです。UltraScale GTY インスタンシエーション モジュールのインターフェイスのこの部分は次のとおりです: ファイル名は gty_aurora_example_wrapper.v で、IP のインスタンス化後に公式によって自動的に生成されます。コード内の a> ファイル名は gty_aurora_example_top.v で、インスタンス化されます。公式 gty_aurora_example_wrapper.v;
ここに画像の説明を挿入します
ここに画像の説明を挿入します
を再バインドして、モジュールのトップレベルを作成しました。コード部分は次のとおりです:

ここに画像の説明を挿入します

UltraScale GTY IP コアの呼び出しと使用法

ここに画像の説明を挿入します
UltraScale GTY の基本構成は次のとおりです: オンボード差動水晶発振器 125M、ライン レート構成は 5G、プロトコル タイプは aurora 8b/10b と呼ばれます。
ここに画像の説明を挿入します
特定の構成については, IP の vivado プロジェクトを参照してください。設定後、サンプル プロジェクトを開いて、その中のファイルをコピーして、自分のプロジェクトで使用する必要があります。ただし、この手順は私のプロジェクトですでに行われています。サンプル プロジェクトを開く方法は次のとおりです:
ここに画像の説明を挿入します

データアライメント

これは vivado プロジェクトの 2 つ目の内容ですが、aurora 8b/10b の GT リソースのデータ送受信では当然データのずれが存在するため、受信したデコードデータに対してデータのアライメント処理を行う必要があります。データ アライメント モジュールのコードの場所は次のとおりです。
ここに画像の説明を挿入します
私が定義した K コード制御文字の形式は XX_XX_XX_BC なので、rx_ctrl を使用してデータが K コード COM シンボルであるかどうかを示します。< /span>

rx_ctrl = 4'b0000 表示 4 字节的数据没有 COM 码;
rx_ctrl = 4'b0001 表示 4 字节的数据中[ 7: 0] 为 COM 码;
rx_ctrl = 4'b0010 表示 4 字节的数据中[15: 8] 为 COM 码;
rx_ctrl = 4'b0100 表示 4 字节的数据中[23:16] 为 COM 码;
rx_ctrl = 4'b1000 表示 4 字节的数据中[31:24] 为 COM 码;

これに基づいて、K コードを受信すると、データが整列され、データがビートされて新しい受信データと結合されます。これは FPGA の基本的な動作であるため、ここでは繰り返しません。

動画データの解凍

これは、vivado プロジェクトの 2 番目のセットの内容です。データの解凍はデータ グループ化の逆のプロセスで、コードの場所は次のとおりです。
ここに画像の説明を挿入します
UltraScale GTY は、次のとおりビデオを復元します。解凍時の命令を修正しました。 フィールド同期信号とビデオ有効信号。これらの信号は後続の画像キャッシュにとって重要な信号です。これまでのところ、GTX に出入りするデータの部分は完了しています。

SFP 光ポート ループバックの選択

ボードには 2 つの SFP 光ポートがあります。ループバックに 1 つの SFP 光ポートを使用することも、ループバックに 2 つの SFP 光ポートを使用することもできます。コード内の SFP_0_LOOP マクロを定義することで選択できます。電源投入後はデフォルトで使用されます。SFP 光ポートはループバックを実行します。コード部分は次のとおりです:
コードは uiAurora_8b10b_vid.v にあります。
ここに画像の説明を挿入します
ここに画像の説明を挿入します
選択ロジックは次のとおりです:
(コメント) SFP_0_LOOP を定義する場合、2 つの SFP 光ポート ループバックを選択します;
(コメントなしで) COLOR_TEST を定義する場合、1 つの SFP を選択します光ポート ループバック;
これが説明です 見てみましょう:
プロジェクト 1 は SFP 光ポート 1 の送信のみを使用するため、SFP_0_LOOP についてのコメントはありません。
プロジェクト 2 は SFP 光ポート 2 の受信のみを使用するため、SFP_0_LOOP はコメントアウトされます。

画像出力アーキテクチャ

これは、vivado プロジェクトの 2 番目のセットの内容です。便宜上、ビデオはここにキャッシュされませんが、Video In to AXI4-Stream、Video Timing Controller、および AXI4-Stream to Video Out の 3 つの公式ザイリンクス IP がキャッシュされます。ビデオは単純にキャッシュされ、純粋な Verilog コードで実装された HDMI 送信モジュールに送信され、RGB ビデオが HDMI ビデオに変換され、最終的にモニタ ディスプレイに出力されます。純粋な Verilog コードは、使用されるプリミティブが変更されているため、UltraScale PLUS シリーズ FPGA に適しています。UltraScale PLUS は 7 シリーズ FPGA とは異なるプリミティブを使用します。

4. vivado プロジェクト 1 –> GTY 送信プロジェクト

開発ボード FPGA モデル: Xilinx–Kirtex UltraScale+ シリーズの xcku5p-ffvb676-1-i;
開発環境: Vivado2022.2;
入力: HDMI またはダイナミック カラー バー、解像度 1920x1080@60Hz;
出力: SFP 光ポートの TX ポート;
アプリケーション: FPGA UltraScale GTYネットワーク全体、aurora 8b/10b コーデック、ボードツーボード ビデオ伝送;
エンジニアリング コードの構造は次のとおりです:
ここに画像の説明を挿入します
FPGA リソース消費量と電力消費量の推定包括的なコンパイルが完了した後は次のようになります:
ここに画像の説明を挿入します

5. vivado プロジェクト 2 –> GTY 受信プロジェクト

開発ボード FPGA モデル: Xilinx–Kirtex UltraScale+ シリーズの xcku5p-ffvb676-1-i;
開発環境: Vivado2022.2;
入力: SFP 光ポートの RX ポート;
出力: HDMI;
アプリケーション: FPGA UltraScale GTY ネットワーク全体、aurora 8b/10b コーデック、ボードのペアリング ボードのビデオ送信;
プロジェクトのブロック デザインは次のとおりです:
ここに画像の説明を挿入します
プロジェクトのコード構造は次のとおりです:
ここに画像の説明を挿入します
包括的なコンパイルが完了した後の FPGA リソース消費量と消費電力の見積もりは次のとおりです。
ここに画像の説明を挿入します

6. プロジェクト移植指示

Vivado バージョンの不一致の処理

1: vivado バージョンがこのプロジェクトの vivado バージョンと一致している場合は、プロジェクトを直接開きます。
2: vivado バージョンがこのプロジェクトの vivado バージョンよりも低い場合プロジェクトの後に、[ファイル] –> [名前を付けて保存] をクリックして開く必要があります。ただし、この方法は安全ではありません。最も安全な方法は、vivado バージョンをこのプロジェクトの vivado バージョンまたはそれ以降のバージョンにアップグレードすることです。
ここに画像の説明を挿入します
3 : vivado バージョンがこのプロジェクトの vivado バージョンよりも高い場合、解決策は次のとおりです。
ここに画像の説明を挿入します
プロジェクトを開いた後、IP がロックされていることがわかります。次のように:
ここに画像の説明を挿入します
現時点では IP をアップグレードする必要があります。次のようにしてください:
ここに画像の説明を挿入します
ここに画像の説明を挿入します

FPGAモデルの不一致の処理

使用している FPGA モデルが私のものと一致しない場合は、FPGA モデルを変更する必要があります。操作は次のとおりです:
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
FPGA モデルを変更した後は、IP もアップグレードする必要があります。 . IP をアップグレードする方法は前に説明しました。 ;

その他の注意事項

1: 各ボードの DDR は必ずしも完全に同じであるとは限らないため、MIG IP は独自の回路図に従って構成する必要があります。ここで元のプロジェクトの MIG を直接削除して、再度追加することもできます。 IP を取得して再構成します。
2: 独自の回路図に従ってピン制約を変更します。xdc ファイル内で変更するだけです。
3: 純粋な FPGA を移植します。 Zynq への追加は、プロジェクトの zynq ソフト コアの追加で実行する必要があります。

7. ボードのデバッグと検証

準備

2 つの FPGA 開発ボード。
ノートパソコン、ボードに HDMI 入力インターフェイスがない場合は、ダイナミック カラー バーを選択できます。
SFP 光学ポート モジュールと光ファイバー;
光ファイバーを接続し、ボードの電源を入れ、ビットをダウンロードします;
2 つのボード間のファイバー接続は次のとおりです。
ここに画像の説明を挿入します

静的なプレゼンテーション

HDMI 入力: UltraScale GTY が 5 ライン レートで実行されている場合、出力は次のようになります。
ここに画像の説明を挿入します
ダイナミック カラー バー入力: UltraScale GTY が 5G ライン レートで実行されている場合、出力は次のようになります。次のとおりです:
ここに画像の説明を挿入します

ダイナミックなプレゼンテーション

ダイナミック カラー バー出力の短いビデオが録画されました。出力のダイナミック デモンストレーションは次のとおりです。

V7-GTH-カラー

8. メリット:エンジニアリングコードの取得

利点: エンジニアリング コードの取得
コードが大きすぎるため、電子メールで送信できません。特定のネットワーク ディスク リンクを介して送信されます。
データの入手方法:非公開、または記事末尾のV名刺。
ネットワーク ディスク情報は次のとおりです。
ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/qq_41667729/article/details/134947297