Você está na página 1de 27

06/04/2006

ELE 315
Eletrônica Digital I
Fernando Rangel
frangel@dee.ufrn.br

Introdução a VHDL
Histórico

• VHDL – The VHSIC Hardrware 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)

Eletrônica digital I 2
Hierarquia e níveis de abstração
Estrutural Funcional
Algorítimo
(comportamento)

Linguagem de
Transferência entre
Registradores

Equações booleanas
“Y-chart” de
Gajski & Kahn
Equações diferenciais

Geométrico

Eletrônica digital I 3
Hierarquia e níveis de abstração
Estrutural Funcional
Comutação entre
Processador e memória

Transferência
entre Registradores
Portas

Transistores

Geométrico

Eletrônica digital I 4
Hierarquia e níveis de abstração
Estrutural Funcional

Polígonos

Grade virtual

Biblioteca de células

Planta baixa

Geométrico

Eletrônica digital I 5
Usando HDL para descrever sistemas
digitais

Interface

a
b F(a,b,c) S
c Fluxo VHDL simplificado

Arquivo Compilador
Comportamento
VHDL VHDL
S= a and b and c
Simulação
Estrutura

a S
b
c

Eletrônica digital I 6
Modelando Interfaces
• Declaração da interface : entity
– Descreve as portas de entrada e saída de um
módulo
Nome da entidade Nome das portas Modo das portas (direção)

entity and3 is
port ( a, b, c: in bit;
S : out bit ); pontuação
end entity and3;

Palavras reservadas Tipo da porta

Eletrônica digital I 7
Modelando a arquitetura
• Corpo do módulo (architecture)
– Descreve uma implementação do módulo
– 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
Eletrônica digital I 8
Declaração da arquitetura de um módulo

Nome do
Versão/tipo da módulo
arquitetura

architecture cmp_and3 of and3 is


begin
S <= a and b and c; -- Efetua a operação a.b.c
end cmp_and3;
Comentário

Eletrônica digital I 9
Identificadores válidos em VHDL
• Caracteres alfanuméricos: A‐Z, a‐z, 0‐9;
• Símbolo de sublinhado ‘_’ desde que não
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.
Eletrônica digital I 10
Operadores lógicos em VHDL
• O operador not tem maior nível de
Operador Exemplo Significado precedência
not not a a • Os demais operadores têm mesmo nível
de precedência. Neste caso a “execução”
and c and d c.d é feita segundo a ordem em que os
or u or v u+v operadores se encontram na expressão: da
esquerda para a direita. Usar parênteses;
xor x xor y x⊕ y
nand c nand d c.d •Ex.: A expressão Booleana q=a+b.c deve
nor f nor g f +g ser escrita em VHDL como q<=a or (b and
c). Caso contrário, se for escrita em VHDL
xnor x xnor u x⊕ y como q <=a or b and c, será
interpretada pelo compilador como
q=(a+b).c;

Eletrônica digital I 11
Operadores relacionais

Operador Significado
= Igual a
/= Não igual a
> Maior do que
< Menor do que
>= Maior do que ou igual a
<= Menor do que ou igual a

• Os operadores relacionais têm maior nível de precedência que os


operadores lógicos.
•A exceção é o operador not
Eletrônica digital I 12
Operações concorrentes
• As palavras‐chave not, and, or, xor, nand,
nor e xnor são utilizadas para descrever o
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.
Eletrônica digital I 13
Exemplo: g = xy + z

entity porta_ex is
port ( x, y, z: in bit;
g : out bit );
end porta_ex;
architecture concorrente of porta_ex is
begin
g <= (x nand y) or (not z);
x
end concorrente; y
g

Eletrônica digital I 14
Modelando atrasos
• Atrasos de propagação em portas:
• g <= x nand y after 10 ns;

x g
tp=10 ns
y

• Atraso de transporte ao longo de conexões


• out <= transport(g) after 1 ns;

x g
tp=10 ns
1 ns out
y

11 ns
Eletrônica digital I 15
Modelo estrutural
• Numa descrição VHDL estrutural, um
módulo lógico é criado pela conexão de
módulos mais simples;

Funcao_G
f = X 1+ X 2
a
X1
b A1
f X 1 = a.b e X 2 = c.d
O2
c
d
A2 X2
f = a.b + c.d

Eletrônica digital I 16
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
--------------------------------------------
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;

Eletrônica digital I 17
Modelos condicionais
entity somador is port ( a, b, ci : in bit; s, co : out bit );
end somador;
ci b a s co
0 0 0 0 0
architecture somaDtFw of somador is 0 0 1 1 0
begin
0 1 0 1 0
s <= ‘1’ when (a=‘1’ and b=‘0’ and ci= ‘0’) else 0 1 1 0 1
‘1’ when (a=‘0’ and b=‘1’ and ci= ‘0’) else 1 0 0 1 0
‘1’ when (a=‘0’ and b=‘0’ and ci= ‘1’) else 1 0 1 0 1
‘1’ when (a=‘1’ and b=‘1’ and ci= ‘1’) else 1 1 0 0 1
‘0’; 1 1 1 1 1
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 s
a
‘1’ when (a=‘1’ and b=‘1’ and
‘0’;
ci= ‘1’) else b
ci
+ co

end somaDtFw;

Eletrônica digital I 18
Palavras binárias
• VHDL permite que se trabalhe com
palabras binárias usando vetores de bits,
simplificando o código final.
Bit_ops
entity bit_ops is
port ( In_a, In_b: in bit_vector(3 downto 0); In_a(3)
f1, f2 : out bit ); In_b(3)
end bit_ops; f1
architecture Basico of bit_ops is In_a(2)
begin In_b(2)

f1 <= (In_a(3) and In_b(3)) nor (In_a(2) and In_a(1)


In_b(3)); In_b(1)
f2
f2 <= (In_a(1) and In_b(1)) nor (In_a(0) and
In_b(0)); In_a(0)
end Basico; In_b(0)

Eletrônica digital I 19
Bibliotecas
• Coleções de quantidades pré‐definidas e
procedimentos 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 em
pacotes.
– O pacote IEEE 1164 da biblioteca IEEE é um exemplo de
pacote bastanteutilizado e útil.
library ieee;
use ieee.std_logic_1164.all;
Eletrônica digital I 20
Tipos de dados padrão
• Principais tipos definidos no pacote STANDARD
interno à linguagem VHDL:
– 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.

Eletrônica digital I 21
Tipos de dados estendidos
• Definindos no pacote STD_LOGIC_1164
(“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)
– STD_LOGIC initializes to unknown

Eletrônica digital I 22
Usando tipos estendidos
• Adicione a biblioteca IEEE library no início do arquivo
VHDL 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 mais
comumente usados:
– Permite o uso de sinais em estado de alta‐ impedância
– Permite simular corrtamente
– Deve ser usado sempre que possível!

Eletrônica digital I 23
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 da
linguagem C tende a fazer a confusão)

Eletrônica digital I 24
A cláusula others
• Seu código pode se tornar mais portátil e mais fácil de
atualizar 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 10


bits no exemplo onde others é usada.

Eletrônica digital I 25
Esqueleto de um arquivo VHDL
Package (optional)
Entity (design I/0) • A definição de pacotes
Architecture (design function) (package) permite
concurrent statements agrupar as definições de
Signal declaration tipos e subprogramas
Component instantiation statement
usados no arquivo
Conditional signal assignment statement • A entidade (entity)
Selected signal assignment statement
Generate statement descrever a interface do
Process statement módulo
sequential statements
Variable declaration
• A arquietura
(architecture) define
Signal assignment
Variable assignment o comportamento do
Procedure call módulo
if, case, loop, next, exit, return
Wait statement
Eletrônica digital I 26
Aprendendo VHDL

• Como qualquer linguagem, aprender VHDL


requer prática
• Alguns simuladores gratuitos:
– GHDL : http://ghdl.free.fr/
– Altera Quartus II Web edition

Eletrônica digital I 27

Você também pode gostar