主要内容

管道MATLAB表达式

coder.hdl.pipelinepragma,您可以在为MATLAB生成的HDL代码中指定管道寄存器的位置和数量®表达式。

如果您插入管道寄存器并启用分布式管道,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 + code .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 + code .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;结束

  • 在一个数据反馈循环中。例如,在下面的代码中,您不能管道传递包含tpvar变量:

    持久pvar;T = u + pvar;Pvar = t + v;

你不能使用coder.hdl.pipeline为单个变量或其他无操作表达式插入管道寄存器。要了解如何为函数输入变量插入管道寄存器,请参见端口寄存器

另请参阅

相关的话题