Zynq ワークフローでの AXI4-Stream Video インターフェイスを使用したモデルの展開
この例では、生成された HDL IP コアでの高速ビデオ ストリーミングを可能にする AXI4-Stream Video インターフェイスの使用方法を説明します。
はじめる前に
この例を実行するには、次のソフトウェアとハードウェアをインストールして設定していなければなりません。
HDL Coder™ Support Package for Xilinx® Zynq® Platform
Embedded Coder® Support Package for Xilinx Zynq Platform
Vision HDL Toolbox™ Support Package for Xilinx Zynq-Based Hardware
Vision HDL Toolbox
HDL の言語サポートおよびサポートされるサードパーティ製ツールとハードウェアにリストされている、サポートされているバージョンの Xilinx Vivado® Design Suite
ZedBoard
FMC HDMI I/O カード (FMC-HDMI-CAM または FMC-IMAGEON)
ZedBoard を設定するには、例Getting Started with Targeting Xilinx Zynq Platformの「Set up Zynq hardware and tools」セクションを参照してください。
はじめに
以下の例では、次のような操作方法を説明します。
ストリーミング ピクセル プロトコルを使用したビデオ ストリーミング アルゴリズムのモデル化。
AXI4-Stream Video インターフェイスを使用した HDL IP コアの生成。
HDMI インターフェイスにアクセスできる ZedBoard ビデオ リファレンス設計への生成された IP コアの統合。
ARM® プロセッサを使用した FPGA ファブリックでのパラメーター調整によるライブ ビデオ出力の変更。
独自のカスタム ビデオ リファレンス設計の作成。
上記の図は、生成された HDL DUT IP コアが事前定義されたビデオ リファレンス設計でどのように機能するかを示すアーキテクチャの概要図です。この図で、HDL DUT IP ブロックは IP コアの生成ワークフローから生成された IP コアです。図の他の部分は事前定義されたビデオ リファレンス設計を表し、この設計には HDMI 入力インターフェイスと HDMI 出力インターフェイスを処理する他の IP が含まれます。
HDL DUT IP は、HDMI 入力 IP からのビデオ ストリームを処理し、出力ビデオ ストリームを生成して HDMI 出力 IP に送信します。これらのビデオ ストリームはすべて AXI4-Stream Video インターフェイスで転送されます。
HDL DUT IP には、パラメーター調整のために AXI4-Lite インターフェイスを含めることもできます。AXI4-Lite インターフェイスと比べて、AXI4-Stream Video インターフェイスは、データをより高速に転送するため、ビデオ アルゴリズムのデータ パスにより適しています。
Zynq ハードウェアとツールの設定
1.以下の図に示すように ZedBoard と FMC HDMI I/O カードを設定します。ZedBoard ハードウェア セットアップの詳細については、ボードのドキュメントを参照してください。
1.1. 上の図 (マーカー 1 ~ 3) に示すように USB UART ケーブル、イーサネット ケーブルおよび電力ケーブルを接続します。
1.2. 上の図 (マーカー 4) に示すように JP7
~ JP11
のジャンパーが設定されており、Linux を SD カードから起動できるようになっていることを確認します。JP7
: 下、JP8
: 下、JP9
: 上、JP10
: 上、JP11
: 下です。
1.3. 上の図 (マーカー 5) に示すように J18
のジャンパーが 2V5 で設定されていることを確認します。
1.4. 上の図 (マーカー 6) に示すように HDMI ビデオ ソースを FMC HDMI I/O カードに接続します。ビデオ ソースは 1080p ビデオ出力 (ビデオ カメラ、スマート フォン、タブレット、コンピューターの HDMI 出力など) を提供できなければなりません。
1.5. 上の図 (マーカー 7) に示すようにモニターを FMC HDMI I/O カードに接続します。モニターは 1080p 表示をサポートできなければなりません。
2. まだインストールしていない場合は、HDL Coder、Embedded Coder Support Packages for Xilinx Zynq Platform、および Vision HDL Toolbox Support Package for Xilinx Zynq-Based Hardware をインストールします。サポート パッケージをインストールするには、MATLAB® ツールストリップに移動して [アドオン]、[ハードウェア サポート パッケージの入手] をクリックします。
3. Embedded Coder Support Package for Xilinx Zynq Platform で提供される SD カード イメージを使用していることを確認します。SD カード イメージを更新する必要がある場合は、Install Support for Xilinx Zynq Platform (Embedded Coder Support Package for Xilinx Zynq Platform)の「Hardware Setup」セクションを参照してください。
4.MATLAB コマンド ウィンドウで次のコマンドを入力して Zynq ハードウェア接続を設定します。
h = zynq
関数 zynq
は COM ポートを介してハードウェアにログインし、ifconfig
コマンドを実行してボードの IP アドレスを取得します。この関数はイーサネット接続のテストも行います。
5. MATLAB コマンド ウィンドウで次のコマンドを使用して Xilinx Vivado 合成ツール パスを設定します。コマンドを実行するときに独自の Vivado インストール パスを使用します。
hdlsetuptoolpath('ToolName', 'Xilinx Vivado', 'ToolPath', 'C:\Xilinx\Vivado\2020.2\bin\vivado.bat')
ストリーミング ピクセル プロトコルを使用したビデオ ストリーミング アルゴリズムのモデル化
Zynq に簡単なソーベル エッジ検出アルゴリズムを展開するには、まず、設計のどの部分を FPGA で実行し、設計のどの部分を ARM プロセッサで実行するかを特定します。この例では、エッジ検出器を FPGA に実装し、着信ビデオ ストリームを AXI4-Stream Video プロトコルで処理します。また、ARM プロセッサを使用して FPGA でパラメーターを調整し、ライブ ビデオ出力を変更します。
モデル例では、DUT サブシステム Sobel_HW が Edge Detector ブロックを使用してソーベル エッジ検出アルゴリズムを実装します。ビデオ データと制御信号は、Vision HDL Toolbox のすべてのブロックで使用されるビデオ ストリーミング ピクセル プロトコルでモデル化されています。pixelIn と pixelOut はビデオ ストリームのデータ端子です。ctrlIn と ctrlOut はビデオ ストリームの制御端子です。これらは、信号 hStart、hEnd、vStart、vEnd、valid を含むバス データ型 (ピクセル制御バス) を使用してモデル化されています。
4 つの入力端子 Threshold、Sobel_Enable、Background_Color および Show_Gradient は、ソーベル エッジ検出アルゴリズムのパラメーターを調整する制御端子です。Slider Gain ブロックまたは Manual Switch ブロックを使用してこれらの端子の入力値を調整できます。これらの端子を AXi4-Lite インターフェイスにマッピングすると、生成された AXI インターフェイスのアクセス可能なレジスタに書き込むことで、ARM プロセッサが生成された IP コアを制御できます。
modelname = 'hdlcoder_sobel_video_stream';
open_system(modelname);
sim(modelname);
AXI4-Stream Video インターフェイスを使用した HDL IP コアの生成
次に、HDL ワークフロー アドバイザーを起動し、Zynq ハードウェア ソフトウェア協調設計ワークフローを使用して、この設計を Zynq ハードウェアに展開します。詳しい手順については、Getting Started with Targeting Xilinx Zynq Platformの例を参照してください。
1.DUT サブシステム hdlcoder_sobel_video_stream/Sobel_HW
から HDL ワークフロー アドバイザーを起動します。このモデル例では、ターゲット インターフェイスの設定は既に保存されているため、タスク 1.1 ~ 1.3 の設定は自動的に読み込まれます。モデルのターゲット インターフェイス設定の保存の詳細については、Save Target Hardware Settings in Modelの例を参照してください。
タスク 1.1 では、[ターゲット ワークフロー] については [IP Core Generation] が選択され、[ターゲット プラットフォーム] については [ZedBoard] が選択されます。
タスク 1.2 では、[リファレンス設計] については [Default video system (requires HDMI FMC module)] が選択されます。
タスク 1.3 では、次の図に示すように [ターゲット プラットフォーム インターフェイス テーブル] が読み込まれます。ビデオ データ ストリーム端子 pixelIn、ctrlIn、pixelOut、および ctrlOut は AXI4-Stream Video インターフェイスにマッピングされ、Threshold などの制御パラメーター端子は AXI4-Lite インターフェイスにマッピングされます。
AXI4-Stream Video インターフェイスはマスター/スレーブ モードで通信します。このモードでは、マスター デバイスがデータをスレーブ デバイスに送信します。したがって、データ端子が入力端子である場合、これを AXI4-Stream Video スレーブ インターフェイスに割り当て、データ端子が出力端子である場合、これを AXI4-Stream Video マスター インターフェイスに割り当てます。
2. タスク 3.2 [RTL コードと IP コアの生成] を右クリックして、[選択したタスクまで実行] を選択し、IP コアを生成します。生成された IP コア レポート内の IP コアについては、レジスタ アドレス マッピングおよびその他のドキュメントを参照してください。
AXI4-Stream Video に互換するリファレンス設計への IP の統合
次に、HDL ワークフロー アドバイザーで、[組み込みシステムの統合] タスクを実行して、生成された HDL IP コアを Zynq ハードウェアに展開します。
1.タスク 4.1 [プロジェクトを作成] を実行します。このタスクでは、生成された IP コアが [Default video system] リファレンス設計に挿入されます。最初の図に表示されているように、このリファレンス設計には、HDMI 入力インターフェイスと HDMI 出力インターフェイスを処理する IP が含まれます。また、YCbCr から RGB への色空間変換を行う IP も含まれます。生成されたプロジェクトは完全な Zynq 設計であり、アルゴリズム部分 (生成された DUT アルゴリズムの IP) とプラットフォーム部分 (リファレンス設計) が含まれます。
2. [結果] ペインのリンクをクリックして、生成された Vivado プロジェクトを開きます。Vivado ツールで、[Open Block Design] をクリックして Zynq 設計図を表示します。これには、生成された HDL IP コア、その他のビデオ パイプライン IP、および Zynq プロセッサが含まれます。
3. HDL ワークフロー アドバイザーで、残りのタスクを実行してソフトウェア インターフェイス モデルを生成し、FPGA ビットストリームを作成およびダウンロードします。[ターゲット デバイスをプログラム] タスクで [ダウンロード] プログラミング メソッドを選択して、FPGA ビットストリームを ZedBoard 上の SD カードにダウンロードし、ZedBoard の電源をオフ/オンすると設計が自動的に再読み込みされるようにします。
FPGA ファブリックでパラメーターを調整するための ARM 実行可能ファイルの生成
ソフトウェア インターフェイス モデルはタスク 4.2 [ソフトウェア インターフェイス モデルを生成] で生成されます。
1.ソフトウェア インターフェイス モデルからコードを生成する前に、次の図に示すように、生成されたモデルで Video Source と Video Viewer をコメント アウトします。これらのブロックは ARM プロセッサで実行する必要はありません。ARM プロセッサは AXI4-Lite インターフェイスを使用して FPGA ファブリックを制御しています。実際のビデオ ソースと表示インターフェイスはすべて FPGA ファブリックで実行されています。ビデオ ソースは HDMI 入力から取得され、ビデオ出力は HDMI 出力に接続されているモニターに送信されます。
2. エクスターナル モードのソフトウェア インターフェイス モデルを構成してビルドします。
生成されたモデルで、[コンフィギュレーション パラメーター] ダイアログ ボックスを開きます。
[ソルバー] を選択して [終了時間] を [inf] に設定します。
モデル メニューから [シミュレーション]、[モード]、[エクスターナル] を選択します。
モデル ツールストリップで [実行] ボタンをクリックします。Embedded Coder は、モデルを構築し、ARM 実行可能ファイルを ZedBoard ハードウェアにダウンロードして、これを実行し、モデルを ZedBoard ハードウェアで実行しているこの実行可能ファイルに接続します。
3. これで、設計のハードウェア部分とソフトウェア部分が Zynq ハードウェアで実行されます。Sobel_Enable スイッチを使用して、ライブ ビデオ出力がエッジ検出器出力と元のビデオの間で切り替わることを確認します。Threshold スイッチまたは Background_Color スイッチを使用して、ライブ ビデオ出力に対するエッジ検出のさまざまな影響を確認します。これらのパラメーター値は、エクスターナル モードと AXI4-Lite インターフェイスを介して Zynq ハードウェアに送信されます。
ビデオ リファレンス設計のカスタマイズ
既存の [Default video system] リファレンス設計を拡張して前処理または後処理カメラ パイプライン IP をさらに追加したり、別の SoC ハードウェアまたはビデオ カメラ インターフェイスを使用したりできます。[Default video system] リファレンス設計は例であり、独自のカスタム リファレンス設計を作成する開始点になります。
たとえば、[Default video system] リファレンス設計には、次の図に示すように、YCbCr から RGB への色空間変換を行う 2 つの IP コアが含まれています。これら 2 つの IP コアは、HDL Coder で生成されたものと IP コアの生成ワークフローを使用して生成されたものです。必要に応じて、他の前処理または後処理カメラ パイプライン IP コアを生成してカスタム リファレンス設計に追加し、ビデオ プラットフォームを拡張できます。
独自のカスタム リファレンス設計の作成の詳細については、Zynq ワークフロー用のカスタムのボードとリファレンス設計の定義の例を参照してください。