Cursos / Eletrônica / Sistemas Digitais / Aula

arrow_back Aula 05 - VHDL – Parte II

Estudando o IF..THEN

Vamos estudar duas estruturas de dados condicionais muito encontradas também em outras linguagens. São elas o (1) If.. then, e (2) Case.

No If..Then, uma ação deve ser tomada baseado em algumas condições. A sintaxe da expressão é:

Sintaxe do If..Then

A declaração 01 será executada se condição 01 for verdadeira. Caso não seja, será verificada a condição 02. Se ela for verdadeira, declaração 02 será executada. Caso nenhuma das duas condições anteriormente ditas foram verdadeiras, a declaração 03 será executada.

Por exemplo, olhando para o exemplo da Figura 7, podemos deduzir que: se sel é igual a 0, então resultado recebe A, se não resultado receberá B.

Exemplo de trecho de um código VHDL usando a estrutura IF...THEN

Precisamos saber ainda que relacionado a expressão IF…THEN:

  • Os parênteses são opcionais.
  • Todo o if está associado ao then, com exceção do último else.
  • A parte do else tem a função de catch all.
  • As condições são avaliadas sequencialmente de cima para baixo.
  • A condição satisfeita permite que a ação correspondente seja realizada.

Vamos analisar outro exemplo (Figura 8) que implementa a equação $S = A\overline{BC} + B$.

Exemplo de um código VHDL usando a estrutura IF...THEN

Para a condição de $A = 1$, $B = 0$ e $C = 0$, a saída recebe o valor 1, bem como para a condição de $B = 1$. Caso contrário (que é o último else) a saída recebe 0.

Perceba que o IF..THEN é intrinsecamente sequencial. As condições são sequencialmente verificadas uma após a outra e uma declaração só pode ser executada após uma condição verdadeira. Por conta de sua estrutura sequencial, um If..Then deve estar dentro de uma estrutura que explicite a leitura sequencial do código. Existem outras estruturas sequenciais em VHDL, mas até agora só estudamos o process. Desta forma, para até o momento, o If..Then deve estar dentro de um process. Vamos ver o código de um flip-flop D.

O flip-flop D é um circuito sequencial que você estudará nas aulas que ainda estão por vir. Teremos na saída o dado da entrada a cada vez que o relógio de entrada subir ou descer. Olhando para a Figura 9, temos como saída Q e como entradas: o D, o relógio (CLK) e o habilitador, R, que quando estiver em 1 o flip-flop D estará funcionando, caso contrário teremos a saída Q igual a zero.

Flip-Flop D

Na Figura 10 vemos o código em VHDL do flip-flop D.

Exemplo de código em VHDL de um circuito sequencial (flip-flop D) usando processo

Versão 5.3 - Todos os Direitos reservados