Verilog(始终分配)
我知道我们可以在程序块中使用assign语句(就像在always中一样),在always块内部和外部使用“assign”有什么区别(与合成电路有关)。我的意思是当绝对有必要使用assign in always?Never时,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块获得赋值行为:
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
一般建议--不要使用。相关问题和建议