Сгенерируйте код для пользовательского System Objects

Как Создать Пользовательский Системный объект

Создать пользовательскую Систему object™ и сгенерировать код:

  1. Создайте класс, который разделяет на подклассы от matlab.System.

  2. Задайте один из следующих наборов методов:

    • setupImpl и stepImpl

    • setupImploutputImpl, и updateImpl

      Использовать outputImpl и updateImpl методы, ваш Системный объект должен также наследоваться matlab.system.mixin.Nondirect класс.

  3. Опционально, если ваш Системный объект имеет частную государственную собственность, задайте resetImpl метод, чтобы инициализировать их, чтобы обнулить.

  4. Запишите функцию проекта верхнего уровня, которая создает экземпляр вашего Системного объекта и вызывает step метод или output и update методы.

    Примечание

    resetImpl метод запускается автоматически во время инициализации Системного объекта. Для генерации HDL-кода вы не можете вызвать общедоступный reset метод.

  5. Запишите функцию испытательного стенда, которая осуществляет функцию проекта верхнего уровня.

  6. Сгенерируйте HDL-код.

Пользовательский Пример Системного объекта

В этом примере показано, как сгенерировать HDL-код для пользовательского Системного объекта, который реализует setupImpl и stepImpl методы.

  1. В перезаписываемой папке создайте Системный объект, 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 метод реализует функциональность Системного объекта. setupImpl метод задает начальные значения для персистентных переменных в Системном объекте.

  2. Запишите функцию, которая использует этот Системный объект, и сохраните его как myDesign.m. Эта функция является вашим DUT.

    function y = myDesign(u)
    
    persistent obj
    if isempty(obj)
        obj = CounterSysObj('Threshold',5);
    end
    
    y = step(obj, u);
    
    end

  3. Запишите испытательный стенд, который вызывает функцию DUT, и сохраните ее как myDesign_tb.m.

    clear myDesign
    for ii=1:10
        y = myDesign(int32(ii));
    end
    

  4. Сгенерируйте HDL-код для функции DUT, как вы были бы для любого другого кода MATLAB®, но преобразования фиксированной точки пропуска.

Похожие темы