top of page

 UNIDADE 3

comandos e estruturas

CAPÍTULO 2

Comandos e estruturas

 

Como vimos, existe toda uma estrutura de um projeto em VHDL e veremos que dentro dessas estruturas existem expressões compostas de comandos, variáveis e operadores.

vHDL estruturado.jpg
variáveis
variáveis

 

As variáveis são usadas apenas em processos e subprogramas (funções e procedimentos) e suas atribuições são sequenciais, ou seja, deve-se ter atenção na ordem delas. O fato de que as variáveis só são usadas em processos é a principal diferença com relação ao sinal.

A variável deve ser declarada depois do comando “PROCESS” e antes do comando “BEGIN” com o seguinte padrão:

  • VARIABLE <Nome_Variavel> : <Tipo> [:= <Valor>];

  • VARIABLE opcode: Bit_Vector (3 downto 0) := “0000”; VARIABLE Freq: Interger;

A decisão entre qual utilizar dependerá do objetivo do projeto, por exemplo no quadro a seguir:

Declaração genérica de uma variável

Caso 1

A <= B;

A := B;

Caso 2

 

B <= A;

B := A;

No primeiro caso, ocorre uma permuta dos valores enquanto que, no segundo, o A recebe o valor anterior de B.

operações e expressões
Operações e expressões

Os operadores são divididos em classes de acordo com sua precedência e estão relacionados no quadro a seguir.

operadores.jpg
adição, multiplicação

Operadores de Adição

 

Os operadores de adição e subtração tratam os tipos numéricos e o operador de concatenação trata vetor unidimensional e elementos do mesmo tipo.

operadores,  2.jpg
operadores de comparação
operadores,  3.jpg

Por meio de expressões, é possível realizar operações com objetos do mesmo tipo. Essas expressões são formulas compostas de sinais e operadores.

Sua atribuição é dada utilizando o delimitador “<=”, temos, portanto, a expressão genérica:

SINAL <= expressão;

 

Ou

 

x <= a;

 

Que significa que X assume o valor de A.

laços e repetições
Comandos e laços de repetições

 

Existem alguns comandos que refletem algumas condições que, quando atendidas,

executam alguma operação e aqui trataremos deles:

 

 

Construção “when Else”

 

Essa construção permite que associemos um valor a um sinal, se caso algumas condições forem satisfeitas.

Uma lista de opções é apresentada estabelecendo qual valor de uma expressão deve ser transferido

a um sinal de destino. A primeira condição verdadeira definirá a expressão transferida.

Formato utilizado para o comando “when else”

Sinal_destino <= expressao_a When condicao_1 Else

                              expressao_b When condicao_2 Else

                              expressao_c;

construção WHEN - ELSE.jpg

Construção “with Select”

 

Essa construção transfere um valor a um sinal de destino seguindo uma relação de opções. Todas as condições de seleção devem ser atendidas e serem mutuamente exclusivas.

Normalmente, as opções são agrupadas por meio do uso de “|”, equivalente ao “ou”, podendo também utilizar as palavras “To” e “Downto”.

construção_WITH_SELECT.jpg
IF

Estrutura if

 

Utiliza-se em situações que requerem a execução de uma sequência dependendo de uma

ou mais condições. Comumente é usada por meio da estrutura “IF-THEN-END-IF”.

if,  1.jpg

Nesse exemplo, a condição (chave=1) é verificada e, em caso verdadeiro, o “valor_saida” é atribuído à variável “saida”, senão “saida” recebe o valor 228 e o “registrador” recebe o valor de “valor_saida”. ​

estrutura CASE

Estrutura Case

 

Essa estrutura realiza uma comparação de valores com estrutura “CASE-IS-WHEN- ENDCASE”. Frequentemente usada em aplicações em que uma determinada variável pode assumir uma quantidade limitada de valores, sendo cada uma associada a um conjunto de operações.

CASE.jpg
WHILE

Estrutura “while”

 

A estrutura “While” atua como um laço de repetição que permite que um bloco de expressões seja “executado” repetidamente até que uma determinada condição seja inválida.

WHILE.jpg
FOR

Estrutura “for”

 

A estrutura “For” atua como um laço de repetição que permite que um bloco de expressões seja “executado” repetidamente até uma contagem predefinida.

FOR.jpg

© 2019 - 2024 by FMK. Updated Oct 2024.  Proudly created with Wix.com

bottom of page