Main Content

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

JTAGベースのAXIマネージャを使用してFPGAメモリにアクセスする

JTAG ベースの AXI マネージャーを使用して、FPGA に接続されたメモリにアクセスします。FPGA には、DDR メモリと BRAM にそれぞれアクセスするための Xilinx® DDR メモリ コントローラと BRAM コントローラが存在します。これらのメモリ コントローラは、FPGA 内の他のコンポーネントによる書き込みおよび読み取り操作用の AXI4 従属インターフェイスを提供します。JTAG ベースの AXI マネージャー機能は、FPGA 内の任意の AXI 従属 IP にアクセスするために使用できる AXI マネージャー コンポーネントを提供します。この例では、AXI Manager IP を Xilinx Vivado® プロジェクトに統合する方法と、MATLAB® を使用して DDR メモリと BRAM からデータを書き込んだり読み取ったりする方法を示します。この例では、Vivado シミュレータを使用して設計をシミュレートし、FPGA をプログラムして、MATLAB コンソールから書き込み操作と読み取り操作を実行します。

要件

設定

1. FPGAボードをセットアップします。USB-JTAG ケーブルを介して Arty ボードをホスト コンピューターに接続します。

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 jtagAXIMcreateproject.tcl')

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

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

setupAXIManagerForVivado arty.xpr

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

system('vivado arty.xpr &')

4. AXI Manager IP を FPGA デザインに追加します。Vivado GUI で、ブロック ダイアグラム デザイン ファイル jtagAXIMdesign_1.bd を開きます。デザイン ファイルはソース ファイル サブウィンドウにあります。

この図に示すように、アドレス エディターで mig_7series_0 (DDR コントローラー) のアドレスを 0x0000_0000 に設定し、axi_bram_ctrl_0 (BRAM コントローラー) のアドレスを 0xc000_0000 に設定します。

あるいは、Vivado で Tcl コマンドを実行してこれらの手順を完了することもできます。

source ./jtagAXIMmodifydesign.tcl

シミュレーションでの書き込みと読み取り操作

シミュレーションを起動するには、Vivado ウィンドウで シミュレーションの実行 をクリックします。

シミュレーションが開始されると、DDR3 のキャリブレーション プロセスをシミュレートするために最初の数分間が必要です。

キャリブレーション後、jtagAXIMtestbench.sv ファイル内のこれらの行は、インクリメント モードを使用して、アドレス 0 から 256 個の連続ワード (32 ビット) のデータの書き込みと読み取りを行います。

wdata = new[256];
for(integer i =0;i<256;i=i+1)
wdata[i] = i+1;
wrapper.jtagAXIMdesign_1_i.hdlverifier_axi_mana_0.inst.writememory ...
 (0,wdata,hdlverifier::HDLV_AXI_BURST_TYPE_INCR);
wrapper.jtagAXIMdesign_1_i.hdlverifier_axi_mana_0.inst.readmemory ...
 (0,256,hdlverifier::HDLV_AXI_BURST_TYPE_INCR,rdata);

これらのコマンドは、インクリメント モードを使用して、アドレス 0xc000_0000 から 256 個の連続ワードのデータを書き込んだり、読み取ったりします。

wdata = new[256];
for(integer i =0;i<256;i=i+1)
wdata[i] = i+1;
wrapper.jtagAXIMdesign_1_i.hdlverifier_axi_mana_0.inst.writememory ...
 (3221225472,wdata,hdlverifier::HDLV_AXI_BURST_TYPE_INCR);
wrapper.jtagAXIMdesign_1_i.hdlverifier_axi_mana_0.inst.readmemory ...
 (3221225472,256,hdlverifier::HDLV_AXI_BURST_TYPE_INCR,rdata);

同様に、これらの行は、値 100 の単一ワードをアドレス 0 のメモリに書き込み、それを読み戻す方法を示しています。

wdata = new[1];
wdata[0] = 100;
wrapper.jtagAXIMdesign_1_i.hdlverifier_axi_mana_0.inst.writememory ...
 (0,wdata,hdlverifier::HDLV_AXI_BURST_TYPE_FIXED);
wrapper.jtagAXIMdesign_1_i.hdlverifier_axi_mana_0.inst.readmemory ...
 (0,1,hdlverifier::HDLV_AXI_BURST_TYPE_FIXED,rdata);

FPGAビットストリームを生成し、FPGAをプログラムする

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

Vivado がビットストリームを生成した後、MATLAB でこのコマンドを実行して FPGA をプログラムします。

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

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

FPGA をプログラミングした後、AXI Manager IP に接続された AXI 下位デバイスに対して書き込みと読み取りを行うことができます。この例では、FPGA と BRAM に接続された DDR メモリにデータを書き込み、次にデータを MATLAB に取得します。

DDR メモリへの書き込みと読み取りを行うために、MATLAB に AXI マネージャー オブジェクトを作成します。単一の場所に書き込み、同じ場所からデータを読み取ります。この場合、読み取られたデータは 100 です。

h = aximanager('Xilinx');
writememory(h,'00000000',100);
readmemory(h,'00000000',1);

BRAM への書き込みと読み取りには、c000_0000 から c000_1FFF までの範囲の任意のアドレスを使用します。単一の場所に書き込み、同じ場所からデータを読み取ります。この場合、読み取られるデータは 1000 です。

writememory(h,'c0000000',1000);
readmemory(h,'c0000000',1);

参考

| |

関連するトピック