С coder.hdl.pipeline
pragma, можно задать размещение и количество регистров конвейера в HDL-коде, сгенерированном для MATLAB® выражение.
Если вы вставляете регистры трубопроводов и активируете распределенную конвейеризацию, HDL- Coder™ автоматически перемещает регистры трубопроводов, чтобы прервать критический путь.
Чтобы вставить регистры конвейера в выход выражения в коде 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 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
для вставки регистра трубопровода для одной переменной или другого выражения без операции. Чтобы узнать, как вставить регистр трубопровода для переменного входного параметра функции, смотрите Регистры портов.