主要内容

使用MATLAB系统对象的FPGA在环上模拟

此示例使用MATLAB®系统对象和FPGA来验证Verilog中写入的尺寸8的快速傅立叶变换(FFT)的寄存器传输级别(RTL)设计。FFT通常用于数字信号处理中,以产生信号的频率分布。

为了验证此FFT的正确性,提供了MATLAB系统对象测试台。该测试台为正在测试的HDL设计(DUT)生成周期性的正弦输入,并在复杂平面中绘制傅立叶系数。

设置FPGA设计软件环境

在使用fpga-in-the-loop之前,请确保正确设置系统环境,以访问FPGA设计软件。您可以使用该功能HDLSETUPTOUPTOLPATH要在当前MATLAB会话的系统路径中添加FPGA设计软件。

启动Filwizard

启动使用FFT示例信息进行预先填充的FIL向导。在第一步中输入您的FPGA板信息,请按照向导的每个步骤,生成FPGA编程文件和FIL System对象。

filwizard('fft_hdlsrc/fft8_sysobj_fil.mat');

程序FPGA

使用生成的编程文件编程FPGA。在继续之前,请确保FIL向导完成了FPGA编程文件生成。另外,请确保您的FPGA板已打开并正确连接。

跑('fft8_fil/fft8_programfpga');

实例化正弦波系统对象

以下代码实例化代表正弦波发生器的系统对象(f = 100Hz,采样= 1000Hz,复杂的固定点输出)。

Singenerator = DSP.SineWave('频率 ',100,...'振幅',1,...'方法',,,,“桌子查找”,,,,...'采样率',1000,...'outputDatatype',,,,'风俗',,,,...“ customOutputdatatype',numerictype([],10,9),...“复杂图”,真的);

实例化fpga-in-in-the-limop系统对象

FFT8_FIL是一种自定义的FILSIMULUTION SYSTEM对象,它表示该模拟系统中FPGA上运行的FFT的HDL实现。

fft = fft8_fil;

运行模拟

此示例通过FPGA-IN-IN-IN-IM系统对象模拟正弦波发生器和FFT HDL实现。代码的本部分调用处理循环以按样本处理数据。

为了II = 1:1000%从正弦波发生器中读取1个样本complexsinus = step(singenerator);%发送/接收1个示例访问/从fpga上的HDL FFT[realfft,imeffft] = step(fft,real(confffectsinus),imag(confffectsinus));%将FFT样品存储在矢量中complexfft(ii)= realfft + ifefft*1i;结尾

显示傅立叶系数

在复杂平面中绘制傅立叶系数。

%丢弃前12个样品(HDL FFT的初始化)complexfft(1:12)= [];
%显示FFT情节(complexfft,'ro');标题(“复杂平面中的傅立叶系数”);Xlabel(“真实轴”);ylabel(“假想轴”);

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