Main Content

HDL 用の MATLAB Function ブロック設計パターン

Simulink® および Stateflow® での実装用のアルゴリズムを MATLAB Function ブロックを使用して記述し、そのコードを HDL コード生成に使用できます。HDL 設計パターン ライブラリ eml_hdl_design_patterns を使用して、ハードウェアのモデル化の一般的なアルゴリズムを MATLAB Function ブロックを使用して実装できます。ライブラリには、HDL コード生成のためのハードウェアとの親和性が高い MATLAB Function ブロックの用途を示す例が含まれています。

ライブラリを開くには、MATLAB® コマンド プロンプトで次のように入力します。

eml_hdl_design_patterns

次のようにして、ライブラリのブロックをさまざまなハードウェア要素のモデル化に使用できます。

  • ライブラリからモデルにブロックをコピーし、それを計算単位として使用する。

  • ブロックからコードをコピーし、それを既存の MATLAB Function ブロックでローカル関数として使用する。

カスタム ブロックを作成する場合は、MATLAB Function ブロックから生成される HDL コードをインライン化するか、インスタンス化するかを制御できます。HDL コードをインライン化またはインスタンス化するには、[コンフィギュレーション パラメーター] ダイアログ ボックスで [HDL コード生成][グローバル設定] をクリックします。右側のペインの [コーディング スタイル] タブで、[インラインの MATLAB Function ブロック コード] を選択します。

メモ

MATLAB Function ブロックの HDL ブロック プロパティ [アーキテクチャ]MATLAB Datapath に設定する場合は、[インラインの MATLAB Function ブロック コード] 設定は使用しないでください。代わりに [FlattenHierarchy] を有効にします。詳細については、MATLAB Datapath アーキテクチャを使用した、MATLAB Function ブロック境界を越えた HDL 最適化を参照してください。

HDL 設計パターン ブロック

次の表は、eml_hdl_design_patterns ライブラリに含まれる HDL 設計パターンのカテゴリの一部をまとめたものです。それぞれのブロックの詳細については、HDL コード生成のための MATLAB Function ブロックを使用したハードウェア設計パターンの作成を参照してください。

ライブラリ サブシステム目的
Combinatorics

異なる固定小数点データ型をもつ加算、減算、乗算の演算子を含む式などの組み合わせ固定小数点アルゴリズム。

Adders

さまざまな加算器ロジックをモデル化するアルゴリズム。

Delays永続変数のベクトルを使用して整数の遅延、タップ遅延、タップ遅延ベクトル ブロックをモデル化するためのアルゴリズム。これらの設計パターンは、モデル内の MATLAB Function ブロックの各実行間で状態を伝達する逐次アルゴリズムを実装するために使用します。
Comparatorsベクトルの最小値を見つけるためのアルゴリズム。
FSMs

固定小数点算術演算と組み合わせて制御ロジックをすばやくモデル化するための MATLAB Function ブロックの switch/caseif-else などの制御構造。

FSMs/mealy_fsm_blk ブロックと FSMs/moore_fsm_blk ブロックは、MATLAB Function ブロックにおける Mealy および Moore 有限ステート マシンの実装例を提供しています。

Counters

状態をモデル化し、ループ内部でデータ要素を量子化する方法を示すカウンター ロジック。

Shift Registers

シフト レジスタのハードウェア要素をモデル化するアルゴリズム。

shift_reg_1by32 ブロックは、関数 bitsliceget と関数 bitconcat を使用してシフト レジスタをモデル化する方法を示しています。この関数は、32 ビット固定小数点オペランド入力をもつシリアル入力および出力シフターを実装します。

shift_reg_1by64 ブロックは 64 ビット シフターを示しています。この場合、シフターはオペランドを表現するために 2 つの固定小数点の語を使用して、固定小数点整数の 32 ビットの語長制限を解消します。

Word Twiddlers整数からビットへの変換やビットから整数への変換など、ワードの変換を実行するアルゴリズム。

このライブラリのブロックの HDL コード生成への使用

このライブラリのブロックを使用してモデルをビルドし、HDL コードを生成するには、次を行います。

  • モデルを作成するか開きます。

  • eml_hdl_design_patterns ライブラリからモデルにブロックをコピーします。

  • テスト対象デバイス (DUT) サブシステムにブロックを配置します。

  • hdlsetup コマンドを実行して HDL コード生成用にモデルを設定します。

  • 関数 makehdl を実行して DUT サブシステムの HDL コードを生成します。

MATLAB Function ブロックからの HDL コードの生成の詳細については、Generate HDL Code from a MATLAB Function Blockを参照してください。

固定小数点アルゴリズムのサポート

MATLAB Function ブロックでは、浮動小数点演算に加え、Fixed-Point Designer™ の関数 fi を使用した固定小数点演算をサポートしています。この関数は、任意の語長と小数部の長さを操作するアルゴリズムのコーディングに使用できる丸めモードと飽和モードをサポートしています。HDL Coder™ は、fi のすべての丸めモードとオーバーフロー モードをサポートしています。MATLAB Function ブロックから生成された HDL コードは、MATLAB セマンティクスに対してビットトゥルーです。生成されたコードは、VHDL および Verilog にネイティブなビット操作演算子およびビット アクセス演算子 (slice、extend、reduce、concatenate など) を使用します。eml_hdl_design_patterns ライブラリには、fi オブジェクトを使用するブロックの例 (Adders サブシステムのブロックなど) が含まれています。

参考

関連するトピック