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_demo_dir = fullfile(matlabroot, 'toolbox', 'hdlcoder', 'hdlcoderdemos', 'matlabhdlcoderdemos');
mlhdlc_temp_dir = [tempdir 'mlhdlc_fir'];

% Create a temporary folder and copy the MATLAB files
cd(tempdir);
[~, ~, ~] = rmdir(mlhdlc_temp_dir, 's');
mkdir(mlhdlc_temp_dir);
cd(mlhdlc_temp_dir);

copyfile(fullfile(mlhdlc_demo_dir, [design_name,'.m*']), mlhdlc_temp_dir);
copyfile(fullfile(mlhdlc_demo_dir, [testbench_name,'.m*']), mlhdlc_temp_dir);

設計のシミュレーション

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

mlhdlc_fir_tb

新規プロジェクトの作成

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

coder -hdlcoder -new fir_project

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

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

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

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

license('test', 'Simulink')

HDL ワークフロー アドバイザーの [詳細設定] タブで、[MATLAB 関数ブロックを生成] オプションを有効にします。

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

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

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

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

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

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

makehdl('untitled');

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

生成ファイルのクリーンアップ

プロジェクト用の一時フォルダーをクリーンアップするには、次のコマンドを実行します。

mlhdlc_demo_dir = fullfile(matlabroot, 'toolbox', 'hdlcoder', 'hdlcoderdemos', 'matlabhdlcoderdemos');
mlhdlc_temp_dir = [tempdir 'mlhdlc_fir'];
clear mex;
cd (mlhdlc_demo_dir);
rmdir(mlhdlc_temp_dir, 's');