数据流建模17 Mar 2025 | 5 分钟阅读 数据流建模使用定义电路工作原理的函数,而不是它的门结构。 随着逻辑综合工具变得越来越复杂,数据流建模已经成为一种流行的设计方法。这种方法允许设计者专注于根据数据流优化电路。 数据流建模使用多个运算符来对操作数进行操作,以产生所需的结果。 Verilog 提供了大约 30 种运算符类型。数据流建模描述了硬件中从输入到输出的数据流。 数据流建模风格主要用于描述组合电路。 使用的主要机制是连续赋值。 连续赋值一个值被分配给一种称为 net 的数据类型,该数据类型用于表示电路元件之间的物理连接。 分配给网络的值由使用操作数和运算符的表达式指定。 连续赋值替换了电路描述中的门,并在更高的抽象级别上描述电路。 连续赋值语句以关键字 assign 开头。 语法 连续赋值的语法是 LHS_net 是一个或多个位的目标网络,RHS_expression 是各种运算符的表达式。 该语句在任何源操作数值更改时进行评估,结果在延迟单元之后分配给目标网络。
示例 连续赋值表达式中的目标可以是以下之一
让我们再举一组例子,其中声明和使用标量和向量网络 注意:不允许在同一目标网络上使用多个连续赋值语句。向量上的连续赋值 如特性中所述,连续赋值可以在向量网络上执行。 上面的代码描述了一个 3 位加法器。 总和的 MSB 专门用于在上述模块中进位。 它生成以下输出 向量和标量网络的级联也是可能的。 通过使用级联显示了 3 位加法器的相同示例 输出是 a = 100, b = 111, sum = 011, carry = 1 1. 规则连续赋值 它遵循以下步骤,例如 步骤 1:声明网络。 步骤 2:在网络上编写连续赋值。 下面的代码遵循规则连续赋值 2. 隐式连续赋值 我们也可以在声明网络时在网络上放置一个连续赋值。 格式如下所示 3. 隐式网络声明 在 Verilog 中,在隐式赋值期间,如果声明了 LHS,它将把 RHS 分配给声明的 net,但如果未定义 LHS,它将自动为信号名称创建一个网络。 在上面的例子中,out 未声明,但 Verilog 为 out 进行了隐式网络声明。 延迟在现实世界的硬件中,输入的变化和相应的输出之间存在时间间隔。 例如,AND 门中的 2 ns 延迟意味着输出将在输入更改后的 2 ns 后更改。 延迟值控制 RHS 操作数中的更改与新值分配给 LHS 之间的时间。 它类似于指定门的延迟。 添加延迟有助于对简单电路中的时序行为进行建模。 它使我们更接近于模拟实际运行电路的实际情况。 有多种方法可以在连续赋值语句中指定延迟,例如 1. 常规赋值延迟 我们在连续赋值语句中分配一个延迟值。 延迟值在 assign 关键字之后指定。 当 LHS 中的信号已经定义时,此延迟适用,并且此延迟表示更改已经声明的网络的延迟。 例如, 如果 RHS 操作数有任何更改,则 RHS 表达式将在 10 个时间单位后进行评估,并且评估后的表达式将分配给 LHS。 在时间 t,如果在上面的例子中其中一个操作数发生变化,那么表达式会在 t+10 个时间单位计算出来。 这意味着如果在 10 个时间单位之前 in0 或 in1 改变了值,那么会考虑在重新计算时 (t+10) in1 和 in2 的值。 2. 隐式连续赋值延迟 在这里,我们使用隐式连续赋值来指定网络上的延迟和赋值。 与以下相同 3. 网络声明延迟 在这种情况下,延迟与网络相关联,而不是与赋值相关联。 在这里,添加了延迟当网络被声明但没有放入连续赋值的时候。 这段代码与以下代码具有相同的效果 下一个主题门级建模 |
我们请求您订阅我们的新闻通讯以获取最新更新。