Этот пример использует объект MATLAB ® System и FPGA, чтобы проверить проект уровня передачи регистров (RTL) быстрого преобразования Фурье (FFT) размера 8, написанного в Verilog. БПФ обычно используется в цифровой обработке сигналов для создания частотного распределения сигнала.
Для проверки правильности этого БПФ предусмотрен тест объекта MATLAB System. Этот тестбенч генерирует периодический синусоидальный вход в тестируемый проект HDL (DUT) и строит графики коэффициентов Фурье в Комплексной Плоскости.
Перед использованием цикл убедитесь, что ваше системное окружение настроено правильно для доступа к программному обеспечению проекта FPGA. Можно использовать функцию hdlsetuptoolpath, чтобы добавить программное обеспечение проекта FPGA к системному пути для текущего сеанса работы с MATLAB.
Запустите мастер FIL, предварительно заполненный информацией о примере БПФ. Введите информацию о плате FPGA на первом шаге, следуйте каждому шагу Мастера и сгенерируйте файл программирования FPGA и объект FIL System.
filWizard('fft_hdlsrc/fft8_sysobj_fil.mat');
Запрограммируйте FPGA сгенерированным файлом программирования. Прежде чем продолжить, убедитесь, что мастер FIL завершил генерацию файлов программирования FPGA. Также убедитесь, что ваша плата FPGA включена и подключена правильно.
run('fft8_fil/fft8_programFPGA');
Следующий код создает экземпляры системных объектов, которые представляют генератор синусоидальной волны (F = 100 Гц, Sampling = 1000 Гц, комплексный выход точки фиксирования).
SinGenerator = dsp.SineWave('Frequency ', 100, ... 'Amplitude', 1, ... 'Method', 'Table lookup', ... 'SampleRate', 1000, ... 'OutputDataType', 'Custom', ... 'CustomOutputDataType', numerictype([], 10, 9), ... 'ComplexOutput',true);
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 ".