Introdução a VHDL
Monitoria de Digitais
VHDL:
• VHDL (VHSIC – Very High Speed Integrated
Circuit Hardware Description Language) é uma
linguagem de descrição de hardware muito
importante, pois é amplamente utilizada no
desenvolvimento de sistemas atuais.
VHDL:

VHDL foi desenvolvido para facilitar a descrição
de circuitos complexos, sem precisar da
utilização de vários manuais específicos para
cada parte de um projeto. Ou seja, é possível
descrever um circuito digital de forma estrutural
ou comportamental.
Termos:
Entity:

Responsável pela
descrição das portas
de
entrada
e
saída dos circuitos,
que servem para
formalizar
uma
comunicação
com
outros circuitos. Cada
entidade deve possuir
uma
ou
mais
arquiteturas.
Architecture:
Responsável por descrever o comportamento
do circuito, ou seja, o algoritmo
utilizado
para desempenhar sua funcionalidade.
Em VHDL, existem três tipos de arquiteturas:
• Estrutural
• Comportamental DataFlow
• Comportamental processo
Architecture - Estrutural:

sinais:
 Interconexões entre
componentes

Componentes:
 Devem ter sido
especificado anteriormente
(Hierarquia)

Uso dos componentes:
 Podem ser usados mais de
uma vez (Reusabilidade)
Architecture - Dataflow:

Data Flow (eq. booleanas):
 Concorrência
Architecture - Dataflow:

O que é melhor utilizar expressões
concorrentes ou sequências?
 Depende do que você quer implementar...
a <= b;
b <= a;

a := b;
b := a;
O primeiro faz com que os valores de a e
b sejam permutados e o segundo faz
com que a e b assumam o valor anterior
de b.
Architecture - Processo:

Algoritmo(Processo):
 Seqüencial

Lista de Sensibilidade:
 Sinais de entrada

Região declarativa:
 Região entre o fim da
lista de sensibilidade e a
palavra chave begin.
 Usada para declarar
variáveis ou constantes
dentro do processo.

Campo de atribuições:
 Campo entre a chave
begin e end ALG;
Configuration:

Uma configuração é usada para ligar a
arquitetura de um componente a sua
entidade. Uma configuração permite a
seleção de diversas arquiteturas em
diferentes níveis de hierarquia.
Package:

As bibliotecas são coleções de tipos de
dados e subprogramas comumente
utilizados nos projetos, como uma caixa
de ferramentas.
Package:

Biblioteca a ser utilizada em Digitais:
 LIBRARY ieee;
 USE ieee.std_logic_1164.all;
 USE ieee.std_logic_arith.all;
Tipos:

VHDL possui um conjunto de tipos definidos
que se caracterizam pelo conjunto de valores
que podem assumir e o conjunto de operações
que sobre eles podem ser executadas.

Objetos “CONSTANT”, “VARIABLE” e “SINAL”
devem ser declarados como de um tipo definido
para que possam ser identificados seus
possíveis valores e quais operações podem ser
executadas.
Tipos:

BIT: assume valores de 0 ou 1
 SIGNAL valor: bit;

BOOLEAN: usado em teste de decisão, assume
os valores true ou false.
 SIGNAL teste: boolean;

INTEGER: assume um valor inteiro entre 2.147.483.647 e +2.147.483.67.
 SINGNAL valor: integer range 0 to 10;
• REAL:representa um número de ponto flutuante.
Tipos:
• STD_LOGIC: podem assumir dentre outros valores
os
seguintes:
não
inicializado(U),
alta
impedância(Z), nível lógico alto(1) e nível lógico
baixo(0).
 SIGNAL valor: std_logic;
• Vetores:
são conjuntos de sinais perviamente
definidos, exemplos:
SIGNAL vetor: std_logic_vector(10 DOWNTO 0);
SIGNAL vetor: std_logic_vector(0 TO 10);
SIGNAL vetor: bit_vector(10 DOWNTO 0);
SIGNAL vetor: bit_vector(0 TO 10);
Operadores:

Lógicos: and, or, xor, not, nand
 valor := a xor b;

Relacionais: =, /=,<,>,<=,>=
 IF (a /= b) THEN;
 A <= B;obs.:cuidado com o operador <=, pois ele
também é um operador de atribuição.

Deslocamento: sll, srl, sla, rol, ror
 sinal_a <= x ror 3;
 z <= x sll 1;
Operadores:

Adição: +, -, &
 valor := a + b;
 Valor := “00” & “11”; (concatenação: “0011”)

Sinal: +,  A <= -B;

Multiplicação e divisão: *, /, mod, rem
 a_div_b := a / b;

Diversos: **, abs, not
 sinal_abs <= abs( -3);
 valor := b**2;
Decisões:

If then else:
IF (condição) THEN código;
Else codigo;
END IF;

Case When:
Case estados is
when estado1 => código;
when estado2 => código;
when others => código;
END CASE;
Decisões:
SIGNAL sinalA: STD_LOGIC_VECTOR(1 DOWNTO 0);
CASE sinalA IS
WHEN “00” => código;
WHEN “01” => código;
WHEN OTHERS => pode ter ou não operações;
END CASE;

With select:
WITH expressao_escolha SELECT
sinal <= expressao_a WHEN condicao1,
expressao_b WHEN condicao2,
expressao_c WHEN condicao3 | condicao4,
expressao_d WHEN OTHERS;
Referências:
• VHDL Programming by Example, Douglas L.
Perry, 4ª edition.
• Aula de VHDL auxiliar da cadeira de
Infra de Hardware.
• Aula 1 de VHDL antiga
• Aula 2 de VHDL antiga
Download

Introdução a VHDL