在下面的代码中:
wire a;
reg b;
assign a = b;
ModuleName foo(a, other wire inputs, ... , wire outputs);
假设它们是顶级模块的一部分。
我想运行一个always@块,但在此模块中实例化的模块的输入中进行更改。
always@(*) b = c^d; //Some Logic
问题是,它们是电线,不能在always@块中的LHS上。我可以对b
进行更改并期望在a
中看到它们,即模块 foo 的输入。
是的。每次你改变b
,a
也会改变。这就是assign
声明的作用。请记住,这是硬件。声明
assign a = b;
意思是"用reg
b
永远拥有的任何价值驱动wire
a
"。