Este documento apresenta um resumo sobre a linguagem VHDL (Very High Speed Integrated Circuit Hardware Description Language). Apresenta brevemente o histórico da linguagem, os principais aspectos como entidades, arquiteturas e modelagem de sistemas digitais. Também descreve os principais comandos e construções da linguagem como processos, operações concorrentes e sequenciais e tipos de dados suportados.
Apresentação TCC - Braço Robótico para fins didáticos
VHDL Introdução
1. Prototipagem de
Sistemas Digitais
brito_ufrn@ieee.org
Francisco Brito
Introdução
a VHDL
2. 2
Plano da exposição
• Histórico
• Aspectos Gerais da Linguagem
Laboratório de Microeletrônica e Sistemas
• Tipos, operadores e bibliotecas
padrões.
• Comandos concorrentes e sequenciais.
• Verificação e síntese de sistemas
digitais.
• Introdução ao Quartus II
3. 3
Plano da exposição
• Histórico
• Aspectos Gerais da Linguagem
Laboratório de Microeletrônica e Sistemas
• Tipos, operadores e bibliotecas
padrões.
• Comandos concorrentes e sequenciais.
• Verificaçãoe síntese de sistemas
digitais.
• Introdução ao Quartus II.
4. 4
Histórico
• VHDL – The VHSIC Hardware Description
Language
Laboratório de Microeletrônica e Sistemas
• Criada nos anos 70 pelo departamento de defesa
dos EUA para documentar o comportamento de
ASICs usados nos equipamentos militares.
• Tornou‐se um padrão do IEEE em 1987 (IEEE
1076 – 1987 ou VHDL’87)
• Foi revisado em 1993 (IEEE 1076 – 1993 ou
VHDL’93)
5. 5
Plano da exposição
• Histórico
• Aspectos Gerais da Linguagem
Laboratório de Microeletrônica e Sistemas
• Tipos, operadores e bibliotecas
padrões.
• Comandos concorrentes e sequenciais.
• Verificaçãoe síntese de sistemas
digitais.
• Introdução ao Quartus II.
6. 6
Aspectos gerais
Entidade e arquitetura.
Laboratório de Microeletrônica e Sistemas
• Entidade: definição da
interface.
• Arquitetura:
comportamental e
estrutural.
8. 8
Modelando a arquitetura
• Corpo do módulo (architecture)
– Descreve uma implementação do módulo
Laboratório de Microeletrônica e Sistemas
– Pode haver diversas implementações de
uma
mesma entidade.
• Descrição comportamental: Fornece
explicitamente a relação entre as
entradas e as
saídas
• Descrição estrutural: Permite construir
funções lógicas a partir da combinação
de elementos mais primitivos
10. 10
Modelo estrutural
•Numa descrição VHDL estrutural, um
módulo lógico é criado pela conexão
Laboratório de Microeletrônica e Sistemas
de
módulos mais simples;
11. 11
Modelo estrutural em VHDL
entity Funcao_G is port ( a, b, c, d: in bit; f : out bit );
end Funcao_G;
architecture G_estrtural of Funcao_G is
--------------------------------------------
Laboratório de Microeletrônica e Sistemas
component Funcao_A is port ( x, y: in bit; z : out bit );
end component;
--------------------------------------------
component Funcao_O is port ( x, y: in bit; z : out bit );
end component;
--------------------------------------------
signal X1, X2 : bit
--------------------------------------------
begin
A1: Funcao_A port map (a, b, X1);
A2: Funcao_A port map (c, d, X2);
O1: Funcao_A port map (X1, X2, f);
end G_estrtural;
14. 14
Identificadores válidos em VHDL
• Caracteres alfanuméricos: A‐Z, a‐z, 0‐9;
• Símbolo de sublinhado ‘_’ desde que não
Laboratório de Microeletrônica e Sistemas
seja no início ou fim de um identificador.
• Um identificador deve sempre começar por
uma letra;
•Não é permitido utilizar dois ‘_’ em
seqüência
• VHDL não distingue letras maiúsculas de
minúsculas. VHdl é idêntico a vhDL.
15. 15
Plano da exposição
• Histórico
• Aspectos Gerais da Linguagem
Laboratório de Microeletrônica e Sistemas
• Tipos, operadores e bibliotecas
padrões.
• Comandos concorrentes e sequenciais.
• Verificaçãoe síntese de sistemas
digitais.
• Introdução ao Quartus II.
16. 16
Operadores lógicos
• O operador not tem maior nível de
Laboratório de Microeletrônica e Sistemas
precedência
• Os demais operadores têm mesmo nível
de precedência. Neste caso a “execução”
é feita segundo a ordem em que os
operadores se encontram na expressão: da
esquerda para a direita. Usar parênteses;
•Ex.: A expressão Booleana q=a+b.c deve
ser escrita em VHDL como q<=a or (b and
c). Caso contrário, se for escrita em VHDL
como q <=a or b and c, será
interpretada pelo compilador como
q=(a+b).c;
17. 17
Operadores relacionais
Laboratório de Microeletrônica e Sistemas
• Os operadores relacionais têm maior nível de precedência que
os
operadores lógicos.
•A exceção é o operador not
18. 18
Bibliotecas
• Coleções de quantidades pré‐definidas e
procedimentos utilizados pelo compilador VHDL.
library Nome_da_biblioteca;
Laboratório de Microeletrônica e Sistemas
• Podem conter identificadores, tipos de dados,
funções, etc.
• Numa biblioteca, as informações são sepadaras
em
pacotes.
– O pacote IEEE 1164 da biblioteca IEEE é um exemplo de
pacote bastanteutilizado e útil.
library ieee;
use ieee.std_logic_1164.all;
19. 19
Tipos de dados padrão
• Principais tipos definidos no pacote STANDARD
interno à linguagem VHDL:
Laboratório de Microeletrônica e Sistemas
– INTEGER : operações de número com sinal. Para que
resulte numa construção sintetizável, faz‐se necessário
delimitar o número de bits.
• Ex.: contador : in integer range 0 to 15; ‐‐ 4 bits
– REAL : represntação de números em ponto flutuante.
Usado apenas para simulação, sendo não sintetizável
– BOOLEAN: FALSO or VERDADEIRO
– BIT e BIT_VECTOR:representação de bits ou palavras
binárias. Preferível usar STD_LOGIC.
20. 20
Tipos de dados estendidos
• Definindos no pacote
STD_LOGIC_1164
Laboratório de Microeletrônica e Sistemas
(“standard logic”)
– Um sinal do tipo STD_LOGIC pode assumir um dos
nove valores abaixo:
• ‘U’= não inicializado
• ‘X’= forçando desconhecido
• ‘0’= 0 forte (nível lógico 0)
• ‘1’= 1 forte (nível lógico 1)
• ‘Z’= alta impedância
• ‘W’= desconhecido fraco
• ‘L’= 0 fraco
• ‘H’= 1 fraco
• ‘‐’= irrelevante (don’t care)
21. 21
Usando tipos estendidos
• Adicione a biblioteca IEEE library no início do arquivo
VHDL e referencie o pacote desejado:
Laboratório de Microeletrônica e Sistemas
library ieee;
use ieee.std_logic_1164.all;
• O tipo STD_LOGIC_VECTOR type é equivalente de uma matriz de BITs
• STD_LOGIC and STD_LOGIC_VECTOR são os tipos de dados mais
comumente usados:
– Permite o uso de sinais em estado de alta‐ impedância
– Permite simular corrtamente
– Deve ser usado sempre que possível!
22. 22
Usando tipos estendidos
• Exemplo de atribuição de valores
– data_bit <= ‘1’;
– data_bus <=“110011”;
Laboratório de Microeletrônica e Sistemas
– data_bus <= bitA & bitB & bitC & bitD; ‐‐ concatena bits para formar um vetor
• Bits individuais devem estar entre aspas simples (‘ b‘)
• Cadeias de bits são delimitadas por aspas duplas (“bbbb”)
• O operador de atribuição deve ser “<=“
• “&”não é o mesmo que “AND” (programadores da
linguagem C tende a fazer a confusão)
23. 23
A cláusula OTHERS
• Seu código pode se tornar mais portátil e mais fácil de
atualizar com o uso de others.
Laboratório de Microeletrônica e Sistemas
– Ex.1:
• count <=“00010”;
– Ex.2:
• count <= ( 1 => ‘1’, others => ‘0’ );
• O sinal “count” pode ser facilmente mudado de 5 para 10
bits no exemplo onde others é usada.
24. 24
Plano da exposição
• Histórico
• Aspectos Gerais da Linguagem
Laboratório de Microeletrônica e Sistemas
• Tipos, operadores e bibliotecas
padrões.
• Comandos concorrentes e sequenciais.
• Verificaçãoe síntese de sistemas
digitais.
• Introdução ao Quartus II.
25. 25
Comandos concorrentes
• Comandos concorrentes são
executados conjuntamente, sendo
Laboratório de Microeletrônica e Sistemas
irrelevante a seqüência como são
apresentados.
26. 26
Operações concorrentes
• As palavras‐chave not, and, or, xor, nand,
nor e xnor são utilizadas para descrever o
Laboratório de Microeletrônica e Sistemas
que se chama de operações concorrentes.
•Neste caso uma operação é executada sem
observar qualquer limitação ou restrição de
tempo.
•Na expressão q <= a or b and c, o valor de q
é
atualizado toda vez que houver uma
mudança no estado das entradas a, b ou c.
27. 27
Atribuição a um sinal
• Pode ocorrer em regiões de código
concorrente ou seqüencial.
Laboratório de Microeletrônica e Sistemas
• Emprega o delimitador ” <= ”.
• Transferência de valores entre objetos de
tipos diferentes não é permitida.
28. 28
Construção WHEN ELSE
• Permite transferência condicional de um
sinal.
Laboratório de Microeletrônica e Sistemas
sinal_destino <= expressao_a WHEN condicao_1 ELSE
expressao_b WHEN condicao_2 ELSE
expressao_c;
29. 29
Construção WHEN ELSE
Exemplo:
Laboratório de Microeletrônica e Sistemas
entity somador is port ( a, b, ci : in bit; s, co : out bit );
end somador;
architecture somaDtFw of somador is begin
s <= ‘1’ when (a=‘1’ and b=‘0’ and ci= ‘0’) else
‘1’ when (a=‘0’ and b=‘1’ and ci= ‘0’) else
‘1’ when (a=‘0’ and b=‘0’ and ci= ‘1’) else
‘1’ when (a=‘1’ and b=‘1’ and ci= ‘1’) else
‘0’;
co <= ‘1’ when (a=‘1’ and b=‘1’ and ci= ‘0’) else
‘1’ when (a=‘1’ and b=‘0’ and ci= ‘1’) else
‘1’ when (a=‘0’ and b=‘1’ and ci= ‘1’) else
‘1’ when (a=‘1’ and b=‘1’ and ci= ‘1’) else
‘0’;
end somaDtFw;
30. 30
Construção WITH SELECT
• Transfere um valor a um sinal de destino
segundo uma relação de opções.
Laboratório de Microeletrônica e Sistemas
sinal_destino <= expressao_a WHEN condicao_1
expressao_b WHEN condicao_2
expressao_c WHEN condicao_3
expressao_d WHEN OTHERS;
31. 31
Comandos seqüenciais
• Comandos seqüenciais ficam contidos
em regiões do código chamados de
Laboratório de Microeletrônica e Sistemas
PROCESSOS. “PROCESS”
32. 32
Lista de sensibilidade
• PROCESS é um comando
concorrente.
Laboratório de Microeletrônica e Sistemas
• A região delimitada por um processo
contém comandos que são executados
de forma seqüencial.
• A lista de sensibilidade possui uma
lista de sinais que causam a execução
de um processo.
• PROCESS (lista de sensibilidade)
33. 33
Construção IF ELSE
• Permite a execução condicional de um ou
mais comandos seqüenciais.
Laboratório de Microeletrônica e Sistemas
IF condicao_1 THEN
comando_sequencial;
comando_sequencial;
ELSIF condicao_2 THEN
comando_sequencial;
comando_sequencial;
ELSE
comando_sequencial;
END IF;
34. 34
Construção IF ELSE aninhadas
IF condicao_1 THEN
IF condicao_2 THEN
comando_sequencial;
Laboratório de Microeletrônica e Sistemas
ELSE
comando_sequencial;
END IF;
ELSE
IF condicao_3 THEN
comando_sequencial;
ELSE
comando_sequencial;
END IF;
END IF;
35. 35
Construção CASE WHEN
• Permite a execução condicional de um ou
mais comandos seqüenciais, conforme o
Laboratório de Microeletrônica e Sistemas
valor de uma expressão.
CASE expressao IS
WHEN condicao_1 => comando_a;
WHEN condicao_2 => comando_b;
WHEN condicao_3 => comando_c;
WHEN OTHERS => comando_d;
END CASE;
36. 36
Comando WAIT
• Suspende a execução de um processo.
• Somente usado em processos que não
Laboratório de Microeletrônica e Sistemas
contem lista de sensibilidades.
WAIT ON lista_de_sensibilidade;
WAIT UNTIL expressao_booleana;
WAIT FOR tempo;
37. 37
Plano da exposição
• Histórico
• Aspectos Gerais da Linguagem
Laboratório de Microeletrônica e Sistemas
• Tipos, operadores e bibliotecas
padrões.
• Comandos concorrentes e sequenciais.
• Verificação e síntese de sistemas
digitais.
• Introdução ao Quartus II
38. Fluxo de projeto com HDL
38
Laboratório de Microeletrônica e Sistemas
39. Verificação
39
Laboratório de Microeletrônica e Sistemas
40. Síntese
40
Laboratório de Microeletrônica e Sistemas
41. Etapa final do projeto
41
Laboratório de Microeletrônica e Sistemas
42. 42
Plano da exposição
• Histórico
• Aspectos Gerais da Linguagem
Laboratório de Microeletrônica e Sistemas
• Tipos, operadores e bibliotecas
padrões.
• Comandos concorrentes e sequenciais.
• Verificação e síntese de sistemas
digitais.
• Introdução ao Quartus II
43. 43
Introdução ao Quartus II
• Ferramenta totalmente integrada
• Entrada do projeto por múltiplos métodos
Laboratório de Microeletrônica e Sistemas
• Síntese lógica
• Place & Route
• Simulação
• Timing & Power Analysis
• Programação do dispositivo
• Permite a integração de ferramentas EDA
de terceiros.
44. 44
Ciclo de projeto com o Quartus II
• Definir um novo projeto
Laboratório de Microeletrônica e Sistemas
• Conceber os módulos em VHDL, Verilog ou
AHDL.
• Os módulos podem também ser criados em
diagramas esquemáticos
• Compilar e simular os módulos.
• Modificar o projeto para atender as
especificações
• Fazer download do projeto para a FPGA