Verilog(始终分配)

Verilog(始终分配),verilog,Verilog,我知道我们可以在程序块中使用assign语句(就像在always中一样),在always块内部和外部使用“assign”有什么区别(与合成电路有关)。我的意思是当绝对有必要使用assign in always?Never时,assign关键字用于连续赋值,它将在合成时生成组合逻辑。事实上,您可以使用always块获得赋值行为: wire test; //At all times, test equals input assign test = input; 相当于: reg test; //E

我知道我们可以在程序块中使用assign语句(就像在always中一样),在always块内部和外部使用“assign”有什么区别(与合成电路有关)。我的意思是当绝对有必要使用assign in always?

Never时,
assign
关键字用于连续赋值,它将在合成时生成组合逻辑。事实上,您可以使用always块获得
赋值
行为:

wire test;
//At all times, test equals input
assign test = input;
相当于:

reg test;
//Each time input changes(with the always@*), test takes its value
always@*
  test = input;

始终
块中,应仅使用非阻塞分配('分配和相应的解除分配(在始终块中)也被称为“程序性连续辅助”可以在always块中用于特定目的。在大多数情况下,这是不可合成的,我从未见过它的用法

例如:

   reg in1, in2, out;
   reg [1:0] select;

   always @* begin
      case (select)
        2'b01: assign out = in1;
        2'b10: assign out = in2;
        2'b11: deassign out;
      endcase // case (select)
   end
一般建议--不要使用。

相关问题和建议