このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。
MATLAB から HDL へのワークフローにおけるコシミュレーションと FPGA インザループ
R2024aこの例では、MATLAB® から HDL への HDL コード生成ワークフローのステップとして、HDL コシミュレーションと FPGA インザループを使用して、生成された HDL コードを検証する方法を示します。
要件と前提条件
この例に必要な製品:
MATLAB
Fixed-Point Designer™
HDL Verifier™
FPGA 設計ソフトウェア (Xilinx® ISE® または Vivado® 設計スイート、または Intel® Quartus® II 設計ソフトウェア)
サポートされている FPGA 開発ボードの 1 つ。サポートされているハードウェアについては、FPGA検証でサポートされているFPGAデバイス を参照してください。
イーサネットを使用した接続の場合:ホストコンピュータにインストールされたギガビットイーサネットアダプタ、ギガビットイーサネットクロスオーバーケーブル
JTAGを使用した接続の場合:Intel FPGA ボード用の USB Blaster I または II ケーブルとドライバー。Xilinx FPGA ボード用の Digilent® JTAG ケーブルとドライバー。
前提条件:
MATLAB および FPGA 設計ソフトウェアは、コンピューターにローカルにインストールすることも、ネットワークにアクセス可能なデバイスにインストールすることもできます。ネットワークからソフトウェアを使用する場合は、FPGA 開発ボードにプライベート ネットワークを提供するために、コンピューターに 2 番目のネットワーク アダプターをインストールする必要があります。ネットワーク アダプターのインストール方法については、コンピューターのハードウェアおよびネットワーク ガイドを参照してください。
MATLAB 設計
この例で使用されている MATLAB コードは、単純な対称 FIR フィルターを実装し、dsp.Delay System object を使用して状態をモデル化します。この例では、このフィルターを使用する MATLAB テスト ベンチも示します。
この MATLAB 設計を見てみましょう。
type('mlhdlc_sysobj_ex.m');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% MATLAB design: Symmetric FIR Filter
%
% Design pattern covered in this example:
% Filter states modeled using DSP System object (dsp.Delay)
% Filter coefficients passed in as parameters to the design
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright 2011-2015 The MathWorks, Inc.
%#codegen
function [y_out, delayed_xout] = mlhdlc_sysobj_ex(x_in, h_in1, h_in2, h_in3, h_in4)
% Symmetric FIR Filter
persistent h1 h2 h3 h4 h5 h6 h7 h8;
if isempty(h1)
h1 = dsp.Delay;
h2 = dsp.Delay;
h3 = dsp.Delay;
h4 = dsp.Delay;
h5 = dsp.Delay;
h6 = dsp.Delay;
h7 = dsp.Delay;
h8 = dsp.Delay;
end
h1p = step(h1, x_in);
h2p = step(h2, h1p);
h3p = step(h3, h2p);
h4p = step(h4, h3p);
h5p = step(h5, h4p);
h6p = step(h6, h5p);
h7p = step(h7, h6p);
h8p = step(h8, h7p);
a1 = h1p + h8p;
a2 = h2p + h7p;
a3 = h3p + h6p;
a4 = h4p + h5p;
m1 = h_in1 * a1;
m2 = h_in2 * a2;
m3 = h_in3 * a3;
m4 = h_in4 * a4;
a5 = m1 + m2;
a6 = m3 + m4;
% filtered output
y_out = a5 + a6;
% delayout input signal
delayed_xout = h8p;
end
type('mlhdlc_sysobj_ex_tb.m');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% MATLAB test bench for the FIR filter
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright 2011-2015 The MathWorks, Inc.
clear mlhdlc_sysobj_ex;
x_in = cos(2.*pi.*(0:0.001:2).*(1+(0:0.001:2).*75)).';
h1 = -0.1339;
h2 = -0.0838;
h3 = 0.2026;
h4 = 0.4064;
len = length(x_in);
y_out_sysobj = zeros(1,len);
x_out_sysobj = zeros(1,len);
a = 10;
for ii=1:len
data = x_in(ii);
% call to the design 'sfir' that is targeted for hardware
[y_out_sysobj(ii), x_out_sysobj(ii)] = mlhdlc_sysobj_ex(data, h1, h2, h3, h4);
end
figure('Name', [mfilename, '_plot']);
subplot(2,1,1);
plot(1:len,x_in); title('Input signal with noise');
subplot(2,1,2);
plot(1:len,y_out_sysobj); title('Filtered output signal');
設計のシミュレーション
コードの生成前にテスト ベンチを使用して設計をシミュレートし、実行時エラーがないことを確認します。MATLAB でこのコマンドを実行します。
mlhdlc_sysobj_ex_tb

HDL Coder™ プロジェクトの新規作成
新しいプロジェクトを作成するには、次のコマンドを入力します。
coder -hdlcoder -new mlhdlv_cosimFIL_prj
次に、ファイル「mlhdlc_sysobj_ex.m」を MATLAB 関数としてプロジェクトに追加し、ファイル「mlhdlc_sysobj_ex_tb.m」を MATLAB Test ベンチとしてプロジェクトに追加します。
MATLAB HDL Coder プロジェクトの作成と設定に関するより完全なチュートリアルについては、 チュートリアルを参照してください。
入力データ型の定義
この浮動小数点 MATLAB System object の場合、すべての入力は Double Scalar です。MATLAB 関数に用意されているドロップダウン メニューを使用して、そのように指定します。

固定小数点変換と HDL コード生成の実行
ワークフロー アドバイザーを起動します。ワークフロー アドバイザーで、「HDL コード生成」ステップを右クリックします。[選択したタスクまで実行] オプションを選択して、最初から HDL コード生成までのすべての手順を実行します。
ワークフロー アドバイザーのログ パネル内のリンクをクリックして、生成された HDL コードを調べます。
コシミュレーションテストベンチを生成し、HDLコシミュレーションを実行する
「コシミュレーションによる検証」ステップを選択します。
「コシミュレーション テスト ベンチを生成する」というチェックボックスを選択します。このアクションにより、ダイアログ内の他の選択肢が有効になり、比較のために出力をログに記録したり、優先する HDL シミュレーターを選択したり、生成されたコシミュレーション テスト ベンチをシミュレートしたりできるようになります。残りのチェックボックスを両方ともオンにして、希望する HDL シミュレータを選択します。
HDL シミュレータの実行モードとして「GUI」を選択します。

「実行」をクリックし、コシミュレーションの出力と固定点 System object の出力を比較するプロットを観察します。また、HDL シミュレータの波形ビューアでの信号遷移にも注意してください。


FPGA開発ボードのセットアップ
FPGA ボードとコンピューターを FPGA インザループ シミュレーション用に通信するように設定する方法については、手順 1.FPGA開発ボードのセットアップ を参照してください。
FPGA インザループ (FIL) テストベンチを生成し、FIL シミュレーションを実行する
ワークフロー アドバイザーの左側のパネルで、「FPGA インザループによる検証」ステップを選択します。
3 つのチェックボックスをすべて選択します (FPGA インザループ テストベンチの生成、出力ログ、生成された FIL テストベンチのシミュレーション)。
ご希望の FPGA 開発ボードを選択してください。

「実行」をクリックし、FPGA の出力と固定小数点 System object の出力を比較するプロットを観察します。
生成されたファイルをクリーンアップする
次のコマンドを実行して、一時プロジェクト フォルダーをクリーンアップします。
clear mex; cd (hdlverif_demo_dir); rmdir(mlhdlv_temp_dir, 's');