为什么在内部不允许赋值给wire数据类型变量总是在verilog中阻塞?

时间:2017-06-25 06:53:29

标签: verilog

我想知道为什么在verilog中的always块中不允许赋值给wire数据类型变量?

3 个答案:

答案 0 :(得分:2)

电线(网络)旨在作为连接媒体,但它们不会保留价值。因此,您可以使用它们来连接模块,创建总线,...有一个特殊的“assign”语句来分配它们。另一方面, Regs 旨在表示寄存器并保持价值。因此,您不能将它们用于连接,也不能将电线用作寄存器。

说,所有程序块(总是)只是具有一些扩展语义的小型通用程序。但是他们使用通用类型的变量来保持中间值。因此,在上述两种类型中,只有'reg'符合此类别。因此,它只允许分配给regs。

这个概念为verilog编程带来了很多麻烦。因此,System Verilog提出了逻辑数据类型,在大多数情况下可以替换它们。您可以使用它来连接东西或在always块中分配它。

答案 1 :(得分:1)

Verilog中的 wire 变量的概念截然不同。尽管两者都用于表示随时间变化的值,但获取其值的方式却截然不同。与大多数其他编程语言一样,您将值的过程赋值给变量,变量保存该值直到下一个过程赋值。

wire 表示形成网络的硬件或连接组中的连接。该网络在芯片或电路板上物理实现为金属线。您可以将导线视为从驱动器到接收器的值传输。在Verilog中,驱动程序由执行连续赋值而不是程序赋值的构造表示。

我在此post中进一步详细解释了这一点。

答案 2 :(得分:0)

这只是因为在总是块目标的情况下必须存储该值,除非和直到新输入到达或灵敏度列表发生变化,另一方面导线无法做到。