Сгенерируйте код для пользовательских системных объектов

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

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

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

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

    • setupImpl и stepImpl

    • setupImpl, outputImpl и updateImpl

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

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

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

    Примечание

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

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

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

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

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

  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®, но преобразования фиксированной точки пропуска.

Похожие темы