Main Content

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

イーサネットベースの AXI Manager を使用した FPGA メモリへのアクセス

この例では、イーサネット ベースの AXI マネージャーを使用して、さまざまな UDP ポート経由で FPGA の内部および外部メモリにアクセスする方法を示します。FPGA には、DDR メモリと BRAM にそれぞれアクセスするためのザイリンクス DDR メモリ コントローラーと BRAM コントローラーが存在します。これらのメモリ コントローラーは、FPGA 内の他のコンポーネントによる書き込みおよび読み取り操作のための AXI4 スレーブ インターフェイスを提供します。イーサネット ベースの AXI マネージャーは、FPGA 内の AXI 下位 IP にアクセスするために使用できる AXI マネージャー コンポーネントを提供します。この例では、イーサネット ベースの AXI マネージャーをザイリンクス Vivado® プロジェクトに統合する方法と、 MATLAB®を使用して DDR メモリと BRAM に書き込みおよび読み取りを行う方法を示します。

要件

  • Xilinx Vivado Design Suite (サポートされているバージョンはサポートされている EDA ツールとハードウェアにリストされています)

  • ザイリンクス Kintex®-7 KC705 評価キット

  • HDL Verifier™ Support Package for Xilinx FPGA Boards

  • イーサネットケーブルとJTAGケーブル

設定

1. FPGAボードをセットアップします。ザイリンクス KC705 ボードをイーサネットおよび JTAG ケーブルを介してホスト コンピューターに接続します。JTAG ケーブルはデバイスのプログラミングに使用されます。

2.MATLABで例を準備します。Xilinx Vivado ツール パスを設定します。コマンドを実行するときに独自の Xilinx Vivado インストール パスを使用します。

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

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

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

このコマンドの実行には約 1 分かかります。実行が完了すると、 ethernetaximaster.xprという名前の Vivado プロジェクトが現在のディレクトリに表示されます。

3.Vivado IP を使用して Vivado プロジェクトを構成します。Vivado IP インテグレーター内で UDP AXI Manager IP を使用するには、その IP を含むフォルダーを Vivado プロジェクトの IP リポジトリ パス設定に追加します。MATLABで次のコマンドを実行して、プロジェクトにパスを追加します。

  setupAXIManagerForVivado ethernetaximaster.xpr

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

  system('vivado ethernetaximaster.xpr &')

4.Vivado GUI で、ブロック ダイアグラム デザイン ファイルdesign_1.bdを開きます。ブロック図はソース ファイルのサブウィンドウにあります。イーサネット MAC ハブ GMII および UDP AXI Manager IP を FPGA デザインに追加します。イーサネット MAC ハブ GMII IP のデフォルトのターゲット IP アドレスは 192.168.0.2 で、デフォルトの UDP ポート値は 50101 です。Ethernet MAC Hub の AXI Streamチャネル数を 2 に変更します。これらの値を変更するには、ブロック デザイン内のethernet_mac_hub_gmii_0 IP をダブルクリックします。この図に示すように、 ethernet_mac_hub_gmii_0パラメーターを変更します。

この図のように IP 間の接続を行います。DDR メモリと BRAM には、それぞれ UDP ポート 50101 と 50102 を通じてアクセスできます。

mig_7series_0 (DDR コントローラ) とaxi_bram_ctrl_0 (BRAM コントローラ) のアドレスを0x0000_00000x1000_0000に設定します。この図に示すように、それぞれ$。

または、Vivado で Tcl コマンドを実行して、上記のセットアップ手順を完了することもできます。

source ./modifyDesignEthAxim.tcl

5.FPGA プログラミング ファイルを生成し、FPGA をプログラムします。Vivado ウィンドウで [Generate Bitstream] をクリックして、FPGA プログラミング ファイルを生成します。Vivado では、次の手順に進む前にプロジェクトの保存を求めるメッセージが表示される場合があります。Vivado によるビットストリーム ファイルの生成には、約 5 ~ 10 分かかります。

Vivado がビットストリームを生成した後、FPGA ボードが Digilent® JTAG およびイーサネット ケーブルで接続されていることを確認します。MATLABでこのコマンドを実行して、FPGA をプログラムします。

  filProgramFPGA('Xilinx Vivado','ethernetaximaster.runs\impl_1\design_1.bit',1)

6.ホスト ネットワーク接続がハードウェア ボードと同じサブネット上にある必要があることを確認してください。この例では、ホスト ネットワーク IP アドレスを 192.168.0.x に設定します。ここで、x は 2 を除く、1 ~ 255 の範囲の任意の数値です。この例では、192.168.0.2 はハードウェア ボードの IP アドレスです。

FPGAの書き込みおよび読み取り操作

FPGA をプログラミングした後は、UDP AXI Manager IP に接続されている AXI 下位デバイスからの書き込みと読み取りが可能になります。この例では、FPGA および BRAM に接続された DDR メモリにデータを書き込み、 MATLABにデータを取得します。

MATLABで AXI マネージャー オブジェクトを作成し、DDR メモリへの書き込みと読み取りを行います。デフォルトのポートアドレスは 50101 です。単一の場所に書き込み、同じ場所からデータを読み取ります。この場合、リードバックデータは 100 です。

  hDDR = aximanager('Xilinx','interface','Ethernet', ...
                   'DeviceAddress','192.168.0.2');
  writememory(hDDR,'00000000',100);
  readmemory(hDDR,'00000000',1);

AXI マネージャー オブジェクトを解放して、他の UDP ポートを介した通信を開きます。

  release(hDDR);

BRAM への書き込みおよび BRAM からの読み取りのために、異なる UDP ポートを使用して新しい AXI マネージャー オブジェクトを作成します。単一の場所に書き込み、同じ場所からデータを読み取ります。この場合、リードバックデータは 1000 です。

  hBRAM = aximanager('Xilinx','interface','Ethernet', ...
                    'DeviceAddress','192.168.0.2','Port','50102');
  writememory(hBRAM,'10000000',1000);
  readmemory(hBRAM,'10000000',1);
  release(hBRAM);

参考

| | |

関連するトピック