Você está na página 1de 44

Prototipagem de 

Sistemas Digitais
brito_ufrn@ieee.org
Francisco Brito

Introdução
a VHDL
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

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

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

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

Aspectos gerais
Entidade e arquitetura.

Laboratório de Microeletrônica e Sistemas


• Entidade: definição da
interface.
• Arquitetura:
comportamental e
estrutural.
Modelando a interface
7

Laboratório de Microeletrônica e Sistemas


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
Declarando uma arquitetura
9

Laboratório de Microeletrônica e Sistemas


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

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;
Modelando atrasos em VHDL
12

Laboratório de Microeletrônica e Sistemas


Palavras binárias
13

Laboratório de Microeletrônica e Sistemas


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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
Fluxo de projeto com HDL
38

Laboratório de Microeletrônica e Sistemas


Verificação
39

Laboratório de Microeletrônica e Sistemas


Síntese
40

Laboratório de Microeletrônica e Sistemas


Etapa final do projeto
41

Laboratório de Microeletrônica e Sistemas


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

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

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