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

时间:2015-11-02 19:19:01

标签: verilog xilinx vivado

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

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

例如reg [3:0] encoder_output 我们使用它,因为我们的16到4编码器有4个输出吗?我假设每当我们需要“STORE SOMETHING”时我们都会使用reg

我的想法是对的吗?

1 个答案:

答案 0 :(得分:3)

尽管存在所有的挫折,但这实际上并不是一个愚蠢的问题。在The Beginning中,Designer创建了网络和寄存器。网络旨在作为硬件元素之间的连接,并将值驱动到它们上面;他们没有坚持这些价值观。网络通常被声明为wire。寄存器是数据存储元素, 保存值;它们通常被声明为reg。随着时间的推移,很明显,这种划分(看起来像硬件"硬件")没有意义,并且至少提出了一项建议,以降低网络/寄存器的区别。语言。这从未发生过(除非你认为SystemVerilog是' Verilog',我不会这样做。)

所以,你的问题在30年前是有道理的,而你的回答将是"正确的"。

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