Выражения Pipeline MATLAB

С coder.hdl.pipeline pragma, можно задать размещение и количество регистров конвейера в HDL-коде, сгенерированном для MATLAB® выражение.

Если вы вставляете регистры трубопроводов и активируете распределенную конвейеризацию, HDL- Coder™ автоматически перемещает регистры трубопроводов, чтобы прервать критический путь.

Как конвейерировать выражение MATLAB

Чтобы вставить регистры конвейера в выход выражения в коде MATLAB, поместите выражение в coder.hdl.pipeline прагма. Укажите количество регистров.

Можно вставить регистры трубопровода в сгенерированный HDL-код:

  • На выходе всей правой стороны оператора назначения.

    Следующий код вставляет три регистра конвейера в выход выражения MATLAB, a + b * c:

        y = coder.hdl.pipeline(a + b * c, 3);
    
  • На промежуточной стадии в более длительной экспрессии MATLAB.

    Следующий код вставляет пять регистров конвейера после расчета b * c в более длинном выражении, a + b * c:

        y = a + coder.hdl.pipeline(b * c, 5);
    
  • Путем вложения нескольких образцов прагмы.

    Следующий код вставляет пять регистров конвейера после расчета b * cи два регистра конвейера на выходе всего выражения, a + b * c:

        y = coder.hdl.pipeline(a + coder.hdl.pipeline(b * c, 5),2);
    

Кроме того, чтобы вставить один регистр трубопровода вместо нескольких регистров трубопровода, можно опустить второй аргумент в прагме:

y = coder.hdl.pipeline(a + b * c);
y = a + coder.hdl.pipeline(b * c);
y = coder.hdl.pipeline(a + coder.hdl.pipeline(b * c));

Ограничения конвейеризации для выражений MATLAB

Примечание

Когда вы используете код MATLAB внутри блока MATLAB Function и выбираете MATLAB Datapath архитектура, эти ограничения не применяются.

HDL Coder не может вставить регистр конвейера в выход выражения MATLAB, если какая-либо из переменных в выражении:

  • В цикле.

  • Постоянная переменная, которая преобразуется в элемент состояния, такой как государственный реестр или ОЗУ.

  • Выход функции. Например, в следующем коде вы не можете добавить регистр конвейера для выражения, содержащего y:

    function [y] = myfun(x)
    y = x + 5;
    end

  • В цикле обратной связи данных. Например, в следующем коде вы не можете загрузить выражение, содержащее t или pvar переменные:

    persistent pvar;
    t = u + pvar;
    pvar = t + v;

Вы не можете использовать coder.hdl.pipeline для вставки регистра трубопровода для одной переменной или другого выражения без операции. Чтобы узнать, как вставить регистр трубопровода для переменного входного параметра функции, смотрите Регистры портов.

См. также

Похожие темы