Этот пример показывает вам, как использовать Системные объекты MATLAB® и FPGA в цикле, чтобы симулировать Декодер Витерби, реализованный в VHDL на FPGA.
Перед использованием FPGA в цикле убедитесь, что ваша системная среда настраивается правильно для доступа к программному обеспечению проекта FPGA. Можно использовать функцию hdlsetuptoolpath, чтобы добавить программное обеспечение проекта FPGA в системный путь для текущего сеанса работы с MATLAB.
Нажмите кнопку Open Script. Затем запустите Мастер FIL, предварительно заполненный с информацией о примере Viterbi. Введите свою информацию о плате FPGA в первый шаг, выполните каждый шаг Мастера и сгенерируйте файл программирования FPGA и Системный объект FIL.
filWizard('viterbi_hdlsrc/viterbi_sysobj_fil.mat');
Программируйте FPGA со сгенерированным файлом программирования. Перед продолжением убедитесь, что Мастер FIL закончил FPGA, программируя генерацию файла. Также убедитесь, что ваша плата FPGA включена и соединена правильно.
run('viterbi_block_fil/viterbi_block_programFPGA');
Следующие кодовые наборы параметры симуляции и инстанцируют системных объектов, которые представляют энкодер канала, модулятор BPSK, канал AWGN, демодулятор BPSK и калькулятор коэффициента ошибок. Те объекты включают систему вокруг Декодера Витерби и могут считаться испытательным стендом для реализации HDL Viterbi.
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);
viterbi_block_fil является индивидуально настраиваемым Системным объектом FILSimulation, который представляет реализацию HDL Декодера Витерби, работающего на FPGA в этой системе симуляции.
hDec = viterbi_block_fil;
Этот пример симулирует систему связи BPSK в MATLAB, включающем реализацию HDL Декодера Витерби через FPGA в Системном объекте цикла. Этот раздел кода вызывает цикл обработки, чтобы обработать данные, покадровые с 1 024 битами в каждой системе координат данных.
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 в цикле" пример.