最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。
ユーザー定義 System object™ を作成してコードを生成するには、次の手順に従います。
matlab.System
からサブクラス化されるクラスを作成します。
次のメソッド セットのいずれかを定義します。
setupImpl
と stepImpl
setupImpl
、outputImpl
および updateImpl
outputImpl
メソッドと updateImpl
メソッドを使用するには、System
object が matlab.system.mixin.Nondirect
クラスから継承されなければなりません。
オプションで、System
object にプライベートの状態プロパティがある場合、resetImpl
メソッドを定義してそれらのプロパティをゼロに初期化します。
System
object のインスタンスを作成して step
メソッド、あるいは output
メソッドと update
メソッドを呼び出す最上位の設計関数を記述します。
メモ
System
object の初期化中に、resetImpl
メソッドは自動的に実行します。HDL コード生成では、パブリックの reset
メソッドを呼び出すことはできません。
この最上位の設計関数の動作を確認するテスト ベンチ関数を記述します。
HDL コードを生成します。
この例では、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 end
stepImpl
メソッドは、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 = step(obj, u); end
DUT 関数を呼び出すテスト ベンチを作成し、myDesign_tb.m
という名前で保存します。
clear myDesign for ii=1:10 y = myDesign(int32(ii)); end
DUT 関数の HDL コードを他の MATLAB® コードと同様に生成します。ただし、固定小数点変換をスキップします。