logo

Declaração de atribuição Verilog

As instruções de atribuição são usadas para gerar valores na rede. E também é usado em Modelagem de Fluxo de Dados .

Sinais do tipo fio ou tipo de dados requerem a atribuição contínua de um valor. Contanto que a bateria de +5V seja aplicada a uma extremidade do fio, o componente conectado à outra extremidade do fio obterá a tensão necessária.

Este conceito é realizado pela instrução de atribuição, onde qualquer fio ou outro fio semelhante (tipos de dados) pode ser acionado continuamente com um valor. O valor pode ser uma constante ou uma expressão composta por um grupo de sinais.

Sintaxe

A sintaxe de atribuição começa com a palavra-chave atribuir, seguida pelo nome do sinal, que pode ser um sinal ou uma combinação de diferentes redes de sinais.

O força motriz e atraso são opcionais e usados ​​​​principalmente para modelagem de fluxo de dados do que para síntese em hardware real.

O sinal do lado direito é avaliado e atribuído à rede ou expressão de redes do lado esquerdo.

 assign = [drive_strength] [delay] 

Os valores de atraso são úteis para especificar atrasos para portas e são usados ​​para modelar o comportamento de temporização em hardware real. O valor determina quando a rede deve receber o valor avaliado.

Regras

Algumas regras precisam ser seguidas durante o uso de uma instrução de atribuição:

  • LHS deve sempre ser um escalar, um vetor ou uma combinação de redes escalares e vetoriais, mas nunca um registrador escalar ou vetorial.
  • O RHS pode conter registradores escalares ou vetoriais e chamadas de função.
  • Sempre que qualquer operando no RHS mudar de valor, o LHS será atualizado com o novo valor.
  • As instruções de atribuição também são chamadas de atribuições contínuas.

Atribuir variáveis ​​de registro

Não podemos dirigir ou atribuir registro digite variáveis ​​com uma instrução de atribuição porque uma variável reg é capaz de armazenar dados e não é acionada continuamente.

Os sinais Reg só podem ser acionados em blocos procedurais, como sempre e inicial.

Atribuição Contínua Implícita

Quando uma instrução de atribuição é usada para atribuir algum valor a uma determinada rede, ela é chamada de explícito atribuição

Se uma atribuição a ser feita durante a rede for declarada, ela é chamada de implícito atribuição.

 wire [1:0] a; assign a = x & y; // Explicit assignment wire [1:0] a = x & y; // Implicit assignment 

Projeto Lógico Combinacional

Considere o seguinte circuito digital feito de portas combinacionais e o correspondente Verilog código.

Declaração de atribuição Verilog

A lógica combinacional exige que as entradas sejam continuamente acionadas para manter a saída, ao contrário de elementos sequenciais como flip-flops, onde o valor é capturado e armazenado na borda de um clock.

Uma instrução atribuída satisfaz o propósito porque a saída o é atualizada sempre que qualquer uma das entradas do lado direito muda.

 // This module takes four inputs and performs a Boolean // operation and assigns output to o. // logic is realized using assign statement. module combo (input a, b, c, d, output o); assign o = ~((a & b) | c ^ d); endmodule 

Esquema de Hardware

Após a elaboração e síntese do projeto, um circuito combinacional se comporta da mesma maneira que o modelado pela instrução de atribuição.

Declaração de atribuição Verilog

O sinal o torna-se 1 sempre que a expressão combinacional no RHS se torna verdadeira.

Da mesma forma, o torna-se 0 quando RHS é falso. A saída o é X de 0ns a 10ns porque as entradas são X durante o mesmo tempo.