С помощью 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 выберите MATLAB Datapath архитектура, эти ограничения не применяются.
Кодер HDL не может вставить регистр конвейера на выходе выражения MATLAB, если одна из переменных в выражении:
В петле.
Постоянная переменная, которая сопоставляется с элементом состояния, как регистр состояния или ОЗУ.
Вывод функции. Например, в следующем коде нельзя добавить регистр трубопровода для выражения, содержащего y:
function [y] = myfun(x) y = x + 5; end
В цикле обратной связи данных. Например, в следующем коде невозможно переместить выражение, содержащее t или pvar переменные:
persistent pvar; t = u + pvar; pvar = t + v;
Вы не можете использовать coder.hdl.pipeline вставка регистра трубопровода для одной переменной или другого выражения no-op. Инструкции по вставке регистра трубопровода для входной переменной функции см. в разделе Регистры портов.