Main Content

HDL 互換 Simulink モデルの作成

この例では、HDL コード生成用の Simulink® モデルを作成する方法を説明します。HDL コード生成と互換性のある MATLAB® アルゴリズムを作成するには、効率的な HDL コードおよび HLS コードを生成するための MATLAB コードの記述に関するガイドラインを参照してください。

モデルは簡単な加算カウンター アルゴリズムであり、指定した上限に到達するとゼロに戻ります。この手順を実行しないでモデルを直接開くには、簡単なカウンター モデルを参照してください。

[空の DUT] テンプレートの使用

HDL と互換性のある Simulink モデルを作成するには、[空の DUT] テンプレートを使用します。テンプレートは関数 hdlsetup を使用して HDL コード生成用にあらかじめ構成されています。

  1. MATLAB ツールストリップで ボタンをクリックします。

  2. Simulink のスタート ページで [HDL Coder] セクションに移動し、[空の DUT] テンプレートを選択します。

  3. 書き込み可能な作業フォルダーに hdlcoder_simple_up_counter.slx のファイル名でモデルを保存します。

[空の DUT] テンプレートには、HDL コードを生成するテスト対象の設計 (DUT) に対応する HDL_DUT サブシステムがあります。DUT の機能を検証するため、テンプレートには HDL_DUT サブシステムの外に、DUT への入力を提供し、出力値をログ記録するテスト ベンチが含まれています。DUT およびテスト ベンチへのモデルの分割を参照してください。

HDL Coder ライブラリからのブロックの選択

カウンター アルゴリズムを設計するには、[HDL Coder] ブロック ライブラリのブロックを使用します。このライブラリに含まれるブロックは、HDL コード生成用に事前設定されています。HDL コード生成をサポートするブロック ライブラリを表示するために Simulink ライブラリ ブラウザーをフィルター処理するには、次のようにします。

  1. [アプリ] タブで、[HDL Coder] を選択します。

  2. [HDL コード] タブから [HDL ブロック プロパティ][HDL ブロック ライブラリを開く] を選択します。

あるいは、コマンド ラインで「hdllib」と入力します。

hdllib

[HDL Coder] ライブラリのブロックは Simulink で使用できます。HDL Coder™ がない場合、モデル内のブロックのシミュレーションを実行できますが、HDL コードは生成できません。

次のブロック ライブラリ内には HDL でサポートされた追加のブロックがあります。

  • DSP System Toolbox HDL Support

  • Communications Toolbox HDL Support

  • Vision HDL Toolbox

  • Wireless HDL Toolbox

ライブラリ ブラウザーを既定のビューに戻すには、ライブラリ ブラウザーで、exit HDL-compatible blocks mode ボタンをクリックします。あるいは、コマンド ラインで次のように入力します。

hdllib('off')

DUT 向けのアルゴリズムの開発

  1. HDL_DUT サブシステムをダブルクリックします。[HDL Coder] ライブラリからモデルにブロックをドラッグします。次の表に、カウンターを設計するためにモデルに追加するブロックを示します。ブロックの動作について確認したり、そのブロックのブロック パラメーターを指定したりするには、ブロックをダブルクリックします。

    ブロックライブラリブロック数ブロック パラメーター
    ConstantSources2
    • 定数値: 1 と 0

    • 出力データ型: uint8

    SwitchSignal Routing21 番目の入力が通過する条件: u2 > しきい値
    DelayDiscrete2遅延の長さ: 1
    AddMath Operations1アキュムレータのデータ型: Inherit:1 番目の入力と同じ
    Relational OperatorLogic and Bit Operations1関係演算子: >
  2. 入力端子 In1In2 の名前をそれぞれ count_thresholdEnable に変更します。ブロックをモデルに配置して、それらを接続します。

Enable 信号は、カウンターが前の値から加算カウントするかどうかを指定します。Enable 信号が logical High である場合、カウンターはゼロから count_threshold 値まで加算カウントします。out の値が count_threshold 値と等しくなると、カウンターはゼロに戻り、再びカウントを開始します。Enable 信号が logical Low になると、カウンターは直前の値を保持します。

設計のためのテスト ベンチの作成

モデルの最上位レベルに移動して、入力設定を変更します。

  • count_threshold への Constant ブロック入力。この入力は、カウンターがカウントする最大値を示します。この例では、4 ビットの加算カウンターを設計する方法を示します。[定数値]15 (2^4 - 1) に設定して、[出力データ型]uint8 に設定します。

    すると、この Constant ブロックの出力データ型は HDL_DUT サブシステム内の Constant ブロックの出力データ型に一致します。

  • Enable への Counter Free-Running ブロック入力。Counter Free-Running ブロックを削除します。このブロックを、1 の値をもち、[出力データ型]boolean に設定されており、1[サンプル時間] をもつ Constant ブロックで置き換えます。

簡単なモデルの作成も参照してください。

前の節では、上記で説明した手順に従って作成した hdlcoder_simple_up_counter.slx モデルを示しています。モデルを MATLAB で開くには [モデルを開く] ボタンをクリックします。

簡単なカウンター モデル

このモデルを開いて、簡単なカウンターを表示します。モデルはゼロからしきい値までカウントし、ゼロに戻ります。しきい値は 15 に設定されています。しきい値を変更するには count_threshold 端子への入力の値を変更します。イネーブル信号は、カウンターが加算カウントするか、あるいは前の値を保持するかを指定します。1 の値は、カウンターが連続して加算カウントすることを示しています。

設計の機能のシミュレーションと検証

モデルの [終了時間]50 に設定します。 ボタンをクリックしてモデルのシミュレーションを行います。シミュレーション結果を確認するには、モデルの最上位レベルで Scope ブロックを開きます。

シミュレーション結果は、定数値 1 を生成している Enable 信号を表示します。out 信号は 0 から 15 までカウントし、ゼロに戻り、再び加算カウントします。

Simulink モデルからの HDL コードの生成

HDL コードを生成する前に、モデル設定が HDL コード生成と互換性があることを検証できます。この例で使用したカウンター モデルは HDL コード生成と互換性があります。モデルについて HDL 互換性を検証し更新するには、HDL コード アドバイザーを使用します。HDL コード アドバイザーを使用した Simulink モデルの HDL 互換性のチェックを参照してください。

Simulink モデルからの HDL コードの生成を参照してください。

参考

| | |

関連するトピック