Main Content

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

aximanager

MATLAB からの FPGA ボード上のメモリ位置の読み取りと書き込み

説明

aximanager オブジェクトは、FPGA ボード上で実行されているときに AXI マネージャー IP と通信します。オブジェクトは、FPGA ボード上の下位のメモリ位置にアクセスするために、読み取りコマンドと書き込みコマンドを IP に転送します。このオブジェクトを使用する前に、AXI マネージャーの設定 の手順に従ってください。

メモ

aximaster オブジェクトの名前が aximanager オブジェクトに変更されました。詳細については、互換性についての考慮事項を参照してください。

作成

説明

mem = aximanager(vendor) は、ボード上で実行されている FPGA の AXI4 マネージャー IP を制御するオブジェクトを返します。vendor は FPGA のブランド名を指定します。この接続により、MATLAB® から SoC 設計内のメモリ位置にアクセスできるようになります。

mem = aximanager(vendor,Name,Value) は、1 つ以上の名前と値のペアの引数を使用してプロパティを設定します。各プロパティ名と値を引用符で囲みます。たとえば、'DeviceAddress','192.168.0.10' は FPGA ボードのインターネット プロトコル (IP) アドレスを 192.168.0.10 として指定します。

入力引数

すべて展開する

FPGA ブランド名。'Intel' または 'Xilinx' として指定されます。この値は FPGA ボードの製造元を指定します。AXI マネージャー IP は、指定する FPGA のタイプによって異なります。

プロパティ

すべて展開する

FPGA ボードとの通信に使用されるインターフェイスのタイプ。'JTAG''PCIe''PLEthernet''PSEthernet'、または 'USBEthernet' として指定されます。この値は、ホストと FPGA 間の通信に使用するインターフェイス タイプを指定します。

メモ

AXI マネージャーは、Xilinx® Zynq® デバイスのみの PS イーサネットおよび USB イーサネット インターフェイスをサポートします。

FPGA ボードとの通信に使用される JTAG ケーブルの名前。JTAG ケーブル名を表す文字ベクトルまたは文字列スカラーとして指定します。同じタイプの JTAG ケーブルが複数ホスト コンピューターに接続されている場合は、このプロパティを指定します。ホスト コンピューターに複数の JTAG ケーブルがあり、このプロパティを指定しない場合は、オブジェクトはエラーを返します。エラー メッセージには、使用可能な JTAG ケーブルの名前が含まれます。詳細については、Intelボード用の複数のJTAGケーブルから選択 または Xilinx ボード用の複数の JTAG ケーブルから選択 を参照してください。

依存関係

このプロパティを有効にするには、Interface'JTAG' に設定します。

データ型: char | string

FPGA ボード上のイーサネット ポートまたは USB イーサネット ガジェットのインターネット プロトコル (IP) アドレス。IP アドレスを表す文字ベクトルまたは文字列スカラーとして指定されます。PL Ethernet または PS Ethernet インターフェイスのデフォルトの IP アドレスは '192.168.0.2' です。USB イーサネット インターフェイスのデフォルトの IP アドレスは '192.168.1.2' です。

例: '192.168.0.10'

依存関係

このプロパティを有効にするには、Interface'PLEthernet''PSEthernet'、または 'USBEthernet' に設定します。

データ型: char | string

ターゲット FPGA ボードのユーザー データグラム プロトコル (UDP) ポート番号 (整数として指定)。

例: '12345'

依存関係

このプロパティを有効にするには、Interface'PLEthernet' に設定します。

データ型: uint16

FPGA ボードとの通信に使用される JTAG ケーブルのタイプ。'auto' または 'FTDI' として指定されます。この値は、FPGA ボードとの通信に使用される JTAG ケーブルのタイプを指定します。このプロパティは、複数のケーブルがホスト コンピューターに接続されている場合に最も役立ちます。

このプロパティを 'auto' に設定すると、オブジェクトは JTAG ケーブル タイプを自動検出します。オブジェクトは Digilent® ケーブルの検索を優先し、このプロセスを使用してケーブル タイプを自動検出します。

  1. aximanager オブジェクトは Digilent ケーブルを検索します。オブジェクトが見つかった場合:

    • Digilent ケーブルは 1 本だけであり、FPGA ボードとの通信にはそのケーブルを使用します。

    • Digilent ケーブルが複数ある場合は、エラーが返されます。このエラーを解決するには、JTAGCableName を使用して目的のケーブルを指定します。

    • Digilent ケーブルがないため、FTDI ケーブルを検索します。

  2. Digilent ケーブルが見つからない場合、aximanager オブジェクトは FTDI ケーブルを検索します。オブジェクトが見つかった場合:

    • 正確には 1 本の FTDI ケーブルで、FPGA ボードとの通信にそのケーブルを使用します。

    • FTDI ケーブルが複数ある場合、エラーが返されます。このエラーを解決するには、JTAGCableName を使用して目的のケーブルを指定します。

    • FTDI ケーブルがない場合、エラーが返されます。このエラーを解決するには、Digilent または FTDI ケーブルを接続します。

  3. オブジェクトが異なるタイプのケーブルを 2 つ見つけた場合、Digilent ケーブルが優先されます。FTDI ケーブルを使用するには、このプロパティを 'FTDI' に設定します。

このプロパティが 'FTDI' に設定されている場合、オブジェクトは FTDI ケーブルを検索します。オブジェクトが見つかった場合:

  • 正確には 1 本の FTDI ケーブルで、FPGA ボードとの通信にそのケーブルを使用します。

  • FTDI ケーブルが複数ある場合、エラーが返されます。このエラーを解決するには、JTAGCableName を使用して目的のケーブルを指定します。

  • FTDI ケーブルがない場合、エラーが返されます。このエラーを解決するには、Digilent または FTDI ケーブルを接続します。

詳細については、Xilinx ボード用の複数の JTAG ケーブルから選択を参照してください。

依存関係

このプロパティを有効にするには、vendor'Xilinx' に、Interface'JTAG' に設定します。

JTAG クロック周波数を正の整数で指定します。単位はMHzです。JTAG 周波数は、ケーブルの種類と FPGA ボードでサポートされる最大クロック周波数によって異なります。最大周波数についてはボードのドキュメントを確認してください。

依存関係

このプロパティを有効にするには、vendor'Xilinx' に、Interface'JTAG' に設定します。

JTAG チェーン内の FPGA の位置。負でない整数として指定されます。JTAG チェーン上に複数の FPGA または Zynq デバイスがある場合は、このプロパティ値を指定します。

依存関係

このプロパティを有効にするには、vendor'Xilinx' に、Interface'JTAG' に設定します。

ターゲット FPGA の前のすべてのデバイスの命令レジスタの長さの合計。負でない整数として指定されます。JTAG チェーン上に複数の FPGA または Zynq デバイスがある場合は、このプロパティ値を指定します。

依存関係

このプロパティを有効にするには、vendor'Xilinx' に、Interface'JTAG' に設定します。

ターゲット FPGA 以降のすべてのデバイスの命令レジスタ長の合計。負でない整数として指定されます。JTAG チェーン上に複数の FPGA または Zynq デバイスがある場合は、このプロパティ値を指定します。

依存関係

このプロパティを有効にするには、vendor'Xilinx' に、Interface'JTAG' に設定します。

ターゲットの Linux オペレーティング システムにログインするためのユーザー名。文字ベクトルまたは文字列スカラーとして指定されます。このプロパティは、ターゲットの Linux オペレーティング システムでカスタム SD カード イメージ ファイルのユーザー アカウントを構成する場合にのみ適用されます。

例: 'John'

依存関係

このプロパティを有効にするには、Interface'PSEthernet' または 'USBEthernet' に設定します。

データ型: char | string

指定されたユーザー名に関連付けられたパスワード。文字ベクトルまたは文字列スカラーとして指定されます。このプロパティは、ターゲットの Linux オペレーティング システムでカスタム SD カード イメージ ファイルのユーザー アカウントを構成する場合にのみ適用されます。

例: 'P@ssw0rd123'

依存関係

このプロパティを有効にするには、Interface'PSEthernet' または 'USBEthernet' に設定します。

データ型: char | string

オブジェクト関数

readmemoryAXI4メモリマップされた下位からデータを読み取る
releaseJTAGまたはイーサネットケーブルリソースを解放する
writememoryAXI4メモリマップされた下位にデータを書き込む

すべて折りたたむ

この例では、MATLAB® から Intel® FPGA ボード上のメモリ位置を読み書きする方法を示します。

この例を使用する前に、MATLAB ホスト マシンに接続された FPGA ボード上でデザインが実行されている必要があります。FPGA 設計には、FPGA ベンダー向けにカスタマイズされた AXI マネージャー IP が含まれている必要があります。サポート パッケージのインストールにはこの IP が含まれます。プロジェクトに IP を含めるには、AXI マネージャーを使用して FPGA 外部メモリにアクセスする の例を参照してください。

AXI マネージャー オブジェクトを作成します。オブジェクトは MATLAB を FPGA ボードに接続し、IP が存在することを確認します。

mem = aximanager('Intel')
mem =
   aximanager with properties:
            Vendor: 'Intel'
     JTAGCableName: 'auto'

10 個のアドレスを書き込み、1 つの場所からデータを読み取ります。デフォルトでは、これらの関数はデータの各ワードのアドレスを自動的に増分します。

writememory(mem,140,[10:19]);
rd_d = readmemory(mem,140,1)
rd_d =
   uint32
    10

10 か所からデータを読み取ります。

rd_d = readmemory(mem,140,10)
rd_d =
   1x10 uint32 row vector
    10   11   12   13   14   15   16   17   18   19

AXI マネージャーが同じアドレスからすべてのデータを読み取るように指定して (自動増分を無効にして)、同じアドレスからデータを 10 回読み取ります。

rd_d = readmemory(mem,140,10,'BurstType','Fixed')
rd_d =
   1x10 uint32 row vector
    10   10   10   10   10   10   10   10   10   10

同じアドレスにデータを10回書き込みます。この場合、アドレス 140 に格納される最終値は 29 です。

writememory(mem,140,[20:29],'BurstType','Fixed');
rd_d = readmemory(mem,140,10)
rd_d =
   1x10 uint32 row vector
    29   11   12   13   14   15   16   17   18   19

アドレスを 16 進数値として指定します。読み取ったデータを uint32 以外のデータ型にキャストする関数を指定します。

writememory(mem,0x1c,[0:4:64]);
rd_d = readmemory(mem,0x1c,16,'OutputDataType',numerictype(0,6,4))
rd_d =
   Columns 1 through 10
          0    0.2500    0.5000    0.7500    1.0000    1.2500 ...
                         1.5000    1.7500    2.0000    2.2500
   Columns 11 through 16
     2.5000    2.7500    3.0000    3.2500    3.5000    3.7500
           DataTypeMode: Fixed-point: binary point scaling
             Signedness: Unsigned
             WordLength: 6
         FractionLength: 4

ボードにアクセスする必要がなくなったら、JTAG 接続を解放します。

release(mem);

この例では、MATLAB® から Xilinx® FPGA ボード上のメモリ位置を読み書きする方法を示します。

この例を使用する前に、MATLAB ホスト マシンに接続された FPGA ボード上でデザインが実行されている必要があります。FPGA 設計には、FPGA ベンダー向けにカスタマイズされた AXI マネージャー IP が含まれている必要があります。サポート パッケージのインストールにはこの IP が含まれます。プロジェクトに IP を含めるには、JTAGベースのAXIマネージャを使用してFPGAメモリにアクセスする の例を参照してください。

AXI マネージャー オブジェクトを作成します。オブジェクトは MATLAB を FPGA ボードに接続し、IP が存在することを確認します。

mem = aximanager('Xilinx')
mem =
   aximanager with properties:
            Vendor: 'Xilinx'
     JTAGCableName: 'auto'

10 個のアドレスを書き込み、1 つの場所からデータを読み取ります。デフォルトでは、これらの関数はデータの各ワードのアドレスを自動的に増分します。

writememory(mem,140,[10:19]);
rd_d = readmemory(mem,140,1)
rd_d =
   uint32
    10

10 か所からデータを読み取ります。

rd_d = readmemory(mem,140,10)
rd_d =
   1x10 uint32 row vector
    10   11   12   13   14   15   16   17   18   19

AXI マネージャーが同じアドレスからすべてのデータを読み取るように指定して (自動増分を無効にして)、同じアドレスからデータを 10 回読み取ります。

rd_d = readmemory(mem,140,10,'BurstType','Fixed')
rd_d =
   1x10 uint32 row vector
    10   10   10   10   10   10   10   10   10   10

同じアドレスにデータを10回書き込みます。この場合、アドレス 140 に格納される最終値は 29 です。

writememory(mem,140,[20:29],'BurstType','Fixed');
rd_d = readmemory(mem,140,10)
rd_d =
   1x10 uint32 row vector
    29   11   12   13   14   15   16   17   18   19

アドレスを 16 進数値として指定します。読み取ったデータを uint32 以外のデータ型にキャストする関数を指定します。

writememory(mem,0x1c,[0:4:64]);
rd_d = readmemory(mem,0x1c,16,'OutputDataType',numerictype(0,6,4))
rd_d =
   Columns 1 through 10
          0    0.2500    0.5000    0.7500    1.0000    1.2500 ...
                         1.5000    1.7500    2.0000    2.2500
   Columns 11 through 16
     2.5000    2.7500    3.0000    3.2500    3.5000    3.7500
           DataTypeMode: Fixed-point: binary point scaling
             Signedness: Unsigned
             WordLength: 6
         FractionLength: 4

ボードにアクセスする必要がなくなったら、JTAG 接続を解放します。

release(mem);

この例では、ホスト コンピューターに接続されている複数の JTAG ケーブルから必要な JTAG ケーブルを選択する方法を示します。

同じタイプのケーブルが 2 本ホスト コンピューターに接続されている場合は、AXI マネージャー IP が実行されているボードの JTAGCableName プロパティ識別子を指定します。JTAG ケーブル識別子を確認するには、aximanager オブジェクトを作成してみてください。オブジェクトは、現在の JTAG ケーブル名のリストを返します。

h = aximanager('Intel')
Error using fpgadebug_mex
Found more than one JTAG cable:
0 (Max10): #tpt_0001#ptc_0002#210203991642
1 (Arria): #tpt_0001#ptc_0002#210319789795
Please disconnect the extra cable, or specify the cable name as an
input argument. See documentation of FPGA Data Capture or AXI Manager
to learn how to set the cable name.

Arria ボードと通信するには、一致する JTAG ケーブル名を指定します。

h = aximanager('Intel','JTAGCableName','#tpt_0001#ptc_0002#210319789795');

この例では、ホスト コンピューターに接続されている複数の JTAG ケーブルから必要な JTAG ケーブルを選択する方法を示します。

複数の JTAG ケーブルがホスト コンピュータに接続されている場合、オブジェクトは FTDI ケーブルよりも Digilent® ケーブルの検索を優先します。FTDI ケーブルを使用するには、JTAG ケーブル タイプを指定します。

h = aximanager('Xilinx','JTAGCableType','FTDI');

同じタイプのケーブルが 2 本ホスト コンピューターに接続されている場合は、AXI マネージャー IP が実行されているボードの JTAGCableName プロパティ識別子を指定します。JTAG ケーブル識別子を確認するには、aximanager オブジェクトを作成してみてください。オブジェクトは、現在の JTAG ケーブル名のリストを返します。

h = aximanager('Xilinx')
Error using fpgadebug_mex
Found more than one JTAG cable:
0 (JtagSmt1): #tpt_0001#ptc_0002#210203991642
1 (Arty): #tpt_0001#ptc_0002#210319789795
Please disconnect the extra cable, or specify the cable name as an
input argument. See documentation of FPGA Data Capture or AXI Manager
to learn how to set the cable name.

Arty ボードと通信するには、一致する JTAG ケーブル名を指定します。

h = aximanager('Xilinx','JTAGCableName','#tpt_0001#ptc_0002#210319789795');

バージョン履歴

R2017a で導入

すべて展開する