创建一个MATLAB试验台
高密度脂蛋白验证者™软件提供了一种方法验证高密度脂蛋白在MATLAB模块®环境。你通过编码一个高密度脂蛋白模型和MATLAB函数与高密度脂蛋白模型可以共享数据。本章论述了编程、接口和调度约定MATLAB试验台功能与高密度脂蛋白模拟器通信。注意,与Vivado cosimulation®模拟器不支持cosimulation 万博1manbetxMATLAB函数。
MATLAB试验台功能让你验证高密度脂蛋白的性能模型,或内的组件模型。试验台功能驱动器连接到信号输入值测试端口的HDL设计和接收信号值的输出端口模块。
下面的图显示了一个MATLAB函数封装,与高密度脂蛋白模拟器在试验台模拟通信会话。
当与MATLAB,高密度脂蛋白模拟器作为客户端,以MATLAB为服务器。下面的图显示了一个多个客户机的场景在TCP / IP套接字连接到服务器端口4449。
MATLAB服务器可以同时服务多个会话和高密度脂蛋白HDL模拟器模块。然而,您应该遵循建议的准则,以帮助服务器跟踪与每个相关的I / O模块和会话。MATLAB服务器,你开始提供的功能hdldaemon
,等待连接请求的实例HDL模拟器上运行相同或不同的电脑。当服务器接收到请求时,它执行指定的MATLAB函数代表一个模块编码执行任务在你HDL设计。参数指定当您启动服务器指示是否服务器建立共享内存或TCP / IP套接字通信链接。
指Cosimulation配置为有效的机器配置。
请注意
编程、接口和调度约定试验台功能和组件功能几乎是相同的。在大多数情况下,同样的过程适用于两种类型的函数。
按照以下工作流程的步骤,创建一个MATLAB试验台会话的cosimulation HDL模拟器。
写HDL模块MATLAB试验台
HDL编码模块验证MATLAB
沟通的最基本的元素是高密度脂蛋白HDL验证器接口模块。高密度脂蛋白之间的接口所有数据模拟器和MATLAB端口数据。软件与任何现有的高密度脂蛋白HDL校验模块。然而,当您代码的高密度脂蛋白模块针对MATLAB验证,你应该考虑它的名字,两者之间的类型的数据共享环境中,模式和方向。
为使用选择高密度脂蛋白模块名称MATLAB试验台
虽然不是必需的,高密度脂蛋白模块命名时,可以考虑选择一个名字,也可以用作MATLAB函数名。(一般来说,硬件描述语言(VHDL)的命名规则®或Verilog®和MATLAB是兼容的。)默认情况下,假设一个高密度脂蛋白HDL校验软件模块及其仿真函数共享相同的名称。看到结合试验台与matlabtb函数调用。
MATLAB function-naming指南的详细信息,请参见“MATLAB编程技巧”在MATLAB文档文件和文件名。
指定港口方向模式与试验台HDL模块使用
在您的模块声明中,您必须指定每个端口与一个方向模式(输入、输出或双向)。下表定义了这三种模式。
使用硬件描述语言(VHDL)模式…… | 使用Verilog模式…… | 对港口…… |
---|---|---|
在 |
输入 |
代表信号可以由一个MATLAB函数或模型万博1manbetx®试验台 |
出 |
输出 |
表示信号值传递给一个MATLAB函数或模型试验台万博1manbetx |
INOUT |
inout |
代表双向信号可以由值传递给一个MATLAB函数或模型试验台万博1manbetx |
指定端口的数据类型与试验台HDL模块使用
本节描述如何为港口在你的指定数据类型兼容MATLAB HDL模块。的细节HDL验证器接口转换数据类型的MATLAB环境,明白了万博1manbetx支持的数据类型。
请注意
如果你使用不受支持的类型,万博1manbetx高密度脂蛋白校验软件问题,而忽略了港口在运行时的一个警告。例如,如果您定义的接口和五个港口,其中一个是硬件描述语言(VHDL)访问端口,在运行时,界面显示一个警告和代码只能看到4个端口。
端口的数据类型硬件描述语言(VHDL)实体。在实体声明中,您必须定义每个端口,你打算测试与MATLAB HDL硬件描述语言(VHDL)数据类型支持的验证器软件。万博1manbetx接口可以转换标量以下硬件描述语言(VHDL)类型和数组数据可比MATLAB类型:
STD_LOGIC
,STD_ULOGIC
,位
,STD_LOGIC_VECTOR
,STD_ULOGIC_VECTOR
,BIT_VECTOR
整数
和自然
真正的
时间
枚举类型,包括用户定义的枚举类型和
字符
接口也支持之前的所有子类型和数组类型。万博1manbetx
请注意
高密度脂蛋白校验软件不支持硬件描述语言(VHDL)扩展标识符以下组件:万博1manbetx
端口和用于cosimulation信号名称
枚举文字当用作数组索引用于cosimulation港口和信号名称
然而,软件是否支持硬件描述语言(VHDL)的基本标识符万博1manbetx。
端口的数据类型Verilog模块。在您的模块定义中,您必须定义每个端口,你打算测试与MATLAB Verilog端口支持的数据类型是高密度脂蛋白校验软件。万博1manbetx以下Verilog端口的接口可以转换数据类型与MATLAB类型:
注册
整数
线
请注意
软件不支持Verilog HDL验证人逃脱了标识符用于cosi万博1manbetxmulation港口和信号名称。然而,它确实支持Verilog简单万博1manbetx标识符。
编译和精致的HDL设计使用试验台
在您创建或编辑你的HDL源文件,使用HDL模拟器编译器来编译和调试代码。
更多的例子,请参阅HDL验证者教程和演示。在使用高密度脂蛋白编译器的详细信息,请参见模拟器文档。
样本硬件描述语言(VHDL)实体定义
这个示例VHDL代码片段定义了实体译码器
。默认情况下,与MATLAB相关联的实体是试验台的功能译码器
。
关键字港口
标志着开始实体端口的条款,它定义了两个在
港口- - - - - -isum
和qsum
——三个出
港口- - - - - -邻接的
,dvalid
,odata
。MATLAB函数的输出端口驱动信号输入端口进行处理。输入端口从MATLAB函数接收信号输出端口。
输入端口定义为向量组成的五个标准逻辑值。输出端口邻接的
也定义为一个标准的逻辑向量,但只包含两个值。输出端口dvalid
和odata
被定义为标量标准逻辑端口。高密度脂蛋白的信息匹配的接口转换数据的标准逻辑标量、数组类型使用在MATLAB环境中,明白了万博1manbetx支持的数据类型。
实体译码器端口(isum: std_logic_vector(4报纸0);qsum: std_logic_vector(4报纸0);的:std_logic_vector(1报纸0);std_logic dvalid:;odata: std_logic);结束译码器;
写一个试验台的功能
编码MATLABCosimulation功能
编码MATLAB函数来验证一个高密度脂蛋白模块或组件需要遵循特定的编码惯例。您还必须了解发生的数据类型转换,和程序数据类型转换操作数据和返回数据的高密度脂蛋白模拟器。
编码MATLAB函数来验证一个高密度脂蛋白模块或组件,执行以下步骤:
学习的语法MATLAB HDL验证器试验台的功能。看到试验台的语法功能。
了解高密度脂蛋白HDL校验软件转换数据模拟器在MATLAB环境中使用。看到万博1manbetx支持的数据类型。
选择一个MATLAB函数的名称。看到高密度脂蛋白模块组件绑定到MATLAB试验台的功能。
在函数定义中定义预期的参数。看到MATLAB函数和函数参数定义的语法。
确定类型的端口数据被传递到函数。看到MATLAB函数和函数参数定义的语法。
提取和,如果适用于模拟,应用信息收到
portinfo
结构。看到获得和应用端口信息。转换数据操纵在MATLAB环境中,如适用。看到将高密度脂蛋白数据发送到MATLAB或仿真软件万博1manbetx。
转换数据,需要返回到高密度脂蛋白模拟器。看到将数据返回到高密度脂蛋白模拟器。
更多的技巧,明白了试验台和组件功能。
试验台的语法功能
MATLAB试验台函数的语法
函数[iport tnext] =MyFunctionName(tnow oport portinfo)
看到MATLAB函数和函数参数定义的语法对每个函数参数的解释。
样本MATLAB试验台的功能
本节将使用一个示例MATLAB函数识别MATLAB试验台的部分函数所需的HDL校验软件。你可以看到代码的全文本示例中使用的部分MATLAB构建器函数的例子:交货manchester_decoder.m。
为ModelSim用户
这个示例使用硬件描述语言(VHDL)的实体MATLAB Builder™前女友函数代码来自曼彻斯特的解码器部分接收机的例子。完整的硬件描述语言(VHDL)和功能代码清单,请参阅下列文件:
matlabroot\工具箱\ edalink \ \ modelsim \ modelsimdemos \扩展硬件描述语言(vhdl) \ \ decoder.vhd曼彻斯特
matlabroot\ \工具箱\ edalink \扩展modelsim \ modelsimdemos \ manchester_decoder.m
编码的第一步MATLAB构建器前女友试验台功能,您必须了解如何在硬件描述语言(VHDL)的实体数据模型映射到数据MATLAB构建器前女友环境。硬件描述语言(VHDL)的实体译码器
定义如下:
实体译码器端口(isum: std_logic_vector(4报纸0);qsum: std_logic_vector(4报纸0);的:std_logic_vector(1报纸0);std_logic dvalid:;odata: std_logic);结束译码器;
以下讨论的定义强调关键的代码行manchester_decoder
MATLAB构建器前女友功能:
指定所需的MATLAB函数名和参数。
下面的代码的函数声明
manchester_decoder
MATLAB构建器前女友函数。函数[iport tnext] = manchester_decoder (oport、tnow portinfo)
函数声明执行以下操作:
函数名称。这个声明的函数名称
manchester_decoder
,这不同于实体名称译码器
。因为名字不同,函数名必须显式地指定后,初始化实体验证的matlabtb
或matlabtbeval
函数。看到高密度脂蛋白模块组件绑定到MATLAB试验台的功能。定义了所需参数和返回的参数。一个MATLAB构建器前女友试验台的功能必须返回两个参数,
iport
和tnext
通过三个参数,oport
,tnow
,portinfo
,必须出现的顺序显示。看到MATLAB函数和函数参数定义的语法。函数输出必须初始化为空值,如下面的代码示例:
tnext = [];iport =结构();
你应该初始化函数输出的函数,按照推荐的最佳实践。
下面的图显示了实体的港口和之间的关系MATLAB构建器前女友函数的
iport
和oport
参数。更多信息的要求MATLAB构建器前女友试验台的功能参数,看看MATLAB函数和函数参数定义的语法。
使注意港口为实体定义数据类型的模拟。
高密度脂蛋白校验软件将高密度脂蛋白数据类型转换为具有可比性MATLAB构建器前女友数据类型,反之亦然。当你开发MATLAB构建器前女友功能,你必须知道它接收的数据的类型的模拟器,需要返回到高密度脂蛋白HDL模拟器。
对于这个示例定义的硬件描述语言(VHDL)实体包括以下港口
硬件描述语言(VHDL)例如端口定义
港口 方向 类型…… 皈依/需要转换…… isum
在
STD_LOGIC_VECTOR(4报纸0)
一位字符的列或行向量,每个位映射到一个标准的逻辑字符文字。 qsum
在
STD_LOGIC_VECTOR(4报纸0)
一位字符的列或行向量,每个位映射到一个标准的逻辑字符文字。 邻接的
出
STD_LOGIC_VECTOR(1报纸0)
2-element列向量的字符。每个字符匹配相应的字符文字代表逻辑状态和映射到单个位。 dvalid
出
STD_LOGIC
相匹配的字符文字代表的逻辑状态。 odata
出
STD_LOGIC
相匹配的字符文字代表的逻辑状态。 接口数据类型转换的更多信息,请参阅万博1manbetx支持的数据类型。
设置所需的时间参数。
的
tnext
赋值语句设置时间参数tnext
这样模拟器回电话MATLAB构建器前女友每一个纳秒的函数。tnext = tnow + 1 e-9;
输出端口数据转换为MATLAB数据类型进行处理。
下面的代码片段说明了输出端口数据的数据类型转换。
% %计算一行和情节isum = isum + 1;的(isum) = mvl2dec (oport.adj ');数据(isum) = mvl2dec ([oport。dvalid oport.odata]);。
这两个电话
mvl2dec
转换的二进制数据MATLAB构建器前女友函数接收实体的输出端口,邻接的
,dvalid
,odata
无符号十进制值MATLAB构建器前女友可以计算。函数转换2比特转置向量oport.adj
一个十进制值范围在0到4oport.dvalid
和oport.odata
十进制值0或1。MATLAB函数和函数参数定义的语法总结了类型的数据转换时需要考虑编码MATLAB仿真功能。
将数据返回到高密度脂蛋白模拟器。
下面的代码片段说明了数据类型转换的数据返回到高密度脂蛋白模拟器。
如果isum = = 17 iport。isum =dec2mvl(isum,5); iport.qsum = dec2mvl(qsum,5); else iport.isum = dec2mvl(isum,5); end
这三个电话
dec2mvl
转换为十进制值计算MATLAB构建器前女友二进制数据MATLAB构建器前女友函数可以存款到实体的输入端口,isum
和qsum
。在每种情况下,该函数将一个十进制值转换为5-element位向量与每一位代表一个角色映射到一个角色文字代表一种逻辑状态。将数据返回到高密度脂蛋白模拟器总结了类型的数据转换时需要考虑返回数据的高密度脂蛋白模拟器。
MATLAB构建器前女友函数的例子:manchester_decoder.m
函数[iport, tnext] = manchester_decoder (oport、tnow portinfo)% MANCHESTER_DECODER试验台的硬件描述语言(VHDL)的解码器% (IPORT TNEXT] = MANCHESTER_DECODER (OPORT、TNOW PORTINFO) -%实现测试的硬件描述语言(VHDL)解码器实体部分%的曼彻斯特接收机演示。这个试验台的情节%智商映射产生的解码器。%% iport oport% + - - - - - - - - - - - - +% isum - (5) - > | | - (2) - >% qsum -(5) - > |解码器| - (1)- > dvalid% | | - (1)- > odata% + - - - - - - - - - - - - +%% isum——同相的卷积值% qsum——正交卷积值%的时钟调整(“01”、“00”,“10”)% dvalid -数据有效性(' 1 ' =数据有效)% odata——数据流中恢复过来%% = 0 (00 b)调整,生成完整的16个周期波形% 2003 - 2009版权MathWorks公司。持续的isum;持续的qsum;%持久的遗传算法;持续的x;持续的y;持续的调节;持续的数据;全球testisdone;%这个有用的功能允许您手动只需输入:%重置情节> manchester_decodertnext = [];iport =结构();如果输入参数个数= = 0,isum = [];返回;结束如果存在(“portinfo”)= = 1 isum = [];结束tnext = tnow + 1 e-9;如果isempty (isum),% %第一个电话规模= 9;isum = 0;qsum = 0;为k = 1:2, ga (k) =次要情节(2,1,k);轴(17 1 17][1);ylabel (“交”);线([0 16],[8],“颜色”,“r”,“线型”,“:”,“线宽”1)线(8 [8],[0 16],“颜色”,“r”,“线型”,“:”,“线宽”,1)结束包含(“同相的”);次要情节(2,1,1);标题(“时钟调整(调整)”);次要情节(2,1,2);标题(“数据有效性”);iport。isum =“00000”;iport。qsum =“00000”;返回;结束%计算一行,然后情节isum = isum + 1;的(isum) = bin2dec (oport.adj ');数据(isum) = bin2dec ([oport。dvalid oport.odata]);如果次要情节isum = = 17日(2,1,1);为k = 0:16,如果的(k + 1) = = 0,%爆炸!线(k, qsum,“颜色”,“k”,“标记”,“o”);elseif的(k + 1) = = 1,%线(k, qsum,“颜色”,“r”,“标记”,“<”);其他的线(k, qsum,“颜色”,“b”,“标记”,“>”);结束结束次要情节(2,1,2);为k = 0:16,如果数据(k + 1) < 2,%无效线(k, qsum,“颜色”,“r”,“标记”,“X”);其他的如果数据(k + 1) = = 2,%有效和0 !线(k, qsum,“颜色”,‘g’,“标记”,“o”);其他的线(k, qsum,“颜色”,“k”,“标记”,“。”);结束结束结束isum = 0;qsum = qsum + 1;如果qsum qsum = = 17日= 0;disp (“完成”);tnext = [];%暂停回调testisdone = 1;返回;结束iport。isum =dec2bin(isum,5); iport.qsum = dec2bin(qsum,5);其他的iport。isum =dec2bin(isum,5);结束