与coder.hdl.pipeline
pragma,可以在为MATLAB生成的HDL代码中指定管道寄存器的位置和数量®表达式。
如果您插入管道寄存器并启用分布式管道,HDL Coder™会自动移动管道寄存器以中断关键路径。
在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));
请注意
当你在a里面使用MATLAB代码时MATLAB函数块并选择MATLAB Datapath公司
架构,这些限制不适用。
如果表达式中的任何变量为:
在一个循环中。
映射到状态元素的持久变量,如状态寄存器或RAM。
函数的输出。例如,在下面的代码中,不能为包含y
:
[y] = myfun(x) y = x + 5;结束
在数据反馈循环中。例如,在下面的代码中,不能将包含t
或pvar
变量:
持久pvar;t = u + pvar;pvar = t + v;
你不能使用coder.hdl.pipeline
为单个变量或其他无操作表达式插入管道寄存器。要了解如何为函数输入变量插入管道寄存器,请参阅端口寄存器。