Этот пример использует Системный объект MATLAB® и FPGA, чтобы проверить проект уровня межрегистровых пересылок (RTL) Быстрого преобразования Фурье (FFT) размера 8 записанных в Verilog. БПФ обычно используется в цифровой обработке сигналов, чтобы произвести плотность распределения сигнала.
Чтобы проверить правильность этого БПФ, испытательный стенд Системного объекта MATLAB обеспечивается. Этот испытательный стенд генерирует периодический синусоидальный вход к проекту под тестом (DUT) HDL и строит Коэффициенты Фурье в Комплексной плоскости.
Перед использованием FPGA в цикле убедитесь, что ваша системная среда настраивается правильно для доступа к программному обеспечению проекта FPGA. Можно использовать функцию hdlsetuptoolpath, чтобы добавить программное обеспечение проекта FPGA в системный путь для текущего сеанса работы с MATLAB.
Запустите Мастер FIL, предварительно заполненный с информацией о примере БПФ. Введите свою информацию о плате FPGA в первый шаг, выполните каждый шаг Мастера и сгенерируйте файл программирования FPGA и Системный объект FIL.
filWizard('fft_hdlsrc/fft8_sysobj_fil.mat');
Программируйте FPGA со сгенерированным файлом программирования. Перед продолжением убедитесь, что Мастер FIL закончил FPGA, программируя генерацию файла. Также убедитесь, что ваша плата FPGA включена и соединена правильно.
run('fft8_fil/fft8_programFPGA');
Следующий код инстанцирует системных объектов, которые представляют генератор синусоиды (F=100Hz, Sampling=1000Hz, комплексная точка фиксации выход).
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;
Этот пример симулирует генератор синусоиды и реализацию HDL БПФ через FPGA в Системном объекте цикла. Этот раздел кода вызывает цикл обработки, чтобы обработать выборку выборкой данных.
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 в симуляции цикла с помощью примера" Системного объекта MATLAB.