Это использование в качестве примера Системный объект MATLAB и FPGA, чтобы проверить проект уровня межрегистровых пересылок (RTL) Быстрого преобразования Фурье (FFT) размера 8 записанных в Verilog. БПФ обычно используется в цифровой обработке сигналов, чтобы произвести плотность распределения сигнала.
Чтобы проверить правильность этого БПФ, испытательный стенд Системного объекта MATLAB обеспечивается. Этот испытательный стенд генерирует периодический синусоидальный вход к проекту под тестом (DUT) HDL и строит Коэффициенты Фурье в Комплексной плоскости.
Перед использованием 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 для примера БПФ в вашу локальную директорию
copyFILDemoFiles('fft');
Запустите Мастер FIL, предварительно заполненный с информацией о примере БПФ. Введите свою информацию о плате FPGA в первый шаг, выполните каждый шаг Мастера и сгенерируйте файл программирования FPGA и Системный объект FIL.
filWizard('fft_hdlsrc/fft8_sysobj_fil.mat');
Программируйте 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
Следующий код инстанцирует системных объектов, которые представляют генератор синусоиды (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'); % This concludes the "FPGA-in-the-Loop simulation using MATLAB System % Object" example.