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

Создание пользовательского системного объекта

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

  1. Создайте класс, который подклассифицирует из matlab.System.

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

    • setupImpl и stepImpl

    • setupImpl, outputImpl, и updateImpl

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

  3. Если ваш системный объект имеет частные свойства состояний, задайте resetImpl метод для их инициализации в нуль.

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

    Примечание

    The 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
    
    The stepImpl метод реализует функциональность системного объекта. The 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® код, но пропустите преобразование с фиксированной точкой.

Похожие темы