Você está na página 1de 63

Demonstrao de imagens de auxlio didtico

VHDL - Descrio e Sntese de Circuitos Digitais


Roberto dAmore
ISBN 85-216-1452-7
Editora LTC www.ltceditora.com.br

Para imagens de um curso completo consulte: www.ele.ita.br/~damore/vhdl

VHDL Descrio e Sntese de Circuitos Digitais

Roberto dAmore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br

Imagens curso rpido reviso 3.1

Tpicos
Aspectos gerais da linguagem
Sntese de circuitos
Entidade de projeto
Classes de objetos: constante, varivel e sinal
Tipos
Operadores
Construo concorrente WHEN ELSE
Construo concorrente WITH SELECT
Processos e lista de sensibilidade
Construo seqencial IF ELSE
Construo seqencial CASE WHEN
Circuitos sncronos

VHDL Descrio e Sntese de Circuitos Digitais

Roberto dAmore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br

Imagens curso rpido reviso 3.1

Aspectos gerais da linguagem


Suporta diversos nveis de hierarquia
- uma descrio pode ser: conjunto de descries interligadas
Estilo de uma descrio
- diversos nveis de abstrao so suportados
- pode conter descries com diferentes nveis de abstrao
Ferramentas de sntese:
- suportam diferentes estilos de descrio
- normalmente: modos preferenciais devem ser empregados
Linguagem concorrente
- ordem dos comandos: no importa
- comandos seqenciais: somente em regies especficas

VHDL Descrio e Sntese de Circuitos Digitais

Roberto dAmore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br

Imagens curso rpido reviso 3.1

Sntese de circuitos
VHDL: no foi concebida para sntese de circuitos
- conseqncia: nem todas construes so suportadas

Motivos da limitao:
- falta de correspondncia da construo / descrio com um circuito
exemplo: flip flop com dois terminais de relgio
- impossibilidade da sntese direta
exemplo: multiplicao de dois nmeros reais

VHDL Descrio e Sntese de Circuitos Digitais

Roberto dAmore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br

Imagens curso rpido reviso 3.1

Etapas gerais de um processo de sntese

Simulador VHDL:
- compilao / simulao do cdigo
especificao
descrio VHDL

Simulador VHDL

Ferramenta de sntese

rede de ligaes
Ferramenta de
posicionamento & interligao
construo

VHDL Descrio e Sntese de Circuitos Digitais

Roberto dAmore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br

Imagens curso rpido reviso 3.1

especificao

Ferramenta de sntese

descrio VHDL

Sntese da descrio - (ilustrao das operaes)

Simulador VHDL

Ferramenta de sntese

rede de ligaes

- descrio do circuito

Ferramenta de
posicionamento & interligao
construo

- circuito nvel RTL sintetizado


- circuito nvel portas (final)
descrio VHDL

nvel portas

ENTITY soma IS
PORT (a, b : IN
c

INTEGER RANGE 7 DOWNTO 0;

: OUT INTEGER RANGE 7 DOWNTO 0);

END soma;
ARCHITECTURE teste OF soma IS
BEGIN
c <= a+b;
END teste;

nvel RTL

otimizao velocidade / rea

VHDL Descrio e Sntese de Circuitos Digitais

Roberto dAmore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br

Imagens curso rpido reviso 3.1

Ferramenta de posicionamento e interligao


Posiciona e interliga as primitivas / componentes
- dispositivo empregado na implementao:
FPGA - dispositivo lgico programvel
ASIC - circuitos integrados de aplicao especfica

especificao
descrio VHDL

Simulador VHDL

Ferramenta de sntese

rede de ligaes
Ferramenta de
posicionamento & interligao
construo

VHDL Descrio e Sntese de Circuitos Digitais

Roberto dAmore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br

Imagens curso rpido reviso 3.1

Primeiro contato com a linguagem

VHDL Descrio e Sntese de Circuitos Digitais

Roberto dAmore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br

Imagens curso rpido reviso 3.1

Entidade de projeto
Pode representar:
uma simples porta lgica ..... a um sistema completo
Composta de duas partes:
- Declarao da entidade
- define portas de entrada e sada da descrio
(equivalente ao smbolo de um bloco em captura esquemtica)
- Arquitetura
- descreve as relaes entre as portas
(equivalente ao esquema contido no bloco em cap. esquemtica)
interfaces
Entity

i0
i1

Architecture

i2
Design
Entity

VHDL Descrio e Sntese de Circuitos Digitais

s1
s2

relao entre as interfaces

Roberto dAmore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br

Imagens curso rpido reviso 3.1

Declarao da entidade

interfaces
Entity

i0

ENTITY: inicia a declarao

i2
Design
Entity

s1

i1

Architecture

s2

relao entre as interfaces

PORT: define modo e tipo das portas


modo IN
: entrada
modo OUT
: sada
modo BUFFER : sada - pode ser referenciada internamente
modo INOUT : bidirecional
END: termina a declarao
ENTITY entidade_abc IS
PORT (x0, x1
y0, y1
y2
z0, z1

:
:
:
:

IN
OUT
BUFFER
INOUT

tipo_a;
tipo_b;
tipo_c;
tipo_d);

-----

entradas
saidas
saida
entrada / saida

END entidade_abc;

VHDL Descrio e Sntese de Circuitos Digitais

Roberto dAmore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br

Imagens curso rpido reviso 3.1

10

Exemplo: declarao de uma entidade & esquema da arquitetura


ENTITY entidade_abc IS
PORT (x0, x1
y0, y1
y2
z0, z1

:
:
:
:

IN
OUT
BUFFER
INOUT

tipo_a;
tipo_b;
tipo_c;
tipo_d);

-----

entradas
saidas
saida
entrada / saida

END entidade_abc;

x0

y0

IN

OUT
y1

IN
x1

y2
BUFFER

INOUT

INOUT
z0

VHDL Descrio e Sntese de Circuitos Digitais

z1

Roberto dAmore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br

Imagens curso rpido reviso 3.1

11

interfaces

Declarao da arquitetura

Entity

i0

ARCHITECTURE: inicia a declarao

i2
Design
Entity

s1

i1

Architecture

s2

relao entre as interfaces

linhas que seguem podem conter:


- declarao de sinais e constantes
- declarao de componentes referenciados
- descrio de subprogramas locais
- definio de novos tipos
BEGIN: inicia a descrio
END: termina a descrio
ARCHITECTURE estilo_abc OF entidade_abc IS
-- declaracoes de sinais e constantes
-- declaracoes de componentes referenciados
-- descricao de sub-programas locais
-- definicao de novos tipos de dados locais
-BEGIN
--- declaracoes concorrentes
-END estilo_abc;
VHDL Descrio e Sntese de Circuitos Digitais

Roberto dAmore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br

Imagens curso rpido reviso 3.1

12

Exemplos de classe de objetos: constante sinal


Objetos: so elementos que contm um valor armazenado
Exemplo:
- CONSTANT: valor esttico
- SIGNAL:

valor imposto pode ser alterado


regies de cdigo seqencial e concorrente

Exemplos de transferncia de valores: constante e sinal


sinal_2
sinal_4

<= sinal_1;
<= constante_1;

VHDL Descrio e Sntese de Circuitos Digitais

-- transferencia entre sinais


-- transferencia de constante para sinal

Roberto dAmore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br

Imagens curso rpido reviso 3.1

13

Exemplo de uma descrio completa


- definidas trs portas:

uma entrada, duas de sada

- tipo das portas: INTEGER


- operaes: transferncia de valores
- declarados: s1 sinal interno, e c1 constante
- concorrncia no cdigo: (prxima imagem)

1
2
3
4
5
6
7
8
9
10
11
12
13
14

ENTITY atrib_1 IS
PORT (x1
: IN INTEGER;
y1,z1 : OUT INTEGER);
END;
ARCHITECTURE teste OF atrib_1 IS
SIGNAL
s1 : INTEGER;
CONSTANT c1 : INTEGER := 7;
BEGIN
y1 <= s1;
s1 <= x1;

-- porta entrada
-- portas saida

-- declaracao de um sinal tipo inteiro


-- declaracao de uma constante tipo inteiro
-- regiao de codigo concorrente

z1 <= c1;
END teste;

VHDL Descrio e Sntese de Circuitos Digitais

Roberto dAmore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br

Imagens curso rpido reviso 3.1

14

Exemplo de uma descrio completa


- observar concorrncia no cdigo:
linha 10: y1<= s1 -- valor de s1 transferido para sada y1
linha 11: s1<= x1

-- s1 recebe o valor da entrada x1

Signal s1 : Integer;
x1 : In Integer;

x1

32

32

s1 <= x1;
Constant c1 : Integer := 7;

32

y1

y1 <= s1;

y1, z1 :Out Integer;


32

z1

z1 <= c1;
5
6 ARCHITECTURE teste OF atrib_1 IS
7
SIGNAL
s1 : INTEGER;
8
CONSTANT c1 : INTEGER := 7;
9 BEGIN
10
y1 <= s1;
11
s1 <= x1;
12
13
z1 <= c1;
14 END teste;
VHDL Descrio e Sntese de Circuitos Digitais

-- declaracao de um sinal tipo inteiro


-- declaracao de uma constante tipo inteiro
-- regiao de codigo concorrente

Roberto dAmore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br

Imagens curso rpido reviso 3.1

15

Tipos
Objetos:
- devem ser declarados segundo uma especificao de tipo
Objetos de tipos diferentes:
- no permitida a transferncia de valores
Exemplo de tipos pr-definidos no pacote padro VHDL:
classes

tipos

classes
pr-definidos

scalar
enumerated

bit

boolean

composite
numeric

character

VHDL Descrio e Sntese de Circuitos Digitais

integer

array

real

Roberto dAmore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br

bit_vector

string

Imagens curso rpido reviso 3.1

16

tipos

Tipos escalares

scalar

composite

enumerated
bit

boolean

array

numeric
character

integer

bit_vector

real

string

So ordenados
- podem ser aplicados operadores: maior, menor
Classes: enumerado e numrico
classe

tipo

valor

exemplos

enumerado

BIT

um, zero

1, 0

BOOLEAN

verdadeiro, falso

TRUE, FALSE

CHARACTER

caracteres ASCII

a, b, c, A, B, C, ?, (

INTEGER

-231 x 231-1

123, 8#173#, 16#7B#

numrico

2#11_11_011#
REAL

VHDL Descrio e Sntese de Circuitos Digitais

-3.651047 x +3.651047

1.23, 1.23E+2, 16#7.B#E+1

Roberto dAmore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br

Imagens curso rpido reviso 3.1

17

tipos

Tipos escalares

scalar

composite

enumerated
bit

boolean

array

numeric
character

integer

bit_vector

real

string

Classe enumerado (pr-definidos):


- BIT: empregado para representar nveis lgicos 0 e 1
- BOOLEAN: empregado em declaraes que executam uma deciso
- CHARACTER: qualquer caracter ASCII padro

classe

tipo

valor

exemplos

enumerado

BIT

um, zero

1, 0

BOOLEAN

verdadeiro, falso

TRUE, FALSE

CHARACTER

caracteres ASCII

a, b, c, A, B, C, ?, (

VHDL Descrio e Sntese de Circuitos Digitais

Roberto dAmore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br

Imagens curso rpido reviso 3.1

18

Tipos escalares

tipos
scalar
enumerated

Classe numrico (pr-definidos):

bit

boolean

composite
array

numeric
character

integer

real

bit_vector

string

- INTEGER: representa um nmero inteiro entre -231 x 231-1


- necessrio uma linha de 32 bits para representao!
- conveniente limitar a faixa de valores na declarao
- REAL: ponto flutuante
- no suportado pelas ferramentas de sntese
classe

tipo

valor

numrico

INTEGER

-231 x 231-1

REAL

-3.651047 x +3.651047

VHDL Descrio e Sntese de Circuitos Digitais

exemplos
123, 8#173#, 16#7B#
2#11_11_011#
1.23, 1.23E+2, 16#7.B#E+1

Roberto dAmore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br

Imagens curso rpido reviso 3.1

19

Tipos compostos

tipos
scalar
enumerated
bit

boolean

composite
array

numeric
character

integer

real

bit_vector

string

Classe vetor (pr-definidos):


- BIT_VECTOR: vetor contendo elementos tipo bit
- STRING: vetor contendo elementos tipo character

Classe

tipo

valor

exemplos

vetor

BIT_VECTOR

1 , 0

1010, B10_10, O12, XA

STRING

tipo character

texto, incluindo_aspas

VHDL Descrio e Sntese de Circuitos Digitais

Roberto dAmore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br

Imagens curso rpido reviso 3.1

20

Tipos compostos
tipos
scalar
enumerated
bit

composite
array

numeric

boolean

character

integer

bit_vector

real

string

Declaraes:
- limites definidos por TO e DOWNTO
Exemplos de declaraes tipos: bit_vector e string:

CONSTANT a: BIT_VECTOR(0 TO 7) := "10110011"


1

CONSTANT b: BIT_VECTOR(7 DOWNTO 0) := "10110011"

a(0) a(1) a(2) a(3) a(4) a(5) a(6) a(7)

b(7) b(6) b(5) b(4) b(3) b(2) b(1) b(0)

CONSTANT c: STRING(1 TO 9) := "Alo mundo"

CONSTANT d: STRING(1 DOWNTO 9) := "Alo mundo"

c(1) c(2) c(3) c(4) c(5) c(6) c(7) c(8) c(9)

VHDL Descrio e Sntese de Circuitos Digitais

d(9) d(8) d(7) d(6) d(5) d(4) d(3) d(2) d(1)

Roberto dAmore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br

Imagens curso rpido reviso 3.1

21

Exemplo de operadores
Divididos em classes:
- as classes definem a precedncia dos operadores
- operadores de uma mesma classe: igual precedncia
Maior precedncia: classe diversos
Menor precedncia: classe lgicos
Operador not: operador lgico, est na classe diversos devido a precedncia
classe
lgicos
relacionais
adio
diversos

VHDL Descrio e Sntese de Circuitos Digitais

operadores
and

or
=

nand
/=

<
+

nor

xor

<=

>

xnor
>=

&

not

Roberto dAmore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br

Imagens curso rpido reviso 3.1

22

Operadores
Tipos envolvidos na operao
- maioria das operaes: operadores do mesmo tipo
Operadores lgicos:
- operandos: tipos bit e boolean
- podem ser empregados em vetores (arrays):
exemplo: bit_vector
- vetores devem ter o mesmo tamanho
- operao executada entre elementos de mesma posio
operadores

operando L

operando R

retorna

not

bit

bit

boolean

boolean

bit

bit

bit

boolean

boolean

boolean

and

or

nand

nor xor xnor

Nota: O operador not pertence a classe diversos

VHDL Descrio e Sntese de Circuitos Digitais

Roberto dAmore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br

Imagens curso rpido reviso 3.1

23

Operadores relacionais:
- igualdade e desigualdade (= /=): qualquer tipo
- a=b para escalares: a mesmo valor de b
- a=b para compostos: cada elemento de mesma posio igual
- ordenao (> < >= <=): tipos escalares (bit, boolean, character, integer, real, time)
operadores

>

/=

<

>=

<=

operando L

operando R

retorna

qualquer tipo

mesmo tipo de L

boolean

qualquer tipo escalar

mesmo tipo de L

boolean

- exemplo de valores tipo bit_vector iguais:


CONSTANT a: BIT_VECTOR(0 TO 3) := "1000"
1

a(0)

a(1)

a(2)

a(3)

VHDL Descrio e Sntese de Circuitos Digitais

b(3)
1

b(2) b(1)
0

b(0)

CONSTANT c: BIT_VECTOR(0 TO 3) := "1000"

CONSTANT b: BIT_VECTOR(3 DOWNTO 0) := "1000"

Roberto dAmore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br

c(0) c(1)

c(2)

c(3)

Imagens curso rpido reviso 3.1

24

Operadores adio
- adio e subtrao (+

-): tipo numrico

- concatenao (&): vetor unidimensional e elementos (mesmo tipo)


operadores

&

operando L

operando R

retorna

tipo numrico

o mesmo tipo de L

mesmo tipo

vetor unidimensional

vetor unidimensional

vetor unidimensional

vetor unidimensional

elemento

vetor unidimensional

elemento

vetor unidimensional

vetor unidimensional

elemento

elemento

vetor unidimensional

Exemplo:
a <= b & c;
-- a bit_vector 8 elementos,
x <= y & 1; -- x bit_vector 5 elementos,

VHDL Descrio e Sntese de Circuitos Digitais

b,c bit_vetor 4 elementos


y bit_vetor 4 elementos

Roberto dAmore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br

Imagens curso rpido reviso 3.1

25

Exemplo: Atribuio de valores em sinais, tipos BIT_VECTOR


- operao: valor 1011 atribudo a todas as portas de sada
- diferentes bases de representao:
tipos integer, real formato: 16#b#
tipos bit_vector formato: XB

16#b.0#

- linha 10: caracter _ como separador (melhora leitura do valor)


- linha 12: valor definido para cada elemento,
palavra reservada OTHERS especifica elementos restantes
1
2
3
4
5
6
7
8
9
10
11
12
13

ENTITY std_a IS
PORT (s1,s2,s3,s4,s5
END std_a;

: OUT BIT_VECTOR (3 DOWNTO 0));

ARCHITECTURE teste OF std_a IS


CONSTANT c1 : BIT_VECTOR(3 DOWNTO 0) := "1011"; -- constante
BEGIN
s1 <= c1;
-- definindo atraves de constante
s2 <= "1011";
-- definindo valor bit a bit
s3 <= B"1_0_11";
-- binario default com separadores
s4 <= X"B";
-- hexadecimal
s5 <= (3 =>'1', 2 =>'0', OTHERS =>'1'); -- uso da palavara reservada "others"
END teste;

VHDL Descrio e Sntese de Circuitos Digitais

Roberto dAmore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br

Imagens curso rpido reviso 3.1

26

Exemplo: Operadores classe adio


- linhas 10 e 11: operao de concatenao de dois vetores (tipo bit_vector)
- linha 12: soma de dois tipos inteiros

1
2
3
4
5
6
7
8
9
10
11
12
13

ENTITY std_xc IS
PORT (bv_a, bv_b
int_a, int_b
bv_c, bc_d
int_c
END std_xc;

:
:
:
:

IN
IN
OUT
OUT

BIT_VECTOR(1 DOWNTO 0);


INTEGER RANGE -32 TO 31;
BIT_VECTOR(3 DOWNTO 0);
INTEGER RANGE -64 TO 63);

ARCHITECTURE teste OF std_xc IS


BEGIN
bv_c <= bv_a & bv_b;
bc_d <= bv_a & '1' & '0';
int_c <= -int_a +int_b;
END teste;

VHDL Descrio e Sntese de Circuitos Digitais

Roberto dAmore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br

Imagens curso rpido reviso 3.1

27

Exerccios
Compilar e simular as descries:
- std_a
- std_xc

arquivo: std_a.vhd
arquivo: std_xc.vhd

VHDL Descrio e Sntese de Circuitos Digitais

Roberto dAmore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br

Imagens curso rpido reviso 3.1

28

Comandos concorrentes bsicos


Construo WHEN ELSE
Construo WITH SELECT

VHDL Descrio e Sntese de Circuitos Digitais

Roberto dAmore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br

Imagens curso rpido reviso 3.1

29

Descrio de um circuito de seleo


entradas: i0, i1, i2 e i3
sada: ot
controle da seleo: s0 e s1
i0

i0

int0

i1

int1

i1
i2

ot
sel

i3

ot
4/1

s0
s1

s1 s0

ot

0
0
1
1

i0
i1
i2
i3

0
1
0
1

i2

int2

i3

int3

s0
s1

VHDL Descrio e Sntese de Circuitos Digitais

Roberto dAmore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br

Imagens curso rpido reviso 3.1

30

Exemplo: descrio do circuito de seleo

i0
i1
i2
i3

descrio emprega uma nica expresso


observar: uso de parntesis AND e OR igual precedncia

1
2
3
4
5
6
7
8
9
10
11
12
13

ENTITY mux_0 IS
PORT (i0, i1, i2, i3
s0, s1
ot
END mux_0;

:
:
:

s0
s1

ot

4/1

s1 s0 ot
0
0
1
1

0
1
0
1

i0
i1
i2
i3

IN BIT; -- entradas
IN BIT; -- selecao
OUT BIT); -- saida

ARCHITECTURE nivel_logico OF mux_0 IS


BEGIN
ot <= (i0 AND NOT s1 AND NOT s0) OR
(i1 AND NOT s1 AND
s0) OR
(i2 AND
s1 AND NOT s0) OR
(i3 AND
s1 AND
s0);
END nivel_logico;

VHDL Descrio e Sntese de Circuitos Digitais

Roberto dAmore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br

Imagens curso rpido reviso 3.1

31

Exemplo: - nova descrio do circuito de seleo

i0
i1
i2

emprega 5 expresses
sinais internos: int0, int1, int2 e int3
observar concorrncia do cdigo:
- valor de ot,
determinado pelas expresses linhas 11, 12, 13 e 14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

ENTITY mux_00 IS
PORT (i0, i1, i2, i3
s0, s1
ot
END mux_00;

:
:
:

i3
s0
s1

ot

4/1

s1 s0 ot
0
0
1
1

0
1
0
1

i0
i1
i2
i3

IN BIT; -- entradas
IN BIT; -- selecao
OUT BIT); -- saida

ARCHITECTURE teste OF mux_00 IS


SIGNAL int0, int1, int2, int3 : BIT; -- sinais internos
BEGIN
ot
<= int0 OR int1 OR int2 OR int3;
int0 <= i0 AND NOT s1 AND NOT s0;
int1 <= i1 AND NOT s1 AND
s0;
int2 <= i2 AND
s1 AND NOT s0;
int3 <= i3 AND
s1 AND
s0;
END teste;

VHDL Descrio e Sntese de Circuitos Digitais

Roberto dAmore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br

Imagens curso rpido reviso 3.1

32

Construo WHEN ELSE


Transferncia condicional de um sinal
Contm: uma lista de condies e expresses
Primeira condio verdadeira: define expresso transferida
Formato da construo:
sinal_destino <= expressao_a WHEN condicao_1 ELSE
expressao_b WHEN condicao_2 ELSE
expressao_c;

VHDL Descrio e Sntese de Circuitos Digitais

-- condicao_1 = verdadeira
-- condicao_2 = verdadeira
-- nenhuma condicao verdadeira

Roberto dAmore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br

Imagens curso rpido reviso 3.1

33

Exemplo: - circuito de seleo - WHEN ELSE


i0
i1
i2

nvel de abstrao mais elevado

i3

descrio mais prxima do comportamento do circuito

s0
s1

ot

4/1

s1 s0 ot
0
0
1
1

0
1
0
1

i0
i1
i2
i3

opo de escolha:
linhas 10 e 11: operao AND entre s0 e s1
linha 12: s0 e s1 concatenados
1
2
3
4
5
6
7
8
9
10
11
12
13
14

ENTITY mux_1 IS
PORT (i0, i1, i2, i3
s0, s1
ot
END mux_1;

:
:
:

IN BIT;
IN BIT;
OUT BIT);

ARCHITECTURE teste OF mux_1 IS


SIGNAL s1_s0 : BIT_VECTOR(1 DOWNTO 0);
BEGIN
ot <= i0 WHEN s1= '0' AND s0='0' ELSE
i1 WHEN s1= '0' AND s0='1' ELSE
i2 WHEN s1_s0="10"
ELSE
i3;
END teste;

VHDL Descrio e Sntese de Circuitos Digitais

Roberto dAmore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br

Imagens curso rpido reviso 3.1

34

Construo WITH SELECT


Transferncia condicional de um sinal
Contm: uma lista de opes e expresses
Todas condies da expresso de escolha devem ser consideradas
- no existe uma prioridade como na construo WHEN ELSE
Opes pode ser agrupadas: - caracter | equivale a ou
- TO e DOWNTO delimitam faixas de opes
Opes restantes: palavra reservada OTHERS
Formato da construo:
WITH expressao_escolha SELECT
sinal_destino <= expressao_a
expressao_b
expressao_c
expressao_d
expressao_e

VHDL Descrio e Sntese de Circuitos Digitais

WHEN
WHEN
WHEN
WHEN
WHEN

-- expressao_escolha =
condicao_1,
-- condicao_1
condicao_2,
-- condicao_2
condicao_3 | condicao_4,
-- condicao_3 ou condicao_4
condicao_5 TO condicao_7, -- condicao_5 ate condicao_7
OTHERS;
-- condicoes restantes

Roberto dAmore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br

Imagens curso rpido reviso 3.1

35

Exemplo: circuito de seleo - WITH SELECT


i0
i1

nvel de abstrao mais elevado


descrio mais prxima do comportamento do circuito

i2
i3
s0
s1

ot

4/1

s1 s0 ot
0
0
1
1

0
1
0
1

i0
i1
i2
i3

expresso de escolha:
sinal sel = s1 e s0 concatenados
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

ENTITY mux_9 IS
PORT (i0, i1, i2, i3
s0, s1
ot
END mux_9;

: IN BIT;
: IN BIT;
: OUT BIT);

ARCHITECTURE teste OF mux_9 IS


SIGNAL sel : BIT_VECTOR (1 DOWNTO 0);
BEGIN
sel <= s1 & s0;
WITH sel SELECT
ot <= i0 WHEN "00",
i1 WHEN "01",
i2 WHEN "10",
i3 WHEN "11";
END teste;

VHDL Descrio e Sntese de Circuitos Digitais

Roberto dAmore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br

Imagens curso rpido reviso 3.1

36

Exerccio
Desenvolver uma descrio para um codificador de prioridade empregando a
construo WHEN ELSE
- trs entradas denominadas p3, p2 e p1
- p3 a de maior privilgio
- cdigo da entrada: sadas c1 e c2

p3
p2
p1

codificador
de
prioridade

c1
c0

p3
1
0
0
0

p2
1
0
0

p1
1
0

c1
1
1
0
0

c0
1
0
1
0

- no importa

Repita o exerccio anterior empregando a construo WITH SELECT

VHDL Descrio e Sntese de Circuitos Digitais

Roberto dAmore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br

Imagens curso rpido reviso 3.1

37

Comandos seqenciais bsicos


Processos
Lista de sensibilidade em processos
Construo IF ELSE
Construo CASE WHEN

VHDL Descrio e Sntese de Circuitos Digitais

Roberto dAmore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br

Imagens curso rpido reviso 3.1

38

Comandos seqenciais
Comandos seqenciais podem ocorrer em:
- processos
- subprogramas
Processo
- um comando concorrente
- delimita uma regio contendo cdigo seqencial
Uma descrio: composta de comandos concorrentes
- todas so executadas concorrentemente

execuo
das
declaraes

abc:PROCESS
BEGIN
declarao 1
declarao 2
.
.
.
declarao n
END PROCESS abc;

VHDL Descrio e Sntese de Circuitos Digitais

declarao;
xyz:PROCESS
declarao;
abc:PROCESS
declarao;

execuo conjunta

xyz:PROCESS
BEGIN
declarao 1
declarao 2
.
.
.
declarao n
END PROCESS xyz;

Roberto dAmore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br

execuo
das
declaraes

Imagens curso rpido reviso 3.1

39

Lista de sensibilidade em processos


Aps a palavra reservada PROCESS:
- possvel declarar a lista de sensibilidade
Lista de sensibilidade:
- define quais sinais causam a execuo do processo
Execuo do processo ocorre se:
- um sinal da lista tem valor alterado
Iniciada a execuo:
- comandos so avaliados na seqncia
- ao trmino da avaliao do ltimo comando:
- processo suspenso (aguarda uma nova alterao de valor - sinais da lista)
abc: PROCESS(sinal_a, sinal_b)
BEGIN
comando_1;
comando_2;
..
comando_n;
END PROCESS abc;
VHDL Descrio e Sntese de Circuitos Digitais

-- (lista de sensibilidade)

Roberto dAmore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br

Imagens curso rpido reviso 3.1

40

Construo seqencial IF ELSE

(similar: construo WHEN ELSE)

Execuo condicional de um ou mais comandos seqenciais


Teste:

definido por uma lista de condies

Primeira condio verdadeira:


Condio de teste:

define as comandos executados

qualquer expresso que retorne BOOLEAN

Incio da construo:

comandos IF

Clusulas ELSIF e ELSE:

opcionais

Formato da construo:
IF condicao_1 THEN
comando_sequencial;
comando_sequencial;
ELSIF condicao_2 THEN
comando_sequencial;
comando_sequencial;
ELSIF condicao_3 THEN
comando_sequencial;
ELSE
comando_sequencial;
END IF;

VHDL Descrio e Sntese de Circuitos Digitais

-- clausula ELSIF opcional

-- clausula ELSE opcional

Roberto dAmore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br

Imagens curso rpido reviso 3.1

41

Exemplo: - circuito de seleo - IF ELSE

i0
i1

Comando seqencial: necessrio definir um processo

i2

Lista de sensibilidade: sinais i0 i1 i2 i3 sel

s0

i3

s1

ot

4/1

s1 s0 ot
0
0
1
1

0
1
0
1

i0
i1
i2
i3

- remoo de um destes sinais: conseqncia?


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

ENTITY mux_4aa IS
PORT (i0, i1, i2, i3
s0, s1
ot
END mux_4aa;

:
:
:

IN BIT; -- entradas
IN BIT; -- selecao
OUT BIT); -- saida

ARCHITECTURE teste OF mux_4aa IS


SIGNAL sel : BIT_VECTOR (1 DOWNTO 0);
BEGIN
sel <= s1 & s0;
abc: PROCESS (i0, i1, i2, i3, sel)
BEGIN
IF
sel = "00" THEN ot <= i0;
ELSIF sel = "01" THEN ot <= i1;
ELSIF sel = "10" THEN ot <= i2;
ELSE
ot <= i3;
END IF;
END PROCESS abc;
END teste;

VHDL Descrio e Sntese de Circuitos Digitais

Roberto dAmore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br

Imagens curso rpido reviso 3.1

42

Construo CASE WHEN

(similar: construo WITH SELECT)

Execuo condicional de um ou mais comando seqenciais


A execuo dos comando: controlada pelo valor de uma expresso
Todas condies da expresso de escolha devem ser consideradas
- no existe prioridade (como na construo WHEN ELSE)
Opes podem ser agrupadas: - caracter | equivale a ou
- TO e DOWNTO delimitam faixas de opes
Opes restantes: palavra reservada OTHERS
Formato da construo:
CASE expressao_escolha IS
WHEN condicao_1
WHEN condicao_2
WHEN condicao_3 | condicao_4
WHEN condicao_5 TO condicao_9
WHEN OTHERS
END CASE;

VHDL Descrio e Sntese de Circuitos Digitais

=>
=>
=>
=>
=>

-- expressao_escolha =
comando_a;
-- condicao_1
comando_b; comando_c;
-- condicao_2
comando_d;
-- condicao_3 ou condicao_4
comando_d;
-- condicao_5 ate condicao_9
comando_e; comando_f;
-- condicoes restantes

Roberto dAmore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br

Imagens curso rpido reviso 3.1

43

Exemplo : - circuito de seleo - CASE WHEN

i0
i1

Comando seqencial: necessrio definir um processo

i2

Nota: s1 e s2 agrupados no sinal sel

s0

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

ENTITY mux_3aa IS
PORT (i0, i1, i2, i3
s1, s0
ot
END mux_3aa;

:
:
:

i3

s1

ot

4/1

s1 s0 ot
0
0
1
1

0
1
0
1

i0
i1
i2
i3

IN BIT;
IN BIT;
OUT BIT);

ARCHITECTURE teste OF mux_3aa IS


SIGNAL sel : BIT_VECTOR (1 DOWNTO 0);
BEGIN
sel <= s1 & s0;
abc: PROCESS (i0, i1, i2, i3, sel)
BEGIN
CASE sel IS
WHEN "00"
=> ot <= i0;
WHEN "01"
=> ot <= i1;
WHEN "10"
=> ot <= i2;
WHEN OTHERS => ot <= i3;
END CASE;
END PROCESS abc;
END teste;

VHDL Descrio e Sntese de Circuitos Digitais

Roberto dAmore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br

Imagens curso rpido reviso 3.1

44

Estratgias de descrio de circuitos sncronos


Registrador sensvel a nvel
Registrador sensvel a borda - inicializao sncrona
Registrador sensvel a borda - inicializao assncrona
Mquinas de estado finito

VHDL Descrio e Sntese de Circuitos Digitais

Roberto dAmore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br

Imagens curso rpido reviso 3.1

45

Inferncia de um elemento de memria em VHDL


Inferncia de um elemento de memria:
- um valor atribudo a um sinal - varivel em pelo menos uma condio e
nenhum valor atribudo a este objeto em pelo menos uma condio

VHDL Descrio e Sntese de Circuitos Digitais

Roberto dAmore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br

Imagens curso rpido reviso 3.1

46

Registrador sensvel a nvel


Exemplo:
d

enb

d
enb

Formato geral: empregando processo


- sinal d: deve estar na lista de sensibilidade
PROCESS (ena, d)
BEGIN
IF (ena = 1) THEN
END IF ;
END PROCESS;

VHDL Descrio e Sntese de Circuitos Digitais

d <= q ;

Roberto dAmore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br

Imagens curso rpido reviso 3.1

47

Registrador sensvel a nvel


Exemplo: reset e set assncronos (devem ser includos na lista de sensibilidade)
Qual o comportamento da descrio se rst ou set forem removidos?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

ENTITY latch3_1 IS
PORT (en
: IN
rst : IN
set : IN
d
: IN
q
: OUT
END latch3_1;

BIT;
-- habilita
BIT;
-- rst=1 leva q=000
BIT;
-- set=1 leva q=111
BIT_VECTOR(2 DOWNTO 0);
BIT_VECTOR(2 DOWNTO 0));

ARCHITECTURE teste OF latch3_1 IS


BEGIN
PROCESS (en, d, rst, set)
BEGIN
IF
(rst ='1') THEN q <="000";
ELSIF (set ='1') THEN q <="111";
ELSIF (en ='1') THEN q <=d;
END IF;
END PROCESS;
END teste;

VHDL Descrio e Sntese de Circuitos Digitais

-- q=000 independente de en
-- q=111 independente de en
-- condicao do sinal para habilitar

Roberto dAmore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br

Imagens curso rpido reviso 3.1

48

Registrador sensvel a nvel


Resultado da sntese (nvel RTL):

VHDL Descrio e Sntese de Circuitos Digitais

Roberto dAmore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br

Imagens curso rpido reviso 3.1

49

Atributos
Informaes adicionais
- associadas: tipos objetos e unidades de projeto
- um objeto:

(num dado instante de tempo)

- pode conter um nico valor


- pode possuir vrios atributos
Atributo pode ser referenciado na forma: prefixonome_atributo
- prefixo: corresponde ao item (por exemplo um sinal)
- nome_atributo : atributo desejado do item
- : separa o prefixo e o nome_atributo

VHDL Descrio e Sntese de Circuitos Digitais

Roberto dAmore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br

Imagens curso rpido reviso 3.1

50

Atributos - exemplos
sSTABLE - verdadeiro: no ocorreu uma troca de valor
- falso caso contrario
sEVENT - verdadeiro: ocorreu uma troca de valor
- falso: caso contrario
a
b
event

stable

event

stable

s <= a AND b
200

400

stable
600

800

1000

1200

1400

1600

1800

t ns

Atributos - aplicao
- verificao de bordas de subida ou descida em sinais
(ck'EVENT AND ck ='1')
(ck'EVENT AND ck ='0')
(NOT ck'STABLE AND ck ='1')
(NOT ck'STABLE AND ck ='0')
VHDL Descrio e Sntese de Circuitos Digitais

-----

borda
borda
borda
borda

de
de
de
de

subida
descida
subida
descida

Roberto dAmore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br

Imagens curso rpido reviso 3.1

51

Registrador sensvel a borda - inicializao assncrona - (exemplo)


ck
d

set

set
q
rst

ck
rst

d
q

Formato geral: empregando processo


- sinais ck rst e set necessitam estar na lista de sensibilidade
PROCESS (ck, rst, set)
BEGIN
IF
(rst = '1')
ELSIF
(set = '1')

THEN q <= 0; -- eventos assincronos


THEN q <= 1; -.
-.
-.
ELSIF (ck'EVENT AND ck ='1') THEN q <=d;
-- detecta borda de subida do relogio
END IF;
END PROCESS;

VHDL Descrio e Sntese de Circuitos Digitais

Roberto dAmore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br

Imagens curso rpido reviso 3.1

52

Registrador sensvel a borda - inicializao assncrona


Exemplo:
- 3 bits
- reset e set assncronos ( necessrio incluso na lista de sensibilidade)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

ENTITY flip3_3 IS
PORT (ck
: IN
rst : IN
set : IN
d
: IN
q
: OUT
END flip3_3;

BIT;
-- relogio
BIT;
-- rst=1 leva q=000 assincrono
BIT;
-- set=1 leva q=111 assincrono
BIT_VECTOR(2 DOWNTO 0);
BIT_VECTOR(2 DOWNTO 0));

ARCHITECTURE teste OF flip3_3 IS


BEGIN
PROCESS (ck, rst, set)
BEGIN
IF
(rst = '1')
THEN q <="000"; -- q=000 independente de ck
ELSIF
(set = '1')
THEN q <="111"; -- q=111 independente de ck
ELSIF (ck'EVENT AND ck ='1') THEN q <=d;
-- condicao do sinal relogio
END IF;
END PROCESS;
END teste;

VHDL Descrio e Sntese de Circuitos Digitais

Roberto dAmore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br

Imagens curso rpido reviso 3.1

53

Registrador sensvel a borda - inicializao assncrona


Resultado da sntese (nvel RTL):

VHDL Descrio e Sntese de Circuitos Digitais

Roberto dAmore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br

Imagens curso rpido reviso 3.1

54

Mquinas de estado finito


Construo do tipo IF ELSE detecta:
- inicializao rst =1
- ocorrncia de uma borda de subida no sinal de relgio
Construo CASE WHEN:
- definio das transies de estado
- fora a especificao de todos os estados
PROCESS (ck, rst)
BEGIN
IF rst = '1' THEN
estado <= estado_inicial;
ELSIF (ck'EVENT and ck ='1') THEN
CASE estado IS
WHEN estado_inicial => estado <= estado_1;
WHEN estado_1
=> estado <= estado_2;
WHEN estado_x
END CASE;
END IF;
END PROCESS;
VHDL Descrio e Sntese de Circuitos Digitais

-- estado inicial
-- __/-- proximo estado
-- ciclo de estados
-- .
-- .
-- .

=> estado <= estado_final;

Roberto dAmore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br

Imagens curso rpido reviso 3.1

55

Mquinas de estado finito - exemplo


Contador
Sada dos registradores corresponde ao valor de sada
- cdigo do estado = valor de sada
- no necessrio decodificar

rst=1

estado
atual
00

01

estado
futuro
lgica
combinacional

registradores

relgio
10

sada

reset

11
rst

VHDL Descrio e Sntese de Circuitos Digitais

Roberto dAmore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br

Imagens curso rpido reviso 3.1

56

Mquinas de estado finito - descrio

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

ENTITY maq_est1 IS
PORT (ck
: IN
BIT;
-- relogio borda subida
rst
: IN
BIT;
-- rst=1, q=00
q
: BUFFER BIT_VECTOR (1 DOWNTO 0)); -- saida codigo Gray
END maq_est1;
ARCHITECTURE teste OF maq_est1 IS
BEGIN
abc: PROCESS (ck, rst)
BEGIN
IF rst = '1' THEN
q <= "00";
ELSIF (ck'EVENT and ck ='1') THEN
CASE q IS
WHEN "00" => q <= "01";
WHEN "01" => q <= "11";
WHEN "11" => q <= "10";
WHEN "10" => q <= "00";
END CASE;
END IF;
END PROCESS abc;
END teste;

VHDL Descrio e Sntese de Circuitos Digitais

-- estado inicial
-- ciclo de estados

Roberto dAmore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br

Imagens curso rpido reviso 3.1

57

Mquinas de estado finito - descrio


Resultado da sntese (nvel RTL):

VHDL Descrio e Sntese de Circuitos Digitais

Roberto dAmore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br

Imagens curso rpido reviso 3.1

58

Exerccio
Implementar uma mquina de estados
- contador crescente decrescente cdigo GRAY
- entrada sobe define sentido crescente / decrescente
0/00

3/10

1/01

2/11

estado
atual
sobe
relgio

sobe=0

sobe=1

lgica
combinacional

estado
futuro
reg.
R

lgica
combinacional

sada

rst

Simule e verifique a descrio

VHDL Descrio e Sntese de Circuitos Digitais

Roberto dAmore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br

Imagens curso rpido reviso 3.1

59

Fim

VHDL Descrio e Sntese de Circuitos Digitais

Roberto dAmore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br

Imagens curso rpido reviso 3.1

60

Codificador de prioridade: possveis solues


- soluo empregando a construo concorrente: WHEN ELSE
1
2
3
4
5
6
7
8
9
10
11
12

ENTITY pr_cod1 IS
PORT (p
: IN BIT_VECTOR(3 DOWNTO 1);
c
: OUT BIT_VECTOR(1 DOWNTO 0));
END pr_cod1;
ARCHITECTURE teste OF pr_cod1 IS
BEGIN
-- p3 p1 p0
c <= "11" WHEN p(3)='1' ELSE -- 1 - "10" WHEN p(2)='1' ELSE -- 0 1 "01" WHEN p(1)='1' ELSE -- 0 0 1
"00";
-- 0 0 0
END teste;

VHDL Descrio e Sntese de Circuitos Digitais

c1 c0
1 1
1 0
0 1
0 0

Roberto dAmore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br

Imagens curso rpido reviso 3.1

61

Codificador de prioridade: possveis solues


- soluo empregando a construo concorrente: WITH SELECT
1
2
3
4
5
6
7
8
9
10
11
12
13

ENTITY pr_cod2 IS
PORT (p
: IN BIT_VECTOR(3 DOWNTO 1);
c
: OUT BIT_VECTOR(1 DOWNTO 0));
END pr_cod2;
ARCHITECTURE teste OF pr_cod2 IS
BEGIN
WITH p SELECT
c <= "11" WHEN "111"|"110"|"101"|"100",
"10" WHEN "011"|"010",
"01" WHEN "001",
"00" WHEN "000";
END teste;

VHDL Descrio e Sntese de Circuitos Digitais

-- p3 p1 p0
-- 1 - -- 0 1 -- 0 0 1
-- 0 0 0

c1 c0
1 1
1 0
0 1
0 0

Roberto dAmore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br

Imagens curso rpido reviso 3.1

62

Mquina de estado: possvel soluo


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42

ENTITY maq_est2 IS
PORT (ck
:
sobe
:
rst
:
q
:
END maq_est2;

IN
IN
IN
OUT

BIT;
BIT;
BIT;
BIT_VECTOR (1 DOWNTO 0));

-----

relogio borda subida


sobe=1, q=00,01,11,10,00...
rst=1, q=00
saida codigo Gray

ARCHITECTURE teste OF maq_est2 IS


SIGNAL estado : INTEGER RANGE 3 DOWNTO 0;
BEGIN
abc: PROCESS (ck, rst)
BEGIN
IF rst = '1' THEN
-- estado inicial
estado <= 0;
ELSIF (ck'EVENT and ck ='1') THEN
-- ciclo de estados
CASE estado IS
WHEN 0 =>
-- s0
IF sobe = '1' THEN estado <= 1; -- s1
ELSE
estado <= 3; -- s3
END IF;
WHEN 1 =>
-- s1
IF sobe = '1' THEN estado <= 2; -- s2
ELSE
estado <= 0; -- s0
END IF;
WHEN 2 =>
-- s2
IF sobe = '1' THEN estado <= 3; -- s3
ELSE
estado <= 1; -- s1
END IF;
WHEN 3 =>
-- s3
IF sobe = '1' THEN estado <= 0; -- s0
ELSE
estado <= 2; -- s2
END IF;
END CASE;
END IF;
END PROCESS abc;
WITH estado
q <= "00"
"01"
"11"
"10"
END teste;

SELECT
WHEN 0,
WHEN 1,
WHEN 2,
WHEN 3;

VHDL Descrio e Sntese de Circuitos Digitais

Roberto dAmore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br

Imagens curso rpido reviso 3.1

63

Você também pode gostar