Introduçãoa VHDL
Prototipagem de Prototipagem de Sistemas DigitaisSistemas Digitais
Fra
ncis
co B
rito
brit
o_uf
rn@
ieee
.org
2
Labo
rató
rio d
e M
icro
elet
rôni
ca e
Sis
tem
as
Em
barc
ados
Plano da exposição
• Histórico• Aspectos Gerais da Linguagem• Tipos, operadores e bibliotecas
padrões.• Comandos concorrentes e sequenciais.• Verificação e síntese de sistemas
digitais.• Introdução ao Quartus II
3
Labo
rató
rio d
e M
icro
elet
rôni
ca e
Sis
tem
as
Em
barc
ados
Plano da exposição
• Histórico• Aspectos Gerais da Linguagem• Tipos, operadores e bibliotecas
padrões.• Comandos concorrentes e sequenciais.• Verificaçãoe síntese de sistemas
digitais.• Introdução ao Quartus II.
4
Labo
rató
rio d
e M
icro
elet
rôni
ca e
Sis
tem
as
Em
barc
ados
Histórico• VHDL – The VHSIC Hardware Description
Language
• 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
Labo
rató
rio d
e M
icro
elet
rôni
ca e
Sis
tem
as
Em
barc
ados
Plano da exposição
• Histórico• Aspectos Gerais da Linguagem• Tipos, operadores e bibliotecas
padrões.• Comandos concorrentes e sequenciais.• Verificaçãoe síntese de sistemas
digitais.• Introdução ao Quartus II.
6
Labo
rató
rio d
e M
icro
elet
rôni
ca e
Sis
tem
as
Em
barc
ados
Aspectos gerais
Entidade e arquitetura.
• Entidade: definição da interface.
• Arquitetura: comportamental e estrutural.
7
Labo
rató
rio d
e M
icro
elet
rôni
ca e
Sis
tem
as
Em
barc
ados
Modelando a interface
8
Labo
rató
rio d
e M
icro
elet
rôni
ca e
Sis
tem
as
Em
barc
ados
Modelando a arquitetura• Corpo do módulo (architecture)– Descreve uma implementação do módulo– Pode haver diversas implementações de umamesma entidade.• Descrição comportamental: Forneceexplicitamente a relação entre as entradas e assaídas• Descrição estrutural: Permite construirfunções lógicas a partir da combinação de elementos mais primitivos
9
Labo
rató
rio d
e M
icro
elet
rôni
ca e
Sis
tem
as
Em
barc
ados
Declarando uma arquitetura
10
Labo
rató
rio d
e M
icro
elet
rôni
ca e
Sis
tem
as
Em
barc
ados
Modelo estrutural•Numa descrição VHDL estrutural, ummódulo lógico é criado pela conexão demódulos mais simples;
11
Labo
rató
rio d
e M
icro
elet
rôni
ca e
Sis
tem
as
Em
barc
ados
Modelo estrutural em VHDLentity Funcao_G is port ( a, b, c, d: in bit; f : out bit );end Funcao_G;architecture G_estrtural of Funcao_G is--------------------------------------------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
--------------------------------------------beginA1: 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;
12
Labo
rató
rio d
e M
icro
elet
rôni
ca e
Sis
tem
as
Em
barc
ados
Modelando atrasos em VHDL
13
Labo
rató
rio d
e M
icro
elet
rôni
ca e
Sis
tem
as
Em
barc
ados
Palavras binárias
14
Labo
rató
rio d
e M
icro
elet
rôni
ca e
Sis
tem
as
Em
barc
ados
Identificadores válidos em VHDL• Caracteres alfanuméricos: A‐Z, a‐z, 0‐9;• Símbolo de sublinhado ‘_’ desde que nãoseja no início ou fim de um identificador.• Um identificador deve sempre começar poruma letra;•Não é permitido utilizar dois ‘_’ emseqüência• VHDL não distingue letras maiúsculas deminúsculas. VHdl é idêntico a vhDL.
15
Labo
rató
rio d
e M
icro
elet
rôni
ca e
Sis
tem
as
Em
barc
ados
Plano da exposição
• Histórico• Aspectos Gerais da Linguagem• Tipos, operadores e bibliotecas
padrões.• Comandos concorrentes e sequenciais.• Verificaçãoe síntese de sistemas
digitais.• Introdução ao Quartus II.
16
Labo
rató
rio d
e M
icro
elet
rôni
ca e
Sis
tem
as
Em
barc
ados
Operadores lógicos
• O operador not tem maior nível deprecedência• Os demais operadores têm mesmo nívelde precedência. Neste caso a “execução”é feita segundo a ordem em que osoperadores se encontram na expressão: daesquerda para a direita. Usar parênteses;•Ex.: A expressão Booleana q=a+b.c deveser escrita em VHDL como q<=a or (b andc). Caso contrário, se for escrita em VHDLcomo q <=a or b and c, seráinterpretada pelo compilador comoq=(a+b).c;
17
Labo
rató
rio d
e M
icro
elet
rôni
ca e
Sis
tem
as
Em
barc
ados
Operadores relacionais
• Os operadores relacionais têm maior nível de precedência que osoperadores lógicos.•A exceção é o operador not
18
Labo
rató
rio d
e M
icro
elet
rôni
ca e
Sis
tem
as
Em
barc
ados
Bibliotecas• Coleções de quantidades pré‐definidas eprocedimentos utilizados pelo compilador VHDL.library Nome_da_biblioteca;• Podem conter identificadores, tipos de dados,funções, etc.• Numa biblioteca, as informações são sepadaras empacotes.– O pacote IEEE 1164 da biblioteca IEEE é um exemplo depacote bastanteutilizado e útil.library ieee;use ieee.std_logic_1164.all;
19
Labo
rató
rio d
e M
icro
elet
rôni
ca e
Sis
tem
as
Em
barc
ados
Tipos de dados padrão
• Principais tipos definidos no pacote STANDARDinterno à linguagem VHDL:– INTEGER : operações de número com sinal. Para queresulte numa construção sintetizável, faz‐se necessáriodelimitar 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 palavrasbinárias. Preferível usar STD_LOGIC.
20
Labo
rató
rio d
e M
icro
elet
rôni
ca e
Sis
tem
as
Em
barc
ados
Tipos de dados estendidos• Definindos no pacote STD_LOGIC_1164(“standard logic”)– Um sinal do tipo STD_LOGIC pode assumir um dosnove 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
Labo
rató
rio d
e M
icro
elet
rôni
ca e
Sis
tem
as
Em
barc
ados
Usando tipos estendidos
• Adicione a biblioteca IEEE library no início do arquivoVHDL e referencie o pacote desejado: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 maiscomumente usados:– Permite o uso de sinais em estado de alta ‐ impedância– Permite simular corrtamente– Deve ser usado sempre que possível!
22
Labo
rató
rio d
e M
icro
elet
rôni
ca e
Sis
tem
as
Em
barc
ados
Usando tipos estendidos• Exemplo de atribuição de valores– data_bit <= ‘1’;– data_bus <=“110011”;– 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 dalinguagem C tende a fazer a confusão)
23
Labo
rató
rio d
e M
icro
elet
rôni
ca e
Sis
tem
as
Em
barc
ados
A cláusula OTHERS
• Seu código pode se tornar mais portátil e mais fácil deatualizar com o uso de others.– Ex.1:• count <=“00010”;– Ex.2:• count <= ( 1 => ‘1’, others => ‘0’ );
• O sinal “count” pode ser facilmente mudado de 5 para 10bits no exemplo onde others é usada.
24
Labo
rató
rio d
e M
icro
elet
rôni
ca e
Sis
tem
as
Em
barc
ados
Plano da exposição
• Histórico• Aspectos Gerais da Linguagem• Tipos, operadores e bibliotecas
padrões.• Comandos concorrentes e sequenciais.• Verificaçãoe síntese de sistemas
digitais.• Introdução ao Quartus II.
25
Labo
rató
rio d
e M
icro
elet
rôni
ca e
Sis
tem
as
Em
barc
ados
Comandos concorrentes
• Comandos concorrentes são executados conjuntamente, sendo irrelevante a seqüência como são apresentados.
26
Labo
rató
rio d
e M
icro
elet
rôni
ca e
Sis
tem
as
Em
barc
ados
Operações concorrentes• As palavras‐chave not, and, or, xor, nand,nor e xnor são utilizadas para descrever oque se chama de operações concorrentes.•Neste caso uma operação é executada semobservar qualquer limitação ou restrição detempo.•Na expressão q <= a or b and c, o valor de q éatualizado toda vez que houver umamudança no estado das entradas a, b ou c.
27
Labo
rató
rio d
e M
icro
elet
rôni
ca e
Sis
tem
as
Em
barc
ados
Atribuição a um sinal• Pode ocorrer em regiões de código concorrente ou seqüencial.• Emprega o delimitador ” <= ”.• Transferência de valores entre objetos de tipos diferentes não é permitida.
28
Labo
rató
rio d
e M
icro
elet
rôni
ca e
Sis
tem
as
Em
barc
ados
Construção WHEN ELSE• Permite transferência condicional de um sinal.
sinal_destino <= expressao_a WHEN condicao_1 ELSE expressao_b WHEN condicao_2 ELSE
expressao_c;
29
Labo
rató
rio d
e M
icro
elet
rôni
ca e
Sis
tem
as
Em
barc
ados
Construção WHEN ELSEExemplo:
entity somador is port ( a, b, ci : in bit; s, co : out bit );end somador;
architecture somaDtFw of somador is begins <= ‘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
Labo
rató
rio d
e M
icro
elet
rôni
ca e
Sis
tem
as
Em
barc
ados
Construção WITH SELECT• Transfere um valor a um sinal de destino segundo uma relação de opções.
sinal_destino <= expressao_a WHEN condicao_1 expressao_b WHEN condicao_2 expressao_c WHEN condicao_3
expressao_d WHEN OTHERS;
31
Labo
rató
rio d
e M
icro
elet
rôni
ca e
Sis
tem
as
Em
barc
ados
Comandos seqüenciais
• Comandos seqüenciais ficam contidos em regiões do código chamados de PROCESSOS. “PROCESS”
32
Labo
rató
rio d
e M
icro
elet
rôni
ca e
Sis
tem
as
Em
barc
ados
Lista de sensibilidade
• PROCESS é um comando concorrente.
• 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
Labo
rató
rio d
e M
icro
elet
rôni
ca e
Sis
tem
as
Em
barc
ados
Construção IF ELSE• Permite a execução condicional de um ou mais comandos seqüenciais.
IF condicao_1 THEN comando_sequencial; comando_sequencial;ELSIF condicao_2 THEN comando_sequencial; comando_sequencial;ELSE comando_sequencial;END IF;
34
Labo
rató
rio d
e M
icro
elet
rôni
ca e
Sis
tem
as
Em
barc
ados
Construção IF ELSE aninhadasIF condicao_1 THEN IF condicao_2 THEN comando_sequencial; ELSE comando_sequencial; END IF;ELSE IF condicao_3 THEN comando_sequencial; ELSE comando_sequencial; END IF;END IF;
35
Labo
rató
rio d
e M
icro
elet
rôni
ca e
Sis
tem
as
Em
barc
ados
Construção CASE WHEN• Permite a execução condicional de um ou mais comandos seqüenciais, conforme o 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
Labo
rató
rio d
e M
icro
elet
rôni
ca e
Sis
tem
as
Em
barc
ados
Comando WAIT• Suspende a execução de um processo.• Somente usado em processos que não contem lista de sensibilidades.
WAIT ON lista_de_sensibilidade;WAIT UNTIL expressao_booleana; WAIT FOR tempo;
37
Labo
rató
rio d
e M
icro
elet
rôni
ca e
Sis
tem
as
Em
barc
ados
Plano da exposição
• Histórico• Aspectos Gerais da Linguagem• Tipos, operadores e bibliotecas
padrões.• Comandos concorrentes e sequenciais.• Verificação e síntese de sistemas
digitais.• Introdução ao Quartus II
38
Labo
rató
rio d
e M
icro
elet
rôni
ca e
Sis
tem
as
Em
barc
ados
Fluxo de projeto com HDL
39
Labo
rató
rio d
e M
icro
elet
rôni
ca e
Sis
tem
as
Em
barc
ados
Verificação
40
Labo
rató
rio d
e M
icro
elet
rôni
ca e
Sis
tem
as
Em
barc
ados
Síntese
41
Labo
rató
rio d
e M
icro
elet
rôni
ca e
Sis
tem
as
Em
barc
ados
Etapa final do projeto
42
Labo
rató
rio d
e M
icro
elet
rôni
ca e
Sis
tem
as
Em
barc
ados
Plano da exposição
• Histórico• Aspectos Gerais da Linguagem• Tipos, operadores e bibliotecas
padrões.• Comandos concorrentes e sequenciais.• Verificação e síntese de sistemas
digitais.• Introdução ao Quartus II
43
Labo
rató
rio d
e M
icro
elet
rôni
ca e
Sis
tem
as
Em
barc
ados
Introdução ao Quartus II
• Ferramenta totalmente integrada• Entrada do projeto por múltiplos métodos• 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
Labo
rató
rio d
e M
icro
elet
rôni
ca e
Sis
tem
as
Em
barc
ados
Ciclo de projeto com o Quartus II
• Definir um novo projeto• Conceber os módulos em VHDL, Verilog ouAHDL.• Os módulos podem também ser criados emdiagramas esquemáticos• Compilar e simular os módulos.• Modificar o projeto para atender as especificações• Fazer download do projeto para a FPGA
Top Related