Você pode usar a instrução procedural sem bloqueio sempre que quiser fazer várias atribuições de registradores dentro do mesmo passo de tempo sem levar em consideração a ordem ou dependência entre si. Isso significa que as instruções sem bloqueio se assemelham mais ao hardware real do que às atribuições de bloqueio.
Por que usamos não bloqueante em bloco?
As atribuições de bloqueio (=) e não bloqueantes (<=) são fornecidas para controlar a ordem de execução dentro de uma execução de instrução sempre em bloco. Atribuições não bloqueantes literalmente não bloqueiam a execução das próximas instruções. O lado direito de todas as declarações é determinado primeiro, depois os lados esquerdos são atribuídos juntos.
Quando você usaria atribuições bloqueantes versus não bloqueantes ao codificar a lógica sequencial?
Diretriz 1: Ao modelar lógica sequencial, use atribuições não bloqueantes Diretriz 2: Ao modelar travas, use atribuições não bloqueantes. Há muitas maneiras de codificar lógica combinacional usando Verilog, mas quando a lógica combinacional é codificada usando um bloco sempre, as atribuições de bloqueio devem ser usadas.
O que são atribuições bloqueantes e não bloqueantes?
blocos, com comportamentos sutilmente diferentes. • Bloqueio de atribuição: avaliação e atribuição são imediatas. • Atribuição sem bloqueio: todas as atribuições adiadas até todas . lados direitos foram avaliados (fim da simulação.
Onde é usado o Verilog bloqueante e não bloqueante?
Aqui está uma boa regra para Verilog: Em Verilog, se você deseja criar lógica sequencial, use um bloco sempre sincronizado com atribuições não bloqueantes Se você deseja criar lógica combinacional, use um bloco sempre com atribuições de bloqueio. Tente não misturar os dois no mesmo bloco sempre.