我在這裏給出2個Verilog模塊,它們在模擬過程中表現相同。但我不明白爲什麼要在這些模塊中使用assign
/deassign
,即這兩個代碼有什麼區別?Verilog中需要分配/取消分配?
// Code 1 - Without assign-deassign
module dff (q,qbar,clk,reset,d)
input clk, reset, d;
output reg q, qbar;
always @ (posedge reset, negedge clk)
begin
if(reset)
begin
q=1;
qbar=0;
end
else
begin
q=d;
qbar=~d;
end
end
endmodule
// Code 2 - With assign-deassign
module dff (q,qbar,clk,reset,d)
input clk, reset, d;
output reg q, qbar;
always @ (negedge clk)
begin
q=d;
qbar=~d;
end
always @ (reset)
begin
if(reset)
begin
assign q=1;
assign qbar=0;
end
else
begin
deassign q;
deassign qbar;
end
end
endmodule
IEEE Std 1800-2012對使用'deassign'有何評論? – toolic 2014-09-20 13:53:33
因爲只有我很困惑,使用取消分配的效果可以被刪除。但我不知道它們究竟在哪裏可以使用? – 2014-09-20 14:29:13