exponenta event banner

Проверка декодера Витерби с использованием системного объекта MATLAB и FPGA-in-the-Loop

В этом примере показано, как использовать системные объекты MATLAB ® и FPGA-in-the-Loop для моделирования декодера Витерби, реализованного в VHDL на FPGA.

Установка среды программного обеспечения для проектирования FPGA

Перед использованием FPGA-in-the-Loop убедитесь, что системная среда правильно настроена для доступа к программному обеспечению FPGA. Функцию hdlsetuptoolpath можно использовать для добавления программного обеспечения FPGA к системному пути для текущего сеанса MATLAB.

Запустить мастер файлов

Нажмите кнопку «Открыть сценарий». Затем запустите мастер FIL, предварительно заполненный информацией примера Витерби. Введите информацию о плате FPGA на первом шаге, следуйте каждому шагу мастера и создайте файл программирования FPGA и объект FIL System.

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-in-the-Loop

viterbi_block_fil является настраиваемым объектом FILSimulation System, который представляет реализацию HDL декодера Витерби, работающего на FPGA в этой симуляционной системе.

hDec    = viterbi_block_fil;

Запуск моделирования

В этом примере моделируется система связи BPSK в MATLAB, включающая реализацию HDL декодера Витерби через объект FPGA-in-the-Loop System. Этот раздел кода вызывает цикл обработки для обработки кадра данных за кадром с 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 и FPGA-in-the-Loop».