verilog - 为什么我们在 FPGA/VHDL/VIVADO 中使用 REG?

标签 verilog xilinx vivado

我正在使用赛灵思的 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/

相关文章:

function - 定义旋转长度不固定的 rightrotate 函数

c++ - 为什么芯片控制语言选择

logic - Verilog 中的 if 语句和分配连线

filter - Verilog错误,使用generate语句编码CSHM过滤器

fpga - 将数据写入sdcard zedboard

Verilog 双向握手示例

cryptography - FPGA逻辑单元数量与性能的关系

Linux 网络驱动程序 MSI 中断问题

tcl - TCL中 `rm -rf *`如何

verilog - 寄存器文件未读取任何数据