管道MATLAB表达式
与coder.hdl.pipeline
编译,你可以指定的位置和管道寄存器的数量在HDL代码生成的MATLAB®表达式。
如果您插入流水线寄存器并启用分布式流水线,HDL Coder™将自动移动流水线寄存器以打破关键路径。
如何输送MATLAB表达式
要在MATLAB代码中表达式的输出处插入管道寄存器,请将表达式放入coder.hdl.pipeline
编译指示。指定寄存器的数量。
你可以在生成的HDL代码中插入管道寄存器:
在赋值语句的整个右边的输出。
下面的代码在MATLAB表达式的输出中插入了三个管道寄存器,
A + b * c
:y = coder.hdl。流水线(a + b * c, 3);
在一个较长的MATLAB表达式的中间阶段。
的计算之后,下面的代码插入五个管道寄存器
b * c
在一个较长的表达式中,A + b * c
:Y = a + coder.hdl。管线(b * c, 5);
通过嵌套pragma的多个实例。
的计算之后,下面的代码插入五个管道寄存器
b * c
,和两个管道寄存器在整个表达式的输出,A + b * c
:y = coder.hdl。管道(a + coder.hdl。管道(b * c, 5),2);
或者,要插入一个管道寄存器而不是多个管道寄存器,你可以省略pragma中的第二个参数:
y = coder.hdl。流水线(a + b * c);
Y = a + coder.hdl。管道(b * c);
y = coder.hdl。管道(a + coder.hdl。管道(b * c));
管道化的限制MATLAB表达式
请注意
当你使用MATLAB代码里面一个MATLAB函数阻塞并选择MATLAB Datapath公司
架构,这些限制并不适用。
HDL编码器不能在MATLAB表达式的输出插入管道寄存器,如果表达式中的任何变量是:
在一个循环中。
映射到状态元素(如状态寄存器或RAM)的持久变量。
函数的输出。例如,在下面的代码中,您不能为包含的表达式添加管道寄存器
y
:函数[y] = myfun(x) y = x + 5;结束
在一个数据反馈循环中。例如,在下面的代码中,不能对包含
t
或pvar
变量:持久pvar;T = u + pvar;Pvar = t + v;
你不能使用coder.hdl.pipeline
为单个变量或其他无操作表达式插入管道寄存器。要了解如何为函数输入变量插入流水线寄存器,请参阅端口寄存器.