Симуляция цикл с использованием системного объекта MATLAB

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

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

Настройка окружения программного обеспечения Проект

Перед использованием цикл убедитесь, что ваше системное окружение настроено правильно для доступа к программному обеспечению проекта FPGA. Можно использовать функцию hdlsetuptoolpath, чтобы добавить программное обеспечение проекта FPGA к системному пути для текущего сеанса работы с MATLAB.

Запуск FilWizard

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

filWizard('fft_hdlsrc/fft8_sysobj_fil.mat');

Программа ПЛИС

Запрограммируйте 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 в цикле

fft8_fil настраиваемый Системный объект FILSimulation, которая представляет HDL- реализации БПФ, выполняемой в FPGA в этой системе симуляции.

Fft = fft8_fil;

Запуск симуляции

Этот пример моделирует генератор синусоиды и реализацию FFT 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');

На этом Цикле симуляции на примере MATLAB System Object ".