Você está na página 1de 14

08/08/2017

Andr Macrio Barros, MSc

 O que a VHDL
 partes bsicas de um cdigo VHDL (ENTITY,
ARCHITECTURE)
 tipo std_logic
 Identificadores, regras lxicas
 biblioteca ieee, pacote std_logic.1164
 comentrios, operadores bsicos para o pacote
std_logic.1164
 conceito de paralelismo da VHDL
 uso de sinais em VHDL
 4 exemplos, 5 exerccios

 VHSIC (Very High Speed Integrated Circuit)


 programa do DoD (Department of Defense) dos EUA
que, na dcada de 80, promoveu avanos na rea de
circuitos integrados. Uma de suas criaes foi a VHDL.

1
08/08/2017

 VHDL (VHSIC Hardware Description Language) uma


linguagem que permite:
 a descrio da estrutura de um sistema digital (como pode ser
decomposto em subsistemas e como estes podem ser
interconectados)
 especificar o que um sistema faz atravs de uma forma
parecida com a que usada nas linguagens de programao
 que um projeto seja simulado antes de ser implementado em
um dispositivo
 que detalhes de subsistemas possam ser abstrados,
assegurando ao projetista focar-se em aspectos mais
estratgicos do sistema como um todo

VHDL

 Um cdigo VHDL composto por trs sees (partes)


bsicas:
 bibliotecas;
 ENTITY; e
 ARCHITECTURE

2
08/08/2017

 A ENTITY a seo do cdigo VHDL destinada a


descrever quais so os pinos de entrada, de sada ou de
ambas que o sistema digital ter
 A ARCHITECTURE a seo do cdigo VHDL que
descreve como que o sistema digital dever se
comportar ao processar as portas da ENTITY
 E a seo das bibliotecas a parte do cdigo VHDL
destinada a incluir bibliotecas VHDL para proverem
suporte aos tipos de dados e s funes a serem
utilizadas nas sees da ENTITY e da ARCHITECTURE

 Desenvolva o cdigo VHDL para o circuito digital da


Figura 2

Figura 2 Porta AND de trs entradas.

 Soluo:

01-library ieee;
02-use ieee.std_logic_1164.all; bibliotecas

03-entity porta_and is
04-port(a, b, c: in std_logic;
05- x: out std_logic); ENTITY
06-end porta_and;

07-architecture arq of porta_and is


08-begin --comentrio qualquer
09- x <= a and b and c; ARCHITECTURE
10-end arq;

3
08/08/2017

 Descrio:
01-library ieee;
02-use ieee.std_logic_1164.all;

 A biblioteca ieee e seu pacote std_logic so


necessrias sempre que forem usadas portas ou sinais
que recebam ou forneam zeros ou uns lgicos, que o
caso das portas a, b, c e x. Entretanto, uma vez
declaradas como std_logic, as entradas e sadas
podero assumir outros valores (Z, X, etc) como sero
vistos ao longo desta disciplina.

 Descrio:
03-entity porta_and is
04-port(a, b, c: in std_logic;
05- x: out std_logic);
06-end porta_and;

 Linhas 3 e 6: entity ... is ... end ...; so


palavras-chave, necessrias declarao de uma
ENTITY

 Descrio:
03-entity porta_and is
04-port(a, b, c: in std_logic;
05- x: out std_logic);
06-end porta_and;

 Linha 3: porta_and um identificador tambm


necessrio e aleatoriamente escolhido com este nome.
Identificadores podem ter at 26 nmeros ou letras e
ainda o caracter _. Identificadores precisam comear
com uma letra.

4
08/08/2017

 Descrio:
03-entity porta_and is
04-port(a, b, c: in std_logic;
05- x: out std_logic);
06-end porta_and;

 Linhas 4 e 5: port(...); o escopo dentro do qual


so definidas as entradas e sadas do sistema digital a
ser descrito.

 Descrio:
03-entity porta_and is
04-port(a, b, c: in std_logic;
05- x: out std_logic);
06-end porta_and;

 Linhas 4 e 5: a, b e c so portas (pinos) do tipo


std_logic de entrada (in) e x do mesmo tipo,
porm de sada (out).

 Descrio:
03-entity porta_and is
04-port(a, b, c: in std_logic;
05- x: out std_logic);
06-end porta_and;

 Linhas 4 e 5: std_logic so pinos capazes de receber


e fornecer 0s, 1s, alm de outros estados lgicos.

5
08/08/2017

 Descrio:

07-architecture arq of porta_and is


08-begin --comentrio qualquer
09- x <= a and b and c;
10-end arq;

 Linhas 7 e 10: architecture ... of ... is ...


begin ... end ...; so as palavras-chave necessrias
ao escopo dentro do qual o comportamento do circuito
descrito, isto , o que o circuito deve fazer.

 Descrio:

07-architecture arq of porta_and is


08-begin --comentrio qualquer
09- x <= a and b and c;
10-end arq;

 Linha 7: arq um identificador aleatrio e


porta_and precisa obrigatoriamente ser o nome do
identificador que foi usado na declarao da ENTITY.

 Descrio:

07-architecture arq of porta_and is


08-begin --comentrio qualquer
09- x <= a and b and c;
10-end arq;

 Linha 8: -- a sequncia de caracteres que determina


que a partir daquele ponto, naquela linha, inicia-se um
comentrio dentro do cdigo que o projetista necessita
escrever.

6
08/08/2017

 Descrio:

07-architecture arq of porta_and is


08-begin --comentrio qualquer
09- x <= a and b and c;
10-end arq;

 Linha 9: x <= a and b and c; uma declarao (e


no atribuio!) que faz as entradas a, b e c efetuarem
entre si um and lgico e seu resultado ser direcionado
sada x. Declaraes sempre terminam com um ;

 Descrio:

07-architecture arq of porta_and is


08-begin --comentrio qualquer
09- x <= a and b and c;
10-end arq;

 Linha 9: a operao and apresentada pode ser usada em


sinais que pertenam ao pacote std_logic_1164. Esta e
outras operaes j esto pr-definidas em VHDL, como
or, xor e not.

 Descrio:

07-architecture arq of porta_and is


08-begin --comentrio qualquer
09- x <= a and b and c;
10-end arq;

 Linha 10: arq usado nesta linha segue o nome do


identificador que foi escolhido previamente na linha 7.

7
08/08/2017

 Descrio:

 Linhas 1 a 10: VHDL no case-sensitive, logo podem


ser usadas maisculas, minsculas, assim como as
mesmas podem ser misturadas. Exemplos:
 ENTITY porta_and entity PORTA_AND
 Entity Porta_And entity porta_end

 Descrio:

 Linhas 1 a 10: entre os identificadores e palavras-chaves


(no em seu interior), um espao igual a n espaos,
tambm no importando para o processo de sntese (a
ser explicado futuramente).
 Exemplo:
 entity porta_and
 o mesmo que
 entity porta_and

 Desenvolver o cdigo VHDL para o circuito digital da


Figura 3

Figura 3 Circuito combinacional bsico.

8
08/08/2017

 Soluo:

01-library ieee;
02-use ieee.std_logic_1164.all;

03-entity ccto_basico is Mesmas entradas


04-port(a, b, c: in std_logic; e mesmas sadas.
Porm, a linha 9
05- x: out std_logic);
deve receber uma
06-end ccto_basico; extensa funo
lgica
07-architecture arq of ccto_basico is
08-begin
09- --colocar aqui a funo lgica
10-end arq;

not(not(a) or not(b))
not(a) or not(b)

not(a)

not(b)

not(not(a) or not(b)) and b and c

x <= not(not(a) or not(b)) and b and c;

 Soluo:

01-library ieee;
02-use ieee.std_logic_1164.all;

03-entity ccto_basico is
04-port(a, b, c: in std_logic;
05- x: out std_logic);
06-end ccto_basico;

07-architecture arq of ccto_basico is


08-begin
09- x <= not(not(a) or not(b)) and b and c;
10-end arq;

9
08/08/2017

 Reescrever o cdigo VHDL do Exemplo 2 utilizando


sinais
 Soluo:
 A funo lgica escrita no Exemplo 2 extensa e pode
causar confuso
 Ser apresentada uma soluo alternativa, utilizando
sinais para a interconexo das sadas internas do sistema
digital.
 Os sinais s0 ao s3 da figura a seguir podem aqui ser
entendidos como fios utilizados para interligar dois
pontos
 Acompanhe...

s3
s2

s0

s1

S0 <= not(a);
S1 <= not(b); x <= s3 and b and c;
S2 <= s0 or s1;
S3 <= not(s2);

s0 s2
s3

 Soluo: s1

01-library ieee;
02-use ieee.std_logic_1164.all;

03-entity ccto_basico is
04-port(a, b, c: in std_logic;
05- x: out std_logic);
06-end ccto_basico;

07-architecture arq of ccto_basico is


08-signal s0, s1, s2, s3: std_logic;
09-begin
09- s0 <= not(a); s1 <= not(b); s2 <= s0 or s1;
10- s3 <= not(s2); x <= s3 and b and c;
11-end arq;

10
08/08/2017

 A linha 09 pode ser trocada com a linha 10, pois VHDL


uma linguagem concorrente, uma linguagem de
construo de hardware.
 VHDL no uma linguagem de programao, onde as
instrues ocorrem de forma sequencial, uma aps a outra
(a no ser que seja explicitamente designado atravs da
declarao PROCESS).
 Portanto, as declaraes das linhas 09 e 10 esto
acontecendo ao mesmo tempo no circuito.
09- s0 <= not(a); s1 <= not(b); s2 <= s0 or s1;
10- s3 <= not(s2); x <= s3 and b and c;

10- s3 <= not(s2); x <= s3 and b and c;
09- s0 <= not(a); s1 <= not(b); s2 <= s0 or s1;

 IMPORTANTE: exceto not, as operaes and, or,


nand, nor, xor e xnor tm a mesma precedncia
 Portanto, cuidado ao descrever funes lgicas da
eletrnica digital, por exemplo y = ab + cd, . Em VHDL
deve-se usar parnteses, caso se queira que a funo se
comporte da mesma forma que na eletrnica digital:
 y <= (a and b) or (c and d);
 ao invs de
 y <= a and b or c and d;

 Desenvolver um cdigo VHDL para um circuito


comparador de 1 bit.
 Soluo: inicialmente, vamos imaginar o circuito em
termos de entradas (a e b) e sadas (y). Veja a Figura 4:

a
comparador y
1 bit
b

11
08/08/2017

 De posse do formato do circuito, estabeleamos a


tabela-verdade que um comparador deve cumprir:

a comparador
y
b 1 bit

a b y
0 0 1
0 1 0
1 0 0
1 1 1

 A funo lgica que satisfaz tabela-verdade pode ser


obtida diretamente dos mintermos, no sendo
necessrio Karnaugh:
 y = ab + ab

a b y
0 0 1
0 1 0
1 0 0
1 1 1

 Soluo (y = ab + ab):

01-library ieee;
02-use ieee.std_logic_1164.all;

03-entity comparador is
04-port(a, b: in std_logic;
05- y: out std_logic);
06-end comparador;

07-architecture arq_comp of comparador is


08-begin
09- y <= (not(a) and not(b)) or (a and b);
10-end arq_comp;

12
08/08/2017

 Desenvolva um cdigo em VHDL para o circuito


proposto no Exemplo 4. Porm utilize sinais.

 O circuito do Exemplo 4 pode ser escrito atravs de


uma funo lgica menos extensa e que no tem
relao com o uso de sinais. Encontre esta funo.
 Dica: um conceito que vem das propriedades bsicas
das funes lgicas (conceitual Eletrnica Digital).

 Desenvolva o circuito digital e o cdigo VHDL


correspondente para um circuito GT (greater than) de
dois bits. Utilizar funes lgicas mnimas. Atentar
para a ordenao MSB e LSB.

13
08/08/2017

 Desenvolva o circuito digital e o cdigo VHDL


correspondente para um circuito que faa a converso
binrio gray de trs bits. Utilizar funes lgicas
mnimas. Atentar para a ordenao MSB e LSB.

 Desenvolva o circuito digital e o cdigo VHDL


correspondente para um circuito multiplexador 4 1.
Utilizar funes lgicas mnimas. Atentar para a
ordenao MSB e LSB.
 Dica 4 1 significa 4 entradas de dados para uma
sada. Para que isso acontea, duas entradas de
endereamento precisam governar qual entrada dever
ser destinada sada.

 CHU, Pong P. FPGA Prototyping by VHDL


examples. New Jersey (NJ): John Wiley & Sons, 2008.
H 8 exemplares disponveis na biblioteca. Nmero de
chamada: 621.395 C559f
 PEDRONI, Volnei. Feletrnica Digital Moderna e
VHDL. Rio de Janeiro: Elsevier, 2010. H 12 exemplares
disponveis na biblioteca. Nmero de chamada:
621.395 C559f

14