为什么我们在 FGPA / VHDL / VIVADO 中使用 REG?

Why do we use REG in FGPA / VHDL / VIVADO?

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

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

例如reg [3:0] encoder_output 我们使用它是因为我们的 16 到 4 编码器有 4 个输出,对吗?我假设我们在需要 "STORE SOMETHING"

时使用 reg

我的想法对吗??

这实际上不是一个愚蠢的问题,尽管有很多反对票。在开始时,设计师创建了网络和寄存器。网络旨在作为硬件元素之间的连接,并将价值驱动到它们之上;他们不持有这些价值观。网络通常声明为 wire。寄存器是数据存储元素,did保存一个值;它们通常声明为 reg。随着时间的推移,很明显这种划分(有点像 "hardware")没有意义,并且至少有人提议从语言中删除 net/register 区别。这从来没有发生过(除非你认为 SystemVerilog 是 'Verilog',我不认为)。

所以,你的问题在 30 年前是有道理的,你的答案应该是 "correct"。

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