为什么不允许在Verilog中始终块内部分配DataType变量



我想知道为什么在Verilog中不允许在block中允许向电线数据类型变量分配?

wire( nets (的目的是作为连接媒体,它们不保持价值。因此,您可以将它们用于连接模块,创建总线,...有一个特殊的"分配"语句来分配它们。 REGS 另一方面旨在表示寄存器并保持价值。因此,您不能将它们用于连接,也不能将电线用作寄存器。

说,所有程序块(总是(只是具有一些扩展语义的小型通用程序。但是他们使用通用类型的变量来保持中间值。因此,仅在此类别中仅适用于" REG"的两种类型中。因此,它仅允许分配给Regs。

好吧,这个概念为Verilog编程带来了很多头痛。因此,系统Verilog提出了逻辑数据类型,在大多数情况下可以替换它们两个。您可以使用它来连接事物或在始终块中分配。

a wire 在Verilog中与A actible 的概念非常不同。尽管两者都用于表示随时间变化的值,但获得其值的方式却大不相同。与大多数其他编程语言一样,您可以将值分配给 actible ,并且变量保留该值直到下一个程序分配为止。

a 电线表示硬件中的连接,或形成网络的一组连接。该网络在芯片或板上实际实现为金属线。您可以将电线视为从驾驶员到接收器的值的传输。在Verilog中,驾驶员由执行连续作业而不是程序作业的构造表示。

我在这篇文章中进一步详细解释了这一点。

仅仅是因为始终块目标必须存储该值,除非和直到新输入到达或灵敏度列表发生变化,否则,这另一方面是电线无法执行的。

最新更新