exponenta event banner

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

В этом примере используется объект MATLAB ® System и FPGA для проверки конструкции уровня передачи регистров (RTL) быстрого преобразования Фурье (FFT) размера 8, написанного в Verilog. БПФ обычно используется в цифровой обработке сигналов для получения частотного распределения сигнала.

Для проверки правильности этого БПФ предусмотрены средства тестирования объектов системы MATLAB. В этом испытании генерируются периодические синусоидальные входные данные в тестируемую конструкцию ЛПВП (DUT) и строятся графики коэффициентов Фурье в комплексной плоскости.

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

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

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

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

filWizard('fft_hdlsrc/fft8_sysobj_fil.mat');

Программа FPGA

Выполните программирование FPGA с помощью созданного файла программирования. Прежде чем продолжить, убедитесь, что мастер FIL завершил создание файла программирования FPGA. Также убедитесь, что плата FPGA включена и подключена правильно.

run('fft8_fil/fft8_programFPGA');

Создание экземпляра системных объектов SineWave

Следующий код создает экземпляры системных объектов, которые представляют генератор синусоидальных волн (F = 100 Гц, Sampling = 1000 Гц, выход комплексной фиксированной точки).

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

Создание экземпляра системного объекта FPGA-in-the-Loop

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

Fft = fft8_fil;

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

В этом примере моделируется генератор синусоидальных волн и реализация БПФ HDL через объект FPGA-in-the-Loop System. Этот раздел кода вызывает цикл обработки для обработки выборки данных.

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');

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