Você está na página 1de 147

Apontamentos Tericos da Disciplina de

SISTEMAS DIGITAIS 1

Licenciatura em Engenharia de Sistemas e Informtica


2 Ano -- 2 Semestre

Antnio Joaquim Esteves


Joo Miguel Fernandes

Departamento de Informtica
ESCOLA DE ENGENHARIA

UNIVERSIDADE DO MINHO

Maro 2006

NDICE
1. Introduo3
2. lgebra Booleana.9
3. Conceitos sobre Sistemas Combinacionais...21
4. VHDL.....42
5. Aplicao de Sistemas Combinacionais.64
6. Conceitos sobre Sistemas Sequenciais..89
7. Aplicao de Sistemas Sequenciais...116
8. Dispositivos Programveis e Memrias127
9. Bibliografia.....147

1. Introduo
1.1.

Sistemas digitais vs. analgicos

Um sistema um conjunto de partes relacionadas que funcionam como um todo


para atingir um determinado objectivo. Um sistema possui entradas e sadas e
apresenta um comportamento definido custa de funes que convertem as
entradas em sadas. Um sistema analgico processa sinais que variam ao longo
do tempo e que podem assumir qualquer valor dum intervalo contnuo de tenso,
corrente, presso, O mesmo se aplica ao sistema digital: a diferena est em
ns desejarmos que isso no acontea.

+5

+5

1
V

Time

1
Time

A vantagem mais importante dos sistemas digitais a sua capacidade para


operarem com sinais elctricos que tenham sido degradados. Pelo facto de as
sadas serem discretas, uma ligeira variao numa entrada continua a ser
interpretada correctamente. Nos circuitos analgicos, um ligeiro erro na entrada
provoca um erro na sada. O sistema binrio a forma mais simples de sistema
digital. Um sinal binrio modelado de forma a que ele apenas assuma dois valores
discretos: 0 ou 1, Baixo/LOW ou Alto/HIGH, Falso ou Verdadeiro.

1.2.

Abstraco digital

Os circuitos digitais operam sobre tenses e correntes analgicas. A abstraco


digital consiste em ignorar comportamento analgico na maior parte das situaes,
permitindo deste modo que os circuitos sejam modelados como se eles
processassem apenas 0s e 1s.
Associao entre um intervalo de valores analgicos e cada um dos valores lgicos
(0 e 1). diferena entre os limites desses intervalos chama-se margem de rudo.

1.3.

Sistemas sncronos vs. assncronos

Um sistema sncrono aquele em que os elementos mudam o seu valor em


determinados instantes especficos. Um sistema assncrono possui sadas que
podem mudar de valor em qualquer instante. Por exemplo, considere-se um relgio
digital com alarme, programado para tocar s 13:59. Num sistema sncrono, as
sadas (HH, mm, ) mudam todas ao mesmo tempo: 12:59 13:00 13:01 ...
Num sistema assncrono, as sadas no tm forosamente que mudar em
simultneo: 12:59 13:59 13:00 ...
1.4.

Portas lgicas (gates)

As portas lgicas so o dispositivo digital mais elementar. Uma porta lgica possui
uma ou mais entradas e gera uma sada que uma funo dos valores actuais das
entradas. Uma porta lgica um circuito combinacional porque as sadas
dependem exclusivamente da combinao actual das entradas.

1.5.

Flip-flops

Um flip-flop um dispositivo que guarda um 0 ou um 1 na sada. O estado do flipflop o valor que ele guarda no presente instante. O valor guardado s pode ser
alterado em determinados instantes, impostos por uma entrada de relgio (clock).
Um circuito digital que inclui flip-flops um circuito sequencial. A sada dum
circuito sequencial depende, em qualquer instante, alm do valor actual das
entradas, da sequncia de valores que no passado foi aplicada nas entradas. Um
circuito sequencial possui memria dos eventos passados.
1.6.

Ferramentas de CAD

O projecto de sistemas digitais no tem que recorrer obrigatoriamente a ferramentas


de software. Contudo, as ferramentas de software so essenciais ao projecto de
sistemas digitais. A utilizao de HDLs (Hardware Description Languages), e das
correspondentes ferramentas de simulao e sntese, est generalizada. Num
ambiente CAD (Computer-Aided Design), as ferramentas melhoram a produtividade,
ajudam a corrigir erros e a antever o comportamento. Algumas das tarefas que
podem ser realizadas com a ajuda das ferramentas CAD so:
Edio de esquemticos;
Compilao, simulao e sntese com HDLs;
Anlise da evoluo dos sistemas ao longo do tempo;
Simulao;
Gerao de vectores de teste.
1.7.

Circuitos integrados

Um circuito integrado (CI) uma coleco de portas lgicas produzidas num nico
chip. Os CIs podem ser classificados, de acordo com o seu tamanho, em:
SSI (small scale integration): de 1 a 20 portas lgicas - ANDs, Ors e NOTs;
MSI (medium scale integration): 20 a 200 portas lgicas - descodificadores,
registos e contadores;
LSI (large scale integration): 200 a 200.000 portas lgicas - memrias de
capacidade reduzida e PLDs simples;
VLSI (very large scale integration): mais de 1 milho de transstores microprocessadores, memrias e PLDs complexas.
Como exemplo, pode dizer-se que o Pentium4 tem 42 milhes de transstores.
A figura seguinte mostra um exemplo de encapsulamento do tipo DIP (Dual In-line
Pin package).

O diagrama de pinos da figura seguinte mostra a correspondncia entre os sinais do


dispositivo e os pinos do encapsulamento. Actualmente, os CIs do tipo SSI so
usados como cola para formar componentes maiores em sistemas complexos. Os
CIs do tipo SSI tm vindo a ser substitudos de forma generalizada por dispositivos
de lgica programvel (PLDs).

1.8.

PLDs

Alguns CIs permitem que a sua funcionalidade lgica seja programada no prprio
chip aps terem sido fabricados. A maior parte destes CIs pode mesmo ser
reprogramada, o que permite que alguns erros sejam corrigidos sem ter que o
substituir ou retirar. As PLDs: possuem uma estrutura a dois-nveis, com portas
AND e OR, e ligaes programveis pelo utilizador. As CPLDs (PLDs complexas) e
as FPGAs (Field Programmable Gate Arrays) foram idealizadas com o intuito de
implementarem sistemas de maior dimenso. A utilizao de HDLs e das
respectivas ferramentas permite que um projecto seja compilado, sintetizado e
descarregado para o dispositivo em menos tempo.
1.9.

Nveis de abstraco no projecto de sistemas digitais

O projecto de sistemas digitais pode decorrer em vrios nveis de representao e


de abstraco. Embora se possa ganhar experincia a projectar em determinado
nvel, por vezes preciso mudar (subir e descer) de nvel para concluir com
sucesso certos projectos. O nvel mais baixo o da fsica do dispositivo e dos
processos de fabrico do CI. Este nvel no leccionado em SD1. O nvel seguinte
o do transstor. Este nvel tambm no leccionado em SD1.

Para explicar o nvel do transstor e os nveis seguintes, vamos usar um


multiplexador com 2 bits de entrada (A e B), 1 bit de controlo (S) e 1 bit de sada (Z).

Para optimizar certas funes (ou mdulos funcionais) necessrio project-las no


nvel do transstor. O multiplexador pode ser projectado em tecnologia CMOS,
usando blocos estruturais base de transstores. Utilizando esta abordagem, o
multiplexador pode ser construdo com 6 transstores apenas.

Segundo a forma tradicional de projectar um sistema, utiliza-se uma tabela de


verdade para descrever a funcionalidade do multiplexador. Uma tabela de verdade
contm todas as possveis combinaes dos valores de entradas e dos
correspondentes valores das sadas. A partir da tabela de verdade, pode obter-se
uma expresso minimizada para a sada do multiplexador: Z = S.A + S.B
Esta expresso pode ser convertida num diagrama no nvel da porta lgica.

Para as funes mais frequentes, a maioria das tecnologias digitais dispe de


blocos elementares predefinidos. O 74x157 da figura seguinte um CI do tipo MSI
que faz a multiplexagem de 2 entradas de 4-bits. A figura mostra o diagrama do CI
74x157, no nvel do bloco. Os nmeros em azul identificam os pinos num
encapsulamento DIP de 16-pinos que contm o dispositivo.

Tambm se pode usar HDLs, como o VHDL, para descrever a funcionalidade do


multiplexador no nvel algortmico (ver figura seguinte). A declarao entity
especifica quais as entradas e sadas do circuito. A declarao architecture define
o comportamento do multiplexador. Uma ferramenta de sntese pode processar esta
descrio algortmica e gerar um circuito numa determinada tecnologia.

2. lgebra de Boole
O sucesso da tecnologia dos computadores baseia-se em 1 lugar na simplicidade
com que se projectam circuitos digitais e na facilidade da sua produo. Os circuitos
digitais so constitudos por unidades de processamento elementares, designadas
por portas lgicas, e unidades de memria elementares, designadas por flip-flops.
A simplicidade do projecto de circuitos digitais deve-se ao facto de as entradas e as
sadas de cada porta lgica ou flip-flop assumir apenas 2 valores: 0 e 1. As
alteraes no valor dos sinais so determinadas pelas leis da lgebra de Boole.
A lgebra de Boole permite optimizar funes. No projecto de circuitos digitais
pode usar-se tcnicas de optimizao de outras reas.
2.1.

Sinais binrios

A lgica digital esconde a realidade analgica, ao mapear uma gama infinita de


valores reais em apenas 2 valores: 0 e 1. A um valor lgico, 0 ou 1, comum
chamar-se um dgito binrio (bit). Com n bits, pode representar-se 2n entidades
distintas. Quando um projectista lida com circuitos electrnicos, comum usar os
termos BAIXO e ALTO, em vez de 0 e 1. Considerar que 0 BAIXO e 1
ALTO, corresponde a usar lgica positiva. A correspondncia oposta a esta
designada de lgica negativa.

2.2.

Sistemas combinacionais vs. sequenciais

Um sistema lgico combinacional aquele em que as sadas dependem apenas


do valor actual das entradas. Um sistema combinacional pode ser descrito por uma
tabela de verdade.
Alm do valor actual das entradas, as sadas dum circuito lgico sequencial
dependem tambm da sequncia de valores por que passaram as entradas
memria. Um sistema sequencial pode ser descrito atravs duma tabela de
estados.
Um sistema combinacional pode conter qualquer nmero de portas lgicas mas no
ciclos de realimentao (feedback loops). Um ciclo de realimentao um caminho
dum circuito, que permite a um sinal de sada duma porta ser propagado de volta
para a entrada dessa porta.
Regra geral, os ciclos de realimentao introduzem um comportamento sequencial
nos circuitos.
2.3.

Portas lgicas

Com 3 tipos de porta elementares (AND, OR, NOT) consegue construir-se qualquer
sistema digital combinacional, ou seja, formam um conjunto completo.

Os smbolos e as tabelas de verdade do AND e do OR podem ser generalizados


para portas com qualquer nmero de entradas. A bolha na sada do inversor
representa um comportamento invertido. Combinando numa nica porta, um NOT
com uma funo AND ou OR, obtm-se 2 novas funes lgicas: NAND e NOR.

10

O smbolo e a tabela de verdade do NAND e do NOR tambm podem ser


generalizados para portas com qualquer nmero de entradas.
2.4.

lgebra da comutao (switching)

Em 1854, G. Boole [1815-1865] introduziu o formalismo que ainda usamos para


tratar a lgica de forma sistemtica, a lgebra de Boole.
Em 1938, C. Shannon [1916-2001] utilizou esta lgebra para provar que as
propriedades dos circuitos de comutao elctricos podem ser representados por
uma lgebra de Boole com 2-valores, a lgebra da comutao.

G. Boole

C. Shannon

Usando esta lgebra, pode equacionar-se proposices (afirmaes) que sero


verdadeiras ou falsas. Combinando-as, geram-se novas proposies e pode
concluir-se se elas so verdadeiras ou falsas. Shannon usava uma varivel
simblica (por ex. X) para representar a condio associada a um sinal lgico, em
que ele assumia um de 2 valores possveis (0 ou 1).
2.5.

Axiomas

Os axiomas (ou postulados) dum sistema matemtico so um conjunto mnimo de


definies elementares, que se considera serem verdadeiras. O 1 par de axiomas
incorpora a abstraco digital (X s pode assumir 2 valores):
(A1) X=0 se X1 (A1) X=1 se X0
Este par de axiomas apenas difere na permuta dos smbolos 0 e 1. Este princpio
aplica-se a todos os axiomas e est na origem da dualidade. O prximo par de
axiomas incorpora a notao de funo inversor:
(A2) Se X=0, ento X=1 (A2) Se X=1, ento X=0
em que a plica () denota a funo inversor.

Os ltimos 3 pares de axiomas enunciam a definio formal das operaes AND


(multiplicao lgica) e OR (adio lgica):

11

(A3) 00 = 0 (A3) 1+1 = 1


(A4) 11 = 1 (A4) 0+0 = 0
(A5) 01 = 10 = 0 (A5) 1+0 = 0+1 = 1

Por conveno, numa expresso lgica contendo multiplicao e adio, a


multiplicao tem precedncia. A expresso XY+YZ equivalente a (XY)+(YZ).
Os axiomas A1-A5 e A1-A5 definem de forma completa a lgebra Boole.
2.6.

Teoremas

Os teoremas so declaraes, que se sabe serem verdadeiras, que permitem


manipular expresses algbricas de modo a que a anlise seja mais simples e/ou a
sntese dos circuitos correspondentes seja mais eficiente.
Apresentam-se a seguir os teoremas envolvendo apenas uma varivel:
(T1)
(T2)
(T3)
(T4)
(T5)

X+0 = X
X+1 = 1
X+X = X
(X) = X
X+X = 1

(T1) X1 = X
(T2) X0 = 0
(T3) XX = X
(T5) XX = 0

(Identidades)
(Elementos nulos)
(Idempotncia)
(Involuo)
(Complementos)

Pode provar-se que estes teoremas so verdadeiros. Segue-se a prova de T1:


[X=0] 0+0=0 (verdade, segundo A4)
[X=1] 1+0=1 (verdade, segundo A5)
Os teoremas envolvendo 2 ou 3 variveis so:
(T6)
(T7)
(T8)
(T9)
(T10)
(T11)
(T11)

X+Y = Y+X
(T6)
XY = YX
(X+Y)+Z = X+(Y+Z) (T7)
(XY)Z = X(YZ)
XY+XZ = X(Y+Z) (T8)
(X+Y)(X+Z)=X+YZ
X+XY = X
(T9)
X(X+Y) = X
XY+XY = X
(T10) (X+Y)(X+Y) = X
XY+XZ+YZ = XY+XZ
(X+Y)(X+Z)(Y+Z) = (X+Y)(X+Z)

(Comutatividade)
(Associatividade)
(Distributividade)
(Cobertura)
(Combinao)
(Consenso)

Convm ter em teno que o teorema T8 no verdadeiro com inteiros ou reais.


Os teoremas T9 e T10 so usados para minimizar funes lgicas.
Vrios teoremas importantes so verdadeiros para um n arbitrrio de variveis.
Daqui resultam teoremas envolvendo n variveis:
Teoremas da idempotncia generalizada:
(T12)
(T12)

X+X+ ... +X = X
XX ... X = X
12

Teoremas de DeMorgan:
(T13)
(T13)

(X1X2 ... Xn) = X1+X2+ ... +Xn


(X1+X2+ ... +Xn) = X1X2 ... Xn

Teorema de DeMorgan generalizado:


(T14)

[F(X1,X2,...,Xn,0,1,+,)] = F(X1,X2,...,Xn,1,0,+)

Teoremas da expanso de Shannon:


(T15)
(T15)

F(X1,X2,...,Xn) = X1F(1,X2,...,Xn) + X1F(0,X2,...,Xn)


F(X1,X2,...,Xn) = [X1+F(0,X2,...,Xn)] [X1+F(1,X2,...,Xn)]

Os teorema de DeMorgan (T13 e T13) para 2 varveis (n=2) ficam:


(XY) = X+Y
(X+Y) = XY

Augustus De Morgan [1806-1871]

O Teorema de DeMorgan estabelece um procedimento para complementar


funes lgicas. Pode usar-se o teorema de DeMorgan para converter expresses
AND-OR em expresses OR-AND, como se mostra no prximo exemplo.
Exemplo:
Z = A B C + A B C + A B C + A B C
(expresso AND-OR)
Z = (A + B + C) (A + B + C) (A + B + C) (A + B + C) (expresso OR-AND)
Tambm se podem usar os teoremas de DeMorgan para saber a equivalncia entre
portas lgicas:

13

T13

T13

Como a lgebra de Boole s possui 2 valores, tambm se pode demonstrar a


validade dos teoremas atravs de tabelas de verdade. Para isso, constri-se uma
tabela de verdade para cada lado das equaes presentes num teorema. O
exemplo seguinte prova a veracidade dos teoremas de DeMorgan [T13 e T13] para
n=2:

(X+Y) = XY

(XY) = X+Y

2.7.

Dualidade

Os teoremas anteriores foram apresentados aos pares. A verso primria dum


teorema pode ser obtida da verso secundria trocando 0 com 1 e com +.
Princpio da dualidade: qualquer teorema ou identidade da lgebra de Boole
continua a ser verdadeiro quando se trocam todos os 0 com 1 e todos os
com +.
A dualidade importante porque duplica a utilidade de qualquer axioma/teorema da
lgebra de Boole e da manipulao de funes lgicas. Verifica-se que o dual duma
expresso lgica a mesma expresso em que + e foram trocados:
FD(X1,X2,...,Xn,0,1,+,,) = F(X1,X2,...,Xn,1,0,,+,).
14

No se deve confundir a dualidade com os teoremas de DeMorgan:


[F(X1,X2,...,Xn,+,)] = F (X1,X2,...,Xn,,+)
[F(X1,X2,...,Xn,+,)] = FD(X1,X2,...,Xn ,+,)
A figura seguinte ilustra a aplicao prtica da expresso do dual.
Funo elctrica

Lgica positiva

Lgica negativa

DUAL

DUAL

A figura seguinte uma ilustrao prtica de [F(X1,X2,...,Xn)] = FD(X1,X2,...,Xn).

Lgica
positiva

Lgica
negativa

15

2.8.

Representao normalizada

A representao mais elementar duma funo lgica a tabela de verdade. A


tabela de verdade indica qual a sada do circuito para cada combinao de
entradas possvel. A tabela de verdade duma funo de n-variveis possui 2n
linhas.

Existem 28 funes lgicas de 3 variveis diferentes, em que o nmero de linhas


23 = 8 e os valores possveis por linha so {0,1} = 2.
Como as tabelas de verdade apenas so viveis com poucas variveis,
conveniente saber convert-las para expresses algbricas. Apresentam-se agora
algumas definies a usar com as expresses algbricas.
Um literal uma varivel ou o complemento duma varivel. Exemplo: X, Y, X.
Um termo de produto um literal ou um produto lgico de 2 ou mais literais.
Exemplo: Z , WXY , WXY
A soma-de-produtos (SOP) uma soma lgica de termos de produto. Exemplo:
Z + WXY
Um termo de soma um literal ou uma soma lgica de 2 ou mais literais. Exemplo:
Z , W+X+Y , W+X+Y
O produto-de-somas (POS) um produto lgico de termos de soma. Exemplo:
Z (W+X+Y)
Um termo normal um termo de produto, ou de soma, em que cada varivel s
aparece uma vez. Exemplos de termos no-normais: WXXZ , W+Y+Z+W

16

Um mintermo de n-variveis um termo de produto normal com n literais.


Exemplos com 4 variveis: WXYZ , WXYZ
Um maxtermo de n-variveis um termo de soma normal com n literais. Exemplos
com 4 variveis: W+X+Y+Z , W+X+Y+Z
H uma correspondncia entre a tabela de verdade e os mintermos e maxtermos.
Um mintermo um termo de produto que 1 numa linha da tabela de verdade,
enquanto um maxtermo um termo de soma que 0 numa linha da tabela de
verdade.
A tabela que se segue mostra, a ttulo de exemplo, os mintermos e maxtermos para
uma funo de 3-variveis F(X,Y,Z).

Um mintermo de n-variveis pode ser representado por um inteiro com n-bits, que
se designa por nmero do mintermo. No mintermo i, uma varivel surge
complementada se o bit correspondente na representao binria de i for 0; seno,
a varivel no-complementada. Por exemplo, linha 5 (101) corresponde o
mintermo XYZ. No maxtermo i, uma varivel surge complementada se o bit
correspondente na representao binria de i for 1; seno, a varivel nocomplementada. Por exemplo, linha 5 (101) corresponde o maxtermo X+Y+Z.
Para que a especificao dos mintermos e maxtermos faa sentido, preciso
conhecer o nmero de variveis da funo e a sua ordem (X,Y,Z nos exemplos).
A partir da correspondncia entre a tabela de verdade e os mintermos, pode
derivar-se uma representao algbrica dessa funo lgica. A soma cannica
duma funo lgica uma soma dos mintermos que correspondem a linhas da
tabela de verdade para as quais a funo 1. Por exemplo, a partir da tabela
seguinte obtm-se:
F = X,Y,Z m(0,3,4,6,7) = XYZ + XYZ + XYZ + XYZ + XYZ
A notao X,Y,Z m(0,3,4,6,7) identifica 1 lista de mintermos e representa a
soma dos mintermos 0, 3, 4, 6 e 7 envolvendo as variveis X, Y e Z.
17

lista de mintermos tambm se pode dar o nome de on-set da funo lgica.

A partir da correspondncia entre a tabela de verdade e os maxtermos, pode


derivar-se uma representao algbrica dessa funo lgica. O produto cannico
duma funo lgica um produto dos maxtermos que correspondem a linhas da
tabela de verdade para as quais a funo 0.

Como exemplo, a partir da prxima tabela obtm-se:


F = X,Y,Z M(1,2,5) = (X+Y+Z) (X+Y+Z) (X+Y+Z)
A notao X,Y,Z M(1,2,5) identifica uma lista de maxtermos e representa o
produto dos maxtermos 1, 2 e 5 envolvendo as variveis X, Y e Z.
lista de maxtermos tambm se pode dar o nome de off-set da funo lgica.
fcil converter uma lista de mintermos numa lista de maxtermos. Para uma funo
de n-variveis, os mintermos e maxtermos pertencem ao conjunto {0, 1, , 2n-1}.
Uma lista de mintermos ou de maxtermos um subconjunto destes nmeros. Para
mudar dum tipo de lista para o outro, utiliza-se o subconjunto de nmeros
complementar.
18

Alguns exemplos:
A,B,C m(0,1,2,3) = A,B,C M(4,5,6,7)
X,Y m(1) = X,Y M(0,2,3)
W,X,Y,Z m(1,2,3,5,8,12,13) = W,X,Y,Z M(0,4,6,7,9,10,11,14,15)
Foram apresentadas
combinacionais:

formas

distintas

de

representar

funes

lgicas

A tabela de verdade
A soma algbrica de mintermos (a soma cannica)
A lista de mintermos, com notao
Produto algbrico de maxtermos (o produto cannico)
A lista de maxtermos, com notao

Qualquer destas representaes contm exactamente a mesma informao. A partir


duma delas, pode derivar-se cada uma das outras 4 aplicando uma regra de
converso simples.

2.9.

Exemplos

1. Para F = XY + XYZ + XYZ, obter a expresso de F na forma produto de


somas.
F = (X.Y + X.Y.Z + X.Y.Z)
= (X.Y)(X.Y.Z)(X.Y.Z)
= (X+Y).(X+Y+Z).(X+Y+Z)
2. Escreva a funo G(X,Y,Z) = X + YZ como uma lista de mintermos
G =
=
=
=
=

X + YZ
X(Y+Y)(Z+Z) + YZ(X+X)
XYZ + XYZ+ XYZ + XYZ+ XYZ + XYZ
XYZ + XYZ + XYZ + XYZ+ XYZ
X,Y,Z m(3,4,5,6,7)

[T5]
[T3]

3. Obter o produto de maxtermos para a funo H = XY + XZ.


H = XY + XZ
= (XY+X)(XY+Z)
= (X+X).(Y+X).(X+Z).(Y+Z)
=
1 .(X+Y).(X+Z).(Y+Z)

[T8] e+A.B=(e+A).(e+B)
[T8] e+A.B=(e+A).(e+B)
[T5 ] X+X=1

Em cada soma da expresso anterior falta uma varivel:


X+Y = X+Y+ZZ = (X+Y+Z)(X+Y+Z)
X+Z = X+Z+YY = (X+Y+Z)(X+Y+Z)
Y+Z = Y+Z+XX = (X+Y+Z)(X+Y+Z)

19

[T5] [T8]
[T5] [T8]
[T5] [T8]

Combinando estes termos:


H = (X+Y+Z)(X+Y+Z)(X+Y+Z)(X+Y+Z)(X+Y+Z)(X+Y+Z)
= X,Y,Z M(2,3,4,6)
4. Obter a lista de maxtermos para H = XY + XZ, usando a tabela de verdade que
se segue.
X
0
0
0
0
1
1
1
1

Y
0
0
1
1
0
0
1
1

Z
0
1
0
1
0
1
0
1

W
1
1
0
0
0
1
0
1

A partir da tabela obtm-se:


H =
H =

X,Y,Z
X,Y,Z

M(2,3,4,6)
m(0,1,5,7)

Compare esta soluo com a que se obteve no exemplo 3.


5. Obter uma expresso para J = XYZ + XYZ + XYZ + XYZ com um nmero
reduzido de operadores.
J = XYZ + XYZ + XYZ + XYZ + XYZ + XYZ
= XY(Z+Z) + X(Y+Y)Z + (X+X)YZ
= XY+XZ+YZ

20

[T3] X+X=X
[T5] X+X=1

3. Conceitos sobre Sistemas Combinacionais


3.1.

Anlise, sntese e alteraes a um circuito

Aps obter a descrio formal da funo lgica dum circuito, pode (i) determinar-se
o seu comportamento para vrias combinaes de entradas; (ii) alterar-se a
descrio algbrica de modo a induzir diferentes estruturas para o circuito; (iii)
transformar a descrio algbrica numa forma normalizada (por exemplo, PLD); (iv)
utilizar a descrio algbrica do circuito para analisar um sistema de maior
dimenso, do qual este sistema seja parte integrante.
Considere-se o seguinte circuito.

Pode obter-se a tabela de verdade do circuito inspeccionando o seu


comportamento para todas as combinaes (2n) das entradas.

A partir da tabela de verdade pode extrair-se de forma directa uma expresso lgica
(por exemplo, SOP).

21

Esta tcnica muito morosa e s exequvel se o nmero de variveis de entrada


for reduzido. A soluo recorrer abordagem algbrica.
Abordagem algbrica: uma abordagem em que se analisa o circuito desde as
entradas at s sadas, construindo uma expresso correspondente aos operadores
e estrutura do circuito

Aplicando a abordagem algbrica ao circuito anterior obtm-se:


F = ((X+Y) Z) + (XYZ)
Aps aplicar uma transformao algbrica obtm-se uma expresso e um circuito
diferentes
F

= ((X+Y) Z) + (XYZ)
= (XZ) + (YZ) + (XYZ)

A partir da expresso de F original, tambm se pode derivar uma expresso do tipo


POS (aplicando T8 e T5):
F

= ((X+Y) Z) + (XYZ)
= (X+Y+X) (X+Y+Y) (X+Y+Z) (Z+X) (Z+Y) (Z+Z)
= 1 1 (X+Y+Z) (Z+X) (Z+Y) 1 =
= (X+Y+Z) (X+Z) (Y+Z)

22

[T8]
[T5]

O ponto de partida para projectar um circuito combinacional normalmente a sua


descrio em linguagem natural (por exemplo, em portugus).
Exemplo: construir um circuito de alarme.
A sada ALARM 1 se a entrada PANIC for 1 ou se a entrada ENABLE
for 1, a entrada EXITING for 0 e a casa no estiver segura. A casa
segura se as entradas WINDOW, DOOR e GARAGE forem todas 1.
ALARM
SECURE

= PANIC + ENABLE EXITING SECURE


= WINDOW DOOR GARAGE

O circuito que concretiza a expresso de ALARM o que se apresenta abaixo.

A concretizao da expresso de ALARM na forma SOP :


ALARM = PANIC + ENABLE EXITING (WINDOW DOOR GARAGE)
ALARM = PANIC + ENABLE EXITING (WINDOW+DOOR+GARAGE)
ALARM = PANIC + ENABLE EXITING WINDOW +
ENABLE EXITING DOOR + ENABLE EXITING GARAGE
qual corresponde o seguinte circuito:

23

Outras vezes, a descrio comea com uma listagem das combinaes das
entradas para as quais uma determinada sada deve estar activa ou inactiva. Esta
listagem equivale tabela de verdade dessa sada.
Exemplo: construir um circuito que detecte nmeros primos de 4-bits.
Dada uma combinao de entrada N=N3N2N1N0 com 4-bits, o circuito gera
1 na sada quando N=1,2,3,5,7,11,13 e gera 0 nos outros casos.
F = N3,N2,N1,N0 m(1,2,3,5,7,11,13) =
N3 N2 N1 N0 + N3 N2 N1 N0 + N3 N2 N1 N0 + N3 N2 N1 N0 +
N3 N2 N1 N0 + N3 N2 N1 N0 + N3 N2 N1 N0
A concretizao da expresso SOP da sada do detector :

24

At aqui foram apresentados mtodos para projectar circuitos que usam apenas
portas AND, OR e NOT. Em certas situaes, o projectista pode querer usar portas
NAND ou NOR, dado que so mais rpidas que ANDs e ORs na maioria das
tecnologias. Contudo, a generalidade das pessoas no desenvolve proposies
lgicas usando o NAND e o NOR como elementos de ligao. No se diz: No
gosto duma rapariga, se ela no for inteligente ou no for elegante e tambm se ela
no for rica ou no for simptica, ou seja, G=(I+E)(R+S). mais frequente dizerse: Gosto duma rapariga, se ela for inteligente e elegante ou se ela for rica e
simptica, ou seja, G = (IE) + (RS).
Qualquer expresso lgica pode ser convertida numa expresso SOP equivalente e
ser deste modo implementada com portas AND e OR. Um circuito AND-OR com 2nveis pode ser convertido num circuito NAND-NAND com 2-nveis, atravs duma
simples substituio de portas (ver o exemplo abaixo).
A1+ ... +An = (A1. . An) NAND

Se os termos (de produto) da expresso SOP inclurem apenas um literal, os


inversores a aplicar a esse termo podem ser ou no necessrios (ver o exemplo
abaixo).

Vimos que qualquer expresso SOP pode ser concretizada de duas formas: atravs
dum circuito AND-OR ou dum circuito NAND-NAND. Aplicando o princpio da
dualidade a esta regra, obtemos uma declarao que tambm verdadeira:
Qualquer expresso POS pode ser concretizada de duas formas: atravs
dum circuito OR-AND ou dum circuito NOR-NOR.
A figura seguinte mostra a aplicao do princpio da dualidade.

25

A1. ... .An = (A1+ + An) NOR

Estas alteraes, como por exemplo a converso para a estrutura NAND-NAND,


podem ser aplicadas a qualquer circuito lgico.

a)
b)
c)
d)

Circuito original
Circuito aps adicionar pares de inversores
Eliminao de uma porta no normalizada
Circuito com menos atraso no NAND e menos um nvel no inversor do que o anterior

Qualquer conjunto de tipos de porta lgica que permite concretizar qualquer funo
lgica um conjunto completo. A porta AND de 2-entradas mais a porta OR de 2entradas mais o inversor formam 1 conjunto complete. A figura seguinte mostra
outros conjuntos completos: (i) a porta NAND de 2-entradas e (ii) a porta NOR de 2entradas.

NAND

NOR

A porta NOR de 2-entradas um conjunto complete.


A porta NAND de 2-entradas um conjunto complete.

26

Qualquer funo lgica pode ser expressa numa soma de produtos de literais. As
portas AND e OR, com qualquer nmero de entradas, podem ser construdas a
partir de portas do mesmo tipo com 2-entradas.
3.2.

Minimizao

Normalmente no econmico concretizar uma funo lgica directamente a partir


da 1 expresso que ocorre. Isto porque as expresses cannicas (soma e produto)
so especialmente consumidoras de recursos. A minimizao de lgica emprega
diversas tcnicas para obter a implementao mais simples possvel ao nvel-daporta para uma funo. Contudo, o grau de simplificao depende da mtrica
usada. Trs exemplos de mtricas que podem ser usadas so:
Nmero de literais;
Nmero de portas (lgicas);
Nmero de nveis de portas em cascata.
O nmero de literais mede a quantidade de ligaes necessria para implementar
uma funo. O nmero de portas mede a rea (espao ocupado) do circuito.
Existe uma relao directa entre o nmero de portas dum projecto e o nmero de
circuitos integrados necessrio sua implementao. O nmero de nveis de
portas mede o nmero de portas entre as entradas e as sadas do circuito. Quanto
maior o nmero de nveis, maior o atraso no circuito. Verifica-se que ao adequar
um circuito para apresentar um atraso mnimo, raramente se consegue uma
implementao com o menor nmero de portas ou com as portas mais simples
possveis. No possvel minimizar as trs mtricas ao mesmo tempo. Apresentase a seguir um exemplo que ilustra vrias alternativas de simplificao duma
funo.

27

Dada a funo
Z = ABC+ABC+ABC+ABC=A(B+B)C+(A+A)BC+ABC
= AC+BC+ABC
i) A implementao Z1 na figura anterior constitui uma concretizao a dois-nveis
(dado que os inversores no contam), em que o nmero de literais maior que nas
outras alternativas.
ii) A implementao Z2 uma concretizao multi-nvel, que utilize portas com
menos entradas mas possui um nmero de nveis maior:
Z = ABC+AC+BC
= (AB)C+(A+B)C
= (AB)C+(AB).C
iii) A implementao Z3 uma concretizao que utilize uma porta mais complexa
(XOR), que significa um atraso maior, mas emprega menos portas:
Z = (AB)C+(AB).C = (AB) xor C
As tcnicas de minimizao reduzem o nmero e o tamanho das portas necessrias
para construir um circuito, diminuindo assim o custo do sistema. Os mtodos de
minimizao reduzem o custo dum circuito AND-OR ou OR-AND a 2-nveis atravs
de:
Minimizar o nmero de portas no primeiro nvel;
Minimizar o nmero de entradas em cada porta do primeiro nvel;
Minimizar o nmero de entradas em cada porta do segundo nvel.
Os mtodos de minimizao no consideram o custo dos inversores entrada. Isto
resulta de se considerar que todas as variveis de entrada, e seus complementares,
esto disponveis (adequado para implementaes com PLDs). Tambm assumem
que a funo a minimizar est representada por uma tabela de verdade ou por uma
lista de mintermos ou maxtermos. A minimizao baseia-se nos teoremas T10 e
T10:
produtoY + produtoY = produto
(soma + Z) (soma + Z) = soma
Estes teoremas indicam que se dois termos diferem apenas numa varivel, podem
ser substitudos por um nico termo com menos uma varivel. Deste modo, poupase uma porta e a outra porta possui menos uma entrada.

28

F = A B' + A B = A (B' + B) = A
O valor de B varia nas linhas do on-set
B eliminado , A mantm-se
O valor de A no varia nas linhas do on-set

G = A' B' + A B' = (A' + A) B' = B'


O valor de B no varia nas linhas do on-set
B mantm-se , A eliminado
O valor de A varia nas linhas do on-set

Essncia da simplificao:
Encontrar pares de elementos do ON-set em que apenas uma varivel muda de
valor. A varivel que muda de valor pode ser eliminada.
Vamos aplicar esta tcnica expresso do detector de nmeros primos.
F = N3,N2,N1,N0 m(1,2,3,5,7,11,13) =
N3N2N1N0 + N3N2N1N0 + N3N2N1N0 + N3N2N1N0 + ... =
(N3N2N1N0 + N3N2N1N0) + (N3N2N1N0 + N3N2N1N0) + ... =
(N3N2N0) + (N3N2N0) + ... = N3N0 + ...

A porta AND assinalada o resultado de simplificar 4 ANDs de 4 entradas.

3.3.

Mapas de Karnaugh

No fcil encontrar o par de termos que participa em cada simplificao. Um


mapa de Karnaugh uma representao grfica para a tabela de verdade duma

29

funo lgica. O mapa para uma funo lgica de n-entradas um array com 2n
clulas, uma por cada mintermo (ver a figura seguinte para os casos n=2, 3 e 4).
F x,y

G x,y,z

H w,x,y,z

Os mapas de Karnaugh que se utilizam para representar funes com 5 e 6


variveis no so to adequados como os mapas de 2, 3 e 4 variveis, dado a
adjacncia ser mais difcil de visualizar. Num mapa de 5 variveis, necessrio
recorrer a 2 mapas de 4 variveis colocados um ao lado do outro. Nesta
representao, considera-se que um mapa colocado por cima do outro, de modo
a originar um objecto 3-dimensional. Neste caso, cada clula adjacente de 5
clulas: 4 no mesmo mapa e 1 no outro (ver figura abaixo).
F v,w,x,y,z

O mapa de Karnaugh que se segue de 6 variveis: U, V, W, X, Y e Z.

30

Para representar uma funo lgica num mapa de Karnaugh, copiam-se os 1s e 0s


da tabela de verdade para as clulas correspondentes do mapa. Cada clula do
mapa corresponde a um mintermo da funo.

A clula assinalada correspondente ao mintermo 5.

Na prtica, apenas se copiam os 1s ou os 0s (no ambos) para as clulas,


dependendo do tipo de expresso que se pretende obter (SOP ou POS).
Q: Porque se usa uma ordenao estranha das linhas e colunas?
Porque assim, cada clula corresponde a uma combinao das entradas que difere
apenas numa varivel da combinao associada a cada uma das clulas vizinhas
31

imediatamente adjacentes. As clulas 7 e 15, no mapa de 4 variveis seguinte,


diferem apenas no valor de W. Nos mapas de 3 e 4 variveis, as clulas no canto
esquerdo (direito) ou superior (inferior) tambm so vizinhas. As clulas 8 e 10 no
mapa de 4 variveis diferem apenas no valor de Y.
Uma vez que os pares de clulas-a-1 adjacentes correspondem a mintermos que
diferem apenas numa varivel, cada par pode ser combinado num nico termo de
produto, usando o teorema T10:
produtoY + produtoY = produto

Para o mapa anterior, combinando as clulas 5 e 7:


F = ... + XYZ + XYZ
= ... + XZ
Combinando as clulas 1 e 5:
F = XYZ + XYZ + ...
= YZ + ...
O mintermo 5 includo duas vezes. No h problema porque X+X=X.
F = XZ + YZ + XYZ

32

Concretizao AND-OR da funo F simplificada.

O procedimento utilizado para combinar clulas, pode ser estendido para permitir
combinar mais do que 2 clulas-a-1 num nico termo.
F

= X,Y,Z, m(0,1,4,5,6) = XYZ + XYZ + XYZ + XYZ + XYZ


= [Y(XZ) + Y(XZ) + Y(XZ) + Y(XZ)] + XYZ
= Y[(XZ + XZ) + (XZ +XZ)] + XYZ = Y[(X + X).Z + (X +X)Z] + XYZ
= Y(1.Z+ 1.Z) + XYZ = Y.(Z+Z) + XYZ = Y.1 + XYZ = Y + XYZ

i) Simplificao com mapa de Karnaugh

ii) Concretizao AND-OR de F simplificada


com mapa de Karnaugh

Generalizando, pode combinar-se 2i clulas-a-1 para originar um termo de produto


com n-i literais (em que n = nmero de variveis). A regra para combinar clulas-a1 descrita por:
Um conjunto de 2i clulas-a-1 pode ser combinado se existirem i
variveis que assumem todas as possveis combinaes (2i ) dentro
desse conjunto, enquanto as restantes n-i variveis mantm o mesmo
valor em todo o conjunto.
O termo de produto resultante possui n-i literais, em que cada literal : a
varivel complementada (se ela aparecer como 0 em todas as clulas-a1) ou a varivel no complementada (se ela aparecer como 1).

33

Graficamente, podemos envolver conjuntos rectangulares de 2n clulas-a-1 com um


rectngulo.
A partir de cada rectngulo que envolve clulas-a-1, obtm-se o correspondente
termo de produto:

Se o rectngulo cobre apenas zonas do mapa em que uma dada varivel 0


(1), ento essa varivel surge complementada (no complementada) no
termo de produto.

Se o rectngulo cobre zonas do mapa em que uma dada varivel 0 e 1,


ento essa varivel no aparece no termo de produto.

Uma soma mnima para a funo lgica F uma expresso do tipo soma de
produtos (SOP) para F tal que nenhuma outra expresso SOP para F possui menos
termos de produto, e qualquer expresso SOP com o mesmo nmero de termos de
produto possui pelo menos tantos literais como ela. A soma mnima possui o menor
nmero de termos de produto possvel (nmero de portas no 1 nvel e nmero de
entradas na porta do 2 nvel) e o menor nmero de literais possvel (nmero de
entradas nas portas do 1 nvel).
Uma funo lgica P implica a funo lgica F (P F) se para cada combinao
de entradas em que P=1, ento tambm F=1. Ou seja, F inclui ou cobre P. Um
implicante maior duma funo lgica F um termo de produto normal P que
implica F, de tal modo que se qualquer varivel for eliminada de P, ento o termo de
produto resultante j no implica F. Em termos dum mapa de Karnaugh, um
implicante maior de F um conjunto de clulas-a-1 envolvido por um rectngulo, de
tal modo que se tentarmos aument-lo (de modo a cobrir o dobro das clulas), ele
vai cobrir um ou mais 0s.
Teorema do implicante maior: uma soma mnima uma soma de
implicantes maiores.
Para encontrar uma soma mnima, no necessrio ter em conta qualquer termo
de produto que no seja um implicante maior. A soma de todos os implicantes
maiores duma funo designada por soma completa. A soma completa no
necessariamente uma soma mnima.
34

Algoritmo: obter a expresso SOP mnima atravs dum mapa de Karnaugh


Passo 1: Marcar os implicantes maiores
Escolher um 1 do ON-set ainda no coberto por qualquer implicante.
Encontrar os grupos de 1s (e Xs) adjacentes desse elemento e que possuem a
maior dimenso possvel. A dimenso tem que ser 2i.
No esquecer a adjacncia entre a linha superior e inferior, a coluna esquerda e
direita e os cantos.
Repetir o Passo 1 para cada 1 do ON-set, de modo a encontrar todo os
implicantes maiores.
Passo 2: Marcar os implicantes essenciais
Visitar cada 1 do ON-set. Se o 1 for coberto por um nico implicante maior,
ento este implicante essencial e aparece na expresso final. Os restantes 1s
cobertos pelo implicante no precisam ser revisitados.
Repetir o Passo 2 at que todos os implicantes essenciais tenham sido
encontrados.
Passo 3: Cobertura adicional
Se existirem 1s no cobertos pelos implicantes essenciais, seleccionar o menor
nmero de implicantes maiores que cobra todos esses 1s. Tentar vrias
alternativas de cobertura.
Considere a funo F = W,X,Y,Z, m(1,3,4,5,9,11,12,13,14,15). Esta funo possui 5
implicantes maiores. A soma mnima inclui apenas 3 implicantes maiores:
F = XY + XZ + WX. Como se decide quais os implicantes maiores a incluir na
expresso minimizada duma funo?

35

Para responder pergunta anterior, apresentam-se mais algumas definies.


Uma clula-a-1 distinguida duma funo lgica uma combinao de entradas
que coberta por um nico implicante maior. Um implicante essencial duma
funo lgica um implicante maior que cobre uma ou mais clulas-a-1distinguidas.
Os implicantes essenciais tm que aparecer em qualquer soma mnima. O 1 passo
na seleco dos implicantes consiste em identificar as clulas-a-1 distinguidas e
incluir os correspondentes implicantes essenciais na soma. Depois, se houver
clulas-a-1 no cobertas pelos implicantes essenciais, falta encontrar a melhor
forma de as cobrir.
Exemplo em que todos os implicantes maiores so essenciais:

Exemplo em que nem todos os implicantes maiores so essenciais:

O 3 mapa aquele que se obtm ao retirar os implicantes essenciais e os 1s que eles cobrem.
simplifica mais que

Aplicando o princpio da dualidade, pode minimizar-se expresses do tipo produto


de somas (POS) se se funcionar com os 0s do mapa de Karnaugh. Cada 0 do
mapa corresponde a um maxtermo. Uma forma mais fcil de encontrar o produto
mnimo de F consiste em obter a soma mnima de F. Obter F simples: os 1s de
F so os 0s de F. Aps obter a soma mnima para F (Fsop), complementa-se o

36

resultado obtido aplicando o teorema de DeMorgan generalizado [T14] , de modo a


obter o produto mnimo para F (Fpos).
Um exemplo:

F = XY + XZ + WX
F = (X+Y) (X+Z) (W+X)

Por vezes, no interessa qual o valor da sada da funo para certas


combinaes das entradas. A estas sadas chama-se dont cares.
Um exemplo: um detector de nmeros primos em que a entrada N com 4-bits
sempre um dgito BCD, ou seja, os mintermos 10-15 nunca ocorrem.
F = N3,N2,N1,N0 m (1,2,3,5,7) + N3,N2,N1,N0 d (10,11,12,13,14,15)

Ao introduzir dont cares (Xs), o procedimento usado para envolver os conjuntos de


1s com rectngulos alterado do seguinte modo:

Permite-se que os Xs sejam includos nos conjuntos de 1s a envolver com


rectngulos, para formar conjuntos to grandes quanto possvel. Desta forma
reduz-se o nmero de variveis nos implicantes maiores que lhe
correspondem.

No se considera qualquer conjunto que contenha apenas Xs. Incluir na


funo os termos de produto formados a partir de Xs aumentaria
desnecessariamente o seu custo, ou seja, a funo ficaria menos
minimizada.

O resto do procedimento mantm-se vlido. Por exemplo:

Visitam-se apenas
distinguidas.

Inclui-se na funo simplificada apenas (i) os implicantes essenciais que


correspondem a esses 1s e (ii) outros implicantes maiores que sejam
necessrios para cobrir todos os 1s do mapa.

as

clulas-a-1distinguidas

37

no

as

clulas-a-X

Apresenta-se agora, como exemplo, a simplificao da funo:


F = A,B,C,D m (4,5,6,8,9,10,13) + A,B,C,D d (0,7,15)

Mapa de Karnaugh
inicial

Implicantes essenciais
e cobertura mnima
para os 1s restantes

3.4.

Hazards

Devido aos atrasos nos componentes electrnicos, um circuito pode originar um


glitch. Um glitch uma variao de curta durao no valor duma sada, quando no
se espera nenhuma variao. Designa-se de hazard a situao em que existe a
possibilidade de o circuito gerar um glitch. Ocorre um hazard esttico quando
existe a possibilidade de uma sada sofrer uma transio momentnea em
condies em que se esperava que ela se mantivesse inalterada. Ocorre um
hazard dinmico quando for possvel uma sada mudar mais do que uma vez, em
condies em que se esperava que ela tivesse uma nica transio (de 0 1 ou de
10).

38

Um hazard num 1 (0) esttico um par de combinaes de entradas que diferem


apenas numa varivel de entrada e em que ambas produzem 1 (0) na sada, de tal
modo que pode ocorrer um 0 (1) momentneo na sada, durante uma transio na
varivel de entrada que distingue essas combinaes.
A figura seguinte mostra um circuito que apresenta um hazard quando X=Y=1 e Z
transita de 1 0.

Os mtodos usados para eliminar hazards consideram que apenas uma entrada
varia em cada instante. Este pressuposto equivale a efectuar um deslocamento
atravs de clulas vizinhas num mapa de Karnaugh. Os mapas de Karnaugh podem
ser usados para detectar hazards estticos em circuitos com estrutura AND-OR ou
OR-AND. Num circuito bem projectado e que implemente uma soma de produtos a
2-nveis s podem ocorrer hazards em 1s estticos (no em 0s estticos).
Para o mapa da figura seguinte, como no h um termo de produto que cobre
ambas as combinaes XYZ=111 e XYZ=110, possvel que se gere um breve
glitch a 0 na sada (se o AND que muda para 0 o fizer antes do AND que muda para
1). Para eliminar o hazard, deve incluir-se no circuito uma porta AND extra.

39

O circuito que resulta da eliminao do hazard com a porta AND extra :

40

Outro exemplo, em que se usam 3 ANDs extra para eliminar os hazards estticos:

Para terminar, apresenta-se mais um exemplo, em que se mostra a ocorrncia e


eliminao de um glitch na funo F = A,B,C,D,(1,3,5,7,8,9,12,13).

i) No ocorre um glitch (situao verde no mapa).

ii) Ocorre um glitch, que eliminado com o termo extra C.D (situao laranja no mapa).

41

4. VHDL
O VHDL foi desenvolvido na dcada de 80 pelo DoD e pelo IEEE. VHDL um
acrnimo de VHSIC Hardware Description Language; VHSIC um acrnimo de
Very High Speed Integrated Circuit.
O VHDL possui as seguintes caractersticas:

4.1.

Os projectos devem ser decompostos de forma hierrquica.


Cada elemento dum projecto possui uma interface e uma especificao
do seu comportamento.
A especificao dum comportamento pode usar um algoritmo ou uma
estrutura para definir o modo de operao do elemento.
Pode modelar concorrncia, temporizao e o conceito de relgio
(clocking).
Permite simular a operao lgica e o comportamento temporal dum
projecto.
Fluxo de projecto

O VHDL comeou por ser uma linguagem de documentao e modelao,


que permitia especificar e simular o comportamento dos projectos. Actualmente
existem ferramentas de sntese comerciais que geram a estrutura dos
circuitos lgicos directamente a partir de especificaes em VHDL.

4.2.

Entidades e arquitecturas

O VHDL foi desenvolvido tendo em considerao muitos dos princpios da


programao estruturada. Muitas ideias do VHDL foram importadas do Pascal
e do Ada. Uma das ideias chave do VHDL a utilizao de interfaces que
definem a fronteira dos mdulos (de hardware), ao mesmo tempo que
escondem os pormenores relativos ao seu interior. Em VHDL, a entidade
(entity) uma declarao das entradas e sadas dum mdulo. A arquitectura
(architecture) uma descrio detalhada da estrutura ou comportamento
interno dum mdulo.
42

Uma arquitectura pode usar outras entidades. Uma arquitectura de nvel


superior pode usar uma entidade de nvel inferior vrias vezes. Vrias
arquitecturas de nvel superior podem usar a mesma entidade de nvel inferior.
Estas facilidades so o suporte bsico para projectar sistemas de forma
hierrquica.
As configuraes definem qual a arquitectura a usar em cada ocorrncia
duma entidade.

Num ficheiro texto, contendo cdigo VHDL, a declarao da entidade e a


definio da arquitectura esto separadas.
43

A linguagem no distingue maisculas de minsculas. Os comentrios


comeam com 2 hfenes -- e terminam no fim da linha. O VHDL possui
palavras (chave) reservadas: port, is, in, out, begin, end, entity, architecture, if,
case, ...
A sintaxe da declarao duma entidade :

Numa entidade, mode indica qual a direco dum porto da interface. Um porto
uma entrada, sada ou entrada/sada dum mdulo. As possibilidades para a
direco dum porto so:
in:
entrada da entidade;
out:
sada da entidade;
buffer: sada da entidade (o seu valor pode ser lido dentro da
arquitectura);
inout: entrada e sada da entidade.
Nesta declarao, signal-type designa um tipo de sinal predefinido ou um tipo
definido pelo utilizador.
Sinal o objecto primrio utilizado para descrever sistemas, equivale a um fio
fsico e tem um historial de valores passados associado. Os sinais funcionam
como canais de comunicao entre instrues concorrentes. A sintaxe da
declarao dum sinal :
signal nome_sinal : tipo_sinal := valor_inicial_opcional ;

44

Os sinais podem ser declarados explicitamente na declarao dum package,


numa arquitectura, num bloco ou num subprograma. A declarao dum porto
duma entidade uma declarao implcita dum sinal.
Varivel similar a um sinal, mas sem o equivalente fsico e sem o historial de
valores.
A sintaxe da definio duma arquitectura :

As declaraes (tipos, sinais,,componentes) podem surgir por qualquer


ordem. Em signal declarations definem-se os sinais internos arquitectura.
4.3.

Tipos

Qualquer sinal, varivel e constante tem um tipo associado. O tipo especifica o


conjunto de valores permitidos a um objecto e os operadores que podem ser
aplicados a esse objecto. Esta definio de tipo equivalente a um tipo de dados
abstracto, um conceito similar ao de classe em OO. VHDL uma linguagem
fortemente tipada mas que possui apenas os seguintes tipos predefinidos:

integer inclui os inteiros no intervalo -2.147.483.647 a +2.147.483.647


boolean possui 2 valores: true e false
character inclui os caracteres do conjunto ISO 8-bit.

A tabela em baixo inclui os operadores predefinidos para os tipos integer e


boolean. A funcionalidade dos operadores menos triviais, rem e mod, agora
descrita:
A rem B mdulo = A int(A/B)*B e sinal = sinal de A
A mod B mdulo = A int(A/B)*B [quando A e B so do mesmo sinal]
mdulo = A + ceil(|A/B|)*B [quando A e B so de sinais diferentes]
sinal = sinal de B
45

Os tipos definidos pelo utilizador so comuns em VHDL. Um tipo enumerado


definido atravs duma lista de valores permitidos.

Os 9 nveis permitidos pelo tipo STD_LOGIC so:

Outros exemplos so:

type traffic_light_state is (reset, stop, start, go);


subtype int32 is integer range 31 downto 0;
constant BUS_SIZE: integer := 32;

46

O utilizador tambm pode definir arrays usando as palavras-chave to, downto


e range para definir a dimenso. Um array um conjunto ordenado de
elementos do mesmo tipo.

O contedo dos elementos dum array pode ser especificado por posio,
colocando a lista de valores a atribuir entre parnteses:
B := (1,1,0,1,1,0,0,1);
-- tipo byte
O contedo do array tambm pode ser especificado usando ndices:
W := (0=>0, 3=>0, 9=>0,others=>1); -- tipo word
O contedo dum array STD_LOGIC pode ser especificado usando strings:
B := 11011001;
W := 0110111110111111;
Tambm se pode especificar uma parcela dum array:
B(2 to 4):=101;
W(9 downto 0):=0101011010;
Pode juntar-se arrays usando o operador de concatenao (&):
0&1&1Z
equivalente a 011Z.
B(6 downto 0)& B(7) equivale a rodar o array B um 1bit esquerda.

4.4.

Funes e procedimentos

Uma funo aceita um conjunto de argumentos e devolve um resultado. Tanto


os argumentos como o resultado devem ter um tipo. O corpo da funo um

47

conjunto de instrues executadas em sequncia. A sintaxe da definio de


funo :

Exemplo de definio e utilizao duma funo ButNot:

Normalmente necessrio converter um sinal de um tipo para outro. Usando o


tipo de array
type STD_LOGIC_VECTOR is array (natural range <>) of STD_LOGIC;
apresentam-se a seguir 2 funes de converso de tipos: de std_logic para
inteiro e de inteiro para std_logic.

48

Um procedimento idntico a uma funo, mas no devolve um resultado.


Enquanto a invocao duma funo pode ser usada em vez duma expresso, a
invocao dum procedimento pode ser usada em vez duma instruo. Como os
argumentos dum procedimento podem ter uma direco do tipo out ou inout,
possvel um procedimento devolver resultado(s).
4.5.

Bibliotecas e packages

Uma biblioteca o local onde o compilador de VHDL guarda a informao


relativa a um determinado projecto (intermdia, da simulao e da sntese).
Para qualquer projecto, o compilador cria e utiliza a biblioteca work. Um
projecto pode usar mltiplos ficheiros, cada um com unidades (entidades /
arquitecturas) diferentes. Quando um ficheiro compilado, os resultados so
guardados na biblioteca work. Nem toda a informao necessria a um projecto
deve estar na biblioteca work. O projectista pode recorrer a definies ou
funes que so comuns a vrios projectos (por exemplo, includas na
biblioteca IEEE). Um projecto pode especificar que vai usar bibliotecas que
contm definies partilhveis.

49

Um exemplo:

library ieee;

A especificao duma biblioteca permite aceder a todas as entidades e


arquitecturas guardadas nessa biblioteca, mas no d acesso aos tipos,
subtipos, funes, procedimentos,... Um package um ficheiro com definies
de objectos (sinais, tipos, constantes, funes, procedimentos, componentes)
que podem ser utilizados nos projectos. A clusula seguinte permite a um
projecto usar todas as definies do package standard 1164 do IEEE:
use ieee.std_logic_1164.all;
A sintaxe da definio dum package :

4.6.

Projecto estrutural

O corpo duma arquitectura uma srie de instrues concorrentes. Cada


instruo concorrente executada em simultneo com as outras instrues
concorrentes includas no mesmo corpo de arquitectura. As instrues
concorrentes so necessrias para simular o modo paralelo em que os
elementos de hardware funcionam. A instruo concorrente mais elementar a
instanciao dum componente. Apresenta-se a seguir a sintaxe da
instanciao dum componente:

A primeira linha da figura anterior estabelece um mapeamento entre portos e


sinais externos por posio, enquanto a segunda linha define um mapeamento

50

explcito entre portos e sinais externos. Ainda nesta figura, component-name


o nome duma entidade definida anteriormente.
Por cada instanciao dum componente criada uma instncia da entidade
respectiva. Antes de instanciar um componente ele tem que ser declarado na
parte declarativa da arquitectura usando o construtor component. A
declarao dum componente essencialmente o mesmo que a declarao da
interface da entidade correspondente. A sintaxe da declarao dum
componente :

Os componentes usados numa arquitectura podem ter sido definidos


anteriormente no projecto em causa, ou podem estar definidos numa biblioteca.
O exemplo que se segue apresenta a descrio estrutural do detector de
nmeros primos.

(i)

(ii)

(iii)

(i) sinais internos;


(ii) declarao de componentes;
(iii) instanciao de componentes.

51

Uma arquitectura que utiliza


vez que descreve a estrutura
concretizam essa entidade.
repetitivas. A sintaxe do ciclo

componentes uma descrio estrutural, uma


de interligao entre os sinais e as entidades que
A instruo generate permite criar estruturas
forgenerate :

identifier uma varivel implicitamente declarada.

Exemplo de um inversor de 8 bits descrito com um ciclo for generate.

Pode definir-se constantes genricas na declarao duma entidade. A


prxima figura mostra a sintaxe da declarao duma entidade usando
constantes genricas. As constantes genricas permitem definir uma entidade
parametrizada.

52

Cada constante pode ser usada dentro da arquitectura em que declarada e a


atribuio dum valor a essa constante ocorre apenas quando a entidade for
instanciada noutra arquitectura. Ao instanciar um componente, para atribuir
valores s constantes genricas utiliza-se uma clusula generic map.
Circuito inversor dos bits dum barramento de largura parametrizvel (WID) e
descrito com um ciclo for generate (ver figura).

Descreve-se agora a entidade que instancia o inversor de barramento com 3


valores de WID: 8,16 e 32,

53

4.7.

Projecto fluxo de dados (dataflow)

Se uma arquitectura emprega apenas instrues concorrentes, o que ela


descreve o fluxo de dados e as operaes que so aplicadas aos dados
dentro do circuito. Este estilo de descrio designado por fluxo de dados.
Dois tipos de instruo concorrente que se usam numa descrio fluxo de
dados so:
Atribuio concorrente dum valor a um sinal a largura e o tipo de
ambos os lados da instruo tm que ser compatveis;
Atribuio concorrente e condicional dum valor a um sinal.
A sintaxe dos 2 tipos de atribuio concorrente :

Exemplo de uma descrio fluxo de dados para o detector de nmeros primos,


usando operadores predefinidos como and, or, not e atribuies simples.

54

Exemplo de uma descrio fluxo de dados usando atribuies condicionais.

Outro tipo de instruo concorrente a atribuio selectiva a um sinal,


idntica a um construtor CASE. A sintaxe da atribuio selectiva :

Exemplo de uma descrio fluxo de dados para o detector de nmeros primos


usando uma atribuio selectiva ao sinal F. As vrias escolhas devem ser
mutuamente exclusivas e cobrir todos os casos.

O cdigo seguinte constitui outra descrio fluxo de dados para o mesmo


detector.

55

4.8.

Projecto comportamental (ou funcional)

O principal construtor usado em descries comportamentais o processo, o


qual consiste numa srie de instrues sequenciais que so executadas em
paralelo com outras instrues e processos concorrentes. Um processo tem um
tempo de simulao nulo. Um processo em VHDL assim uma instruo
concorrente, com sintaxe:

Um processo no pode declarar sinais, apenas variveis, utilizadas para


guardar informao relativa ao estado do processo. A sintaxe da definio
duma varivel :
variable nome_variavel : tipo_variavel;
Um processo em VHDL est num de 2 estados: em execuo ou suspenso. A
lista de sinais includa na definio dum processo (lista de sensibilidade)
determina quando que ele executado. Um processo est inicialmente
suspenso. Quando um sinal da lista de sensibilidade muda de valor, o processo
retoma a execuo, desde a 1 instruo at ltima. Se um sinal da lista de
sensibilidade mudar de valor durante a execuo do processo, este ser
executado outra vez. A execuo continua at o processo terminar a execuo
sem que nenhum destes sinais tenha mudado de valor. Na simulao, a
execuo do corpo dum processo (at ele ser suspenso) decorre num tempo
de simulao nulo. Aps ter retomado a execuo, um processo correctamente
escrito ser suspenso ao fim de algumas execues. Contudo, possvel
escrever (incorrectamente) um processo que nunca suspenso.
Um exemplo: um processo com uma nica instruo X <= not X; e uma lista
de sensibilidade igual a (X). Como X muda em cada execuo, o processo
executa indefinidamente num tempo de simulao nulo. Na prtica, os
simuladores conseguem detectar estas situaes e terminar a simulao.
A instruo de atribuio sequencial dum valor a um sinal possui a mesma
sintaxe que a verso concorrente, mas ocorre no corpo dum processo em vez
de numa arquitectura:
nome-sinal <= expresso;
56

A instruo de atribuio dum valor a uma varivel possui a seguinte sintaxe:


nome-variavel := expresso;
Exemplo de uma descrio comportamental para o detector de nmeros
primos, em que se usa um processo com atribuies a variveis.

Alm da atribuio, pode usar-se outras instrues sequenciais, descritas por


alguns dos construtores mais populares, tais como: if, case, loop, for e while.
O case mais legvel que um if com mltiplas clusulas if/elsif e pode ser
sintetizado de forma mais adequada. As 2 figuras seguintes incluem a sintaxe
destes construtores.

57

No caso do case, as vrias escolhas devem ser mutuamente exclusivas e


cobrir todos os casos.
Exemplos da descrio comportamental para o detector de nmeros primos
usando um construtor if ou case, necessariamente includos num processo.

58

Exemplo da descrio comportamental para o detector de nmeros primos


usando um ciclo for, em que o tamanho da entrada - N - passou para 8 bits.

4.9.

Dimenso temporal

Nenhum dos exemplos anteriores aborda a dimenso temporal associada com


o funcionamento dos circuitos: tudo se passa num tempo de simulao nulo. O
VHDL modela adequadamente os aspectos relacionados com tempo. Em
VHDL pode especificar-se um atraso usando a palavra-chave after na instruo
de atribuio dum valor a um sinal.
Z <= 1 after 4ns when X=1 else
0 after 3ns;
Esta instruo modela uma porta que apresenta um atraso de 4ns quando a
sada Z muda de 01 e apenas 3ns quando muda de 10. Deste modo, ao
59

simular o modelo dum circuito obtm-se uma boa aproximao para o seu
comportamento temporal.
Outra forma de incorporar informao temporal numa descrio VHDL consiste
em usar a instruo wait. Esta instruo sequencial pode ser usada para
suspender um processo durante um intervalo determinado. frequente usar a
instruo wait para ajudar a descrever os padres que se aplicam nas
entradas dum circuito que est a ser simulado. Um exemplo:

A instruo wait pode assumir uma de vrias variantes:


wait;
wait on lista_sinais;
wait until condio;
wait for tempo;
4.10. Simulao
A partir do momento em que se dispe duma descrio VHDL sem erros de
sintaxe e de semntica, pode aplicar-se a descrio num simulador para
verificar se o circuito descrito funciona como esperado. O processo de
simulao arranca no instante zero de simulao. Neste instante, o simulador
inicia todos os sinais com o seu valor por defeito. Tambm se iniciam os sinais
e variveis para os quais o cdigo VHDL declare explicitamente valores iniciais.
A seguir, o simulador comea a executar todos os processos (e instrues
concorrentes) da descrio do circuito. Para simular a execuo de todos os
processos, o simulador usa (i) uma lista com eventos calendarizados (com
ocorrncia temporal escalonada) e (ii) uma matriz com os sinais a que cada
processo sensvel. No instante zero de simulao todos os processos so
escalonados para serem executados. Selecciona-se um dos processos e
executam-se todas as suas instrues sequenciais, incluindo os ciclos. Quando
a execuo deste processo terminar, escolhe-se outro para execuo e repete60

se este procedimento at que todos os processos tenham sido executados.


Completa-se assim um ciclo de simulao. Durante a execuo, um processo
pode atribuir novos valores a sinais. Os novos valores no so atribudos
imediatamente. Antes so colocados na lista de eventos e a sua efectivao
escalonada para um tempo determinado.
Se uma atribuio tiver um tempo de simulao explcito (usando a clusula
after, por exemplo), ento ela ser colocada na lista de eventos e escalonada
para que ocorra ao fim desse tempo. Caso contrrio, a atribuio
concretizada imediatamente. Na reaIidade a atribuio escalonada para
ocorrer num instante que dado pela soma do tempo actual com um atraso
minsculo (delta delay). O delta delay um intervalo infinitamente curto, que
mesmo somando ao tempo de simulao actual um nmero qualquer de delta
delays ainda se obtm o tempo de simulao actual. O conceito de delta delay
permite que um processo seja executado mltiplas vezes (se necessrio) num
tempo de simulao nulo. Quando se completa um ciclo de simulao,
percorre-se a lista de eventos em busca dos sinais em que vai ocorrer a
alterao mais prxima. A proximidade pode ser to diminuta quanto um delta
delay, ou ento ser um atraso real. No 2 caso o tempo de simulao avana.
Em qualquer dos casos, as alteraes num sinal, escalonadas para esse
instante, sero efectuadas. Os processos que forem sensveis s alteraes do
sinal que acaba de mudar sero escalonados para execuo no prximo ciclo
de simulao. A simulao evoluir indefinidamente at a lista de eventos estar
vazia.
O mecanismo da lista de eventos permite simular o funcionamento de
processos concorrentes num sistema uni-processador e garante um
funcionamento correcto mesmo quando os processos exigem vrias execues
antes de estabilizar.
Exemplo com 2 processos:
process (x,y)
begin
x <= '1' after 10 ns;
y <= x
after 3 ns;
end process;
process
begin
z <= x or y;
wait for 5ns;
end process;
A prxima figura contm o cdigo do testbench para ALU de 1 bit.

61

library IEEE;
use
IEEE.std_logic_1164.all;
entity testAlu1bit is
end entity test_alu1bit;
architecture tst of testAlu1bit is
component alu1bit is
port (
a, b, c : in std_logic;
sel
: in std_logic_vector
(1 downto 0);
res, f
: out std_logic);
end component alu1bit;
signal
signal
signal
signal

i1
i2
ci
op

:
:
:
:

std_logic := '0';
std_logic := '0';
std_logic := '0';
std_logic_vector
(1 downto 0) := "00";
signal res : std_logic;
signal co : std_logic;
begin
-- instanciar
-- a testar
ALU1: alu1bit
port map (
a
=>
b
=>
c
=>
sel
=>
res
=>
f
=>

o sistema

i1
i2
ci
op
res
co

process (i1) is
begin
if i1='1' then
i1 <= '0' after 10ns;
elsif i1='0' then
i1 <= '1' after 10ns;
end if;
end process;
process (i2) i
begin
if i2='1' then
i2 <= '0' after 20ns;
elsif i2='0' then
i2 <= '1' after 20ns;
end if;
end process;
process (ci) is
begin
if ci='1' then
ci <= '0' after 40ns;
elsif ci='0' then
ci <= '1' after 40ns;
end if;
end process;
process (op) is
begin
if op="00" then
op <= "01" after
elsif op="01" then
op <= "10" after
elsif op="10" then
op <= "11" after
elsif op="11" then
op <= "00" after
end if;
end process;
end architecture;

,
,
,
,
,
);

80ns;
80ns;
80ns;
80ns;

4.11. Sntese
O VHDL foi pensado para ser uma linguagem de descrio e simulao. Mais
tarde, foi tambm adoptado no processo de sntese. A linguagem possui vrias
caractersticas e construtores NO sintetizveis. O subconjunto da linguagem e
o estilo de programas apresentados at aqui so em boa medida sintetizveis
pela maior parte das ferramentas comerciais.
O cdigo que descreve um circuito pode ter um impacto enorme na qualidade
do circuito que se consegue sintetizar. Como exemplo pode dar-se o das
estruturas de controlo encadeadas, do tipo if-elsif-elsif-else. Estas estruturas
podem originar uma srie de portas lgicas em cadeia usadas para testar as
vrias condies. prefervel usar um case ou uma atribuio selectiva, desde
que as condies de seleco (choices) sejam mutuamente exclusivas.
62

Os ciclos dentro de processos so geralmente desdobrados para criar vrias


cpias da lgica combinacional que executa as instrues do corpo do ciclo.
Quando se pretende apenas uma cpia da lgica combinacional a executar as
instrues do corpo do ciclo, necessrio especificar um circuito sequencial.
Quando um processo inclui instrues condicionais que no cobrem todas as
combinaes das entradas, o compilador sintetiza uma latch para guardar o
valor da(s) sada(s) nos casos no cobertos. Geralmente, estas latches no so
desejadas.
Algumas das caractersticas e construtores que no so sintetizveis em todas
as ferramentas so: memria dinmica, ficheiros e apontadores.

63

5. Questes Prticas de Sistemas Combinacionais


5.1.

PLDs (dispositivos de lgica programvel)

Os primeiros PLDs a surgir foram os Programmable Logic Arrays (PLAs).


Uma PLA um dispositivo combinacional, com estrutura a 2-nveis AND-OR,
que pode ser programado para efectuar qualquer expresso lgica do tipo
soma-de-produtos. O tipo de expresso implementvel numa PLA est limitada
pelo:
Nmero de entradas da PLA
(n)
Nmero de sadas da PLA
(m)
Nmero de termos de produto da PLA ( p )
O dispositivo definido como uma PLA n x m com p termos de produto.
Normalmente, p << 2n. Uma PLA n x m com p termos de produto contm p
ANDs de 2n-entradas e m ORs de p-entradas.
Cada entrada In est ligada a um buffer que gera uma cpia desse sinal (In) e o
seu complemento (/In). As ligaes possveis de estabelecer esto assinaladas
com Xs. O dispositivo programado estabelecendo as ligaes necessrias.
As ligaes so feitas atravs de fusveis (clulas memria).

Uma PLA 4x3 com 6 termos de produto.

A prxima figura mostra uma representao mais compacta da PLA 4x3 com 6
termos de produto.

64

Um exemplo de utilizao da PLA:


O1 = P1+P2
O2 = P3+P4+P5
O3 = P1+P3+P6

= I1I2 + I1I2I3I4
= I1I3 + I1I3I4 + I2
= I1I2 + I1I3
+ I1I2I4

Outro tipo de PLD, que mais no do que um caso particular de PLA, o


Programmable Array Logic (PAL). Um dispositivo PAL tem um array de ORs
fixo. Numa PAL, os termos de produto no so partilhados por vrias sadas.

65

Cada sada dispe dum conjunto nico e fixo de termos de produto que pode
usar. Uma PAL normalmente mais rpida do que uma PLA equivalente.

Apresenta-se a seguir uma vista parcial do diagrama lgico da PAL 16L8.

A PAL 16L8 possui 10 entradas I1..I10, 2 sadas O1 e O8, 6 entradas/sadas


IO2..IO7, 64*32 fusveis e cada OR recebe 7 termos de produto.
5.2.

Descodificadores

Um descodificador um circuito que converte uma entrada codificada numa


sada codificada, sendo os cdigos de entrada e sada diferentes.
Habitualmente, o cdigo de entrada tem menos bits que o de sada. O
descodificador mais comum o descodificador n-para-2n ou binrio. Usa-se um
descodificador binrio quando preciso activar uma sada de entre 2n
possveis, com base no valor duma entrada de n-bits.

66

Descodificador 2-para-4:

Tabela de verdade.

Smbolo.

Esquemtico.
(por exemplo, Y0=EN./I1./I0)

Um CI 74x139 contm dois descodificadores 2-para-4 independentes.


Smbolo:

Tabela de verdade para um dos descodificadores:

Os sinais com bolha so activos a zero


(anexa-se _L ao nome para indicar esse facto).

UM CI 74x138 contm um descodificador 3-para-8:

Smbolo do 74x138.

67

Tabela de verdade do descodificador do 74x138.

Utilizando vrios descodificadores possvel descodificar entradas com mais


bits. Por exemplo, pode utilizar-se 2 descodificadores 3-para-8 para construir
um descodificador 4-para-16 (ver figura em baixo). O descodificador de cima
(U1) s est habilitado a funcionar quando N3=0 e o descodificador de baixo
(U2) quando N3=1. EN_L=0 habilita ambos.

Para descodificar entradas ainda com mais bits, pode usar-se uma hierarquia
de descodificadores. Por exemplo, pode construir-se um descodificador 5-para32 com um descodificador 2-para-4 e quatro 3-para-8 (ver figura seguinte). O
descodificador 2-para-4 descodifica os 2 bits mais significativos, gerando 4
68

enables para os descodificadores 3:8. Os 4 descodificadores 3-para-8


descodificam os 3 bits menos significativos (0:7, 8:15, 16:23 e 24:31).

Um descodificador pode ser descrito em VHDL de vrias formas. A forma mais


primitiva (e pouco legvel) consistiria em usar uma descrio estrutural
equivalente ao circuito lgico da pgina 67.

69

A segunda alternativa (mais legvel) consistiria em usar uma descrio fluxo de


dados. Como exemplo, apresenta-se o descodificador 3:8 com enable.
entity decoder3to8 is
port (
A : in std_logic_vector(2 downto 0);
EN : in std_logic;
Y : out std_logic_vector (7 downto 0) );
end entity decoder3to8;

architecture dataFlow of decoder3to8 is


signal Y_i : std_logic_vector (7 downto 0) ; -- sinal auxiliar
begin
with A select Y_i <=
"00000001" when "000",
"00000010" when "001",
"00000100" when "010",
"00001000" when "011",
"00010000" when "100",
"00100000" when "101",
"01000000" when "110",
"10000000" when "111",
"00000000" when others;
Y <= Y_i when EN='1' else "00000000";
end architecture dataFlow;

Outra alternativa para o descodificador 3:8 seria uma descrio


comportamental. Neste caso, a entrada A, os 3 enables e a sada Y so todos
activos a 1 (ver figura).

5.3.

Descodificadores de 7-segmentos

Os visores de 7-segmentos usam-se em relgios, calculadoras e outros


instrumentos que precisem mostrar informao digital. Um dgito desenhado
iluminando alguns dos 7 segmentos A a G.
Um descodificador de 7-segmentos recebe como entrada um dgito BCD
com 4-bits e tem como sadas os 7 sinais que fazem iluminar cada um dos
segmentos.

70

Descodificador 7-segmentos do CI 74x49:

BI_L: permite que os segmentos iluminem (BI_L=1) ou no (BI_L=0)

TPC 1:
Obter as expresses minimizadas para as sadas do descodificador de 7segmentos ao lado usando mapas de Karnaugh (sem BI_L).
TPC 2:
Escrever em VHDL uma descrio fluxo de dados para o descodificador de 7segmentos.

5.4.

Codificadores

Um codificador um circuito que codifica uma entrada numa sada com um


nmero de bits normalmente inferior ao da entrada. O codificador mais simples
de construir o codificador 2n-para-n ou binrio. A sua funcionalidade
oposta do descodificador binrio.

71

Codificador 2n-para-n.

Codificador 8-para-3:
Assume-se que apenas uma entrada est activa em cada instante. As
equaes das sadas do codificador so:
Y2 = I4 + I5 + I6 + I7
Y1 = I2 + I3 + I6 + I7
Y0 = I1 + I3 + I5 + I7

Q: O que acontece se 2 entradas estiverem activas, por ex. I2 e I4? Porqu?


Para implementar um codificador de pedidos (request encoder), o codificador
binrio no funciona porque assume que apenas uma entrada est activa.

72

Se for possvel efectuar mltiplos pedidos em simultneo, deve atribuir-se uma


prioridade a cada sinal de entrada REQi . Quando se efectuam mltiplos
pedidos, o dispositivo (codificador de prioridade) coloca na sada o nmero
do pedido mais prioritrio.

A entrada I7 a que possui maior prioridade. Nas sadas A2:A0 colocado o


nmero da entrada mais prioritria activa, se houver alguma activa. A sada
IDLE indica se h (IDLE=0) ou no alguma entrada activa (IDLE=1). Para obter
as expresses das sadas, usam-se as variveis intermdias H0:H7. Hi 1, se
Ii for a entrada a 1 mais prioritria:
H7
H6
H5
H4
...

= I7
= I6I7
= I5I6I7
= I4I5I6I7
(equaes idnticas para H3 a H0)

A0
A1
A2
IDLE

= H1 + H3 + H5 + H7
= H2 + H3 + H6 + H7
= H4 + H5 + H6 + H7
= I0I1I2I3I4I5I6I7

73

5.5.

Buffers Tri-state

Algumas sadas de dispositivos podem assumir um 3 estado elctrico, que no


0 nem 1, mas sim alta impedncia (high-Z) ou estado flutuante. Este estado
equivale a ter a sada desligada do resto do circuito. Os dispositivos que tm
uma sada passvel de estar em alta impedncia possuem uma entrada de
controlo (output enable) que define se a sada est em High-Z ou no.
Um buffer tri-state um circuito que coloca na sada a entrada ou ento
coloca a sada em alta impedncia.

Os buffers tri-state permitem ligar vrias sadas a um mesmo ponto dum


circuito, desde que apenas um OE esteja activo em cada instante. Esta
situao necessria quando vrios dispositivos ligam a um barramento
comum.
A descrio VHDL que segue, para um buffer tri-state, usa o nvel Z do tipo
STD_LOGIC para representar o estado High-Z.

5.6.

Multiplexadores

Um multiplexador (ou apenas mux) um comutador digital que encaminha a


informao de uma das n entradas para a nica sada (ver figura abaixo). A
entrada SEL, com s bits, permite seleccionar uma de entre n entradas, logo:
s = log2 n.
Quando o enable est inactivo (EN=0), Y=0. Quando est activo (EN=1), o mux
funciona.
Os multiplexadores so usados nos computadores, entre os registos do
processador e a ALU, para seleccionar os registos que ligam s entradas da
ALU.

74

O CI 74x151 implementa um multiplexador 8:1 (8 entradas de 1-bit: D0..D7). As


entradas selectoras so A,B e C, em que C o bit mais significativo (msb). A
entrada de enable EN_L activa a zero. O CI disponibiliza duas verses da
sada: uma activa a zero (Y) e outra activa a 1 (Y_L).

A figura que se segue apresenta o multiplexador 2:1 de 4-bits 74x157. A


entrada selectora S e a entrada de enable G_L activa a zero. A notao da
tabela de verdade foi estendida para que as entradas apaream nas colunas
das sadas, tornando a tabela mais clara e mais compacta.

75

Pode usar-se um multiplexador para seleccionar uma de n origens dos dados a


enviar para um barramento. Por outro lado, pode usar-se um
desmultiplexador para encaminhar os dados que flem num barramento para
um de m destinos (ver figura).

A funcionalidade dum desmultiplexador inversa daquela que apresenta um


multiplexador. Um desmultiplexador de 1-bit e n-sadas possui uma entrada de
dados e s entradas selectoras para escolher para qual das n=2s sadas
encaminha a nica entrada de dados.

O exemplo da prxima figura descreve um MUX 4:1, em VHDL estilo fluxo de


dados com uma atribuio selectiva. O MUX possui entradas de 8 bits (A, B, C
e D).

76

O exemplo que se segue descreve um MUX 4:1, em VHDL estilo


comportamental com uma instruo CASE. O MUX possui entradas de 8 bits
(A, B, C e D).

Em VHDL fcil descrever um multiplexador que apresente uma estratgia de


seleco da entrada a colocar na sada bem particular e rebuscada, usando as
potencialidades do CASE / SELECT e da condio por defeito. Por exemplo
recorrendo a: (others => U).

77

5.7.

Portas XOR e circuitos detectores de paridade

Uma porta OR-exclusivo (XOR) uma porta de 2-entradas cuja sada 1, se


exactamente uma das entradas for 1. Uma porta XOR gera um 1 na sada se
as entradas forem diferentes.
Uma porta NOR-exclusivo (XNOR) precisamente o oposto: gera um 1 na
sada se as entradas forem iguais. A operao XOR por vezes representada
pelo smbolo .
X Y = XY + XY
(X Y) = XY + XY

Pode usar-se um de 4 smbolos para representar uma porta XOR e XNOR:

Estas alternativas resultam da aplicao da seguinte regra: quaisquer 2 sinais


(entradas ou sada) duma porta XOR ou XNOR podem ser complementados
sem que a funo lgica implementada seja alterada. Escolhe-se o smbolo que
mais representativo da funo lgica implementada.
Ao colocar N-1 portas XOR em cascata constri-se um circuito com N entradas
e uma nica sada que funciona como um detector de paridade impar, que
gera um 1 na sada quando tiver um nmero impar de entradas a 1. Se
negarmos a sada de qualquer dos 2 circuitos da figura seguinte, obtm-se um
detector de paridade par, em que a sada 1 quando o circuito tiver um
nmero par de entradas a 1.

78

i) Detector de paridade impar com estrutura


daisy-chain
ii) Detector de paridade impar com estrutura
tipo rvore (mais rpida)

VHDL dispe de operadores xor e xnor nativos. Uma porta XOR de 3-entradas
pode ser especificada pelo seguinte cdigo VHDL em estilo fluxo de dados.

O prximo exemplo descreve, em VHDL comportamental, um detector de


paridade com uma entrada de 9-bits.

79

Pode acontecer que esta descrio comportamental no seja eficientemente


sintetizada pela ferramenta de sntese, o que pode implicar ter que recorrer a
uma descrio estrutural.

5.8.

Comparadores

Comparar 2 palavras binrias uma operao comum num computador. Um


circuito que compara 2 palavras binrias e indica se elas so iguais ou
diferentes um comparador. Alguns comparadores (i) distinguem entre
entradas que representam nmeros com e sem sinal e (ii) indicam uma relao
aritmtica entre as entradas (maior que ou menor que). Estes circuitos so
geralmente denominados por comparadores de amplitude.
Uma porta XOR e XNOR pode ser vista como sendo 1 comparador de 1-bit.

A sada DIFF activada quando as entradas forem diferentes.


O prximo exemplo um comparador de 4-bits que efectua o OR entre as
sadas de 4 portas XOR.

A sada DIFF activada quando algum par de bits da entrada (Ai , Bi) for
diferente. O circuito pode ser facilmente adaptado para funcionar com palavras
de qualquer nmero de bits.
Um circuito iterativo genrico um circuito combinacional com a seguinte
estrutura:

80

O circuito composto por n mdulos idnticos, cada um com entradas e sadas


primrias e ainda com entradas e sadas em cascata. As entradas em cascata
mais esquerda (boundary inputs) esto normalmente ligadas a valores fixos.
Pode comparar-se dois valores X e Y de n-bits efectuando a comparao bit-abit (como o componente CMP), usando em cada etapa apenas um bit EQi que
indica se todos os pares de bits comparados at ai so iguais ou no:
1.
2.
3.
4.

Colocar EQ0 a 1 e i a 0.
Se EQi 1 e Xi=Yi, colocar EQi+1 a 1.
Seno colocar EQi+1 a 0.
Incrementar i.
Se i < n regressar etapa 2.

O algoritmo anterior implementado pelo seguinte circuito:

81

Esto disponveis no mercado vrios comparadores MSI. O CI 74x85


implementa um comparador de 4-bits.

Este CI dispe de sadas com indicao de maior que, menor que e igual
a. O CI 74x85 possui ainda entradas em cascata para combinar mltiplos
circuitos de modo a construir comparadores com mais do que 4 bits.
AGTBOUT = (A>B) + (A=B) AGTBIN
AEQBOUT = (A=B) AEQBIN
ALTBOUT = (A<B) + (A=B) ALTBIN
Por exemplo, (A>B) dado por:
A3B3 + (A3B3) A2B2 + (A3B3) (A2B2) A1B1 +
(A3B3) (A2B2) (A1B1) A0B0
Com 3 circuitos 74x85, pode construir-se um comparador de 12-bits.

82

O VHDL dispe de operadores para comparar qualquer dos tipos de dados


nativos. Os operadores igualdade (=) e desigualdade (/=) aplicam-se a todos os
tipos. Para comparar arrays e records, os operandos devem ter a mesma
dimenso e estrutura, e os operandos so comparados elemento-a-elemento.
Os outros operadores do VHDL (>, <, >=, <=) aplicam-se apenas a inteiros,
tipos enumerados e arrays unidimensionais de inteiros ou de tipos enumerados.

5.9.

Somadores, subtractores e ALUs

A adio (ou soma) a operao aritmtica mais frequente nos sistemas


digitais. Um somador combina dois operandos aritmticos aplicando as regras
da adio. Nos nmeros sem sinal e nos nmeros com sinal em complemento
para 2 usam-se as mesmas regras da adio, logo os mesmos somadores.
Um somador pode efectuar a subtraco atravs da soma do minuendo com o
subtraendo complementado. Tambm se pode construir um circuito subtractor
que efectua de forma directa a subtraco. Uma ALU (Unidade Aritmtica e
Lgica) efectua a soma, a subtraco e outras operaes lgicas.
O somador mais simples, designado por semi-somador, soma dois operandos
X e Y de 1-bit, produzindo um resultado com 2-bits. O resultado da soma varia
de 0 a 2, logo necessrio 2 bits para o expressar. O bit menos significativo do
resultado designado por HS (half sum) e o bit mais significativo do resultado
designado por CO (carry out). As equaes que definem o resultado da soma
so:
HS
= X Y = XY + XY
CO = XY
Para somar operandos com mais do que um bit, preciso considerar o
transporte de uma soma (ao nvel do bit) para a seguinte.
O bloco elementar com que se constri um circuito que executa esta operao
um somador completo. Alm das entradas X e Y a adicionar, um somador
completo possui um bit de transporte como entrada: CIN. O resultado da soma
dos 3 bits varia de 0 a 3 e pode ser expresso por duas sadas de 1 bit: S e
COUT. As equaes que definem o resultado da soma so:
S
= X Y CIN
COUT = X Y + X CIN + Y CIN

ii) Smbolo do
somador completo

i) Esquemtico do somador completo

83

iii) Smbolo alternativo


do somador completo

Duas palavras em binrio, cada uma com n bits, podem ser somadas usando
um somador de ripple. Um somador de ripple composto por uma cadeia de
n somadores completos, onde cada somador processa um bit:

A entrada de transporte do somador do bit menos significativo (c0) colocada


normalmente a 0. A sada de transporte de cada somador completo ligada
entrada de transporte do somador completo seguinte e que mais significativo
do que ele.
A operao de subtraco binria anloga adio binria. Um subtractor
completo possui como entradas X (minuendo), Y (subtraendo) e BIN (borrow
in) e como sadas D (diferena) e BOUT (borrow out). As equaes que
definem o resultado da subtraco so:
D
BOUT

= X Y BIN
= XY + XBIN + YBIN

manipulando estas equaes obtm-se:


D
= X Y BIN
usando YBIN=YBIN
BOUT = XY + XBIN + YBIN T. DeMorgan e distributividade da +
Um subtractor completo pode ser construdo com um somador completo:
X-Y = X+ (-Y) = X+Y+1
Nesta expresso o 1 resulta de BIN ter substitudo CIN, logo CIN[0]=0 passou
a BIN[0]=1. Ainda nesta expresso, Y o complemento para 1 de Y.
Comparando as equaes da soma
S
= X Y CIN
COUT = X Y + X CIN + Y CIN
com as equaes da subtraco
D
= X Y BIN
BOUT = XY + XBIN + YBIN
Constata-se que um somador pode funcionar de subtractor se:
S
for substitudo por D
X
for substitudo por X
Y
for substitudo por Y
CIN
for substitudo por BIN
COUT for substitudo por BOUT
84

Uma ALU um circuito combinacional que pode efectuar diversas operaes


aritmticas e lgicas com um par de operandos de b-bits. A operao a
efectuar especificada por um conjunto de entradas selectoras. Tipicamente,
uma ALU implementada num CI do tipo MSI possui 2 operandos de 4-bits e 3 a
5 entradas selectoras da operao a efectuar, permitindo escolher uma
operao de entre 32 possveis.
Por exemplo, o CI 74x181 implementa uma ALU de 4-bits. A operao a
efectuar pela ALU do 74x181 seleccionada pelas entradas M e S3-S0.

85

A tabela de verdade da ALU do 74x181 :

M=1 utilizado para efectuar operaes lgicas que no usam transporte.

Na figura a baixo, apresenta-se um circuito descrito em VHDL de modo a que


ao sintetizar se partilhe um somador entre duas somas: A+B e C+D. Deste
modo, poupa-se lgica porque em vez de dois somadores usa-se apenas um
somador mais dois MUX2:1 para seleccionar as entradas (A ou C; B ou D).

86

5.10. Multiplicadores
O algoritmo tradicionalmente usado para multiplicar nmeros binrios emprega
deslocamentos e somas na obteno do resultado. Contudo, no essa a
nica forma possvel de implementar a multiplicao.
Dadas duas entradas de n-bits (X, Y), pode escrever-se a tabela de verdade
que expressa o produto P=X*Y de 2n-bits atravs duma funo combinacional
de X e Y. A maior parte das estratgias de implementao de multiplicadores
combinacionais baseiam-se no algoritmo tradicional com deslocamentos e
somas.

O esquemtico seguinte implementa a estratgia de multiplicao anterior.


Pode descrever-se em VHDL comportamental a estratgia de multiplicao
anterior, usando uma descrio que imita essa estrutura. Para representar as
ligaes entre somadores de 1 bit usam-se arrays bidimensionais, como se
ilustra a seguir:
type ARRAY8x8 is array (7 downto 0) of std_logic_vector(7 downto 0);
variable CARRY : ARRAY8x8;
Contudo a biblioteca IEEE std_logic_arith fornece o operador * para
operandos com sinal (SIGNED) e sem sinal (UNSIGNED). Este operador
descrito usando um algoritmo idntico ao anterior e permite escrever um
programa que multiplica 2 valores sem sinal com uma nica linha de cdigo:

87

Os blocos + so somadores completos de 1 bit.


O pior atraso do circuito 15 * atraso dum somador completo.

88

6. Conceitos sobre Sistemas Sequenciais


6.1.

Circuitos combinacionais vs sequenciais

Os circuitos lgicos podem ser classificados de combinacionais ou sequenciais.


Um circuito combinacional aquele em que as sadas s dependem das
entradas actuais. Exemplo: comando com boto para escolher o canal da TV.
Um circuito sequencial aquele em que as sadas dependem das entradas
actuais, mas tambm da sequncia de valores por que passaram as entradas.
Exemplo: comando para escolher o canal da TV com um boto para ir para o
canal prximo/anterior (boto +/-). No possvel descrever o comportamento
dum circuito sequencial simplesmente com uma tabela que relacione as
entradas com as sadas.
Para saber para onde vai evoluir um circuito sequencial, preciso conhecer em
que situao ele se encontra actualmente. Ou seja, o estado desse circuito
deve ser memorizado.

6.2.

Estado

O estado dum circuito sequencial o conjunto de variveis de estado, que


guarda a informao relativa ao passado/presente desse circuito, necessria
para determinar o seu comportamento futuro. No exemplo do comando para
escolher o canal da TV, o nmero do canal actual o estado actual. Conhecido
o estado actual, pode sempre prever-se o prximo estado em funo das
entradas actuais. Num circuito digital, as variveis de estado so valores
binrios e correspondem a sinais internos desse circuito. Um circuito com n
variveis de estado binrias pode ter at 2n estados.
Um circuito sequencial tambm pode ser designado de mquina de estados
finita, ou seja, mquina com um nmero de estados finito.
As mudanas de estado acontecem em instantes impostos por um sinal de
relgio. Um sinal de relgio activo no nvel alto se as mudanas de estado
acontecerem no bordo ascendente do relgio ou quando o relgio est no nvel
ALTO. Caso contrrio, activo no nvel baixo. O perodo do relgio (T) coincide
com o intervalo entre transies sucessivas (do relgio) na mesma direco. A
frequncia do relgio (f) o inverso do perodo do relgio (f = 1 / T).
Neste mdulo abordam-se dois tipos de circuitos sequenciais:

Circuitos sequenciais simples: usam portas lgicas elementares (ANDs,


ORs,) e ciclos (ou caminhos) com feedback para criar elementos de
memria (latches e flip-flops).
Mquinas de estados sncronas com um sinal relgio: usam latches e
flip-flops para criar circuitos que funcionam sob o controlo dum sinal de
relgio.

89

6.3.

Elementos bi-estveis

O circuito sequencial mais simples de todos um circuito sem entradas e


construdo com um par de inversores interligados de modo a estabelecer um
ciclo com feedback. A este circuito d-se o nome de bi-estvel porque possui
dois estados (ou situaes) estveis:

Quando Q est no nvel ALTO, o inversor inferior tem a sada no nvel


BAIXO, forando deste modo o inversor superior a colocar a sua sada
no nvel ALTO (como se assumiu inicialmente).
Quando Q est no nvel BAIXO, o inversor inferior tem a sada no nvel
ALTO, forando deste modo o inversor superior a colocar a sua sada no
nvel BAIXO (como se assumiu inicialmente).

Pode usar-se uma nica varivel de estado (sinal Q) para definir o estado do
circuito. Logo, h 2 estados possveis: Q=0 e Q=1.
O elemento bi-estvel to simples que no possui entradas, o que impede
que o seu estado seja controlado. Quando o circuito alimentado, ele assume
um estado aleatrio e permanece nele indefinidamente. Efectuando uma
anlise do bi-estvel segundo uma perspectiva analgica percebe-se melhor o
seu funcionamento.

90

O bi-estvel est em equilbrio se as tenses de entrada e de sada em ambos


os inversores assumirem um valor constante e consistente com (i) as ligaes
do ciclo de feedback e (ii) a funo de transferncia dos inversores.
O bi-estvel est em equilbrio nas posies assinaladas com stable. H um
3 ponto de equilbrio, assinalado com metastable, que ocorre quando Vout1 e
Vout2 no so nem 0 nem 1 lgico. Se no houvesse rudo e o circuito atingisse
o ponto meta-estvel, poderia permanecer nele indefinidamente. O ponto
meta-estvel porque o rudo tender a levar o circuito para uma das posies
estveis.

Na figura seguinte mostra-se uma analogia do ponto de meta-estabilidade com


uma bola lanada sobre o pico duma montanha.

6.4.

Latches e flip-flops

As latches e os flips-flops so os blocos elementares com os quais se constri


a maior parte dos circuitos sequenciais. Um flip-flop um dispositivo
sequencial que amostra as suas entradas e que altera as suas sadas apenas
em instantes determinados por um sinal de relgio. Uma latch um dispositivo
sequencial que observa todas as suas entradas continuamente e altera as suas
sadas em qualquer momento, independentemente de qualquer sinal de relgio.

91

Pode construir-se uma latch S-R com portas NOR (S=set, R=reset).
Normalmente QN o complemento de Q. Se S e R estiverem ambos a 0, o
circuito comporta-se como o elemento bi-estvel. Deve activar-se S ou R para
forar o ciclo de feedback a atingir o estado (estvel) desejado. A entrada S
define (sets ou presets) a sada Q a 1 e a entrada R define (resets ou clears) a
sada Q a 0.

Pode construir-se uma latch S-R, com entradas de set e reset activas no nvel
baixo, com portas NAND. O funcionamento desta latch S-R idntico ao da
anterior, com 2 diferenas:
S_L e R_L so activas no nvel baixo, logo a latch mantm o seu estado
quando S_L=R_L=1.
Quando S_L e R_L estiverem ambas activas, ambas as sadas ficam a 1
(e no a 0).

Um OR com as entradas negadas equivale a 1 NAND.


Em relao latch S-R, /S e /R trocaram de posio.

Uma latch S-R (ou /S-/R) reage ao valor das entradas em qualquer momento.
Contudo, pode ser alterada para reagir ao valor das entradas apenas quando
uma entrada de enable (C) estiver activa. O circuito alterado comporta-se tal
como a latch S-R quando C=1 e mantm o estado quando C=0.

92

Quando a finalidade da utilizao duma latch guardar um bit de informao, a


latch D a mais recomendada. Pode construir-se uma latch D a partir duma
latch S-R.

Esta latch elimina a situao problemtica da latch S-R, que ocorre quando S e
R so activadas (a 1) em simultneo. Quando C=1, a latch est aberta /
transparente e a sada Q acompanha a entrada D. Quando C=0, a latch est
fechada e a sada Q mantm o ltimo valor.

H um atraso associado com a propagao dos sinais desde as entradas at


sada Q. No intervalo definido pelos setup time mais o hold time, em torno do
bordo descendente de C, a entrada D deve permanecer fixa. Se estes 2 tempos
no forem respeitados, a sada da latch assumir um valor imprevisvel.
Um flip-flop D positive-edge-triggered (FF D sensvel transio positiva)
um circuito construdo com um par de latches D que amostra a entrada D e
altera as sadas Q e QN apenas no bordo ascendente do sinal CLK.

93

A primeira latch chama-se mestre e est aberta quando CLK=0. Quando CLK
muda para 1, a latch mestre fecha. A segunda latch, o escravo, est aberta
enquanto CLK=1, mas a sada muda de valor apenas no incio desse intervalo,
dado que o mestre est fechado nesse intervalo.
O tringulo na entrada CLK um indicador de entrada dinmica e assinala um
comportamento sensvel s transies (edge-triggered).

Num flip-flop D negative-edge-triggered (FF D sensvel transio negativa)


inverte-se a entrada de relgio e a entrada D (as sadas Q e QN) passam a ser
amostradas (alteradas) no bordo descendente do CLK.

No intervalo definido pelos setup time mais o hold time, em torno dos bordos do
CLK a que o FF sensvel, a entrada D deve permanecer fixa.
Alguns flip-flops D possuem 2 entradas assncronas que servem para forar o
seu estado, independentemente das entradas CLK e D: PR e CLR.

94

Estas entradas tm a mesma funcionalidade do set (S) e do reset (R) da latch


S-R. As entradas assncronas devem ser usadas nas fases de inicializao e
teste dos circuitos. Alguns flip-flops D tm ainda a possibilidade de manter
inalterado o ltimo valor por que passou a sada. Para esse fim, adiciona-se ao
FF D uma entrada de enable.

Q: Na figura anterior, porque no se aplica o enable no CLK, usando-se assim


apenas um AND?
As latches S-R so teis em sistemas de controlo, em que comum ter
condies independentes para colocar bits de controlo a 0/1. Quando se
pretende que um dado bit de controlo seja apenas alterado em certos instantes
determinados por um sinal de relgio, ento exige-se um flip-flop S-R.

O comportamento deste flip-flop o seguinte: possui uma estrutura


mestre/escravo, no verdadeiramente sensvel transio, o ltimo valor
guardado em QM (com C=1) s passa para a sada Q quando C mudar de 1
para 0 e se S=R=1, antes de C passar de 1 para 0, o valor da sada
imprevisvel.

95

O problema que ocorre quando S e R esto ambos a 1 resolvido no flip-flop


J-K com estrutura mestre/escravo. As entradas J e K so anlogas a S e R. No
entanto, activar J s activa a entrada S da latch mestre se Q=0 (QN=1). Activar
K s activa a entrada R da latch mestre se Q=1. Deste modo, se as entradas J
e K forem activadas simultaneamente, as sadas do flip-flop mudam para o
estado oposto do actual.

Com um flip-flop D edge-triggered pode construir-se um flip-flop J-K edgetriggered (sensvel s transies). O flip-flop JK amostra o valor das entradas
(J e K) e altera as sadas (Q e QN) no bordo ascendente do CLK de acordo
com a equao caracterstica: Q* = J . Q + K . Q
No intervalo definido pelos setup time mais o hold time, em torno do bordo
ascendente de CLK, as entradas J e K devem permanecer fixas.
O flip-flop JK tem aplicao comum em mquinas de estado porque gera
menos lgica combinacional.

96

O flip-flop T (de toggle) muda de estado em cada transio 0 para 1 do sinal


de relgio.

A sada Q do flip-flop possui uma frequncia que metade da frequncia da


entrada T. Pode usar-se um flip-flop D ou um J-K para construir o flip-flop T.

O flip-flop T tambm pode ter uma entrada de enable. Neste caso, o flip-flop s
muda de estado no bordo ascendente do relgio (T) se a entrada de enable EN
estiver activa.

Tambm se pode usar um flip-flop D e J-K para obter um flip-flop T com enable.

97

6.5.

Projecto de mquinas de estados

Uma mquina de estados finita (FSM) pode ser definida formalmente por um
quinteto <S,I,O,F,G>, em que:
S representa o conjunto de estados.
I representa o conjunto de entradas.
O representa o conjunto de sadas.
F representa a funo que gera o prximo estado.
G representa a funo que gera as sadas.
A funo F atribui a cada combinao (estado, entradas) outro estado:
F:SxIS. A funo G obtm o valor das sadas para o estado actual.
Existem 2 tipos de FSM, aos quais correspondem 2 definies diferentes para a
funo G que gera as sadas. Nas mquinas do tipo Moore, a funo G baseiase no estado: G:SO e as sadas dependem apenas do estado da FSM. Nas
mquinas do tipo Mealy, a funo G baseia-se nas entradas e estado:
G:SxIO e as sadas dependem do estado e das entradas da FSM.
O meta-modelo FSM assume que o tempo est dividido em intervalos
uniformes e que as transies ocorrem apenas no incio de cada intervalo. Para
definir esses intervalos, a que se chama ciclos de relgio, usa-se um sinal de
relgio. Cada modelo FSM pode ser implementado com flip-flops e portas
lgicas.
Genericamente, uma mquina de estados sncrona e do tipo Mealy possui a
seguinte estrutura:

A memria de estado implementada com um conjunto de flip-flops que


guarda o estado actual da mquina. Os flip-flops partilham o sinal de relgio. As
funes F e G so circuitos estritamente combinacionais.
Genericamente, uma mquina de estados sncrona e do tipo Moore possui a
seguinte estrutura:

98

A nica diferena entre as mquinas de Mealy e de Moore reside na forma


como as sadas so geradas. Regra geral, uma mquina de Mealy tem
algumas sadas de Mealy e outras de Moore. Para que a mquina seja o mais
rpida possvel, o bloco G tem que ser o mais simples possvel (apenas fios).
Para conseguir este objectivo, usam-se variveis de estado que coincidem com
as sadas.
Os passos envolvidos no projecto duma mquina de estados sncrona so:
Analisar a descrio ou especificao em linguagem natural do sistema.
Desenhar um diagrama de estados, usando nomes simblicos para os
estados.
Construir a tabela de estados e sadas.
[opcional] Minimizar o nmero de estados da tabela.
Escolher um conjunto de variveis de estado e atribuir uma combinao
(dessas variveis) a cada estado.
Substituir na tabela o nome dos estados pela combinao (de variveis)
que lhe corresponde.
Escolher um tipo de flip-flop para a memria de estado.
Construir uma tabela de excitao que mostre quais os valores a aplicar
na entrada dos flip-flops de modo a obter o prximo estado desejado,
para cada combinao de estados e entradas.
Obter a expresso para cada sada do bloco do prximo estado
(excitao dos F/Fs).
Obter a expresso para cada sada da FSM.
Exemplo duma mquina de estados:
Projectar uma mquina de estados que possui como entradas A e B e como
sada Z. A sada Z 1 se:
A apresentar o mesmo valor nos 2 ciclos de relgio anteriores, ou
B estiver fixo a 1 desde a ltima vez que a condio anterior se
verificou.
Nos outros casos, a sada Z 0.
Nesta fase, a especificao pode parecer pouco clara. O projectista deve
transformar uma especificao ambgua, escrita em linguagem natural, numa
tabela de estados sem ambiguidades. A mquina do tipo Moore, uma vez que

99

as sadas s dependem do estado actual, ou seja, dependem apenas do que


ocorreu nos ciclos de relgio anteriores.
Processo de construo da tabela de estados e sadas (S=estado actual,
S*=prx.estado):

100

A mquina apresenta o seguinte diagrama de estados:

No prximo passo determina-se quantas variveis binrias so necessrias


para representar todos os estados da tabela de estados e sadas. De seguida,
atribui-se uma combinao (das variveis de estado binrias) a cada estado. A
combinao atribuda a um estado particular o cdigo do estado.
Com n flip-flops, pode codificar-se 2n estados. O nmero de flip-flops
necessrio para codificar os s estados log2s. No presente problema, como
existem 5 estados, exige-se 3 flip-flops.
A tabela de estados e sadas :

H vrias alternativas de codificao dos 5 estados.


A atribuio mais simples dos s cdigos aos estados consiste em usar os s
valores binrios iniciais que aparecem na contagem binria ordenada. Esta
atribuio nem sempre aquela que conduz s expresses mais simplificadas
para as sadas do bloco que gera o prximo estado e para as sadas da FSM.

101

A atribuio de cdigos aos estados tem um forte impacto no custo (rea) do


circuito e deve ter em considerao a seleco dos elementos de memria e a
abordagem a usar na concretizao dos 2 blocos de lgica combinacional
(prximo estado e sadas). Na maior parte dos problemas, para escolher a
melhor atribuio de cdigos aos estados, seria preciso experimentar todas as
atribuies possveis. No exequvel para fazer isto manualmente!!! No
presente exemplo, existem 6.720 formas diferentes de atribuir 5 (das 8)
combinaes de 3-bits aos 5 estados. Em alternativa, o projectista deve guiarse pela sua experincia e por orientaes prticas para obter uma boa
atribuio de cdigos aos estados.
Orientaes para a atribuio de cdigos aos estados:
Escolher um cdigo inicial que seja fcil de forar com o mecanismo
de reset dos F/Fs (normalmente ser 000...0 ou 111...1).
Minimizar o nmero de variveis de estado que mudam em cada
transio de estado.
Maximizar o nmero de variveis de estado que se mantm
inalteradas num grupo de estados interrelacionados.
Explorar as simetrias existentes na especificao do problema e as
simetrias que lhe correspondem na tabela de estados. Por exemplo,
se um estado (ou grupo de estados) tiver um significado semelhante
a outro estado (grupo), aps escolher a atribuio para o primeiro
estado (grupo) deve escolher-se uma atribuio similar (diferindo em
1,2, bits) para o segundo.
Decompor o conjunto de variveis de estado em bits ou campos de
bits, cada um relacionado com um aspecto funcional das entradas
ou das sadas da FSM.
Ponderar a hiptese de usar mais variveis de estado do que o valor
mnimo, por forma a tornar possvel a decomposio anterior.
Algumas das orientaes anteriores foram incorporadas na atribuio do tipo
decomposed. Ao estado INIT foi atribudo o cdigo 000, um cdigo fcil de
forar atravs da entrada assncrona dos flip-flops (CLR). O estado INIT nunca
mais acedido aps o arranque da mquina. Por isso, usou-se o bit (varivel
de estado) Q1 para indicar se o estado actual ou no INIT. Q2 e Q3 permitem

102

distinguir os outros 4 estados. Q2 est relacionado com o facto de a sada ser 1


ou no no estado actual e Q3 est relacionado com o valor anterior de A.

A atribuio do tipo one-hot pode ser aplicada a qualquer mquina de estados.


Este tipo de atribuio utiliza mais variveis de estado do que o valor mnimo:
usa 1 bit por estado. Esta opo conduz normalmente a expresses simples
para as sadas dado que cada flip-flop s colocado a 1 nas transies para
um nico estado.
A atribuio do tipo almost one-hot segue a estratgia one-hot excepto para o
estado inicial, em que se usa a combinao 000.

No presente exemplo existem cdigos de estado no usados porque o nmero


de estados menor do que o nmero de combinaes das variveis de estado.
Como lidar com os cdigos no usados?
Numa abordagem com risco mnimo, considera-se que a mquina pode atingir
um estado com cdigo no usado, por exemplo ao ocorrer uma falha no
hardware. Para qualquer estado com cdigo no usado, implementa-se uma
transio explcita para regressar a um estado seguro. Numa abordagem com
custo mnimo, considera-se que a mquina nunca atinge um estado com cdigo
no usado. Nos cdigos de estado no usados, as entradas na tabela de
estados relativas ao prximo estado podem ser definidas como dont care.
Para obter a verso final da tabela de (transies de) estados e sadas
substitui-se o nome dos estados pelo seu cdigo. A tabela obtida mostra qual
o prximo estado para cada combinao (estado actual, entradas). Para o

103

exemplo em estudo, a tabela de transies de estados e sadas foi obtida


efectuando uma atribuio do tipo decomposed.

i) Atribuio do tipo decomposed


usada.

ii) Tabela de transies de estados e sadas.

No prximo passo obtm-se a tabela de excitao. Esta tabela define quais os


valores a aplicar nas entradas dos flip-flops por forma a que a mquina transite
para o prximo estado desejado. A estrutura e o contedo da tabela de
excitao dependem do tipo de flip-flop escolhido para implementar a memria
de estado (D, J-K, T, ...). Actualmente, a maioria dos projectos com mquinas
de estado utiliza flip-flops D, por existirem em todas as tecnologias (CIs SSI,
PLDs, FPGAs) e por serem fceis de usar.
A equao caracterstica do flip-flop D : Q* = D. No caso de se usar flip-flops
D, a tabela de excitao idntica tabela de transies de estados, excepto
os nomes das colunas que deixam de ser o prximo estado (Q1* Q2* Q3*) para
ser a entrada dos F/Fs (D1 D2 D3).

104

Se estiver completa, a tabela de excitao funciona como tabela de verdade


das sadas combinacionais D1, D2 e D3, ao exprimi-las em funo das
entradas A e B e do estado Q1, Q2 e Q3. Se estiver completa, a tabela anterior
tambm funciona como tabela de verdade das sadas da FSM, ao exprimir a
sada combinacional Z em funo do estado Q1, Q2 e Q3.
Com base na informao da tabela de excitao, pode usar-se mapas de
Karnaugh para obter a expresso mnima para cada sada combinacional. A
tabela de excitao apresentada no est completa porque no especifica o
valor do prximo estado e da sada, em todas as combinaes (estado,
entradas). Ou seja, a informao relativa aos estados no usados no consta
da tabela.
No presente exemplo, o tratamento dos estados no usados seguir as duas
abordagens mencionadas: risco mnimo e custo mnimo. Na abordagem de
risco mnimo, em qualquer estado no usado (Q1Q2Q3 001, 010, 011) o
prximo estado INIT 000.
A partir dos mapas em baixo (mais o mapa de D2 que falta) obtm-se as
expresses:
D1 = Q1 + Q2 Q3
D2 = Q1Q3A+Q1Q3A+Q1Q2B
D3 = Q1 A + Q2 Q3 A
A tabela de excitao mostra que Z est activa nos estados 110 e 111:
Z = Q1 Q2 Q3 + Q1 Q2 Q3
= Q1 Q2

105

Na abordagem de custo mnimo, em qualquer estado no usado (Q1Q2Q3


001, 010, 011) o prximo estado dont care. A partir dos mapas em baixo
(mais o mapa de D2 que falta) obtm-se as expresses:
D1 = 1
D2 = Q1Q3A+Q3A+Q2B
D3 = A
Como Z est activa nos estados 110 e 111 e dont care nos estados no
usados, obtm-se:
Z = Q2

O diagrama lgico da mquina de estados projectada com a abordagem de


custo mnimo encontra-se na prxima figura.

106

frequente usar diagramas de estados para projectar mquinas de estados.


Projectar um diagrama de estados similar, mas ainda mais simples, do que
escrever uma tabela de estados. Contudo, fcil conceber um diagrama de
estados com algumas ambiguidades, que so impossveis de ocorrer numa
tabela de estados. Num diagrama de estados incorrectamente projectado,
comum o prximo estado no ser especificado em certas combinaes (estado,
entradas). Tambm pode ocorrer a situao em que alguma combinao
(estado, entradas) permite transitar para mais do que um estado.
O prximo exemplo uma mquina de estados que controla as luzes de trs
num carro. Existem 3 luzes do lado direito (RA, RB e RC) e outras 3 do lado
esquerdo (LA, LB e LC). A mquina de estados possui 2 entradas LEFT /
RIGHT, indicando um pedido para virar esquerda / direita. Possui tambm
uma entrada de emergncia HAZ indicando um pedido para as 6 luzes
piscarem.

107

O diagrama de estados e a tabela das sadas (auxiliar do diagrama de estados)


para o controlador de luzes do carro so agora apresentados:

Este diagrama limitado, s est correcto se no houver activao simultnea


de vrias entradas. O diagrama de estados deve ser alterado para:
Atribuir uma prioridade superior entrada HAZ.
Considerar a activao simultnea de LEFT e RIGHT como uma
situao de emergncia.
O novo diagrama de estados j no tem ambiguidades porque as condies
associadas s vrias transies que partem do mesmo estado so mutuamente
exclusivas entre si e no conjunto cobrem todas as combinaes das entradas.

108

Convm demonstrar que o novo diagrama de estados no tem ambiguidades:

Transies a partir do estado IDLE.

109

Antes de sintetizar a FSM, vai introduzir-se uma alterao: permite-se que a


FSM v para o estado LR3 o mais cedo possvel, ou seja, antes de terminar
uma sequncia L1L2L3 ou R1R2R3 j iniciada, desde que tenha
ocorrido um pedido de emergncia atravs da activao de HAZ.
A FSM possui 8 estados, logo exige-se 3 flip-flops para a memria de estado.
Convm explicar a atribuio de cdigos aos estados:

IDLE=000.
Q2 distingue as partes simtricas R1R2R3 e L1L2L3.
Usa-se cdigo gray em Q1Q0 nas sequncias IDLEL1L2L3 e
IDLER1R2R3 para minimizar as transies nas variveis de
estado.

110

Apresenta-se agora a tabela de transies de estado. A tabela foi alterada para


ser mais compacta, passando de 64 para 15 linhas. Isto foi conseguido
substituindo as combinaes das entradas por expresses.

6.6.

Mquinas de estados em VHDL

A linguagem VHDL no possui qualquer construtor especfico para descrever


mquinas de estados. A maioria dos conceitos, necessrios para descrever
mquinas de estados sncronas em VHDL, j foi apresentada. O processo e o
mecanismo da lista de eventos (usado pelos simuladores para guardar o
historial das mudanas que ocorrem nos sinais) so o suporte base para
descrever circuitos sequenciais em VHDL. Para modelar o comportamento
sncrono com o relgio exige-se apenas uma caracterstica do VHDL ainda
no introduzida: o atributo event, que pode ser anexado ao nome dum sinal
para originar um valor que ser igual a true se o sinal tiver mudado de valor e
igual a false em caso contrrio.
frequente usarem-se tipos de dados enumerados e o construtor CASE para
descrever mquinas de estados.
Pode usar-se o atributo event para modelar um flip-flop D
Com um reset assncrono (CLR) e
Sensvel s transies positivas do relgio (CLK).

111

A influncia da entrada de reset sobrepe-se ao comportamento que depende


da entrada de relgio. Para qualquer transio do sinal CLK (01 ou 10),
CLKevent igual a true.

A seguir apresentam-se mais 2 formas de descrever um flip-flop D sensvel s


transies positivas, mas sem entrada de reset.

Em VHDL, possvel descrever de vrias formas uma mquina de estados


como a do 1 exemplo apresentado neste captulo. A primeira abordagem
consiste em construir a tabela de estados e sadas no papel e depois convertla manualmente para cdigo VHDL. Esta tabela j foi obtida antes e repetida
a seguir. A 1 coisa a fazer nesta abordagem definir um tipo enumerado Sregtype, cujos valores permitidos so identificadores correspondentes ao nome
dos vrios estados: INIT, A0, A1, OK0 e OK1. Depois declara-se um sinal Sreg
desse tipo enumerado, utilizado para guardar o estado actual da mquina.
O corpo da arquitectura possui duas instrues concorrentes:
Um processo que reage apenas ao sinal CLOCK e implementa todas as
transies de estado.
Uma atribuio selectiva que gera a sada Z da mquina de Moore.

112

113

Como feita a atribuio de cdigos aos estados? Ou seja, qual a estratgia e


qual o nmero de variveis de estado usados?
A ferramenta de sntese tem a liberdade de substituir os identificadores dos
estados pelos valores inteiros (ou binrios) que desejar. Regra geral, a
estratgia seguida para atribuir os cdigos do tipo mais simples, usando
cdigos cujo valor segue a ordem pela qual os estados esto listados no tipo
enumerado. As ferramentas de sntese actuais permitem ao projectista usar
uma codificao diferente.
Uma das formas usar a interface (grfica) da ferramenta para escolher o tipo
de codificao. A outra consiste em usar uma instruo attribute (ver (1) na
figura seguinte). O atributo definido pelo utilizador enum_encoding exige a
biblioteca SYNOPSYS e passado ferramenta de sntese (ver (2) na figura
seguinte).

Outra forma de forar um tipo de codificao dos estados consiste em definir o


registo de estado mais explicitamente. Neste exemplo, define-se um subtipo
Sreg_type baseado em std_logic com a largura desejada para o registo de
estado. Depois, possvel definir uma constante desse subtipo para cada
estado. Deste modo, fora-se o tipo de codificao (valores) e os estados
continuam a ser acedidos por nomes simblicos (nomes).

114

Exemplo do sistema que controla as luzes de trs dum carro (pgina 110), em
que a mquina de estados agora descrita em VHDL. Usam-se cdigos de
estado iguais aos valores das sadas (pgina 108), dispensando assim a lgica
para gerar as sadas.

115

7. Questes Prticas de Sistemas Sequenciais


7.1.

Introduo

A maior parte dos sistemas digitais reais do tipo sequencial. O


comportamento sequencial resulta de ciclos de realimentao, de latches ou de
flip-flops que fazem o estado actual do sistema depender do historial das
entradas. Para que o nmero de estados de alguns sistemas digitais reais
(como um computador) no atinja um valor extremamente elevado, habitual
decomp-los em partes, como por exemplo: caminhos de dados (data paths),
bancos de registos e unidades de controlo. Um sistema tpico possui vrias
unidades funcionais com uma interface bem conhecida para elas poderem ser
interligadas. Por sua vez, uma unidade funcional pode tambm ser construda
custa de blocos mais simples passveis de ser tratados de forma hierrquica e
em nveis de abstraco diferentes.
Apesar de os sistemas digitais poderem ser muito complexos, a maior parte
deles construdo em torno de uma mquina de estados. Durante a dcada de
80, o processo utilizado para projectar uma mquina de estados era o que se
usou no 1 exemplo do mdulo anterior. Ou seja, escrevia-se a tabela de
estados e sadas que aps algumas transformaes gerava a tabela de
verdade para cada sada combinacional. A sntese manual da mquina
terminava com a simplificao das expresses das sadas atravs de mapas de
karnaugh (ou de outro mtodo qualquer). Actualmente, a maior parte dos
projectistas descreve a tabela de estados e sadas das mquinas de estados
numa HDL (como ABEL, VHDL ou Verilog). Uma ferramenta de sntese para
essa HDL processa a descrio da mquina de modo a efectuar uma sntese
equivalente efectuada manualmente e obtm uma implementao numa
determinada tecnologia (PLD, CPLD, FPGA ou ASIC) escolhida, desde que
seja suportada pela ferramenta.
7.2.

Contadores

Chama-se contador a um circuito sequencial sncrono que descrito por um


diagrama de estados que possui apenas um ciclo. O modulus do contador
coincide com o nmero de estados desse ciclo.

116

A um contador com m estados chama-se um contador mdulo-m. Um contador


com um modulus que no potncia de 2 possui alguns estados que no so
visitados no modo normal de funcionamento.
O tipo de contador mais comum o contador binrio de n-bits. Este contador
implementado com n flip-flops e possui 2n estados, os quais so visitados
seguindo a sequncia 0, 1, 2,, 2n-1, 0, 1, Cada estado codificado usando
o valor binrio de n-bits que correspondente posio desse estado na
sequncia 0, 1, 2,, 2n-1. Um exemplo: se um estado estiver na posio 0 p
2n-1, o seu cdigo o valor binrio que representa p em n-bits.
Um contador binrio de n-bits pode ser construdo apenas com n flip-flops tipo
T, sem qualquer tipo de lgica combinacional. Numa implementao deste tipo,
cada bit Qi do contador muda quando o bit Qi-1 imediatamente antes (e menos
significativo) mudar de 1 para 0. O contador designado por contador de
ripple porque a informao de transporte propagada desde o LSB at ao
MSB.

Apesar de exigir menos lgica do que qualquer outro tipo de contador, o


contador de ripple tambm mais lento. O pior cenrio, que ocorre quando o
MSB tiver que mudar, a sada s vlida passados n*tTQ sobre a transio
ascendente do relgio.(em que tTQ o tempo de atraso que a entrada demora a
afectar a sada dum flip-flop tipo T).
Num contador sncrono, o sinal de relgio de todos os flip-flops est ligado a
um sinal CLK comum. Deste modo, a sada de todos os flip-flops muda de valor
no mesmo instante, passado um atraso tTQ aps a transio ascendente de
CLK.
Um contador sncrono de ripple exige que se use flip-flops T com enable.
Assim, a sada Q muda de valor na transio ascendente da entrada T mas
apenas se a entrada EN estiver activa. A sada Q de cada flip-flop T muda de
117

valor se CNTEN estiver activa e todas as sadas Q de ordem inferior forem 1.


Tal como o contador de ripple, o contador sncrono tambm pode ser
construdo com uma quantidade de lgica por bit fixa. No exemplo seguinte, um
flip-flop T com enable e uma porta AND de 2 entradas. A este tipo de contador
tambm se chama contador srie sncrono porque o sinal de enable se
propaga em srie desde o LSB at ao MSB.

Se o perodo do relgio for demasiado reduzido, poder no dar tempo para


que o sinal de enable se propague desde o LSB at ao MSB. Este problema
eliminado se cada entrada EN for gerada por uma porta AND prpria sem
recurso aos ENs de ordem inferior (ver figura em baixo). A alterao
introduzida resulta no tipo de contador com estrutura mais rpida: o contador
sncrono paralelo.

118

O CI 74x163 contm um contador sncrono binrio de 4-bits. O contador


construdo com flip-flops tipo D. A entrada sncrona LD (load) permite colocar o
valor das entradas D-C-B-A nas sadas Q. A entrada sncrona CLR (clear)
permite fazer o reset das sadas Q. A sada RCO (ripple carry do MSB) 1,
durante um ciclo de relgio, quando todas as sadas Q e a entrada ENT
estiverem a 1.

Apresenta-se agora o smbolo e a tabela de estados do contador sncrono


binrio de 4-bits 74x163.

A prxima figura contm a descrio em VHDL comportamental para o


contador sncrono binrio de 4-bits 74x163.

119

A figura que se segue descreve um contador semelhante ao 74x163 mas que


conta em excesso de 3 (3, 4, , 11, 12, 3, ).

120

7.3.

Registos de deslocamento (shift registers)

Um registo de deslocamento um registo de n-bits com a capacidade de


deslocar em uma posio o valor armazenado, em cada ciclo de relgio. Um
registo de deslocamento com entrada e sada srie possui apenas uma entrada
(SERIN) e uma sada (SEROUT). Na entrada SERIN aplica-se um novo bit a
deslocar at sada da cadeia de F/Fs, um F/F em cada ciclo do relgio. O bit
aplicado na entrada surge na sada SEROUT passados n ciclos do relgio e sai
do registo no ciclo seguinte (n+1). Um registo de deslocamento com entrada e
sada srie, e com n-bits, permite atrasar um sinal em n ciclos do relgio.

Um registo de deslocamento com entrada srie e sada paralela possui uma


sada para cada bit armazenado, colocando-os disponveis em 1Q a NQ. Os
registos deste tipo so utilizados para efectuar converses de srie para
paralelo. Pode ainda construir-se um registo de deslocamento com entrada
paralela e sada srie ou com entrada e sada paralela. O registo de
deslocamento com entrada e sada paralela til na implementao das
operaes de SHIFT e ROTATE.

121

O registo de deslocamento com 8-bits dos CIs 74x164 e 74x166 so


unidireccionais dado que s efectuam o deslocamento dos bits numa direco.
O CI 74x164 do tipo entrada srie e sada paralela e possui uma entrada de
reset CLR assncrona. O CI 74x166 do tipo entrada paralela e sada srie,
tambm com uma entrada de reset CLR assncrona. O 74x166 regista a
entrada quando SH/LD 0 e desloca quando for 1.

O CI MSI 74x194 um registo de deslocamento com 4-bits e bidireccional, do


tipo entrada e sada paralela. O registo de deslocamento bidireccional porque
desloca os bits armazenados em ambas as direces (direita/esquerda), de
acordo com as entradas de controlo S1 e S0. O CI 7x194 considerado um
registo de deslocamento universal, dado poder funcionar como qualquer um
dos tipos de registo de deslocamento menos genrico apresentado.

122

7.4.

Contadores baseados em registos de deslocamento

Pode combinar-se um registo de deslocamento com lgica combinacional para


dar origem a uma mquina de estados com um diagrama de estados cclico.
Este tipo de circuito chama-se contador baseado num registo de
deslocamento (shift-register counter).

Um contador baseado num registo de deslocamento diferente dum contador

binrio porque no conta por ordem (ascendente ou descendente) e utilizado


em aplicaes de controlo.
O contador baseado num registo de deslocamento mais simples de todos
emprega um registo de deslocamento de n-bits para obter um contador com n
estados, e d pelo nome de contador em anel.

Pode obter-se um contador em anel de 4-bits a partir dum CI 74x194 (reg. de


deslocamento). Quando o RESET est a 1, o contador em anel coloca
123

ABCD=0001 na sada Q3Q2Q1Q0 (estado inicial). No modo normal de


funcionamento, com RESET=0, o contador efectua o deslocamento esquerda
do valor das sadas. O circuito no robusto porque se o contador atingir um
estado fora do ciclo normal de 4 estados (0000, 0101, 1010, 1111, etc), vai
permanecer fora do ciclo.

Pode projectar-se um contador em anel com mecanismo de auto-correco de


modo a que todos os estados fora do ciclo normal possuam transies para
estados dentro desse ciclo. Um exemplo o contador de 4-bits que se obtm
com um CI 74x194 e uma porta NOR (ver figura seguinte). A porta NOR
usada para aplicar um 1 em LIN, apenas quando os 3 LSBs (Q2Q1Q0) forem 0.

124

Deste modo, todos os estados fora do ciclo normal conduzem a um estado


dentro desse ciclo. Independentemente do estado anormal atingido, a
correco para o estado normal 0001 faz-se num mximo de 4 ciclos de
relgio, dispensando a utilizao do RESET.

7.5.

PLDs sequenciais

Vamos relembrar a PAL combinacional 16L8 atravs duma vista parcial do


seu diagrama lgico.

Esta PAL possui 10 entradas primrias (I1..I10), 0 sadas registadas, 2 sadas


combinacionais (O1 e O8), 6 entradas/sadas (IO2..IO7), cada OR recebe 7
termos de produto e cada AND recebe 16 entradas.

125

A PAL sequencial 16R8 possui um flip-flop tipo D entre a sada de cada OR do


array AND-OR e uma sada da PAL. O array AND-OR da PAL 16R8 igual ao
da PAL 16L8. Todos os flip-flops partilham o mesmo sinal de relgio CLK. Cada
flip-flop liga a um buffer tri-state, que por sua vez liga ao exterior da PAL
atravs dum pino. Todos os buffers partilham o mesmo sinal de output enable
OE.

As entradas do array AND-OR da PAL 16R8 so as entradas primrias I1 a I8


da PAL (na forma directa e complementada) mais as sadas dos 8 flip-flops (na
forma directa e complementada). O facto de as sadas dos flip-flops
alimentarem o array AND-OR facilita a implementao do bloco que gera as
transies de estado nas mquinas de estados. As caractersticas da PAL
16R8 so: 8 entradas primrias, 8 sadas registadas, 0 sadas combinacionais,
0 entradas/sadas, cada OR recebe 8 termos de produto e cada AND recebe 16
entradas.
A variante 16R6 de PAL dispe de 2 entradas/sadas (sendo as sadas
combinacionais) e 6 sadas registadas.

126

8. CPLDs e Memrias
8.1.

PLDs complexas (CPLDs)

Introduo
medida que a tecnologia de fabrico de CIs avanou, surgiu o interesse
natural em produzir PLDs cada vez maiores para tirar partido duma densidade
de transstores (dentro do chip) cada vez maior.
Uma CPLD um dispositivo que incorpora num nico chip uma coleco de
PLDs interligadas por uma estrutura programvel. Esta estrutura permite que
as PLDs sejam interligadas do mesmo modo que o seriam fora do chip. A
famlia de CPLDs 9500 da Xilinx vai ser usada como exemplo para a
arquitectura duma CPLD.

Como se pode expandir a arquitectura das PLDs simples?


Hiptese de expanso:
Aumentar o nmero de entradas e sadas duma PLD convencional, ou seja,
partindo das PALs 16V8, 20V8, 22V10 poderia chegar-se a PALs mais densas,
tais como 32V16 ou 128V64.
Problemas desta alternativa:

Aumentar n vezes o nmero de entradas e sadas exige n2 vezes mais


espao no chip, logo uma soluo dispendiosa. Isto porque ao

127

aumentar n vezes um array de ANDs de tamanho (a*b) corresponderia


um novo array de ANDs de tamanho (n*a)*(n*b)=n2 *(a*b).

Quando se aumenta o nmero de entradas, a lgica combinacional fica


cada vez mais lenta dado que o nmero de entradas do array de ANDs
aumenta.

Soluo: Utilizar vrias PLDs interligadas por 1 estrutura programvel


relativamente reduzida.

Esta arquitectura menos genrica do que uma PLD de grande dimenso,

mas a utilizao duma ferramenta fitter liberta o projectista da tarefa de atribuir


a cada bloco tipo PLD (da CPLD) uma parte do sistema a implementar.
CPLDs da Xilinx
Tendo por base o mesmo bloco PLD (designado por Bloco Funcional na
Xilinx) pode construir-se variantes da mesma famlia de CPLD diferindo no:
Nmero de blocos PLD;
Nmero de pinos de entrada/sada (I/O).
Muitas CPLDs possuem menos pinos de I/O do que clulas base
(macroclulas):
Algumas macroclulas fornecem lgica interna mas no ligam as sadas
ao exterior do chip.
possvel obter encapsulamentos com um nmero de pinos diferente,
mas com a mesma lgica interna.
possvel obter CPLDs com o mesmo encapsulamento, mas com
lgicas internas diferentes (ver tabela seguinte).

128

A arquitectura das CPLDs XC95xx da Xilinx composta por:

Um conjunto de blocos funcionais e


de blocos de entrada/sada (IOBs) interligados por
uma matriz de comutao que encaminha as entradas e sadas para os
blocos funcionais (ver figura).

Arquitectura das CPLDs da famlia 9500 da Xilinx.

129

Cada bloco funcional possui 18 macroclulas, cada uma implementa uma


funo combinacional ou registada. As entradas de cada bloco so os sinais de
relgio globais, um sinal de set/reset global, sinais de enable e at 36 entradas
genricas. Cada bloco gera at 18 sadas para a matriz de comutao e/ou
IOBs. Com as 36 entradas e o complemento dessas 36 entradas pode gerar-se
at 90 termos de produto: 18 macroclulas * 5 termos por macroclula = 90
termos.
Existem caminhos de realimentao dentro do bloco funcional, permitindo que
as sadas desse bloco possam ser usadas como entradas do array de ANDs do
mesmo bloco.

Bloco funcional das CPLDs da famlia 9500 da Xilinx.

130

Cada macroclula pode implementar uma funo combinacional ou registada.


Os contributos para os termos de produto so gerados pelo alocador de termos
de produto a partir de:

5 entradas pt1 a pt5 provenientes directamente do array de ANDs.


alguns termos de produto provenientes de outras macroclulas: 1 da
clula acima e 1 da clula abaixo, no exemplo a apresentar.

Macroclula das CPLDs da famlia 9500 da Xilinx.

O alocador de termos de produto gera contributos para:


A sada duma funo combinacional.
A entrada de dados / o sinal de relgio / os sinais de set e de reset duma
funo registada.
Uma sada de enable.
O alocador de termos de produto controla o modo como os termos de
produto so utilizados na implementao de cada funo lgica. Uma funo
lgica pode envolver todos os 90 termos de produto, mas se usar apenas 15
termos (5 da macroclula e 5/5 da macroclula acima/abaixo) o atraso
mnimo. O alocador de termos de produto pode gerar somas de produto
parciais a usar nessa ou em outras macroclulas.

131

Por exemplo, o alocador de termos de produto gera 2 sinais:

O primeiro sinal uma soma de produtos parcial, envolvendo 3 termos


de produto, a enviar para as macroclulas vizinhas (sinal soma3 na
figura em baixo).

O segundo sinal uma soma de 2 termos de produto, provenientes de


macroclulas vizinhas, que implementa a funo lgica da prpria
macroclula (sinal soma2 na figura em baixo).

Alocador de produtos das CPLDs da famlia 9500 da Xilinx.

132

A matriz de comutao disponibiliza caminhos programveis entre as


entradas e as sadas. As entradas so as sadas dos buffers de entrada dos
IOBs e as 18 sadas de cada FB, enquanto as sadas ligam s 36 entradas de
cada FB.

Matriz de comutao das CPLDs da famlia 9500 da Xilinx.

133

O bloco de entrada/sada (IOB) funciona como interface entre a lgica interna


e os pinos. Cada IOB contm:

Um buffer de entrada.
Um buffer tri-state para sada.
Lgica para gerar o sinal que controla o buffer de sada.

Este sinal pode ser gerado de vrias formas:

o sinal de output enable gerado internamente pelo alocador de termos


de produto.
um de entre os dois sinais de output enable globais/externos (OE1 ou
OE2).
um sinal fixo a 0 (buffer tri-state sempre desligado => pino s de
entrada).
um sinal fixo a 1 (buffer tri-state sempre ligado => pino s de sada).

Bloco de entrada/sada das CPLDs da famlia 9500 da Xilinx.

134

8.2.

Memrias: ROMs e RAMs

Qualquer circuito sequencial possui pelo menos um tipo de memria, uma vez
que cada flip-flop e latch guarda um bit de informao. Contudo, o termo
memria usado para identificar um dispositivo em que os bits esto
armazenados de forma estruturada, normalmente em forma de array
bidimensional, em que se acede a uma linha de bits de cada vez.
O campo de aplicao da memria vasto e variado:

Em microprocessadores (uPs);
Em sistemas baseados em uPs ou microcontroladores, para guardar os
dados a processar e/ou as instrues a executar;
Em dispositivos de armazenamento portteis: cartes SD/CF, flash
drivers, leitores MP3
Em sistemas udio/vdeo (como leitores/gravadores de CD/DVD) para
guardar uma parte da informao a processar e assim melhorar o
desempenho.

No CPU dum microprocessador, a ROM pode ser usada para guardar


informao que define os procedimentos bsicos a executar no arranque do
sistema. A cache dos microprocessadores tambm uma memria com
menos capacidade mas maior desempenho. A memria principal uma
memria de maior capacidade mas menor desempenho.
ROMs
Uma memria s de leitura (ROM - Read-Only Memory) um circuito
combinacional com n entradas e b sadas (ver figura). As entradas definem o
endereo de entrada e as sadas os dados de sada. Uma ROM pode ser vista
como um dispositivo que guarda a tabela de verdade duma funo lgica
combinacional com n entradas e b sadas.

135

A tabela de verdade duma funo lgica combinacional com 3 entradas e 4


sadas pode ser guardada numa ROM de tamanho 23x4. Os dados de sada da
ROM coincidem com o valor das sadas na linha (da tabela de verdade)
seleccionada pelos bits de endereo.

Como uma ROM um circuito combinacional, no verdadeiramente uma


memria. Mas pode pensar-se na ROM como um dispositivo que guarda a
informao definida no momento em que ela foi fabricada. A ROM uma
memria no-voltil, dado que mantm o contedo mesmo quando se desliga a
alimentao.

Estrutura interna duma ROM:

Depende da tecnologia usada no seu fabrico.


Mas habitual incluir/no-incluir um dodo ou transstor para programar
um 1/0 numa dada posio da matriz da ROM.
A prxima figura ilustra a estrutura duma ROM 128x1, em que a
descodificao do endereo se processa em 2 dimenses para reduzir o
tamanho do descodificador.
A ROM 128x1 est organizada segundo uma matriz bidimensional de 8
linhas x 16 colunas.
O descodificador usa os 3 bits MS do endereo para seleccionar uma
linha.
O MUX 16:1 usa os 4 bits LS do endereo para seleccionar uma coluna.

136

137

Actualmente, as ROM so fabricadas num nico CI e no com componentes


discretos. Uma ROM com capacidade de alguns Mbits custa menos de 5.
O contedo duma ROM pode ser programado usando um de vrios mtodos.
Para programar o contedo duma mask-programmable ROM, fornece-se ao
fabricante uma lista (ficheiro) que define o padro de ligaes e de noligaes a efectuar na(s) matriz(es) da ROM. Este processo de fabrico
dispendioso e s se usa para produes em grande escala.
O processo de programao duma ROM programvel (PROM) idntico ao da
mask ROM, excepto que o contedo da PROM pode ser gravado usando um
programador de PROMs. Uma PROM fabricada com todos os bits no mesmo
valor, normalmente a 1. O programador permite mudar o valor dos bits para 0,
nas posies requeridas.
Uma erasable programmable ROM (EPROM) programvel tal como uma
PROM, mas o seu contedo pode ser apagado e colocado no estado de tudo a
1, usando uma luz ultravioleta. Provavelmente a aplicao mais frequente das
EPROMs para guardar o cdigo a executar pelo microprocessador ou
microcontrolador dos sistemas embebidos. comum utilizar EPROMs durante
o desenvolvimento do cdigo a usar nos sistemas embebidos, dado que esse
cdigo vai ser alterado repetidamente durante a fase de depurao. Como as
ROMs e as PROMs so mais baratas do que as EPROMs similares, quando o
desenvolvimento do cdigo estiver concludo, substitui-se a EPROM por uma
ROM ou PROM para que a produo do sistema seja menos dispendiosa.
Uma electrically erasable programmable ROM (EEPROM) idntica a uma
EPROM, excepto que o contedo da EEPROM pode ser apagado
electricamente (pela aplicao duma tenso). As EEPROMs no so alternativa
s RAMs porque o tempo de escrita muito superior e no esto vocacionadas
para serem reescritas indefinidamente (apenas milhares de vezes).
Muitas vezes as sadas da ROM (O7:O0) ligam a um barramento comum, ao
qual ligam vrios dispositivos com o objectivo de nele escrever, ainda que em
instantes distintos (ver prxima figura). Assim, muitas ROMs possuem sadas
em tri-state e uma entrada OE (Output Enable) que deve ser activada para que
as sadas apaream no exterior do chip. Para facilitar o desenho de certos
circuitos em que h mltiplas ROMs ligadas ao mesmo barramento, embora
apenas uma tenha a sada activa em cada instante, as ROMs possuem uma
entrada CS (Chip Select). Neste caso, para que as sadas em tri-state estejam
disponveis no exterior necessrio que as entradas OE e CS estejam ambas
activas.

138

Uma ROM de 16K x 8 bits.

Descodificao de endereos para gerar os 4 sinais CS usados na leitura de 4


ROMs 32Kx8, o mesmo dizer 128Kx8:

HIMEM_L=0 se A19:A17=111, ou seja, as ROMs esto nos 128K endereos + significativos.


SE0000_L=0 se A16:A15=00, ou seja, selecciona a ROM U2.

139

Algumas das vantagens em usar ROMs no projecto de circuitos:

O projecto dos circuitos rpido e simples.


O circuito resultante normalmente mais rpido do que um circuito com
vrios CIs SSI/MSI/PLDs.
A funcionalidade implementada pela ROM pode ser alterada facilmente,
mudando apenas o contedo nela guardado, sem ter que se alterar
qualquer lgica no seu exterior.
O preo das ROMs, por ser um dispositivo estruturado, diminui
constantemente.
A densidade das ROMs aumenta constantemente, alargando o tipo de
problemas que se pode resolver com um nico chip.

Algumas das desvantagens em usar ROMs no projecto de circuitos:

Em circuitos simples ou medianamente complexos, uma soluo


baseada em ROMs pode ser mais cara, consumir mais ou ser mais lenta
do que um circuito com vrios CIs SSI/MSI/PLDs.
Para implementar funes com mais de 20 entradas, uma soluo
baseada em ROMs no exequvel devido limitao imposta pelo
tamanho das ROMs disponveis. Por exemplo, implementar um somador
de 16 bits com ROMs exigiria muitos milhes de bits (232x16).

RAMs
A designao memria de leitura/escrita (RWM - Read/Write Memory) aplica-se
a arrays de memria que permitem que a informao seja guardada e lida em
qualquer momento. Actualmente, a maior parte das memrias RWM do tipo
RAM.
Numa memria de acesso aleatrio (RAM - Random-Access Memory), o tempo
que demora a ler ou escrever um bit no depende da sua localizao. Segundo
a definio anterior, as ROMs tambm so memrias de acesso aleatrio, mas
a designao RAM geralmente s se aplica a RAMs que suportam leitura e
escrita. Numa memria RAM esttica (SRAM), o contedo escrito numa
determinada posio mantm-se enquanto o chip estiver alimentado, a no ser
que se escreva outro valor nessa posio. Uma memria RAM dinmica
(DRAM), s mantm o contedo guardado em cada posio se ele for reposto
(refreshed) periodicamente. O refrescamento consegue-se lendo o contedo de
determinada posio e reescrevendo-o na mesma posio.
A maior parte das RAMs so memrias do tipo voltil. Ou seja, quando se
desliga a alimentao perde-se o seu contedo. Contudo, algumas RAMs
mantm o contedo mesmo quando se desliga a alimentao. Neste caso, so
memrias do tipo no-voltil.

140

Uma RAM de 2nxb bits possui como entradas um endereo de n bits, b bits de
dados e (3) sinais de controlo e como sadas apenas b bits de dados:

Os sinais de controlo so semelhantes aos da ROM apresentada, adicionandose o sinal WE que habilita a escrita na RAM: CS, OE e WE. Quando se activa
as entradas WE e CS, o valor da entrada de dados escrito na posio da
RAM seleccionada pelo endereo.
Cada posio, ou clula, de memria numa RAM esttica comporta-se como
uma latch D, e no como um flip-flop D sensvel s transies do relgio. Ou
seja, sempre que WE e CS estiverem activos, a latch associada com a posio
seleccionada est aberta: a sada segue a entrada de dados. O valor que fica
guardado na posio em causa aquele que estiver presente na sada de
dados da latch quando ela fecha.
Normalmente, as RAMs estticas permitem apenas 2 tipos de acesso: leitura e
escrita.
Para efectuar uma leitura:

Coloca-se um endereo na entrada de endereo, mantendo as entradas


de controlo CS e OE activas.
O valor guardado na latch associada com a posio seleccionada
colocado na sada de dados (DOUT na RAM ilustrada atrs).

Para efectuar uma escrita:

Coloca-se um endereo na entrada de endereo e um valor (a escrever)


na entrada de dados DIN.
Aps isso, activam-se as entradas de controlo CS e WE.

141

A latch associada com a posio seleccionada abre e o valor presente


em DIN guardado na sada dessa latch.

A funcionalidade de cada clula da memria SRAM a mesma que o circuito


em baixo:

O comportamento o de uma latch D e no o de um flip-flop D sensvel


s transies.
Quando SEL_L estiver activo, o valor guardado na latch colocado na
sada OUT.
Quando SEL_L e WR_L estiverem ambos activos, a latch abre e o valor
presente em IN guardado na latch.

Numa operao de escrita preciso garantir que:

O endereo est estvel antes da ordem de escrita.


Os dados a escrever ficam estveis antes de terminar a operao de
escrita.

Organizao interna duma SRAM:


Combinando vrias clulas de memria como a anterior e juntando alguma
lgica de controlo, obtm-se uma SRAM completa, por exemplo com tamanho
8x4 (ver figura a seguir).
Sinais de controlo:

Chip select (CS_L)


Output enable (OE_L)
Write enable (WE_L)

O descodificador 3:8 activa um (dos 8 sinais) SEL de modo a habilitar a


leitura/escrita de/em todas as clulas da linha correspondente ao endereo
A2:A0 aplicado.

142

Organizao interna duma SRAM.

Para que a entrada e sada dos dados da SRAM se faa pelos mesmos pinos
(bidireccionais) a organizao interna apenas tem que ser alterada
ligeiramente:

143

Qual o interesse em usar os mesmos pinos para os dados a ler e a escrever?

Para reduzir o nmero de pinos, til em memrias de grande


capacidade.
Porque a maior aplicao das memrias na ligao a um
microprocessador atravs de barramentos, sendo o barramento de
dados normalmente bidireccional.

Exemplos de CIs SRAM, com encapsulamento e interface idnticos aos das


ROMs:

As memrias do tipo SRAM sncrona continuam a ter clulas baseadas numa


latch mas usam endereos, sinais de controlo e dados registados. Na SRAM a
seguir, o endereo ADDR registado em AREG, os sinais de controlo
CS/GW_L so registados em CREG e os dados de entrada DIO registados em
INREG. Registar o endereo e os sinais de controlo facilita a utilizao da
SRAM em sistemas sncronos que operam com frequncias elevadas.

144

A implementao da latch D usada nas clulas da SRAM emprega 4 portas


lgicas discretas ou 4 a 6 transstores. A memria RAM dinmica (DRAM)
surge como forma de diminuir a quantidade de lgica usada por cada clula e
conseguir assim uma maior capacidade com o mesmo espao. A clula base
da memria DRAM guarda a informao num condensador, que acedido
atravs dum nico transstor. Ao fim de alguns milissegundos a informao
guardada no condensador precisa ser reposta para que um 1 no passe a 0.
Para repor (refrescar) a informao guardada, l-se a clula e de seguida ela
reescrita com a mesma informao. Para reduzir o tempo usado no
refrescamento, o processo refresca uma linha da matriz de cada vez. As
DRAMs possuem normalmente vrias matrizes para explorar o paralelismo de
funcionamento, aumentando o dbito de informao a escrever/ler.
Mostra-se agora uma DRAM de 64Kx1 bits organizada segundo uma matriz de
256x256 clulas. O endereo de 16 bits aplicado em A7:A0 em 2 etapas,
sendo as metades registadas no bordo descendente de RAS_L e CAS_L.

145

DRAM de 64Kx1 bits organizada segundo uma matriz de 256x256 clulas.

146

9. Bibliografia

John F. Wakerly, Digital Design Principles and Practices, PrenticeHall International, 3 edio actualizada, 2001.

M. Morris Mano, Digital Design, Prentice-Hall International, 1997.

Randy H. Katz, Contemporary Logic Design, The Benjamin/Cummings


Publishing Company, 1993.

Daniel D. Gajski, Principles of Digital Design, Prentice-Hall, 1997.

Douglas L. Perry, VHDL: Programming by Example, 4th edition,


McGraw-Hill, 2002, ISBN 0-07-140070-2 .

147

Você também pode gostar