4

我在 Verilog 中使用 Xilinx 的 vivado 进行编程。

我想知道为什么我们使用某些输出reg

例如reg [3:0] encoder_output ,我们使用它是因为我们的 16 到 4 编码器有 4 个输出,对吗?我假设我们reg在需要“存储某些东西”时使用

我的想法对吗??

4

1 回答 1

5

尽管有很多反对意见,但这实际上并不是一个愚蠢的问题。起初,设计师创建了网络和寄存器。网络旨在作为硬件元素之间的连接,并具有驱动它们的价值;他们没有这些价值观。网通常被声明为wire. 寄存器是数据存储元素,并且确实保存了一个值;它们通常被声明为reg. 随着时间的推移,很明显这种划分(看起来像“硬件”)没有意义,并且至少提出了一项建议,从语言中删除网络/寄存器的区别。这从未发生过(除非您认为 SystemVerilog 是“Verilog”,但我没有)。

所以,你的问题在 30 年前是有道理的,你的答案应该是“正确的”。

但是,在实践中,使用哪个并不重要。真正的区别是您只能reg在顺序代码(always/etc)中分配给 a ,wire否则分配给 a 。这一要求是完全任意的,仅出于历史原因而存在。你只需要学习规则。

于 2015-11-03T16:35:32.553 回答