ユーザー定義 System Objects のコードの生成
ユーザー定義 System object の作成方法
ユーザー定義 System object™ を作成してコードを生成するには、次の手順に従います。
matlab.Systemからサブクラス化されるクラスを作成します。次のメソッド セットのいずれかを定義します。
setupImplおよびstepImplsetupImpl、outputImplおよびupdateImpl
オプションで、System object にプライベートの状態プロパティがある場合、
resetImplメソッドを定義してそれらのプロパティをゼロに初期化します。System object のインスタンスを作成してそのオブジェクトを呼び出すか、あるいは
outputメソッドとupdateメソッドを呼び出す最上位の設計関数を記述します。メモ
System object の初期化中に、
resetImplメソッドは自動的に実行します。HDL コード生成では、パブリックのresetメソッドを呼び出すことはできません。この最上位の設計関数の動作を確認するテスト ベンチ関数を記述します。
HDL コードを生成します。
ユーザー定義 System object の例
この例では、setupImpl メソッドと stepImpl メソッドを実装するユーザー定義 System object の HDL コードを生成する方法を説明します。
書き込み可能なフォルダーに System object
CounterSysObjを作成します。これはmatlab.Systemからサブクラス化されるものです。CounterSysObj.mとしてコードを保存します。classdef CounterSysObj < matlab.System properties (Nontunable) Threshold = int32(1) end properties (Access=private) State Count end methods function obj = CounterSysObj(varargin) setProperties(obj,nargin,varargin{:}); end end methods (Access=protected) function setupImpl(obj, ~) % Initialize states obj.Count = int32(0); obj.State = int32(0); end function y = stepImpl(obj, u) if obj.Threshold > u(1) obj.Count(:) = obj.Count + int32(1); % Increment count end y = obj.State; % Delay output obj.State = obj.Count; % Put new value in state end end endstepImplメソッドは、System object 機能を実装します。setupImplメソッドは、System object 内の永続変数の初期値を定義します。この System object を使用する関数を作成し、
myDesign.mとして保存します。この関数は DUT となります。function y = myDesign(u) persistent obj if isempty(obj) obj = CounterSysObj('Threshold',5); end y = obj(u); endDUT 関数を呼び出すテスト ベンチを作成し、
myDesign_tb.mという名前で保存します。clear myDesign for ii=1:10 y = myDesign(int32(ii)); endDUT 関数の HDL コードを他の MATLAB® コードと同様に生成します。ただし、固定小数点変換をスキップします。