FPGA XDMA 割り込みモードにより PCIE3.0 ビデオ キャプチャが実現 OV5640 カメラはエンジニアリング ソース コードと QT ホスト コンピューター ソース コードの 2 セットを提供

1 はじめに

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

このデザインは、ザイリンクスの公式 XDMA ソリューションを使用してザイリンクス シリーズ FPGA に基づく PCIE3.0 通信プラットフォームを構築し、XDMA 割り込みモードを使用して QT ホスト コンピューターと通信します。つまり、QT ホスト コンピューターはソフトウェアを介して FPGA とのデータ対話を実装します。割り込み; 入力は OV5640 です カメラの解像度は 1280x720@60Hz です; ビデオ取得モジュールは、OV5640 カメラによって入力された RGB565 データを収集し、RGB888 データに変換し、FDMA ビデオ 3 フレームを通じてビデオを DDR に書き込みますバッファ アーキテクチャ、XDMA は DDR3 からビデオを読み取ります。PCIE バスはコンピュータ ホストに送信され、コンピュータ ホストは QT ホスト コンピュータ ソフトウェアを実行します。QT ソフトウェアは、PCIE によって送信された画像データをオン/オフ モードで受信し、リアルタイムの画像。

2 セットの vivado プロジェクト ソース コードを提供します。最初の入力セットは 1 チャンネル OV5640 カメラ、解像度は 1280X720、画像バッファリング後、XDMA によって読み取られ、PCIE3.0 バス経由で表示するために QT ホスト コンピューターに送信されます。2 番目のセットは、入力セットは 2 チャンネルの OV5640 カメラ、解像度 640X480、画像バッファリング後に XDMA によって読み出され、PCIE3.0 バス経由で表示するために QT ホスト コンピュータに送信されます。

この設計の鍵は、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.全体のデザインアイデアとスキーム

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

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

OV5640 カメラとビデオ取得:
OV5640 の解像度は 1280x720@60Hz で、純粋な Verilog によって実装された i2c プロトコルは、整列された内部レジスタの構成を実現し、純粋な Verilog によって実装された画像取得モジュールは、OV5640 の出力ビデオを RGB888 ビデオ出力としてキャプチャします。 VGA タイミング; 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 プロジェクト 1 –> シングルチャンネル ビデオ キャプチャ

開発ボード FPGA モデル: Xilinx–xcku060-ffva1156-2-i;
開発環境: Vivado2022.2;
入力: 解像度 1280x720@60Hz の単一 OV5640 カメラ;
出力: PCIE3.0 X8;
アプリケーション: QT ホスト コンピューターのビデオ ディスプレイテスト;
プロジェクト BD は次のとおりです:
ここに画像の説明を挿入
XDMA は割り込みの数を設計する必要があり、構成は次のとおりです:
ここに画像の説明を挿入
ここに画像の説明を挿入
同時に、XDMA 割り込みモジュールの割り込みの数も次のように 4 に設定されます:
ここに画像の説明を挿入
コード合成後の構造は次のとおりです。
ここに画像の説明を挿入
総合コンパイル後の FPGA リソース消費量と消費電力の見積もりは次のとおりです。
ここに画像の説明を挿入

6. vivado プロジェクト 2 –> 双方向ビデオ キャプチャ

開発ボード FPGA モデル: Xilinx–xcku060-ffva1156-2-i;
開発環境: Vivado2022.2;
入力: デュアル OV5640 カメラ、解像度 640x480@60Hz;
出力: PCIE3.0 X8;
アプリケーション: QT ホスト コンピューターのビデオ ディスプレイ テスト。
プロジェクト BD は次のとおりです。
ここに画像の説明を挿入
各チャネルのビデオ キャプチャとバッファリングは次のとおりです。
ここに画像の説明を挿入
XDMA は割り込みの数を設計する必要があり、構成は次のとおりです。
ここに画像の説明を挿入
ここに画像の説明を挿入
同時に、XDMA 割り込みモジュールの割り込みの数はまた、次のように 4 に設定されます。
ここに画像の説明を挿入
合成後のコード構造は次のとおりです。
ここに画像の説明を挿入
包括的なコンパイル 完了後の FPGA の推定リソース消費量と消費電力は次のとおりです。
ここに画像の説明を挿入

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

PCIe 受信ビデオ テスト用のホスト コンピューター テスト プログラムを開き、QT ソフトウェアを開きます。実験結果は次のとおりです。シングル
チャネル ビデオ ディスプレイは次のとおりです。
読み取りおよび書き込み中にテストします。
デュアル チャネル ビデオ ディスプレイは次のとおりです。
ここに画像の説明を挿入

8. メリット:技術基準の取得

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

おすすめ

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