Hwcosim
MATLAB クラスは、ハードウェア協調シミュレーション エンジンを高度に抽象化します。インスタンシエートされた各 Hwcosim オブジェクトは、ハードウェア協調シミュレーションの 1 つのインスタンスを表します。インスタンスに関連付けられている識別子などのプロパティをカプセル化します。命令実行のほとんどでは、Hwcosim オブジェクトを入力引数として指定できます。利便性のため、一部の操作には短縮形があります。
操作 | 構文 |
---|---|
コンストラクター |
h = Hwcosim(project)
|
デストラクター |
release(h)
|
オープン ハードウェア |
open(h)
|
クローズ ハードウェア |
close(h)
|
データの書き込み |
write(h, 'portName',
inData);
|
データの読み出し |
outData = read(h,
'portName');
|
実行 |
run(h);
|
ポートの情報 |
portinfo(h);
|
プロパティの設定 |
set(h, 'propertyName',
propertyValue);
|
プロパティの取得 |
propertyValue = get(h,
'propertyName');
|
コンストラクター
構文
h = Hwcosim(project);
説明
Hwcosim インスタンスを作成します。インスタンスは、ハードウェア協調シミュレーション プロジェクトへの参照であり、ハードウェアへの明示的なリンクではない点に注意してください。Hwcosim オブジェクトを作成すると、Hwcosim エンジンに FPGA ビットストリームの位置が通知されるだけで、ビットストリームは FPGA にダウンロードされません。ビットストリームは、オープン コマンドが発行されてから、ハードウェアにダウンロードされます。
project 引数は、ハードウェア協調シミュレーションを記述した hwc ファイルを指定する必要があります。
Hwcosim オブジェクトを作成すると、すべての入力ポートと出力ポートがリストされます。次の例は、Hwcosim コンストラクターの呼び出しの出力を示しており、オブジェクトの ID と、すべての入力および出力ゲートウェイ/ポートのリストを表示しています。
>> h = Hwcosim(p)
Model Composer HDL Hardware Co-simulation Object
id: 30247
inports:
gateway_in
gateway_in2
outports:
gateway_out
デストラクター
構文
release(h);
説明
Hwcosim オブジェクト h が使用するリソースを解放します。ハードウェアへのリンクが開いている場合は、まずハードウェアを閉じます。
オープン ハードウェア
構文
open(h);
説明
ホスト PC と FPGA との間の接続をオープンにします。この関数を呼び出す前に、ハードウェア協調シミュレーション インターフェイスを設定する必要があります。引数 h は、Hwcosim オブジェクトへのハンドルです。
クローズ ハードウェア
構文
close(h);
説明
ホスト PC と FPGA との間の接続を閉じます。引数 h は、Hwcosim オブジェクトへのハンドルです。
データの書き込み
構文
h('portName') = inData; %If inData is
array, results in burst write.
h('portName') = [1 2 3 4];
write(h, 'portName', inData);
write(h, 'portName', [1 2 3 4]); %burst
mode
説明
ポートは有効化された名前で参照されます。名前の有効化は VHDL および Verilog 合成の要件で、名前をすべて小文字に変換し、スペースをアンダースコアに置き換え、名前空間の競合を避けるために固有の接尾辞を追加します。有効化された入力および出力ポート名を確認するには、ヘルパー コマンド portinfo(h)
を実行するか、インスタンス作成時の Hwcosim の出力を参照してください。
inData
はポートに書き込まれるデータです。inData
がスカラー値の場合は、標準のシングル書き込みが実行されます。バースト モードが有効で、inData
が 1xn 配列の場合は、時系列として解釈され、バースト データ転送でポートに書き込まれます。
データの読み出し
構文
outData = h('portName');
outData = h('portName', 25); %burst
mode
outData = read(h, 'portName');
outData = read(h, 'portName', 25);
%burst
説明
ポートは有効化された名前で参照されます (前のクラスを参照)。
バースト モードが有効な場合、読み出しコマンドのパラメーターが 3 個なのか 4 個なのか (添え字付き参照 h('portName', ...)
の場合は 2 個なのか 3 個なのか) によって、outData
にはスカラーまたは 1xn 配列が割り当てられます。配列の場合は、データはバースト データ転送の結果です。
実行
構文
run(h);
run(h, n);
run(h, inf); %start free-running
clock
run(h, 0); %stop free-running clock
説明
ハードウェア協調シミュレーションのオブジェクトがシングル ステップ モードで動作するように設定されている場合、run(h) コマンドを使用してクロックを 1 クロック サイクル分進めます。run(h,n) は、クロックを n サイクル分進めます。
run コマンドは、フリーランニング クロック モードのオン/オフを切り替えることもできます。run(h, inf)
はこのモードをオンにし、run(h, 0)
はオフにします。
ハードウェアを使用した読み出しキャッシュの同期化を実行するには、出力ポートを読み出す前に、ダミーの run コマンドを実行するか、書き込みを実行する必要があります。
ポートの情報
構文
portinfo(h);
説明
このメソッドは、inports
および outports
のフィールドを持つ MATLAB の構造体配列を返します。これらのフィールドは、それぞれすべての入力ポートと出力ポートを保持する構造体配列で、構造体配列として表されます。個々のポート構造体のフィールド名は、有効化されたポート名なので、これらのコマンドを発行することで、Hwcosim の write
コマンドに適した入力ポート名のセル配列を取得できます。
a = portinfo(h);
inports = fieldnames(a.inports);
出力ポート (outports
) にも同様の一連のコマンドを発行できます。
ポート構造体に含まれる追加情報としては、simulink_name
(スペースおよび改行を含む完全に階層化された Simulink 名)、rate
(DUT クロックに対する信号のレート周期)、type
(Model Composer のデータ型情報)、バースト モードが有効であるかどうか、fifo_depth
(バッチでハードウェアに送信できるデータ バーストの最大サイズ) があります。
プロパティの設定
構文
set(h, 'propertyName', propertyValue);
説明
set メソッドは、Hwcosim インスタンス h
の内部プロパティ テーブルの内容のいずれかを設定または変更します。このメソッドを呼び出す前に、h
が存在している必要があります。
例
set(h, 'booleanProperty',
logical(0));
set(h, 'integerProperty',
int32(12345));
set(h, 'doubleProperty', pi);
set(h, 'stringProperty',
'Rosebud!');
プロパティの取得
構文
get property メソッドは、propertyName キーで参照される Hwcosim インスタンス h
の内部プロパティ テーブルの内容のいずれかの値を返します。このメソッドを呼び出す前に、h
が存在している必要があります。propertyName
キーが h に存在しない場合、このメソッドは例外を生成し、エラー メッセージを表示します。
例
bool_val = get(h,
'booleanProperty');
int_val = get(h,
'integerProperty');
double = get(h,
'doubleProperty');
str_val = get(h,
'stringProperty');
M-Hwcosim ユーティリティ関数
xlHwcosim
構文
xlHwcosim('release');
説明
M-Hwcosim のオブジェクトが作成されると、グローバル システム リソースがこれらの各オブジェクトの登録に使用されます。これらのオブジェクトは通常、オブジェクト上でリリース コマンドが呼び出されたときに解放されます。xlHwcosim は、予期しないエラーが発生した場合に、M-Hwcosim によって使用されるすべてのリソースを解放する簡単な方法を提供します。xlHwcosim 呼び出しは特定タイプのオブジェクトのインスタンスすべてのリソースを解放するため、可能であれば各オブジェクトのリリース関数を使用する必要があります。
例
xlHwcosim('release') %release all instances
of Hwcosim objects.