我在这里给出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