Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> Verilog

Bloco inicial Verilog


Um conjunto de instruções Verilog geralmente é executado sequencialmente em uma simulação. Essas instruções são colocadas dentro de um procedural quadra. Existem basicamente dois tipos de procedimentos blocos em Verilog - inicial e sempre

Sintaxe

  
  
	initial 
		[single statement]

	initial begin
		[multiple statements]
	end

  

Para que é usado o bloco inicial?


Um initial bloco não é sintetizável e, portanto, não pode ser convertido em um esquema de hardware com elementos digitais. Portanto, os blocos iniciais não servem muito para serem usados ​​em simulações. Esses blocos são usados ​​principalmente para inicializar variáveis ​​e portas de projeto de acionamento com valores específicos.

Quando um bloco inicial começa e termina?


Um initial bloco é iniciado no início de uma simulação no tempo 0 unidade. Este bloco será executado apenas uma vez durante toda a simulação. Execução de um initial bloco termina quando todas as instruções dentro do bloco são executadas.

A imagem mostrada acima tem um module chamado de comportamento que tem dois sinais internos chamados a e b. O initial bloco tem apenas uma instrução e, portanto, não é necessário colocar a instrução dentro de begin e end . Esta instrução atribui o valor 2'b10 a a quando o bloco inicial é iniciado no tempo 0 unidades.

O que acontece se houver um elemento de atraso?


O código mostrado abaixo possui uma instrução adicional que atribui algum valor ao sinal b. No entanto, isso acontece somente após 10 unidades de tempo da execução da instrução anterior. Isso significa que a é atribuído primeiro com o valor fornecido e depois de 10 unidades de tempo, b é atribuído a 0.

Quantos blocos iniciais são permitidos em um módulo?


Não há limites para o número de initial blocos que podem ser definidos dentro de um módulo.

O código mostrado abaixo tem três initial todos os blocos são iniciados ao mesmo tempo e executados em paralelo. No entanto, dependendo das declarações e dos atrasos dentro de cada bloco inicial, o tempo necessário para terminar o bloco pode variar.

Neste exemplo, o primeiro bloco tem um atraso de 20 unidades, enquanto o segundo tem um atraso total de 50 unidades (10 + 40) e o último bloco tem um atraso de 60 unidades. Portanto, a simulação leva 60 unidades de tempo para ser concluída, pois há pelo menos um bloco inicial ainda em execução até 60 unidades de tempo.

$finish é uma tarefa do sistema Verilog que diz ao simulador para encerrar a simulação atual.

Se o último bloco tivesse um atraso de 30 unidades de tempo, como mostrado abaixo, a simulação terminaria em 30 unidades de tempo, matando todos os outros initial blocos que estão ativos naquele momento.
  
  
	initial begin
		#30 $finish;
	end

  

Confira o exemplo de flash mostrado abaixo para ver como um initial bloco é executado em uma simulação.

Clique aqui para uma apresentação de slides com exemplo de simulação!

Verilog

  1. Tutorial Verilog
  2. Concatenação Verilog
  3. Verilog - Em uma casca de noz
  4. Atribuições Verilog
  5. Verilog Blocking &Non-Blocking
  6. Funções Verilog
  7. Tarefa Verilog
  8. Gerador de Relógio Verilog
  9. Funções matemáticas Verilog
  10. Formato de hora Verilog