Main Content

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 除算演算子は、'floor' 丸めモードをサポートしていません。'round' モードを使用するか、符号付き整数除算演算を符号なしの整数除算に変更してください。

fimath 仕様の fimath OverflowMode プロパティが 'Saturate' に設定されていると、次の場合に HDL コード生成が許可されません。

  • SumMode が次に設定されている: 'SpecifyPrecision'

  • ProductMode が次に設定されている: 'SpecifyPrecision'

最適な固定小数点オプション設定の使用

[これらの継承される Simulink 信号タイプを fi オブジェクトとして扱う] オプションの既定の設定 ([固定小数点]) を使用します。

MATLAB Function ブロックの [整数オーバーフローで飽和] 設定を解除します。

MATLAB Function ブロックの出力データ型の明示的な設定

MATLAB Function ブロックの出力データ型を明示的に設定することで、RAM マッピングとパイプライン化を最適化できます。最適化を有効にする MATLAB Function ブロックの出力データ型の継承は避けてください。

調整可能なパラメーターの使用

HDL Coder では、次のデータ型の調整可能なパラメーターと調整不可のパラメーターの両方がサポートされます。

  • スカラー

  • ベクトル

  • 複素数

  • 構造体

  • 列挙型

MATLAB Function ブロックで調整可能なパラメーターを使用する場合は次のようにします。

  • 調整可能なパラメーターは、StorageClassExportedGlobal に設定された 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 コード アドバイザーを使用した Simulink モデルの HDL 互換性のチェックも参照してください。

HDL 最適化のための MATLAB Datapath アーキテクチャの使用

MATLAB Function ブロックの [HDL ブロック プロパティ] ダイアログ ボックスで、MATLAB FunctionMATLAB 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 最適化を参照してください。

参考

関連するトピック