Main Content

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

HDL コード生成用の Simulink モデルの作成

HDL Coder™ では、MATLAB® コード、Simulink® モデル、および Stateflow® チャートから VHDL および Verilog コードを生成することができます。その後、生成されたコードが元のアルゴリズムに一致していることを確認して、そのコードをターゲット ハードウェアに展開することができます。

この例では、HDL コード生成用の Simulink モデルを作成する方法を説明します。モデルは簡単な加算カウンター アルゴリズムであり、指定した上限に到達するとゼロに戻ります。

モデルおよび HDL Coder ライブラリを開く

  1. MATLAB を起動します。MATLAB ツールストリップから、[Simulink] ボタン をクリックします。次に、[HDL Coder] セクションで [空の DUT] テンプレートを選択します。

    このテンプレートを選択すると、HDL コード生成用にあらかじめ構成されている Simulink モデルが開きます。書き込み可能な作業フォルダーに hdlcoder_simple_up_counter.slx などのファイル名でモデルを保存します。

    HDL コード生成用のモデルを作成するときに、モデルをテスト対象の設計 (DUT) とテスト ベンチに分割します。DUT は、大半がモデルの最上位にあり、HDL コードを生成するアルゴリズムが含まれている Subsystem です。この Subsystem 外のブロックがテスト ベンチを形成し、Subsystem に対する入力とログに記録された出力値が含まれます。テスト ベンチは、DUT の機能が想定したとおりであることを確認します。

    テスト ベンチでは、HDL コード生成用にサポートされていないブロックを使用できます。[空の DUT] テンプレートでは、モデルには DUT に対応する [HDL_DUT] サブシステムがあります。[HDL_DUT] サブシステム外のブロックがテスト ベンチを形成します。

  2. カウンター アルゴリズムを設計するための [HDL Coder] ブロック ライブラリを開きます。HDL コード生成をサポートするブロック ライブラリを表示するために Simulink ライブラリ ブラウザーをフィルター処理するには、[アプリ] タブで [HDL Coder] を選択します。[HDL コード] タブが表示されます。[HDL ブロック プロパティ][HDL ブロック ライブラリを開く] を選択します。

    HDL Coder ライブラリに、HDL コード生成のために事前に設定されたブロックがいくつか表示されます。このライブラリ内のブロックは 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 ボタンをクリックします。

    または、MATLAB コマンド ラインで、以下のように入力します。

    hdllib('off')

    メモ

    サポートされているブロックのセットは、リリースごとに変更される傾向があります。この製品の新しいバージョンをインストールするたびに、サポートされているブロック ライブラリをリビルドしてください。

設計およびテスト ベンチの開発

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

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

    • 出力データ型: uint32

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

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

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

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

      メモ

      この Constant ブロックの出力データ型が [HDL_DUT] サブシステム内の Constant ブロックの出力データ型に一致していることを確認します。

    • Enable への Counter Free-Running ブロック入力。この例では、Counter Free-Running ブロックを削除します。このブロックを 1 の値をもつ Constant ブロックと、boolean に設定された [出力データ型] で置き換えます。

    この図は、これらの設定を適用した後のモデルの最上位レベルを示しています。

モデルの作成方法の詳細については、簡単なモデルの作成を参照してください。

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

ボタンを押して、モデルをシミュレーションします。シミュレーション結果を確認するには、モデルの最上位レベルで Scope ブロックを開きます。シミュレーション結果の一番上に Enable 信号が表示され、定数値の 1 が生成されます。さらに、out 信号も表示され、0 から 15 までカウントしてから 0 に戻り、再度カウントします。この図は、出力信号 out の波形を表示しています。

モデルの HDL 互換性のチェック

これで、モデルをシミュレーションし、設計の機能を検証しました。HDL コードを生成する前に、モデル設定が HDL コード生成と互換性があることを検証しなければなりません。HDL コード生成と互換性のある設計にするには、HDL コード アドバイザーを使用します。HDL コード アドバイザーの使用方法については、HDL コード アドバイザーを使用したモデルの HDL 互換性のチェックを参照してください。

参考

| | |

関連するトピック