我正在使用赛灵思的 vivado 进行 verilog 编程。
我想知道为什么对于某些输出我们使用 reg
例如 reg [3:0] encoder_output
我们使用它是因为我们的 16 到 4 编码器有 4 个输出,对吗?我假设我们使用 reg
每当我们需要“存储一些东西”时
我的想法对吗??
最佳答案
尽管所有反对票,这实际上并不是一个愚蠢的问题。在开始,设计师创建了网络和寄存器。网络旨在作为硬件元素之间的连接,并具有驱动它们的值(value);他们没有持有这些值(value)观。 Nets 通常声明为 wire
.寄存器是数据存储元素,并且确实保存了一个值;它们通常声明为 reg
.随着时间的推移,很明显这种划分(看起来像“硬件”)是没有意义的,并且至少有人提出了从语言中删除网络/寄存器区别的建议。这从未发生过(除非您认为 SystemVerilog 是“Verilog”,我不这么认为)。
所以,你的问题在 30 年前是有道理的,而你的答案应该是“正确的”。
但是,在实践中,使用哪个并不重要。真正的区别在于您只能分配给 reg
从顺序代码( always
/etc),到 wire
除此以外。这个要求完全是武断的,只是因为历史原因而存在。你只需要学习规则。
关于verilog - 为什么我们在 FPGA/VHDL/VIVADO 中使用 REG?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33485197/