FPGA XDMA 割り込みモードで PCIE X8 HDMI ビデオ キャプチャを実現 エンジニアリング ソース コードと QT ホスト コンピューター ソース コードを提供

1 はじめに

PCIE (PCI Express) は、業界で現在普及しているポイントツーポイント シリアル接続を採用しています。PCI および以前のコンピュータ バスの共有並列アーキテクチャと比較して、各デバイスには独自の専用接続があります。デバイスから帯域幅を要求する必要はありません。データ伝送速度を非常に高い周波数まで向上させ、PCI では提供できない高帯域幅を実現することは、現在さまざまな業界における高速インターフェイスの好ましい方向性であり、高い実用的価値と学習的価値を持っています。

このデザインは、ザイリンクスの公式 XDMA ソリューションを使用してザイリンクス シリーズ FPGA に基づく PCIE 通信プラットフォームを構築し、XDMA 割り込みモードを使用して QT ホスト コンピューターと通信します。つまり、QT ホスト コンピューターはソフトウェア割り込みを介して FPGA とのデータ対話を実装します。ラップトップを使用して HDMI をシミュレートします。カメラと HDMI ビデオは FPGA 開発ボード上の ADV7611 デコード チップに入力され、そこで HDMI ビデオが RGB ビデオにデコードされ、そのビデオが FDMA ビデオ 3 フレーム バッファ アーキテクチャを通じて DDR に書き込まれます。 XDMA は DDR3 からビデオを読み取り、PCIE を通過します。バスはコンピューター ホストに送信され、コンピューター ホストは QT ホスト コンピューター ソフトウェアを実行します。QT ソフトウェアは、PCIE によって送信された画像データをオン/オフ モードで受信し、画像を表示します。リアルタイムで;

この設計の鍵は、xdma_inter.v の XDMA 割り込みモジュールを作成したことです。このモジュールはドライバーと連携して割り込みを処理するために使用されます。xdma_inter.v は AXI-LITE インターフェイスを提供します。ホスト コンピューターはユーザー空間アドレスにアクセスすることにより、xdma_inter.v のレジスターを読み書きします。user_irq_req_i で入力された割り込みビットに割り込みビット番号を登録し、XDMA IP に出力し、上位コンピュータのドライバが割り込みに応答すると、割り込みに xdma_inter.v レジスタを書き込み、処理済みの割り込みをクリアします。

このソリューションはザイリンクス シリーズ FPGA にのみ適用でき、XDMA インストール ドライバーと QT ホスト コンピューターのソース コードも提供するため、XDMA を使用して面倒なドライバーやホスト コンピューター ソフトウェア開発を見つけたり、vivado プロジェクトを構築したりする手間が省けます。これにより、XDMA の使用方法が分からないという当惑がなくなり、複雑な PCIE プロトコルを気にすることなく PCIE を簡単に使用できるようになります; 私の開発ボードは PCIE X8 のみをサポートしているため、提供されるコードは PCIE X8 アーキテクチャです。 PCIE X1、X2、X8、X16、X32 はこのプロジェクトを自分で変更することができます。または私に従ってください。新しいプロジェクトをリアルタイムでリリースします。
本プロジェクトでは、高度なアプリケーション向けにPCIE通信を実装し、QTホストコンピュータとの映像伝送テストを実施します。
ここに画像の説明を挿入
この記事では、XDMA に基づいて PCIE 通信プラットフォームを構築するための設計スキームについて詳しく説明します. エンジニアリング コードはボード上で包括的にコンパイルおよびデバッグでき、直接移植することができます. 医療、軍事およびその他の産業における高速インターフェイス分野;
完全かつスムーズなエンジニアリング ソース コードと技術サポートを提供します;
エンジニアリング ソース コードと技術サポートを入手する方法は記事の最後にありますので、最後までお待ちください。

2. 既存の PCIE ソリューション

私のホームページには、XDMA のポーリング モードに基づいて QT ホスト コンピューターとのデータ通信を実装する PCIE 通信の欄があります。RIFFA に基づいた PCIE ソリューションと XDMA に基づいた PCIE ソリューションの両方があり、単純なデータ通信と速度測定の両方があります。また、アプリケーション レベルの画像取得と送信も可能です。以下は列アドレスです。
クリックして直接移動します
。さらに、私のホームページには、XDMA 割り込みモードに基づいて QT ホスト コンピューターとのデータ通信を実現する割り込みモードの PCIE 通信列があります。以下は列アドレスです:クリックして直接移動します

3. PCIE理論

この部分については、Baidu、csdn、Zhihu などから理論的な知識を学ぶことができますが、実際には XDMA が使用されており、PCIE までは複雑なプロトコルや理論は必要ありません。

4.全体のデザインアイデアとスキーム

全体的な設計アイデアとスキームは次のとおりです。
ここに画像の説明を挿入

ビデオキャプチャとバッファリング

ラップトップ コンピュータを使用して HDMI カメラをシミュレートし、HDMI ビデオを FPGA 開発ボード上の ADV7611 デコード チップに入力し、HDMI ビデオを RGB ビデオにデコードします。純粋な Verilog によって実装された i2c プロトコルは、内部レジスタの構成を実現します。 ADV7611 デコード チップ、設計構成は
1920x1080 @60Hz 解像度、
FDMA 画像キャッシュ:
FDMA 画像 3 フレーム キャッシュ、私の記事をよく読んでいる兄弟なら、これが私の通常の画像キャッシュ ルーチンであり、FDMA コントローラーと FDMA で構成されていることを知っています。その機能は、入力ビデオをキャッシュすることです。DDR3 で 3 つのフレーム バッファを実行してから読み出した後、クロック ドメイン全体で画像データの入出力を読み書きすることが目的であり、出力画像は安定しています。引き裂くことなく; FDMA の詳細な設計の説明については、私の以前の記事を参照してください

XDMA の概要

ザイリンクスが提供する PCIExpressIP 用 DMASubsystem は、PCIE2.0 および PCIE3.0 に適した高性能の構成可能な SG モード DMA であり、ユーザーが選択可能な AXI4 インターフェイスまたは AXI4-Stream インターフェイスを提供します。一般に、AXI4 インターフェイスはシステム バスの相互接続に追加でき、大量のデータの非同期送信に適しています。通常は DDR が使用され、AXI4-Stream インターフェイスは低レイテンシのデータ ストリーム送信に適しています。
XDMA はブロック DMA ではなく SGDMA です。SG モードでは、ホストはリンク リストの形式で送信するデータを形成し、リンク リストの最初のアドレスを BAR 経由で XDMA に送信します。XDMA が送信タスクを完了します。リンク リスト構造の最初のアドレスに従って、リンク リストによって順番に指定されます。XDMA ブロック図は次のとおりです:
ここに画像の説明を挿入
AXI4、AXI4-Stream、データ送信用にいずれかを選択する必要があります AXI4-Lite マスターはオプションで、実現するために使用されますPCIE BAR アドレスから AXI4-lite レジスタ アドレスへのマッピングを使用し、ユーザー ロジック レジスタの読み書きに使用できます。
AXI4-Lite スレーブはオプションであり、XDMA 内部レジスタをユーザー ロジックに開くために使用されます。ユーザー ロジックは、このインターフェイスを通じて XDMA 内部レジスタにアクセスでき、BAR にはマップされません。
AXI4 Bypass インターフェイス (オプション) は、PCIE パススルー ユーザー ロジック アクセスの実装に使用され、低レイテンシのデータ送信に使用できます。

XDMA割り込みモード

この設計の鍵は、xdma_inter.v の XDMA 割り込みモジュールを作成したことです。このモジュールはドライバーと連携して割り込みを処理するために使用されます。xdma_inter.v は AXI-LITE インターフェイスを提供します。ホスト コンピューターはユーザー空間アドレスにアクセスすることにより、xdma_inter.v のレジスターを読み書きします。user_irq_req_i で入力された割り込みビットに割り込みビット番号を登録し、XDMA IP に出力し、上位コンピュータのドライバが割り込みに応答すると、割り込みに xdma_inter.v レジスタを書き込み、処理済みの割り込みをクリアします。
さらに、このプログラムでは、AXI-BRAM を使用してユーザー空間の読み取りおよび書き込みアクセス テストをデモンストレーションします。

QT ホスト コンピューターとそのソース コード

QT ホスト コンピュータ このプログラムは、VS2015 + Qt 5.12.10 を使用して、ホスト コンピュータの開発ソフトウェア環境を完成します QT プログラムは、公式 XDMA API を呼び出し、割り込みモードで FPGA とのデータ通信を実現します このルーチンは、読み取りおよび書き込み速度の測定を実装しますQT ホスト コンピュータを提供します。 ソフトウェアとそのソース コードのパスは次のとおりです。
ここに画像の説明を挿入
QT ソース コードのスクリーンショットは次のとおりです。
ここに画像の説明を挿入

5. vivadoプロジェクトの詳細説明

開発ボード FPGA モデル: Xilinx–xc7k325tffg900-2;
開発環境: Vivado2022.2;
入力: HDMI、解像度 1920x1080@60Hz;
出力: PCIE2.0 X8;
アプリケーション: QT ホスト コンピューターのビデオ表示テスト;
プロジェクト BD:
ここに画像の説明を挿入
XDMA割り込み数を設計する必要があり、構成は次のようになります。
ここに画像の説明を挿入
同時に、XDMA 割り込みモジュールの割り込み数も次のように 4 に設定されます。
ここに画像の説明を挿入
合成後のコード構造は次のようになります。
ここに画像の説明を挿入
FPGA リソース合成コンパイル後の消費電力と消費電力は次のように見積もられます。
ここに画像の説明を挿入

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

PCIe 受信ビデオ テスト用のホスト コンピューター テスト プログラムを開き、QT ソフトウェアを開きます。実験結果は次のとおりです。
ここに画像の説明を挿入

7. 福利厚生:技術コード取得

メリット: エンジニアリングコードの取得
コードは電子メールで送信するには大きすぎるため、ある程度のネットワークディスクリンクで送信
データの取得方法: 非公開、または記事末尾の V 名刺
ネットワークディスク情報は以下のとおりです。
ここに画像の説明を挿入
ここに画像の説明を挿入

おすすめ

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