Main Content

このページは機械翻訳を使用して翻訳されました。元の英語を参照するには、ここをクリックします。

Zynq の組み込みイーサネットを活用して AXI マネージャーを使用してメモリ アクセスを実行する

この例では、イーサネットベースの AXI マネージャーを使用して、イーサネット経由で Xilinx® Zynq®-7000 ZC706 ボード上の外部メモリと FPGA IP にアクセスする方法を示します。Xilinx Zynq ベースの設計では、MATLAB® は AXI マネージャーとして機能し、処理システム (PS) の伝送制御プロトコル (TCP) サーバーを使用して、AXI4 メモリマップ インターフェイスを介して外部メモリ コントローラーおよび FPGA IP と通信します。このブロック図は、イーサネット経由のホストと Xilinx Zynq-7000 ボード間の通信を示しています。

この例では、これらの手順とこの図に概説されている操作を示します。

  1. サイズ 24 x 64 の ASCII イメージを Region1 に書き込みます。

  2. イメージ回転 IP を設定して、リージョン 1 からイメージを読み取り、イメージを回転し、回転したイメージを リージョン 2 に書き込みます。

  3. Region2 から画像を読み取ります。

ハードウェアとソフトウェアの要件

この例を実行するには、このソフトウェアとハードウェアをインストールしてセットアップする必要があります。

設定

手順 1: FPGAボードをセットアップする

Xilinx Zynq-7000 ZC706 ボードがイーサネット ケーブルを介してホスト コンピューターに接続されていることを確認します。イーサネット ケーブルは、ボードのプログラミングと通信に使用されます。

手順 2: SDカードをセットアップする

詳細については、Xilinx Zynq SoC デバイス向け Ethernet AXI マネージャー の手順 1 ~ 4 を参照してください。

手順 3: Vivado プロジェクトを作成する

Xilinx Vivado ツール パスを設定します。MATLAB でコマンドを実行するときは、Xilinx Vivado インストール パスを使用します。たとえば、MATLAB コマンド プロンプトでこのコマンドを入力します。

hdlsetuptoolpath('ToolName','Xilinx Vivado','ToolPath', ...
           'C:\Xilinx\Vivado\2022.1\bin\vivado.bat');

MATLAB インストール フォルダーの範囲外にフォルダーを作成し、そこにサンプル ファイルをコピーします。フォルダーは書き込み可能である必要があります。この例では、フォルダーが C:\MyTests にあると想定しています。

imagerotation_ip.zip ファイルを解凍して、画像回転 IP を Vivado プロジェクトの ユーザー リポジトリ に追加します。

unzip(fullfile('ipcore','imagerotation_ip_v1_0.zip'), ...
           fullfile('ipcore','imagerotation_ip_v1_0'));

このコマンドを使用して Vivado プロジェクトを作成します。このプロジェクトには、IP インテグレーターのブロック図と制約ファイルが含まれています。

system('vivado -mode batch -source createproject.tcl')

このプロセスは約 1 分で完了します。現在のディレクトリに ethernetaximasterzynq.xpr という名前の Vivado プロジェクトが作成されます。

ファイル ブラウザーでプロジェクトをダブルクリックするか、MATLAB コマンド プロンプトでこのコマンドを入力して、生成された Vivado プロジェクトを GUI モードで開きます。

system('vivado ethernetaximasterzynq.xpr &')

手順 4: ブロックダイアグラムとアドレスエディタウィンドウを開く

Vivado GUI で、ブロック ダイアグラム デザイン ファイル design_1.bd を開きます。このファイルはソース ファイル サブウィンドウにあります。

アドレス エディター ウィンドウを開いて、mig_7series_0 (メモリ コントローラー) と imagerotation_ip IP のアドレス マッピングを表示します。

これらは imagerotation_ip レジスタとそれに対応する物理的な場所です。

  • IP コア リセット レジスタ ['40000000'] — 画像回転 IP をリセットするには 1 を書き込みます。

  • IP コア有効化レジスタ ['40000004'] — 画像回転 IP を有効にするには 1 を書き込みます。

  • ベース アドレス レジスタの読み取り ['40000008'] — Region1 の開始アドレスが含まれます (例: 0X60000000)。

  • 書き込みベースアドレスレジスタ ['4000000C'] — Region2 の開始アドレスが含まれます (例: 0X62000000)。

  • 開始レジスタ ['40000100'] — 画像の回転操作を開始するには 1 を書き込みます。

メモ: 事前に生成されたビットストリームと、現在の作業ディレクトリにコピーされたデバイス ツリー BLOB (DTB) ファイルを使用するには、手順 5 と 6 をスキップします。

ステップ5:FPGAプログラミングファイルを生成します

FPGA プログラミング ファイルを生成するには、Vivado ウィンドウで [ビットストリームの生成] をクリックします。Vivado では、先に進む前にプロジェクトを保存するように求められる場合があります。Vivado は約 5 ~ 10 分でビットストリーム ファイルを生成します。

ステップ6:DTBファイルを生成する

DTB ファイルをコンパイルするには、Linux® マシン上にデバイス ツリー コンパイラ (DTC) が必要です。DTC がインストールされていない場合は、Linux コンソール ウィンドウでこれらのコマンドを実行します。

sudo apt-get update -y
sudo apt-get install -y device-tree-compiler

DTC のインストールが正常に完了したら、DTB ファイルを生成するために、ボード固有の DTS ファイルを開き、DTB ファイルの生成 セクションに記載されている手順に従います。

あるいは、この例に提供されている DTS ファイル C:\MyTests\devicetree_zc706_image_rotation.dts を使用することもできます。

Linux コンソール ウィンドウでこのコマンドを実行して、DTS ファイルから DTB ファイルを生成します。

dtc -I dts -O dtb devicetree_zc706_image_rotation.dts -o
devicetree_zc706_image_rotation.dtb

ステップ7:FPGAをプログラムする

MATLAB コマンド プロンプトでこのコマンドを入力して、MATLAB の FPGA をプログラムします。

loadBitstream('ZC706','ethernetaximaster_zynq_zc706.bit', ...
           'devicetree_zc706_image_rotation.dtb');

実行設計

設計を実行するには、MATLAB コマンド プロンプトで現在の作業フォルダーから ethernetaximasterzynq_tb.m ファイルを実行します。

ethernetaximasterzynq_tb

スクリプトは、AXI マネージャー オブジェクトを作成して MATLAB から設計を実行し、次の図に示すように入力イメージと出力イメージをプロットします。

関連するトピック