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 >> VHDL

Dominando Lógica Condicional em VHDL: If-Then-Elsif-Else Explicado

No tutorial anterior, usamos uma expressão condicional com a instrução Wait Until para disparar um processo apenas quando dois sinais de contador coincidiam. E se precisarmos que o programa execute ações diferentes baseadas em entradas variadas?

A construção If-Then-Elsif-Else permite ramificar nossa lógica. Dependendo do valor de uma variável ou do resultado de uma expressão, o programa pode seguir caminhos distintos.

Este artigo faz parte da série Tutoriais Básicos de VHDL.

Sintaxe Básica

A forma canônica é:

if <condição> then elsif <condição> then else end if;

As cláusulas elsif e else são opcionais, e elsif pode aparecer múltiplas vezes. Uma <condição> pode ser um literal booleano ou uma expressão que avalia para true ou false.

Exemplo: MeuContador < 10 é verdadeiro quando MeuContador é menor que dez.

Operadores Relacionais

=igual
/=diferente
<menor que
<=menor ou igual
>maior que
>=maior ou igual

Operadores Lógicos

not averdadeiro se a for falso
a and bverdadeiro se a e b forem verdadeiros
a or bverdadeiro se a ou b forem verdadeiros
a nand bverdadeiro se a ou b for falso
a nor bverdadeiro se a e b forem falsos
a xor bverdadeiro se exatamente um de a ou b for verdadeiro
a xnor bverdadeiro se a e b forem iguais

Exercício

Abaixo está um exemplo completo de VHDL que demonstra a construção If-Then-Elsif-Else em ação.

Código final:

entity T08_IfTb is end entity; architecture sim of T08_IfTb is signal CountUp : integer := 0; signal CountDown : integer := 10; begin process is begin CountUp <= CountUp + 1; CountDown <= CountDown - 1; wait for 10 ns; end process; process is begin if CountUp > CountDown then report "CountUp é maior"; elsif CountUp < CountDown then report "CountDown é maior"; else report "São iguais"; end if; wait on CountUp, CountDown; end process; end architecture; 

Saída do console do simulador ao executar o modelo no ModelSim:

VSIM 2> run # ** Note: CountDown é maior # Time: 0 ns Iteration: 0 Instance: /t08_iftb # ** Note: CountDown é maior # Time: 0 ns Iteration: 1 Instance: /t08_iftb # ** Note: CountDown é maior # Time: 10 ns Iteration: 1 Instance: /t08_iftb # ** Note: CountDown é maior # Time: 20 ns Iteration: 1 Instance: /t08_iftb # ** Note: CountDown é maior # Time: 30 ns Iteration: 1 Instance: /t08_iftb # ** Note: São iguais # Time: 40 ns Iteration: 1 Instance: /t08_iftb # ** Note: CountUp é maior # Time: 50 ns Iteration: 1 Instance: /t08_iftb # ** Note: CountUp é maior # Time: 60 ns Iteration: 1 Instance: /t08_iftb ...

Análise

Inicializamos CountDown com 10 e CountUp com 0. Ambos os contadores são atualizados simultaneamente a cada 10 ns no primeiro processo. O segundo processo espera por esses sinais, então dispara cada vez que eles mudam. O bloco If-Then-Elsif-Else então seleciona um de três ramos: CountUp > CountDown, CountUp < CountDown ou CountUp = CountDown. Embora um else explícito não seja obrigatório, incluí-lo é uma prática recomendada, garantindo que todos os casos extremos sejam tratados.

O rastreamento do console confirma que o segundo processo avalia a condição após cada atualização, imprimindo a mensagem apropriada.

Dominando Lógica Condicional em VHDL: If-Then-Elsif-Else Explicado

Conclusão

  • Use If-Then sozinho ou combine com Elsif e Else para cobrir todos os cenários possíveis.
  • Condições podem incluir expressões relacionais, lógicas e aritméticas.

Continue para o próximo tutorial »

VHDL

  1. Como o Molibdênio Molda a Indústria Moderna: Usos, Benefícios e Dinâmica de Fornecimento
  2. Criando Listas de Strings em VHDL: Boas Práticas e Exemplo
  3. Finalizando Graciosamente uma Simulação de Testbench VHDL
  4. Implementando um Controlador PWM em VHDL: Projeto, Simulação e Demo em FPGA
  5. Gerando Números Aleatórios em VHDL: De Uniforme a OSVVM
  6. Aproveitando Procedimentos In-Process para Design de FSM em VHDL Mais Limpo
  7. Usando Funções Impuras em VHDL: Melhorando Legibilidade e Manutenibilidade de FSM
  8. Dominando Funções VHDL: Guia Prático para Design Eficiente
  9. Projetando uma Máquina de Estados Finitos em VHDL: Exemplo Prático de Semáforo
  10. Dominando Técnicas de Retificadora de Ferramentas e Cortadores: Guia Prático