Cursos / Eletrônica / Sistemas Digitais / Aula

arrow_back Aula 05 - VHDL – Parte II

Construções de Laços

Depois de analisarmos várias estruturas de atribuições, os casos condicionais, agora, iremos ver uma estrutura também bastante utilizada para realizarmos iterações, ou seja, os loops.

Existem dois tipos de laços em VHDL: for e while. O comando while condicional funciona de forma similar ao comando if then. O laço é executado enquanto a condição presente no seu inicio for válida. A condição é verificada e se for satisfeita, os comandos presentes no laço são executados, caso contrário, o laço é considerado completo e o comando passa para a instrução seguinte ao laço.

A sintaxe do while loop pode ser descrita como a seguir:

Vamos analisar o exemplo a seguir: abrimos um processo (chamado “proc”), inicializamos uma variável (variable) “conta” do tipo inteiro inicializada com ‘0’. Quando o Nível for igual a ‘1’, realizará a expressão (conta = conta + 1), quando Nível for diferente de ‘1’, sairá do loop.

Veja que o comando while loop deve estar dentro de um process por ser uma operação sequencial. Veja também que foi criado uma variável dentro de process chamada conta. Esta é uma forma de declarar variáveis temporárias dentro de um processo. Você pode utilizar outros tipos de variáveis, como std_logic, bit, vetores, etc. É importante saber que esta variável pode ser lida e escrita, ou seja, pode receber valores (como variável de saída) e pode ser lida (como variável de entrada). Como ela foi declarada dentro do process, somente dentro dele ela existe.

O comando while loop repete-se enquanto a condição apresentada no seu início for satisfeita. Algumas vezes pode ser necessário repetir o laço por um número específico de vezes. Isso pode ser feito de forma mais conveniente com o comando for. Esse comando não usa nenhuma expressão booleana, mas sim um contador, e desde que o valor do contador esteja em certa faixa, o laço é executado. Ao término de cada execução do laço, o contador recebe o novo valor. O contador não precisa ser declarado e é tratado como uma constante que só existe dentro do laço.

Existe também a estrutura do comando for, que é dada por:

No exemplo a seguir, começamos um processo chamado “contar”, inicializamos uma variável do tipo inteiro chamado “Numeros” com o valor “0”. Começamos o laço com uma variável “temp” que irá contar de 0 até 3, incrementando a variável “Numeros”.

Versão 5.3 - Todos os Direitos reservados