このページは機械翻訳を使用して翻訳されました。元の英語を参照するには、ここをクリックします。
AXI マネージャーを使用して FPGA 外部メモリにアクセスする
この例では、AXI マネージャーを使用して FPGA に接続された外部 DDR メモリにアクセスする方法を示します。FPGA 設計では、DDR メモリにアクセスするための Intel® DDR メモリ コントローラがインスタンス化されます。このメモリ コントローラは、FPGA からの読み取りおよび書き込み操作用のメモリ マップされた従属インターフェイスを提供します。AXI マネージャー機能は、MATLAB® が FPGA 内のメモリマップされた従属 IP にアクセスできるようにする AXI マネージャー IP を提供します。この例では、JTAG AXI マネージャー IP または Ethernet AXI マネージャー IP を Qsys デザインに統合し、MATLAB から DDR メモリを読み書きする方法を示します。
要件
サポートされているEDAツールとハードウェア に記載されているサポート対象バージョンの Intel Quartus® Prime ソフトウェア
Intel Arrow® DECA MAX® 10 FPGA 開発キット
HDL Verifier™ Intel FPGA ボード用サポート パッケージ
USB-Blaster II™ ダウンロード ケーブル
イーサネットケーブル
JTAG AXI マネージャーを使用するためのセットアップ
手順 1: FPGAボードをセットアップします。DECA ボードが USB JTAG ケーブルを介してホスト コンピューターに接続されていることを確認します。
手順 2: MATLAB で例を準備する
Intel Quartus Prime ツールパスを設定します。コマンドを実行するときは、独自の Intel Quartus Prime インストール パスを使用してください。
hdlsetuptoolpath('ToolName','Altera Quartus II', ... 'ToolPath','C:\intelFPGA\18.0\quartus\bin64\quartus.exe');
この例では、Quartus プロジェクトを作成します。この tcl スクリプトは Quartus プロジェクトを作成し、デザイン ファイルをプロジェクトに追加します。
system('quartus_sh -t create_project_deca.tcl')
このコマンドが完了するまでに数秒かかります。完了すると、現在のディレクトリに「aximaster_deca.qpf」という名前の Quartus プロジェクトが作成されます。
手順 3: AXIマネージャーを使用するようにQuartus Primeプロジェクトを構成する
次のコマンドを使用して、IP をプロジェクト ディレクトリにコピーします。
setupAXIManagerForQuartus('aximaster_deca.qpf')
生成された Quartus プロジェクトを GUI モードで開きます。ファイル ブラウザーでプロジェクトをダブルクリックするか、MATLAB でこのコマンドを実行できます。
system('quartus aximaster_deca.qpf &')
手順 4: Qsys 設計の JTAG AXI マネージャー IP を検査する (オプション)
Quartus GUI で、Qsys デザイン ファイル system.qsys を開き、AXI Manager IP が DDR コントローラーにどのように接続されているかを調べます。
手順 5: FPGAプログラミングファイルを生成し、FPGAをプログラムする
FPGA プログラミング ファイルを生成するには、Quartus Prime の「コンパイルの開始」ボタンをクリックします。
プログラミング ファイルを生成したら、次のコマンドを使用して MATLAB の FPGA をプログラムします。
filProgramFPGA('Altera','output_files/aximaster_deca.sof',1)
Ethernet AXI Manager を使用するためのセットアップ
手順 1: FPGAボードをセットアップします。DECA ボードが USB Blaster II ダウンロード ケーブルとイーサネット ケーブルの両方を介してホスト コンピューターに接続されていることを確認します。
手順 2: MATLAB で例を準備する
Intel Quartus Prime ツールパスを設定します。コマンドを実行するときは、独自の Intel Quartus Prime インストール パスを使用してください。
hdlsetuptoolpath('ToolName','Altera Quartus II', ... 'ToolPath','C:\intelFPGA\18.0\quartus\bin64\quartus.exe');
この例では、Quartus プロジェクトを作成します。この tcl スクリプトは Quartus プロジェクトを作成し、作成したデザイン ファイルをプロジェクトに追加します。
system('quartus_sh -t create_project_eth_deca.tcl')
完了すると、現在のディレクトリに「eth_aximaster_deca.qpf」という名前の Quartus プロジェクトが作成されます。
手順 3: イーサネットAXIマネージャーを使用するようにQuartus Primeプロジェクトを構成する
次のコマンドを使用して、IP をプロジェクト ディレクトリにコピーします。
setupAXIManagerForQuartus('eth_aximaster_deca.qpf')
生成された Quartus プロジェクトを GUI モードで開きます。ファイル ブラウザーでプロジェクトをダブルクリックするか、MATLAB でこのコマンドを実行します。
system('quartus eth_aximaster_deca.qpf &')
手順 4: Qsys 設計の Ethernet AXI マネージャー IP を検査する (オプション)
Quartus GUI で、Qsys デザイン ファイル aximaster.qsys を開き、UDP AXI Manager IP が DDR コントローラーにどのように接続されているかを調べます。
イーサネットベースの AXI マネージャー IP には、ターゲット IP アドレス 192.168.1.2 と UDP ポート値 50101 が割り当てられています。これらの値は、Qsys で ethernet_mac_hub_IP をダブルクリックすることで変更できます。
手順 5: FPGAプログラミングファイルを生成し、FPGAをプログラムする
FPGA プログラミング ファイルを生成するには、Quartus Prime の「コンパイルの開始」ボタンをクリックします。
プログラミング ファイルを生成したら、次のコマンドを使用して MATLAB の FPGA をプログラムします。
filProgramFPGA('Altera','output_files/eth_aximaster_deca.sof',1)
FPGAへの読み取りおよび書き込み操作
FPGA をプログラミングした後、AXI マネージャー IP に接続された AXI 下位デバイスに読み取りと書き込みを行うことができます。この例では、データは FPGA に接続された DDR メモリに書き込まれ、MATLAB に取り戻されます。
MATLAB に AXI マネージャー オブジェクトを作成します。
JTAG AXI マネージャーを使用する場合:
h = aximanager('Intel')
Ethernet AXI マネージャーを使用する場合:
h = aximanager('Intel','interface','PLEthernet','deviceAddress','192.168.1.2','port','50101');
これらの 2 つのコマンドを実行して、値 100 の単一ワードを DDR メモリのアドレス 0 に書き込み、AXI マネージャー オブジェクトを使用してそれを読み取ります。
writememory(h,0,100) readmemory(h,0,1)
また、MATLAB では、単一の読み取り/書き込みコマンドを使用して、DDR メモリに大きなデータ ベクトルを読み書きすることもできます。これらのコマンドは、大量のデータを自動的に小さなバーストに分割し、AXI4 プロトコル経由で転送できるようにします。この関数は、スループット パフォーマンスを最大化するために、各バーストに可能な限り最大のバースト サイズを使用します。次のコマンドは、100000 ワードを DDR メモリに書き込み、それを読み戻します。また、読み戻されたデータが正しいかどうかを確認し、実行時間を報告します。
address = 0; data = 1:100000; writememory(h,address,data); r = readmemory(h,address,100000); assert(all(r==data));
参考
aximanager
| writememory
| readmemory