Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

コマンド ライン インターフェイスを使用した MATLAB コードからの HDL コードの生成

この例では、HDL Coder™ コマンド ライン インターフェイスを使用して MATLAB® コードから HDL コードを生成する方法を説明します。また、浮動小数点から固定小数点への変換と、FPGA プログラミング ファイルの生成についても説明します。

概要

コマンド ライン インターフェイスを使用して HDL コードを生成する基本的な手順は、以下のとおりです。

  1. fixpt coder config オブジェクトを作成します (オプション)。

  2. hdl coder config オブジェクトを作成します。

  3. config オブジェクト パラメーターを設定します (オプション)。

  4. codegen コマンドを実行してコードを生成します。

HDL Coder のコマンド ライン インターフェイスでは codegen コマンドで 2 つの coder config オブジェクトを使用できます。オプションの fixpt coder config オブジェクトは、MATLAB コードの浮動小数点から固定小数点への変換を設定します。hdl coder config オブジェクトは HDL コード生成と FPGA プログラミングのオプションを設定します。

この例では、浮動小数点から固定小数点への変換とコード生成を設定するさまざまな方法をご紹介します。

サンプル コードは、離散時間積分器とそのテスト ベンチを実装します。

設計ファイルとテスト ベンチ ファイルの一時フォルダーへのコピー

次のコードを実行して、設計ファイルとテスト ベンチ ファイルを一時フォルダーにコピーします。

close all;
design_name = 'mlhdlc_dti';
testbench_name = 'mlhdlc_dti_tb';

mlhdlc_demo_dir = fullfile(matlabroot, 'toolbox', 'hdlcoder', 'hdlcoderdemos', 'matlabhdlcoderdemos');
mlhdlc_temp_dir = [tempdir 'mlhdlc_dti'];

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);

浮動小数点から固定小数点への変換をともなう基本的なコード生成

既定の設定を使用して、HDL コードを生成し、設計を浮動小数点から固定小数点に変換できます。

必要なのは設計名 mlhdlc_dti とテスト ベンチ名 mlhdlc_dti_tb のみです。

close all;

% Create a 'fixpt' config with default settings
fixptcfg = coder.config('fixpt');
fixptcfg.TestBenchName = 'mlhdlc_dti_tb';

% Create an 'hdl' config with default settings
hdlcfg = coder.config('hdl'); %#ok<NASGU>

fixpt および hdl config オブジェクトを設定したら、次の codegen コマンドを実行して浮動小数点から固定小数点への変換を実行し、HDL コードを生成します。

codegen -float2fixed fixptcfg -config hdlcfg mlhdlc_dti

設計で既に固定小数点のデータ型と関数が使用されている場合は、固定小数点への変換をスキップできます。

hdlcfg = coder.config('hdl'); % Create an 'hdl' config with default settings
hdlcfg.TestBenchName = 'mlhdlc_dti_tb';
codegen -config hdlcfg mlhdlc_dti

この例の残りの部分では、hdl オブジェクトと fixpt オブジェクトを使用してコード生成を設定する方法について説明します。

浮動小数点から固定小数点への変換のための config オブジェクトの作成

浮動小数点から固定小数点への変換を行うには、fixpt config オブジェクトが必要です。

fixpt config オブジェクトを作成してテスト ベンチ名を指定します。

close all;
fixptcfg = coder.config('fixpt');
fixptcfg.TestBenchName = 'mlhdlc_dti_tb';

固定小数点への変換におけるデータ型の推奨に関するオプションの設定

コード ジェネレーターでは、語長または小数部の長さのどちらを選択したかに基づいて固定小数点型が推奨されます。語長と小数部の長さの両方を使用することはできません。

次の例では、語長 24 に基づいてデータ型が推奨されます。

fixptcfg.DefaultWordLength = 24;
fixptcfg.ProposeFractionLengthsForDefaultWordLength = true;

または、小数部の長さに基づいて固定小数点型の推奨を行うこともできます。次のコードは、小数部の長さ 10 に基づいてデータ型を推奨するように設定します。

fixptcfg.DefaultFractionLength = 10;
fixptcfg.ProposeWordLengthsForDefaultFractionLength = true;

安全余裕の設定

固定小数点型の推奨の基準となるシミュレーション データの範囲が、安全余裕の割合だけ広げられます。たとえば、既定の安全余裕が 4 の場合、固定小数点型の推奨に使用されるシミュレーション データの範囲は 4% 拡大します。

SafetyMargin を 10% に設定します。

fixptcfg.SafetyMargin = 10;

データ ログの有効化

浮動小数点から固定小数点への変換が行われる前後に、設計についてテスト ベンチを実行します。シミュレーション データ ログを有効にして、新しい固定小数点データ型の量子化の影響をプロットできます。

fixpt config オブジェクトでデータ ログを有効にします。

fixptcfg.LogIOForComparisonPlotting = true;

数値型推奨レポートの表示

固定小数点型が推奨されると型推奨レポートが起動されるように、コード ジェネレーターを設定します。

fixptcfg.LaunchNumericTypesReport = true;

HDL コード生成 config オブジェクトの作成

コードを生成するには、hdl config オブジェクトを作成して、テスト ベンチ名を設定しなければなりません。

hdlcfg = coder.config('hdl');
hdlcfg.TestBenchName = 'mlhdlc_dti_tb';

ターゲット言語の設定

VHDL コードまたは Verilog コードを生成できます。既定では、HDL Coder で VHDL コードが生成されます。Verilog コードを生成するには、次のようにします。

hdlcfg.TargetLanguage = 'Verilog';

HDL テスト ベンチ コードの生成

MATLAB® テスト ベンチから HDL テスト ベンチを生成します。

hdlcfg.GenerateHDLTestBench = true;

HDL シミュレーターを使用した生成済み HDL コードのシミュレーション

HDL シミュレーターを使用して生成された HDL コードをシミュレートするには、HDL テスト ベンチも生成しなければなりません。

HDL シミュレーションを有効にして、ModelSim シミュレーターを使用します。

hdlcfg.SimulateGeneratedCode = true;
hdlcfg.SimulationTool = 'ModelSim'; %  or 'ISIM'

FPGA プログラミング ファイルの生成

合成ツールが設定されている場合は、FPGA プログラミング ファイルを生成できます。合成を有効にするには、合成ツールを指定して、FPGA を指定します。

% Enable Synthesis.
hdlcfg.SynthesizeGeneratedCode = true;

% Configure Synthesis tool.
hdlcfg.SynthesisTool = 'Xilinx ISE'; %  or 'Altera Quartus II';
hdlcfg.SynthesisToolChipFamily = 'Virtex7';
hdlcfg.SynthesisToolDeviceName = 'xc7vh580t';
hdlcfg.SynthesisToolPackageName = 'hcg1155';
hdlcfg.SynthesisToolSpeedValue = '-2G';

コード生成の実行

fixpt config オブジェクトおよび hdl config オブジェクトの設定が完了したら、codegen コマンドを実行して浮動小数点から固定小数点への変換を実行し、HDL コードと FPGA プログラミング ファイルを生成します。

codegen -float2fixed fixptcfg -config hdlcfg mlhdlc_dti