このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。
readmemory
AXI4メモリマップされた下位からデータを読み取る
説明
は、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 を含めるには、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);
入力引数
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)