Я просматривал документ с сайта Microsemi (Actel HDL Code), и я нашел несколько реализаций триггера (синхронный, асинхронный и т. Д.). Во всех случаях автор смоделировал флип -flops с операторами блокировки.Правильный способ моделирования Flip Flop
Я хочу знать, являются ли эти реализации правильными, потому что я всегда использовал не блокирование для моделирования последовательной логики? Я что-то упустил или это просто способ моделирования только флип-флопа, а не последовательной схемы вообще?
// 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
Примечание: Блокирование заданий, используемых в всегда блокировать, чтобы получить последовательную логику
Большинство инструментов синтеза будет генерировать флип-флоп для этих примеров, хотя блокирование назначений не являются общий для последовательной логики. Этот ответ даст вам более подробную информацию: http://stackoverflow.com/a/4774450/1383356 – Ari