このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。
writememory
AXI4メモリマップされた下位にデータを書き込む
説明
例
この例では、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 ビットで、入力データが
halfの場合、関数は下位 2 バイトにデータを書き込み、上位 2 バイトにゼロを埋め込みます。AXI マネージャー IP データ幅が 64 ビットで、入力データが
halfの場合、関数は下位 2 バイトにデータを書き込み、上位 6 バイトをゼロで埋めます。32 ビット レジスタへのアクセスには 64 ビット AXI マネージャーを使用しないでください。
例: 64 は、64 の開始アドレスを指定します。
データ型: uint32 | uint64
書き込むデータ ワード。スカラーまたはベクトルとして指定します。デフォルトでは、関数はデータを連続したアドレス ブロックに書き込み、各操作のアドレスを増分します。アドレスの増分を無効にして各データ値を同じ場所に書き込むには、'BurstType' 引数を 'Fixed' に設定します。
書き込み要求を FPGA に送信する前に、関数は入力データを uint32、int32、uint64、または int64 データ型に型変換します。型変換は次の規則に従います。
入力データが
doubleの場合、データは AXI マネージャー IP データ幅に応じてint32またはint64に型変換されます。入力データが
singleの場合、データは AXI マネージャー IP データ幅に応じてuint32またはuint64に型変換されます。入力データが
halfの場合、データはuint16に型変換され、AXI マネージャー IP データ幅に応じてuint32またはuint64にパックされます。入力データ型のビット幅が AXI マネージャー IP データ幅より小さい場合、データは AXI マネージャー IP データ幅まで符号拡張されます。
入力データ型のビット幅が AXI マネージャー IP データ幅より大きい場合、データは
int32、uint32、int64、uint64に型変換されます。データは、AXI マネージャー IP データ幅と元のデータ型の符号と一致するように型変換されます。入力データが固定小数点データ型の場合、関数はデータの格納された整数値を書き込みます。
DDR メモリのブロックの書き込みなど、大きな操作サイズを指定すると、関数は、サポートされている最大バースト サイズである 256 ワードを使用して、操作を複数のバーストに自動的に分割します。
例: [1:100] は 100 個の連続したメモリ位置を指定します。
データ型: uint8 | int8 | uint16 | int16 | half | uint32 | int32 | single | uint64 | int64 | double | fi
名前と値の引数
引数のオプションのペアを Name1=Value1,...,NameN=ValueN として指定します。Name は引数名、Value は対応する値です。名前と値の引数は他の引数の後に表示されなければなりませんが、ペアの順序は重要ではありません。
R2021a より前は、名前と値をそれぞれコンマを使って区切り、Name を引用符で囲みます。
例: 'BurstType','Fixed' は、AXI マネージャーにすべてのデータを同じアドレスに書き込むように指示します。
AXI4 バースト タイプ。次のいずれかのオプションとして指定します。
'Increment'— AXI マネージャーは、指定されたアドレスから始まる連続したメモリ空間にデータのベクトルを書き込みます。'Fixed'— AXI マネージャーはすべてのデータを同じアドレスに書き込みます。
メモ
'Fixed' バースト タイプは PCI Express® インターフェイスではサポートされていません。代わりに'Increment'バーストタイプを使用してください。
バージョン履歴
R2017a で導入この関数は、FPGA ボード上のメモリ位置に half データを書き込みます。書き込み要求を FPGA に送信する前に、関数は half 入力データを uint16 に型変換し、AXI マネージャー IP データ幅に応じてデータを uint32 または uint64 にパックします。
書き込み操作のアドレスは、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)