我试图找出基于组合逻辑分配电线的基础知识。
我有:
wire val;
wire x;
wire a;
wire b;
always @*
begin
if(val == 00)
//I want to assign x = a
if(val == 01)
//I want to assign x = b
end
哪里a
和 b
是带有值的电线 - 和 x
是进入寄存器的电线。如果您能指出我需要改变的正确方向,我将不胜感激。
最佳答案
wire
s 只能由 assign
分配语句,不能与 if 语句一起使用。
如果您更改 x
至 reg
类型,然后您将能够在 always 块中分配它。
这将合成完全相同,一个常见的误解是 reg
类型变量意味着一个寄存器,但它只是改变了赋值的方式。
或者,您可以使用带有三元运算符 ?:
的赋值语句, 如果您希望它保留为电线类型:
assign x = (val==0) ? a :
(val==1) ? b :
'bx ;
关于logic - Verilog 中的 if 语句和分配连线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17752727/