coder.hdl.pipeline

Вставьте регистры конвейера на выходе выражения MATLAB

Описание

пример

out = coder.hdl.pipeline(expr) вставляет один регистр трубопровода на выходе expr в сгенерированном HDL-коде. Эта прагма не влияет на MATLAB® Симуляция поведение.

Используйте эту прагму, чтобы точно указать, где вставлять регистры трубопроводов. Например, в операторе назначения MATLAB можно задать прагму coder.hdl.pipeline:

  • На всей правой стороне оператора по назначению.

  • На подэкспрессии.

  • Путем вложения нескольких прагм.

  • При вызове подфункции, если подфункция возвращает одно значение. Вы не можете задать прагму для подфункции, которая возвращает несколько значений.

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

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 для вставки регистра трубопровода для одной переменной или другого выражения без операции. Чтобы узнать, как вставить регистр трубопровода для переменного входного параметра функции, смотрите Регистры портов.

пример

out = coder.hdl.pipeline(expr,num) вставляет num конвейерные регистры на выходе expr в сгенерированном HDL-коде. Эта прагма не влияет на поведение симуляции MATLAB.

Используйте эту прагму, чтобы точно указать, где вставлять регистры трубопроводов. Например, в операторе назначения MATLAB можно задать прагму coder.hdl.pipeline:

  • На всей правой стороне оператора по назначению.

  • На подэкспрессии.

  • Путем вложения нескольких прагм.

  • При вызове подфункции, если подфункция возвращает одно значение. Вы не можете задать прагму для подфункции, которая возвращает несколько значений.

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

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 для вставки регистра трубопровода для одной переменной или другого выражения без операции. Чтобы узнать, как вставить регистр трубопровода для переменного входного параметра функции, смотрите Регистры портов.

Примеры

свернуть все

На выходе выражения MATLAB, a + b * c, вставьте один регистр трубопровода.

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

На выходе выражения MATLAB, a + b * c, вставьте три регистра трубопровода.

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

Для выражения MATLAB, a + b * c, после расчета b * c, вставьте пять регистров трубопровода.

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

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

Для выражения MATLAB, a + b * c, после расчета b * c, вставьте пять регистров конвейера и вставьте два регистра конвейера на выходе всего выражения.

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

Входные параметры

свернуть все

Выражение MATLAB в конвейер. На выходе этого выражения в сгенерированном HDL-коде вставьте регистры конвейера.

Пример: a + b

Количество регистров трубопровода для вставки на выходе expr в сгенерированном HDL-коде, заданном как положительное целое число.

Пример: 3

Введенный в R2015a