与持久变量和系统对象模型状态
这个例子展示了如何使用持久性变量和系统对象模型状态和延迟的MATLAB®设计HDL代码生成。
介绍
使用系统对象模型的延迟导致简洁生成的代码。
在MATLAB中,多个调用一个函数有持久变量不会导致多个延迟。相反,国家多次更新函数。
为了重用代码实现一个函数与状态,需要多次重复的功能创建多个实例算法的延迟。
检查MATLAB代码
看看Sobel算法的实现。
检查设计的延迟和缓冲区的建模使用行:
持久的变量:mlhdlc_sobel
系统对象:mlhdlc_sysobj_sobel
请注意,filterdelay
函数是重复的与不同的函数名称mlhdlc_sobel
代码实例化多个版本的算法在MATLAB HDL代码生成。
延迟线的实现是通过使用MATLAB持久变量时要复杂得多。
现在检查的简化实现相同的算法使用系统中的对象mlhdlc_sysobj_sobel
。
如果使用HDL代码生成的约束内,dsp。总是延迟对象映射到寄存器。持久性变量被推断为寄存器,你必须小心阅读变量之前写信给它映射到一个寄存器。
MATLAB设计
demo_files = {…“mlhdlc_sysobj_sobel”,…“mlhdlc_sysobj_sobel_tb”,…“mlhdlc_sobel”,…“mlhdlc_sobel_tb”};
已知的限制
预定义的系统对象,高密度脂蛋白编码器™只支持金宝app一步
方法,不支持金宝app输出
和更新
方法。
只支持一步金宝app法,延迟不能用于建模的反馈路径。例如,下面的MATLAB代码不能使用的支持金宝appdsp.Delay
系统对象。
% # codegen函数y =积累(u)持续的p;如果isempty (p) p = 0;结束y = p;p = p + u;
创建一个新的HDL编码项目
创建一个新项目,输入以下命令:
编码器-hdlcoder不管是新mlhdlc_sobel
接下来,添加文件mlhdlc_sobel.m
项目的MATLAB函数mlhdlc_sobel_tb.m
MATLAB试验台。
为一个更完整的教程创建并填充MATLAB HDL编码项目,明白了开始使用MATLAB对高密度脂蛋白的工作流。
定点运行转换和HDL代码生成
顾问和右键单击启动工作流代码生成的一步。选择的选项选择任务运行从一开始的所有步骤运行通过HDL代码生成。
检查生成的HDL代码通过单击超链接在代码生成日志窗口。
现在,创建一个新项目的系统对象设计:
编码器-hdlcoder不管是新mlhdlc_sysobj_sobel
添加的文件mlhdlc_sysobj_sobel.m
项目的MATLAB函数mlhdlc_sysobj_sobel_tb.m
MATLAB试验台。
重复代码生成步骤和检查生成的定点MATLAB和HDL代码。
其他说明:
您可以使用整数延迟模型dsp.Delay
对象通过设置长度
属性大于1。这些延迟对象将被映射到移位寄存器在生成的代码。
如果优化选项持续的数组变量映射到公羊启用,延迟系统对象会映射到块公羊在下列条件:
InitialConditions
财产的dsp.Delay
设置为零。延迟输入不浮点数据类型。
RAMSize
(DelayLength * InputWordLength)大于或等于内存映射的阈值。