Main Content

MATLAB および Simulink からの HDL コード生成を使用したシステム設計

この例では、Simulink® でのシステム シミュレーション、コード生成および FPGA プログラミングのために MATLAB® 設計から MATLAB Function ブロックを生成する方法を説明します。

はじめに

HDL Coder では MATLAB と Simulink の両方から HDL コードを生成できます。また、MATLAB コードから Simulink コンポーネントである MATLAB Function ブロックを生成することもできます。

この機能により、以下が可能になります。

  1. MATLAB でのアルゴリズムの設計

  2. MATLAB 設計からの MATLAB Function ブロックの生成

  3. システムの Simulink モデルでの MATLAB コンポーネントの使用

  4. システム モデルのシミュレーションと最適化

  5. HDL コードの生成

  6. システム設計全体を使用した FPGA のプログラミング

この例では、FIR フィルターを実装する MATLAB コードから MATLAB Function ブロックを生成します。

MATLAB 設計

この例で使用する MATLAB コードはシンプルな FIR フィルターです。また、このフィルターを使用する MATLAB テストベンチも示します。

design_name = 'mlhdlc_fir';
testbench_name = 'mlhdlc_fir_tb';
  1. 設計: mlhdlc_fir

  2. テスト ベンチ: mlhdlc_fir_tb

設計のシミュレーション

コードの生成前にテスト ベンチを使用して設計をシミュレートし、実行時エラーがないことを確認するには、次のコマンドを入力します。

mlhdlc_fir_tb

新規プロジェクトの作成

HDL Coder プロジェクトを新規作成するには、次のコマンドを入力します。

coder -hdlcoder -new fir_project

次に、mlhdlc_fir.m ファイルを MATLAB 関数としてプロジェクトに追加し、mlhdlc_fir_tb.m を MATLAB テスト ベンチとして追加します。

[ワークフロー アドバイザー] ボタンをクリックして HDL ワークフロー アドバイザーを起動します。

[MATLAB Function ブロック] オプションの有効化

MATLAB HDL 設計から MATLAB Function ブロックを生成するには、Simulink のライセンスが必要です。次のコマンドを実行して 1 が返される場合は、Simulink を使用できます。

license('test', 'Simulink')

HDL ワークフロー アドバイザーで [HDL コード生成] タスクを選択します。右側で [詳細設定] タブをクリックして [Simulink モデルの生成 (Simulink のライセンスが必要)] チェック ボックスをオンにします。

浮動小数点から固定小数点への変換の実行とコードの生成

MATLAB Function ブロックを生成するには、設計を浮動小数点から固定小数点に変換します。

[HDL コード生成] のステップを右クリックし [選択したタスクまで実行] オプションを選択して、最初から HDL コード生成までのすべてのステップを実行します。

生成された MATLAB Function ブロックの検査

HDL コードの生成後に untitled のモデルが開きます。このモデルには MATLAB HDL 設計から生成された固定小数点の MATLAB コードをもつ MATLAB Function ブロックが含まれています。HDL Coder ではモデルと MATLAB Function ブロックに設定が自動的に適用され、Simulink でシミュレートして HDL コードを生成することができます。

MATLAB Function ブロックから HDL コードを生成するには、次のコマンドを入力します。

makehdl('untitled');

大規模な Simulink 設計で使用するために、ブロック名を変更して新しいブロックとして保存することができます。