//我经常用这一招:将q定义成两个变量,一个是q_W,一个是q_R。
//他俩互异代表真,相同代表假。
always(...)
q_W <= ((q_W ^ q_R) + 1) ^ q_R;
always(...)
q_R <= ((q_W ^ q_R) - 1) ^ q_W;
//读取改变量q的时候要使用(q_W ^ q_R)。
同一个变量不能在多个进程中进行赋值,否则编译器会报错,你可以这样写:
always @(*)
begin
if ----
q<=q+1;
else
q<=q;
end
找个中间变量,再找个使能信号最后再做个选择
可以在同一个always块里面赋值啊。为什么要两个?
并发的两次赋值?? 你的目的是为了什么 同时赋值不就产生了竞争么,结果就不确定了