为用户定义的生成代码系统对象
如何创建一个用户定义的系统对象
创建一个用户定义的系统对象™和生成代码:
创建一个类的子类
matlab.System
。定义一个以下的方法:
setupImpl
和stepImpl
setupImpl
,outputImpl
,updateImpl
可选地,如果你的系统对象有私人状态属性,定义
resetImpl
方法来初始化它们为零。写一个顶级设计函数创建了一个实例系统的对象并调用对象,或调用
输出
和更新
方法。请注意
的
resetImpl
方法在系统对象初始化时自动运行。HDL代码生成,你不能打电话给公众重置
方法。写一个试验台功能练习顶层设计功能。
生成HDL代码。
用户定义的系统对象例子
这个例子展示了如何为一个用户定义的系统对象生成HDL代码实现setupImpl
和stepImpl
方法。
在一个可写的文件夹中,创建一个系统对象,
CounterSysObj
子类从matlab.System
。将代码保存为CounterSysObj.m
。classdef CounterSysObj < matlab。系统属性(Nontunable)阈值= int32结束(1)属性(访问=私人)状态结束计数方法函数obj = CounterSysObj(变长度输入宗量)找(obj,输入参数个数,变长度输入宗量{:});结束结束方法(访问=保护)函数setupImpl (obj, ~) % obj初始化状态。数= int32 (0);obj。状态= int32 (0);结束函数y = stepImpl (obj, u)如果obj。阈值> u (1) obj.Count (:) = obj。数+ int32 (1);%增量计算y = obj.State结束;%延迟输出obj。状态= obj.Count;%将新值放在端端端状态
stepImpl
方法实现了系统对象的功能。的setupImpl
方法定义了系统中的持久性变量的初始值对象。写一个函数,使用这个系统对象并将其保存
myDesign.m
。这个函数是DUT。函数y = myDesign (u)持久obj如果isempty (obj) obj = CounterSysObj(“阈值”,5);结束y = obj (u);结束
编写一个试验台,调用DUT函数并将其保存
myDesign_tb.m
。2 = 1:10 y = myDesign清楚myDesign (int32 (ii));结束
生成DUT HDL代码像其他MATLAB函数®代码,但跳过定点转换。