主要内容

hdlverifier。Filsimulation.

费尔仿真与MATLAB

描述

Filsimulation.System object™将FPGA执行连接到MATLAB®试验台。它通过将输入信号应用于与FPGA上运行的HDL模型应用于和读取输出信号来实现。您可以使用此对象通过仅使用输入或输出端口配置对象来模拟源或宿设备。

运行由与FPGA执行通信的Matlab测试台组成的模拟:

  1. 定制hdlverifier。FILSimulation对象使用FPGA-in-the-Loop向导

  2. 在设计中创建对象并设置其属性。

  3. 使用参数调用对象,就像它是一个函数。

要了解更多关于System对象如何工作的信息,请参见什么是系统对象?

创建

创建一个hdlverifier。Filsimulation.系统对象,使用FPGA-in-the-Loop向导自定义Filsimulation.系统对象。FILWizard的输出是一个名为最高级的_fil,最高级的是顶级HDL模块的名称。然后,您可以通过将System对象赋值给一个局部变量来创建它。

filobj = toplevel_fil创建由fpga在环向导定制的System对象。最高级的是HDL代码中顶级模块的名称。

你可以创建System对象并设置它的属性:

filobj = toplevel_fil (InputSignals,{‘/高级/ in1’,‘/高级/ in2},…OutputSignals,{/高级/着干活,“/高级/ out2”},…OutputDataTypes,{“双”、“定点”},…“OutputSigned”,真、假);
您还可以在创建系统对象后调整可写属性:
filobj = toplevel_fil;filobj.outputdatatypes = char('textpoint','整数','fixedpoint');filobj.outputsigned = [false,true,true];

特性

全部展开

除非另有说明,属性是nontunable,这意味着您不能在调用对象之后更改它们的值。对象在调用时锁定,而释放功能解锁它们。

如果一个属性是调节,您可以随时更改它的值。

有关更改属性值的详细信息,请参阅在MATLAB中使用系统对象进行系统设计

此属性是只读的。

与FPGA板连接的参数,指定为字符向量或字符串标量。矢量由三部分组成:

  • 连接类型

  • 董事会IP地址

  • 板MAC地址(可选)

例子:char('udp','192.168.0.2','00-0a-35-02-21-8a')指定到IP地址192.168.0.2的UDP连接,其中单板的MAC地址为00-0A-35-02-21-8A。

此属性是只读的。

“测试下设计”(DUT)顶级名称,指定为字符向量或字符串标量。

例子:“inverter_top”

此属性是只读的。

FPGA板名,指定为字符向量或字符串标量。

到FPGA编程文件的路径,指定为字符向量或字符串标量。

例子:'C:\工作\文件名

此属性是只读的。

FPGA芯片供应商的名称,指定为'Xilinx''microsemi', 要么“阿尔特拉”

例子:“阿尔特拉”

此属性是只读的。

位中的输入宽度,指定为整数或整数的向量。当此属性是整数时,所有输入都具有相同的位宽。当此属性是整数的向量时,向量必须与输入的数量相同,其中每个值指定不同的输入宽度。

例子:10.—所有输入均为10位宽。

例子:[12 6 1]—该设计有三个输入:一个是12位宽,一个是6位宽,一个是1位宽。

此属性是只读的。

HDL代码中的输入路径,指定为字符向量、字符向量的单元数组、字符串标量或字符串数组。

例子:“/高级/ in1”

例子:char(“三机”、“in2”)

此属性是只读的。

以位为单位的输出宽度,指定为整数或整数向量。

如果指定标量,则输出每个都具有相同的位宽。如果指定了向量,则向量必须与输出的数量相同。

例子:10.- 所有输出都是10位宽。

例子:[12 6 1]- 设计有三个输出:一个是12位宽,一个是6位宽,一个是1位宽。

输出数据类型,指定为字符向量,字符向量,字符串标量或字符串数​​组的单元格数组。

如果只指定一种数据类型,则所有输出都具有相同的类型。否则,指定与输出数量相同大小的单元格数组。

例子:“整数”

例子:char('整数','textpoint','整数')

输出的下采样因子和相位,指定为两个整数的向量。第一个整数指定下采样系数,为正数。第二个整数指定相位,为零或正,但小于下采样因子。

例子:(3,1)

输出分数长度,以整数或整数向量的形式指定。

如果只指定标量,则每个输出具有相同的分数长度。否则,指定与输出数量相同大小的向量。

例子:10.—所有输出分数长度均为10位。

例子:[16,8]—一个输出分数长度为16位,另一个输出分数长度为8位。

此属性是只读的。

HDL顶级模块中的输出端口名称,指定为字符向量,字符向量,字符串标量或字符串数​​组的单元格数组。

例子:着干活的

例子:char(“着干活”、“out2”)

输出的符号,指定为false(无符号)、true(有符号)或逻辑向量。

如果只提供标量,则每个输出都有相同的符号。否则,您应该提供与输出数量相同大小的向量。

例子:真的

例子:(真的,真的,假的)—三个输出,包括一个有符号值,一个无符号值和一个有符号值。

硬件超频因子,指定为整数。

例子:3.

此属性是只读的。

FPGA在JTAG扫描链中的位置指定为正整数。

例子:1

源的帧大小,指定为整数。此属性仅与HDL源块相关,即没有输入的HDL块。

例子:1

用法

描述

例子

hdloutputs) = filobj ((HDLINPUTS.])连接到FPGA,写入HDLINPUTS.到FPGA并阅读hdloutputs从FPGA。

输入参数

全部展开

在FPGA上运行的输入,指定为值数组。阵列的大小必须匹配在FPGA上执行的模块的输入数量。

例子:[RealFft, ImagFft] = fft_obj(3,12); / /当前位置数值3和12被驱动到FPGA中。

数据类型:INT8.|int16|int32|int64|uint8.|uint16|UINT32.|UINT64|逻辑|定点

输出参数

全部展开

从FPGA返回的输出,指定为值数组。阵列的大小与FPGA上执行的模块的输出数量相匹配。

例子:[RealFft, imagaryt] = fft_obj(real_in, imagary_in);从FPGA返回具有两个值的复数:realfft.ImagFft

数据类型:INT8.|int16|int32|int64|uint8.|uint16|UINT32.|UINT64|逻辑|定点

对象的功能

要使用对象函数,请指定System对象作为第一个输入参数。例如,释放名为system的对象的系统资源obj,使用下面的语法:

发行版(obj)

全部展开

一步 跑步系统对象算法
释放 释放资源并允许更改系统对象属性值和输入特征
重置 使内部状态复位系统对象

例子

全部折叠

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

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

设置FPGA设计软件环境

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

发射FilWizard

通过FFT示例信息启动预先填充的FIL向导。在第一步中输入FPGA板信息,请按照向导的每一步进行操作,并生成FPGA编程文件和FIL系统对象。

filWizard ('fft_hdlsrc / fft8_sysobj_filmat');

FPGA程序

用生成的编程文件对FPGA进行编程。在继续之前,请确保FIL Wizard已经完成了FPGA编程文件的生成。还要确保您的FPGA板已打开并正确连接。

跑步(“fft8_fil / fft8_programFPGA”);

实例化SineWave系统对象

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

SinGenerator = dsp。SineWave (“频率”, 100,......“振幅”,1,......'方法'“表查找”......'采样率',1000,......“OutputDataType”'风俗'......“CustomOutputDataType”, numerictype([], 10,9),......“ComplexOutput”,真的);

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

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

Fft = fft8_fil;

运行模拟

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

II = 1:1000%从正弦波发生器读取1个样本ComplexSinus =步骤(SinGenerator);%发送/从FPGA上的HDL FFT发送/接收1个样本[Realfft,Imagfft] =步骤(FFT,Real(Compleastsinus),Imag(Compledsinus));%存储矢量中的FFT样品ComplexFft(ii) = RealFft + ImagFft*1i;结束

显示傅立叶系数

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

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

最后给出了“利用MATLAB System Object进行fpga在环仿真”的实例。

在R2012B中介绍