主要内容

fpga在环仿真用MATLAB系统对象

本示例使用MATLAB®System对象和FPGA来验证用Verilog编写的大小为8的快速傅里叶变换(FFT)的寄存器传输级(RTL)设计。FFT在数字信号处理中常用来产生信号的频率分布。

为验证该FFT的正确性,给出了MATLAB系统对象测试平台。该测试平台生成一个周期正弦输入到被测HDL设计(DUT),并在复平面上绘制傅里叶系数。

设置FPGA设计软件环境

在使用FPGA-in- loop之前,请确保您的系统环境已正确设置为访问FPGA设计软件。你可以使用这个函数hdlsetuptoolpath将FPGA设计软件添加到当前MATLAB会话的系统路径中。

发射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, Sampling=1000Hz,复杂固定点输出)。

SinGenerator = dsp。SineWave (“频率”, 100,...“振幅”, 1...“方法”“查表”...“SampleRate”, 1000,...“OutputDataType”“自定义”...“CustomOutputDataType”, numerictype([], 10, 9),...“ComplexOutput”,真正的);

实例化FPGA-in-the-Loop系统对象

fft8_fil是一个定制的FILSimulation System对象,它表示在这个仿真系统的FPGA上运行的FFT的HDL实现。

Fft = fft8_fil;

运行模拟

本例通过fpga -in- loop System对象模拟了正弦波发生器和FFT HDL实现。这部分代码调用处理循环来逐个示例处理数据。

2 = 1:1000从正弦波发生器中读取1个样本ComplexSinus = step(SinGenerator);在FPGA上从HDL FFT发送/接收1个样本[RealFft, ImagFft] = step(Fft,real(complex窦),imag(complex窦));将FFT样本存储在一个向量中ComplexFft(ii) = RealFft + ImagFft*1i;结束

显示傅里叶系数

在复平面上画出傅里叶系数。

丢弃前12个样品(HDL FFT初始化)ComplexFft (1:12) = [];
显示FFT情节(ComplexFft“罗”);标题(复平面中的傅里叶系数);包含(“实轴”);ylabel (“虚轴”);

这就是“使用MATLAB系统对象的fpga在环仿真”的例子。