verilog - 使用 reg 和在硬件中分配值有什么区别?
问题描述
我正在 FPGA 上编程,我想知道 reg 和具有赋值值的线之间的含义和区别是什么。
例如在verilog中
reg A;
wire B;
always @ (posedge clock) begin
A = 1'b1;
end
assign B = 1'b1;
A和B在硬件上的主要区别是什么?
编辑:我已经检查过寄存器使用了 FPGA 的资源,但是如果布线分配不使用寄存器,那么这些值是如何获得的?
解决方案
你问了一个错误的问题。它应该听起来像:
reg
和有什么区别wire
。
reg
是一种数据类型,应该在事务之间保持其状态。类型的数据reg
可以在always
块中分配一个值(其中包含顺序编程代码)。
wire
是一种互连介质,旨在连接模块。它是无状态的,不应该保持状态,应该始终被驱动。驱动它们的方式称为连续分配,由assign
关键字表示。连线不能在 always 块和 require 中分配任何值assign
。
这里还有另一个很好的解释: Verilog 模块中的 reg 和 wire 有什么区别