このページは前リリースの情報です。該当の英語のページはこのリリースで削除されています。
readmemory
R2024aAXI4メモリマップされた下位からデータを読み取る
説明
は、data = readmemory(mem,addr,size)addr で指定されたアドレスから開始し、各ワードごとにアドレスを増分しながら、size 個のデータ位置を読み取ります。この関数は、データを uint32 または uint64 データ型に型変換します (AXI マネージャー IP のデータ サイズによって異なります)。アドレス addr は、FPGA ボード上の AXI マネージャー IP によって制御される AXI 従属メモリ位置を参照する必要があります。aximanager オブジェクト、mem は、MATLAB® と AXI マネージャー IP 間の接続を管理します。
は、1 つ以上の名前と値の引数を使用してオプションを指定します。data = readmemory(mem,addr,size,Name,Value)
例
この例では、MATLAB® から Intel® FPGA ボード上のメモリ位置を読み書きする方法を示します。
この例を使用する前に、MATLAB ホスト マシンに接続された FPGA ボード上でデザインが実行されている必要があります。FPGA 設計には、FPGA ベンダー向けにカスタマイズされた AXI マネージャー IP が含まれている必要があります。サポート パッケージのインストールにはこの IP が含まれます。プロジェクトに IP を含めるには、Access FPGA External Memory Using AXI Manager (HDL Coder) の例を参照してください。
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 を含めるには、Access FPGA Memory Using JTAG-Based AXI Manager (SoC Blockset) の例を参照してください。
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);
入力引数
FPGA ボード上の AXI マネージャー IP への接続 (aximanager オブジェクトとして指定)。
読み取り操作の開始アドレス。4 の非負整数倍または 4 の 16 進数値倍数として指定します。この関数は、32 ビット、40 ビット、64 ビットのアドレス幅をサポートします。この関数は、AXI マネージャーの IP アドレス幅に応じて、アドレスを uint32 または uint64 データ型にキャストします。アドレスは、FPGA ボード上の AXI マネージャー IP によって制御される AXI 従属メモリ位置を参照する必要があります。
メモリマッピングガイドライン
AXI マネージャー IP のデータ幅が 32 ビットの場合、メモリは 4 バイト境界に配置され、アドレスは 4 バイト単位で増分されます (
0x0、0x4、0x8)。この場合、0x1は不正なアドレスであり、エラーが発生します。AXI マネージャー IP のデータ幅が 64 ビットの場合、メモリは 8 バイト境界に配置され、アドレスは 8 バイト単位で増分されます (
0x0、0x8、0x10)。この場合、0x1と0x4は不正であり、エラーが発生します。AXI マネージャー IP データ幅が 32 ビットで、
'BurstType'引数を'Increment'に設定すると、アドレスは 4 バイトずつ増分されます。AXI マネージャー IP データ幅が 64 ビットで、
'BurstType'引数を'Increment'に設定すると、アドレスは 8 バイトずつ増分されます。AXI マネージャー IP データ幅が 32 ビットで、
OutputDataType引数を'half'に設定すると、関数は下位 2 バイトを読み取り、上位 2 バイトを無視します。AXI マネージャー IP データ幅が 64 ビットで、
OutputDataType引数を'half'に設定すると、関数は下位 2 バイトを読み取り、上位 6 バイトを無視します。32 ビット レジスタへのアクセスには 64 ビット AXI マネージャーを使用しないでください。
例: 0xa4 は、0xa4 の開始アドレスを指定します。
データ型: uint32 | uint64
読み取るメモリ位置の数。負でない整数として指定します。デフォルトでは、関数は連続したアドレス ブロックからデータを読み取り、各操作のアドレスを増分します。アドレスの増分を無効にして同じ場所から繰り返し読み取るには、'BurstType' 引数を 'Fixed' に設定します。
DDR メモリのブロックの読み取りなど、大きな操作サイズを指定すると、関数は、サポートされている最大バースト サイズである 256 ワードを使用して、操作を複数のバーストに自動的に分割します。
例: 5 は 5 つの連続したメモリ位置を指定します。
名前と値の引数
引数のオプションのペアを Name1=Value1,...,NameN=ValueN として指定します。Name は引数名、Value は対応する値です。名前と値の引数は他の引数の後に表示されなければなりませんが、ペアの順序は重要ではありません。
R2021a より前は、名前と値をそれぞれコンマを使って区切り、Name を引用符で囲みます。
例: 'BurstType','Fixed' は、AXI マネージャーに同じアドレスからすべてのデータを読み取るように指示します。
AXI4 バースト タイプ。次のいずれかのオプションとして指定します。
'Increment'— AXI マネージャーは、指定されたアドレスから始まる連続したメモリ位置からデータのベクトルを読み取ります。'Fixed'— AXI マネージャーは同じアドレスからすべてのデータを読み取ります。
メモ
'Fixed' バースト タイプは PCI Express® インターフェイスではサポートされていません。代わりに'Increment'バーストタイプを使用してください。
読み取りデータに割り当てられるデータ型。次のいずれかのオプションとして指定します。
'int8''uint8''uint16''int16''half''uint32''int32''single''uint64''int64''double'numerictypeオブジェクト
この関数は、FPGA から読み出されたデータを指定されたデータ型に型変換します。double は、64 ビット UDP 接続でのみサポートされます。
バージョン履歴
R2017a で導入この関数は、FPGA ボード上のメモリ位置から half データを読み取ります。読み取り操作のアドレスは、FPGA ボード上の AXI マネージャー IP によって制御される AXI 従属メモリ位置を参照する必要があります。
AXI マネージャー IP のデータ幅が 32 ビットの場合、メモリは 4 バイト境界に配置され、アドレスは 4 バイト単位で増分されます (
0x0、0x4、0x8)。この場合、関数は下位 2 バイトを読み取り、上位 2 バイトを無視します。AXI マネージャー IP のデータ幅が 64 ビットの場合、メモリは 8 バイト境界に配置され、アドレスは 8 バイト単位で増分されます (
0x0、0x8、0x10)。この場合、関数は下位 2 バイトを読み取り、上位 6 バイトを無視します。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)