Main Content

このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。

hdlverifier.FILSimulation

MATLABによる FIL シミュレーション

説明

FILSimulation System object™ は、 FPGA 実行をMATLAB®テストベンチに接続します。これは、FPGA 上で実行される HDL モデルに入力信号を適用し、そこから出力信号を読み取ることによって行われます。このオブジェクトを入力ポートまたは出力ポートのみで構成することにより、このオブジェクトを使用してソース デバイスまたはシンク デバイスをモデル化できます。

FPGA 実行と通信するMATLABテストベンチで構成されるシミュレーションを実行するには、次のようにします。

  1. FPGA-in-the-Loop ウィザードを使用してオブジェクトをカスタマイズします。hdlverifier.FILSimulation

  2. デザイン内にオブジェクトを作成し、そのプロパティを設定します。

  3. 関数と同様に、引数を指定してオブジェクトを呼び出します。

System object の動作の詳細については、 What Are System Objects?を参照してください。

作成

hdlverifier.FILSimulation System objectを作成するには、FPGA インザループ ウィザードを使用してFILSimulation System objectをカスタマイズします。FILWizard の出力は、 toplevel_fil というファイルです。TG toplevelはトップレベル HDL モジュールの名前です。その後、 System object をローカル変数に代入して作成できます。

filobj = toplevel_fil は、 FPGA インザループ ウィザードによってカスタマイズされたSystem objectを作成します。 toplevel は、 HDL コードの最上位モジュールの名前です。

System objectを作成し、そのプロパティを設定できます。

filobj = toplevel_fil('InputSignals', {'/top/in1','/top/in2'}, ...
                           'OutputSignals', {'/top/out1','/top/out2'}, ...
                           'OutputDataTypes', {'double','fixedpoint'}, ...
                           'OutputSigned', [true,false]);
System objectを作成した後に、書き込み可能なプロパティを調整することもできます。
filobj = toplevel_fil;
filobj.OutputDataTypes = char('fixedpoint', 'integer', 'fixedpoint');
filObj.OutputSigned = [false, true, true];

プロパティ

すべて展開する

特に明記されていない限り、プロパティは「調整不可」です。つまり、オブジェクトの呼び出し後に値を変更することはできません。オブジェクトは呼び出し時にロックされ、関数 release でロック解除されます。

プロパティが調整可能の場合、その値はいつでも変更できます。

プロパティ値の変更の詳細については、 「 System Design in MATLAB Using System Objects 」を参照してください。

この プロパティ は読み取り専用です。

FPGA ボードとの接続のパラメーター。文字ベクトルまたは文字列スカラーとして指定します。ベクトルは 3 つの部分で構成されます。

  • 接続タイプ

  • ボード IP アドレス

  • ボードの MAC アドレス (オプション)

例: char('UDP','192.168.0.2','00-0A-35-02-21-8A') は、 IP アドレス 192.168.0.2 への UDP 接続を指定します。ここで、ボードの MAC アドレスは 00-0A-35-02-21-8A です。

この プロパティ は読み取り専用です。

テスト対象設計 (DUT) のトップレベルの名前。文字ベクトルまたは文字列スカラーとして指定します。

例: 'inverter_top'

この プロパティ は読み取り専用です。

FPGA ボード名。文字ベクトルまたは文字列スカラーとして指定します。

FPGA プログラミング ファイルへのパス。文字ベクトルまたは文字列スカラーとして指定します。

例: 'c:\work\filename'

この プロパティ は読み取り専用です。

FPGA チップ ベンダーの名前。 'Xilinx''Microsemi'、または'Altera'として指定します。

例: 'Altera'

この プロパティ は読み取り専用です。

ビット単位の入力幅。整数または整数のベクトルとして指定します。このプロパティが整数の場合、すべての入力のビット幅は同じになります。このプロパティが整数のベクトルである場合、ベクトルは入力の数と同じサイズである必要があり、各値は異なる入力幅を指定します。

例: 10 – すべての入力は 10 ビット幅です。

例: [12,6,1] – 設計には 3 つの入力があります。1 つは 12 ビット幅、1 つは 6 ビット幅、もう 1 つは 1 ビット幅です。

この プロパティ は読み取り専用です。

HDL コード内の入力パス。文字ベクトル、文字ベクトルの cell 配列、 文字列スカラー、または文字列配列として指定します。

例: '/top/in1'

例: char('in1','in2')

この プロパティ は読み取り専用です。

ビット単位の出力幅。整数または整数のベクトルとして指定します。

スカラーを指定した場合、各出力のビット幅は同じになります。ベクトルを指定する場合、そのベクトルは出力の数と同じサイズでなければなりません。

例: 10 – すべての出力は 10 ビット幅です。

例: [12,6,1] – このデザインには 3 つの出力があります。1 つは 12 ビット幅、1 つは 6 ビット幅、もう 1 つは 1 ビット幅です。

出力データ型。文字ベクトル、文字ベクトルの cell 配列、 文字列スカラー、または文字列配列として指定します。

データ型を 1 つだけ指定した場合、すべての出力は同じ型になります。それ以外の場合は、出力数と同じサイズの cell 配列を指定します。

例: 'integer'

例: char('integer','fixedpoint','integer')

出力のダウンサンプリング係数と位相。2 つの整数のベクトルとして指定します。最初の整数はダウンサンプリング係数を指定し、正の値です。2 番目の整数は位相を指定し、ゼロまたは正のいずれかですが、ダウンサンプリング係数より小さくなります。

例: [3,1]

出力の小数部の長さ。整数または整数のベクトルとして指定します。

スカラーのみを指定した場合、各出力の小数部の長さは同じになります。それ以外の場合は、出力の数と同じサイズのベクトルを指定します。

例: 10 — すべての出力小数部の長さは 10 ビットです。

例: [16,8] — 1 つの出力の小数部の長さは 16 ビットで、もう 1 つの出力の小数部の長さは 8 ビットです。

この プロパティ は読み取り専用です。

HDL 最上位モジュールの出力端子名。文字ベクトル、文字ベクトルの cell 配列、 文字列スカラー、または文字列配列として指定します。

例: 'out1',

例: char('out1','out2')

出力の符号。 false (符号なし)、true (符号あり)、または論理ベクトルとして指定します。

スカラーのみを指定した場合、各出力は同じ符号を持ちます。それ以外の場合は、出力の数と同じサイズのベクトルを指定する必要があります。

例: true

例: [true, true, false] — 符号付き値、符号なし値、符号付き値で構成される 3 つの出力。

ハードウェア オーバークロック係数。整数として指定します。

例: 3

この プロパティ は読み取り専用です。

JTAG スキャン チェーン内の FPGA の位置。正の整数として指定します。

例: 1

ソースのフレーム サイズ。整数として指定します。このプロパティは、HDL ソース ブロック、つまり入力を持たない HDL ブロックにのみ関係します。

例: 1

使用法

説明

[hdloutputs] = filobj([hdlinputs])は FPGA に接続し、 hdlinputsを FPGA に書き込み、 hdloutputsを FPGA から読み取ります。

入力引数

すべて展開する

FPGA 上で実行する入力。値の配列として指定します。配列のサイズは、FPGA で実行されるモジュールの入力数と一致する必要があります。

例: [RealFft, ImagFft] = fft_obj(3,12); の値 3 と 12 が FPGA に駆動されます。

データ型: int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | Fixed-point

出力引数

すべて展開する

FPGA から返される出力。値の配列として指定します。配列のサイズは、FPGA で実行されるモジュールの出力の数と一致します。

例: [RealFft, ImagFft] = fft_obj(real_in,imaginary_in); は、 RealFftImagFftの 2 つの値を持つ FPGA からの複素数を返します。

データ型: int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | Fixed-point

オブジェクト関数

オブジェクト関数を使用するには、System object を最初の入力引数として指定します。たとえば、obj という名前の System object のシステム リソースを解放するには、以下の構文を使用します。

release(obj)

すべて展開する

stepSystem object のアルゴリズムの実行
releaseリソースを解放し、System object のプロパティ値と入力特性の変更を可能にします。
resetSystem object の内部状態のリセット

すべて折りたたむ

この例では、 MATLAB® System objectと FPGA を使用して、Verilog で記述されたサイズ 8 の高速フーリエ変換 (FFT) のレジスタ転送レベル (RTL) 設計を検証します。FFT は、信号の周波数分布を生成するためにデジタル信号処理で一般的に使用されます。

この FFT の正確さを検証するために、 MATLAB System objectテストベンチが提供されています。このテストベンチは、HDL テスト対象デザイン (DUT) への周期的な正弦波入力を生成し、複素平面にフーリエ係数をプロットします。

FPGA設計ソフトウェア環境の設定

FPGA インザループを使用する前に、FPGA 設計ソフトウェアにアクセスできるようにシステム環境が適切に設定されていることを確認してください。関数hdlsetuptoolpathを使用して、現在のMATLABセッションのシステムパスにFPGA設計ソフトウェアを追加できます。

フィルウィザードを起動する

FFT サンプル情報が事前に入力された FIL ウィザードを起動します。最初のステップで FPGA ボード情報を入力し、ウィザードの各ステップに従って、FPGA プログラミング ファイルと FIL System objectを生成します。

filWizard('fft_hdlsrc/fft8_sysobj_fil.mat');

プログラムFPGA

生成されたプログラミング ファイルを使用して FPGA をプログラムします。続行する前に、FIL ウィザードが FPGA プログラミング ファイルの生成を完了していることを確認してください。また、FPGA ボードの電源がオンになっていて、正しく接続されていることを確認してください。

run('fft8_fil/fft8_programFPGA');

SineWave System オブジェクトのインスタンス化

次のコードは、正弦波ジェネレーター (F=100Hz、サンプリング=1000Hz、複素固定点出力) を表すシステム オブジェクトをインスタンス化します。

SinGenerator = dsp.SineWave('Frequency ', 100, ...
                          'Amplitude', 1, ...
                          'Method', 'Table lookup', ...
                          'SampleRate', 1000, ...
                          'OutputDataType', 'Custom', ...
                          'CustomOutputDataType', numerictype([], 10, 9), ...
                          'ComplexOutput',true);

FPGA インザループ システム オブジェクトをインスタンス化する

fft8_fil は、カスタマイズされた FILSimulation System objectであり、このシミュレーション システムの FPGA 上で実行される FFT の HDL 実装を表します。

Fft = fft8_fil;

シミュレーションを実行する

この例では、FPGA インザループSystem objectを介して正弦波ジェネレーターと FFT HDL 実装をシミュレートします。コードのこのセクションでは、処理ループを呼び出してデータをサンプルごとに処理します。

for ii=1:1000
    % Read 1 sample from the sine wave generator
    ComplexSinus = step(SinGenerator);
    % Send/receive 1 sample to/from the HDL FFT on the FPGA
    [RealFft, ImagFft] = step(Fft,real(ComplexSinus),imag(ComplexSinus));
    % Store the FFT sample in a vector
    ComplexFft(ii) = RealFft + ImagFft*1i;
end

フーリエ係数を表示する

フーリエ係数を複素平面にプロットします。

% Discard the first 12 samples (initialization of the HDL FFT)
ComplexFft(1:12)=[];
% Display the FFT
plot(ComplexFft,'ro');
title('Fourier Coefficients in the Complex Plane');
xlabel('Real Axis');
ylabel('Imaginary Axis');

これで、「 MATLAB System Object を使用した FPGA インザループ シミュレーション」の例は終了です。

バージョン履歴

R2012b で導入