MATLAB Function ブロックの設計ガイドライン
MATLAB Function ブロックでのコンパイルされた外部関数の使用
HDL Coder™ ソフトウェアは、コンパイルされた外部関数を含む MATLAB Function ブロックからの HDL コード生成をサポートしています。この機能によって、再利用可能な MATLAB® コードを作成し、複数の MATLAB Function ブロックからそのコードを呼び出すことができます。
このような関数は、MATLAB Function ブロック パス上にあるファイル内で定義しなければなりません。%#codegen
コンパイル命令を使用して、MATLAB コードがコード生成に適していることを示します。外部関数の作成、コンパイルおよび呼び出し方法の詳細は、関数定義を参照してください。
MATLAB Function ブロック コードを最初にビルドする
MATLAB Function ブロックを含むサブシステムの HDL コードを生成する前に、エラーをチェックするために MATLAB Function ブロック コードをビルドします。コードをビルドするには、関数エディターで [モデルのビルド] ボタンをクリックします。
hdlfimath
ユーティリティを使用した FIMATH 設定の最適化
関数 hdlfimath
は、HDL コード生成用に最適化された FIMATH 仕様を定義するユーティリティです。
次のリストは、hdlfimath
によって定義される fimath
の設定を示しています。
hdlfm = fimath(... 'RoundMode', 'floor',... 'OverflowMode', 'wrap',... 'ProductMode', 'FullPrecision', 'ProductWordLength', 32,... 'SumMode', 'FullPrecision', 'SumWordLength', 32,... 'CastBeforeSum', true);
HDL 除算演算子では、次の丸めモードがサポートされています。
'zero'
— 符号付きおよび符号なし固定小数点数の場合。'floor'
— 符号なし除算の場合のみ。
fimath
仕様の fimath
OverflowMode
プロパティが 'Saturate'
に設定されていると、次の場合に HDL コード生成が許可されません。
SumMode
が次に設定されている:'SpecifyPrecision'
ProductMode
が次に設定されている:'SpecifyPrecision'
最適な固定小数点オプション設定の使用
[これらの継承される Simulink 信号タイプを fi オブジェクトとして扱う] オプションの既定の設定 ([固定小数点]
) を使用します。
MATLAB Function ブロックの [整数オーバーフローで飽和] 設定を解除します。
MATLAB Function ブロックの出力データ型の明示的な設定
MATLAB Function ブロックの出力データ型を明示的に設定することで、RAM マッピングとパイプライン化を最適化できます。最適化を有効にする MATLAB Function ブロックの出力データ型の継承は避けてください。
調整可能なパラメーターの使用
HDL Coder では、次のデータ型の調整可能なパラメーターと調整不可のパラメーターの両方がサポートされます。
スカラー
ベクトル
複素数
構造体
列挙型
MATLAB Function ブロックで調整可能なパラメーターを使用する場合は次のようにします。
調整可能なパラメーターは、
StorageClass
がExportedGlobal
に設定された Simulink.Parameter オブジェクトでなければなりません。x = Simulink.Parameter x.Value = 1 x.CoderInfo.StorageClass = 'ExportedGlobal'
MATLAB Function ブロックをダブルクリックし、[モデル化] タブの [設計] セクションで、[シンボル] ペインと [プロパティ インスペクター] を開きます。[シンボル] ペインで、調整可能なパラメーターを選択します。プロパティ インスペクターで、[調整可能] チェック ボックスをオンにします。
詳細については、調整可能なパラメーターの DUT 端子を生成するを参照してください。
MATLAB Function ブロックの HDL モデル チェックの実行
設計に MATLAB Function ブロックが含まれている場合、HDL コードを生成する前に、HDL コード アドバイザーでMATLAB Function ブロックの設定をチェックに示すチェックを実行できます。このチェックでは、HDL コード生成用の推奨される MATLAB Function ブロックが使用されているかどうかを検証します。fimath
の設定が hdlfimath
に従って定義されているかどうか、[整数オーバーフローで飽和] チェック ボックスがオフになっているかどうかの確認が含まれます。
HDL 最適化のための MATLAB Datapath アーキテクチャの使用
MATLAB Function ブロックの [HDL ブロック プロパティ] ダイアログ ボックスで、MATLAB Function
と MATLAB Datapath
のどちらを HDL アーキテクチャとして使用するかを指定できます。浮動小数点モデルでは、HDL アーキテクチャをブロックで MATLAB Function
と指定しても MATLAB Datapath
アーキテクチャが使用されます。固定小数点モデルでは、既定では MATLAB Function
アーキテクチャが使用されます。
MATLAB Function ブロック内および MATLAB Function ブロックの境界を越えた他の Simulink® ブロックとの間での共有や分散型パイプラインなど、速度と面積のさまざまな最適化を実行するには、MATLAB Datapath
アーキテクチャを使用します。このアーキテクチャを使用すると、MATLAB Function ブロックがコード ジェネレーターで通常の Subsystem ブロックと同様に扱われます。これにより、MATLAB Function ブロック内および MATLAB Function ブロックを越えたモデル内の他のブロックとの間でアルゴリズムを最適化できます。
MATLAB Datapath アーキテクチャを使用した、MATLAB Function ブロック境界を越えた HDL 最適化を参照してください。