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

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

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

Установите программную среду проекта FPGA

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

Для плат FPGA Xilinx, выполнения

>>hdlsetuptoolpath('ToolName', 'Xilinx ISE', 'ToolPath', 'C:\Xilinx\13.1\ISE_DS\ISE\bin\nt64\ise.exe');

Этот пример принимает, что исполняемый файл ISE Xilinx является C:\Xilinx\13.1\ISE_DS\ISE\bin\nt64\ise.exe. Займите место со своим фактическим исполняемым файлом, если это отличается.

Для плат Altera, выполнения

>>hdlsetuptoolpath('ToolName','Altera Quartus II','ToolPath','C:\altera\11.0\quartus\bin\quartus.exe');

Этот пример принимает, что исполняемый файл Куарта II Altera является C:\altera\11.0\quartus\bin\quartus.exe. Займите место со своим фактическим исполняемым файлом, если это отличается.

Скопируйте файлы HDL БПФ

Скопируйте файлы HDL для примера БПФ в вашу локальную директорию

copyFILDemoFiles('fft');

Запустите FilWizard

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

filWizard('fft_hdlsrc/fft8_sysobj_fil.mat');

FPGA программы

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

run('fft8_fil/fft8_programFPGA');
### Generating iMPACT command file
### Checking iMPACT tool
### Start loading bitstream "S:\MATLAB\demo\fft8_fil\fft8_fil.bit"
### Loading bitstream "S:\MATLAB\demo\fft8_fil\fft8_fil.bit" completed successfully

Инстанцируйте системных объектов SineWave

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

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;

Запустите симуляцию

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

% This concludes the "FPGA-in-the-Loop simulation using MATLAB System
% Object" example.