在总是阻止内部使用电线?

adi*_*524 1 verilog digital-logic

我可以在常块中使用电线吗?例如:

        wire [3:0]a;
        assign a=3;

        always @(c)
           begin
                d=a+c;
           end
Run Code Online (Sandbox Code Playgroud)

编译时没有抛出任何错误.为什么?

Mor*_*gan 5

是的,您可以在始终块中使用线的值,您无法在始终或初始块中为线分配值.

wire和reg之间唯一真正的区别是分配值的语法.

在上面的示例中,d也可以创建为线,这些是等效的:

reg [3:0] answer_reg;
always @* begin
  answer_reg = a + c;
end

wire [3:0] answer_wire;
assign answer_wire = a + c;
Run Code Online (Sandbox Code Playgroud)

  • 是有效的,a是恒定模式逻辑"4'b0011",它可以是"GND GND VDD VDD".wire vs reg与硬件关系不大,它们实际上是模拟器优化. (3认同)