coder.hdl.pipeline

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

Синтаксис

out = coder.hdl.pipeline(expr)
out = coder.hdl.pipeline(expr,num)

Описание

пример

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

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

  • На целой правой стороне оператора присваивания.

  • На подвыражении.

  • Вложением несколько прагм.

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

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

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

  • В цикле.

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

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

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

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

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

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

пример

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

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

  • На целой правой стороне оператора присваивания.

  • На подвыражении.

  • Вложением несколько прагм.

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

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

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

  • В цикле.

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

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

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

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

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

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

Примеры

свернуть все

При выводе выражения 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