Для создания пользовательского системного object™ и создания кода:
Создание класса, из которого происходит вставка подклассов matlab.System.
Определите один из следующих наборов методов.
setupImpl и stepImpl
setupImpl, outputImpl, и updateImpl
Для использования outputImpl и updateImpl методы, системный объект также должен наследовать от matlab.system.mixin.Nondirect класс.
При необходимости, если объект System имеет свойства private state, определите resetImpl метод инициализации их до нуля.
Напишите конструкторскую функцию верхнего уровня, которая создает экземпляр объекта System и вызывает step метод или output и update методы.
Примечание
resetImpl выполняется автоматически во время инициализации объекта System. Для генерации кода HDL нельзя вызывать public reset способ.
Напишите функцию тестового стенда, выполняющую функцию проектирования верхнего уровня.
Создание кода HDL.
В этом примере показано, как создать код HDL для определяемого пользователем объекта System, реализующего setupImpl и stepImpl методы.
В папке с возможностью записи создайте объект System, 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. setupImpl определяет начальные значения для постоянных переменных в объекте System.Записать функцию, использующую этот объект System, и сохранить его как 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
Создайте код HDL для функции DUT, как и для любого другого кода MATLAB ®, но пропустите преобразование с фиксированной точкой.