Model Composer でモデルを HDL にコンパイルする際に、モジュールに渡すジェネリックのリストを指定できます。ジェネリックに割り当てられている値は、マスク パラメーターおよび伝搬されたポート情報 (ポート幅、タイプ、レートなど) から抽出できます。ジェネリックは柔軟に割り当てることができるので、ブラック ボックス周辺の Simulink 環境に基づいて詳細にカスタマイズされるモジュールをサポートできます。
addGeneric
メソッドを使用して、デザインがハードウェアにコンパイルされるときにモジュールに渡す必要のあるジェネリックを定義できます。次に、VHDL の整数ジェネリック dout_width
を 12 に設定する例を示します。
addGeneric('dout_width','Integer','12');
伝搬された入力ポートの情報に基づいて出力ポートのジェネリック値を設定することも可能です (ダイナミック出力ポートの幅を指定するジェネリックなど)。
ブラック ボックスのコンフィギュレーション M 関数は、モデルがコンパイルされるときに何度か異なるタイミングで呼び出されるため、データ型 (またはレート) がブラック ボックスに伝搬される前に、コンフィギュレーション関数を呼び出すことが可能です。入力ポートのタイプまたはレートに基づいてジェネリック値を設定する場合、inputTypesKnown
または inputRatesKnown
変数の値をチェックする条件文内に addGeneric
呼び出しを含める必要があります。たとえば、次のように dout ポートの幅を din の値に基づいて設定できます。
if (this_block.inputTypesKnown)
% set generics that depend on input port types
this_block.addGeneric('dout_width', ...
this_block.port('din').width);
end
ジェネリック値は、ブラック ボックスに関連付けられているマスク パラメーターに基づいて設定できます。SysgenBlockDescriptor には、Simulink でのブラック ボックス名を文字列で表した blockName
というメンバー変数があります。この変数を使用して、特定のコンフィギュレーション M 関数に関連付けられているブラック ボックスにアクセスできます。たとえば、ブラック ボックスで init_value
というパラメーターを定義するとします。init_value
というジェネリックは、次のように設定できます。
simulink_block = this_block.blockName;
init_value = get_param(simulink_block,'init_value');
this_block.addGeneric('init_value', 'String', init_value);
- ブラック ボックスを Simulink ライブラリまたはモデルにコピーします。
- ブラック ボックスのリンクを解除します。
- 必要なパラメーターをブラック ボックスのダイアログ ボックスに追加します。