主要内容

coder.hdl.pipeline

在输出处插入管道寄存器MATLAB表达式

描述

例子

Out = code .hdl.pipeline(expr的输出插入一个管道寄存器expr生成的HDL代码。此pragma不影响MATLAB®模拟的行为。

使用此pragma可以指定插入管道寄存器的确切位置。例如,在MATLAB的赋值语句中,你可以指定code .hdl.pipeline pragma:

  • 在赋值语句的整个右侧。

  • 在子表达式上。

  • 通过嵌套多个pragmas。

  • 在调用子函数时,如果子函数返回单个值。不能为返回多个值的子函数指定pragma。

如果启用分布式管道,HDL Coder™可以移动管道寄存器来破坏关键路径。

HDL Coder不能在MATLAB表达式的输出中插入管道寄存器,如果表达式中的任何变量是:

  • 在一个循环中。

  • 映射到状态元素的持久变量,如状态寄存器或RAM。

  • 函数的输出。例如,在以下代码中,不能为包含的表达式添加管道寄存器y

    函数[y] = myfun(x) y = x + 5;结束

  • 在数据反馈循环中。类型的表达式不能通过管道连接tpvar变量:

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

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

例子

Out = code .hdl.pipeline(expr全国矿工工会插入全国矿工工会的输出处的管道寄存器expr生成的HDL代码。此pragma不影响MATLAB仿真行为。

使用此pragma可以指定插入管道寄存器的确切位置。例如,在MATLAB的赋值语句中,你可以指定code .hdl.pipeline pragma:

  • 在赋值语句的整个右侧。

  • 在子表达式上。

  • 通过嵌套多个pragmas。

  • 在调用子函数时,如果子函数返回单个值。不能为返回多个值的子函数指定pragma。

如果启用分布式管道,HDL Coder可以移动管道寄存器来破坏关键路径。

HDL Coder不能在MATLAB表达式的输出中插入管道寄存器,如果表达式中的任何变量是:

  • 在一个循环中。

  • 映射到状态元素的持久变量,如状态寄存器或RAM。

  • 函数的输出。例如,在以下代码中,不能为包含的表达式添加管道寄存器y

    函数[y] = myfun(x) y = x + 5;结束

  • 在数据反馈循环中。类型的表达式不能通过管道连接tpvar变量:

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

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

例子

全部折叠

在MATLAB表达式的输出中,A + b * c,插入一个管道寄存器。

Y = code .hdl。管道(a + b * c);

在MATLAB表达式的输出中,A + b * c,插入三个管道寄存器。

Y = code .hdl。管道(a + b * c, 3);

对于MATLAB表达式,A + b * c,经过的计算B * c,插入5个管道寄存器。

Y = a + code .hdl。管道(b * c, 5);

在中间阶段和输出MATLAB表达式时,使用嵌套coder.hdl.pipeline插入管道寄存器的Pragmas。

对于MATLAB表达式,A + b * c,经过的计算B * c,插入五个管道寄存器,并在整个表达式的输出处插入两个管道寄存器。

Y = code .hdl。管道(a + code .hdl。管道(b * c, 5),2);

输入参数

全部折叠

用MATLAB表达流水线。在生成的HDL代码中该表达式的输出处,插入管道寄存器。

例子:A + b

要在输出端插入的管道寄存器数expr在生成的HDL代码中,指定为正整数。

例子:3.

版本历史

在R2015a中引入