You are on page 1of 14

CEFET-MG – UNIDADE CONTAGEM

CURSO TÉCNICO EM ELETROELETRÔNICA

DISCIPLINA: ELETRÔNICA DIGITAL II


VHDL
ESTRUTURA E COMANDOS – PARTE 1

PROFESSOR: NELSON
Eletrônica Digital II Técnico em Eletroeletrônica Prof. Nelson Estevão

ESTRUTURA
Eletrônica Digital II Técnico em Eletroeletrônica Prof. Nelson Estevão

ESTRUTURA
Comentários: Os comentários em VHDL são permitidos após dois
traços “--” e são válidos até o final da linha. Servem para organizar o
código e facilitar a identificação posterior.
Exemplo: Cnt:=0; -- Inicializando a variável Cnt
Neste exemplo, “Cnt:=0;” é o comando e “-- Inicializando a variável Cnt” é o comentário
(não será considerado pelo compilador).

Declaração de Bibliotecas: indicação de arquivos adicionais que devem ser


incluídos na compilação do código. Nestes arquivos encontramos as
definições e funções comuns que serão usadas no código.
LIBRARY indica um conjunto de subprogramas (contendo bibliotecas ou
funções) que operem com um tipo de dado assim como pode ser um
conjunto de declarações necessárias para modelar um determinado
projeto.
Exemplo: library IEEE;
use IEEE.Std_logic_1164.all;
Eletrônica Digital II Técnico em Eletroeletrônica Prof. Nelson Estevão

ESTRUTURA
Bibliotecas mais utilizadas estão listadas abaixo:
Eletrônica Digital II Técnico em Eletroeletrônica Prof. Nelson Estevão

ESTRUTURA

OBS: As bibliotecas STD e WORK não necessitam ser referenciadas


no projeto VHDL, pois são assumidas automaticamente pela
linguagem.
Eletrônica Digital II Técnico em Eletroeletrônica Prof. Nelson Estevão

ESTRUTURA
Comando Genérico: A declaração genérica é uma declaração opcional que
possibilita pré-definir constantes que serão usadas no código. O emprego
do GENERIC possibilita a reconfiguração de um circuito pela simples
alteração dos valores em um único lugar, sem alterar o código do projeto
deixando-o genérico. Também pode usar CONSTANT dentro da arquitetura
ou processo.
Exemplo: GENERIC (VALOR_INICIAL_CONTADOR: INTEGER := 1);
Neste exemplo, o VALOR_INICIAL_CONTADOR está fixado em 1. Qualquer parte do código
eu usar este nome irá considerar o valor 1.

Declaração de Sinais: SIGNAL: representa sinais lógicos no circuito (fios


internos), os quais interligam componentes. Um sinal não tem memória,
portanto se a fonte do sinal é removida, o sinal não terá um valor. PORTS
são exemplos de sinais, associados com pinos externos do
componente/bloco. Podem ser declarados na entidade ou na
arquitetura. Não podem ser declarados em processos, mas podem ser
utilizados em seu interior.
Exemplo: SIGNAL qA: STD_LOGIC;
Eletrônica Digital II Técnico em Eletroeletrônica Prof. Nelson Estevão

ESTRUTURA
Declaração de variáveis: Um objeto VARIABLE armazena seu conteúdo
e pode ser usado em processos (cálculos) do código.
São utilizadas em processos e devem ser declaradas neles. São atualizadas
imediatamente e não correspondem à implementação física, como no
caso dos sinais.
Exemplo: VARIABLE Cnt: INTEGER := 0;
Neste exemplo, a variável Cnt é do tipo inteiro e foi inicializada com 0.
Eletrônica Digital II Técnico em Eletroeletrônica Prof. Nelson Estevão

ESTRUTURA
Tipos de Dados: podem ser escalares ou compostos. Escalar é um único
valor. Variáveis de tipo composto são montadas com um agrupamento
de variáveis (vetor ou string: vetor de caracteres).
Tipos mais
comuns:

Existem funções que podem converter um tipo de dado em outro, por exemplo, converter
um dado do tipo inteiro em um vetor de bits (STD_LOGIC_VECTOR). Estas funções podem
ser consultadas diretamente na internet.
Por exemplo o site https://nandland.com/common-vhdl-conversions/
Eletrônica Digital II Técnico em Eletroeletrônica Prof. Nelson Estevão

ESTRUTURA
Expressões: Pode-se atribuir valor para um sinal ou variável.
Se for SIGNAL ou PORT, usar ‘<=’
Se for VARIABLE, CONSTANT, GENERIC, usar ‘:=’

SIGNAL ou VARIABLE: A escolha entre utilizar SIGNAL ou VARIABLE afeta o resultado final
no funcionamento do circuito.

No Exemplo 1, a e b foram declaradas como SIGNAL. O código do exemplo faz com que os
valores de a e b sejam permutados (trocados).
No Exemplo 2, a e b foram declaradas como VARIABLE. O código do exemplo faz com que
a e b assumam o valor anterior de b.
Eletrônica Digital II Técnico em Eletroeletrônica Prof. Nelson Estevão

COMANDOS
Comandos condicionais também podem ser utilizados no VHDL, para
descrever o comportamento do circuito. Esse tipo de descrição é
utilizado na descrição de sistemas sequenciais cujo comando principal é o
“PROCESS”.
PROCESS pode ser precedido de um “label” e seguido de uma lista
de sensibilidade que indica quais são as variáveis e sinais cuja
alteração indica necessidade de avaliação do processo. Ou seja, quando
uma variável da lista de sensibilidade é modificada, o
processo é simulado novamente.

Obs.: “process_name:” é opcional.


Eletrônica Digital II Técnico em Eletroeletrônica Prof. Nelson Estevão

COMANDOS
Estrutura IF: É utilizada em situações em que a execução de uma sequencia de
comandos depende de uma ou mais condições. A forma mais simples de
utilização é através da estrutura if-then-end-if
Onde a condição (chave = 1) é testada para
permitir a operação necessária.
Se a condição for verdadeira, valor_saida é
atribuído à variável saida1, caso não nada é feito.

Outra estrutura possível é if-then-else-end-if

Este caso é idêntico ao caso anterior só que


quando a condição chave = 1 for falsa são
executadas as linhas saida1 := 255 e
registrador := valor_saida.
Eletrônica Digital II Técnico em Eletroeletrônica Prof. Nelson Estevão

COMANDOS
Outra variação possível: utilização da palavra chave elsif, que
funciona como uma nova estrutura de comparação dentro da estrutura if
já existente. São possíveis tantos elsif quantos forem necessários para
refinar as comparações.

Teste de borda de subida:


IF clock‘EVENT AND clock='1' THEN …
ou
IF RISING_EDGE(clock) THEN

Teste de borda de descida:


IF clock'event and clock='0' then …

Neste exemplo, os valores de saída led1 e led2 são vinculados aos valores
das variáveis de entrada painel e leitura. Se leitura for igual a 1 ou 3
(através do uso do operador OR) a saída led1 é ativada. Se leitura for igual
a 2 ou 4 a saída led2 é ativada. Mas isto só acontece se a condição
painel = OFF for falsa. Se condição painel = OFF for verdadeira, led1 e
led2 são desativados (OFF).
Eletrônica Digital II Técnico em Eletroeletrônica Prof. Nelson Estevão

COMANDOS
Estrutura CASE: Uma outra estrutura de comparação de valores para
seleção de operações é a estrutura case-is-when-end case. Esta
estrutura é mais utilizada para aplicações onde uma determinada variável
pode assumir um número limitado de valores, cada qual associado a um
conjunto de operações.

Este é um exemplo de um seletor (multiplexador 4x1)


Eletrônica Digital II Técnico em Eletroeletrônica Prof. Nelson Estevão

COMANDOS
Estrutura CASE: Outros exemplos
Para se implementar a função OU em estruturas
CASE usa-se o caractere “|”.
No exemplo, a saída led1 é acionada quando
leitura igual a 1 ou 3. E led2 é acionada quando
leitura igual a 2 ou 4. Se não for nenhuma destas
condições (OTHERS), led1 e led2 são desligadas.

Quando estado é ‘estado_A’, executa as 3 linhas


de comando logo abaixo do ‘WHEN estado_A’
Quando estado é ‘estado_B’, executa as 2 linhas
de comando logo abaixo do ‘WHEN estado_B’
Quando estado é ‘estado_C’, executa as 2 linhas
de comando logo abaixo do ‘WHEN estado_C’

You might also like