44
Introdução a VHDL Prototipagem de Prototipagem de Sistemas Digitais Sistemas Digitais Francisco Brito [email protected]

Prototipagem de Sistemas Digitais - Introdução a VHDL

Embed Size (px)

Citation preview

Page 1: Prototipagem de Sistemas Digitais - Introdução a VHDL

Introduçãoa VHDL

Prototipagem de Prototipagem de Sistemas DigitaisSistemas Digitais

Fra

ncis

co B

rito

brit

o_uf

rn@

ieee

.org

Page 2: Prototipagem de Sistemas Digitais - Introdução a VHDL

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

Page 3: Prototipagem de Sistemas Digitais - Introdução a VHDL

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.

Page 4: Prototipagem de Sistemas Digitais - Introdução a VHDL

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)

Page 5: Prototipagem de Sistemas Digitais - Introdução a VHDL

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.

Page 6: Prototipagem de Sistemas Digitais - Introdução a VHDL

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.

Page 7: Prototipagem de Sistemas Digitais - Introdução a VHDL

7

Labo

rató

rio d

e M

icro

elet

rôni

ca e

Sis

tem

as

Em

barc

ados

Modelando a interface

Page 8: Prototipagem de Sistemas Digitais - Introdução a VHDL

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

Page 9: Prototipagem de Sistemas Digitais - Introdução a VHDL

9

Labo

rató

rio d

e M

icro

elet

rôni

ca e

Sis

tem

as

Em

barc

ados

Declarando uma arquitetura

Page 10: Prototipagem de Sistemas Digitais - Introdução a VHDL

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;

Page 11: Prototipagem de Sistemas Digitais - Introdução a VHDL

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;

Page 12: Prototipagem de Sistemas Digitais - Introdução a VHDL

12

Labo

rató

rio d

e M

icro

elet

rôni

ca e

Sis

tem

as

Em

barc

ados

Modelando atrasos em VHDL

Page 13: Prototipagem de Sistemas Digitais - Introdução a VHDL

13

Labo

rató

rio d

e M

icro

elet

rôni

ca e

Sis

tem

as

Em

barc

ados

Palavras binárias

Page 14: Prototipagem de Sistemas Digitais - Introdução a VHDL

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.

Page 15: Prototipagem de Sistemas Digitais - Introdução 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.

Page 16: Prototipagem de Sistemas Digitais - Introdução a VHDL

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;

Page 17: Prototipagem de Sistemas Digitais - Introdução a VHDL

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

Page 18: Prototipagem de Sistemas Digitais - Introdução a VHDL

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;

Page 19: Prototipagem de Sistemas Digitais - Introdução a VHDL

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.

Page 20: Prototipagem de Sistemas Digitais - Introdução a VHDL

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)

Page 21: Prototipagem de Sistemas Digitais - Introdução a VHDL

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!

Page 22: Prototipagem de Sistemas Digitais - Introdução a VHDL

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)

Page 23: Prototipagem de Sistemas Digitais - Introdução a VHDL

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.

Page 24: Prototipagem de Sistemas Digitais - Introdução a VHDL

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.

Page 25: Prototipagem de Sistemas Digitais - Introdução a VHDL

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.

Page 26: Prototipagem de Sistemas Digitais - Introdução a VHDL

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.

Page 27: Prototipagem de Sistemas Digitais - Introdução a VHDL

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.

Page 28: Prototipagem de Sistemas Digitais - Introdução a VHDL

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;

Page 29: Prototipagem de Sistemas Digitais - Introdução a VHDL

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;

Page 30: Prototipagem de Sistemas Digitais - Introdução a VHDL

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;

Page 31: Prototipagem de Sistemas Digitais - Introdução a VHDL

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”

Page 32: Prototipagem de Sistemas Digitais - Introdução a VHDL

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)

Page 33: Prototipagem de Sistemas Digitais - Introdução a VHDL

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;

Page 34: Prototipagem de Sistemas Digitais - Introdução a VHDL

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;

Page 35: Prototipagem de Sistemas Digitais - Introdução a VHDL

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;

Page 36: Prototipagem de Sistemas Digitais - Introdução a VHDL

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;

Page 37: Prototipagem de Sistemas Digitais - Introdução a VHDL

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

Page 38: Prototipagem de Sistemas Digitais - Introdução a VHDL

38

Labo

rató

rio d

e M

icro

elet

rôni

ca e

Sis

tem

as

Em

barc

ados

Fluxo de projeto com HDL

Page 39: Prototipagem de Sistemas Digitais - Introdução a VHDL

39

Labo

rató

rio d

e M

icro

elet

rôni

ca e

Sis

tem

as

Em

barc

ados

Verificação

Page 40: Prototipagem de Sistemas Digitais - Introdução a VHDL

40

Labo

rató

rio d

e M

icro

elet

rôni

ca e

Sis

tem

as

Em

barc

ados

Síntese

Page 41: Prototipagem de Sistemas Digitais - Introdução a VHDL

41

Labo

rató

rio d

e M

icro

elet

rôni

ca e

Sis

tem

as

Em

barc

ados

Etapa final do projeto

Page 42: Prototipagem de Sistemas Digitais - Introdução a VHDL

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

Page 43: Prototipagem de Sistemas Digitais - Introdução a VHDL

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.

Page 44: Prototipagem de Sistemas Digitais - Introdução a VHDL

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