introdução a vhdl monitoria de digitais. vhdl: vhdl (vhsic – very high speed integrated circuit...
TRANSCRIPT
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
sinais: Interconexões entre
componentes
Componentes:Devem ter sido especificado
anteriormente (Hierarquia)
Uso dos componentes:Podem ser usados mais de
uma vez (Reusabilidade)
Architecture - Estrutural:
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 1SIGNAL 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, nandvalor := 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, rema_div_b := a / b;
Diversos: **, abs, notsinal_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 ISWHEN “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