我正在浏览 Microsemi 网站(Actel HDL Code)的文档,发现了一些触发器的实现(同步、异步等)。在所有情况下,作者都使用阻塞语句对触发器进行了建模。
我想知道这些实现是否正确,因为我一直使用非阻塞来建模顺序逻辑?我是否遗漏了某些东西,或者它只是一种仅建模触发器而不是一般时序电路的方法?
// Rising Edge Flip-Flop with Asynchronous Reset
module dff_async_rst (data, clk, reset, q);
input data, clk, reset;
output q;
reg q;
always @(posedge clk or negedge reset)
if (~reset)
q = 1'b0;
else
q = data;
endmodule
//Rising Edge Flip-Flop with Synchronous Reset
module dff_sync_rst (data, clk, reset, q);
input data, clk, reset;
output q;
reg q;
always @ (posedge clk)
if (~reset)
q = 1'b0;
else
q = data;
endmodule
注意:总是阻塞中使用的阻塞分配以获得顺序逻辑