このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。
MATLAB System Object と FPGA インザループを使用したビタビ デコーダーの検証
この例では、 MATLAB® System object と FPGA-in-the-Loop を使用して、FPGA 上の VHDL® で実装されたビタビ デコーダをシミュレートする方法を示します。
FPGA設計ソフトウェア環境の設定
FPGA インザループを使用する前に、FPGA 設計ソフトウェアにアクセスできるようにシステム環境が適切に設定されていることを確認してください。関数hdlsetuptoolpathを使用して、現在のMATLABセッションのシステムパスにFPGA設計ソフトウェアを追加できます。
フィルウィザードを起動する
「スクリプトを開く」ボタンをクリックします。次に、Viterbi サンプル情報が事前に入力された FIL ウィザードを起動します。最初のステップで FPGA ボード情報を入力し、ウィザードの各ステップに従って、FPGA プログラミング ファイルと FIL System objectを生成します。
filWizard('viterbi_hdlsrc/viterbi_sysobj_fil.mat');
プログラムFPGA
生成されたプログラミング ファイルを使用して FPGA をプログラムします。続行する前に、FIL ウィザードが FPGA プログラミング ファイルの生成を完了していることを確認してください。また、FPGA ボードの電源がオンになっていて、正しく接続されていることを確認してください。
run('viterbi_block_fil/viterbi_block_programFPGA');
シミュレーションパラメーターを設定し、通信システムオブジェクトをインスタンス化する
次のコードは、シミュレーションパラメーターを設定し、チャネルエンコーダー、BPSK 変調器、AWGNチャネル、BPSK 復調器、および誤り率計算器を表すシステム オブジェクトをインスタンス化します。これらのオブジェクトは、ビタビ デコーダ周辺のシステムを構成し、ビタビ HDL 実装のテスト ベッドと考えることができます。
EsNo = 0; % Energy per symbol to noise power spectrum density ratio in dB FrameSize = 1024; % Number of bits in each frame
% Convolution Encoder hConEnc = comm.ConvolutionalEncoder; % BPSK Modulator hMod = comm.BPSKModulator; % AWGN channel hChan = comm.AWGNChannel('NoiseMethod', ... 'Signal to noise ratio (Es/No)',... 'SamplesPerSymbol',1,... 'EsNo',EsNo); % BPSK demodulator hDemod = comm.BPSKDemodulator('DecisionMethod','Log-likelihood ratio',... 'Variance',0.5*10^(-EsNo/10)); % Error Rate Calculator hError = comm.ErrorRate('ComputationDelay',100,'ReceiveDelay', 58);
FPGA インザループ システム オブジェクトをインスタンス化する
viterbi_block_fil は、カスタマイズされた FILSimulation System objectであり、このシミュレーション システムの FPGA 上で実行されるビタビ デコーダーの HDL 実装を表します。
hDec = viterbi_block_fil;
シミュレーションを実行する
この例では、FPGA インザループSystem objectを介してビタビ デコーダー HDL 実装を組み込んだMATLABで BPSK 通信システムをシミュレートします。コードのこのセクションでは、処理ループを呼び出して、各データ フレームの 1024 ビットでデータをフレームごとに処理します。
for counter = 1:20480/FrameSize data = randi([0 1],FrameSize,1); encodedData = step(hConEnc, data); modSignal = step(hMod, encodedData); receivedSignal = step(hChan, modSignal); demodSignalSD = step(hDemod, receivedSignal); quantizedValue = fi(4-demodSignalSD,0,3,0); input1 = quantizedValue(1:2:2*FrameSize); input2 = quantizedValue(2:2:2*FrameSize); % Send/receive 1 frame to/from the HDL viterbi decoder on the FPGA [ce_out, receivedBits] = step(hDec,input1, input2); errors = step(hError, data, double(receivedBits)); end
ビットエラー率の表示
ビタビ デコーダのビット誤り率が表示されます。
sprintf('Bit Error Rate is %d\n',errors(1))
これで、「 MATLAB System Object と FPGA インザループを使用したビタビ デコーダーの検証」の例は終了です。