このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。
MATLABから HDL へのワークフローにおけるコシミュレーションと FPGA-in-the-Loop
この例では、 MATLAB®から HDL への HDL コード生成ワークフローのステップとして HDL コシミュレーションと FPGA インザループを使用して、生成された HDL コードを検証する方法を示します。
要件と前提条件
この例に必要な製品:
MATLAB
Fixed-Point Designer™
HDL Verifier™
FPGA デザイン ソフトウェア (Xilinx® ISE® または Vivado® デザイン スイート、またはインテル® Quartus® II デザイン ソフトウェア)
サポートされている FPGA 開発ボードの 1 つ。サポートされているハードウェアについては、 FPGA検証用にサポートされているFPGAデバイスを参照してください。
イーサネットを使用した接続の場合:ホスト コンピュータにインストールされたギガビット イーサネット アダプタ、ギガビット イーサネット クロスオーバー ケーブル
JTAGを使用した接続の場合:Intel FPGA ボード用の USB Blaster I または II ケーブルおよびドライバー。Digilent® JTAG ケーブルおよびザイリンクス FPGA ボード用ドライバー。
前提条件:
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 から HDL へのワークフロー入門 (HDL Coder)チュートリアルを参照してください。
入力データ型の定義
この浮動小数点MATLAB System objectの場合、すべての入力は Double Scalar です。MATLAB関数に提供されるドロップダウン メニューを使用して、それらを指定します。
固定小数点変換と HDL コード生成の実行
ワークフロー アドバイザーを起動します。ワークフロー アドバイザーで、「HDL コード生成」ステップを右クリックします。[選択したタスクまで実行] オプションを選択して、最初から HDL コード生成までのすべての手順を実行します。
ワークフロー アドバイザーのログ パネル内のリンクをクリックして、生成された HDL コードを調べます。
コシミュレーション テストベンチの生成と HDL コシミュレーションの実行
「協調シミュレーションによる検証」ステップを選択します。
「協調シミュレーション テストベンチを生成」というラベルの付いたチェックボックスを選択します。このアクションにより、ダイアログ内の他の選択肢が有効になり、比較のために出力をログに記録したり、優先する HDL シミュレーターを選択したり、生成された協調シミュレーション テストベンチをシミュレートしたりすることができます。残りのチェックボックスを両方ともオンにして、希望の HDL シミュレーターを選択します。
HDL シミュレータの実行モードとして「GUI」を選択します。
[実行] をクリックし、協調シミュレーションの出力と固定小数点System objectの出力を比較するプロットを観察します。HDL シミュレータの波形ビューアの信号の遷移にも注目してください。
FPGA 開発ボードをセットアップする
FPGA-in-the-Loop シミュレーション用に通信するための FPGA ボードとコンピューターのセットアップについては、 手順 1.FPGA開発ボードのセットアップを参照してください。
FPGA-in-the-Loop (FIL) テストベンチを生成し、FIL シミュレーションを実行する
ワークフロー アドバイザーの左側のパネルで [Verify with FPGA-in-the-Loop] ステップを選択します。
3 つのチェックボックスをすべて選択します (FPGA-in-the-Loop テストベンチの生成、出力ログ、生成された FIL テストベンチのシミュレーション用)。
任意の FPGA 開発ボードを選択します。
[実行] をクリックし、FPGA の出力と固定小数点System objectの出力を比較するプロットを観察します。
生成されたファイルをクリーンアップする
次のコマンドを実行して、一時プロジェクト フォルダーをクリーンアップします。
clear mex; cd (hdlverif_demo_dir); rmdir(mlhdlv_temp_dir, 's');