このページは機械翻訳を使用して翻訳されました。元の英語を参照するには、ここをクリックします。
PCI Express 経由で AXI マネージャーを使用して FPGA 外部メモリにアクセスする
この例では、PCI Express® (PCIe) 経由で AXI マネージャーを使用して、FPGA に接続された外部メモリにアクセスする方法を示します。FPGA には、DDR メモリにアクセスするための Xilinx® DDR メモリ コントローラが含まれています。このメモリ コントローラは、FPGA 内の他のコンポーネントによる書き込みおよび読み取り操作用の AXI4 スレーブ インターフェイスを提供します。PCIe AXI マネージャー機能は、FPGA 内の任意のメモリ マップされた場所にアクセスするために使用できる AXI マネージャー オブジェクトを提供します。この例では、PCIe AXI マネージャーを Xilinx Vivado® プロジェクトに統合し、MATLAB® を使用して DDR メモリからデータを読み書きする方法を示します。
要件
Xilinx Vivado Design Suite(サポートされているバージョンはサポートされているEDAツールとハードウェアに記載されています)
Xilinx Kintex® UltraScale+ FPGA KCU116 評価キット
HDL Verifier™ Support Package for Xilinx FPGA Boards
PCIeスロットを備えたホストマシン(PC)
USB-JTAGケーブル
設定
1. FPGAボードをセットアップします。PCIe および JTAG ケーブルを介して Xilinx KCU116 ボードをホスト コンピューターに接続します。JTAG ケーブルはデバイスのプログラミングに使用されます。
2. MATLAB で例を準備します。Xilinx Vivado ツール パスを設定します。コマンドを実行するときに独自の Xilinx Vivado インストール パスを使用します。
hdlsetuptoolpath('ToolName','Xilinx Vivado', ... 'ToolPath','C:\Xilinx\Vivado\2020.2\bin\vivado.bat');
この例では、Vivado プロジェクトを作成します。次の MATLAB コマンドは、pcieaximaster.xpr
という名前の Vivado プロジェクトを作成し、IP インテグレーターのブロック図と制約ファイルを含めます。
system('vivado -mode batch -source pcieAXIMcreateproject.tcl')
3. Vivado IP を使用して Vivado プロジェクトを構成します。Vivado IP インテグレーター内で PCIe を AXI Manager IP として使用するには、IP を含むフォルダーを Vivado プロジェクトの IP リポジトリ パス設定に追加します。MATLAB でこのコマンドを実行して、プロジェクトへのパスを追加します。
setupAXIManagerForVivado pcieaximaster.xpr
ファイル ブラウザーでプロジェクトをダブルクリックするか、MATLAB でこのコマンドを実行して、生成された Vivado プロジェクトを GUI モードで開きます。
system('vivado pcieaximaster.xpr &')
4. PCIe AXI Manager IP を FPGA デザインに追加します。Vivado GUI で、ブロック ダイアグラム デザイン ファイル pcieAXIMdesign_1.bd
を開きます。デザインはソース ファイルのサブウィンドウで確認できます。
この図に示すように、xdma_0
(AXI Bridge Subsystem for PCI Express) と ddr4_0
(メモリ コントローラ) のアドレスを設定します。
あるいは、Vivado で Tcl コマンドを実行して上記のセットアップ手順を完了することもできます。
source ./pcieAXIMmodifydesign.tcl
5. FPGA プログラミング ファイルを生成し、FPGA をプログラムします。Vivado ウィンドウで Generate Bitstream をクリックして、FPGA プログラミング ファイルを生成します。Vivado では、次の手順に進む前にプロジェクトを保存するように求められる場合があります。Vivado がビットストリーム ファイルを生成するには、約 5 ~ 10 分かかります。
Vivado がビットストリームを生成した後、MATLAB でこのコマンドを実行して FPGA をプログラムします。
filProgramFPGA('Xilinx Vivado','pcieaximaster.runs\impl_1\pcieAXIMdesign_1.bit',1)
6. FPGA をプログラミングした後、ホスト マシンを再起動します。
FPGAの書き込みおよび読み取り操作
FPGA ボード上で設計が実行されると、PCIe AXI Manager IP に接続されている AXI 下位デバイスに対して書き込みと読み取りを行うことができます。この例では、FPGA に接続された DDR メモリにデータを書き込み、次にデータを MATLAB に取得します。
MATLAB に AXI マネージャー オブジェクトを作成します。
h = aximanager('Xilinx','interface','pcie');
FPGA 上のメモリ位置への書き込みと読み取りを行います。次の 2 行は、AXI マネージャー オブジェクト h を使用して、アドレス 0 に 100 を書き込み、次に DDR メモリのアドレス 0 から読み取ります。
writememory(h,0,100) readmemory(h,0,1)
参考
aximanager
| writememory
| readmemory
| release