Você está na página 1de 560

Sistemas D igitais

P R O J E T O , OTIMIZAÇÃO E H D L S
SOBRE 0 AUTOR
Frank V ahid é professor de ciência da co m p u tação e de en g en h aria elétrica
da U niversity o f C alifórnia, R iverside (U C R ). Ele é graduado em engenharia
elétrica e ciência da com putação; trabalhou e foi consultor da H ew lett Packard,
da A M C C , da N EC , da M otorola e de fabricantes de equipam entos m édicos;
possui Ires patentes nos E stados U nidos; recebeu diversos prêm ios relativos ao
ensino; ajudou a m ontar o program a de engenharia de com putação da U CR: é
autor dc dois livros anteriores e publicou cerca de 120 artigos sobre tópicos de
projeto digital (autom ação, arquitetura e baixo consum o de energia).

M 127s Vahid. Frank


Sistemas digitais : projeto, otimização e HDLs / Frank Vahid ;
tradução Anatólio Laschuk. - Porto Alegre : Artmed, 2008.
560p.; 25 cm.

ISBN 978-85-7780-190-9

1. Engenharia elétrica. 2. Construção de circuitos elétricos -


Circuitos digitais. I. Título.

CDU 621.3

Catalogação na Publicação Mônica Ballejo Canto - CRB 10/1023.


FRANK VAHID
University of C alifornia , R iverside

Sistemas Digitais
P R O J E T O ,7 O T IM IZ A Ç
3
ÃO E HDLS

Tradução:
A natólio Laschuk
Mestre em Ciência da Computação pela UFRGS
Professor aposentado pelo Departamento de Engenharia Elétrica da UFRGS

2008
Obra originalmente publicada sob o título Digital Design
ISBN 978-0-470-04437-7

© Copyright 2007 John Wiley & Sons, Inc. All rights reserved. This translation published under license.

Capa: Gustavo Demarchi, arte sobre capa original

Leitura final: Rachel Garcia Valdez

Supervisão editorial: Denise Weber Nowaczyk

Editoração eletrônica: Techbooks

Reservados todos os direitos de publicação, em língua portuguesa, à


ARTMED* EDITORA S.A.
(BOOKMAN*' COMPANHIA EDITORA é uma divisão da ARTMED“ EDITORA S. A.)
Av. Jerônimo de Orneias. 670 - Santana
90040-340 Porto Alegre RS
Fone (5 1) 3027-7000*’ Fax (51) 3027-7070

É proibida a duplicação ou reprodução deste volume, no lodo ou em parle,


sob quaisquer formas ou por quaisquer meios (eletrônico, mecânico, gravação,
fotocópia, distribuição na Web e outros), sem permissão expressa da Editora.

SÃO PAULO
Av. Angélica, 1.091 - Higienópolis
01227-100 São Paulo SP
Fone (11) 3665-1100 Fax (11) 3667-1333

SAC 0800 703-3444

IMPRESSO NO BRASIL
PRINTED IN BRAZIL
A minha família. Amy, Eric, Kelsi e May a; e aos
engenheiros que aplicam suas habilidades para construir
coisas que melhoram a condição humana.
Prefácio

AO ESTUDANTE A RESPEITO DO ESTUDO DE PROJETO DIGITAL


O s circuitos digitais, que form am a base dos com putadores de propósitos gerais e tam bém de
dispositivos especiais, com o telefones celulares ou consoles de videogam es, estão alterando
dram aticam ente o m undo. O estudo de projeto digital não lhe d ará ap en as a confiança que
resu lta da com preensão de com o os circuitos digitais funcionam na sua essência, irá ap re­
sentar tam bém um a orientação em polgante e útil para um a possível carreira. Isso se aplica
independentem ente de sua graduação ser em engenharia elétrica, engenharia de com putação
ou m esm o ciên cia da com putação (de fato, a necessidade de projetistas digitais com sólida
capacitação em ciência da com putação continua crescendo). Eu espero que você ache esse
assunto tão interessante, em polgante e útil quanto eu o achei.
A o lo n g o d este livro, tentei in tro d u z ir c o n c e ito s da fo rm a m ais in tu itiv a e fácil de
se ap ren d er e tam b ém m o strar co m o esses co n c e ito s p o d em ser ap lic a d o s a sistem as do
m undo real, c o m o m arca-p asso s, m áquin as de u ltra-so m , im p resso ras, au to m ó v eis e te ­
lefones celu lares. A lg u m as vezes, estu d an tes de en g en h aria, jo v e n s e c a p azes (in clu in d o
estu d an tes de ciên cia da com putação), aban d o n am o seu curso de g rad u ação , aleg an d o que
querem um trabalho que seja m ais “o rien tad o a p esso as” . N o entanto, m ais do que nunca,
n ecessitam o s d esses e stu d an tes, já q ue os em p reg o s para en g en h eiro s estão se to rn an d o
cada vez m ais voltados a pessoas sob diversas form as. P rim eiro , os en g en h eiro s geralm ente
trab alh am em g ru p o s fo r te m e n te in teg ra d o s, en v o lv en d o n u m ero so s o u tro s en g en h eiro s
(ao invés de ficarem “sen tad o s so zin h o s à fren te de um c o m p u ta d o r d u ra n te o dia to d o ” ,
co m o m uitos estu d an tes acred itam ). vSegundo, os en g en h eiro s freq ü en tem en te trab alh am
d iretam ente com os clien tes (com o em p resário s, m éd ico s, advogados, fu n cio n ário s de alto
escalão do governo, etc.) e devem portanto ser cap azes de fazer co n tato s com esses clientes
q ue não são eng en h eiro s. T erceiro, e em m inha o p in ião o m ais im portante, os engenheiros
constroem co isa s q ue têm um gra n d e im p a cto so b re a vida d a s p e s s o a s . S ão n ecessário s
eng en h eiro s, q ue com binem o seu en tu siasm o , criativ id ad e e inovação com sólidas h ab ili­
d ades em en g en h aria, para c o n c e b e r e co n stru ir novos produtos q u e m elh o rem a q u alid ad e
de vida das pessoas.
Eu inclui um a seção cham ada “ Perfil de P ro jetista” no final d a m aioria d o s capítulos.
O s projetistas, cuja experiência pode variar desde apenas um ano até várias décadas e cujas
em presas vão desde as pequenas até as gigantescas, irão com partilhar com você as suas expe­
riências, insights e conselhos. Você notará que m uito seguidam ente eles discutem os aspectos
pessoais de seus em pregos. Você tam bém poderá o bservar o entusiasm o e a paixão deles
pelos seus trabalhos.

AOS PROFESSORES DE PROJETO DIGITAL


Este livro faz um a ruptura em relação ao ponto de vista de projeto digital das décadas de 1970
e 1980, cuja ênfase era o projeto lim itado em tam anho; em contrapartida, enfatiza a situação
da década de 2000 que envolve o projeto em nível de transferência entre registradores (RTL).
Fazendo a distinção nítida entre o tópico do projeto básico e o da otim ização, dois tópicos
que anteriorm ente estavam inseparavelm ente entrelaçados, o livro perm ite que um a prim eira
viii Prefácio

disciplina de projeto digital atinja e até m esm o dê ênfase ao projeto RTL. Um estudante que
for apresentado ao projeto RTL em um a prim eira disciplina terá um a visão m ais relevante do
cam po atual de projeto digital, conduzindo não só a um a m elhor apreciação dos m odernos
com putadores e outros dispositivos digitais, m as tam bém a um entendim ento m ais exato das
profissões que envolvem o projeto digital. Essa com preensão acurada é crítica para atrair estu ­
dantes de com putação a carreiras que envolvem algum a coisa de projeto digital e para criar um
quadro de engenheiros que estejam à vontade tanto em “softw are’' com o em “hardw are” e que
são necessários ao m oderno projeto de sistem as de com putação em barcados.
A distinção entre projeto básico e otim ização não deve ser interpretada com o se se e sti­
vesse evitando um a abordagem ascendente, de baixo para cim a, ou encobrindo passos im ­
portantes - o livro assum e um a abordagem ascendente concreta. C om eça com transistores
e vai co nstruindo gradativam ente, passando por portas, flip-flops, registradores, blocos de
controle, com ponentes de bloco operacional, etc. Pelo contrário, essa distin ção perm ite que
os estudantes desenvolvam inicialm ente um entendim ento sólido do projeto básico, antes de
exam inar o tópico m ais avançado da otim ização, de m odo sem elhante ao de um livro de física
que, ao introduzir as leis de N ew lon do m ovim ento, assum e superfícies sem atrito e nenhum a
resistência com o ar. A lém disso, hoje a otim ização envolve m ais do que a sim ples m inim iza-
ção de tam anho, requerendo pelo contrário um a com preensão m ais am pla dc tradeoffs* entre
tam anho, desem penho e consum o, e m esm o de tradeoffs envolvendo circuitos digitais cu sto ­
m izados e softw ares de m icroprocessador. N ovam ente, a abrangência dos tópicos é m antida
dentro do real e adequada a um a disciplina introdutória de projeto digital.
E ntretanto, o livro faz um a distinção entre p rojeto digital e o tim ização de m odo tal que
propicia claram ente ao professor um m áxim o de flexibilidade para introduzir a o tim ização
no m om ento e com a ex ten são que ele desejar. Em particular, cada um a das su b seçõ es do
capítulo de o tim ização (C apítulo 6) co rresp o n d e diretam ente a um cap ítu lo anterior. D esse
m odo, a S eção 6.2 pode vir im ediatam ente após o C apítulo 2, a Seção 6.3 pode vir após o
C apítulo 3, a 6.4 pode vir depois do 4, e a 6.5 pode vir depois do 5.

D iversas características adicionais do livro são:

• Uso am plo de exem plos de aplicação e fig u ra s. D epois de descrever um novo conceito
e d ar exem plos básicos, o livro fornece exem p lo s que aplicam o co n ceito a situações
fam iliares p ara o estudante, co m o um sistem a de alarm e para cin to de segurança não
apertado, um jo g o de xadrez com putadorizado, um a im pressora a cores ou um a câm era
de vídeo digital. A lém disso, no final da m aioria dos capítulos, há um perfil de produto,
cujo propósito é dar aos estudantes um a visão ainda m ais am pla da aplicação dos co ncei­
tos e introduzir conceitos específicos para aplicações m ais engenhosas, que o estudante
poderá achar m uito interessantes - com o as idéias da form ação de feixe em um a m áquina
de ultra-som ou da filtragem em um telefone celular. O livro faz um am plo uso de figuras
para ilustrar conceitos, incluindo m ais de 600 figuras.

• A prendizagem através da descoberta. O livro enfatiza a com preensão da necessidade de


novos conceitos, que não só ajudam os estudantes a apreender e lem brar os conceitos, m as
desenvolvem habilidades de raciocínio que podem perm itir a aplicação d o s conceitos a
outros dom ínios. Por exem plo, ao invés de apenas exibir um som ador com antecipação de
“ vai-um ” , o livro m ostra abordagens intuitivas, m as ineficientes, de se co n stru ir um so ­
m ador m ais rápido, para então resolver as deficiências c conduzir (“descobrir") ao projeto
com antecipação de “vai-um ” .

* N. cie T: Um iradeoff, envolvendo diversos critérios, pode ser entendido como uma forma de otimização em que se melhora
um dos critérios em detrimento de outros, também de nosso interesse, mas de menor importância.
Prefácio ix

Introdução aos FPGAs. O livro inclui um a introdução com pleta aos F P G A s, de baixo
para cim a, m ostrando concretam ente aos estudantes com o um circuito pode ser conver­
tido em um encadeam ento de bits que é usado para program ar as tabelas individuais de
consulta, m atrizes de chaveam ento e outros co m p o n en tes program áveis de um FPG A .
E ssa introdução concreta d esfaz o m istério dos dispositivos FPG A s, os quais estão se
tornando cada vez m ais com uns.

Flexibilidade na cobertura HDL. A o rg an ização do livro p erm ite que os p rofessores


cubram de form a clara as H D Ls (linguagens de descrição de hardw are) em com binação
com a introdução dos conceitos de projeto, cobrir as H D Ls m ais tarde, ou não cobri-las.
As subseções do capítulo sobre H D Ls (C apítulo 9) correspondem cada um a a um capítulo
anterior, dc m odo que a Seção 9.2 pode seguir im ediatam ente o C apítulo 2, a 9.3 pode
seguir o 3, a 9.4 pode seguir o 4 e a 9.5 pode seguir o 5. A lém disso, o livro cobre igual­
m ente as três H D Ls - V H D L, V erilog e a relativam cnte nova System C . U sam os tam bém a
nossa am pla experiência em síntese, com utilização dc ferram entas com erciais, para criar
descrições em H D L, as quais são bem adequadas à síntese e tam bém apropriadas para
sim ulações.

Livros associados de introdução às HDLs. O s professores que desejam co b rir as H D L s


com am p litu d e ain d a m aior podem u tilizar um de nossos livros de introdução ás H D L s,
co n ceb id o s esp ecificam en te para aco m p a n h a r este livro e escrito s pelo m esm o autor.
N ossos livros de introdução às H D L s seguem a m esm a estru tu ra de cap ítu lo s do p re­
sente livro e usam exem plos seus. A ssim , elim inam a situação co rriq u eira de estudantes
que ficam se esfo rçan d o para co rrelac io n a r tópicos d istin to s, e alg u m as vezes c o n tra ­
ditórios, em seus livros de H D L e de p rojeto digital. N ossos livros d iscu tem com m ais
p ro fu n d id ad e os co n ceito s de lin g u ag em , sim u lação e teste, p ro p ician d o n u m ero so s
exem plos de H D L. E les tam bém são estru tu rad o s para serem usados iso lad am en te d u ­
rante a aprendizagem ou co m o referên cia de um a H D L. O s livros en fatizam a utilização
d as lin g u ag en s em p ro jeto s reais, d istin g u in d o c laram en te en tre o uso para sín tese e
o uso p a ra teste dc um a H D L , in clu in d o m u ito s ex em p lo s e figuras p ara ilu stra r os
co n ceito s. O s nossos livros de in tro d u ção às H D L s são aco m p an h ad o s p o r slides em
P o w erP o in t, q ue usam g ráfico s e an im açõ es, serv in d o co m o um tu to rial fácil de ser
seguido sobre H DL.

Slides gráficos animados em PowerPoint e criados pelo autor * U m rico c o n ju n to


de slides em P o w erP o in t está disponív el para os p ro fesso res. O s slides foram criad o s
p elo a u to r d este livro, resu lta n d o um a c o n sistê n c ia d e p ersp ectiv a e ê n fa se e n tre eles
e o livro. O s slides foram c o n c e b id o s para se r um a fe rram e n ta d e e n sin o v e rd a d e i­
ram en te e fe tiv a p ara o professor. A m a io ria d e le s é b a se a d a em g rá fic o s (ev itan d o
slides q ue co n sistem ap en as em listas de itens tex tu ais). O s slides fazem am p lo uso de
an im açõ es, o n d e fo rem ap ro p ria d a s, para se d e sv e n d a r g ra d a tiv a m e n te os co n c e ito s
ou os c irc u ito s já co n stru íd o s. A lém d isso , os slides a n im a d o s p o d em ser im p resso s
e a n alisad o s. A g ran d e m aio ria de to d as as figuras, c o n c e ito s e e x em p lo s d este livro
está in clu íd a em um co n ju n to de q u ase 5 00 slides , do qual os p ro fe sso re s podem fazer
suas escolhas.

Manual completo de soluções.* O s professores podem obter um m anual com pleto (cerca
dc 200 páginas) contendo as soluções dc todos os exercícios dc final dc capítulo deste livro.
Figuras são am plam entc utilizadas para ilustrar as soluções do m anual.

* Professores inieressados em acessar esse material de apoio devem acessar a Area do Professor no site www.bookman.com.br.
x Prefácio

COMO USAR ESTE LIVRO


E ste livro foi concebido para perm itir flexibilidade de escolha entre as form as m ais com uns
de se cobrir o m aterial. D escreverem os a seguir diversas abordagens.

Abordagem focada em RTL


U m a abordagem centrada em RTL é sim plesm ente a cobertura dos seis prim eiros capítulos
nesta ordem :

1. Introdução (C apítulo l)
2 . Projeto lógico com binacional (C apítulo 2)
3 . Projeto lógico seqüencial (C apítulo 3)
4 . Projeto de com ponentes com binacionais e seqüenciais (C apítulo 4)
5 . P rojeto RTL (C apítulo 5)
6 . O tim izações e Tradeoffs (C apítulo 6), com a extensão desejada e
7. Im plem entação física (C apítulo 7) c/ou Projeto de processadores (C apítulo 8), com a
extensão desejada

P ensam os que essa é um a ótim a m aneira de o rd en ar o m aterial; os estu d an tes estarão


fazendo projetos RTL interessantes cm cerca de sete sem anas. A s H D L s poderão ser introdu­
zidas no final, se o tem po perm itir, poderão ser deixadas para um a segunda disciplina sobre
projeto digital (com o é leito na U niversity o f C alifórnia, R ivcrside) ou ainda poderão ser
estudadas im ediatam ente após cad a capítulo - as três abordagens parecem ser bem com uns.

Abordagem tradicional com alguma reordenação


Este livro pode ser usado diretam ente, seguindo-se um a abordagem tradicional que introduz
a otim ização ju n tam en te com o projeto básico, com um a ligeira d iferença em relação a ela.
E ssa diferença consiste em um a troca na ordem de apresentação dos com ponentes com bina­
cionais e de lógica seqüencial. com o segue:

1. Introdução (C apítulo l)
2 . Projeto lógico com binacional (C apítulo 2), seguido pela otim ização de lógica com bi-
nacional (Seção 6.2)

Projeto lógico seqüencial (C apítulo 3), seguido pela otim ização de lógica seqüencial
(vSeção 6.3)
4 . Projeto d e com ponentes com binacionais e seqüenciais (C apítulo 4), seguido por tra­
deoffs de com ponentes (Seção 6.4)
5 . Projeto RTL (C apítulo 5), com a extensão desejada, seguido de otim izações e trade­
offs RTL (Seção 6.5)
6 . Im plem entação física (C apítulo 7) e/ou P rojeto de processadores (C apítulo 8), até o
ponto desejado

E ssa é um a abordagem bem razoável c eficaz, que abarca toda a discussão de um tópico
(por exem plo, projeto FSM assim com o otim ização) antes que se avance para o próxim o.
E ssa reordenação em relação à abordagem tradicional apresenta o projeto seqüencial básico
(FSM s e bloco de controle) antes dos com ponentes com binacionais (por exem plo, som ado-
res, com paradores, etc.). Tal reordenação pode conduzir m ais naturalm ente ao projeto RTL
do que num a abordagem tradicional, adotando-se em seu lugar um a abordagem de abstração
Prefácio xi

crescente, em vez da abordagem tradicional que separa o projeto com binacional do seqüen-
cial. N ovam ente, as H D L s podem ser introduzidas no final, deixadas p ara um a outra disci­
plina ou integradas após cada capítulo. E ssa abordagem tam bém poderia ser usada com o
passo interm ediário quando se m igra de um a abordagem total m ente tradicional para um a
abordagem RTL. A m igração pode envolver o adiam ento gradual das seções do C apítulo 6 -
por exem plo, cobrir os C apítulos 2 e 3 e, em seguida, as Seções 6.2 e 6.3, antes de se passar
para o C apítulo 4.

Abordagem tradicional
Este livro tam bém pode ser usado de form a tradicional, com o segue:

1. Introdução (C apítulo l)
2 . Projeto lógico com binacional (C apítulo 2), seguido pela otim ização de lógica co m b i­
nacional (Seção 6.2)

3 . P rojeto de com ponentes com binacio n ais (S eções 4.1, 4.3, 4.4, 4.5, 4.7, 4.8 e 4.9),
seguido por tradeoffs de com ponentes com binacionais (Seção 6.4 - Som adores)

Projeto lógico sequencial (C apítulo 3), seguido pela otim ização de lógica seqüencial
(Seção 6.3)

5 . Projeto de com ponentes seqüenciais (C apítulo 4, Seções 4 .2 ,4 .6 e 4. IO), seguido por


tradeoffs de com ponentes sequenciais (Seção 6.4 - M ultiplicadores)
6. Projeto RTL (C apítulo 5), até o ponto desejado, seguido de otim izações e tradeoffs
RTL (Seção 6.5) e

7. Im plem entação física (C apítulo 7) e/ou Projeto de processadores (C apítulo 8), até o
ponto desejado

E sta abordagem foi a m ais usada nas últim as duas décadas, com o acréscim o de RTL mais
no final. E m bora a distinção enfatizada entre os projetos com binacional e seqüencial possa
não ser m ais relevante na era de projeto RTL (em que am bos os tipos de projeto estão m istu­
rados), algum as pessoas acreditam que tal distinção torna o cam inho de aprendizagem m ais
fácil, o que pode ser verdadeiro. As H D Ls podem ser incluídas no final, deixadas para um a
disciplina posterior ou integradas do com eço ao fim.

AGRADECIMENTOS
M uitas pessoas e organizações contribuíram para a edição d o livro.

• Integrantes do quadro da John W iley and Sons P ublishers apoiaram am p lam en te o d e ­


senvolvim ento do livro, incluindo C atherine Schultz, G ladys Soto, D ana K ellogg e Kelly
Boyle. Bill Z obrist, que apoiou meu livro anterior “E m bedded System D esig n '’, m otivou-
m e a escrever o presente livro e deu ótim os conselhos ao longo de seu desenvolvim ento.

Ryan M annion contribuiu com m uitos itens, incluindo apêndices, num erosos exem plos e
exercícios, verificação de fatos, am pla revisão do texto, enorm e auxílio durante a produ­
ção, ajuda com os slides , profusão de idéias durante as discussões e m uito mais.

• R om an Lysecky desenvolveu num erosos exem plos e exercícios, contribuiu com a m aior
parte do conteúdo do capítulo sobre H D L e foi co-autor de nossos livros associados sobre
H D Ls. R om an e Susan Lysecky propiciaram m uita ajuda na revisão do texto.•

• N um erosos revisores forneceram um a notável realim entação para as diversas versões do


livro. A gradecim entos especiais aos que prim eiro o adotaram , com o Nikil Dutt, Shannon
xii Prefácio

Tauro, J. D avid G illanders, S heldon Tan, T ravis D oom , R om an Lysecky e outros, que
deram excelentes realim entações a partir deles m esm os e de seus estudantes.

A im portância do apoio proporcionado à m inha pesquisa e à m inha carreira de professor


pelo N ational S cience Foundation foram m uito grandes. A poio adicional da S em ico n ­
d u cto r R esearch C orporation catalisou co lab o raçõ es com a indústria que, por sua vez,
influenciaram m uitas das perspectivas deste livro.

SOBRE A CAPA
A im agem da capa, com quadrados encolhendo-se, m ostra graficam ente um notável fenô­
m eno da vida real em que o tam anho dos circu ito s dig itais (“chips de co m p u tad o r” ) tem
dim inuído à m etade a aproxim adam ente cad a dezo ito m eses, por diversas décadas, sendo
freqüentem ente referido com o lei de M oore. E sse en colhim ento possibilitou que incríveis
circuitos de com putação coubessem em m inúsculos dispositivos, com o os m odernos telefo­
nes celulares, os dispositivos m édicos e os videogam es portáteis. Veja página 51 para um a
discussão sobre a lei de M oore.
Revisores e Avaliadores

R ehab A bdel-K ader G eorgia Southern U niversity


O tm ane Ait M oham ed C oncordia U niversity
H ussain A l-A saad U niversity o f C alifornia, Davis
Rocio A lba-Flores U niversity o f M innesota, D uluth
B assem A lhalabi Florida A tlantic University
Z ckeriya A liyazicioglu C alifornia Polytechnic State University, Pom ona
V ishal A nand SU N Y B rockport
Bevan Baas U niversity o f C alifornia, Davis
Noni Bohonak U niversity o f South C arolina, L ancaster
Don Bouldin U niversity o f Tennessee
David B ourner U niversity o f M aryland B altim ore C ounty
E laheh B ozorgzadeh U niversity o f C alifornia, Irvine
Frank C andocia F lorida International U niversity
Ralph C arestia O regon Institute o f Technology
R ajan M. C handra C alifornia Polytechnic State University, Pom ona
G hulam C haudhry U niversity o f M issouri, K ansas City
M ichael C helian C alifornia State University, Long Beach
Russell Clark Saginaw Valley State U niversity
Jam es C onrad U niversity o f N orth C arolina, C harlotte
Kevan C roteau Francis M arion U niversity
San joy D as K ansas State University
Jam es Davis U niversity o f South C arolina
Edw ard D oering R ose-H ulm an Institute o f Technology
Travis Doom W right State U niversity
Jim D uckw orth W orcester Polytechnic Institute
Nikil Dutt U niversity o f C alifornia, Irvine
D ennis Fairclough Utah Valley State C ollege
Paul D. Franzon N orth C arolina State U niversity
Subra G anesan O akland U niversity
Z ane G astineau H arding University
J. David G illanders A rkansas State University
C lay G loster Howard U niversity
A rdian G reca G eorgia Southern U niversity
Eric H ansen D artm outh C ollege
Bruce A. Harvey FA M U -FSU C ollege o f E ngineering
John R H ayes U niversity o f M ichigan
M ichael Helm Texas Tech U niversity
W illiam H off C olorado School o f M ines
Erh-W en Hu W illiam Paterson U niversity o f New Jersey
B aback Izadi SU N Y N ew Paltz
xiv Revisores e Avaliadores

Je ff Jackson U niversity o f A labam a


A nura Jayasum ana C olorado State U niversity
Bruce Johnson U niversity o f N evada, R eno
R ichard Johnston L aw rence Technological University
Rajiv K apadia M innesota State U niversity, M ankato
B ahadir K aruv Fairlcigh D ickinson U niversity
R obert K lenke V irginia C om m onw ealth U niversity
C lint Kohl C edarville U niversity
H erm ann K rom pholz Texas Tech U niversity
T im othy K urzw eg Drexel University
Jum oke L adeji-O sias M organ State University
Jeffrey Lillie R ochester Institute o f Technology
David L ivingston V irginia M ilitary Institute
H ong Man Stevens Institute o f Technology
G ihan M andour C hristopher N ew port U niversity
D iana M arculescu C arnegie M ellon U niversity
M iguel M arin M cG ill University
M aryam M oussavi C alifornia State U niversity, L ong Beach
O lfa N asraoui U niversity o f M em phis
Patricia Nava U niversity o f Texas, El Paso
John N estor L afayette C ollege
R ogelio Palom era G arcia U niversity o f Puerto R ico, M ayagucz
Jam es Pec ko 1 U niversity o f W ashington
W itold Pedrycz U niversity o f A lberta
A ndrew Perry Springfield C ollege
D enis Popel B aker U niversity
Tariq Q ayyum C alifornia Polytechnic State U niversity, Pom ona
G ang Qu U niversity o f M aryland
M ihaela Radu R ose-H ulm an Institute o f Technology
Suresh Rai L ouisiana State U niversity, Baton Rouge
W illiam Reid C lem son U niversity
M usoke Sendaula Tem ple U niversity
Scott Sm ith B oise State University
Gary Spivey G eorge Fox U niversity
L arry Stephens U niversity o f South C arolina
Jam es Stine Illinois Institute o f Technology
Philip Swain Purdue U niversity
Shannon Tauro U niversity o f C alifornia, Irvine
C arlos Tavora G onzaga U niversity
M arc T im m erm an O regon Institute o f Technology
H ariharan V ijayaraghavan U niversity o f K ansas
Bin W ang W right Slate U niversity
M . C hris W ernicki New York Institute o f Technology
Shanchieh Yang R ochester Institute o f Technology
He m y Yeh C alifornia State U niversity, Long Beach
N aeem Zam an San Jaoquin D elta C ollege
Sumário

► CAPÍTUL01 3.7 Descrição de lógica seqüencial usando


Introdução 17 linguagens de descrição de hardware 153
3.8 Perfil de produto - o marca-passo 153
l . I Sistemas digitais no mundo que nos cerca 17
3.9 Resumo do capítulo 156
1.2 O mundo dos sistemas digitais 20
w

3.10 Exercícios 156


1.3 Implementando sistemas digitais: programação
de microprocessadores versus projeto de ► CAPÍTULO 4
circuitos digitais 33
Componentes de Blocos Operacionais 166
1.4 Sobre este livro 39
1.5 Exercícios 40 4.1 Introdução 166
4.2 Registradores 167
► CAPÍTULO 2 4.3 Somadores 182
Projeto Lógico Combinacional 46 4.4 Deslocadores 190
2.1 Introdução 46 4.5 Comparadores 193
2.2 Chaves 46 4.6 Contadores 198
2.3 O transistor CMOS 51 4.7 Multiplicadores - estilo array 205
2.4 Portas lógicas booleanas - blocos construtivos 4.8 Subtratores 207
dos circuitos digitais 54 4.9 Unidades lógico-aritméticas- ALUs 218
2.5 Álgebra booleana 63 4 .10 Bancos de registradores 221
2.6 Representações de funções booleanas 71 4 .11 Tradeoffs com componentes de bloco
2.7 O processo de projeto lógico operacional 226
combinacional 83 4 .12 Descrição de componentes de bloco
2.8 Mais portas 89 operacional usando linguagens de descrição
2.9 Decodificadores e multiplexadores 93 de hardware 226
2.10 Considerações adicionais 99 4 .13 Perfi 1de produto: uma máquina de
2.11 Otimizações e tradeoffs em lógica ultra-som 226
combinacional 102 4 .14 Resumo do capítulo 233
2.12 Descrição de lógica combinacional usando 4 .15 Exercícios 234
linguagens de descrição de hardware 102
► CAPÍTULO 5
2.13 Resumo do capítulo 102
2.14 Exercícios 103 Projeto em Nível de Transferência entre
Registradores (RTL) 242
► CAPÍTULO 3 5.1 Introdução 242
Projeto Lógico Seqüencial - Blocos de 5.2 O método de projeto RTL 243
Controle 111 5.3 Exemplos e questões de projeto RTL 255
3.1 Introdução 111 5.4 Determinando a freqüência de relógio 269
3.2 Armazenando um bit - flip-flops 112 5.5 Descrição em nível comportamental: passando
3.3 Máquinas de estados finitos (FSMs) e blocos de de C para portas (opcional) 272
controle 127 5.6 Componentes de memória 276
3.4 Projeto de bloco de controle 136 5.7 Filas (FIFOS) 289
3.5 Mais sobre flip-flops e blocos de controle 146 5.8 Hierarquia - um conceito-chave de
3.6 Otimizações e tradeoffs em lógica projeto 293
seqüencial 153 5.9 Oti mizações e tradeoffs em projeto RTL 296
16 Sumário

5 .10 Descrição de projeto RTL usando linguagens de 8.7 Resumo do capítulo 459
descrição de hardware 297 8.8 Exercícios 460
5 .11 Perfil de produto - telefone celular 297
5 .12 Resumo do capítulo 303 ► CAPÍTULO 9
5.13 Exercícios 303 Linguagens de Descrição de Hardware 463
9.1 Introdução 463
► CAPÍTULO 6
9.2 Descrição de lógica combinacional usando
Otimizações e Tradeoffs 312 linguagens de descrição de hardware 465
6.1 Introdução 312 9.3 Descrição de lógica seqüencial usando
6.2 Otimizações e tradeoffs em lógica linguagens de descrição de hardware 477
combi nacional 314 9.4 Descrição de componentes de bloco
6.3 Otimizações e tradeoffs em lógica operacional usando linguagens de descrição
seqüencial 335 de hardware 485
6.4 Tradeoffs de componentes de bloco 9.5 Projeto RTL usando linguagens de descrição de
operacional 351 hardware 493
6.5 Otimizações e tradeoffs em projeto RTL 363 9.6 Resumo do capítulo 510
6.6 Mais sobre otimizações e tradeoff's 372 9.7 Exercícios 510
6.7 Perfil de produto - gravador e tocador digital
de vídeo 379 ► APÊNDICE A
0
6.8 Resumo do capítulo 388 Álgebras Booleanas 515
6.9 Exercícios 388 A.l Álgebra booleana 515
A.2 Álgebra de chaveamento 516
► CAPÍTULO 7
A.3 Teoremas importantes na álgebra
Implementação Física 397
booleana 517
7.1 Introdução 397 A.4 Outros exemplos de álgebras booleanas 522
7.2 Tecnologias de ICs manufaturados 397 A. 5 Leituras adicionais 523
7.3 Tecnologia de ICs programáveis - FPGA 406
7.4 Outras tecnologias 419 ► APÊNDICE B
7.5 Comparações entre tecnologias de ICs 427 Tópicos Adicionais de Sistemas Binários
7.6 Perfil de produto - display de vídeo de Numeração 525
gigante 430 B. l Introdução 525
7.7 Resumo do capítulo 434 B.2 Representação de números reais 525
7.8 Exercícios 435 B.3 Aritmética de ponto fixo 528
► CAPÍTULO 8 B.4 Representação em ponto flutuante 529
B. 5 Exercícios 534
Processadores Programáveis 439
8.1 Introdução 439 ► APÊNDICE C 535
8.2 Arquitetura básica 440 Exemplo Estendido de Projeto RTL 535
8.3 Um processador programável de três C. 1 Introdução 535
instruções 446 C.2 Projetando o bloco de controle da máquina de
8.4 Um processador programável de seis fornecer refrigerantes 536
instruções 452 C.3 Compreendendo o comportamento dos blocos
8.5 Programas exemplos em linguagem assembly e
de controle e operacional da máquina de
em código de máquina 456
fornecer refrigerantes 539
8.6 Outras extensões do processador
programável 457 ► ÍNDICE 545
Introdução

► 1.1 SISTEMAS DIGITAIS NO MUNDO QUE NOS CERCA


C onheça A rianna. A rianna ó um a m enina de cinco anos que vive na C alifórnia. É um a criança
querida e extrovertida que gosta de ler, jo g a r futebol, d an çar e co n tar piadas inventadas por
ela m esm a.

Um dia, a fam ília de A rianna eslava voltando de carro de um a partida


de futebol. Ela estava falando em polgadam ente sobre o jo g o , quando de
repente a van em que se encontrava foi atingida por um carro que entrou
na contram ão. E m bora o acidente não tenha sido particularm ente violento,
o im pacto fez com que um objeto solto na traseira da van fosse projetado
para a frente atingindo A rianna na parte p o sterio r da cabeça. E la ficou
inconsciente.
A rianna foi levada às pressas a um hospital. Im ediatam ente, os m édicos repararam que a
sua respiração estava m uito fraca - um a situação com um após um a batida forte na cabeça - de
m odo que eles a colocaram em um a m áquina de ventilação pulm onar assistida, um aparelho
m ódico usado para auxiliar a respiração. Ela teve um traum atism o cerebral devido ao im pacto
na cabeça e perm aneceu inconsciente por diversas sem anas. Todos os seus sinais vitais eram
estáveis, exceto que ela continuava precisando do ventilador pulm onar para respirar. A lgum as
vezes, os pacientes nessa situação recuperam -se, outras vezes não. Podem ser necessários
m uitos m eses para total recuperação.
G raças aos m odernos ventiladores pulm onares portáteis, os pais de A rianna puderam levá-
la para se recu p erar em casa. A lém do m onitoram ento rem oto dos sinais vitais e as visitas
diárias de um a enferm eira e de um a fisioterapeuta da respiração, A riana esteve cercada por
18 Sistemas Digitais

seus pais, irm ão, irm ã, prim os, outras fam ílias e am igos.
D urante a m aior parte do dia, alguém estava segurando a
sua m ão, cantando para ela, sussurrando em seu ouvido
e encorajando-a a recuperar-se. A sua irm ã d orm ia pró­
xim o dela. A lguns estudos m ostram que essas interações
pessoais aum entam as chances de recuperação.
E recuperar-se, ela conseguiu. Um dia, m uitos m eses
depois e com a m am ãe sentada a seu lado, A rianna abriu
os olhos. Ela foi levada de volta ao hospital c, depois de
algum tem po, o aparelho de ventilação pulm onar foi re­
tirado. E ntão, após um longo período de recuperação e
reabilitação, A rianna finalm ente voltou para casa. H oje,
com seis anos, ela m ostra poucos sinais do acidente que
quase custou-lhe a vida.
O que essa história tem a ver com projeto digital? A
recuperação de A rianna foi auxiliada por um dispositivo
portátil de ventilação pulm onar, o qual p o r su a vez foi
tornado possível graças aos circuitos digitais. D urante as
três últim as décad as, a quantidade de circuitos digitais
que pode ser colocada em um a única pastilha de circuito
in teg rad o de c o m p u ta d o r au m en to u e sp a n to sa m e n te
- ap ro x im ad am en te 10 0 .0 0 0 vezes, acred ite se quiser.
D esse m odo, os ventiladores p u lm o n ares, co m o p rati­
cam ente q u alq u er outro disp o sitiv o que funciona com
eletricidade, podem tirar vantagem dos circuitos digitais,
potentes e rápidos, e ainda ser de baixo custo. No caso
de A rianna, o ventilad o r era o P u lm o n etics LTV 1000.
Um ventilador do início da década de 19 90 poderia ter
o tam anho de um a m áquina de fazer cópias de grande
porte e cu star possivelm ente U S$ 100.000, o LTV 1000
não é m aior nem m ais pesado do que este livro e custa
apenas uns poucos m ilhares de dólares - suficientem ente
pequeno e barato para ser transportado em helicópteros
e am bulâncias de resgate m édico, em situações de sal­
vam ento de vidas, e inclusive ser enviado para casa ju n -
lam enle com o paciente. O s circu ito s dig itais internos
m onitoram continuam ente a respiração do paciente e for­
necem exalam cnte as quantidades de pressão c volum e de
ar necessárias. Cada ciclo de respiração que o aparelho
fornece requer milhões de cálculos que são realizados pe­
los circuitos digitais internos.
O s v en tilad o res p o rtáteis aju d am não só as vítim as
de trau m atism o s, m as au x iliam p acien tes com doenças
d eb ilita n te s, co m o e sc le ro se m ú ltip la, a c o n se g u ir se
m ovim entar. A gora, essas pessoas podem se d eslo car de
um lado para o u tro em um a ca d e ira de rodas e, d esse
m odo, fazer c o isa s co m o fre q ü e n ta r a e sc o la , v isita r
m useus e p a rtic ip a r de p iq u en iq u es com a fam ília, ex-

Vemilador portátil
Introdução 19

p erim en tan d o um a q u a lid a d e de vida m uito su p e rio r à q u e era


possível ate há apenas um a década, qu an d o essas pessoas tinham
de p erm an ecer co n fin ad as a um a cam a e co n ectad as a um venti­
lad o r p u lm o n ar p esado, de g ran d e porte e de cu sto elevado. Por
exem plo, a jovem d a foto ao lado p ro v av elm en te p recisará de
um v en tilad o r para o resto d e sua vida - m as ela será cap az de se
m ovim entar m uito livrem ente para todos os lad o s em sua cadeira
de rodas, ao invés de ficar co n fin ad a a seu lar d u ra n te a m aio r
parte do tem po.
O ventilador LTV 1000 descrito anteriorm ente foi concebido e
projetado por um pequeno grupo de pessoas, fotografado ao lado,
o qual procurou co n stru ir um ventilador portátil e confiável para
ajudar pessoas com o A rianna e outros m ilhares co m o ela (além
de conseguir um bom dinheiro fazendo isso!). E sses projetistas
Foto cortesia da Pulmonetics
com eçaram provavelm ente com o você, lendo livros c assistindo a
disciplinas de projeto digital, program ação, eletrônica c/ou outros
tem as.
O ventilador pulm onar é apenas um de literalm ente milhares
de dispositivos úteis que surgiram e continuam a ser criados g ra­
ças à era dos circu ito s digitais. Se você p arar e p ensar sobre a
quantidade de dispositivos a seu red o r dos q u ais você depende,
ou que são possíveis graças aos circuitos digitais, você ficará sur­
preso. A lguns poucos desses dispositivos são:

Foto cortesia da Pulmonetics Freios antibloqueio, airbags, câmaras com autofoco, máquinas de auto-
atendimento, controladores e navegadores digitais de aeronaves, camcor-
ders, caixas registradoras, telefones celulares, redes de computadores, leitoras de cartão de crédito,
cruise controllers*, defibril adores, câmeras digitais, aparelhos tocadores de DVD, leitores de car­
tão, jogos eletrônicos, pianos eletrônicos, máquinas de fax, identificadores de impressões digitais,
próteses auditivas, sistemas de segurança doméstica, modens, marca-passos, page rs, computadores
pessoais, assistentes digitais pessoais, fotocopiadoras, tocadores portáteis de música, braços robó-
ticos, escaneadoras, televisores, controladores de termostato, receptores de TV a cabo. ventilado­
res, consoles de videogames - a lista continua.

Um indicador da velo­ E sses aparelhos foram criados por dezenas de m ilhares de projetistas, in­
cidade com que novas cluindo cientistas de com pu tação , engenheiros de com p u tação , engenheiros
invenções são desen­ eletricistas, engenheiros m ecânicos e outros, trabalhando em co n ju n to com
volvidas é o número de cientistas, m édicos, em presários, professores, etc. A lgo que parece claro é que
concessões de novas novos dispositivos continuarão a ser inventados no futuro previsível - dispositi­
patentes - 170.000 por vos que dentro de um a década serão centenas de vezes m enores, m ais baratos e
ano apenas nos Esta­
m ais poderosos que os atuais, perm itindo novas aplicações que nem sonham os
dos Unidos!
hoje. E stam os vendo novas e espantosas aplicações que parecem futurísticas,
em bora já existindo atualm ente, com o m inúsculos dispositivos para injeção de
m edicam entos que são controlados por circuitos digitais im plantados sob a pele, controlado­
res guiados a laser para itinerário de autom óveis, e m ais. O que não está claro é quais aplica­
ções novas e em polgantes serão desenvolvidas no futuro, ou quem serão os beneficiados por
elas. O s futuros projetistas, com o você possivelm ente, determ inarão isso.

* N. de T: Sistema que exerce o papel de um piloto, controlando a velocidade e a aceleração de um veículo ao longo dc um tra­
jeto. Aparece traduzido como “sistema de CC”de um veículo.
20 Sistemas Digitais

1.2 O MUNDO DOS SISTEMAS DIGITAIS


Digital versus analógico
Um sinal digital é aquele que pode assum ir um de um conjunto finito de valores possíveis, a
qualquer instante, sendo tam bém conhecido com o sinal discreto. E m com paração, um sinal
analógico pode ler um valor de um co nju n to infinito de valores possíveis, sen d o tam bém
conhecido com o sinal contínuo. Um sinal é ap en as um fenôm eno físico que tem um único
valor em cada instante de tem po. U m exem plo co tid ian o de um sinal analógico é a tem pe­
ratura externa, porque a tem peratura física é um valor co n tín u o - a tem peratura pode ser
33,53148144... graus. Um exem plo cotidiano de um sinal digital é o núm ero de dedos que
você m ostra, porque o valor deve ser 0, 1 ,2 , 3, 4, 5, 6, 7, 8, 9 ou 10 - um conjunto finito de
valores. De fato, o term o “d ig i ta r deriva da palavra latina para “dígito” (digitus), cujo signi­
ficado é dedo.
N os sistem as de com putação, os sinais digitais m ais com uns são aqueles que podem as­
sum ir um entre apenas dois valores, com o ligado ou desligado (representado freqüentem ente
com o 1 ou 0). E ssa representação com dois valores é conhecida com o representação binária .
Um sistema digital é aquele que recebe entradas digitais e gera saídas digitais. Um circuito
digital é um a conexão de com ponentes dig itais que ju n to s constituem um sistem a digital.
N este livro, o term o digital irá se referir a sistem as com sinais de valor binário. Um sinal
binário sim ples é conhecido com o dígito binário ou bit , abreviadam ente (da expressão feinary
dig/7, em inglês). A eletrônica digital tornou-se extrem am ente p opular em m eados do século
passado após a invenção do transistor, um a chave elétrica que pode ser ligada ou desligada
usando um outro sinal elétrico. Irem os descrever os transistores com m ais detalhes no pró­
xim o capítulo.

Os circuitos digitais são a base dos computadores


N o m undo que nos cerca, a ap licação m ais co n h ecid a dos circuitos
digitais está provavelm ente na co n stru ção de m icroprocessadores, os
quais funcionam com o céreb ro nos co m p u tad o res de p ro p ó sito s g e ­
rais, com o o com putador pessoal ou o laptop que você talvez tenha em
casa. O s com putadores de propósitos gerais são tam bém usados com o
servidores, operando por trás das cenas e perm itindo a im plem entação
de banking *, reserva de passagens aéreas, pesquisa na web, folhas de
Um computador de propósitos pagam ento e outros sistem as sim ilares a esses. E sses com putadores
gerais tom am dados digitais de entrada, co m o letras e núm eros recebidos de
arquivos ou teclados e produzem novos dados digitais de saída, com o
novas letras e núm eros arm azenados em arquivos ou exibidos em um
m onitor. P ortanto, ap ren d er p rojeto digital é útil para co m p reen d er
com o os com putadores funcionam dentro do gabinete “por debaixo da
tam pa” e, por essa razão, tem sido um pré-requisito em m uitos cursos
de graduação cm engenharia elétrica e em engenharia de com putação
por décadas. C om base no m aterial dos próxim os capítulos, irem os
projetar um com putador sim ples no C apítulo 8.

Os circuitos digitais são a base para muito mais


P rogressivam ente, os circu ito s dig itais estão sendo usados para m uito
m ais co isas do que a im p lem en tação de co m p u tad o res de p ro p ó sito s
gerais. C ada vez m ais, novas ap licaçõ es convertem sinais analógicos
Sistemas embarcados em d ig itais e subm etem esses sinais a circ u ito s d ig itais co n stru íd o s

* N. de T: Termo de u$o comum em inglês, significando as atividades relativas a um banco.


Introdução 21

esp ecialm en te para se c o n se g u ir n u m ero so s b en efício s. E ntre essas


ap licaçõ es, en co n tram -se telefo n es celu lares, câm e ra s d ig itais e ca-
mcorders , co n so les d e v id eo g am es e assim p o r d ian te. O s circu ito s
dig itais en co n trad o s nas d ife re n te s ap licaçõ es d o s co m p u tad o res de
Ondas sonoras
propósitos gerais são ch am ad o s freq u en tem en te d e sistemas embar­
movem a cados , porque esses sistem as estão co lo cad o s d entro de um outro d is­
membrana, positivo eletrônico.
O m undo em sua m aior parle e analógico e, portanto, m uitas a p li­
que move cações foram im plem entadas anteriorm ente com circuitos analógicos.
o imã, No entanto, m uitas aplicações já m udaram ou estão m udando para im ­
plem entações digitais. Para com preender a razão, poderíam os prim eiro
constatar que, em bora o m undo seja analógico em sua m aior parte, as
pessoas frequentem ente obtêm vantagens quando os sinais analógicos
que cria uma corrente são convertidos para digitais antes que essa inform ação seja '‘p ro ces­
no fio próximo.
sada” . P or exem plo, um a buzina de carro é na realidade um sinal ana­
lógico - o volum e pode assum ir um núm ero infinito de valores possíveis e variar ao longo
do tem po devido a variações na carga, tem peratura, etc. da bateria. N o entanto, nós hum anos
desprezam os essas variações e “digitalizam o s" o som que ouvim os usando dois valores: a
buzina está “desligada" ou está “ligada” (saia do cam inho!).
A conversão de um fenôm eno analógico em digital, para ser usado por circu ito s digitais,
pode trazer m uitas vantagens. V am os ilu strar esse ponto an alisan d o com algum detalhe um
exem plo, a gravação de áudio. O som é c laram en te um sin al an aló g ico , com um núm ero
infinito d e freq ü ên cias e volum es possíveis. C o n sid ere a g rav ação de um sinal de áudio,
co m o a m úsica, usan d o um m icro fo n e de m odo que a m úsica p o ssa se r p o sterio rm en te
rep ro d u zid a nos alto-falantes de um ap arelh o de som . Um tipo de m icrofone, o d in âm ico ,
trab alh a b asead o em um d o s p rin cíp io s d o e le lro m a g n e tism o - o d e slo c a m e n to de um
im ã p ró x im o de um fio cau sa um a co rren te variável (e co n seq u en tem en te um a tensão) no
fio. Q uanto m ais o im ã d eslo car-se, m ais elevada será a tensão no fio. D essa m aneira, um
m icro fo n e tem um a p equena m em brana aco p lad a a um im ã p ró x im o de um fio - qu an d o
o som atinge a m em brana, o im ã m ove-se fazendo ap arecer um a co rren te no fio. De m odo
sem elh an te, um alto -falan te fu nciona baseado no m esm o p rin cíp io , m as o p eran d o ao c o n ­
trário - um a co rren te variável em um fio c a u sa um m o v im en to em um ím ã que esteja nas
pro x im id ad es, o qual, se aco p lad o a um a m em b ran a, irá p ro d u zir um som . (Se você tiver a
o p o rtu n id ad e, d esm o n te um alto -falan te an tig o - você en c o n trará um ím ã m u ito fo rte em
seu interior.) Se o m icrofone for ligado d iretam en te ao a lto -fa la n te (p o r m eio de um a m ­
p lificad o r q ue au m en ta a in ten sid ad e da co rren te de saíd a do m icro fo n e), en tã o n en h u m a
d ig italização será necessária. No en tan to , o que aco n tecerá se q u iserm o s arm azen ar o som
em algum tipo de m íd ia de m odo q ue p o ssam o s g rav ar um a c a n ç ã o ag o ra e rep ro d u z i-la
m ais tarde? P odem os gravar o som usando m étodos an aló g ico s ou d ig itais, m as estes ú lti­
m os têm m u itas vantagens.
Um a das vantagens dos m étodos digitais é a ausência da deterioração da qualidade com o
tem po. Q uando eu estava crescendo, a fita cassete de áudio, um m étodo analógico, era o m eio
m ais com um de se gravar canções. A fita de áudio contém quantidades enorm es de partículas
m agnéticas que podem ser m ovim entadas por um im ã até certas orientações em particular,
as quais podem ser m antidas m esm o depois que o im ã tenha sido rem ovido. D esse m odo,
usando o m agnetism o, pudem os alterar a superfície da fita, um as partes para cim a, algum as
m ais para cim a, outras para baixo, etc. Isso é sem elhante a quando, usando gel para cabelo,
você cria pontas em seu cabelo, algum as para cim a, algum as para o lado e outras para baixo.
A s orientações possíveis das partículas da fita, e de seu cabelo, são infinitas, de m odo que a
fita é definitivam ente analógica. Para gravar, passam os a fita por debaixo de um a “cabeça” ,
a qual gera um cam po m agnético a p artir da co rren te que circu la no fio, vinda de um m i­
crofone. D esse m odo, as partículas da fita são m ovidas até assum ir certas orientações. Para
22 Sistemas Digitais

reproduzir um a canção gravada, passaríam os novam ente a fila sob a cabeça, m as desta vez a
cabeça opera ao contrário, gerando um a corrente em um lio com base no cam po m agnético
variável da fita. Em seguida, essa corrente 6 am plificada e enviada aos alto-falantes.

sinal analógico
no fio

Id o ! 01 ! 10 i 10 J 11 11 ! 01 i 10 ! 10 i 00 ! tempo
conversor
microfone analógico- sinal digitalizado
digital
0 0 01 1 0 1 0 1 1 1 1 1 1 0 1 1 0 1 0 0 0

0001101011111101101000 lido de fita, CD, etc. sinal analógico


obtido a partir do
conversor
sinal digitalizado
digital-
analógico
,'____ ~v) 2 i' // I« r
-- _ o I/ I
51ï H
° /r
-too : oi 10 10 11 11 11 io 1oo time

alto-falante

Figura 1.1 Conversão de um sinal analógico em digital (em cima) e vice-versa


(embaixo). Observe uma certa perda de qualidade no sinal reproduzido.

Um problem a da fita de áudio e que as orientações das partículas presentes na superfície


da fita sofrem alterações com o tem po - exatam ente com o um penteado com pontas pela
m anhã acaba se alisando durante o dia. A ssim , a qualidade da fita de áudio deteriora-se com
o tem po. Essa deterioração é um problem a em m uitos sistem as analógicos.
A digitalização de áudio pode reduzir essa deterioração. O áudio digitalizado funciona
com o está m ostrado na Fig. 1.1. A figura m ostra um sinal analógico em um fio durante um
intervalo de tem po. Nós amostramos esse sinal em instantes particulares de tem po, m ostrados
pelas linhas tracejadas. S upondo que o valor do sinal pode variar d entro do intervalo de 0 a
3 volts e que planejam os arm azenar cada am ostra de sinal analógico usando dois bits, então
devem os arredondar cada am ostra para o valor em volts m ais próxim o (0, 1 ,2 ou 3), m ostra­
dos com o pontos na figura. Podem os arm azenar 0 volts com o os dois bits 00, 1 volt com o os
dois bits 01, 2 volts com o os dois bits 10 e 3 volts com o os dois bits 11. Desse m odo, irem os
converter o sinal analógico m ostrado no seguinte sinal digital: 0001101011111101101000.
Para gravar esse sinal digital, precisam os apenas arm azen ar 0s e l s na m íd ia de grava­
ção. P oderíam os usar fita com um de áudio, usando um breve bipe para rep resen tar um 1 e a
ausência dele para rep resen tar um 0. p o r exem plo. M esm o que o sinal de áudio na fita venha
a se deterio rar com o tem po, com certeza ain d a poderem os d istin g u ir entre um bipe e sua
ausência, do m esm o m odo que conseguim os d istin g u ir entre um a buzina de carro que está
acionada ou não. U m bipe lig eiram en te m ais fraco ainda ê um bipe. P rovavelm ente, você
já ouviu dados digitalizados sendo transm itidos de m odo sem elhante a esses bipes, quando
você tirou do gancho um telefone que estava sendo utilizado por um m odem de co m putador
ou um a m áquina de fax. M elhor ainda d o que fita d e áudio, podem os gravar o sinal digital
usando um a m ídia projetada especificam ente para arm azen ar 0s e ls . P or exem plo, a super-
Introdução 23

fície de um C D (compact clisk) pode ser co nfigurada para refletir intensa ou fracam ente um
feixe de raio laser até um sensor, arm azenando assim facilm ente ls e Os. D e m odo sim ilar, os
discos rígidos de co m p u tad o r usam a orientação das partículas m agnéticas para arm azen ar
Os e ls , to rn an d o esses discos sim ilares a fitas de áu d io , m as p erm itin d o um acesso m ais
rápido a partes aleatórias do disco, já que a cabeça pode se m over lateralm ente sobre o disco
que está girando.
Para reproduzir esse sinal de áudio digitalizado, podem os sim plesm ente converter o valor
digital de cada intervalo de am ostragem em um sinal analógico, com o se m ostra na parte in­
ferior da Fig. I . I . O bserve que o sinal reproduzido não é um a réplica exata do sinal analógico
original. No entanto, quanto m ais rapidam ente am ostrarm os o sinal analógico e quanto mais
bits usarm os para cada am ostra, m elhor será a aproxim ação entre o sinal analógico, reprodu­
zido e obtido a partir do sinal digitalizado, e o sinal analógico original - em algum ponto, as
pessoas não conseguem m ais notar a diferença entre um sinal de áudio puro e outro que foi
digitalizado e então convertido de volta à form a analógica.
U m a outra vantagem do áudio digitalizado é a com pressão. Suponha que irem os arm aze­
nar cada am ostra usando dez bits, ao invés de dois com o antes, para conseguir um a qualidade
m uito superior devido a arredondam entos m enores. No entanto, isso significa um a quantidade
m uito m aior de bits para o m esm o áudio - o sinal na Fig. 1.1 tem onze am ostras e, a dez bits
por am ostra, isso produzirá cento e dez bits para arm azenar o áudio. Se fizerm os a am ostra­
gem a um a taxa de centenas ou m ilhares de vezes por segundo, acabarem os com quantidades
enorm es de bits. Suponha, no entanto, que um a gravação de áudio em particular apresente
m uitas am ostras contendo os valores 0000000000 e 1111111111. Poderíam os com prim ir o ar­
quivo digital usando o seguinte truque: se o prim eiro bit de uma am ostra fo r 0, então, quando
o próxim o bit for 0. isso significará que a am ostra deverá ser expandida para 0000000000 e,
quando o próxim o bit for 1, significará que a am ostra será 1111111111. D esse m odo, 00 é a
form a abreviada de 0000000000 c 01 é a de 1111111111. Se o prim eiro bit de um a am ostra
for 1. então os próxim os dez bits representam a am ostra com o ela é realm ente. D esse m odo
o sinal digitalizado “0000000000 0000000000 0000001111 1111111111*’ seria com prim ido
com o “00 00 10000001111 01.” O receptor, que deve conhecer o esquem a de com pressão, irá
fazer a descom pressão do sinal produzindo o sinal digitalizado original. Há m uitos outros
truques que podem ser usados para com prim ir áudio digitalizado. Provavelm ente, o esquem a
de com pressão dc áudio m ais am plam ente conhecido é o MP3, que é popular por com prim ir
canções digitalizadas. U m a canção típica pode req u erer m uitas d ezen as de m egabytes não
com prim idos, m as depois de com prim ida requer usualm ente cerca de 3 ou 4 m egabytes. Um
CD de áudio pode arm azenar cerca de 20 canções não com prim idas, m as cerca de 200 quando
com prim idas. G raças à com pressão (com binada com discos de capacidade m ais elevada), os
tocadores portáteis de m úsica podem arm azenar m ilhares de canções - um a capacidade não
sonhada pela m aioria das pessoas na década de 1990.
O áudio digitalizado é usado largam ente não só na gravação de m úsica, m as tam bém nas
com unicações envolvendo a voz. Por exem plo, os telefones celulares digitais digitalizam a
sua voz e então com prim em o sinal digital antes de transm iti-lo. Isso perm ite que um núm ero
bem m aior de celulares opere em um a certa região do que seria possível usando telefones
celulares analógicos.

Satélites Tocadores Gravadores Instrumentos


de DVD de vídeo musicais
Tocadores portáteis
de música Telefones celulares Câmeras TVs ???

1995 1997 1999 2001 2003 2005 2007

Figura 1.2 Mais e mais produtos analógicos estão se tornando basicamente digitais.
24 Sistemas Digitais

F o to g rafias e vídeos podem ser d ig ita liz a d o s de m odo sim ila r ao d e sc rito para áudio.
A s c â m e ra s d ig ita is, p o r ex em p lo , arm azen am as fotos de fo rm a d ig ital a lta m e n te c o m ­
p rim id a e os g rav ad o res d e vídeo d ig ital tam bém a rm azen am d ig ita lm e n te os v íd eo s em
fitas ou discos.
Á udio, fotos e vídeos digitalizados são apenas algum as poucas das centenas de aplicações
novas e futuras que se beneficiam da digitalização de fenôm enos analógicos. C om o se m ostra
na Fig. 1.2, durante a últim a década, num erosos produtos analógicos, que anteriorm ente ba­
seavam -se em tecnologia analógica, foram convertidos basicam ente para a tecnologia digital.
Tocadores de m úsica portáteis, por exem plo, passaram de fitas cassetes para C D s nos m eados
da década de 1990 e recentem ente para M P3$ e outros form atos digitais. O s prim eiros telefo­
nes celulares usavam com unicação analógica, m as no final da década de 1990 a com unicação
digital, de idéia sem elhante à m ostrada na Fig. I . I , tornou-se dom inante. No início dos anos
2000, os tocadores de fita VHS analógicos abriram espaço para os tocadores de DVD digitais.
O s gravadores de vídeo com eçaram a digitalizar os vídeos antes de arm azená-los em fita, ao
passo que as câm eras elim inaram com plctam ente o filme e em seu lugar arm azenam as fotos
cm cartões digitais. O s instrum entos m usicais estão progressivam ente se tornando digitais.
B aterias e teclados estão se tornando m ais populares e surgiram recentem ente as guitarras
elétricas com processam ento digital. A TV analógica está dando passagem à digital. C en te­
nas de outros dispositivos foram convertidos de analógico em digital nas últim as décadas,
com o relógios de parede e de pulso, term ostatos dom ésticos, term ôm etros clínicos (que agora
funcionam na orelha e não sob a língua ou outros lugares), co ntroladores para m otores de
autom óveis, bom bas de gasolina, próteses auditivas e assim por diante.
M uitos dispositivos nunca foram analógicos, já foram introduzidos em forma digital desde o
início. Por exemplo, desde o seu com eço os videogam es foram digitais.
A digitalização requer que codifiquem os coisas usando ls e Os. C om putações que usam
circuitos digitais requerem que representem os os núm eros usando ls e Os. A presentarem os
agora esses aspectos dos circuitos digitais.

► 0 TELEFONE

O telefone, patenteado por Alexander Graham Bell W atson q u eria


no final dos anos 1800 (apesar de ter sido inventado “Hello", que ven­
por Antonio Meucci), opera usando o princípio ele­ ceu, mas Bell
tromagnético descrito antes - a sua fala cria ondas queria “Hoy hoy"
sonoras que movem uma membrana, a qual move no seu lugar. (Os
um ímã que cria uma corrente em um fio próximo. tas do seriado “Os
Estenda esse fio até uma certa distância, coloque Simpsons" podem
próximo desse fio um ímã acoplado a uma mem­ ter observado que
brana e então essa membrana irá se mover, produ­ o chefe de Homer,
zindo ondas sonoras semelhantes às suas quando o sr. Burns, atende
você está falando. Atualmente, a maior parte dos o telefone com um
sistemas telefônicos digitaliza o áudio para melho­ “hoy hoy.")
rar a qualidade e a quantidade de áudio transmitido
a longas distâncias. Dois fatos interessantes sobre o
telefone:
• Acredite ou não, a Western Union real mente re­ Um telefone de estilo
jeitou a proposta inicial de Bell para desenvolver antigo.
o telefone, talvez pensando que o então popular
telégrafo era tudo que as pessoas precisavam.
• Bell e seu assistente Watson discordaram so­ (Fonte de parte do material anterior: www.pbs.org, trans­
bre como responder a uma chamada telefônica: crição de “The Telephone").
Introdução 25

fenômenos Codificações digitais e números binários


analógicos
A seção anterior mostrou um exem plo de um sistem a digital, o qual envolveu a
sensores e digitalização de um sinal de áudio em bits, que então poderíam os processar por
outras entradas m eio de um circuito digital para obter diversos benefícios. Esses bits codificaram
sinal dados os dados de interesse. A codificação de dados em bits é um a tarefa central nos
elétrico digitais sistem as digitais. A lguns dos dados que desejam os processar já podem estar na
A para D form a digital, ao passo que outros podem estar em form a analógica (com o, por
exem plo, áudio, vídeo e tem peratura) e, portanto, necessitam prim eiro da con­
dados
digitais versão para digital, com o está ilustrado na parte de cim a da Fig. 1.3. Um sistem a
digital recebe dados digitais com o entrada e produz dados digitais de saída.

Codificando fenômenos analógicos


dados dados Q ualquer fenôm eno analógico pode ser digitalizado. C onseqüentem ente, um nú­
digitais digitais m ero sem fim de aplicações que digitalizam fenôm enos analógicos foram e con­
D para A tinuam sendo desenvolvidas. A utom óveis digitalizam inform ações sobre a tem ­
sinal peratura do motor, a velocidade do carro, o nível de com bustível, etc. de m odo
elétrico I que um com putador m ontado cm um único circuito integrado pode m onitorar e
controlar o veículo. O ventilador pulm onar que introduzim os antes digitaliza a
atuadores e
outras saídas m edida do fluxo de ar que é aspirado pelo paciente. Desse modo, um com puta­
dor pode fazer os cálculos para determ inar o fluxo adicional que deve ser forne­
cido, e assim por diante. A digitalização de fenôm enos analógicos requer:
Figura 1.3 Um sistema
típico. • Um sensor que m ede o fenôm eno físico analógico e converte o valor m e­
dido em um sinal elétrico. Um exem plo é o m icrofone (que m ede o som )
da Fig. 1.1. O utros exem plos com uns incluem os dispositivos de captura
de vídeo (que m edem a luz,), term ô m etro s (que m edem a tem p eratu ra) e
velocím etros (que m edem a velocidade).

• Um conversor analógico-digital que converte o sinal elétrico em códigos bi­


nários. O conversor deve am ostrar (m edir) o sinal elétrico a uma taxa regular
e converter cada am ostra em um valor de bits. Esse conversor foi caracteri­
zado na Fig. 1.1 e é m ostrado com o o com ponente A-D na Fig. 1.3.

De m odo sim ilar, um conversor digital-analógico (m ostrado com o D-A na


Fig. 1.3) converte bits de volta à form a de sinal elétrico e um atuador converte
esse sinal elétrico de volta à form a de fenôm eno físico. S ensores e atuadores
ju n to s são tipos de dispositivos conhecidos com o transdutores - dispositivos
que convertem um a form a de energia em um a outra.
Em m uitos exem plos deste livro, iremos utilizar sensores ideais que sozinhos
produzem dados de saída digitalizados. Por exemplo, poderíam os utilizar um sen­
sensor de sor de tem peratura que lê a tem peratura atual produzindo um a saída de 8 bits em
temperatura uma form a de codificação que representa a tem peratura com o um número binário
(veja as próxim as seções em relação às codificações de núm eros binários).

Codificando fenômenos digitais


0 0 1 0 0 0 0 1 O utros fenôm enos são inerentem ente digitais. Tais fenôm enos podem assum ir
apenas um valor de um conjunto finito de valores.
a
33 graus yy
A lguns fenôm enos digitais podem assum ir apenas um de dois valores pos­
síveis e, dessa form a, podem ser codificados diretam ente com o um único bit.
Por exem plo, os seguintes tipos de sensores podem pro d u zir um sinal elétrico
de saída que assum e um de dois valores:

• Sensor de m ovim ento: produz um a saída de tensão positiva (digam os + 3 V)


quando um m ovim ento é detectado e 0 V, em caso contrário.
26 Sistemas Digitais

Sensor lum inoso: produz um a saída de tensão positiva quando a luz é detectada e 0 V, em
caso contrário.

Botão (sensor): produz um a tensão positiva quando o botão é pressionado e 0 V, em caso


contrário.

Podem os codificar diretam ente a saída de cada sensor com um bit, sendo que
1 representa a tensão positiva e 0 representa 0 V. N os exem plos deste livro, ire­
m os utilizar sensores ideais que geram diretam ente o valor de bit codificado.
O utros fenôm enos digitais podem assu m ir diversos valores possíveis. Por
exem plo, um teclado pode ter q u atro botões de co res verm elho, azul. verde e
preto. Um projetista poderia criar um circuito tal que quando o botão verm elho
fosse pressionado, um a saída de três bits teria o valor 001; o azul poderia pro­
duzir 010, o verde 011 e o prelo 100. Se nenhum botão for pressionado, a saída
poderia ser 000. A Fig. 1.4 ilustra esse teclado.
Um fenôm eno digital m ais genérico é o alfabeto inglês. C ada
caracter deriva de um conjunto finito de caracteres, de m odo que,
ao pressionarm os um botão de um teclado, resultam dados d ig i­
tais, não analógicos. P odem os co n v erter os dados d ig itais para
bits atribuindo um a co d ificação de bits para cada caracter. Um a
form a po p u lar de codificação dos caracteres ingleses é conhecida
co m o AvSClI (A m erican S tandard C o d e for Inform ation Inter-
change*), que codifica cada caracter com sete bits. P or exem plo,
o código A SCII para a letra m aiuscula *A’ é “ 1000001” e para ‘B ’
é “ 1000010” . A letra m inúscula 'a ’ é “ 1100001,” e 4b ‘ é “ 1100010” .
A ssim , o nom e “A B B A ” seria codificado com o “ 1000001 1000010
1000010 1000001” . O A SC II define códigos de 7 leiras para todas
as 26 letras inglesas (m aiusculas e m inúsculas), os sím bolos nu­
m éricos de 0 a 9, os sinais de pontuação e tam bém um a série de
o 1 o códigos não im prim ívcis, usados em operações de “controle” . No
total, há 128 codificações em A SC II. Um subconjunto do código
Figura 1 .4 C odificação em um
A SC II está m ostrado na Fig. 1.5. Um outro código, o U nicode, usa
teclado.
16 bits por caracter, ao invés de apenas os 7 bits usados em A SCII,
e representa caracteres de diversas línguas do m undo.

S ím bolo Codificação S ím bolo Codificação

R 1010010 r 1110010
S 1010011 s 1110011
T 1010100 t 1110100
L 1001100 I 1101100
N 1001110 n 1101110
E 1000101 e 1100101
0 0110000 9 0111001
• 0101110 I
■ 0100001
<parágrafo> 0001001 <espaço> 0100000

Figura 1.5 Exemplos de codificações em ASCII.

Codificando números
O uso m ais im portante de circuitos digitais talvez seja a execução de cálculos aritm éticos. De
fato, um a m otivação chave para o projeto dos prim eiros com putadores foi os côm putos arit-

* N. clc T: Código Padrão Americano para Intercâmbio de Informação, em português.


Introdução 27

► POR QUEA BASE DEZ?

As pessoas têm dez dedos, de modo que elas escolhe­ mão - as quatro partes superiores, médias e inferiores
ram um sistema de numeração no qual cada dígito re­ desses dedos. Essa é provavelmente a razão pela qual
presenta dez valores possíveis. Se as pessoas tivessem o número doze é usado comumente nas contagens fei­
nove dedos, provavelmente usaríamos um sistema de tas pelas pessoas hoje em dia. como no uso do termo
numeração baseado no nove. Ocorre que no passado “dúzia” e as doze horas de um relógio.
a base doze também foi usada em certa medida, por­
que com o polegar podemos facilmente apontar para (Fonte: ‘‘Ideas and Information”, Arno Penzias, W.W. Nor­
ton and Company).
doze pontos diferentes dos demais dedos da mesma

m cticos das trajetórias balísticas da Segunda G uerra M undial. Para executar os


cálculos aritm éticos, precisam os de uma m aneira para representar os núm eros
5 2 3
por m eio de dígitos binários - precisam os dos núm eros binários.
Para com preender os núm eros binários, devem os assegurar-nos prim eiro de
102 101 10 ' que com preendem os os núm eros decim ais, os quais usam o sistem a de num e­
ração de base dez. A definição fundam ental da base dez é que se trata de um
Figura 1.6 S istem a
sistem a de num eração em que o dígito m ais á d ireita representa o núm ero de
de numeração de base
unidades ( 10°) que tem os, o próxim o díg ito representa o núm ero de dezenas
dez.
( 10 1) que tem os, o dígito seguinte representa o núm ero de grupos de dez d eze­
nas (10") que tem os, e assim p o r diante com o está ilustrado na Fig. 1.6. Desse
m odo os dígitos “523” na base 10 representam 5* 10" + 2* 10 1+ 3*10°.
0 nome da ferramenta C om o as pessoas têm dez dedos, elas desenvolveram e usam um sistem a de
de pesquisa Google num eração de base dez. E las criaram sím bolos para representar as quantidades
deriva da palavra que vão desde a ausência de dedos (0) até todos os dedos m enos um (9) - no
“googol” (gugol, entanto, são cham adas de “ unidades” e não “ded o s”, porque nem sem pre esta­
em português) - um m os contando dedos. Para representar um a quantidade superior a nove, as pes­
1 seguido por 100 soas introduziram um outro díg ito para rep resen tar o núm ero de grupos que
zeros, aparentemente contêm todos os dedos, é cham ado de “dezena” . O bserve que não precisam os
subentendendo que a de um sím bolo próprio para representar a quantidade dez em si, porque essa
ferramenta pode pes­ quantidade pode ser rep resen tad a por um grupo de um a dezena e nenhum a
quisar uma quantidade
unidade. Para representar m ais de nove dezenas, as pessoas introduziram um
enorme de informa­
outro sím bolo representando dez dezenas cham ado de “cen ten a” . Para rep re­
ções.
sentar dez centenas, elas introduziram m ais um sím bolo cham ado de “m ilhar” .
A língua inglesa (falada nos E stados U nidos) não tem um nom e para o grupo
que representa dez m ilhares, nem para o grupo que representa dez dezenas de
m ilhares, que é referido com o centena de m ilhares. O próxim o grupo é o dos
m ilhões. O utros grupos que são m últiplos de um m ilhar tam bém têm nom es
1 0 1 (bilhões, trilhões, quatrilhões, etc.).
A gora que com preendem os m elhor os núm eros dc base dez, podem os in­
troduzir os núm eros de base dois, conhecidos com o números binários. C om o
Figura 1.7 Sistem a os circuitos digitais trabalham com valores que são “ligado” ou “deslig ad o ” ,
de numeração de base tais circuitos precisam de apenas dois sím bolos, em vez de dez sím bolos. Va­
dois. m os definir que esses dois sím bolos são 0 e 1. Se precisarm os representar um a
quantidade superior a 1, usarem os um outro dígito, que representará o núm ero
de grupos de 2 1, que cham arem os de dois. D esse m odo, “ 10” na base dois
representa 1 dois e 0 unidades. C uide para não cham ar “ 10” de dez - em vez
disso, diga “d o is” . Se precisarm os de um a quantidade m aior, usarem os mais
um dígito, que representará o núm ero de g ru p o s de 2", que ch am arem o s de
quatro. O s pesos de cad a dígito na base dois são m ostrados na Fig. 1.7.
28 Sistemas Digitais

► CONTANDO "CORRETAMENTE" NA BASE DEZ

O fato de que há nomes para alguns dos grupos da tar que acredito fazer mais sentido). Assim, o número
base dez, mas não para outros, impede que muitas 523 seria lido como “cinco centenas, duas dezenas,
pessoas tenham uma compreensão intuitiva da base três) ao invés de “quinhentos e vinte e três”. Acredito
dez. Acrescente-se ainda a essa confusão que há abre­ que as crianças passam trabalho para aprender ma­
viações para os grupos das dezenas - os números 10, temática devido à confusão causada pela maneira de
20, 3 0 , 9 0 deveriam ser chamados de uma dezena, dar nomes aos números - por exemplo, levar um da
duas dezenas, três dezenas..... nove dezenas, mas ao coluna das unidades para à das dezenas faz mais sen­
invés disso são usados nomes abreviados: uma de­ tido se o um que é levado da coluna das unidades for
zena como simplesmente “dez”, duas dezenas como somado a “uma dezena, sete” do que a “dezessete”- o
“vinte”, três dezenas como “trinta”..... e nove dezenas resultado obviamente adiciona um à coluna das deze­
como “noventa”. Pode-se ver como noventa é uma nas. A aprendizagem do sistema binário é um pouco
abreviação de “nove dezenas”.* Além disso, nomes mais difícil para alguns estudantes, devido à falta
curtos são usados também para os números entre 10 e de uma compreensão sólida da base IO, causada em
20. 11 deveria ser “uma dezena, um” mas, no entanto, grande parte pela confusão de nomes. Talvez, quando
é “onze” e 19 deveria ser “uma dezena, nove” mas um balconista lhe disser “que vai custar noventa e
é, “dezenove”. A Tabela 1.1 mostra como se conta nove reais”, você possa corrigi-lo dizendo “você quer
“corretamente” na base dez (onde eu ousadamente dizer nove dezenas e nove reais”. Se muitos de nós
defino “corretamente” como sendo o modo de con- fizessem isso, será que ele iria entender?

TABELA 1.1 Contando "corretam ente" na base dez

0a9 Como de costume: "zero", "um", "dois", etc.

10 a 99 10,11,12,..., 19: "uma dezena", "uma dezena, um", "uma dezena, dois",..., "uma dezena, nove"
20.21.22.. .., 29: "duas dezenas", "duas dezenas, um", "duas dezenas, dois",..., "duas dezenas, nove"
30.40.. .., 90: "três dezenas", "quatro dezenas",..., "nove dezenas"

100 a 900 Como: "uma centena", "duas centenas",..., "nove centenas". Melhor ainda seria substituir a pala­
vra "centena" por "dez elevado à potência 2".

1000 e mais Como de costume. Melhor ainda: substituir "mil (ou milhar)" por "dez elevado à potência 3", "dez
mil" por "dez elevado à potência 4", etc. eliminando todos os nomes.

Eu vi o seguinte texto Por exem plo, o núm ero 10 1 na base dois é igual a l *2~ + 0 * 2 ‘ + l *2°, ou 5,
em uma camiseta e o na base dez. Em outras palavras, ÍOI pode ser lido com o “um quatro, zero dois,
achei bem divertido: um a unidade” . A m aioria das pessoas que está à vontade com a num eração
“Há 10 tipos de pes­ binária diz apenas “ um zero um ” . Para ser bem claro, você poderia d izer “um
soas no mundo: as que zero um , base dois” . E ntretanto, definitivam ente você não deverá dizer “cento
entendem binário e as e um , base dois” . N a base dez, ÍOI é cento e um , m as o l m ais à esquerda não
que não”. representa cem na base dois.
Quando estamos escrevendo números cm bases diferentes e as bases dos núme­
ros não são óbvias, indicamos a base com um índice, com o segue: 1012= 5,0. Pode­
ríamos ler isso com o “um zero um na base dois é igual a cinco na base dez.”
1 o 1 C om o o sistem a binário não é tão p opular com o o decim al, observe que as
pessoas não criaram nom es para os grupos de 2 , 2 \ e assim por diante, com o o
16 8 4 2 1
fizeram para os grupos da base dez (centenas, m ilhares, m ilhões, etc.). A s pes­
Figura 1.8 Sistem a soas sim plesm ente usam o nom e equivalente na base dez para o grupo - um a
de numeração de base fonte de confusão para as pessoas que estão com eçando a aprender a num era­
dois. ção binária. E ntretanto, pode ser m ais fácil pensar a respeito de cada grupo da
base dois usando nom es da base 10 c não potências crescentes de dois, com o
está m ostrado na Fig. 1.8.

* N. de T: O autor está se referindo, em inglês, à ninety (noventa) como forma abreviada de “nine tens” (nove dezenas).
Introdução 29

► EXEM PL01.1 Binário para decimal


Converta os seguintes números binários para decimais: 1, 110,10000,10000111 e 00110.
1, é simplesmente 1*2°, ou 11().
110, é 1*2' + 1*2 + 0*2 ou 6 I0. Poderíamos ver isso usando os pesos mostrados na Fig. 1.8:
1*4+ 1*2+ 0*1 ou 6.
10000, é 1* 16 + 0*8 + 0*4 + 0*2 + 0*1, ou 16 l0.
10000111, é 1* 128 + 1*4 + 1*2 + 1* 1 = 135,0. Observe que desta vez não nos preocupamos em
escrever os grupos que têm bit 0.
00110, d o mesmo que o 110, anterior - os bits à esquerda com 0 não alteram o valor. ◄

O conhecimento Q uando as pessoas convertem de binário para decim al, acham útil conhecer as
das potências de
potências de dois, pois cada casa sucessiva à esquerda em um núm ero binário é o
dois ajuda a aprender
dobro da casa anterior. Em binário, a prim eira casa, a m ais à direita, é 1, a segunda
a numeração binária:
casa ê 2, e então 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048 e assim por diante.
1 r- ^ 1 2 8
Você poderia interrom per aqui essa seqüência e praticar a contagem em potências
2 256
de dois algum as vezes: 1 ,2 , 4, 8, 16. 32, 64, 128. 256, 512, 1024, 2048. A gora,
4 512
quando você vir o núm ero 10000111. você poderá deslocar-se ao longo do núm ero
8 1024
indo da direita para a esquerda c contar cm potências de dois a cada bit, de m odo a
16 2048
determ inar o peso do bit m ais à esquerda: 1, 2, 4, 8, 16, 32, 64, 128. O 1 seguinte
32 • • •

m ais elevado tem um peso de (contando novam ente) 1 ,2 ,4 ; som ando 4 a 128 dá
64 —

132. O 1 seguinte tem um peso de 2, que som ado a 132 fornece 134. O 1 m ais à
direita tem um peso de 1, que som ado a 134 dá 135.A ssim , 100000111 é igual a
135 na base dez.

► EXEM PL01.2 Contando em binário


A contagem de 0 a 7 em binário é escrita como: 000, 001,010, 011, 100. 101, 110, 111. M

Um fato interessante sobre os núm eros binários - você pode determ inar rapidam ente se
um núm ero binário é ím par sim plesm ente exam inando se o dígito mais à direita é 1. Se esse
dígito fosse 0, então o núm ero seria par porque ele seria a som a de núm eros pares.

Conversão entre números decimais e binários usando o método da subtração


C om o vim os anteriorm ente, a conversão de um núm ero binário em decim al ê fácil - sim ­
plesm ente som am os os pesos dos dígitos que são 1. A conversão de um núm ero decim al em
binário necessita um pouco m ais de trabalho. Um m étodo de se converter um núm ero de d e­
cim al para binário, que cham arem os de método da subtração e que é fácil de ser feito à mão
pelas pessoas, está m ostrado na Tabela 1.2. O m étodo com eça com um núm ero binário que é
constituído só de 0s.

TABELA 1.2 Método da subtração para se converter um número de decimal para binário

Passo Descrição
q Coloque 1 na casa Coloque um 1 na casa binária de peso mais elevado e que é menor ou igual ao número decimal.
V
C3) mais elevada
CL

Atualize o número Atualize o número decimal subtraindo o peso da casa binária mais elevada do número deci-
8 decimal mal. 0 novo número decimal é a quantidade que resta para ser convertida em binário. Se o
a- número decimal atualizado não for zero, retorne ao passo 1.

P or exem plo, podem os converter o núm ero decim al 12 com o m ostrado na Fig. 1.9
30 Sistemas Digitais

Decimal Binário
1. Coloque 1 na casa mais elevada
Tente a casa 16, grande dem ais (16>12) 12 X 1 0 0 0 (o valor
Próxima casa, 8, é a m aior (8<12) 16 8 4 2 1 corrente
2. Atualize o núm ero decim al -8 é 8)
Decimal diferente de zero, retorne ao Passo 1 4

1. Coloque 1 na casa mais elevada


Próxima casa, 4, é a m aior (4=4) 1 1 0 0 (o valor
2. Atualize o núm ero decimal 16 8 4 2 1 corrente
-4
O núm ero decimal é zero, fim . é 12)
0

Figura 1.9 Conversão do número decimal 12 para binário usando o método da subtração.

A gora podem os verificar o nosso trabalho, convertendo 1100 dc volta à form a decim al:
1*8 + 1* 4 + 0 * 2 + 0 * 2 = 12.
C om o outro exem plo, a Fig. 1.10 ilustra o m étodo da subtração sendo usado para converter
o núm ero decim al 23 para binário. Podem os conferir o nosso trabalho convertendo o resultado,
10111, de volta à form a decim al: 1*16 + 0*8 + 1*4+ 1*2+ 1*1 = 2 3 .

Decimal Binário
1. Coloque 1 na casa mais elevada 23 1 0 0 0 0 (o valor
A casa 32 é grande demais, mas 16 serve 16 8 4 2 1 corrente é 16)
2. Atualize o núm ero decim al -16
Decimal diferente de zero, retorne ao Passo 1 1

1. Coloque 1 na casa mais elevada 1 0 1 0 0 (o valor


A próxim a casa é 8, grande dem ais (8>7) 16 8 4 2 1 corrente é 20)
4 serve (4<7) -4
2. Atualize o núm ero decim al Q
O
O núm ero decim al não é zero, retorne
ao Passo 1

1. Coloque 1 na casa mais elevada 1 0 1 1 0 (o valor


A próxim a casa é 2, serve (2<3) 16 8 4 2 1 corrente é 22)
-2
2. Atualize o núm ero decim al
1
Decimal diferente de zero, retorne ao Passo 1

1. Coloque 1 na casa mais elevada 1 0 1 1 1 (o valor


A próxim a casa é 1, serve (1=1) 16 8 4 2 1 corrente é 23)
-7
2. Atualize o núm ero decim al
0
O núm ero decim al é zero, fim

Figura 1.10 Conversão do número decimal 23 para binário usando o método da subtração.

► EXEM PL01.3 Decimal para binário


Converta os seguintes números decimais para binário usando o método da subtração: 8, 14, 99.
A 11m de converter 8 para binário, começamos colocando um 1 na casa de peso 8, resultando
1000. Como 8 - 8 = 0, então temos o resultado - a resposta é 1000.
A fim de converter 14 para binário, começam os colocando um 1 na casa de peso 8 (16 é de­
mais), resultando 1000. 1 4 - 8 = 6, logo colocaremos um 1 na casa de peso 4, dando 11 (K). Como
6 - 4 = 2, e colocaremos um 1 na casa de peso 2, resultando 1110. Como 2 - 2 = 0, chegamos assim
ao fim - a resposta é 1110. Podemos verificar rapidamente o nosso trabalho convertendo de volta
para decimal: 8 + 4 + 2 = 14...
A fim de converter 99 para binário, começam os colocando um 1 na casa de peso 64 (a casa
mais elevada seguinte, 128, é grande demais - observe que é prático ser capaz de contar em po­
tências de dois neste problema), resultando 1000000. Como 99 - 64 é 33, colocam os um 1 na casa
de peso 32, dando 1100000. Como 35 - 32 é 3, colocam os um 1 na casa de peso 2, resultando
Introdução 31

11 ()(X) 10. Como 3 - 2 é 1, colocamos um 1 na casa de peso 1, resultando a resposta final 1100011.
Podemos conferir o nosso trabalho convertendo de volta para decimal: 64 + 32 + 2 + 1 = 99. *4

Conversão entre números decimais e binários usando o método da divisão por 2


U m a abordagem alternativa para se converter um núm ero decim al para binário, talvez menos
intuitiva do que o m étodo da subtração, m as m ais fácil de im plem entar quando se usa um pro­
gram a de com putador, envolve a divisão repetida do núm ero decim al por 2 - irem os cham á-la
de método da divisão por 2. O resto em cada passo (0 ou 1) torna-se um bit do núm ero binário,
com eçando do dígito m enos significativo (m ais à direita). Por exem plo, a Fig. 1.11 m ostra o
processo de conversão do núm ero decim al 12 em binário usando o m étodo da divisão por 2.

Decimal Binário

1. Divida o núm ero decim al por 2


Insira o resto no núm ero binário
Continue, já que o quociente (6) é m aior do que 0

2. Divida o quociente por 2


Insira o resto no núm ero binário
Continue, já que o quociente (3) é m aior do que 0 0 (valor corrente: 0)

1
3. Divida o quociente por 2 2V~3 J_ _0_ _0_
Insira o resto no núm ero binário _=?_ 4 2 1
Continue, já que o quociente (1) é m aior do que 0 ^ (valor corrente: 4)

4. Divida o quociente por 2 2vT _L JL JL JL


Insira o resto no núm ero binário -0 8 4 2 1
O quociente é 0, fim 1 (valor corrente: 12)

Figura 1.11 Conversão do número decimal 12 em binário usando o método da divisão por 2.

► EXEM PL01.4 Decimal para binário usando o método da divisão por 2


Converta os seguintes números para binário usando o método da divisão por 2: 8, 14, 99.
A fim de converter 8 para binário, começam os dividindo 8 por 2: 8/2 = 4, resto 0. A seguir,
dividimos o quociente, 4, por 2: 4/2 = 2, resto 0. Então, dividimos 2 por 2: 2/2 = 1, resto 0. Final­
mente, dividimos 1 por 2: 1/2 = 0, resto 1. Paramos de dividir porque o quociente agora é 0. Com ­
binando todos os restos, com o dígito menos significativo primeiro, obtem os o número binário
1000. Podemos verificar essa resposta multiplicando cada dígito binário pelo seu peso e somando
os termos: 1*23 + 0*22 + 0*2' + 0*2° = 8.
A fim de converter 14 para binário, seguimos um processo similar: 14/2 = 7, resto 0.7/2 = 3, resto
1.3/2 = 1, resto 1. 1/2 = 0, resto 1. Combinando os restos obtemos o número binário 1110. Conferindo
a resposta, verificamos que 1110 está correto: 1*23 + 1*2: + 1*2' + 0*2" = 8 + 4 + 2 + 0 = 14.
A fim de converter 99 para binário, o processo é o mesmo mas naturalmente necessitará de
mais passos: 99/2 = 49, resto 1. 49/2 = 24, resto 1. 24/2 = 12, resto 0. 12/2 = 6, resto 0. 6/2 = 3,
resto 0. 3/2 = 1, resto 1. 1/2 = 0, resto 1. Combinando os restos dá o número 1100011. Sabemos do
Exemplo 1.3 que essa é a resposta correta. M

Conversão de qualquer base para qualquer outra base usando o método da divisão por n
Estivem os dividindo por 2 para fazer a conversão para a base 2, m as podem os usar o m esm o
m étodo básico para converter um núm ero na base 10 para um núm ero em q u a lq u er base.
Para converter um núm ero da base 10 para a base /?, sim plesm ente dividim os repetidam ente o
núm ero por n e acrescentam os o resto para o núm ero na nova base /?, com eçando a partir do
dígito m enos significativo.
32 Sistemas Digitais

► EXEM PL01.5 Decimal para bases arbitrárias usando o método da divisão por n
Converta o número 3439 para as bases IO e 7.
Sabemos que o número 3439 é 3439 na base 10, mas vamos usar o método da divisão por n (em
que n é IO) para mostrar que o método funciona com qualquer base. Começamos dividindo 3439
por 10: 3439/10 = 343, resto 9. Dividimos então o quociente por 10: 343/10 = 34, resto 3. Fazemos
0 mesmo com o novo quociente: 34/10 = 3, resto 4. Finalmente, dividimos 3 por 10: 3/10 = 0, resto
3. Combinando os restos, dígito menos significativo primeiro, obtemos o número 3439 na base 10.
Para converter 3439 para a base 7. a abordagem é semelhante, exceto que agora dividimos
por 7. Com eçam os dividindo 3439 por 7: 3439/7 = 491, resto 2. Continuando nossos cálculos,
obtemos: 491/7 = 70, resto I. 70/7 = 10, resto 0. 10/7 = I, resto 3. 1/7 = 0, resto 1. Portanto,
3439 na base 7 é 13012. Conferindo a resposta, verificamos que obtivemos o resultado correto:
1*74 + 3*73 + O*?2 + 1 * 7 '+ 2*7" = 2401 + 1029 + 7 + 2 = 3439. ◄

Em geral, um núm ero pode ser convertido de um a base para um a outra convertendo pri­
m eiro aquele núm ero para a base dez e, então, convertendo o núm ero em base dez para a base
desejada por m eio do m étodo da divisão por n.

8 Números hexadecimais e octais


O s n ú m ero s d e b ase d e z e sse is, c o n h e c id o s c o m o números
164 163 162 161 16:0
'

hexadecim ais ou sim p le sm e n te hex, são tam b ém p o p u la ­


8 A F
res em p ro jeto d ig ita l, p rin c ip a lm e n te p o rq u e um d íg ito de
t t t base d e z e sse is é e q u iv a le n te a q u atro d íg ito s d e base dois,
1000 1010 1111
to rn an d o os n ú m ero s h e x a d e c im ais um a boa rep resen tação
hex binário hex binário ab rev iad a p ara os n ú m ero s b inários. Na base d ezesseis, o p ri­
m eiro d íg ito re p re se n ta até q u in z e u n id a d e s - os d ezesseis
0 0000 8 1000
sím b o lo s co m u m en te usados são 0, l, 2 ,..., 9, A, B. C , D, E,
1 0001 9 1001
F (portanto, A = dez, B = onze, C = doze, D = treze, E = q u a ­
2 0010 A 1010
to rze e F = q u in ze). O p ró x im o d íg ito re p re se n ta o núm ero
3 0011 B 1011
4 0100 C 1100 d e g ru p o s d e I 6 1, o d íg ito seg u in te re p re se n ta o n ú m e ro d e
5 0101 D 1101 g ru p o s d e 16", etc. co m o está m o strad o na Fig. 1.12. A ssim ,
6 0110 E 1110 8 A F ia é igual a 8 * I6 2 + 10 * 161 + 15 * 16°, ou 2 2 2 3 m. C om o
7 0111 F 1111 um d íg ito na base 16 rep resen ta 16 valores, e q u atro d íg ito s
na b ase d o is rep re sen ta m 16 v alo res, e n tã o c a d a d íg ito na
Figura 1.12 Sistema de numeração de base 16 re p re se n ta q u a tro d íg ito s na base d ois, c o m o e stá
base dezesseis. m o strad o na p arte in fe rio r d a Fig. 1.12. A ssim , para co n v er­
ter 8 A F 16 p ara b in ário , c o n v e rtem o s 8 I(S e m 1000,, A 16 em
1010, e F 16 em 1111,, re su lta n d o 8 A F ,6 = 1 0 0 0 1 0 1 0 1 1 1 1 ,.
Você pode v er p o rq u e o sistem a h ex ad ecim al é um a form a
p o p u lar de ab rev iar os nú m ero s em sistem a binário: 8A F é m u ito m ais sim p les de se ver
do q ue 100010101111.
A fim de converter um núm ero binário para d ecim al, sim p lesm en te sub stitu ím o s cada
quatro bits pelo correspondente dígito hexadecim al. A ssim , a fim de converter 101101101,
para hexadecim al, distribuím os os bits em grupos de quatro, com eçando pela direita, resul­
tando I 0110 1101. A seguir, substituím os cada grupo de quatro bits por um dígito hexadeci­
mal sim ples. 1101 é D, 0110 é 6 e I é 1, resultando o núm ero hexadecim al 16D I6.

► EXEM PL01.6 Hexadecimal para/de binário


Converta os seguintes números hexadecim ais para binário: FF, I0 l l, A0000. A fim de expandir
cada dígito hexadecimal para quatro bits, você poderá achar útil referir-se à Fig. 1.12.
F F 16 é 1111 (para o F esquerdo) e 1111 (para o F direito) ou 11111111,.
Introdução 33

10 1116é OOO1, 0000,0001,0001 ou 0001000000010001,. Não se deixe confundir peio fato de


que 1011 não apresenta nenhum símbolo diferente de 1 e 0 (o que torna o número parecido
com um número binário). Dissemos que ele era de base 16, e assim ele foi. Se tivéssemos
dito que ele era de base 10, então 1011 seria igual a um mil c onze.
A 000016 é 1010, 0000,0000,0000, 0000, ou 101000000000000000002.
Converta os seguintes números binários para hexadecimal: 0010, 01111110, 111100.
0 0 1 0 2 é 2 I6.
0 1 1 1 1 1 102 d 0111 c 1110, significando 7 c E ou 7 E I6.
111100, é 11 e 1100, ou 0011 e 1100, significando 3 e C ou 3C 16. Observe que começam os a
agrupar os bits em conjuntos de quatro a partir da direita, e não da esquerda. M

O método da subtração ou o da divisão por 16 também podem ser usados para converter de­
cim ais em hexadecim ais. No entanto, fazer essa conversão pode ser muito trabalhoso, já que não
estam os acostum ados a trabalhar com potências de dezesseis. No lugar disso, freqüentem ente é
mais rápido converter de decimal para binário, usando o método da subtração ou o da divisão por
2, e então fazer a conversão de binário para hexadecimal agrupando em conjuntos de 4 bits.

► EXEM PL01.7 Decimal para hexadecimal


Converta 29 da base 10 para a base 16.
Para realizar essa conversão, podemos primeiro converter 29 para binário e então converter o
resultado binário para hexadecimal.
A conversão de 29 para binário é imediata usando o método da divisão por 2: 29/2 = 14, resto 1.
14/2 = 7, resto 0. 7/2 = 3, resto 1.3/2= I, resto 1. 1/2 = 0, resto I. Portanto, 29 é 1110 1 na base 2.
A conversão de 11101, para hexadecimal pode ser feita agrupando conjuntos de quatro bits.
Desse modo, 11101, é l , e 1101,, o que significa l l6e D l6ou 1D16.
Naturalmente, podemos usar o método da divisão por 16 para converter diretam ente de de­
cimal para hexadecimal. Começando com 29. dividimos por 16: 29/16 = 1, resto 13 (D ir>). 1/16 =
0. resto 1. Reunindo os restos dá 1DI6. Embora essa conversão em particular seja simples, a con­
versão de números maiores diretamente de decimal para hexadecimal pode levar muito tempo, de
modo que pode ser preferível a conversão em duas etapas. ◄

A lgum as vezes, os núm eros de base oito, conhecidos com o núm eros octais , são usados
tam bém com o form a para abreviar núm eros binários, porque um dígito em base oito é igual a
três dígitos binários. 503s é igual a 5*82 + 0 * 8 ' + 3*8° = 3 2 3 l0. Podem os converter 503s direta-
m ente para a base binária sim plesm ente substituindo cada dígito por três bits, resultando 503s
= 101 000 011 ou 1010000112. De m odo sem elhante, podem os converter de binário para octal
organizando o núm ero binário cm grupos de três bits a partir da d ireita e então substituindo
cada grupo pelo dígito octal correspondente. A ssim , 1011101, produz 1011 101 ou 135s.
O A pêndice A discute com m ais detalhes as representações num éricas.

► 1.3 IMPLEMENTANDO SISTEMAS DIGITAIS: PROGRAMAÇÃO DE


MICROPROCESSADORES VERSUS PROJETO DE CIRCUITOS DIGITAIS
O s projetistas podem im plem entar um sistem a digital para uma aplicação, usando um entre dois
métodos com uns de im plem entação: program ando um m icroprocessador, ou criando um circuito
digital próprio, feito especialm ente sob m edida para atender a um a necessidade. É conhecido
também por circuito digital custom izado. Este método é conhecido por projeto digital.
Com o exem plo concreto, considere uma aplicação sim ples que acende uma lâm pada sempre
que há m ovim ento em um quarto escuro. A ssum a que o detector de m ovim ento tem um fio de
saída cham ado a que fornece um bit 1 quando algum m ovimento é detectado e um bit 0 em caso
34 Sistemas Digitais

contrário. A ssum a que o sensor de luz tem um fio de saída b que fornece um bit 1 quando luz
é detectada e um bit 0 em caso contrário. A ssum a também que há um fio F que liga a lâm pada
quando F é 1 e a desliga quando é 0. Um desenho do sistem a está m ostrado na Fig. 1.13(a).
O problem a d o projeto é determ inar o que acontece no bloco ch am ad o Detector. Esse
bloco recebe os fios a e b com o entradas e gera um valor em F. tal que a lâm pada é acesa
quando está escuro e um m ovim ento é detectado. Essa aplicação do Detector pode ser im ple­
m entada facilm ente com o um sistem a digital, já que as entradas e saídas da aplicação são ob­
viam ente digitais, tendo apenas dois valores possíveis cada. Um projetista pode im plem entar
o bloco Detector , program ando um m icroprocessador (Fig. 1.13(b)) ou usando um circuito
digital custom izado (Fig. 1.13(c)).

(a) (b) (c)

Figura 1.13 Sistema detector de movimento no escuro: (a) diagrama de blocos do sistema, (b)
implem entação usando um microprocessador e (c) implem entação usando um circuito digital
customizado.

Software em microprocessadores: o cavalo de trabalho digital


Um “processador" pro­ O s projetistas q ue precisam trab alh ar com fenôm enos digitais freqüentem ente
cessa, ou transforma, com pram um m icro p ro cessad o r d ireto d a loja e escrevem um so ftw are para
dados. Um “ micropro­ esse m icroprocessador, ao invés de p ro jetar um circu ito digital custom izado.
cessador" é um pro­ O s m icro p ro cessad o res são real m ente o “cavalo d e trab alh o ” dos sistem as
cessador programável digitais realizando a m aioria d as tarefas de p ro cessam en to digital.
implementado em um
único circuito inte­
grado - aqui “micro ”
significa simplesmente
pequeno. O termo mi­
croprocessador tornou-
se popular na década
de 1980, quando os
processadores foram di­
minuindo, passando de
múltiplos circuitos inte­
grados para um único.
O primeiro micropro­
cessador de um único Figura 1.14 Pinos de entrada e saída de um microprocessador básico.
circuito integrado fo i o
Intel 4004 em 1971. Um microprocessador é um dispositivo digital program ável que executa
uma seqüência de instruções especificadas pelo usuário, conhecida com o pro­
grama ou software. A lgum as dessas instruções leem as entradas do m icropro­
cessador, outras escrevem nas saídas do m icroprocessador e outras instruções
realizam côm putos com os dados de entrada. Vam os assu m ir que tem os um
Introdução 35

m icroprocessador básico com oito pinos de entrada, denom inados 10, I I , 17, e oito pinos
de saída, PO. P l , ..., P7, com o está m ostrado na Fig. 1.14(a). U m a fotografia de um encapsula­
m ento real de m icroprocessador com esses pinos está m ostrada na Fig. 1 .14(b) (o nono pino
deste lado é de alim entação elétrica e o do outro lado é de terra).
Um a solução baseada em m icroprocessador para a aplicação do detector de m ovim ento no
escuro está ilustrada na Fig. 1.13(b) e um a fotografia de um a im plem entação física real está
m ostrada na Fig. 1 .1 5 .0 projetista conecta o fio a ao pino 10 de entrada do m icroprocessador,
o b ao pino de entrada í l e o pino de saída PO ao fio F. O projetista poderia então especificar­
as instruções do m icroprocessador escrevendo o seguinte código em C:

void m ain()
{
w h ile (1) {
PO = 10 && ! I I ; / / F = a and !b ,
}
}

C é um a de diversas linguagens p o ­ sensor de


pulares usadas para descrever as instru­ movimento
microprocessador
ções que devem ser ex ecutadas no m i­
croprocessador. O có d ig o em C acim a ' ~ L F
trab alh a co m o segue. O m icro p ro ces­
sador, d e p o is de te r sido en erg izad o
lâmpada
eletricam ente e inicializado, executa as
instruções contidas dentro das chaves {}
de main. A prim eira instrução é “w h ile
( 1 ) ” que sim plesm ente significa repetir
indefinidam ente as instruções contidas
nas chaves. D entro das chaves da instru­
ção w h ile , há apenas um a instrução “ PO
= 10 && ! I 1 ”, que atribuirá o valor 1
ao pino de saída PO se o pino de entrada Figura 1.15 Implementação física de um detector de
10 for 1 e (escrito com o &&) o pino de movimento no escuro, usando um microprocessador.
entrada I I não for 1 (significando que I I
é 0). A ssim , o pino de saída P0, que liga
ou d eslig a a lâm pada, receberá rep eti­
dam ente e por tem po indefinido valores
apropriados com base nos valores dos pi­
nos de entrada, os quais são produzidos
0
pelos sensores de m ovim ento e luz.
1
A Fig. 1.16 exemplifica os sinais a. b e
F ao longo do tem po que corre para a d i­ 0
reita. À m edida que o tem po passa, cada 1
sinal pode ser 0 ou 1. Isso é ilustrado pe­
los níveis alto ou baixo da respectiva linha
de cada sinal. Fizem os com que o sinal a 6:00 7 :0 5 7 :0 6 9 :0 0 9:01 tempo
fosse igual a 0 até 7:05, quando o m uda­
Figura 1.16 Diagrama de tempo do sistema detec­
mos para 1. A seguir, fizem os com que ele
tor de movimento no escuro.
perm anecesse em 1 até 7:06, quando o le­
vamos de volta a 0. Fizem os a perm anecer
em 0 até 9:00, o tornamos 1 e, em 9:01 fizemos voltar a 0. Por outro lado, fizemos b com eçarem 0
e então tornar-se 1 em algum instante entre 7:06 e 9:00. O diagram a mostra o valor que seria dado
36 Sistemas Digitais

a F pelo program a em C que está sendo executado no m icroprocessador - quando a é 1 e b é 0 (de


7:05 a 7:06), F será 1. Um diagram a com o tempo correndo para a direita e os valores dos sinais
digitais mostrados por linhas altas ou baixas c conhecido com o diagrama de tempo. Desenhamos
as linhas de entrada (a e b) com valores quaisquer definidos por nós, m as a linha de saída (F) deve
descrever o com portam ento do sistem a digital.

► EXEMPLO 1.8 Sistema de notificação de movimento externo usando um microprocessador


Vamos usar o m icroprocessador básico da Fig. l.I 4
para im plem entar um sistema que ativa um sonorizador
quando algum movimento 6 detectado em qualquer um
de três sensores de movimento, no lado externo de uma
casa. Conectamos os sensores de movimento a três pinos
de entrada 10, I I e 12 e o pino de saída PO a um sonori­
zador (Fig. 1.17). (Estamos assum indo que os sensores
de movimento e o sonorizador têm interfaces eletrônicas
adequadas com os pinos do microprocessador.) Podemos
então escrever o seguinte programa em C:

void main()
{
Figura 1.17 Sensores de movimento conectados while (1) {
ao microprocessador. PO = 10 || II || 12;
)
}

O programa executa repetidamente a instrução contida no laço de while. Essa instrução faz
com que PO seja 1 quando 10 é 1 ou (escrita como | | em linguagem C) II é 1 ou 12 é 2. Em caso
contrário, a instrução faz com que P0 seja 0. ◄

► EXEM PL01.9 Contando o número de sensores de movimento ativos


Neste exemplo, usaremos o microprocessador básico da Fig. 1.14 para im plem entar um sistema
digital sim ples que fornece o numero binário de sensores de movimento que estão detectando
algum movimento neste momento. Vamos assumir dois sensores, significando que precisaremos
produzir um número de dois bits na saída, o qual pode representar as contagens possíveis 0 (00),
l (01) e 2 (10). Iremos conectar os sensores de movimento aos pinos de entrada 10 e II do mi­
croprocessador e o valor do contador será enviado para os pinos de saída PI e P0. Agora podemos
escrever o seguinte program a em C:

void main()
{
while (1) {
i f (!10 && ! II) {
PI = 0; P0 = 0; // 00 de saída, significando zero
}
else if ( (10 && 111) || (110 && II) ) {
PI = 0; P0 = 1; // 01 de saída, significando um
}
else if (10 && II) {
PI = 1; P0 = 0; // 10 de saída, significando dois
}
}

O s projetistas gostam de usar m icroprocessadores cm seus sistem as digitais porque são fa­
cilmente encontrados, de baixo custo, fáceis de program ar e reprogramar. Você poderá se surpre­
ender ao saber que pode com prar m icroprocessadores por menos de um dólar. Esses micropro-
Introdução 37

cessadores são encontrados em lugares com o


secretárias eletrônicas, fornos de microondas,
carros, brinquedos, certos aparelhos médicos
e m esm o em sapatos com luzes piscantes.
Com o exem plos, incluem -se o 8051 (origi­
(a)
nalm ente projetado pela Intel), o 68HC11
(feito pela M otorola) e o P1C (produzido pela
M icroChip). O utros m icroprocessadores po­
dem custar dezenas de dólares e são encon­
trados em lugares com o telefones celulares,
assistentes digitais portáteis,
Um “processador”pro­ equipam entos de autom ação
cessa, ou transforma, Figura 1.18 Encapsulam entos de microproces­
de escritó rio e em e q u ip a ­
dados. Um “micropro­ sadores: (a) m icroprocessadores PIC e 8 0 5 1,
m entos m édicos. E ntre esses
cessador” é um pro­ custando cerca de um dólar cada, (b) um pro­
processadores estão o A RM
cessador programável cessador Pentium com parte de seu encapsula­
implementado em um (feito pela Arm Corporation),
mento removida, mostrando a pastilha de silício
único circuito inte­ o MIPS (produzido pela MIPS
em seu interior.
grado-aqui “micro” Corporation) e outros. Outros
significa simplesmente m icroprocessadores, com o o bem conhecido Pentium da Intel, podem custar algu­
pequeno. O termo mi­ mas centenas de dólares e podem ser encontrados em com putadores de mesa. A l­
croprocessador tornou- guns microprocessadores podem custar diversos milhares de dólares e são encon­
se popular na década trados em com putadores de grande porte, executando, por exemplo, o software de
de 1980, quando os um sistem a de reservas aéreas. Há literalm ente centenas, e possivelm ente m ilha­
processadores foram res, de tipos diferentes de microprocessadores disponíveis, os quais se diferenciam
dim inuindo, passando
pelo desem penho, custo, consum o e outras características. Além disso, muitos dos
de múltiplos circuitos
processadores pequenos de baixo consum o custam menos de um dólar.
integrados para apenas
um único. O primeiro A lguns leitores podem estar fam iliarizados com a program ação de softw are,
microprocessador de outros não. O conhecim ento de program ação não é essencial para aprender o
um único circuito inte­ conteúdo deste livro. O casional m ente, irem os com parar circuitos digitais custo­
grado foi o Intel 4004 m izados com suas correspondentes im plem entações em softw are - as conclusões
em 1971. dessas com parações podem ser com preendidas sem o conhecim ento da progra­
m ação em si.

Projeto digital - quando os microprocessadores não são bons o suficiente


Com os m icroprocessadores prontam ente disponíveis, por que alguém precisaria projetar novos
circuitos digitais, a não ser aquelas pessoas, em núm ero relativam ente pequeno, que projetam
os próprios m icroprocessadores? A razão é que o softw are que é executado em um m icropro­
cessador freqüentem ente não é bom o suficiente para um a aplicação em particular. Em muitos
casos, o softw are pode ser lento dem ais. O s m icroprocessadores executam apenas um a ins­
trução (ou no m áxim o um as poucas) de cada vez. Entretanto, um circuito digital custom izado
pode executar dúzias, ou centenas, ou m esm o m ilhares de com putações em paralelo. M uitas
aplicações, com o com pressão de im agem ou vídeo, reconhecim ento de im pressões digitais,
detecção de com andos de voz, ou exibição gráfica, requerem que quantidades enorm es de côm ­
putos sejam realizadas em um breve período de tem po para que sejam práticas; afinal, quem
quer um telefone controlado por voz que dem ora 5 m inutos para decodificar o seu com ando de
voz ou um a câm era digital que precisa de 15 m inutos para bater cada foto? Em outros casos,
os m icroprocessadores são grandes dem ais, consom em m uita energia elétrica ou tem um custo
dem asiado, fazendo com que os circuitos digitais custom izados sejam preferíveis.
N o caso da aplicação do detector de m ovim ento no escuro, um a alternativa para o projeto
baseado cm m icroprocessador usa um circuito digital custom izado dentro do bloco Detector.
Um circuito é um a inlerconexão de com ponentes elétricos. Precisam os projetar um circuito
38 Sistemas Digitais

que, para cada com binação diferente de entradas a e b, gera o valor apropriado de F. Um
circuito com o esse está m ostrado na Fig. 1.13(c). Irem os descrever os com ponentes desse cir­
cuito m ais adiante. No entanto, agora você já viu um exem plo sim ples de projeto de circuito
digital usado para resolver um problem a. O m icroprocessador tam bém tem um circuito em
seu interior, m as com o esse circuito foi projetado para executar program as e não sim p les­
m ente detectar m ovim ento à noite, o circuito do m icroprocessador pode conter cerca de dez
mil com ponentes, com parado a apenas do is em nosso circuito digital custom izado. D esse
m odo, o nosso circuito pode ser m enor, m ais barato, m ais rápido e consum ir m enos energia
elétrica d o que um a im plem entação com m icroprocessador.
M uitas aplicações usam m icroprocessadores e projetos digitais custom izados para obter
um sistem a que consegue exatam ente o equilíbrio certo entre desem penho, custo, potência,
tam anho, tem po de projeto, flexibilidade, etc.

► EXEMPLO 1.10 Decidindo entre um microprocessador e um circuito digital customizado


Devemos projetar um circuito digital para controlar a asa de um avião caça a jato. Para controlar
adequadam ente a aeronave, o sistema digital deve executar, 100 vezes por segundo, uma com ­
putação que ajusta a posição da asa com base nas velocidades atual e desejada, na arfagem e na
guinada*, além de outros fatores associados ao voo. Suponha que temos uma estimativa de que
um software em um microprocessador iria necessitar de 50 ms (milissegundos) para executar cada
uma das tarefas de computação, ao passo que um circuito digital customizado iria requerer 5 ms
para cada execução.
Para executar a tarefa de computação 100 vezes no microprocessador seriam necessários 100
* 50 ms = 5000 ms ou 5 segundos. Entretanto, precisamos que essas 100 execuções sejam reali­
zadas em 1 segundo e, portanto, o microprocessador não é rápido o suficiente. Executar 100 vezes
as mesmas tarefas de computação no circuito digital customizado iria requerer 100 + 5 ms = 500
ms ou 0,5 segundo. Como 0,5 segundo é menor do que 1 segundo, o circuito digital customizado
pode atender à especificação de desempenho do sistema. Desse modo, optamos por implementar
o sistema disital como um circuito digital customizado. M

► EXEM PL01.11 Partição de tarefas em uma câmera digital


Uma câm era digital captura im agens digitalm ente usando uma sequência de passos. Quando o
botão do disparador é pressionado, uma grade contendo alguns milhões de elementos eletrônicos
sensíveis à luz capturam a imagem. Cada elemento armazena um número binário (possivelmente
16 bits) que representa a intensidade da luz que está incidindo sobre o elemento. A seguir, a câ­
mera realiza diversas tarefas: ela lê os bits de cada um desses elem entos, comprime as dezenas de
milhões de bits em talvez alguns poucos milhões de bits e armazena os bits comprimidos em um
arquivo na sua memória flash, entre outras tarefas. A Tabela 1.3 fornece alguns exemplos de tem­
pos de execução para cada uma dessas tarefas em um microprocessador de custo reduzido e baixo
consumo elétrico versus um circuito digital. M

TABELA 1.3 Exemplos de tempos de execução (em segundos) de tarefas em uma


câmera digital, realizadas com microprocessador e com circuito digital
Tarefa M ic ro p ro c e s s a d o r C irc u ito d ig ita l cu stom izado

Leitura 5 0,1

Compressão 8 0,5

Armazenamento 1 0,8

* N. de T: A arfagem e a guinada correspondem aos movimentos executados por uma aeronave em tomo de seus eixos transver­
sal e vertical.
Introdução 39

Precisam os decidir que tarefas devem ser


im plem entadas no m icroprocessador e quais na
form a de circuitos digitais custom izados, sujeito
à restrição dc que devemos nos em penhar em mi­
nim izar a quantidade de circuitos digitais custo­
mizados de modo a reduzir os custos do circuito
integrado. Essas decisões são conhecidas como Sensor de imagem Circuito Circuito de
partição. Três opções de partição estão m ostra­ de leitura compressão
das na Fig. 1.19. Se im plem entarm os todas no
(b)
t
microprocessador, a câm era necessitará de 5 + 8 Circuito de
+ 1 = 14 segundos para bater um a foto - tempo armazenamento
dem asiado para que a câm era seja popular entre
os consum idores. Poderíamos im plem entar todas Sensor de imagem Circuito Circuito de
as tarefas na forma de circuitos digitais custo­ de leitura compressão
mizados, resultando cm 0.1 + 0,5 + 0,8 = 1,4 se­
gundo. Em vez disso, poderíamos implementar as (O I
Microprocessor
tarefas de leitura e com pressão com circuitos di­ (armazenar)
gitais custom izados, deixando o armazenamento
para o microprocessador, resultando em 0,1 + 0,5
+ 1, ou 1,6 segundo. Poderíamos decidir por esta Figura 1.19 Câmera digital implementada
última forma de implementação, de modo a eco­ com: (a) um microprocessador, (b) circuitos
nom izar no custo sem que resulte um tempo extra customizados e (c) uma combinação de cir­
perceptível. < cuitos customizados e um microprocessador.

► 1.4 SOBRE ESTE LIVRO


A Seção 1.1 discutiu com o os sistem as digitais nos dias atuais aparecem em todos os luga­
res e com o produzem um im pacto significativo sobre a m aneira de viverm os. A Seção 1.2
destacou com o o aprendizado de projeto digital atinge dois objetivos: m ostra-nos com o os
m icroprocessadores funcionam “por d en tro ” e capacita-nos a im plem entar sistem as usando
circuitos digitais custom izados no lugar de, ou com , m icroprocessadores para conseguir im ­
plem entações m elhores. E ste últim o objetivo está se tornando cada vez m ais significativo já
que m uitos fenôm enos analógicos, com o m úsica e vídeo, estão se tornando digitais. A quela
seção tam bém introduziu um m étodo chave para se d ig italizar sin ais analógicos, a saber,
os núm eros binários. D escreveu tam bém co m o fazer a conversão entre núm eros decim ais
e binários. A Seção 1.3 descreveu com o os projetistas tendem a p referir a im plem entação
de sistem as digitais escrevendo softw ares que são executados em um m icroprocessador. No
entanto, os projetistas freqüentem ente usam circuitos digitais custom izados para aten d er es­
pecificações de desem penho ou outras da aplicação.
N o restante deste livro, você aprenderá a respeito do em polgante e desafiante cam po do
projeto digital, no qual convertem os um co m portam ento desejado em um sistem a que está
em um circuito digital custom izado. O C apítulo 2 apresentará a form a m ais básica de circuito
digital, os circuitos com binacionais, cujas saídas são sim plesm ente um a função dos valores
presentes no m om ento nas entradas do circuito. Esse cap ítu lo irá nos m ostrar com o usar
um a form a de m atem ática cham ada álgebra booleana para descrever o funcionam ento que
desejam os de nosso circuito, além de fornecer passos claros para se converter equações boo-
leanas em circuitos. O C apítulo 3 introduzirá um tipo m ais avançado de circuito, os circuitos
seqüenciais, cujas saídas são função não só dos valores presentes no m om ento nas entradas,
m as tam bém dos valores anteriores; em outras palavras, os circuitos seqüenciais têm m em ó­
ria. Tais circuitos serão referidos com o blocos de controle. Esse capítulo irá nos m ostrar com o
usar outra abstração m atem ática, conhecida com o m áquina de estados finitos, para represen­
tar o com portam ento sequencial desejado além de fo rn ecer passos claros para se converter
m áquinas de estados finitos em circuitos. C om o em qualquer tipo de projeto, freqüentem ente
40 Sistemas Digitais

usam os blocos construtivos pré-projetados, ou com ponentes, para tornar o nosso trabalho de
projeto m ais fácil. C) C apítulo 4 descreve diversos desses com ponentes, conhecidos com o
com ponentes de bloco operacional, incluindo registradores (para arm azenar dados digitais),
som adores, com paradores, m ultiplicadores e pequenas m em órias cham adas de banco de re­
gistradores, entre outros blocos. O C apítulo 5 introduz um a abordagem m oderna ao projeto
digital, conhecida com o projeto em nível de transferência entre registradores, no qual proje­
tam os sistem as digitais que são constituídos por com ponentes de bloco operacional, os quais
são controlados pelos blocos de controle (referidos antes), com a finalidade de im plem entar
circuitos digitais custom izados, interessantes e úteis. De fato, esse capítulo m ostra com o co n ­
verter um program a em C em um circuito digital custom izado - dem o n stran d o claram ente
que qualquer função desejada pode ser im plem entada com o softw are em um m icroprocessa­
dor ou com o circuito digital custom izado. Esse capítulo introduz tam bém alguns com ponen­
tes adicionais, incluindo m em órias ROM e RAM além de tilas. Os C apítulos 1 a 5 form am
o núcleo deste livro - depois desses cinco capítulos, o leito r p o d erá esp ecificar um a am pla
variedade de com portam entos desejados e poderá converter esses com portam entos em um
circuito digital custom izado operante.
O C apítulo 6 apresenta m étodos para se p ro jetar circuitos digitais melhores. O capítulo
descreve m étodos para se m elhorar os projetos de circuitos dig itais básicos, circu ito s se-
qüenciais básicos, com ponentes de bloco operacional e projetos em nível de transferência
entre registradores. Esse capítulo enfatiza a im portante noção de tradeoffs, pela qual podem os
m elhorar um dos aspectos do projeto, m as às custas de prejudicar algum outro aspecto. Os
tradeoffs são a essência do projeto.
O C apítulo 7 descreve diferentes dispositivos físicos com os quais podem os im plem en­
tar nossos circuitos digitais, incluindo circuitos integrados para aplicações específicas, gate
arrays program áveis no cam po (F PG A s), dispositivos lógicos program áveis sim ples e CIs
(circuitos integrados) de baixo custo que podem ser com prados em lojas.
O C apítulo 8 aplica os m étodos de projeto digital dos capítulos anteriores para construir
um tipo de circuito digital am plam ente usado: um m icroprocessador program ável. Esse cap í­
tulo desm istifica o m odo de funcionam ento de um m icroprocessador por m eio do projeto de
um m icroprocessador m uito sim ples para ilustrar os conceitos.
O Capítulo 9 introduz as linguagens de descrição de hardware, que são am plam ente usadas
em projeto digital moderno para descrever o com portam ento desejado do circuito, assim com o
para representar o projeto final do circuito digital custom izado. As linguagens de descrição de
hardware, parecendo-se mais com linguagens de program ação de software, m as com extensões e
diferenças importantes, servem de entrada para as mais m odernas ferramentas de projeto digital.

► 1.5 EXERCÍCIOS
O s exercícios assinalados com asterisco (*) são m ais desafiadores.

SEÇÃO 1.2: 0 M UNDO DOS SISTEM AS DIGITAIS

1.1 Suponha que um sinal analógico de áudio venha através de um fio e que a tensão no fio pode variar
entre 0 volts (V) e 3 V. Você deseja converter o sinal analógico em digital. Você decide codificar cada
amostra usando dois bits, de modo que 0 V seria codificado como 00. I V como 01, 2 V como 10 e
3 V como 11. Você amostra o sinal a cada 1 milissegundo e detecta a seguinte sequência de tensões:
OV OV IV 2V 3V 2V 2V. Mostre o sinal convertido para digital como uma sequência de 0s e ls.
1.2 Neste problema, use o mapeamento de tensões para codificações de 2 bits do Exercício l. Você
recebe uma codificação digital de um sinal de áudio como segue: 1111101001010000. Recrie o
sinal ploiando-o com o tempo no eixo dos a- e a tensão no eixo dos y. Assuma que a tensão corres­
pondente a cada codificação deve permanecer na saída por 1 milissegundo.
Introdução 41

1.3 Assuma que o sinal é codificado usando 12 bils e que muitas das codificações são 000000000000,
000000000001 ou 111111111111. Desse modo. decidimos usar uma codificação com compressão
representando 000000000000 como 00. 000000000001 como 01 e 111111111111 como 10. 11 sig­
nifica que em seguida virá uma codificação sem compressão. Usando esse esquema de codifica­
ção. faça a descompressão da seguinte seqüência codificada:
00 00 01 10 11 010101010101 00 00 10 10
1.4 Usando o mesmo esquema de codificação do Exercício 3, comprima a seguinte seqüência não
codificada:
000000000000 000000000001 000000000000 100000000000 111111111111
1.5 Codifique as seguintes palavras em bits usando a tabela do código ASCII da Fig. 1.5.
(a) SEJA
(b) INICIALIZE!
(c) T9.Net
1.6 Converta os seguintes números binários para números decimais:
(a) I00
(b) lOll
(c) 0000000000001
(d) m m
(e) 101010
1.7 Converta os seguintes números binários para números decimais:
(a) I010
(b) l 000000
(c) ll 0 0 I I 00
(d) l l l l l
(e) ÍOI11011001
1.8 Converta os seguintes números binários para números decimais:
(a) 000I I I
(b) 1111
(c) 11110
(d) 111100
(e) 0011010
1.9 Converta os seguintes números decimais para números binários usando o método da subtração:
(a) 9
(b) I5
(c) 32
(d) 140
1.10 Converta os seguintes números decimais para números binários usando o método da subtração:
(a) I9
(b) 30
(C) 64
(d) 128
1.11 Converta os seguintes números decimais para números binários usando o método da subtração:
(a) 3
(b) 65
(c) 90
(d) !00
1.12 Converta os seguintes números decimais para números binários usando o método da divisão por 2:
(a) 9
(b) 15
(c) 32
(d) 140
42 Sistemas Digitais

1.13 Converta os seguintes números decimais para números binários usando o método da divisão por 2:
(a) 19
(b) 30
(c) 64
(d) 128
1.14 Converta os seguintes números decimais para números binários usando o método da divisão por 2:
(a) 3
(b) 65
(c) 90
(d) 100
1.15 Converta os seguintes números decimais para números binários usando o método da divisão por 2:
(a) 23
(b) 87
(c) I23
(d) I0l
1.16 Converta os seguintes números binários para hexadecimais:
(a) 11110000
(b) 11111111
(c) 01011010
(d) 1001101101101
1.17 Converta os seguintes números binários para hexadecimais:
(a) ÍIOOIIOI
(b) 1010010I
(c) 11110001
(d) 1101101111100
1.18 Converta os seguintes números binários para hexadecimais:
(a) H lO O llT
(b) 11001000
(c) ÍOIOOIOO
(d) 011001101101101
1.19 Converta os seguintes números hexadecimais para binários:
(a) FF
(b) F0A2
(c) 0FI00
(d) 100
1.20 Converta os seguintes números hexadecimais para binários:
(a) 4F5E
(b) 3FAD
(c) 3E2A
(d) DEED
1.21 Converta os seguintes números hexadecimais para binários:
(a) B0C4
(b) 1EF03
(c) F002
(d) BEEF
1.22 Converta os seguintes números hexadecimais para decimais:
(a) FF
(b) F0A2
(c) OFIOO
(d) 100
Introdução 43

1.23 Converta os seguintes números hexadecimais para decimais:


(a) IO
(b) 4E3
(c) FFO
(d) 200
1.24 Converta o número decimal 128 para os seguintes sistemas de numeração:
(a) binário
(b) hexadecimal
(c) base três
(d) base cinco
(e) base quinze
1.25 Compare o número de dígitos necessário para representar os seguintes números decimais em re­
presentações binária, octal, decimal e hexadecimal. Você não precisa determinar a representação
verdadeira - apenas o número necessário de dígitos. Por exemplo, para representar o número
decimal 12, serão necessários quatro dígitos em binário (1100 ê a representação verdadeira), dois
dígitos em octal (14), dois dígitos em decimal (12) e um dígito em hexadecimal (C).
(a) 8
(b) 60
(c) 300
(d) 1000
(e) 999.999
1.26 Determine o intervalo de números decimais que podem ser representados nos sistemas binário, oc­
tal. decimal e hexadecimal, usando os seguintes números de dígitos. Por exemplo, 2 dígitos podem
representar os intervalos de números decimais de 0 a 3 em binário (00 a 11). 0 a 63 em octal (00 a
77), 0 a 99 em decimal (00 a 99), e 0 a 255 em hexadecimal (00 a FF).
(a) l
(b) 3
(c) 6
(d) 8

SEÇA0 1.3: IM PLEM ENTANDO SISTEM AS DIGITAIS: PR0G R A M A Ç A 0 DE


MICROPROCESSADORES VERSUS PROJETO DE CIRCUITOS DIGITAIS
1.27 Use um microprocessador como o da Fig. 1.14 para implementar um sistema que ativa um alarme
sonoro sempre que um movimento for detectado ao mesmo tempo em três quartos diferentes. A
saída do sensor de movimento de cada quarto chega ate nós por um fio na forma de um bit, 1 sig­
nifica movimento, 0 significa ausência de movimento. O sonorizador do alarme 6 ativado quando
um lio de saída “alarme" é levado a 1. Mostre as conexões que entram e saem do microprocessa­
dor e o código em C que deve ser executado no microprocessador.
1.28 Use um microprocessador como o da Fig. I . I4 para implementar um sistema que conta o número
de carros em um parque de estacionamento que tem sete vagas. Cada vaga tem um sensor que irá
gerar uma saída 1 se o carro estiver presente e 0, em caso contrário. A saída deve ser enviada em
binário por três lios. Mostre as conexões com o microprocessador e o código em C. Sugestão: use
um laço e uma variável inteira para contar o número de carros presentes. Então, use um comando
“if-else” ou “switch" para converter o inteiro na saída adequada de 3 bits.
1.29 Use um microprocessador como o da Fig. 1.14 para implementar um sistema que exibe em um
painel de LEDs o número de pessoas presentes em uma sala de espera. Há oito LEDs dispostos em
111a c oito cadeiras na sala dc espera, cada uma equipada com um sensor que fornece um 1 quando
a cadeira está em uso. O número de LEDs acesos irá corresponder ao número de cadeiras ocupa­
das. Por exemplo, se duas cadeiras estiverem ocupadas (independentemente de quais duas sejam
elas), os dois primeiros LEDs irão acender; se três cadeiras estiverem ocupadas, os três primeiros
44 Sistemas Digitais

LEDs irào acender. Independentemente de quais cadeiras em particular estão sendo ocupadas, as
luzes irão acender de forma incremental. Mostre as conexões com o microprocessador e o código
em C apropriado.
1.30 Suponha que um receptor em particular de TV a cabo em um hotel opera com vídeo codificado e
que a dccodificação de cada quadro de vídeo consiste em três subtarcfas A. B e C. Os tempos de
execução de cada tarefa em um microprocessador versus um circuito digital customizado são 100
ms versus 1 ms para a tarefa A, 10 ms versus 2 ms para a B e 15 ms versus I ms para a C. Faça a
partição das tarefas entre o microprocessador e os circuitos digitais customizados, de modo que
você minimize a quantidade de circuitos digitais customizados e atenda ao mesmo tempo a restri­
ção de que no mínimo 30 quadros sejam decodificados por segundo.
1.31 A proprietária de um estádio de beisebol deseja eliminar os ingressos em papel que dão acesso
aos jogos. Ela gostaria de vender os ingressos eletronicamente e permitir que os espectadores
entrem por meio do escaneamento de suas impressões digitais. A proprietária tem duas opções
para implementar o sistema de reconhecimento de impressões digitais. A primeira opção é um
sistema que implementa o sistema de reconhecimento usando um software que é executado em
um microprocessador. A segunda opção é um circuito digital customizado projetado especial­
mente para o reconhecimento de impressões digitais. O sistema com software requer 5,5 segundos
para reconhecer uma impressão digital individual e custa 50 dólares por unidade, ao passo que o
circuito digital requer 1,3 segundo para cada reconhecimento e custa 100 dólares por unidade. A
proprietária quer se assegurar de que todos os que vão assistir ao jogo possam entrar no estádio
antes que o jogo comece. Isso deve se dar de tal modo que ela seja capaz de permitir que 100.000
pessoas entrem no estádio em 15 minutos. Compare os dois sistemas alternativos em termos de
quantas pessoas por minuto cada sistema podem atender, quantas unidades de cada sistema seriam
necessárias para atender 100.000 pessoas em quinze minutos e qual seria o custo total de instala­
ção de cada um dos dois sistemas concorrentes.
1.32 Quantas partições podem existir em um conjunto de N tarefas em que cada tarefa pode ser imple­
mentada em um microprocessador ou em um circuito digital customizado?
1.33 *Escreva um programa que automaticamente faz a partição de um conjunto de IO tarefas entre
um microprocessador e circuitos digitais customizados. Assuma que cada tarefa tem dois tempos
de execução associados, um para o microprocessador e outro para o circuito digital customizado.
Assuma que cada tarefa tem associado um número de tamanho, o qual representa a quantidade
de circuitos digitais necessários para implementar a tarefa. O seu programa deve ler os tempos de
execução e os tamanhos em um arquivo, deve procurar minimizar a quantidade de circuitos digitais
atendendo ao mesmo tempo uma restrição especificada em relação à soma dos tempos de execução
e deve gerar uma saída que fornece a partição (o nome de cada tarefa e se a tareia está associada ao
microprocessador ou ao circuito digital customizado), o tempo total de execução das tarefas para
aquela partição e o tamanho total do circuito digital. Sugestão: você provavelmente não poderá
tentar todas as partições possíveis das IO tarefas. Desse modo, aborde o problema da partição esti­
pulando algumas suposições iniciais razoáveis. Provavelmente, o seu programa não poderá garantir
que encontrará a melhor partição, mas deve ao menos encontrar uma boa partição.
Introdução 45

► PERFIL DE PROJETISTA
Kelly interessou-se sistemas úteis, envolvendo qualquer tipo de sensor,
por engenharia ao como os de movimento ou de luz. Esses blocos pode­
assistir uma palestra riam ser usados por crianças para aprender conceitos
a respeito em uma básicos de lógica e computadores, muito importantes
feira de profissões no atualmente. A nossa expectativa é que esses blocos
segundo grau. “Eu venham a ser usados como ferramentas educativas nas
estava deslumbrada escolas. Os blocos também podem ser usados para aju­
pelas idéias interes­ dar os adultos a montar sistemas úteis em suas casas,
santes e pelos grá­ como possivelmente o monitoramento de pais idosos
ficos ‘legais’.” En­ ou de uma criança adoentada em casa. O potencial para
quanto ainda estava esses blocos é grande - será interessante ver o impacto
no segundo grau. ela que terão.”
aprendeu que “havia muito mais coisas em relação à “A minha idéia favorita a respeito da engenharia
engenharia do que idéias e gráficos. Os engenheiros é a variedade de habilidades e a criatividade envolvi­
aplicam suas idéias e habilidades para construir coisas das. Enfrentamos problemas que precisam ser resol­
que realmente fazem diferença na vida das pessoas por vidos e os resolvemos aplicando técnicas conhecidas
muitas gerações”. de modo criativo. Para que sejam bons projetistas, os
Em seus primeiros anos como engenheira. Kelly engenheiros devem continuam ente aprender novas
trabalhou cm vários projetos “que podem ajudar nu­ tecnologias, ouvir novas idéias e analisar os produ­
merosos indivíduos”. Um desses projetos era um sis­ tos que estão surgindo correntemente. É tudo muito
tema de ventilação pulmonar, como o mencionado empolgante e desafiador. Cada dia no trabalho é dife­
no início deste capítulo. “Nós projetamos um novo rente. Cada dia é estimulante e é uma experiência de
sistema de controle capaz de permitir às pessoas que aprendizagem.”
usam ventiladores respirar com mais conforto e con­ “Estudar para ser engenheiro pode representar
tinuar recebendo a mesma quantidade de oxigênio." uma grande quantidade de trabalho mas vale a pena.
Além disso, ela analisou implementações alternativas A chave é permanecer focado, manter a mente aberta
daquele sistema de controle, incluindo microproces­ e fazer bom uso dos recursos disponíveis. Permanecer
sador. circuito digital customizado e uma combinação focado significa manter em ordem as suas prioridades
dos dois. “As tecnologias de hoje, como as de FPGA, - por exemplo, como estudante, o estudo vem primeiro,
proporcionam muitas opções diferentes. Examinamos o lazer depois. Manter a mente aberta significa estar
diversas alternativas para ver quais eram os tradeoffs sempre receptivo a idéias diferentes e aprender novas
entre elas. Compreender os tradeoffs entre as opções tecnologias. Fazer bom uso dos recursos significa pro­
é muito importante se desejamos construir o melhor curar agressivamente informações na Internet, com os
sistema possível.” colegas, nos livros e assim por diante. Você nunca sabe
Ela também trabalhou em um projeto que desen­ para onde deve ir a fim de conseguir a próxima infor­
volveu “pequenos blocos eletrônicos auto-explicativos mação importante, e você não a conseguirá a menos que
que as pessoas poderiam interconectar para construir a procure.”
Projeto Lógico Combinacional

► 2.1 INTRODUÇÃO
Um circuito digital cujas saídas dependem exclusivam ente da combinação dos valores pre­
sentes na entrada é cham ado de circuito combinacional. O s circuitos com binacionais consti­
tuem um a classe básica, porém im portante de circuitos digitais. São capazes de im plem entar
alguns sistem as sim ples m as assum em im portância bem m aior quando servem de base para
classes m ais com plexas de circuitos. E ste capítulo introduz o projeto de circuitos co m b in a­
cionais básicos. C apítulos posteriores tratarão de circuitos com binacionais m ais avançados e
de circuitos seqüenciais cujas saídas dependem da seqüência (história) de valores que apare­
ceram nas entradas do circuito. A Figura 2.1 ilustra as diferenças entre circuitos seqüenciais
c com binacionais.

1 1
C ircuito digital _1 a ------- ► C ircu ito digital ?
b — V com binacional b — £ ► seqüencial

S e so u b e rm o s o s valores p resen tes N ã o p o d e m o s d e te rm in ar o valor d e s a íd a


d o s bits d e e n tra d a , e n t ã o p o d e r e m o s olh an do a p e n a s para o s valores p resen tes
d eterm in ar o valor da saíd a. d e entrada. D e v e m o s co n h ecer ta m b é m a
S e ab=00, então F é 0 história d o s v a lo r e s d e en trad a.
S e ab=01, então F é 0 Por e x e m p lo , s e a b era 0 0 e e m s e g u id a
S e ab=10, então F é 1 10 , e n t ã o F é 0 m a s s e a b e r a 11 e e m
S e ab=11, en tão F é 0 s e g u i d a 10 , e n t ã o F é 1

Figura 2.1 Circuito combinacional versus seqüencial.

E ste capítulo introduzirá os blocos construtivos básicos dos circuitos co m binacionais,


conhecidos com o portas lógicas, e apresentará tam bém um a form a de m atem ática, conhecida
com o álgebra booleana, que é útil no projeto de circuitos com binacionais.

2.2 CHAVES
A s chaves eletrônicas form am a base de todos os circuitos digitais, constituindo-se cm um
ótim o ponto de partida para a discussão desses circuitos. Você usa um tipo de chave, inter­
ruptor de luz, sem pre que você acende ou apaga as luzes. Para com preender um a chave, é útil
rever um pouco de eletrônica básica.

Eletrônica básica
Provavelm ente, você está fam iliarizado com a idéia de elétrons, ou sim plesm ente de partícu­
las com carga, deslocando-se através de fios e fazendo com que as lâm padas ilum inem -se ou
Projeto Lógico Combinacional 47

os aparelhos de som produzam m úsica. U m a situação análoga é a água fluindo através de


encanam entos e fazendo com que esguichos jo rrem água ou que turbinas girem . D escrevere­
m os agora ties term os elétricos básicos:

Embora seja opcional • Tensão é a d iferen ça de potencial elétrico entre d o is pontos. A


compreender a eletrô­ tensão é m edida em volts (V). A convenção diz que o cham ado
nica que fundamenta ponto de terra ou tnassci tem 0 V. In fo rm alm en te a tensão nos
as portas lógicas di­ diz quão “ansiosas” estão as partículas carregadas de um lado de
gitais, muitas pessoas um fio para chegar à terra (ou qualquer tensão inferior) no outro
acham que um entendi­ lado. A tensão é análoga à pressão da água tentando deslocar-se
mento básico satisfaz através de um encanam ento - água sob pressão elevada está m ais
muito da curiosidade e
“ansiosa” para fluir, m esm o se na realidade não puder deslocar-se
também ajuda a com­
devido talvez a um a torneira fechada.
preender o comporta­
mento não ideal das • Corrente é um a m edida do fluxo de partículas carregadas. Infor-
portas digitais mais m alm ente, a corrente nos d iz com que velocidade as partículas
adiante. estão fluindo de fato. A corrente é análoga à água que flui através
de um encanam ento. Ela é m edida em am peres (A).

• Resistência é a tend ên cia de um fio (ou de q ualquer coisa, real­


m ente) a resistir ao fluxo de corrente. A resistência é análoga ao
diâm etro de um encanam ento - um cano estreito resiste ao fluxo
de água ao passo que um cano largo perm ite que a água flua m ais
livrem ente. A resistência elétrica é m edida em ohm s (Cl).

Considere uma bateria. As cargas no terminal positivo querem fluir


para o terminal negativo. Quão “ansiosas” elas estão para fluir? Depen­
derá da diferença de tensão entre os terminais - as cargas de uma bateria
de 9 V estão mais ansiosas para fluir do que as de uma bateria de 1,5 V
porque as de uma bateria de 9 V têm mais energia potencial. Suponha
agora que você conecte o term inal positivo ao negativo por meio de
uma lâm pada incandescente com o m ostrado na Figura 2.2. A bateria de
9 V produzirá um fluxo mais intenso de corrente e. conseqüentem ente,
uma luz mais brilhante, do que a bateria de 1,5 V. Exatamente quanto de
corrente fluirá será determ inado usando-se a equação:
4,5 A V = IR (conhecida com o lei de O hm )
Figura 2.2 Bateria de 9 V co­ em que V é a tensão, 1 é a corrente e R é a resistência (nesse caso,
nectada a uma lâmpada incan­ a d a lâm pada incandescente). P ortanto, se a resistên cia fosse de 2
descente.
ohm s, um a bateria de 9 V produziria 4,5 A (pois 9 = 1*2), ao passo
que um a bateria de 1,5 V produziria 0.75 A.
Se reescreverm os a eq u ação com o I = V /R . poderá fazer m ais
sentido intuitivam ente - tensão m ais elevada, m ais corrente; resis­
tência m ais elevada, m enos corrente. Em eletrônica, a lei de O hm é
possivelm ente a equação m ais fundam ental.

A incrível chave que encolheu


A gora, retornem os às chaves. A Fig. 2.3(b) m ostra que um a chave tem três partes - vam os
cham á-las de entrada da fonte, saída e entrada de controle. A entrada da fonte tem um a tensão
m aior do que a saída, de m odo que a corrente desejará fluir desde a entrada da fonte, através
da chave e até a saída. O grande objetivo de um a chave é bloquear essa corrente quando o
controle coloca a chave na condição de “desligada” e perm itir que essa corrente flua quando o
controle coloca a chave na condição de “ligada” . Por exem plo, quando você m ove a alavanca
48 Sistemas Digitais

de um a chave para ligá-la, a chave faz com que o fio de entrada da fonte entre em contato
físico com o fio de saída. D esse m odo, a corrente flui. Q uando você m ove a alavanca da chave
para desligá-la, a chave separa fisicam ente a en trad a da fonte da saída. Em nossa analogia
com a água, a entrada de controle é com o a válvula de um a torneira determ inando se a água
deve fluir no encanam ento.

entrada
d e controle

'd e slig ad a '

entrada saída
tran sistor
d a fonte
discreto entrada
relé v álvu la term iônica 1C d e controle
"ligad a"
quarto d e dólar
(para ver o
t a m a n h o relativo) entrada saída
d a fonte

(a) (b)

Figura 2.3 (a) A evolução das chaves: relês (década de 1930), válvulas termiôni-
cas (década de 1940), transistores discretos (década de 1950) e circuitos integrados
(ICs*) contendo transistores (década de 1960 até o presente). Originalmente os ICs
continham dez transistores; agora eles podem ter mais de um milhão, (b) Vista es­
quemática simples de uma chave.

A s chaves são a causa dos circuitos digitais utilizarem núm eros binários constituídos de
bits - a natureza de um a chave de estar ligada ou desligada corresponde aos ls e Os do sistem a
binário. D iscutirem os agora a evolução das chaves ao longo do século passado conduzindo às
chaves de transistores C M O S, que são com um ente usadas hoje em dia nos circuitos digitais.

Década de 1930 — relés


O s engenheiros na década de 1930 tentavam im aginar m aneiras de se realizar cálculos usando
chaves controladas eletronicam ente - chaves cuja entrada de controle era um a outra tensão. Uma
dessas chaves, um relé eletrom agnético com o o da Fig. 2.3(a), já estava sendo usada na indústria
telefônica para realizar o chaveam ento das cham adas telefônicas. Um relé tem um a entrada de
controle que é um tipo de imã, que se torna m agnetizado quando o controle apresenta uma ten­
são positiva. Em um certo tipo de relé, esse imã puxa uma peça de metal para baixo, resultando
uma conexão entre a entrada da fonte c a saída - sem elhante a baixar uma ponte levadiça para
ligar um a estrada a outra. Q uando a entrada de controle retorna a 0 V, a peça de metal volta a
subir novamente (possivelm ente puxada por uma pequena mola), desfazendo a conexão entre a
saída e a entrada da fonte. Em sistem as telefônicos, os relés perm itiam que as cham adas fossem
interligadas indo de um telefone a outro, sem a necessidade daquelas belas operadoras, as telefo­
nistas, que antigam ente faziam m anualm ente a conexão entre uma linha telefônica e outra.

Década de 1940-vá lvu la stermiônicas


O s relés baseavam -se em partes m etálicas q u e se m oviam para cim a e para baixo e, assim ,
eram bastante lentos. N as décadas de 1940 e 1950, as válvulas term iônicas, m ostradas na Fig.
2.3(a) e originalm ente usadas para am plificar sinais elétricos fracos, com o os presentes em
telégrafos, com eçaram a substituir os relés em com putadores. A s válvulas term iônicas não
tinham partes m óveis e conseqüentem ente eram m uito m ais rápidas do que os relés.

* N. de T: Integrated Circuits. em inglês.


Projeto Lógico Combinacional 49

► "DEBUGGING"

Em 1945, uma traça ficou presa em um dos relés do computador v*


Mark II em Harvard. Para que o computador voltasse a operar Oi.W
k. »Wivl
jif
adequadamente, os técnicos acharam e removeram o inseto (bug. li«#« ^
tf* a
em inglês). O termo “bug” já era usado pelos engenheiros há dé­ 4JJtfé*J u j uU
cadas para indicar um defeito em um equipamento mecânico ou
.u.ia
elétrico, porém a remoção daquela traça em 1945 é considerada
jí*Vi*J* F
a fonte de origem do termo “debugging” tal como é usado na
programação de computadores. 0$ técnicos prenderam a traça *Í l,i*| (•<*!'
com fita adesiva em seu relatório escrito (mostrado na figura
ao lado) e agora essa traça está exposta no National Museum of
American History em Washington, D.C.

A m áquina que é considerada com o sendo o prim eiro com putador dc propósitos gerais, o
EN1AC (E lectronic N um erical Integrator And C om puter), foi term inada em 1946 nos EUA O
EN IA C continha cerca de 18.000 válvulas term iônicas e 1.500 relés, pesava m ais de 27 tone­
ladas, tinha 33 m etros de com prim ento e 2,4 m etros de altura (de m odo que, provavelm ente,
ele não caberia cm nenhum aposento dc sua casa, a não ser que você tenha um a casa absur­
dam ente grande), e co n su m ia 174.000 w atts de energia elétrica. Im agine o calo r que seria
gerado em um quarto lotado com 1740 lâm padas incandescentes de 100 w atts cada um a. É
m uito calor. C om isso tudo, o EN IA C podia calcu lar cerca de 5.000 operações por segundo -
com pare isso com os bilhões dc operações por segundo dos com putadores pessoais atuais, ou
m esm o as dezenas de m ilhões de com putações por segundo de um telefone celular portátil.
E m bora as válvulas fossem m ais rápidas do que os relés, elas consum iam m uita energia
elétrica, geravam m uito calor e falhavam freqüentem ente.
A s v á lv u la s eram co m u n s em m u ito s a p a re lh o s e le trô n ic o s d as d é c a d a s de 1960 e
1970. L em b ro -m e de ir às lo jas com o m eu pai no in ício da d écad a de 1970 para co m p rar
v álv u las d e rep o sição para o nosso ap arelh o de telev isão . Um lu g ar o n d e você ain d a p o d er
e n c o n tra r as v álvulas é nos a m p lificad o re s e le trô n ic o s de g u itarra. O som q u e é p ró p rio
d o s am p lificad o res d e áu d io a válvula é ain d a m u ito p ro c u ra d o p elo s e n tu sia sta s d e g u i­
tarra rock. E les q u e re m q u e su as v ersõ es das c a n ç õ e s de rock c lá ssic a s ten h am um som
ex atam en te igual ao o risin a l.

Década de 1950-transistores discretos


A invenção do transistor em 1947. creditada a W illiam Shockley, John B ardeen e W alter Brat-
lain dos L aboratórios Bell (o setor de pesquisas da AT& T), resultou em com putadores de ta­
m anho e consum o elétrico m enores. Um transistor de estado sólido (discreto), m ostrado na
Fig. 2.3(a), usa um pequeno pedaço de silício “do p ad o ” , com alguns m ateriais extras para
produzir um a chave. C om o essas chaves usavam m ateriais “sólidos” em vez do vácuo das
válvulas ou m esm o as partes m óveis dos relés, elas eram com um ente referidas com o transis­
tores de estado sólido. E sses transistores eram m enores, m ais baratos, m ais rápidos e m ais
confiáveis do que as válvulas, tornando-se a chave m ais usada nos com putadores das décadas
de 1950 e 1960.

Á invenção do 1C éfre- Década de 1960-circuitos integrados


qiien tem en te creditada A invenção do circuito integrado (IC) em 1958 realm ente revolucionou a com ­
a Jack Kilby da Texas
putação. Um IC, tam bém co n h ecid o com o um chip , acondiciona num erosos
Instruments e Robert
transistores de tam anho m in ú scu lo em um pedaço de silício do tam anho de
Noycee da Fairchild
Semiconductors que o um a unha. A ssim , ao invés de 10 transistores necessitarem de 10 com ponentes
inventaram indepen- eletrônicos discretos na sua placa, 10 transistores podem ser im plem entados
dentemente. em um único com ponente, o chip. A Fig. 2.3(a) m ostra um a foto de um IC que
50 Sistemas Digitais

tem alguns m ilhões de transistores. A pesar dos prim eiros ICs terem contido apenas dezenas
de transistores, os progressos na tecnologia dos circuitos integrados levaram a quase UM
B ILH Ã O de transistores em um chip hoje em dia. A tecnologia de IC encolheu os transistores
alcançando um a escala totalm ente diferente. Um a válvula (com cerca de 10 cm de co m p ri­
m ento) está para um transistor contido em um IC m oderno (cerca de 100 nm ) com o um arra­
nha-céu (cerca de 500 m) está para a espessura de um cartão de crédito (cerca de 0,5 mm ).
Eu venho trabalhando nesse cam po por duas décadas e a quantidade de transistores em um
chip ainda me deixa m aravilhado. O núm ero 1 bilhão é m ais do que a m aioria de nós é capaz
de sentir intuitivam ente. Pense em m oedas de 10 centavos e considere o volum e que 1 bilhão
dessas m oedas ocuparia. C aberiam elas em seu quarto? A resposta é provavelm ente não (a
m enos que você tenha um quarto realm ente grande), porque um quarto de dorm ir típico tem
cerca de 40 m etros cúbicos, ao passo que um bilhão de m oedas ocuparia 575 m etros cúbicos
aproxim adam ente. Assim , você precisaria em torno de 14 quartos de dorm ir, aproxim adam ente
o tam anho de uma casa grande inteira. As m oedas deveriam ser em pilhadas de parede a parede
e do chão ao teto para poder guardar todo esse dinheiro. Se em pilhássem os as m oedas, elas
alcançariam cerca de 2.200 km céu acim a - em com paração, um jato voa a uma altitude de 8
km. É um a quantidade m uito grande de m oedas. N o entanto, conseguim os lidar e colocar 1
bilhão de transistores em um chip com apenas uns poucos centím etros quadrados. Rcalm ente
assom broso.
O s fios que ligam lodos esses transistores em um chip alcançariam alguns quilôm etros, se
fossem enfileirados em um fio esticado.
Os transistores de ICs são m uito m enores, m ais confiáveis, m ais rápidos e m enos fam intos
por energia elétrica que os transistores discretos. D esse m odo, atualm ente os transistores dos
ICs são de longe as chaves m ais com um ente usadas em com putação.
O s ICs d o início da década de 1960 podiam co n ter dezenas de tran sisto res e são c o ­
nhecidos hoje em dia co m o sendo de integração de pequena escala (557, de Small-Scale
V

Integration). A m edida que os transistores foram dim inuindo de tam anho, no final da década
de 1960 e início da de 1970, os ICs passaram a co n ter centenas de transistores, conhecidos
com o de integração de m édia escala (MSI, de Medium-Scale Integration). O s anos da década
de 1970 viram o desenvolvim ento de IC $ com integração de larga escala (LSI, de Large-
Scale Integration) contendo m ilhares de transistores, ao passo que nos anos da década de
1980 os chips com integração de m uito larga escala (VLSI. de Very Large-Scale Integration)
foram desenvolvidos. D esde então, os ICs continuaram a aum entar em capacidade até cerca
de 1 bilhão de transistores. Para aju star a sua com preensão desse núm ero, con sid ere que o
prim eiro m icroprocessador Pentium do início da década de 1990 requeria apenas cerca de 3
m ilhões de transistores e alguns m icroprocessadores populares, m as relativam cnte pequenos,
necessitavam de apenas 100.000 transistores aproxim adam ente. M uitos dos chips atuais de
qualidade superior, portanto, contêm dúzias de m icroprocessadores c é possível conceber que
eles possam co n ter centenas de pequenos m icroprocessadores (ou apenas um ou dois m icro­
processadores de grande porte).

► UMA INVENÇÃO SIGNIFICATIVA

Sabemos agora que a invenção do transistor marcou transformaram essas notícias em manchetes, sendo
o início de revoluções surpreendentes em computa­ que a maioria das matérias que apareceram predi­
ção e comunicação, que ocorreram na segunda me­ ziam simplesmente que os transistores iriam melho­
tade do século 20, capacitando-nos a fazer coisas rar coisas como rádios e próteses auditivas. Pode-se
como ver o mundo na TV. surfar na Internet e falar perguntar quais entre as tecnologias recentemente
em telefones celulares. No entanto, as implicações inventadas, mas não percebidas, poderão vir a alterar
do transistor não eram conhecidas pela maioria das o mundo de modo significativo.
pessoas por ocasião de sua invenção. Os jornais não
Projeto Lógico Combinacional 51

► COMO TRANSISTORES TÃO PEQUENOS SÃO FABRICADOS? USANDO MÉTODOS FOTOGRÁFICOS

Se você pegar um lápis e fizer o menor ponto que atingidas pela luz. As regiões que permaneceram
conseguir sobre uma folha de papel, a área desse formam partes de transistores. Repetindo esse pro­
ponto poderia alojar muitos milhares de transistores cesso muitas e muitas vezes e usando diferentes pro­
em um chip moderno de silício. Como os fabricantes dutos químicos em diversos passos, resultam não só
de chip podem criar transistores tão minúsculos? A transistores, mas também conexões que interligam
chave está nos métodos fotográficos. Os fabricantes os transistores e isoladores que evitam o contato en­
depositam um produto químico especial sobre a su­ tre as conexões que se cruzam.
perfície do chip, especial porque o produto químico
altera-se quando é exposto à luz. A seguir, os fabri­
cantes de chip lançam luz por meio de uma lente
focando-a em regiões extremamente pequenas do Fotografia de uni
chip - de maneira similar ao modo como uma lente chip de silício de um
de microscópio permite-nos ver coisas muito peque­ processador Pentium
nas ao focarmos a luz, mas ao inverso. Nas regiões contendo milhões de
pequenas que são iluminadas, o produto químico so­ transistores. O tama­
fre alteração e então um solvente o remove, mas al­ nho real é de / cm
gumas regiões ficam inalteradas por não terem sido em cada lado.

A densidade dos ICs vem dobrando aproxim adam ente a cada 18 m eses desde a década
de 1960. A duplicação da densidade dos ICs a cada 18 m eses é am plam ente conhecida com o
Lei de Moore , em atenção a G ordon M oore, um eo-fundador da Intel C orporation, que já em
1965 fez previsões de que o núm ero de com ponentes por IC iria duplicar a cada ano ou tanto.
Em algum m om ento, os fabricantes de chips não serão m ais capazes de reduzir os transistores
ainda m ais. Afinal de contas, o transistor tem de ser suficientem ente largo para deixar passar
os elétrons. Há m ais de uma década, as pessoas vêm prevendo o final da Lei de M oore, m as os
transistores continuam encolhendo.
T ransistores e conexões m enores proporcionam não só m ais funcionalidade em um chip ,
m as perm item tam bém circuitos m ais rápidos, em parte porque os elétrons não precisam se
deslocar tão longe para passar de um transistor ao próxim o. Esse aum ento de velocidade é a
razão principal pela qual as velocidades dos relógios dos com putadores pessoais aum entaram
tão drasticam ente em décadas recentes, de quilohertz de freqüência na década de 1970 a gi-
gahertz no início da década de 2000.

► 2.3 0 TRANSISTOR CMOS


O transistor m ais popular usado em C Is é do tipo C M O S. U m a explicação detalhada do fun­
cionam ento de um transistor C M O S está além do escopo deste livro. M esm o assim , eu co n s­
tatei que há m uita curiosidade que pode ser satisfeita com um a explicação sim plificada.
U m chip é feito b asicam en te a p artir d o e le m e n to silício. U m chip, tam bém c o n h e ­
cido co m o circu ito integrado, ou IC , tem tip icam en te o tam anho d e um a unha. M esm o que
você abrisse um co m p u tad o r ou outro dispositivo baseado em chips , você não veria o chip
de silício, porque na realidade os chips estão d en tro d e um en cap su lam en to m aior, usual-
m ente preto, de proteção. N o entanto, você certam en te p o d erá ver esses dispositivos pretos,
m ontados sobre um a placa de circu ito im presso, d en tro de d iv erso s ap arelh o s eletrô n ico s
dom ésticos.
A Fig. 2.4 ilustra um a seção reta de uma parte m inúscula de um chip de silício, m ostrando
a vista lateral de um tipo de transistor C M O S - o transistor nM O S. O transistor tem as três
partes de um a chave: (1) a entrada da fonte; (2) a saída, que é cham ada de dreno , porque
as cargas elétricas, suponho eu, fluem para o dreno d a m esm a form a que a água Hui para
52 Sistemas Digitais

Uma tensão ...atrai elétrons aqui,

conduz não conduz

(b)

pM O S

porta — o|

Figura 2.4 Transistores CMOS: (a) transistores em silício,


(b) símbolo do transistor nMOS com a indicação de que está não conduz conduz
conduzindo quando a porta = 1, (c) símbolo do transistor
pMOS que conduz quando a porta = 0. (0

o dreno; e (3) a entrada de controle, que é ch am ad a de porta (ou gate, em inglês) porque,
suponho eu, a porta bloqueia o fluxo de corrente com o um portão im pede um cão de escapar
do quintal. Um fabricante de chip cria a fonte e o dreno pela injeção de certos elem entos no
silício. A Fig. 2.4 m ostra tam bém o sím bolo eletrônico de um transistor nM OS.
S uponha q ue o d reno esteja conectado a um a tensão positiva de valor baixo (as tecn o lo ­
gias m odernas usam em torno de 1 ou 2 V) conhecida com o “ fonte de alim entação” , e que a
fonte foi ligada à terra por m eio de um resistor. A ssim , a corrente q u er fluir d o dreno para a
fonte e em seguida para a terra. (N ota: infelizm ente, a convenção define o fluxo de corrente
usando carg a positiva m esm o que, na realidade, as carg as q u e fluem sejam elétro n s ca rre ­
gados negativam ente. D esse m odo, você poderá notar que d izem o s que a co rren te flui do
dreno para a fonte, ainda q ue os elétrons estejam fluindo da fonte para o dreno.) N o entanto,
o canal de silício en tre a fonte e o d reno não é norm alm en te um co n d u to r ou, em outras
palavras, o canal é norm alm ente um isolador. P odem os p ensar em um isolador co m o sendo
um a resistência extrem am ente elevada. C om o I = V/R, então I será basicam ente 0. A chave
está desligada.
A coisa realm ente interessante a respeito do silício é que podem os m udar o canal de co n ­
dutor para isolador sim plesm ente aplicando um a pequena tensão positiva à porta. A tensão
da p orta não causa um fluxo de corrente da porta para o canal, devido ao isolador (óxido) de
pequena espessura entre a porta e o canal. N o entanto, aquela tensão positiva de porta cria
um cam po elétrico positivo que atrai elétrons, de carga negativa, da região espessa do silício
para dentro da região do canal - sem elhante a m over clipes de papel sobre o tam po de um a
m esa m ovendo um im ã debaixo dela. Q uando elétro n s suficientes ag lom eram -se no canal,
esse subitam ente torna-se condutor. Um condutor tem um a resistência extrem am ente baixa
de m odo que a corrente flui quase livrem ente entre o dreno e a fonte. A chave agora está na
condição de ligada. C om o você pode ver, o silício não é bem um condutor m as tam bém não
é um isolador, representando m ais apropriadam ente algum a coisa interm ediária, d aí o term o
semicondutor.
Um a analogia da corrente que está tentando passar pelo canal é um a pessoa tentando cru ­
zar um rio. N orm alm ente, o rio não tem pedras espalhadas em quantidade suficiente para que
a pessoa possa atravessá-lo. N o entanto, se pudéssem os atrair pedras de outras partes do rio,
form ando um a passagem (o canal), a pessoa poderia facilm ente atravessá-lo (Fig. 2.5).
Projeto Lógico Combinacional 53

Figura 2.5 Analogia do funcionamento de um transistor CMOS - Uma pessoa pode não con­
seguir atravessar um rio até que pedras suficientes sejam atraídas, formando uma passagem. De
modo semelhante, os elétrons não conseguem passar pelo canal entre a fonte e o dreno até que
elétrons suficientes sejam atraídos para dentro do canal.

M encionam os que nM O S era um tipo de transistor C M O S. O outro tipo é o pM O S. Ele é


sem elhante, exceto que o canal tem o funcionam ento oposto - o canal é norm alm ente co n d u ­
tor, m as não conduz quando a porta recebe um a tensão positiva. A Fig. 2.4 m ostra o sím bolo
eletrônico de um transistor pM O S. A letra C de C M O S vem do uso desses dois tipos “co m ­
plem entares’* de transistores. O M O S significa Metal Oxide Semicondnctor , m as as razões
desse nom e vão além do escopo dessa discussão.

► SILICON VALLEY EA FORMA DO SILÍCIO

O Silicon Valley (Vale do Silício) não é uma cidade, mais abundante (próximo do oxigênio) na crosta da
mas refere-se a uma área no norte da Califórnia, terra. Ele é encontrado em materiais como areia e
cerca dc uma hora ao sul de San Francisco, que barro. O silício é usado para fazer espelhos e vidros,
abrange diversas cidades como San Jose, Mountain além de chips.
View, Sunnyvale, Milpitas, Palo Alto e outras. A
área está densamente ocupada por companhias de
computadores e de outras altas tecnologias, sendo
em larga extensão o resultado dos esforços da Stan­
ford University (localizada em Paio Alto) para atrair
e criar tais empresas. Q ual é a form a do silício?
Uma vez, quando o meu avião estava chegando a Si­
licon Valley, a pessoa a meu lado (que por acaso era
um estudante de último ano de Ciência da Compu­
tação) perguntou-me “Afinal, qual é a forma de um
silício?” Eu acabei dando-me conta de que ele pen­
sava que o silício era um tipo de polígono, como um
pentágono ou um octágono. Bem. as palavras real­
mente soam de formas semelhantes.* O silício não
é uma forma, mas um elemento, como o carbono, Uni encapsulamento de chip com a sua cobertura remo­
alumínio c prata. O número atômico do silício c 14, vida - você pode ver o chip de silício semelhante a um
o seu símbolo químico é Si e é o segundo elemento espelho no centro.

* N. de T: Em inglês: silicon, polygon, pentagon, octagon.


54 Sistemas Digitais

► 2.4 PORTAS LÓGICAS BOOLEANAS - BLOCOS CONSTRUTIVOS DOS


CIRCUITOS DIGITAIS
Você viu que os tran sisto res C M O S podem ser usados para im p lem en tar chaves em um a
escala incrivelm ente pequena. E ntretanto, usar chaves com o nossos blocos construtivos para
construir circuitos digitais com plexos é sem elhante a tentar co n stru ir um a ponte usando p e­
dregulhos, com o está ilustrado na Fig. 2.6. C om certeza, você provavelm ente poderia co n s­
tru ir algum a coisa com blocos construtivos rudim entares, m as o processo construtivo seria
m uito penoso. S im p lesm en te, as chaves (e p ed reg u lh o s) são b locos co n stru tiv o s de nível
baixo dem ais.

Figura 2.6 Ter os blocos construtivos certos pode fazer toda a diferença quando se constroem
coisas.

A álgebra booleana e sua relação com os circuitos digitais


F elizm en te, na tarefa d e p ro jeto , as p o rtas lógicas b o o lean as aju d am -n o s, p erm itin d o re­
p resen tar os b lo co s co n stru tiv o s d o s c irc u ito s d ig itais de um a fo rm a com a q ual se pode
trab alh ar com m uito m ais facilidade do q u e com chaves. A lógica b o o lean a foi d esen v o l­
vida em m eados do sécu lo 19 pelo m atem ático G eo rg e B oole, não p ara c o n stru ir circu ito s
dig itais (os q u ais não eram nem m esm o um v islu m b re aos o lh o s d e q u alq u er p esso a), m as
co m o um esquem a para u sar os m étodos alg éb rico s na fo rm alização d a lógica e racio cín io
hum anos.
Um a álgebra é um ram o da m atem ática que usa letras e sím bolos para representar núm e­
ros e valores, na qual essas letras e sím bolos podem ser com binados de acordo com um co n ­
junto de regras conhecidas. A álgebra booleana usa variáveis cujos valores podem ser apenas
1 ou 0 (representando verdadeiro ou falso, respectivam ente) e cujos operadores, com o A N D ,
O R e NOT*, operam com essas variáveis e dão com o retorno 1 ou 0. A ssim , poderíam os d e­
clarar as variáveis x, y e z, e então dizer que z = x OR y, significando que z será 1 apenas se,
no m ínim o, um a das duas, x ou y, for 1. Do m esm o m odo, poderíam os dizer que z = x A ND
N O T(y), significando que z será 1 apenas se x for 1 e y for 0. Faça um a com paração entre
a álgebra booleana e a corriqueira que lhe é fam iliar desde provavelm ente o segundo grau,

* N. de T: Respectivamente B. OU e NÃO. Esses operadores não serão traduzidos por estarem sendo amplamente usados em
suas formas originais em inglês.
Projeto Lógico Combinacional 55

na qual os valores das variáveis podem ser núm eros inteiros (por exem plo) e os operadores
podem ser a adição, a subtração e a m ultiplicação.
O s operadores booleanos básicos são A N D , OR e NOT:

“ab = 01" é umaforma • A N D p ro d u z 1 q u an d o ambos os o p e ra n d o s são 1. D esse m odo, o resul-


abreviadapara “a = 0, tad o de a A N D b é 1 q u an d o am b o s a = 1 e b = 1, em c a so c o n trá rio o
b-1" resu ltad o éO .

• O R produz 1 quando um ou ambos os operandos são 1. De m odo que o resultado de a O R


b é 1 em qualquer um dos seguintes casos: ab = 01, ab = 10, ab = 11. D esse m odo, o
único caso em que a O R b c 0 c quando ab = 00.

• N O T produz 1 quando seu operando é 0. D esse m odo, N O T (a) retorna 1 quando a é 0, e


0 quando a é 1.

A todo m om ento, quando estam os pen san d o , usam os os operadores lógicos, co m o na


frase “ Eu irei alm oçar se M aria ou (O R) João forem e (A N D ) Silvia não” . Isso pode ser repre­
sentado por m eio dos conceitos booleanos, fazendo F representar a m inha ida ao alm oço (F =
1 significa que eu irei alm oçar, F = 0 significa que eu não irei). As variáveis booleanas m, j e
s representam M aria, João e Silvia, indo cad a um alm oçar. Então, podem os traduzir a frase
acim a para a equação booleana:

F = (m 0R j ) AND N0T(s)

A ssim F será igual a 1 se m ou j forem 1 e s for 0. A gora, que traduzim os a frase em um a


equação booleana, poderem os realizar diversas m anipulações m atem áticas com a equação.
A lgo que podem os fazer é determ inar o valor de F para valores diferentes de m, j e s:

• m=l, j= 0 , s = l—
>F = (1 OR 0) A ND NOT(l) = 1 A N D 0 = 0
• m=l, j = l , s = 0 —>F = (1 OR 1) A N D NOT(O) = 1 A N D 1 = 1

N o prim eiro caso, eu não vou alm oçar; no segundo caso, eu vou.
U m a segunda coisa que podem os fazer é aplicar algum as regras algébricas (que discutire­
m os m ais adiante) para m odificar a equação original obtendo a equação equivalente:

F = (m AND N 0T (s)) 0R ( j AND N 0T(s))

Em outras palavras, eu irei alm oçar se M aria for e (A N D ) Silvia não, ou (O R ) se João for
e (A N D ) Silvia não. Esta afirm ação é equivalente à anterior, m esm o parecendo diferente.
U m a terceira coisa que poderíam os fazer é d em onstrar form alm ente algum as proprieda­
des da equação. P or exem plo, poderíam os provar que se S ilvia for alm oçar (s = 1), então eu
não irei (F = 0) independentem ente de quem m ais irá ou não, usando a equação:

F = (m 0R j ) AND N0T(1) = (m 0R j ) AND 0 = 0

N ão im portando quais são os valores de m e j , F será igual a 0.


P restando aten ção a todas as atividades m atem áticas que podem os realizar usando as
equações booleanas, você poderá com eçar a perceber o que B oole estava tentando fazer ao
form alizar o raciocínio hum ano.

► EXEMPLO 2.1 Convertendo o enunciado de um problema em uma equação booleana


Converta os seguintes enunciados de problem as em equações booleanas usando os operadores
AND, OR e NOT. F deve ser igual a 1 apenas se:
1. a é 1, e b é 1. Resposta: F = a AND b
2. 1 ou b é 1. Resposta: F = a OR b
56 Sistemas Digitais

3. ambos a o b não são 0: Resposta:


(a) Opção I : F = NOT(a) AND NOT(b)
(b) Opção 2: F = a OR b
4. a é 1, e b é 0. Resposta: F = a AND NOT(b)
Converta os seguintes enunciados de problemas em equações booleanas:
1. Um chuveiro autom ático de um sistem a de com bate a incêndio deve b o rrifar água
quando um a tem peratura elevada for d etectad a e o sistem a estiver habilitado. Res­
posta: Vamos definir as variáveis booleanas: h representa “tem peratura elevada detec­
tada“, e representa “habilitado” e F representa “borrifar água” . Então, a equação é F =
hA N D e.
2. Um alarme sonoro de carro deverá ser ativado se o sistema de alarme estiver habilitado
e se o carro for sacudido ou se a porta for aberta. Resposta: Vamos definir as variáveis: a
representa “alarme habilitado”, s representa “carro sacudido”, d representa “porta aberta”
e F representa “alarme ativado”. Então, a equação é F = a AND (s OR d).
(a) Alternativamente, assumindo que o nosso sensor de porta d representa “porta fechada" ao
invés de aberta (significando d = 1 quando a porta está fechada e 0, quando aberta), obtemos
a seguinte equação: F = a AND (s OR NOT(d)). ◄

► EXEMPLO 2.2 Avaliação de equações booleanas


Calcule o valor da equação booleana F = (a AND b) OR (c AND d) para os valores dados das va­
riáveis a. b, c e d:
• a = 1, b = 1, c = 1, d = 0. Resposta: F = (1 AND 1) OR (1 AND 0) = 1 OR 0 = 1.
• a = 0, b = 1, c = 0, d = 1. Resposta: F = (0 AND 1) 0R (0 AND 1) = 0 0R 0 = 0.
• a = 1, b = 1, c = 1, d = 1. Resposta: F = (1 AND 1) 0R (1 AND 1) = 1 0R 1 = 1. ◄
A lguém podería estar agora perguntando o Álgebra booleana Plano de Boole: formalizar
que tem a álgebra booleana a ver com a co n s­ (meados do o raciocínio humano
trução de circuitos usando chaves. Em 1938, século 19)
Chaves
um estudante de pós-graduação do M IT ch a­ (década
Para comutação
m ado C laude Shannon escreveu um artigo (ba­ telefônica e outros
de 1930)
usos eletrônicos
seado em sua tese de m estrado) q ue descrevia
com o a álgebra booleana poderia ser aplicada a
circuitos baseados em chaves, m ostrando que
I
Shannon (1938)
Mostrou a aplicação
da álgebra booleana
ao projeto de circuitos
Shannon, a propósito,
é também considerado
o pai da teoria da
chaves “ 1'gadas” poderiam ser
tratadas com o um 1 (ou v erd a­
deiro) e “d esligadas”, co m o um
I
Projeto digital
baseados em chaves

informação, devido a 0 (ou falso) Para isso, as chaves Figura 2.7 Shannon aplicou a álgebra bo­
seu trabalho posterior deveriam ser ligadas entre si de oleana aos circuitos baseados em chaves,
sobre a comunicação um certo m odo (Fig. 2.7). A sua dando uma base formal ao projeto de circui­
digital. tese é am plam ente considerada a tos digitais.
sem ente que se desenvolveu produzindo o m o­
derno projeto digital. C om o a álgebra booleana contém um rico conjunto de axiom as, teore­
m as, postulados e regras, podem os usar todas essas coisas para, usando álgebra, m anipular os
circuitos digitais. Em outras palavras:

Podem os construir coisas fazendo m atem ática.

Esse é um conceito extrem am ente poderoso. Ao longo deste capítulo, construirem os cir­
cuitos fazendo m atem ática.
Projeto Lógico Combinacional 57

Portas ANDf OReNOT

Antes, dissemos que A fim cie construir circuitos digitais que possam ser m anipulados usando a ál­
uma “porta " era a gebra booleana, im plem entam os prim eiro os operadores booleanos AND. OR e
entrada de controle do NOT usando pequenos circuitos de chaves, os quais cham arem os de portas ló­
chaveamento de um gicas booleanas. Então, esquecemos as chaves e, no seu lugar, usam os as portas
transistor CMOS, mas lógicas com o nossos blocos construtivos. De repente, tem os o poder da álgebra
agora estamos falando booleana na ponta dos nossos dedos para projetar circuitos mais complexos! Isso
a respeito de "portas é semelhante a prim eiro juntar pedregulhos form ando três tipos de tijolos e, então,
lógicas Devido a construir estruturas com o pontes com esses tijolos, com o está ilustrado na Fig. 2.6.
uma semelhança ina­
Tentar construir uma ponte com pedregulhos é muito mais difícil do que construí-
dequada de nomes, a
la com esses três tipos básicos de tijolos. De modo sem elhante, tentar construir um
mesma palavra (porta)
refere-se a duas coisas circuito para detectar movimento no escuro (ou qualquer circuito digital) usando
diferentes. Entretanto, chaves e mais difícil do que construí-lo com portas lógicas booleanas.
não se preocupe; de­ Prim eiro, vam os im plem entar as portas lógicas booleanas usando transisto­
pois da próxima seção, res C M O S e então m ais adiante m ostrarem os com o a álgebra booleana ajuda-
usaremos a palavra nos a co n stru ir circuitos m elhores. Você realm ente não precisa com preender
porta somente para a im plem entação das portas lógicas, q u e está por baixo em nível de transistor,
nos referirmos a uma para aprender os m étodos de projeto digital no restante deste livro e, de fato,
“porta lógica ” . m uitos livros om item inteiram ente a discussão sobre transistores. N o entanto,
para um estudante, um a com preensão da im plem entação em nível de transistor pode ser bem
satisfatório porque não Uca nada de “m isterioso” . E ssa com preensão pode ser útil tam bém
para entender o com portam ento não ideal das portas lógicas, o qual m ais tarde poderá vir a se
tornar necessário aprender para se poder lidar com os projetos digitais.
Vamos com eçar usando “ 1” para representar o nível de tensão da fonte, que hoje está usu­
alm ente entre 1 e 2 V para a tecnologia CM O S (por exem plo, 0.7 V ou 1,3 V). Vamos usar “0”
para representar a terra. Observe que poderíam os ter escolhido quaisquer dois sím bolos ou pa­
lavras, em lugar de “ 1” e “0”, para representar os níveis de tensão da fonte e da terra. P or exem ­
plo, poderíam os ter usado “v erd ad ei ro ” e “ fa l s o '\ ou “H” e “ L’\ Lem bre-se de que o “ 1” não
corresponde necessariam ente a 1 V e o “0”, a 0 V. De fato, cada um deles representa usualm ente
um intervalo de tensão, com o “ 1” representando qualquer tensão entre 1,2 e 1,4 V.

NOT OR AND
x x-
Símbolo x—
y y —1
X F X y F x y F
Tabela-verdade 0 1 0 0 0 0 0 0
1 0 0 1 1 0 1 0
1 0 1 1 0 0
Figura 2.8 S ím b o lo s , 1 1 1 1 1 1
tabelas-verdade e circuitos
transistorizados de portas
lógicas básicas: (a) porta
NOT (inversor), (b) porta
Circuito com
OR de 2 entradas, (c) porta
transistores
AND de 2 entradas. Alerta:
na realidade as portas reais
AND e OR não são cons­
truídas desse modo, mas
sim de m odo m ais com ­
plexo - veja a Seção 2.8.
58 Sistemas Digitais

Porta NOT
U m a porta N O T tem u m a en trad a x e um a saíd a F. O v alo r de F deve se r se m p re o
o p o sto , ou inverso, d e x - p o r essa razão , u m a p o rta N O T é c o m u m e n te c h a m a d a
d e inversor. P o d erem o s c o n stru ir um a p o rta NOT, u san d o um tra n sisto r p M O S e um
nM O S , co m o está m o strad o na Fig. 2.8(a). O triân g u lo no topo d o c irc u ito tran sisto rizad o
rep resen ta a ten são p o sitiv a d a fonte d e alim en tação , q u e re p re sen ta m o s co m o 1. A série
de linhas na base d o circu ito rep resen ta a terra, q u e rep resen tam o s co m o 0. Q u an d o a en ­
trad a x é 0, o tra n sisto r pM O S irá conduzir, m as o nM O S não co n d u zirá, c o m o m o stra a
Fig. 2.9(a). N esse caso , p o d em o s p en sar no circu ito co m o sen d o um ílo de 1 a F, de m odo
q u e q u an d o x = 0, en tão F = 1. P o r o u tro lado, q u an d o x é 1, o nM O S irá conduzir, m as o
pM O S não irá, co m o está m o strad o na Fig. 2.9(b). N esse caso, p o d em o s p en sar no circuito
co m o sen d o um fio d e 0 a F, de m o d o q ue q u an d o x = 1, en tão F = 0. A T abela d a Fig. 2.8,
ch am ad a de tabela-verdade , resu m e o co m p o rta m e n to da p o rta NOT, listan d o a saíd a da
p orta para cad a en tra d a possível.

Figura 2.9 Caminhos de condução do inversor quando:


(a) a entrada é 0 e (b) a entrada é 1.

A Fig. 2. IO m ostra um diagram a de tem po de um inversor - quando a e n ­


trada é 0, a saída é 1: quando a entrada 6 1, a saída c 0.
0 E letricam en te, a co m b in ação de tran sisto res pM O S e nM O S dessa form a
1 traz o benefício do baixo co n su m o de energia. O bserve na Fig. 2.8(a) que, para
q u alq u er valo r de x, ou o tra n sisto r pM O S ou o nM O S não co n d u z. A ssim
(co n ceitu alm en te), a co rren te nunca p ode fluir d a fonte de alim en tação até a
terra - essa característica tam bém será v erd ad eira para as p o rtas A N D e OR
tempo
que d efinirem os em seguida. Isso faz com que os circu ito s C M O S consum am
Figura 2.10 D ia ­ m uito m enos en erg ia do q ue as o u tras tecn o lo g ias d e tran sisto r e ex p lica em
gram a de tem po do parte p o r que atu alm en te a tecn o lo g ia de portas lógicas tran sisto rizad as m ais
inversor. po p u lar é a C M O S.

Porta 0R
U m a porta OR básica tem duas entradas x e y e um a saída F. O valor de F deve ser 1
som ente se, no m ínim o, um a das entradas x ou y for 1. P oderem os construir um a porta
OR usando dois transistores pM O S e dois nM O S, com o está m ostrado na Fig. 2.8(b)
(verem os na Seção 2.8 que, na realidade, as portas O R são construídas de form a m ais
com plexa). Sc, no m ínim o, um a das entradas x ou y for 1, então terem os um a ligação de 1
para F c nenhum a de 0 para F. de m odo que F será 1, com o está m ostrado na Fig. 2 .1 l(a). Se
am bas as entradas x e y forem 0, então lerem os um a ligação de 0 para F e nenhum a de 1 para
F. D esse m odo, F será 0, com o está m ostrado na Fig. 2.1 l(b ). A tabela-verdade da porta OR
aparece na Fig. 2.8(b).
Projeto Lógico Combinacional 59

Figura 2.11 C am inhos


de condução de uma poita
OR quando: (a) uma en­
trada é 0 e (h) am bas as
entradas são 0.

1 A Fig. 2 . 12 m ostra um diagram a de tem po de um a porta OR. (Veja a Seção


X
1.3 para um a introdução aos diagram as de tem po.) A plicam os cada co m b in a­
0
ção possível de valores às entradas x e y e m ostram os que F será 1 se am bas as
1
y entradas ou qualquer um a delas for 1.
0 Portas O R m aiores, tendo m ais de duas entradas, tam bém são possíveis.
1 Se, no m ínim o, um a das entradas da porta O R for 1, então a saída será 1. Em
F
um a porta OR de três entradas, o circuito transistorizado da Fig. 2.8(b) terá três
o
transistores pM O S em cim a e três nM O S em baixo, ao invés de dois transisto­
tempo res de cada tipo.
Fig ura 2.12
D ia ­
Porta AND
gram a de tem po da
Um a porta AND básica tem duas entradas x e y e um a saída F. O valor de F deve
porta OR.
ser 1 som ente se am bas as entradas x e y forem 1. P oderem os co n stru ir um a
porta A N D usando dois transistores pM O S e dois nM O S, com o está m ostrado
na Fig. 2.8(c) (novam ente, verem os na Seção 2.8 que na realidade as portas
A N D são construídas de form a m ais com plexa). Se am bas as entradas x e y fo­
rem 1, então terem os uma ligação da fonte de alim entação para F e nenhum a da
terra para F, de m odo que F será 1, com o está m ostrado na Fig. 2.13(a). Se, no
m ínim o, um a das entradas x ou y for 0, então terem os um a ligação da terra para
F e nenhum a da fonte para F. Desse modo, F será 0, com o está m ostrado na Fig.
2 . 13(b). A tabela-verdade da porta A ND aparece na Fig. 2.8(c).

1 --------- ---------
X
0— —
Figura 2.13 C am i­
1 ------------------
y nhos de co n d u ção
0 ------ de um a porta AND
1 ----- quando: (a) todas as
F
entradas são 1 e (b)
o ----------------
uma entrada é 0.
tempo
A Fig. 2.14 m ostra um diagram a de tem po de um a porta A N D . A plicam os
Figura 2.14
D ia ­
cada com binação possível dc valores às entradas x e y e m ostram os que F será 1
gram a dc tem po da
apenas se am bas as entradas forem 1.
porta AND.
60 Sistemas Digitais

Portas A N D m aiores, tendo m ais de duas entradas, tam bém são possíveis. A saída será 1
apenas se todas as entradas forem 1. Em um a porta A N D de três entradas, o circuito transis­
torizado da Fig. 2.8(c) leria três transistores pM O S no topo e três nM O S na base, ao invés de
dois transistores de cada tipo.

Construindo circuitos simples usando portas


D epois de term os constru íd o portas lógicas com o blocos construtivos a
partir de transistores, m ostrarem os agora com o co n stru ir circuitos úteis
a p artir desses blocos. L em bre-se do exem plo de sistem a digital da Fig.
1.13, o detector de m ovim ento no escuro. Q uando a = 1 significava m o­
vim ento, b = 0 significava escuridão e queríam os F = a A N D N OT(b). Po­
dem os conectar b a um invcrsor obtendo N O T(b) e ligar o resultado ju n to
com a na entrada de um a porta A N D , cu ja saída é F. O circuito resultante
aparece na Fig. 1.13(c), m ostrado aqui novam ente à esquerda por conveni­
ência. A gora vam os apresentar m ais exem plos.

► EXEMPLO 2.3 Convertendo uma equação booleana em um circuito com portas lógicas
Converta a seguinte equação em um circuito:
F = a AND NOT( b OR NOT(c) )
Com eçam os desenhando F à direita e então tra­
balham os inversam ente em direção às entradas.
(Também poderíamos com eçar desenhando as en­
tradas à esquerda e trabalhar em direção à saída.) A
equação de F contém uma porta AND de dois itens:
a e a saída de um NOT. Desse modo, com eçam os
desenhando o circuito da Fig. 2.15(a). A entrada da
NOT vem de uma porta OR com dois itens de en­
trada: b e NOT(c). Assim, com pletam os o desenho Figura 2.15 Construção do circuito para
da Fig. 2 .15(b) incluindo uma porta OR e uma NOT F: (a) parcial, (b) completo.
como mostrado. ◄

► EXEMPLO 2.4 M ais exemplos de conversão de equações booleanas em portas


A Fig. 2.16 dá mais dois exemplos de conversão de equações booleanas em circuitos, construídos
com portas lógicas. Com eçam os novamente com a saída e trabalhamos inversamente em direção
às entradas. A figura mostra a correspondência entre os operadores das equações e as portas, além
da ordem que seguimos para colocar cada porta no circuito.

F = a AND {s OR d) F = (a AND NOT(b)) OR (b AND NOT{c))

Figura 2.16 Exemplos de conversão de equações booleanas em circuitos.


Projeto Lógico Combinacional 61

► EXEMPLO 2.5 Usando portas AND e OR com mais de duas entradas


A Fig. 2 .17(a) mostra uma implementação da equação F = a AND b AND c, usando portas AND de
duas entradas. Em lugar disso, no entanto, os projetistas implementarão tipicamente essa equação
usando uma única porta AND de três entradas, mostrada na Fig. 2 .17(b). A função 6 a mesma, mas a
porta AND de três entradas usa menos transistores, 6 em lugar de 4+4 = 8 (além de ter menos atraso
de tempo - depois veremos mais sobre atrasos de tempo). De modo semelhante, tipicamente F = a
AND b AND c AND d seria implementada usando uma porta AND de quatro entradas.

F = a AND b AND c

Figura 2.17 Uso de portas AND de entradas múltiplas: (a) usando portas AND de
2 entradas, (b) usando uma porta AND de 3 entradas.

A mesma abordagem aplica-se a portas OR. Por exemplo. F = a OR b OR c seria implemen­


tada tipicamente usando um a porta OR de três entradas. ◄

A gora, apresentarem os exem plos que com eçam com as d escriçõ es verbais dos p roble­
m as, as quais são convertidas em equações booleanas que, finalm ente, são im plem entadas na
form a de circuitos.

► EXEMPLO 2.6 Luz de alerta para cinto de segurança


Suponha que você quer projetar um sistem a para
automóvel que acenderá uma lâm pada de alerta
sempre que o cinto de segurança não estiver en­
gatado e a chave estiver na ignição. A ssum a os
seguintes sensores:
• um sensor de saída s indica se o cinto de se­
gurança do motorista está engatado (s = 1
significa que o cinto está engatado), e
• um sensor com saída k indica se a chave está
na ignição (k = 1 significa que a chave está
colocada).
Assuma que a luz de alerta tem uma entrada
simples w que acende a luz quando w é 1. Assim,
as entradas do nosso sistema digital são s e k, e a
saída é w, w deve ser 1 quando ambas as condições
seguintes ocorrem: s é 0 e k é 1.
Primeiro, vamos escrever um program a sim ­
ples em C, executável em microprocessador, que
seja capaz de resolver esse problema de projeto.
vSe conectarm os s a l O , k a l l e w a PO, então o
nosso código em C dentro da função m ain() do
programa em C seria:

while (1) {
PO = !I0 && 11;
}
62 Sistemas Digitais

Repetidamente, o código verifica os sensores e atualiza a luz de alerta.


Agora, vamos escrever uma equação booleana que descreve um circuito capaz de implementar
o projeto:
w = NOT(s) AND k
Usando as portas lógicas AND e NOT que introduzimos antes, podemos com pletar facilmente
o projeto do nosso prim eiro sistema, conectando s a uma porta NOT e ligando a porta NOT(s)
resultante e k a uma porta AND de 2 entradas, como esta mostrado na Fig. 2.18.
A Fig. 2.19 mostra um diagram a de tempo para o circuito. Em um diagrama de tempo, po­
demos aplicar quaisquer valores que queiramos às entradas, mas então a linha de saída deverá
ser desenhada de modo que acompanhe a função do circuito. Na figura, aplicamos 00 a s e a k, a
seguir, 01, então 10, e finalmente 11. O Cínico intervalo em que a saída w é 1 é quando s é 0 e k é 1,
como mostrado na figura. ◄

Entradas
1
k
0
1
s
0
Figura 2.19 D ia­ Saídas
grama de tempo do 1
Figura 2.18 C ir­ w
circuito de alerta
cuito de alerta para para cinto de segu­
cinto de segurança. Cinto de segurança rança. tempo

Dissemos anteriorm ente que, no projeto de circuitos


digitais, as portas lógicas são m ais apropriadas do que
os transistores com o blocos construtivos. Em últim a
análise, no entanto, observe que as portas lógicas são
im plem entadas usando os transistores, com o está m os­
trado na Fig. 2.20. Para os program adores de C, uma
analogia é que é m ais fácil escrever program as em C do
que em assembly, m esmo que o program a em C termine
sendo im plem entado, em última análise, em assembly.
O bserve com o o circuito baseado em transistores da
Fig. 2.20 é muito menos intuitivo do que o circuito equi­
valente baseado em portas lógicas da Fig. 2 .18.

► EXEMPLO 2.7 Luz de alerta para cinto de segurança com Figura 2.20 Circuito de alerta para
sensor de presença de motorista cinto de segurança usando transistores.
Vamos expandir o exemplo anterior adicionando um sen­
sor, com saída p, que detecta se uma pessoa está de fato
sentada no assento do motorista. Iremos também alterar
o funcionamento do sistema para que a luz de alerta seja
acesa somente quando é detectada a presença de uma pes­
soa no assento (p = 1). Desse modo, a equação do novo
circuito é:
w = p AND NOT(s) AND k
Neste caso, precisam os de uma porta AND de 3 en­
tradas. O circuito está m ostrado na Fig. 2.21. Figura 2.21 Circuito de alerta para
Tenha em mente que a ordem das entradas na porta cinto de segurança com sensor de
AND é irrelevante. ◄ presença de pessoa.
Projeto Lógico Combinacional 63

► EXEMPLO 2.8 Luz de alerta para cinto de segurança com acendimento inicial
Vamos expandir ainda mais o exem plo anterior. O s au-
tom óveis costum am acender todas as luzes de alerta
quando você gira a chave de ignição na partida. Assim,
você pode verificar se todas as luzes de alerta estão fun­
cionando. A ssum a que o nosso sistem a recebe uma en­
trada t que é 1 durante os prim eiros 5 segundos após a
colocação da chave na ignição e então torna-se 0, a partir
desse instante em diante (não se preocupe com quem ou
o que faz t assum ir esses valores). Desse m odo quere­
mos w = 1 quando p = l e s = O e k = 1, ou quando Figura 2.22 Circuito expandido de
t = 1. O bserve que, quando t = 1, acendem os a luz, alerta para cinto de segurança.
independentem ente dos valores de p, s e k. A equação do
novo circuito é:
W = (p AND NOT(s) AND k ) OR t
O circuito está mostrado na Fig. 2.22. ◄

Algumas regras e convenções de desenho de circuitos


H á a lg u m a s re g ra s e c o n v e n ç õ e s q u e os p ro je tista s se ­ não sim
guem n o rm a lm en te q u a n d o d e se n h a m c irc u ito s com p o r­
tas lógicas:

• A s portas lógicas têm um a saída e um a ou m ais entradas,


m as norm al m ente não rotulam os as saíd as e as en trad as
d as portas. L em b re-se d e q ue a ordem das en trad as em não sim
um a p orta não tem efeito so b re o seu co m p o rtam en to
lógico.

• C ada fio tem um sentido im plícito, indo da saída de um a


p o rta p ara a en trad a de um a o u tra po rta, m as n o rm al­
m ente não desen h am o s as setas indican d o o sentido.

• Um fio sim ples pode se ram ificar em dois (ou m ais) fios
que vão para as entradas de diversas portas - os ram os
têm o m esm o valor que o fio sim ples. E ntretanto, dois
fios NÃO podem se ju n ta r em um único - qual seria o va­
lor desse fio sim ples se os dois fios que chegam tivessem
valores diferentes?

► 2.5 ALGEBRABOOLEANA
A s portas lógicas são úteis para im plem entar circuitos, m as as equações são m elhores para
m anipular esses circuitos. A s ferram entas algébricas da álgebra booleana perm item -nos m a­
nipular as equações booleanas de m odo que podem os fazer coisas tais com o sim plificar as
equações, verificar se duas equações são equivalentes, en co n trar a inversa de um a equação,
dem o n strar as propriedades das equações, etc. C om o um a equação booleana, consistindo
em operações A N D , O R e NOT, pode ser facilm ente transform ada em um circuito de portas
A N D , O R e NOT, pode-se considerar a m anipulação das equações booleanas com o sendo
um a m anipulação de circuitos digitais.
Vamos introduzir inform alm ente algum as das ferram entas algébricas m ais úteis da álg e­
bra booleana. O A pêndice A fornece um a definição form al de álgebra booleana.
64 Sistemas Digitais

Notação e terminologia
A gora definirem os um a term inologia e um sistem a de notação para descreverm os as eq u a­
ções booleanas. U sarem os extensivam ente essas definições por todo o livro.

Operadores
E screver os operadores A N D , O R e N O T nas equações é incôm odo. A ssim , a álgebra boole-
ana usa um a notação m ais sim ples para esses operadores:

• “N O T (a)” d escrito tipicam ente com o a 1 ou a. U sarem os a 1 que d lido com o “a linha”. O
term o a ' d tam bém conhecido com o o complemento de a. ou o inverso de a.

• “a O R b" d escrito tipicam ente com o “ a + b” , com a intenção específica de ser sem elhante
ao operador de adição da álgebra com um . A expressão “ a + b” d então referid a com o a
soma de a e b. A expressão <va + b” é lida usualm ente com o “a ou b” .
• “a A N D b” d escrito tipicam ente com o “a b” ou “ a • b”, com a intenção específica de
ser sim ilar ao operador de m ultiplicação da álgebra com um e d referido m esm o com o o
produto de a e b. C om o na álgebra com um , podem os m esm o escrever “ ab” com o sendo o
produto de a e b, desde que fique claro que a e b são variáveis separadas. A expressão “ a
* b" d lida usualm ente com o “a e b” ou sim plesm ente ”ab".

Os m atem áticos frcqücntem ente usam outras notações para os operadores booleanos, m as
a notação anterior parece ser a m ais po p u lar en tre os engenheiros, devido provavelm ente à
sem elhança intencional desses operadores com os da álgebra com um .
U sando a notação m ais sim ples, o nosso exem plo anterior do cinto de segurança:

w = ( p AND N O T (s ) AND k ) OR t

poderia ser reescrito de form a concisa com o:

w = ps'k + t

que seria lido com o “ w d igual a p, s linha, k ou t” .

► EXEMPLO 2.9 Lendo equações booleanas


Leia as seguintes equações:
1. F = a 1b 1 + c. Resposta: “F d igual a a linha b linha, ou c.”
2. F = a + b * c ' . Resposta: “ F d igual a a, ou b e c linha;’
C onverta as seguintes leituras de equações em equações escritas:
1. “F d igual a a b linha c linha.” Resposta: F = a b ' c ' .
2. “F d igual a a b c, ou d e linha.” Resposta: F = abc + de '. M
A s regras da álgebra booleana exigem que avaliem os as expressões usando as regras de
precedência de que: * tem precedência sobre +, a com plem entação de um a variável tem p re­
cedência sobre * e +, e naturalm ente calculam os prim eiro o q u e está dentro de parênteses.
Podem os tornar explícita a ordem de avaliação da expressão anterior usando parênteses com o
segue: w = (p * ( s 1) * k) + t.
A Tabela 2.1 resum e as regras de precedência da álgebra booleana.
Projeto Lógico Combinacional 65

T A B E LA 2.1 Regras de precedência da álgebra booleana, precedência mais


elevada primeiro

S ím bolo Nome D e scriçã o

<» Parênteses Avalie primeiro as expressões contidas em parênteses


• NOT Avalie da esquerda para a direita
* AND Avalie da esquerda para a direita

+ 0R Avalie da esquerda para a direita

Convenções
E m bora tenham os tom ado em prestado da álgebra com um as operações de adição e de m ulti­
plicação. e m esm o usado os term os som a e produto, não dizem os “vezes” para A N D e “m ais”
para O R.
Os livros de projeto digital designam tipicam ente cada variável usando um único caracter,
porque as equações tornam -se m ais concisas. C om o escreverem os m uitas equações, a co n ci­
são irá facilitar a com preensão delas evitando que se desdobrem por m uitas linhas ou páginas.
D esse m odo, seguirem os a convenção de usar caracteres sim ples. N o entanto, quando você
descreve sistem as digitais usando um a linguagem de descrição de hardw are ou um a lingua­
gem de program ação com o C. provavelm ente você deverá usar nom es m uitos m ais descritivos
para que o seu código seja entendido. A ssim , ao invés de usar “ s ” para representar a saída de
um sensor de cinto de segurança engatado, você poderá usar “Ci n to d eS eg u ran çaE n g atad o ".

► EXEMPLO 2.10 Avaliando equações booleanas usando as regras de precedência


Avalie as seguintes equações booleanas, assumindo a = l , b = l, c = 0ed = l.
1. F = a * b + c. Resposta: * tem precedência sobre + c assim, avaliando a expressão, obte­
mos F = (1 * 1) + 0 = (1) + 0 = 1 + 0 = 1.
2. F = ab + c. Resposta: o problema d idêntico ao anterior, usando a notação abreviada de *.
3. F = a b 1. Resposta: primeiro avaliamos b \ porque NOT tem precedência sobre AND, re­
sultando F = 1 * ( 1 ') = 1 * (0) = 1 * 0 = 0.
4. F = ( a c ) ' Resposta: primeiro avaliamos o que está dentro dos parênteses e, a seguir, apli­
camos o NOT ao resultado produzindo (1 * 0 )1 = ( 0 ) ' = 0 ' = 1.
5. F = (a + b ') * c + d '. Resposta: os parênteses têm a máxima precedência. Dentro dos
parênteses, o NOT tem a precedência mais elevada. Assim, avaliamos a parte dos parênte­
ses como (1 + ( 1 ') ) = (1 + (0)) = (1 + 0) = 1. A seguir, * tem precedência so b re +,
resultando (1 * 0) + 1' = (0) + 1 '. O NOT tem precedência sobre o OR, dando (0) +
( D = (0) + (0) = 0 + 0 = 0. ◄

Variáveis, literais, termos e soma de produtos


Vamos definir m ais alguns conceitos, usando com o exem plo a equação: F (a , b ,c ) = a 'b c +
a b c ' + ab + c.
Variável: Um a variável representa um a quantidade (0 ou 1). A equação acim a tem três va­
riáveis: a, b e c. T ipicam ente, usam os variáveis nas equações booleanas para representar as
entradas de nossos sistem as. A lgum as vezes, listam os explicitam ente as variáveis da função
com o antes (“ F ( a ,b ,c ) = O utras vezes, om itim os a lista explícita (“ F =
66 Sistemas Digitais

• Literal: Literal é a expressão de um a variável na form as com plem entada ou não co m p le­
m entada (afirm ada). A equação acim a tem 9 literais: a ' , b , c , a , b , c ' , a , b c c .

• Termo de produto: Um term o de produto é um produto de literais. A equação acim a tem


quatro term os: a 1bc, a b c ', ab e c.

Soma de produtos: U m a equação escrita com o um a operação O R de term os de produtos


é conhecida co m o estando na form a de um a som a de produtos. O exem plo an terio r de
equação para F está na form a de um a som a de produtos. Todas as seguintes equações estão
na form a de um a som a de produtos:

abc + a b c '
ab + a 'c + abc
a + b ' + ac (observe que 6 possível haver um termo de produto que contenha
apenas uma literal).
A s seguintes equações NÃO estão na form a de som a de produtos:

(a + b )c
(ab + b c )(b + c)
( a 1) ' + b
a (b + c(d + e ) )
(ab + b c )'

Algumas propriedades da álgebra booleana


L istarem os agora algum as das regras chaves da álgebra booleana. S uponha que a, b e c sejam
variáveis booleanas que apresentam os valores 0 ou 1.

Propriedades Básicas
A ssum a que as seguintes propriedades, conhecidas com o postulados, são verdadeiras:

• Comutativa
a + b = b + a
a * b = b * a

E ssa propriedade deve ser óbvia. Sim plesm ente, leste-a com diferentes valores de a e b.

• Distributiva

a* (b+c) = a * b + a * c
a + (b * c) = (a + b) * (a + c) (essa é enganadora!)

C uidado, a segunda pode não ser óbvia. É diferente da álgebra com um . N o entanto, você
pode verificar que am bas as propriedades distributivas são verdadeiras sim plesm ente ava­
liando am bos os m em bros de cad a equ ação usando todas as co m b in açõ es possíveis de
valores de a, b e c.

• Associativa
(a + b) + c = a + (b + c)
(a * b) * c = a * (b * c)

N ovam ente, teste-a para diferentes valores de a e b para ver que é verdadeira.

• Identidade
0 + a = a + 0 = a
1 * a = a * 1 = a
Projeto Lógico Combinacional 67

Intuitivam ente, parece fazer sentido, certo? Fazer um a operação O R de a com 0, (a + 0),
significa apenas que o resultado será o que q u er que seja a. A final de contas, 1 + 0 d 1, ao
passo que 0 + 0 é 0. De m odo sem elhante, um a A N D de a com 1, ( a * l ) , resulta em a. O
valor de 1*1 é 1, ao passo que 0*1 é 0.

• Complemento
a + a' =1
a * a' = 0
Intuitivam ente, essa tam bém faz sentido. Independenlem ente do valor de a , a ' terá o va­
lor oposto, de m odo que você obtém 0 e 1, ou, 1 e 0. U m a das variáveis de (a , a 1) sem pre
será 1. D esse m odo, se você fizer um a operação O R com elas, então (a + a ' ) deverá
produzir um 1. D e m odo sem elhante, um a variável de (a + a ') sem pre será 0 e, desse
m odo, um a A N D com elas ( a * a ') deverá produzir um 0.

A gora, vam os aplicar essas propriedades básicas a alguns exem plos de projeto digital para
ver com o elas podem nos ajudar.

► EXEMPLO 2.11 Aplicando as propriedades da álgebra booleana


Use as propriedades da álgebra booleana nos seguintes problemas:
• Mostre que a b c 1 é equivalente a c ' ba.
Pela propriedade comutativa, podemos perm utar os operandos de uma sequência de ANDs.
Desse modo, a*b*c' = a* c'* b = c'*a*b = c'* b * a = c 'b a .
• Mostre que abc + ab c' = ab.
A prim eira propriedade distributiva perm ite-nos colocar em evidência o term o ab: abc +
a b c 1 = ab (c + c 1). Então, a propriedade do complemento permite-nos substituir o c+c ' por
1 :a b (c + c ‘ ) = a b ( l) . Finalmente, a propriedade da identidade perm ite-nos rem over o 1 do
termo AND: ab ( 1) = ab*l = ab.
• Mostre que a equação x + x ' z é equivalente a x + z.
A segunda propriedade distributiva (a enganadora) perm ite-nos substituir x + x 'z por
(x+x1)*(x+ z). A propriedade do com plem ento perm ite-nos substituir (x+x1) por 1 e a pro­
priedade da identidade permite-nos substituir l*(x+z) por x+z. M

► EXEMPLO 2.12 Simplificação de um sistema de porta de correr automática


Suponha que você deseja projetar um sistema para contro­
lar uma porta de correr automática, como as que podem
ser encontradas nas entradas de algumas lojas. Em nosso
sistema, uma entrada p indica se um sensor detectou a pre­
sença de uma pessoa à frente da porta (p = 1 significa que
uma pessoa foi detectada). Uma entrada h indica se a porta
deve permanecer aberta manual mente (h = 1) independen­
temente da detecção ou não da presença de uma pessoa.
Uma entrada c indica se a porta deve permanecer fechada
(como quando a loja não está aberta para funcionamento) -
Figura 2.23 Circuito inicial de aber­
c = 1 significa que a porta deve permanecer fechada. Nor-
tura de porta.
malmente, estes dois últimos casos seriam acionados por
um gerente autorizado. Uma saída f abre a porta quando f
é 1. Queremos abrir a porta quando ela está sendo acionada manualmente para ser mantida aberta, ou
(OR) quando a porta não está sendo mantida aberta manual mente, mas uma pessoa está sendo detec­
tada. Entretanto, em ambos esses casos, somente abriremos a porta se ela não estiver sendo acionada
para permanecer fechada. Podemos traduzir esses requisitos em uma equação booleana na forma de:

f = h c ' + h 1p c 1
68 Sistemas Digitais

Poderíamos construir um circuito para im plem entar essa equação, como na Fig. 2.23.
Agora, vamos manipular a equação usando as propriedades descritas anteriormente. Olhando
as equações, parece-nos que podemos colocarem evidência o c 1. Então, poderíamos simplificar
também a parte restante “ h+h1p”. Vamos tentar algumas simplificações, colocando em evidência
primeiro c ':

f = h c ' + h 'p c '


f = c 'h + c ' h ' p (pela propriedade comutativa)
f = c '( h + h ' p) (pela primeira propriedade distributiva)
f = c ' ( (h+h1)* (h + p )) (pela segunda propriedade distributiva - a enganadora!)
f = c ' ( (l)* (h + p)) (pela propriedade do complemento)
f = c'(h + p ) (pela propriedade da identidade)
Observe que intuitivam ente a equação sim plificada ainda
faz sentido - abrimos a porta apenas quando ela não é mantida
fechada ( c ') e (AND) ou a porta é mantida aberta (h) ou (OR)
uma pessoa está sendo detectada (p). Um circuito que im ple­
menta essa equação está mostrado na Fig. 2.24. Assim, apli­
cando as propriedades algébricas, obtivemos um circuito mais
simples. Em outras palavras, usamos matemática para simplifi­
car o circuito.
Figura 2.24 Circuito sim pli­
A sim plificação de circuitos será o foco da Seção 2.11. ficado de abertura de porta.

► EXEMPLO 2.13 Equivalência de dois sistemas de abertura automática de porta


Suponha que você encontrou um dispositivo realmente barato para ser usado em sistemas automá­
ticos de abertura de portas de correr. O dispositivo tem entradas c, h e p além de uma saída f, como
no Exemplo 2.12, mas a documentação do dispositivo diz que:
f = c'hp + c 'hp' + c1h 'p
Esse dispositivo faz o mesmo que o do Exemplo 2 .12? Uma maneira de verificar isso é ver se
podemos manipular a equação acim a transformando-a na equação do Exemplo 2.12:
f = c 'h p + c 'h p ' + c 'h 'p
f = c ' h(p + p ') + c ' h ' p (pela propriedade distributiva)
f = c 'h ( l ) + c 'h 'p (pela propriedade do complemento)
f = c 'h + c ' h ' p (pela propriedade da identidade)
f = h c 1 + h 'p c ' (pela propriedade comutativa)
Essa equação é a mesma que a original do Exemplo 2.12 e, portanto, o dispositivo deve ser­
vir. ◄

Propriedades adicionais
Vam os ex am inar algum as propriedades adicio n ais que são cham adas de teorem as porque
podem ser dem onstradas usando os postulados anteriores:

• Elementos nulos
a + 1 = 1
a * 0 = 0
E ssas propriedades devem ser bem óbvias. O valor de 1 O R q u alq u er co isa será 1, ao
passo que 0 A N D qualquer coisa será 0.
Projeto Lógico Combinacional 69

• Lei da idempotência
a + a = a
a * a = a
N ovam ente, isso deve ser bem óbvio. Q uando a é 1. então 1 + 1 = 1 e 1*1 = 1, ao passo
que quando a é O , 0 + 0 = 0 e 0*0 = 0.

• Lei da involução
(a')' = a
De novo, bem óbvia. Se a for 1, a prim eira negação dará 0, ao passo que a segunda dará
1 novam ente. De m odo sem elhante, se a for 0. a prim eira negação dará 1, ao passo que a
segunda dará 0 novam ente.

• Lei de DeMorgan
(a + b ) 1 = a 'b '
(a b )' = a' + b '
E ssas p ropriedades não são tão óbvias. A s suas d em o n straçõ es estão no A pêndice A.
A qui, am bas as equações serão analisadas intuitivam ente. C onsidere (a + b ) 1 = a ' b ' .
O prim eiro m em bro da equação será 1 apenas se o valor de (a + b) for 0, o que ocorre
apenas quando am bos a A ND b são 0, significando a ' b ' - o segundo m em bro da equação.
De m odo sem elhante, considere ( a b ) 1 = a ' + b '. O prim eiro m em bro será 1 apenas se
o valor de (ab) for 0, significando que ao m enos um a das variáveis de a OR b deverá ser
0, ou a ' + b 1 - o segundo m em bro. A lei de D eM organ pode ser enunciada da seguinte
m aneira: o com plem ento de um a som a é igual ao produto dos com plem entos; o co m p le­
m ento de um produto é igual à som a dos com plem entos. A lei de D eM organ é am p la­
m ente usada. Portanto, gaste um tem po agora para com preendê-la e m em orizá-la.
Vamos aplicar algum as dessas propriedades adicionais a m ais exem plos.

► EXEMPLO 2.14 Aplicando as propriedades adicionais


Converta a equação F = ab(c+d) para a forma de soma de produtos.
A propriedade distributiva permite-nos expandir a equação produzindo F = abc + abd.
Converta a equação F = w x(x'y + zy ' + xy) para a forma de som a de produtos e faça as
simplificações.
A propriedade distributiva permite-nos expandir a equação produzindo wx ( x 1y+zy1+ xy) =
wxx'y + wxzy' + wxxy. Essa equação está na forma de soma de produtos. A propriedade
do com plem ento permite-nos substituir wxx'y por w*0*y, e a propriedade do elemento nulo
significa que w*0*y = 0. A propriedade da idempotência permite-nos substituir wxxy por wxy
(porque xx = x ). A equação resultante é 0 + wxzy' + wxy = wxzy' + wxy.
• Demonstre que x ( x ' + y ( x '+ y ')) nunca pode ter valor 1.
A aplicação repetida da prim eira propriedade distributiva produz: x x '+ x y (x '+ y ') = xx'
+ xyx' + x y y '. A propriedade do com plem ento diz-nos que xx'= 0 e y y '= 0 , resultando
0 + 0*y + x*0. A propriedade do elem ento nulo leva a 0 + 0 + 0, que é igual a 0. Assim, a
equação sempre tem valor 0, independentemente dos valores reais de x e y.
• Determine a função oposta (NOT) de F = (a b 1 + c).
A função desejada é G = F' = ( a b '+ c ) '. A lei de D eM organ fornece G = ( a b ' ) ' * c ' .
A plicando novam ente a lei ao prim eiro term o, obtém -se G = ( a ' + ( b ' ) ' ) * c ' . A pro­
priedade da involução dá (a ' + b) * c '. Finalm ente, a propriedade distributiva fornece
G = a 1c 1 + b c \ ◄
70 Sistemas Digitais

► EXEMPLO 2.15 Aplicando a lei de DeMorgan a uma luz de sinalização de um lavatório de avião
As aeronaves normalmente têm um sinal luminoso que indica
se um lavatório (banheiro) está desocupado. Suponha que um
avião tenha três lavatórios. Cada lavatório tem um sensor que
produz 1 em sua saída quando a porta do lavatório está tran­
Figura 2.25 B loco de sinal
cada e 0, em caso contrário. Nosso circuito terá três entradas
lum inoso de um lavatório de
a. b e c, vindas desses sensores, como mostrado na Fig. 2.25.
Se qualquer uma das portas estiver destrancada (podendo ser avião.
uma, duas ou todas as três portas destrancadas), poderíamos
acender o sinal de “Desocupado” fazendo a saída do circuito
S ir para 1.
Tendo compreendido isso, vemos que a função OR 6 ade­
quada ao problema, já que o operador OR produz 1 quando
qualquer uma de suas entradas está em 1, independentemente
de quantas entradas estão em 1. Começamos escrevendo uma
equação para S. O valor de S deverá ser 1 se a for 0, ou b for
0, ou c for 0. Dizer que a 6 0 é o mesmo que dizer a '. Desse
modo, a equação de S ê:
S = a1 + b' + c' Figura 2.26 C ircuito de sinal
lum inoso de um lavatório de
Traduzimos a equação no circuito da Fig. 2.26.
Podemos aplicar a lei de DeMorgan (ao contrário) á equa­ avião.
ção observando que ( a b c ) 1 = a ' + b' + c1. Desse modo, pode­
mos substituir a equação por:
S = (a b c )'
O circuito para a equação está na Fig. 2.27.

Figura 2.27 C ircuito após a


aplicação da lei de DeMorgan.

► EXEMPLO 2.16 Demonstrando uma propriedade do sistema de porta de correr automática


O seu chefe quer de você a prova de que, no circuito de porta de correr autom ática do Exemplo
2.12, 6 garantido que a porta ficará fechada quando supostam ente ela for obrigada a perm ane­
cer fechada, ou seja, quando c = 1. Se a função f = c ' (h+p) descrever a porta de correr, você
poderá dem onstrar que a porta perm anecerá fechada ( f = 0) usando as propriedades da álgebra
booleana:
f = c'(h + p )
Seja c = 1 (porta obrigada a perm anecer fechada)
f = 1' (h+p)
f = 0(h+p)
f = 0h + 0p (pela propriedade distributiva)
f = 0 + 0 (pela propriedade dos elementos nulos)
f = 0
Portanto, não interessando quais sejam os valores de h e p, se c = 1, então f será igual a 0 - a
porta permanecerá fechada. M

► EXEMPLO 2.17 Porta de correr automática com polaridade oposta


No Exemplo 2.12, computamos a função de abertura de uma porta de correr automática como:
f = c'( h + p )
Projeto Lógico Combinacional 71

► O SEU PROBLEMA É O MEU PROBLEMA

O uso da álgebra booleana em projeto digital é um ao problema novo. Imediatamente, o novo problema
exemplo do poderoso conceito geral de transforma­ pode se beneficiar de talvez décadas de trabalho
ção de um problema em outro. Ao transformar um voltadas à resolução do problema antigo. A trans­
problema novo (projeto digital) em um problema formação de um problema em outro é extremamente
antigo (representação lógica), as soluções (álgebra comum em engenharia, especial mente cm computa­
booleana) do problema antigo podem ser aplicadas ção. Atinai de contas, por que reinventar a roda?

Suponha que o controle de sua porta automática tenha uma entrada com a polaridade oposta.
Assim, teremos: 0 significa abrir a porta ao passo que 1 significa fechar. Podemos desenvolver a
função g que abre a porta e simplificá-la como segue:

9 = f'
g = (c1(h + p )) 1 (substituindo a equação em f)
g = (c')' + (h + p ) 1 (pela lei de DeMorgan)
g = c + (h + p )1 (pela lei da involução)
g = c + h *p * (pela lei de DeMorgan) ◄

► 2.6 REPRESENTAÇÕES DE FUNÇÕES BOOLEANAS


U m a fu n çã o booleana c um mapeamento d e c a d a um a d as co m b in a ç õ e s p o ssív eis de va­
lores d as variáveis d a função (as en trad as) para ou 0 ou 1 (a saíd a). Um ex em p lo d e um a
fu n ção b o o le a n a d e sc rita em p o rtu g u ês co m u m é um a fu n ção F das variáv eis a e b , tais
q ue a fu n ção dá co m o saída 1 q u an d o a é 0 e b é 0, ou q u an d o a é 0 e b é 1. H á d iv ersas
o u tras re p re sen ta ç õ e s m elh o res d o q u e a d e sc riç ã o em p o rtu g u ê s d e um a fu n ção b o o le ­
ana, in clu in d o eq u açõ es, c irc u ito s e tab elas-v erd ad e, co m o m o strad o na Fig. 2.28. C ad a
rep resen tação tem su as p ró p rias vantagen s e d e sv an tag en s e c ad a um a é útil em d ife re n te s
m o m en to s d u ran te o p ro jeto . M esm o assim , as rep re sen ta ç õ*e s, p o r m ais d ife re n te s q u e
p areçam en tre si, rep resen tam ex atam en te a m esm a fu n ção . E c o m o a rep resen tação , sob
d iferen tes form as, d e um a receita em p artic u la r de b isco ito s de ch o co late: escrita, fo to g rá ­
fica ou m esm o em fo rm a d e vídeo. N ão in teressa co m o a re c e ita <5 re p re sen ta d a , trata-se
da m esm a receita.

Português 1: "F dá uma saída 1 quando a é 0 e b é 0, ou quando a é 0 e b é 1."


Português 2: "F dá uma saída 1 quando a é 0 independentemente
(a) \ do valor de b."
>M a b F
0 0 1
Equação 1: F(a,b) = a'b’ + a'b
0 1 1
Equação 2
1 0 0
(b)
1 1 0

Tabela-verdade
Figura 2.28 Sete representações de
(d)
exatamente a mesma função F(a,b):
(a) duas descrições em português,
(b) duas equações, (c) dois circui­ A função F
tos e (d) uma tabela-verdade.
72 Sistemas Digitais

Equações
U m a m aneira de se representar um a função booleana é usando um a equação. U m a equação
é um enunciado m atem ático que iguala um a expressão a outra. F (a ,b ) = A ' b ' + a ' b é u m
exem plo de equação. O segundo m em bro da equação 6 referido freqüentem ente com o sendo
um a expressão , cujo valor pode ser 0 ou 1.
V im o s q ue d ife re n te s e q u a ç õ e s podem re p re se n ta r a m esm a fu n ção . A e q u a ç ã o
F (a ,b ) = a ' b ' + a ' b representa a m esm a função que F (a ,b ) = a 1. A m bas as equações rea­
lizam exatam ente o m esm o m apeam ento dos valores de entrada em valores de saída - escolha
quaisquer valores de entrada (por exem plo, a = O e b = 0) e am bas as equações irão transfor­
m ar esses valores de entrada no m esm o valor de saída (a = 0 e b = 0 serão m apeados para
F = 1 por am bas as equações).
U m a vantagem dc um a equação ser representada com o função booleana, em com paração
a outras representações, é que podem os facilm ente m anipular essa equação usando as p ro ­
priedades da álgebra booleana. Isso nos capacita a sim plificar um a equação, provar que duas
equações representam a m esm a função, dem o n strar propriedades relativas a um a função, e
mais.

Circuitos
U m a segunda form a de se representar um a função booleana e usando um circuito com portas
lógicas. Um circuito 6 um a interconexão de com ponentes. C om o os com ponentes, portas ló­
gicas, têm um m apeam ento predefm ido entre valores de entrada e valores de saída e com o os
fios apenas transm item os valores sem alterá-los, um circuito descreve um a função.
V im os que diferentes circuitos podem representar a m esm a função. Os dois circuitos da
Fig. 2.28 representam am bos a m esm a função F. O circuito inferior usa m enos portas m as a
função ê exatam ente a m esm a que a do circuito superior.
U m a vantagem de se representar um circuito com o função booleana, em com paração a
outras representações, é que um circuito pode representar a im plem entação física real de um a
função booleana e, em ultim a análise, o nosso objetivo é a im plem entação física de circuitos
digitais. U m a outra vantagem é que um circuito desenhado graficam ente pode perm itir que as
pessoas entendam um a função de form a rápida e fácil.

Tabela-verdade
U m a terceira m an eira de se re p re se n ta r um a fu n ção b o o le a n a c Saída
Entradas
usan d o um a tabela-verdade. A c o lu n a e sq u e rd a d e um a tab ela-
a b F
verdade lista as variáveis de en trad a e m o stra todas as combina­
0 0
ções possíveis de valores para essas entradas , u san d o um a linha
0 1
para cad a co m b in ação , com o está m o strad o na Fig. 2.29. A coluna
1 0
d ireita de um a tab ela-v erd ad e lista então o valor (1 ou 0) de saída 1 1
da função, co rre sp o n d en te à co m b in a ç ã o dos valores de en trad a
d a q u e la linha em p articu lar, co m o foi m o stra d o na Fig. 2.28(d). Figura 2.29 E stru ­
Q u alq u er fu n ção d e duas variáveis terá essas q u atro co m b in açõ es tura da tabela-verdade
de en tra d a na c o lu n a esq u erd a. A s p esso as u su alm en te listam as de uma função F(a.b)
co m b in açõ es de en trad a em ordem d e valores b in ário s crescen tes de duas entradas.
(00 = 0, 01 = 1, 10 = 2 e 11 = 3 ), co m o fizem os antes. N o en tan to ,
po d eríam o s ter listad o as co m b in açõ es em q u a lq u e r o rd em , d esd e que to d as as c o m b in a ­
çõ es p o ssív eis fossem listad as. P ara q u a lq u e r c o m b in a ç ã o d o s valores de e n tra d a, (p o r
exem plo, a = 0 c b = 0), sim p lesm en te p recisam o s o lh ar o valor co rresp o n d en te na co lu n a
Projeto Lógico Combinacional 73

de saída (no caso de a = 0 e b = 0, a saíd a m ostrada na Fig. 2.28(d) é 1) para d eterm in ar


a saída da função.
A Fig. 2.30 m ostra as estruturas das tabelas-verdade de funções de duas, três c quatro
entradas.

a b F a b c F a b c d F
0 0 0 0 0 0 0 0 0
0 1 0 0 1 0 0 0 1
1 0 0 1 0 0 0 1 0
1 1 0 1 1 0 0 1 1
1 0 0 0 1 0 0
(a)
1 0 1 0 1 0 1
1 1 0 0 1 1 0
1 1 1 0 1 1 1
1 0 0 0
(b)
1 0 0 1
1 0 1 0
Figura 2.30 Estruturas de tabelas-verdade de fun­ 1 0 1 1
ções: (a) F(a.b) de duas entradas, (b) F(a,b,c) de três 1 1 0 0
entradas e (c) F(a,b,c,d) de quatro entradas. A de­ 1 1 0 1
terminação de uma função específica envolveria o 1 1 1 0
preenchim ento da coluna de F mais à direita com 1 1 1 1
valores 0 ou 1 em cada linha. (c)

A s tab elas-v erd ad e não são en co n trad as Par de genes Resultado


apenas em p ro jeto d ig ital. Se você estudou
M P F 1
b iologia b ásica, provavelm ente viu um tipo
azul azul azul
de tabela-verdade que descreve o resultado de
azul castanho castanho
vários pares de genes. Por exem plo, a tabela à
castanho azul castanho
direita m ostra os resultados de diferentes genes
castanho castanho castanho
de cor de olhos. C ada pessoa tem dois genes de
cor de olhos, um da m ãe (rotulado M) e outro do
pai (rotulado P). A ssum indo apenas dois valores possíveis para cada gene, azul e c a sta n h o , a
tabela lista todas as com binações possíveis de pares de genes de co r de olhos que uma pessoa
pode ter. Para cada com binação, a tabela fornece o resultado. A penas quando um a pessoa tem
dois genes de olhos azuis é que ela terá olhos azuis. Se ela tiver um ou m ais genes de olhos
castanhos, o resultado será olhos castanhos (devido ao gene de olhos castanhos ser dom inante
em relação ao gene de olhos azuis.)
D iferentem ente de equações e circuitos, um a função booleana tem apenas uma represen­
tação por tabela-verdade.
Um a vantagem de um a tabela-verdade com o form a de representar um a função booleana,
em com paração a outras form as, ê o fato de que um a função pode ter apenas um a represen­
tação na form a de tabela-verdade. D esse m odo, podem os converter quaisquer representações
de funções booleanas em tabelas-verdade, para determ inar se representações diferentes re­
presentam a m esm a função - se elas representarem a m esm a função, as suas tabelas-verdade
serão idênticas. A lém disso, as tabelas-verdade são tam bém bem intuitivas para as pessoas, já
que um a tabela-verdade m ostra claram ente a saída para cada en trad a possível. D esse m odo,
observe que na Fig. 2.8 usam os tabelas-verdade para descrever de m aneira intuitiva o co m ­
portam ento das portas lógicas básicas.
74 Sistemas Digitais

Um a desvantagem das tabelas-verdade é que, para um núm ero grande de entradas, o nú­
m ero de linhas pode ser extrem am ente grande. D ada um a função com n entradas, o núm ero
de com binações de entrada é 2". U m a função com 10 entradas teria 2 10 = 1024 com binações
possíveis de entrada - você não pode ver quase nada em um a tabela com 1024 linhas. Um a
função com 16 entradas teria 65.536 linhas em sua tabela-verdade.

► EXEMPLO 2.18 Obtendo uma função na forma de tabela-verdade


TABELA2.2 Tabela-verdade Crie uma tabela-verdade para descrever uma função que detecta se o valor
da função igual ou maior a 5 de uma entrada de três bits. representando um número binário, é igual ou
maior que 5. A Tabela 2.2 mostra uma tabela-verdade da função. Primeiro,
a b c F listamos todas as combinações possíveis dos três bits de entrada, que desig­
0 0 0 0 namos por a. b e c. A seguir, na coluna de saída, colocamos um 1 nas linhas
em que as entradas representam 5, 6 ou 7, em binário. Nas demais linhas,
0 0 1 0
colocamos Os. ◄
0 1 0 0
0 1 1 0
1 0 0 0
1 0 1 1
1 1 0 1
1 1 1 1

Convertendo entre representações de funções booleanas


D adas as representações anteriores, podem os ver o projeto
lógico com binacional com o sendo a definição de um a fun­
ção booleana apropriada para se dar um a solução a um pro­ Equações V . 2 _ ^ Circuitos
blem a em particular e, em seguida, a obtenção da represen­
^
"*^ 4 6
)
) (
tação do circuito dessa função. A definição da função boo­
leana apropriada requer que pensem os não apenas em com o
a função deve ser, m as tam bém que capturem os essa função Tabelas-verdade
de algum a form a - norm al m ente com o equação ou tabela- Figura 2.31 Conversões pos­
verdade. E ntão, deverem os transform ar essa representação síveis de uma representação de
da função obtida em circuito. D esse m odo, o projeto lógico função booleana em outra.
com bi nacional requer que saibam os com o converter as re­
presentações da função booleana em outras. Para as três representações que discutim os até
agora (equações, circuitos e tabelas-verdade), há seis conversões possíveis entre elas, que
passarem os a descrever a partir de agora (Fig. 2.31).

1. Equações emcircuitos
A conversão de um a equação em circuito pode ser feita facilm ente usando um a porta A ND
para cada operador A N D , um a p orta O R para cada operador O R e um a porta N O T para cada
operador NOT. Já dem os diversos exem plos de tais conversões na Seção 2.4.

2. Circuitos emequações
A conversão de um circuito em um a equação pode ser feita com eçando com as entradas do
circuito e, então, escrevendo a saída de cada porta com o sendo um a expressão que contém
as entradas da porta. A expressão para a últim a porta, anterior à saída, representa a expressão
Projeto Lógico Combinacional 75

da função do circuito. Por exem plo, suponha que nos


seja fornecido o circuito da Fig. 2.32. Para converte-
lo em um a equação, com eçam os com o inversor, cuja
saída será c '. C ontinuam os com a porta O R - o b ­
serve que não podem os determ inar a saída da porta
A N D até que tenham os criado expressões para todas
as entradas daquela porta. A saída da porta O R é h+p.
Figura 2.32Convertendo um circuito
Final m ente, escrevem os a saída da A N D com o sendo
em uma equação.
c '( h + p ) . A ssim , a equação F ( c ,h ,p ) = c '(h + p ) re­
presenta a m esm a função que o circuito.

3. E q u a ç õ e s em ta b e la s -v e rd a d e
A conversão de um a equação em um a tabela-verdade pode ser feita
preparando prim eiro uma tabela-verdade apropriada para o núm ero
de variáveis de entrada da função e, em seguida, calculando o valor
do segundo m em bro da equação para cada com binação de valores de
entrada. Por exem plo, para converter a equação F (a ,b ) = a ' b 1 + a ' b
em um a tabela-verdade, iríam os preparar prim eiro um a tabela-ver­
dade para um a função de duas entradas, com o está m ostrado na
Fig. 2.30(a). A seguir, calcularíam os o valor do segundo m em bro F ig u ra 2.33 T a­
da equação para a com binação de valores de entrada de cada linha, b e la -v e rd a d e p ara
com o segue: F(a,b)=a’b’+a’b.
a=0 e b=0, F = 0 '* 0 ' + 0 '* 0 = 1*1 + 1*0 = 1 + 0 = 1

• a=0 e b = l, F = 0 '* 1 ' + 0 '* 1 = 1*0 + 1*1 = 0 + 1 = 1

• a = l e b=0, F = 1 '* 0 ' + 1 1*0 = 0*1 + 0*0 = 0 + 0 = 0

• a = l e b = l, F = 1 '*1 ' + 1'*1 = 0*0 + 0*1 = 0 + 0 = 0

Portanto, iríam os preencher a coluna d ireita da tabela com o m ostrado na Fig. 2.33. O b ­
serve que aplicam os as propriedades da álgebra booleana (principalm ente as propriedades da
identidade e dos elem entos nulos) para avaliar as equações.
O bserve que a conversão da equação F ( a ,b ) = a ' em um a tabela-verdade produz exata-
m ente a m esm a tabela-verdade m ostrada na Fig. 2.33. Em particular, avaliando o segundo
m em bro dessa equação, usando a com binação de valores de entrada de cada linha, obtém -se:

• a=0c b=0, F = 0' = 1


Entradas Saída
• a=0 e b = l, F = 0 1= 1 a b a ’ b’ a' b F
• a = le b=0, F = 1' = 0 0 0 1 0 1
0 1 0 1 1
• a = lc b = l, F = l 1= 0 1 0 0 0 0
A lgum as pessoas acham útil criar colunas inter­ 1 1 0 0 0

m ediárias na tabela-verdade para com putar os valo­


Figura 2.34 T abela-verdade para
res interm ediários d a equação. A ssim , preenche-se
F(a,b)=a'b+a'b com colunas interme­
cada coluna da tabela indo da esquerda para a direita
diárias.
e desloca-se para a coluna seguinte som ente após to ­
das as linhas da coluna corrente estarem preenchidas. Um exem plo para a equação F (a ,b ) =
a 1b ' + a ' b está m ostrado na Fig. 2.34.
76 Sistemas Digitais

4. Tabelas-verdade emequações Entradas Saída Termo


Para converter um a tabela-verdade em um a equação,
a b F F = soma de
criam os um term o de produto para cada 1 da coluna 0 0 1 a* b'
de saída e, então, aplicam os um operador O R a to­ 0 1 1 a' b
dos os term os de produto. Para a tabela ao lado (Fig. 1 0 0
2.35), obtem os os term os m ostrados na coluna m ais à 1 1 0
direita. A plicando um a operação O R a esses term os,
obtém -se F = a 1b ' + a ' b . Figura 2.35 Convertendo uma tabela-
verdade em equação.
s. Circuitos emtabelas-verdade
Podem os converter um circuito com binacional em um a tabela-verdade, convertendo prim eiro
o circuito em um a equação (descrito anteriorm ente) e, então, convertendo a equação em um a
tabela-verdade (tam bém descrito anteriorm ente).

6. Tabelas-verdade emcircuitos
Podem os converter um a tabela-verdade em um circuito com binacional, convertendo prim eiro
a tabela-verdade em um a equação (descrito anteriorm ente) e, então, convertendo a equação
em um circuito (tam bém descrito anteriorm ente).

► EXEMPLO 2.19 Circuito gerador de paridade começando com uma tabela-verdade


Nada é perfeito e os circuitos digitais não são exceções. Algumas vezes, um bit em um fio altera-se
quando não deveria. Assim, um 1 tom a-se um 0. ou um 0 toma-se um 1. Por exemplo, um 0 pode
estar se deslocando ao longo de um fio quando subitamente um ruído elétrico surge do nada e muda
o 0 para 1. Mesmo que possamos diminuir a probabilidade de tais erros, possivelmente usando lios
com boa isolação, não podemos evitá-los completamente nem detectar e corrigir todos eles - mas
podemos detectar alguns deles. Tipicamente, os projetistas procuram situações nas quais é provável
a ocorrência de erros, tais como dados que estão sendo transmitidos entre dois circuitos integrados
através de fios compridos - como de um computador até uma impressora através de um cabo de
impressora, ou de um computador a outro através de uma linha telefônica. Nessas situações, os
projetistas acrescentam circuitos que no mínimo tentam detectar se um erro ocorreu, caso em que o
circuito de recepção pode solicitar ao circuito de transmissão que reenvie os dados.
Um método comum de sc detectar um erro é o chamado método da paridade. Digamos que tenha­
mos 7 bits de dados que devem ser transmitidos. Acrescentamos um bit extra, chamado bit de pari­
dade, para obter um total de 8 bits. O transmissor atribuirá o valor 1 a esse bit de paridade se isso tornar
par o número total de ls - a chamada paridade par. Por exemplo, se os 7 bits de dados fossem
0000001, então o bit de paridade seria 1, o que tomará o número total de ls igual a 2 (um número par).
Ao todo, os 8 bits seriam 00000011. Se os 7 bits de dados fossem 1011111, então o bit de paridade seria
0, tomando o número total de ls igual a 6 (um número par). Os 8 bits completos seriam 10111110.
Agora, o receptor pode detectar se um bit foi alterado durante a transmissão, verificando se
há um número par de ls nos 8 bits recebidos. Se par, assume-se que a transmissão está correta. Se
ímpar, um erro ocorreu durante a transmissão. Por exemplo, se o receptor receber 00000011. assu­
miremos que a transmissão está correta e o bit de paridade poderá ser descartado, ficando 0000001.
Assuma, em vez disso, que ocorreu um erro e que o receptor recebeu 10000011. Vendo o número
ímpar de ls, o receptor sabe que ocorreu um erro - observe que o receptor não sabe qual bit é o
errado. Do mesmo modo, 00000010 representaria um erro também. Observe que, nesse caso, o
erro ocorreu no bit de paridade mas o receptor não sabe onde isso ocorreu.
Vamos descrever uma função que gera um bit de paridade par P para três bits de
dados a, b e c. Com eçar com uma equação é trabalhoso - qual é a equação? Neste
Neste exemplo, uma exemplo, com eçar com uma tabela-verdade é a escolha natural, como mostrado
escolha mais natural na Tabela 2.3. Para cada configuração de bits de dados (isto é, para cada linha da
é começar com uma tabela-verdade), atribuím os ao bit de paridade um valor que torna par o número
tabela-verdade, do que total de ls. Da tabela-verdade, obtem os então a seguinte equação para o bit de
com uma equação. paridade:
Projeto Lógico Combinacional 77

P = a ' b ' c + a ' b c ' + a b 'c ' + abc TABELA 2.3 P aridade par
Então, poderíamos projetar o circuito usando quatro portas AND para 3 bits de dados
e uma OR. a b c p
Observe que paridade par não significa certeza de que os dados
estão corretos (observe que fomos cuidadosos ao dizer anteriormente 0 0 0 0
que a transmissão era “assum ida” correta quando o bit de paridade 0 0 1 1
estava correto). Em particular, se dois erros ocorrerem em bits dife­
0 1 0 1
rentes, então a paridade ainda será par. Por exemplo, o transmissor
pode enviar 0110 mas o receptor pode receber 1111. O valor 1111 0 1 1 0
tem paridade p a re assim parece correto. Métodos mais poderosos de
1 0 0 1
detecção de erros são possíveis para se detectar erros múltiplos como
esse, mas ao preço de se acrescentar bits extras. 1 0 1 0
A paridade ím par é também um tipo com um de paridade - o
1 1 0 0
valor do bit de paridade torna ím par o número total de ls. Não há
nenhuma diferença de qualidade entre as paridades par e ím par - o 1 1 1 1
decisivo é simplesmente o transmissor e o receptor usarem ambos o
mesmo tipo de paridade, par ou ímpar.
Uma representação popular de letras e números é conhecida como ASCII, a qual codifica cada
caracter com 7 bits. O código ASCII acrescenta um bit para a paridade, perfazendo um total de 8
bits por caracter. A

► EXEMPLO 2.20 Convertendo um circuito combinacional em uma tabela-verdade


Converta o circuito mostrado na Fig. 2.36(a) em uma tabela-verdade.
Com eçam os transform ando o circuito em uma equação. Iniciando com as portas mais pró­
xim as das entradas - neste caso, a porta AND e o inversor mais à esquerda - iremos rotular a
saída de cada porta na forma de uma expressão de suas entradas. Vamos rotular a saída da porta
AND mais à esquerda com o termo ab, por exemplo. De modo semelhante, rotulamos a saída do
inversor mais à esquerda com c '. Continuando através das portas do circuito, rotulamos a saída do
inversor mais à direita com ( a b ) 1. Finalmente, rotulamos a saída da porta AND mais à direita com
( a b ) ' c 1, o que corresponde à equação booleana de F. O circuito com as saídas de todas as portas
rotuladas está mostrado na Fig. 2.36(b).
Usando a equação booleana. podemos construir agora a tabela-verdade do circuito combinacio­
nal. Como nosso circuito tem três entradas - a. b e c - há 2}= 8 combinações possíveis de entradas
(isto é, abc = 000,001,010,011,100,101,110,111). Desse modo, nossa tabela-verdade tem as oito
linhas mostradas na Fig. 2.37. Para cada combinação de entradas, calculamos o valor de F e preen­
chemos a casa correspondente na tabela-verdade. Por exemplo, quando a = 0, b = 0 e c = 0, então
F é (0 0 )' * 0 1 = ( 0 ) 1*1 = 1*1 = 1. Calculamos a saída do circuito para as combinações restantes
de entrada usando uma tabela-verdade com valores intermediários, mostrada na Fig. 2.37. ◄

Figura 2.36 (a) Circuito combinacional e (b) circuito com as expressões de saída rotuladas das
portas.
78 Sistemas Digitais

Entradas Saídas
a b c ab (ab)1 c1 F
0 0 0 0 1 1 1
0 0 1 0 1 0 0
0 1 0 0 1 1
I1
0 1 1 0 1 0 0
1 0 0 0 1 1 11
1 0 1 0 1 0 0
1 1 0 1 0 1 0
1 1 1 I 1 0 0 0

Figura 2.37 Tabela-verdadc da equação do circuito.

Representação padrão e forma canônica


D issem os antes que, em bora haja m uitas representações possíveis usando equações e circu i­
tos para a m esm a função booleana, há apenas um a representação que usa tabela-verdade para
um a função booleana. A s tabelas-verdade, portanto, constituem um a representação padrão
de um a função - para qualquer função, pode haver m uitas equações e circuitos possíveis, mas
h á apenas um a tabela-verdadc. A representação por tabela-verdade é única.
U m uso d a re p re sen ta ç ã o p ad rão d e um a fu n ção b o o le a n a é na c o m p a ra ç ã o de d u as
fu n çõ es p ara ver se são eq u iv alen tes. S u p o n h a q u e você q u ise sse v erificar se d u as e q u a ­
çõ es b o o le a n a s são eq u iv alen tes. U m a m an eira se ria te n ta r m a n ip u la r um a d e la s ate q u e
ficasse igual à outra, co m o fizem os no caso da porta de c o rre r a u to m ática d o n o sso E x e m ­
plo 2.1 3 . N o e n ta n to , su p o n h a q u e não fo m o s b e m -su c e d id o s em to rn á -la s ig u ais - foi
p o rq u e na realid ad e elas n ão são a m esm a, ou p o r q u e sim p le sm e n te não m an ip u lam o s a
e q u a ç ã o o su fic ie n te ? C o m o p o d e m o s sa b e r se as d u a s e q u a ç õ e s não sã o re a lm e n te a
m esm a?
U m a m a n e ira c o n c lu siv a d e v e rific a r se
F = ab + a ' F= a' b’+
du as fu n çõ es são a m esm a é c ria r u m a tabela- a’ b + ab
v e rd a d e p a ra c a d a u m a e, e n tã o , v er se as
a b F a b F
ta b e la s-v e rd a d e são id ê n tic a s. A ssim , para 0 0 1 0 0 1
d e te rm in a r se F = ab + a ' é e q u iv a le n te a 0 1 1 0 1 1
F = a ' b ' + a ' b + ab, p o d e ría m o s g e ra r as 1 0 0 1 0 0
su as ta b e la s-v e rd a d e , u san d o o m éto d o d e s­ 1 1 1 1 1 1
crito an terio rm e n te para o b te r o valo r d a fun­
ção em cad a linha de saíd a, c o m o m o stra d o
à direita.
V em os q ue as du as funções são de fato
equivalentes, porque as saíd as são idênticas F = ab + a i F = (a+b)'
para cada com binação de entradas. A gora, va­ a b F a b F
m os verificar se F = ab + a ' é equivalente a 0 0 1 0 0 1
F = ( a + b ) 1 com parando as tabelas-verdade. 0 1 1 0 1 0
C o m o vem os claram en te à d ireita, estas 1 0 0 1 0 0
duas funções não são equivalentes. A com para­ 1 1 1 1 1 o l
ção das duas tabelas não deixa dúvidas.
Projeto Lógico Combinacional 79

E m bora a com paração de tabelas-verdade funcione bem quando um a função tem apenas
2 entradas, o que acontece se a função tiver 5 entradas, ou 10 ou 32? A criação de tabelas-
verdade torna-se cad a vez m ais trabalhosa, ficando em m uitos casos totalm ente fora da rea­
lidade, porque o núm ero de linhas de um a tabela-verdade é igual a 2", onde n ó o núm ero de
entradas. A função 2”cresce m uito rapidam ente. O valor de 2 32 é aproxim adam ente 4 bilhões,
por exem plo. N ão podem os esp erar co m p arar realisticam en te 2 tabelas com 4 bilhões de
linhas cada.
N o entanto, em m uitos casos, o núm ero de l s de saída em um a tabela-verdade pode ser
m uito pequeno cm com paração ao núm ero de Os de saída. Por exem plo, considere um a fun­
ção G de 5 variáveis a, b, c, d e e: G = abcd + a 1bcde. U m a tabela-verdade dessa função teria
32 linhas e apenas três ls na coluna de saída - um 1 de a 1bcde e dois ls de abcd (que abrange
as linhas correspondentes a abcde e a b c d e '). Isso nos leva à questão:

H á um a representação m ais com pacta, m as ainda padrão , de um a função booleana?

Forma canônica - equação da soma de mintermos


A resposta para a questão anterior é “sim ” . A chave da questão está em se criar um a represen­
tação padrão que descreve apenas as situações em que a saída da função é 1, assum indo-se
que nas dem ais situações ela ê 0. U m a equação, com o G = abcd + a ' bcde, ó na realidade
um a representação que descreve apenas as situações em que G é 1, m as essa representação
não é única, isto ê, a representação não ê padrão. Portanto, querem os definir a form a padrão
de equação booleana que é conhecida com o form a canônica.
Você já viu form as canônicas na álgebra com um . Por exem plo, a form a canônica de um
polinóm io de grau dois é: ax ? + bx + c. Para verificar se a equação 9x? + 3x + 2 + 1 é
equivalente à equação 3 * (3x + 1 + x ), passam os cad a um a delas para a form a canônica,
resultando 9x2 + 3x + 3 para am bas as equações.
U m a das form as canônicas para um a função booleana ó conhecida com o som a de m in­
term os. Um mintermo de um a função ó um term o de produto que contém todas as literais
da função exatamente uma vez , seja na form a afirm ad a ou na co m plem entada. A função
F ( a , b , c ) = a ' b c + a bc ' + ab + c tem quatro term os. O s prim eiros dois term os, a 1bc e
abc ' , são m interm os. O terceiro term o, ab, não 6 um m interm o pois c não está presente. Do
m esm o m odo, o quarto term o, c, não ó um m interm o, já que nem a nem b aparecem nesse
term o. U m a equação estará na form a de soma de mintermos se a equação estiver na form a de
um a som a de produtos e se cada produto for um m interm o.
A conversão de qualquer equação para a form a canônica de som a de m interm os pode ser
realizada seguindo sim plesm ente alguns passos:

1. Prim eiro, m anipulam os a equação até que ela esteja na form a de um a som a de produ­
tos. Suponha que nos seja dada a equação F ( a , b , c ) = (a+b) (a '+ a c ) b . N ós a m anipu­
lam os com o segue:

F = (a+b)(a'+ac)b
F = (a + b )(a 'b + a c b ) (pela propriedade distributiva)
F = a ( a ' b + a c b ) + b ( a ' b +a c b ) (propriedade distributiva)
F = a a ' b + aacb + b a ' b + bacb (propriedade distributiva)
F = 0*b + acb + a 1b + acb (com plem ento, com utativa, idem potência)
F = acb + a 'b + acb (elem entos nulos)
F = acb + a 'b (idem potência)
80 Sistemas Digitais

2 . Segundo, expandim os os term os até se tornarem m interinos:

F = acb + a 'b
F = acb + a ' b * l (identidade)
F = acb + a ' b * ( c + c ' ) (com plem ento)
F = acb +a ' b c + a 1b c 1 (distributiva)

3 . (Passo opcional) Por um a questão de clareza, dispom os as literais d entro de cada


term o em um a ordem consistente (digam os, alfabética). Podem os dispô-las tam bém
na ordem em que apareciam em um a tabela-verdade:

F = a 1b c ' + a 1bc + abc

A gora, a eq u a ç ã o está na form a d e so m a d e m in term o s. A e q u a ç ã o está na form a de


so m a d e p ro d u to s, e c a d a term o d e p ro d u to c o n tém c a d a um a d as variáv eis e x a ta m e n te
um a vez.
Um a form a canônica alternativa é conhecida com o produto de m axterm os. Um maxtermo
é um term o de som a em que cada um a das variáveis ap arece exatam ente um a vez, seja na
form a afirm ada, seja na com plem entada, com o (a + b + c 1) para o caso de um a função de
três variáveis a, b e c. U m a equação estará na form a de produto de maxtermos se a equação
for o produto de term os de som a e se cada term o de som a for um m axterm o. Um exem plo de
função (diferente da anterior) na form a de produto de m axterm os é J ( a , b , c ) = (a + b +
c ' ) ( a ' + b ' + c 1). Para evitar confundir o leitor, não discutirem os o produto de m axterm os
além deste ponto, já que na prática a som a de m interm os é m ais com um , sendo suficiente para
os nossos propósitos.

► EXEMPLO 2.21 Comparando duas funções usando a forma canônica


Suponha que querem os determ inar se as funções G ( a , b , c , d , e ) = abed + a ' b c d e e
H( a , b , c , d , e ) = abcde + abcde' + a' bcde + a ' b c d e ( a ' + c) são equivalentes. Primeiro, con­
vertemos G para a forma de som a de mintermos:

G = abed + a' bcde


G = abcd(e+ e‘) + a' bcde
G = abcde + ab cd e1 + a' bcde
G = a' bcde + abcde' + abcde

A seguir, convertemos H para a forma de soma de mintermos:


H= abcde + abcde' + a' bcde + a ' b c d e ( a ' + c)
H= abcde + abcde' + a' bcde + a ' bc de a ' + a' bcdec
H= abcde + abcde' + a' bcde + a' bcde + a' bcde
H= abcde + abcde' + a' bcde
H= a' bcde + abcde' + abcde

Claramente, G e Hsão equivalentes.


Observe que a verificação da equivalência usando labelas-verdade teria resultado em duas
tabelas-verdade bem grandes com 32 linhas cada uma. O uso da soma de mintermos foi mais apro­
priado aqui. ◄

Representação compacta da soma de mintermos


U m a representação m ais com pacta da form a de som a de m interm os consiste em listar cada
m intcrm o com o se fosse um núm ero. C ada um desses núm eros é determ inado a partir da re­
presentação binária dos valores de suas variáveis. Por exem plo, a ' bcde corresponde a 01111,
Projeto Lógico Combinacional 81

ou 15, abcde' corresponde a 11110, ou 30, e abcde corresponde a 11111, ou 31. A ssim , po­
dem os dizer que a função H, representada pela equação:

H = a ' b c d e + abcde' + abcde

é a som a dos m interm os 15, 30 e 31, que podem ser escritos de form a com pacta com o:

H = 2 m (1 5 ,3 0,31)

O sím bolo de som atório significa a som a e, então, os núm eros dentro dos parênteses re­
presentam os m interm os que estão sendo som ados no segundo m em bro da equação.

Circuitos combinacionais de múltiplas saídas


M uitos circuitos com binacionais não só incluem m ais de um a entrada com o tam bém contêm
m ais de um a saída. A abordagem m ais sim ples para se lidar com um circuito de m últiplas
saídas é tratar separadam ente cad a saída, criando um circu ito em separado para cada um a
delas. N a realidade, os circuitos não precisam estar com pletam ente separados - eles podem
com partilhar as portas com uns. M ostrarem os com o lidar com circuitos de m últiplas saídas
por m eio de exem plos.

► EXEMPLO 2.22 Circuito combinacional de duas saídas


Projete um circuito para implementar as duas equações seguintes de três entradas a. b e c cada uma:
F = ab + c '
G = ab + bc
Podemos projetar o circuito criando dois circuitos separados, como mostrado na Fig. 2.38(a).

Figura 2.38 Circuito de múltiplas saídas: (a) tratado com o dois circuitos separados e (b) com
compartilhamento de portas.

Em vez disso, podemos observar que o termo ab é comum a ambas as equações. Assim, os dois
circuitos podem compartilhar a porta que computa ab, como mostrado na Fig. 2.38(b). ◄

► EXEMPLO 2.23 Conversor de número binário para um display de sete segmentos


M uitos eletrodom ésticos exibem um número para ser lido por nós. Exemplos desses eletrodo­
mésticos incluem relógios, fom os de microondas e secretárias eletrônicas. Um dispositivo muito
popular e simples, capaz de exibir um número de um único dígito, é o display de sete segmentos.
ilustrado na Fig. 2.39.
82 Sistemas Digitais

Figura 2.39 Display de sete segmentos: (a) ligações das entradas aos segmentos, (b) valores de
entrada para os números 0, 1 e 2, e (c) um par de displays de sele segmentos reais.

O display consiste em sete segm entos lum inosos, cada um dos quais pode ser aceso in­
dependentem ente dos dem ais. Podem os exibir o dígito desejado ativando adequadam ente os
sinais a, b, c, d, e, f e g. D esse m odo, para m ostrar o dígito 8, colocam os todos os sete sinais
em 1. Para m ostrar o dígito 1, colocam os b e c em 1.
U m circ u ito co m b in acio n al útil é um q u e co n v erte um n ú m ero b in á rio nos sin ais a-g
do display de sete seg m en to s, o qual m o strará o n ú m ero co m o um d íg ito decim al. P recisa­
m os d e q u atro bits, d ig am o s w, x, y c z, p a ra re p re sen ta r os valores b in ário s dos d ez d íg ito s
p o ssív eis de 0 a 9. A T ab ela 2.4 d escrev e a co n v ersão de c a d a n ú m ero b in á rio em sin ais
para o display de sete seg m en to s. D ecid im o s não a tiv a r n enhum sinal p ara o s n ú m ero s de
10 a 15.

Neste exemplo, come­ TABELA 2.4 T a b e la -ve rd a d e da co n ve rsã o e n tre um núm ero binário
çar com uma tabela- de 4 bits e um display de sete se gm entos
verdade, ao invés de
w X y z a b c d e f g
uma equação, é uma O
escolha mais natural. 0 0 0 0 1 1 1 1 1 1 0 Oo
0 0 0 1 0 1 1 0 0 0 0 o o
1 1 U O
o o
0 0 i 0 0 1 1 0 1

0
0

1
i

0
1

0
1

0
1

1
1

1
1

0
0

0
0

1
1

1 uo
0 1 0 1 1 0 1 1 0 1 1 o u
0 1 1 0 1 0 1 1 1 1 1
UO
o U
0 1 1 1 1 1 1 0 0 0 0
U0
1 0 0 0 1 1 1 1 1 1 1

1 0 0 1 1 1 1 1 0 1 1

1 0 1 0 0 0 0 0 0 0 0

1 0 1 1 0 0 0 0 0 0 0

1 1 0 0 0 0 0 0 0 0 0

1 1 0 1 0 0 0 0 0 0 0

1 1 1 0 0 0 0 0 0 0 0

1 1 1 1 0 0 0 0 0 0 0
Projeto Lógico Combinacional 83

Podem os criar um circuito lógico custo m izad o para im plem entar o conversor. O bserve
que a tabela acim a está na form a de um a tabela-verdade que tem saídas m últiplas (a a g). Po­
dem os tratar cada saída separadam ente, A ssim , projetam os um circuito para a, então um para
b. etc. O bservando os ls da coluna de a, obtem os a seguinte equação para a:

a = v ^ x V z ' + w ' x ' y z ' + w ' x ' y z + w ' x y ' z + w' x y z ' +
w 'x y z + w x ' y ' z ' + wx'y'z

O bservando os l s da coluna de b, obtem os a seguinte equação para b:

b = w ' x ' y ' z ' + w ' x ' y ' z + w' x ' y z ' + w' x' yz + w' xy' z'
+ w' xyz + w x ' y ' z ' + w x ' y ' z

E ntão, poderíam os prosseguir criando equações para as dem ais saídas c a g . Finalm ente,
m ontaríam os um circuito para a contendo 8 portas A N D de 4 entradas e um a porta O R de 8
entradas, um outro circuito para b contendo 8 portas A N D de 4 entradas e um a porta O R de 8
entradas, e assim por diante para c até g. N aturalm ente, poderíam os ter m inim izado a lógica
de cada equação antes de criar cad a um dos circuitos.
Você pode observar que as equações de a e b têm diversos term os em com um . Por exem ­
plo, o term o w' x ' y ' z ' aparece em am bas as equações. Sendo assim , faria sentido para am bas
as saídas com partilhar a porta A N D , que gera esse term o. O lhando a tabela-verdade, vem os
que o term o w' x ' y ' z ' é de fato necessário às saídas a, b, c, e, f e g. D esse m odo, a porta A ND
que produz tal term o poderia ser com partilhada por todas as seis saídas. De m odo sem elhante,
cada um dos dem ais term os necessários é com partilhado por diversas saídas. Isso significa
que cada porta geradora de um dado term o poderia ser com partilhada por diversas saídas.

► 2.7 0 PROCESSO DE PROJETO LOGICO COMBINACIONAL


B aseado nas seções anteriores, podem os definir um m étodo direto para projetar lógica co m ­
binacional, resum ido na Tabela 2.5.

TABELA 2.5 Procedimento de projeto lógico combinacional

Passo Descrição
q Capture a função Crie uma tabela-verdade ou equações, o que for mais natural para o problema
<2 dado, descrevendo o comportamento desejado da lógica combinacional.
Q-
Converta para Este passo é necessário apenas se você capturou a função usando uma tabela-
CNJ
O
00
equações verdade em lugar de equações. Crie uma equação para cada saída usando um
ccu
/>
operador OR com todos os mintermos daquela saída. Simplifique as equações,
Q-
se desejado.

«2 Implemente um Para cada saída, crie um circuito correspondente à equação dessa saída. (Op­
C/> circuito baseado cionalmente, pode-se compartilhar portas entre as saídas múltiplas.)
03
em portas

C ircuitos baseados cm portas lógicas, projetados de tal form a que as entradas alim entam
um a coluna de portas A N D que, por sua vez, alim entam um a porta OR sim ples, são conheci­
dos com o implementações lógicas de dois níveis.

► EXEMPLO 2.24 Detector de um padrão composto por três 1s


Queremos implementar um circuito que pode detectar se um padrão de, no mínimo, três ls adjacen­
tes ocorre em algum ponto de uma entrada de 8 bits. Nesse caso, um 1 será produzido na sua saída.
84 Sistemas Digitais

As entradas são a, b. c, d, e, f , g e h, e a saída é y. Assim, para uma entrada abcdefgh = 00011101,


y deve ser 1, já que há ires ls adjacentes (nas entradas d. e e f) . Para uma entrada 10101011, a saída
deve resultar 0, porque não há três ls adjacentes em lugar algum. Uma entrada 11110000 deve re­
sultar em y = 1, já que a presença de mais de três ls adjacentes lambem deve produzir 1 de saída.
Esse circuito é um exemplo extrem am ente simples de uma classe geral de circuitos conhecida
como detectores de padrões. Os detectores de padrões são largamente usados, por exemplo, no
processamento de imagens para detectar coisas, como pessoas ou tanques, em uma imagem digita­
lizada de vídeo, ou para detectar falas específicas em uma sequência de áudio digitalizado.

Neste exemplo, come­ Passo ls Capture a função. Poderíam os capturar a função na forma de uma ta­
çar com uma equação, bela-verdade bastante grande, listando todas as 256 combinações de en­
em vez de uma tabela- tradas e atribuindo 1 à saída y em cada linha onde ocorrem pelo menos
verdade, é uma escolha três ls adjacentes. Entretanto, um método mais simples para capturar
mais natural. essa função em particular 6 criar uma equação que especifica as ocor­
rências possíveis de três ls adjacentes. Uma possibilidade c a b c =l l l .
O utra é bcd= 111. De modo sem elhante, quando cde= 111, d e f = 111,
e fg = 111 ou f g h = l l l , devemos gerar uma saída 1. Para cada possibili­
dade, os valores das outras entradas não interessam. Assim, se a bc =l l l ,
geramos um 1, independentemente dos valores de d, e, f , g e h. Desse
modo, uma equação que descreve y c simplesmente:
y = abc + bed + ede + d e f + e fg + fgh
Passo 2: Converta para equações. Podemos desconsiderar esse passo, pois já temos uma equação.
Passo 3: Implemente um circuito baseado em portas. Não 6 possível fazer sim plificação al­
guma na equação. O circuito resultante está mostrado na Fig. 2.40.

Figura 2.40 Detector do padrão de três ls. M

► EXEMPLO 2.25 Contador de número de 1s

Neste exemplo, come­ Queremos projetar um circuito que conta o número de ls presentes em três entradas
çar com uma ta bela- a, b e c e, como saída, fornece esse número em binário, por meio de duas saídas y e
verdade, em vez de z. A entrada 110 tem dois ls e, nesse caso, o nosso circuito deve produzir 10 como
uma equação, é uma saída. O número de ls nas três entradas pode variar de 0 a 3. Assim, uma saída de
escolha mais natural. dois bits é suficiente, pois dois bits podem representar os números de 0 a 3. Um
circuito contador de ls 6 útil em diversas situações, como na detecção da densidade
de partículas eletrônicas que estão atingindo um conjunto de sensores. Isso 6 feito
contando-se quantos sensores estão ativados. Em aeroportos, um outro exemplo
são os estacionam entos. Por cim a das vagas, há sensores conectados a sinais lu-
Projeto Lógico Combinacional 85

minosos que informam aos motoristas o número de vagas disponíveis em um andar em particular
entre os diversos de um edifício de estacionamento (isso 6 feito contando-se o número de zeros, o
que c equivalente a contar o número de ls, tendo-se primeiro complementado todas as entradas).
Passo 1: Capture a função. Neste exemplo, a forma mais natural de se capturar a função 6
usando uma tabela-verdade. Listam os todas as combinações possíveis de entrada e o
número desejado na saída, como na Tabela 2.6.

TABELA 2.6 Tabela-verdade para o contador do número


de ls
Entradas (N úm ero de 1s) S aídas

a b c y z

0 0 0 (0) 0 0

0 0 1 (1) 0 1

0 1 0 (1) 0 1

0 1 1 (2) 1 0

1 0 0 (1) 0 1

1 0 1 (2) 1 0

1 1 0 (2) 1 0

1 1 1 (3) 1 1

Passo2: Converter para equações. Criamos as equações das saídas como segue:
y = a ' bc + a b ' c + abc' + abc
z = a ' b ' c + a ' b c ' + a b ' c ' + abc
Podemos simplificar algebricamente a primeira equação:
y = a ' b c + a b ' c + a b ( c ' + c) = a ' b c + a b ' c + ab
Passo3: Implemente um circuito baseado em portas. Então, criam os os circuitos finais das
duas saídas, como mostrado na Fig. 2.41. *4

Figura 2.41 Circuito do contador do número de ls baseado em portas lógicas.

Simplificando as notações de circuito


N o exem plo anterior, um par de novas notações sim plificadas foi usado em nossos circu i­
tos. Em um a dessas notações, as entradas são especificadas m últiplas vezes para evitar que
tenham os linhas cruzando-se em nosso desenho - assum e-se que um a entrada especificada
diversas vezes foi ram ificada a partir de um a m esm a entrada.
86 Sistemas Digitais

U m a outra notação sim plificada 6 o uso, no


lugar de um a porta NOT, de um a pequena “ b o ­
lh a” inversora na entrada de um a porta. A ssum e-
se que um a en trad a, ap arecen d o invertida em
m uitas portas, é aplicada prim eiro a um a porta
inversora e então chega a essas portas através de
ram ificações. a
b
c
► EXEMPLO 2.26 Conversor de um teclado de 12 teclas em
um código de 4 bits a
b'
c
Você provavelm ente já viu teclados de 12 teclas
em muitos lugares, como em um telefone ou uma
máquina de auto-atendim ento, com o m ostrado na
Fig. 2.42. A primeira linha têm as teclas 1, 2 e 3,
a segunda linha tem as teclas 4, 5 e 6, a terceira li­
nha, 7, 8 e 9, e a últim a linha, *, 0 e #. As saídas
de um teclado como esse consistem em sete sinais
- um para cada uma das quatro linhas ( r l . r2. r3 e
r4) e um para cada um a das três colunas (c l, c2 e
c3). Apertando uma tecla em particular faz com que
exatamente duas saídas tornem-se 1, corresponden­
tes à linha e à coluna daquela tecla. Assim, quando
apertam os a tecla “ 1”, lemos r l = l e d = 1, ao ] f f
d c2 c3
passo que, quando apertamos a tecla “#”, obtemos
r4 = 1 e c3 = 1. Queremos projetar um circuito que Figura 2.42 Teclado de 12 teclas.
converte os sete sinais do teclado em um número
de quatro bits wxyz indicando qual tecla foi pressio-
nada. Queremos que as teclas “0” a “9” sejam coditlcadas como 0000 a 1001 (0 a 9
Neste exemplo, co­ em binário), respectivamente. Vamos codificar a tecla “ *” como 1010, # como 1011
meçar com equações,
e vamos fazer com que 1111 signifique que nenhuma tecla está sendo pressionada.
em vez de uma tabela-
Vamos assumir por enquanto que apenas “uma” tecla pode ser pressionada em um
verdade, é uma escolha
instante qualquer.
mais natural, mesmo
que tenhamos usado Poderíam os capturar as funções para w, x. y e z usando um a tabela-verdade,
uma tabela informal com as sete entradas, nas colunas do lado esquerdo da tabela, e as quatro sa­
(não uma tabela- ídas, no lado direito. E ntretanto, essa tabela teria 2 = 128 linhas e a m aioria
verdade) para nos delas corresponderia sim plesm ente a diversas teclas pressionadas sim ultanea­
ajudar a determinar as m ente. Em vez disso, vam os tentar cap tu rar as funções usando equações. A
equações. Tabela 2.7 inform al pode nos ajudar no com eço.

TABELA 2.7 Tabela informal do conversor de teclado de 12 teclas para código de 4 bits

S aídas do c ó d ig o de 4 b its S aídas do c ó d ig o de 4 b its


Tecla S in a is Tecla S in a is
w X y z w X y z

1 r1 cl 0 0 0 1 8 r3 c2 1 0 0 0
2 r1 c2 0 0 1 0 9 r3 c3 1 0 0 1

3 r1 c3 0 0 1 1 * r4 c2 1 0 1 0
4 r2 cl 0 1 0 0 0 r4 c2 0 0 0 0
5 r2 c2 0 1 0 1 # r4 c3 1 0 1 1
6 r2 c3 0 1 1 0 (nenhuma) 1 1 1 1
7 r3 cl 0 1 1 1
Projeto Lógico Combinacional 87

► DIMINUA A VELOCIDADE! O TECLADO QWERTY

Dentro de um teclado padrão de computador há um Um problema


pequeno microprocessador e uma memória ROM. O irritante com as
microprocessador detecta qual tecla está sendo aper­ máquinas de es­
tada. consulta na ROM qual é o código de 8 bits da­ crever era que.
quela tecla (de forma muito semelhante ao teclado quando se tentava
de 12 teclas do Exemplo 2.26) e envia esse código di gi t ar rápi do
ao computador. Há uma história interessante sobre demais, as has­
como as teclas foram dispostas em um teclado pa­ tes seguidamente
drão de PC. conhecido como teclado QWERTY por­ Hastes emperradas! emperravam,
que essas são as teclas que estão no lado esquerdo da aglom erando-se
linha superior das letras. A disposição QWERTY foi lado a lado próximo do papel - como quando pes­
feita na era das máquinas de escrever (mostrada na soas demais tentam passar ao mesmo tempo por uma
figura abaixo). No caso de você não ter visto uma, porta. Como conseqüência, as teclas das máquinas
cada tecla era conectada a uma haste de metal que de escrever foram dispostas na forma QWERTY para
podia girar para cima e pressionar uma fila de tinta que a velocidade de digitação fosse diminuída por
contra uma folha de papel. meio do afastamento entre si das letras mais usadas,
já que uma velocidade menor de digitação reduzia
as ocorrências de aglomeração de teclas. Quando os
PCs foram inventados, a disposição QWERTY foi a
escolha natural de teclado porque as pessoas estavam
acostumadas a usar essa disposição. Algumas pes­
soas dizem que o chamado teclado Dvorak, com uma
disposição diferente de teclas, permite digitar mais
rapidamente. No entanto, esse tipo de teclado não é
muito comum porque as pessoas simplesmente estão
° oÍoL V A T o
muito acostumadas a usar o teclado QWERTY.
Teclas conectadas a hastes

Usando essa tabela, podemos obter equações para cada uma das quatro saídas, como segue:

w = r3c2 + r3c3 + r4 c l + r4c3 + r l ' r 2 1r 3 ' r 4 ' c l ' c 2 1c 3 '


x = r2 c l + r2c2 + r2c3 + r3 c l + r l , r 2 ' r 3 , r 4 , c l , c 2 , c3'
y = rlc 2 + rlc3 + r2c3 + r3 c l + r4 c l + r4c3 + r l 1r 2 ‘r 3 ‘r 4 ' c l ' c 2 ' c 3 '
z = rlcl + rlc3 + r2c2 + r3 c l + r3c3 + r4c3 + r l ' r ô ' r S ' ^ ' c l ^ ' c S '
Poderíamos então criar um circuito para cada saída. Obviamente, o último termo de cada equa­
ção poderia ser com partilhado por todas as quatro saídas. De modo sem elhante, outros termos
poderiam ser compartilhados também (como r2c3).
Observe que esse circuito não funcionaria bem se múltiplas teclas fossem pressionadas ao
mesmo tempo. Nessa situação, o nosso circuito irá gerar com o saída um código válido ou não,
dependendo de quais teclas foram pressionadas. Seria preferível um circuito que tratasse essa
situação de diversas teclas apertadas ao mesmo tem po com o se nenhuma tecla estivesse sendo
pressionada. Deixamos o projeto desse circuito como exercício.
Nos teclados de computador, existem circuitos semelhantes a esse que acabamos de projetar,
exceto que há muito mais linhas e colunas. ◄

► EXEMPLO 2.27 Controlador de válvula de esguicho


Os sistemas automáticos de esguicho para gramado usam um sistema digital para controlar a abertura
e o fechamento das válvulas de água. Um sistema de esguicho suporta diversas zonas diferentes, tais
como os fundos, os lados esquerdo e direito, a frente, etc. de um quintal. Em um dado momento,
pode-se abrir apenas uma válvula por zona para manter uma pressão de água suficiente nos esguichos
daquela zona. Suponha que um sistema de esguicho suporta até 8 zonas. Tipicamente, um sistema de
88 Sistemas Digitais

esguicho é controlado por um microprocessador, pequeno e de baixo custo, que executa um programa
para abrir cada válvula apenas em determinados momentos e por um tempo específico. Suponha que
o microprocessador lenha apenas quatro pinos de saída disponíveis para controlar as válvulas e não
oito, como seria necessário para as oito zonas. Em vez disso, podemos programar o microprocessador
para usar um pino que indica se uma válvula deve ser aberta ou não e usar os outros três pinos para
indicar em binário qual é a zona ativa (0, 1,..., 7). Assim, precisamos projetar um circuito combina-
cional de quatro entradas, e (a entrada de habilitação) e a, b e c (o valor binário da zona ativa), além
de oito saídas d7, d 6 ,..., dO (os controles das válvulas), como mostrado na Fig. 2.43. Quando e=l, o
circuito deve decodificar a entrada binária de três bits colocando exatamente uma saída em 1.
Passo 1: Capture a função. A válvula 0 deve estar ativa quando abc = 000 e e = 1. Desse modo,
a equação para dO é:
dO = a ' b ' c ' e
De modo semelhante, a válvula 1 deve estar ativa quando abc = 001 e e = 1. Desse modo, a
equação para dl é:
dl = a'b'ce

Figura 2.43 Diagrama de blocos do controlador de válvula de esguicho.

A s equ açõ es das d em ais saíd as podem ser


determ inadas de form a sem elhante:
d2 = a ' b c ' e
Neste exemplo, come­
çar com as equações, d3 = a ' b c e
em vez de uma tabela-
d4 = a b ' c ' e
verdade, é uma escolha
mais natural. d5 = a b ' c e

d6 = a b c ' e

d7 = abce

P asso 2: Converta para equações . N enhum a


conversão é necessária porque já te­
mos as equações.
Passo 3: Implemente um circuito baseado em
portas. O circuito que im plem enta as
equações está representado na Fig.
2.44. Na realidade, o circu ito que
projetam os é um com ponente m uito
usado, conhecido com o decodificcidor
com habilitação. Introduzirem os os
decodificadores com o blocos constru­
tivos mais adiante. Figura 2.44 C ircuito do controlador de
válvula de esguicho (na realidade um de-
codificador 3x8 com habilitação).
Projeto Lógico Combinacional 89

► 2.8 MAIS PORTAS


A nteriorm ente, introduzim os três portas lógicas básicas: A N D , O R e NOT. O s projetistas
tam bém usam co m u m en te diversos outros tipos de portas lógicas: N A N D , N O R, X O R e
XNOR.

NAND e NOR
NAND U m a porta NAND (abreviatura de “N O T A N D ") tem a saída oposta de um a porta A N D ,
produzindo um 0 quando todas as entradas são 1, e um 1 se qualquer um a das entradas
for 0. U m a porta N A N D tem o m esm o com portam ento de um a porta A N D seguida de
um a NOT. A Fig. 2.45(a) ilustra um a porta NAND.
U m a porta NOR (abreviatura de “N O T O R ” ) tem a saída oposta de um a porta OR,
NOR
produzindo um 0 quando no m ínim o um a das entradas é 1, e um 1 se todas as entradas
forem 0. Um a porta N O R tem o m esm o com portam ento de um a porta O R seguida de
um a NOT. A Fig. 2.45(b) ilustra um a porta NOR.
A nteriorm ente, na Seção 2.4, cham am os a atenção para que nossas im plem entações das
portas A N D e O R , usando transistores C M O S , não eram realísticas. A qui está o porquê.
A contece que, na realidade, os transistores pM O S não conduzem m uito bem os Os, m as co n ­
duzem bem os ls. De m odo sem elhante, os transistores nM OS não conduzem m uito bem os
ls , m as conduzem bem os Os. A s razões d essas assim etrias estão além dos objetivos deste
livro. N o entanto, as im plicações são que as portas A N D e O R que construím os antes (veja
a Fig. 2.8) não são factíveis, já que elas baseiam -se na capacidade dos transistores pM O S de
conduzir Os (entretanto, os pM O S conduzem m al os Os) e dos nM OS de conduzir ls (entre­
tanto, os nM O S conduzem mal os ls). Por outro lado, se perm utarm os a fonte de alim entação
pela terra nos circuitos A N D e O R da Fig. 2.8, obterem os as portas m ostradas nas Figs. 2.45
(a) e (b). E ssas portas têm o com portam ento das N AN D e N O R. Isso faz sentido pois os l s de
saída são substituídos por Os e os Os por ls.

NAND NOR XOR XNOR

x y F x y F X y F X y F
0 0 1 0 0 1 0 0 0 0 0 1
0 1 1 0 1 0 0 1 1 0 1 0
1 0 1 1 0 0 1 0 1 1 0 0
1 1 0 1 1 0 1 1 0 1 1 1

(c) (d)

Figura 2.45 Portas adicionais: (a) NAND. (b) NOR, (c) XOR e (d) XNOR.
90 Sistemas Digitais

A in d a p o d e m o s im p le m e n ta r u m a p o rta A N D
em C M O S , m as faríam o s isso a c re sc e n ta n d o um a
p o rta N O T à sa íd a d e u m a p o rta N A N D ( u ma
N A N D seg u id a d e um a N O T dá u m a A N D ), co m o
está m o stra d o na Fig. 2.4 6 . De m odo se m e lh a n te ,
im p le m e n ta ría m o s um a p o rta O R a c re s c e n ta n d o
um a p o rta N O T à sa íd a d e u m a p orta O R . N o e n ­
tanto, isso é o b v ia m e n te m ais len to d o q u e um c ir­
cui t o im p le m e n ta d o d ire ta m e n te c o m o N A N D ou
N O R . F e liz m e n te , p o d e m o s a p lic a r m é to d o s im e ­
d ia to s p ara c o n v e rte r q u a l q u e r c irc u ito A N D /O R /
N O T em um circ u ito c o n stitu íd o ap en as p o r p o rtas
N A N D s ou N O R s. D esc re v e re m o s e sse s m éto d o s
na S eção 7.2.
Figura 2.46 Porta AND em CMOS.

► EXEMPLO 2.28 Luz de sinalização de um lavatório de avião


usando uma porta NAND
No Exemplo 2.15, foi desenvolvido uma luz de sinalização
de lavatório desocupado que usava a seguinte equação:
S = (abc)'
Observando que o termo no segundo membro da equa­
ção corresponde a uma NAND, podemos im plem entar o cir­
cuito usando um a única porta NAND, com o está mostrado Figura 2.47 C ircuito que usa
na Fig. 2.47. ◄
porta NAND.

XOReXNOR
U m a p orta X O R d e 2 en trad as, ab rev iação d e “exclusive or (O R ex clu siv o )” , p ro ­
duzirá um a saída 1 se exatamente um a das d u as en trad as for 1. A ssim , se essa porta
tiver entradas a e b, en tão a saída F será 1 se a= l e b=0, ou se b=l e a=0. A Fig. 2.45(c)
ilustra um a porta X O R (por sim plicid ad e, om itim o s a sua im p lem en tação em nível de
transistor). N o caso de portas X O R com 3 ou m ais en trad as, a saída será 1 ap en as se
o núm ero de l s de en trad a for ím par. U m a porta X O R d e 2 en trad as é eq u iv alen te à
função F = a b ' + a ' b .
U m a porta X N O R , abreviação de “exclusive nor (N O R exclusivo)” , é sim plesm ente
o oposto de um a XOR. U m a X N O R de 2 entradas é equivalente a F = a ' b 1 + ab. A Fig.
2.45(d) ilustra um a porta X N O R , tendo-se omi t i do por sim plicidade a im plem entação
em nível de transistor.

Usos interessantes para essas portas adicionais


Detectando somente Os usando uma NOR
U m a porta N O R pode detectar a situação de um item de dados ser igual a O, porque
o o o

um a porta N O R produz um 1 de saída ap en as quando todas as entradas são 0. Por


exem plo, suponha que, em seu sistem a, um a en trad a de um byte (8 bits) esteja em
contagem decrescente de 99 a 0. Q uando o byte chegar a 0, você quer que um alarm e
seja soado. Você pode detectar quando o byte é igual a 0 sim plesm ente conectando os
8 bits do byte a um a porta N O R de 8 entradas.
Projeto Lógico Combinacional 91

Detectando uma igualdade usando XNOR


À s portas X N O R podem ser usadas para com parar dois itens de dados e
verificar se são iguais, porque um a X N O R de 2 entradas fornece um 1 de
saída apenas quando as entradas forem am bas 0 ou am bas 1. Por exem plo,
suponha que, em seu sistem a, um a entrada de um byte A ( a 7 a 6 a 5 . . .aO)
esteja em contagem decrescen te a partir de 99 e você quer que soe um
alarm e quando A tiver o m esm o valor que um segundo byte de en trad a
B ( b 7 b 6 b 5 . . .bO). Você pode d etectar essa igualdade usando oitos portas
X N O R de 2 entradas, conectando a7 e b7 à prim eira porta X N O R, a6 e b6
à segunda porta X N O R , etc. C ada porta X N O R diz-nos se os bits daquela
casa binária em particular são iguais. A plicando um a A N D a todas as saí­
das das X N O R s, poderem os dizer se todas as casas binárias são iguais.

Gerando e detectando paridade usando XOR


U m a porta X O R pode ser usada para gerar o bit de paridade de um conjunto de bits de dados
(veja o E xem plo 2.19). A aplicação de um a X O R aos bits de dados resulta cm 1 quando há um
núm ero ím par de ls nos dados. D esse m odo, um a X O R calcula o bit de paridade correto no
caso de paridade par, já que a saída 1 da X O R torna par o núm ero total de ls. O bserve que a
tabela-verdade que criam os para gerar um bit de paridade p ar na Tabela 2.3 representa de fato
um a porta X O R de três bits.
De modo sem elhante, uma porta XNOR pode ser usada para gerar um bit de paridade ímpar.
A porta X O R tam bém pode ser usada para detectar se a paridade está correta. A aplicação
de um a X O R aos bits de entrada, ju n tam en te com o bit de paridade que está chegando, dará
1 se o núm ero de ls for ímpar. A ssim , no caso de paridade par, a X O R pode ser usada para
indicar se ocorreu um erro, já que o núm ero de ls é supostam ente par.
Q uando se usa paridade ím par, a X N O R pode ser usada para detectar se ocorreu um erro.

Completude de AND/OR/NOT, AND/NOT, OR/NOT, NAND, NOR


Deve ser bem óbvio que, se você dispuser de portas dos tipos AND. OR e NOT, você poderá im­
plem entar qualquer função booleana. Isso é possível porque uma função booleana pode ser repre­
sentada com o uma som a de produtos, a qual consiste apenas em operadores AND, OR e NOT.
O q u e p o d e se r m en o s ó b v io é q u e se você tiv e r a p e n a s p o rta s dos
tipos A N D e N OT, você ai nda p o d erá im p le m e n ta r q u a lq u e r fu n ção b o o ­
leana. P o r q u ê? A qui está um a e x p lic a ç ão sim p les - p a ra o b te r um a O R ,
sim p lesm en te c o lo q u e p o rtas N O T nas e n tra d a s e na sa íd a de um a A N D .
Isso fu n cio n a p o rq u e F = ( a ' b 1) 1 = a 11 + b 1' (p ela lei d e D eM o rg an )
= a + b.
De m odo sem elhante, se você tiver apenas portas dos tipos O R e NOT, você poderá im ple­
m entar qualquer função booleana. Para obter um a A N D , você poderá sim plesm ente inverter
as entradas e a saída de um a O R, já que F = ( a 1+ b 1) 1 = a , , * b ' ' = ab.
Segue-se que, se você dispuser apenas de portas do tipo N A N D , você ainda poderá im ­
plem entar qualquer função booleana. P or quê? Porque podem os pensar em um a porta N O T
com o sendo um a porta N A N D de um a en trad a e porque podem os im plem entar um a p o rta
A N D usando um a N A N D seguida de um a outra N A N D com um a entrada. C om o podem os
im plem entar qualquer função usando portas NOT e A N D , poderem os portanto im plem entar
qualquer função booleana usando apenas N A N D s. P or essa razão, um a porta N AN D é conhe­
cida com o um a porta universal.
De modo sem elhante, se você dispuser apenas de portas do tipo NOR, você poderá im ple­
m entar qualquer função booleana, porque poderem os im plem entar uma porta NOT usando uma
porta N O R de uma entrada, e um a porta OR usando um a NOR seguida de um a NOR com uma
entrada. C om o NOT e OR podem im plem entar qualquer função booleana. a N O R tam bém po­
derá fazê-lo. Uma porta NOR é, por essa razão, tam bém conhecida com o uma porta universal.
92 Sistemas Digitais

Número de portas lógicas possíveis


D epois de ter visto diversos tipos diferentes
a b F
de po rtas ló g icas b ásicas de d u as en trad as
0 0 0 ou 1 2 opções ro
(A N D , O R , N A N D , N O R , X O R e X N O R ),
0 1 0 ou 1 2 opções n)
p ode-se p erg u n tar q u an tas po rtas ló g icas de - *
1 0 0 ou 1 2 opções n>
duas entradas são possíveis. Isso e o m esm o
1 1 0 ou 1 2 opções ro
que p erg u n tar qu an tas funções booleanas de
duas variáveis existem . Para responder a essa 2 ^ = 16
funções possíveis
q uestão, p rim eiro o b servam os que a tabela-
verdade de um a função de duas variáveis tem Figura 2.48 Contando o número de funções
2~=4 linhas. Para cad a linha, a função pode booleanas de duas variáveis possíveis.
g e ra r um a saíd a com um en tre d o is valores
possíveis (0 ou 1). A ssim , com o m ostrado na
Fig. 2.48, h á 2 * 2 * 2 * 2 = 24 = 1 6 funções
possíveis.
A Fig. 2.49 lista todas essas 16 funções. N essa figura, assin alam o s as seis funções já
conhecidas. A lgum as das funções restantes são 0, a, b, a ', b ' e 1. A s d em ais funções não
são necessariam ente funções com uns, m as poderiam ser úteis cm algum as ap licações par­
ticulares. A ssim , não precisam os necessariam ente co n stru ir portas lógicas para representar
essas funções. Pelo contrário, construirem os essas funções com o circuitos que usam as portas
lógicas básicas.

Figura 2.49 As 16 funções booleanas de duas variáveis possíveis.

U m a questão m ais geral de interesse 6 saber q uantas funções booleanas de N variáveis


existem . Podem os determ inar esse núm ero observando prim eiro que um a função de N va­
riáveis terá 2 a linhas em sua tabela-verdade. E ntão, observam os que o valor d a saída cm
cada linha pode ser um entre dois possíveis. A ssim , o núm ero de funções possíveis será
2 * 2 * 2 *— 2 a vezes. Portanto, o núm ero total de funções e:

4 D esse m odo, há: 2" = 2 = 256 funções booleanas p ossíveis para três variáveis e
2 2 = 2 16 = 65.536 para quatro variáveis.
Projeto Lógico Combinacional 93

► 2.9 DECODIFICADORES E MULTIPLEXADORES


D ois com ponentes adicionais, o deco d ificad o r e o m ultiplexador, tam bém são com um ente
usados com o blocos construtivos de circuitos digitais, m esm o que eles próprios possam ser
construídos usando portas lógicas.

Decodificadores
Um decodificador é um bloco construtivo de nível m ais elevado com um ente usado em c ir­
cuitos digitais. Um decodificador , com o o nom e diz, decodifica um núm ero binário de n bits
de entrada colocando exatam ente um a das 2" saídas do decodificador em 1. Por exem plo, um
decodificador de duas entradas, ilustrado na Fig. 2.50, tem 2“ = 4 saídas, d3, d2, d l e dO. Se as
duas entradas i 1i 0 forem 00, então dO será 1 e as dem ais saídas serão 0. Se i l i 0=01, d l será
1. Se i 1i 0=10, d2 será 1. Se i l i 0 = l l , d3 será 1.
O projeto interno de um decodificador é im ediato. C onsidere um decodificador 2x4. C ada
saída dO, d l. d2 e d3 é um a função distinta. A saída dO deve ser 1 apenas quando i 1=0 e i 0=0
de m odo que dO = i 1 1i 0 1. D e m odo sem elhante, d l = i l ' i 0 , d 2=i 1 i 0' e d3=i 1 i 0. A ssim ,
construím os o decodificador com um a porta A N D para cada saída, ligando os valores de i 1 e
i 0 ou seus com plem entos a cada porta, com o m ostrado na Fig. 2.50.

dO — 1 dO - 0 dO

o— iO d1 — 0 1— iO d1 - 1 o— iO d1

0— il d2 - 0 0— il d2 - 0 1— il d2

d3 - 0 d3 - 0 d3

(a)

(b)

Figura 2.50 Um decodificador 2x4: (a) saídas para as combinações possíveis de entrada, (b) pro-
jeto interno.

O projeto interno de um decodificador 3x8 é sem elhante: d0=i 2 1i 1' i 0 1, d l =i 2 1i 1' i0,
etc.
Um d e c o d ific a d o r fre q ü e n te m e n te tem um a
entrada extra cham ada enable (habilitar). Q uando dO — 0 dO

enable é 1, o decodificador atua norm alm ente, mas, 1— iO d1 —0 1— iO d1

quando enable é 0, o decodificador coloca todas as


1— i1 d2 — 0 1— i1 d2
suas saídas em 0 - nenhum a saída é 1. O sinal de
h ab ilitação (enable) 6 útil q u an d o algum as vezes e d3 — 1 e d3

você não quer que nenhum a das saídas seja ativada.


Sem um a entrada de habilitação, um a das saídas do 1 o
(a) (b)
d eco d ificad o r deve ser 1, porque o d eco d ificad o r
tem um a saída para cada um dos valores possíveis Figura 2.51 Decodificador com habi­
da entrada de n bits do decodificador. Na Fig. 2.44, litação: (a) e = l : decodificação normal
tínham os criado e usado um decodificador com ha­ e (b) e=0: todas as saídas em 0.
bilitação. A Fig. 2.51 m ostra o d iagram a de blocos
de um decodificador com habilitação.
94 Sistemas Digitais

Q uando projetam os um sistem a em particular, verificam os se parte (ou o todo) da funcio­


nalidade do sistem a poderia ser realizada com um decodificador. O uso de um decodificador
diminui a quantidade de projeto lógico com binacional que precisam os executar, com o você
verá no Exem plo 2.30.

► EXEMPLO 2.29 Perguntas básicas sobre decodificadores


1. Quais seriam os valores de saída de um decodificador 2x4 quando as entradas são 00? Res­
posta: d0=l , dl =0, d2=0 e d3=0.
2. Quais seriam os valores de saída de um decodificador 2x4 quando as entradas são 00? Res­
posta: d0=l, dl=0, d2=0 e d3=l.
3. Quais são os valores de entrada de um decodificador 2x4 que fazem com que mais de uma
das saídas estejam em 1 ao mesmo tempo? Resposta: Tais valores de entrada não existem.
Em um dado momento, apenas uma das saídas do decodificador pode estar em 1.
4 . Quais serão os valores de entrada de um decodificador se os valores de saída forem d0=0,
d 1=1, d2=0 e d3=0. Resposta: Os valores de entrada devem ser i 1=0 e i 0=1.
5. Quais serão os valores de entrada de um decodificador se os valores de saída forem d0=l,
d 1=1, d2=0 e d3=0. Resposta: Esta pergunta não é válida. Em qualquer momento, um
decodificador tem apenas uma saída em 1.
6. Quantas saídas teria um decodificador de cinco entradas? Resposta: 2^ ou 32. ◄

► EXEMPLO 2.30 Display de contagem regressiva para véspera de ano novo


Um display de contagem regressiva para véspera de ano novo pode usar um decodificador. O display
pode ter 60 lâmpadas dispostas em um poste. Queremos que uma lâmpada seja acesa a cada segundo
(e a anterior apagada), começando com a lâmpada 59 na base do poste e terminando com a lâmpada
0 no topo. Poderemos usar um microprocessador para fazer a contagem regressiva de 59 a 0, mas
provavelmente o microprocessador não terá os 60 pinos de saída que precisaríamos para controlar
cada lâmpada. Ao invés disso, o nosso microprocessador poderia fornecer os números 59. 58,.... 2,
1 e 0 em binário, por meio de uma porta de saída de seis bits (produzindo assim 111011,111010,...,
000010, 000001 e 000000). Poderíamos ligar esses seis bits a um decodificador de seis entradas e 64
(26)-saídas. A saída d59 do decodificador acenderia a lâmpada 59, a d58, a lâmpada 58, etc.
Provavelmente, gostaríam os de ter um sinal de habilitação para o decodificador deste nosso
exemplo, pois queremos que todas as lâmpadas estejam apagadas até começarmos a contagem re­
gressiva. Inicialmente, o microprocessador colocará o sinal de habilitação ( enable) em 0 de modo
que todas as lâmpadas fiquem apagadas. Quando com eçar a contagem regressiva de 60 segundos,
o microprocessador ativará o sinal enable com 1 e, então, colocará 59 na saída, em seguida 58 (um
segundo após), 57, etc. O sistema final ficaria como o mostrado na Fig. 2.52.

Figura 2.52 Uso de um decodificador


Feliz
6x64 no interfaceamento entre um mi­ Ano Novo!
croprocessador e um poste de lâm pa­ i0 d0
das com um display dc véspera de ano O i1 a1
A 1

01
"OC O A O
novo. Q uando a contagem do minuto <
/(/>
> i2 a z 0 2
0o> i3 d3 03
final com eça, o m icroprocessador faz o
L. i4
e= l (habilitação) e então coloca os va­ o.
o •••
i5
lores da contagem regressiva em binário
d 58
nos pinos i5 .. i0 . Observe que o mi­ o d 59
croprocessador nunca coloca os valores
d 60
60, 61, 62 ou 63 em i5 .. i0 e, desse d61
modo, essas saídas do decodificador fi­ 6x64 d62
cam sem uso. dcd d63
Projeto Lógico Combinacional 95

Observe que implementamos este sistem a sem necessidade de projetar qualquer lógica com bi­
nacional em nível de portas básicas - simplesmente usamos um decodificador e o conectamos às
entradas e saídas apropriadas. M

Sem pre que você tiver saídas em que apenas um a delas estará em 1, tom ando com o base
os valores das entradas que estão representando um núm ero binário, pense em usar um deco-
dificador.

Multiplexador (mux)
Um m ultiplexador (“ m ux” , em form a abreviada) é um outro bloco construtivo de nível m ais
elevado usado em circuitos digitais. Um multiplexador Mx 1 tem M entradas de dados e 1
saída, perm itindo que apenas um a das entradas seja passada para a saída. A lgum as vezes,
os m ultiplexadores são cham ados de seletores porque selecionam um a das entradas para ser
passada à saída.
Um m ultiplexador e com o um aparelho de m udança de via em um parque ferroviário de
m anobras, que põe em conexão diversas vias de entrada com um a única via de saída, com o
m ostrado na Fig. 2.53. A alavanca de controle do aparelho de m udança de via estabelece a
conexão entre a via de entrada adequada e a via de saída. O surgim ento de um trem na saída
dependerá de se há um trem presente na via de entrada selecio n ad a no m om ento. Em um
m ultiplexador, o controle não e um a alavanca, m as sim entradas de seleção, as quais repre­
sentam a conexão desejada em binário. Ao invés de um trem ap arecer ou não na saída, um
m ultiplexador produz um 1 ou um 0 na saída, dependendo de se a entrada selecionada tem
um 1 ou um 0.

Figura 2.53 Um multiplexador é como um aparelho de mudança de via em um parque ferroviário


de manobras. Ele determina qual via de entrada será conectada à única via de saída, de acordo com
a alavanca de controle do aparelho de mudança de via.

Um m ultiplexador de duas entradas, conhecido com o m ultiplexador 2x1, tem duas en tra­
das de dados i 1 e i0 , um a entrada de seleção s0 e um a saída de dados d, com o m ostrado na
Fig. 2.54. Se s0=0, o valor de i0 passará para a saída. Se s0 = l, o valor que passará será o de
il.
A estrutura interna de um m ultiplexador 2x1 está m ostrada na Fig. 2.54. Q uando s0=0,
a porta A N D superior gera um a saída dada por l* i 0=i 0 e a porta A N D inferior produz um a
saída dada por 0*i 1=0. D esse m odo, a porta O R fornece a saída d ad a por i 0+0=i 0 e, assim ,
i0 passa à saída, com o desejado. Do m esm o m odo, quando s0 = l. a porta inferior deixa pas­
sar i 1, ao passo que a porta superior coloca a saída em 0, resultando q u e a porta O R deixa
passar i 1.
96 Sistemas Digitais

(a) (b) sO (c)

Figura 2.54 M ultiplexador 2x 1: (a) símbolo na forma de bloco, (b) cone­


xões para s0=0 e sO=l, (c) estrutura interna.

Um m ultiplexador de quatro entradas, conhecido com o m ultiplexador 4x 1, tem quatro en ­


tradas de dados i 3, i 2, i 1 e i 0, duas entradas de seleção s l e sO, e um a saída de dados d (um
m ultiplexador sempre tem apenas um a saída de dados, não im portando quantas entradas). Um
diagram a de blocos de um m ultiplexador está m ostrado na Fig. 2.55.

41
— iO

i1
d
— i2
— i3

s1 sO

(a) (b)
Figura 2.55 M ultiplexador 4x 1: (a) símbolo na forma
de bloco e (b) estrutura interna.

A estrutura interna de um m ultiplexador 4x 1 está m ostrada na Fig. 2.55. Q uando sls0=00, a


porta A N D superior gera uma saída dada por i 0 * l * l = i 0. a próxim a porta A ND gera i 1*0*1=0,
a próxim a, i2 * l* 0 = 0 , e a porta A N D inferior produz um a saída dada por i3*0*0=0. A porta
O R fornece i 0+0+0+0=i 0 e, assim , i 0 passa ã saída, com o desejado. Do m esm o m odo, quando
sls0=01, a segunda porta A ND deixa passar i 1, ao passo que as todas as dem ais portas AND
produzem um 0 em suas saídas. Q uando sls0=10, a terceira porta A N D deixa passar i2 e as
dem ais portas A ND produzem um 0 em suas saídas. Q uando s 1s0=11, a porta A ND inferior
deixa passar i 3, e as outras portas A ND produzem um 0 em suas saídas. Para qualquer valor de
slsO, apenas uma porta A N D terá dois ls em suas entradas de seleção, deixando passar assim
o valor presente em sua entrada de dados: as dem ais portas A N D terão no m ínim o um 0 em
suas entradas de seleção e, conseqüentem ente, produzirão um 0 em suas saídas.
Um m ultiplexador 8x 1 tem oito entradas de dados i 7...Í0, três entradas de seleção s2, s l
e sO, e um a saída de dados. De form a m ais genérica, um m ultiplexador Mx I , tem M entradas
de dados, log2(A/) entradas de seleção e um a saída de dados. L em bre-se de que um m ultiple­
xador sem pre tem som ente um a saída.

► EXEMPLO 2.31 Perguntas básicas sobre multiplexadores


Assuma que, no momento, as quatro entradas de um multiplexador 4x1 têm os seguintes valores:
i 0=1, i 1=1, i 2=0 e i 3=0. Qual será o valor na saída d de um multiplexador para os seguintes
valores de entrada de seleção?
Projeto Lógico Combinacional 97

1. sls0=01. Resposta: Como sls0=01 deixa passar a entrada i 1 para d, então d terá o valor de
i 1 que é 1, no momento.
2. sls0=01. Resposta: Essa configuração de valores de entrada da linha de seleção deixa pas­
sar i 3, então d terá o valor de i 3 que é 0, no momento.
3. Quantas entradas de seleção devem estar presentes em um multiplexador 16x1? Resposta:
Quatro entradas de seleção são necessárias para indicar qual das 16 entradas deverá ser
passada para a saída porque log,(16)=4.
4 . Quantas entradas de seleção há em um multiplexador 4x2? Resposta: A pergunta não é
válida - não existe nada como um multiplexador 4x2. Um multiplexador tem exatamente
uma saída.
5. Quantas entradas há em um multiplexador que tem cinco entradas de seleção? Resposta:
Cinco entradas de seleção podem indicar uma única entrada entre 2'=32 entradas. Essa
entrada deverá ser passada à saída. M

► EXEMPLO 2.32 Sistema para exibir o voto de um prefeito usando multiplexador


Considere uma pequena cidade com um prefeito muito Chaves do prefeito
impopular. Durante as assembléias municipais*, o mo­
derador da reunião apresenta quatro proposições ao Ligado/
prefeito, que então vota cada uma delas (aprovando ou 4x1 Desligado
rejeitando). Seguidamente, logo após o prefeito votar, os iO
cidadãos passam a vaiá-lo e a gritar palavras impróprias - i1
independentemente de como ele votou. Depois de muito d
i2
abuso desse tipo. o prefeito construiu um sistema digi­
i3 LED
tal simples (acontece que o prefeito tinha feito um curso
sl sO Verde/
de projeto digital), mostrado na Fig. 2.56. Ele providen­ Vermelho
ciou quatro chaves para o seu próprio uso que podem ser
posicionadas em cima ou em baixo, dando uma saída 1
Chaves do
ou 0, respectivamente. Durante as assembléias, quando moderador
chega o momento de votar a primeira proposição, ele leva
a primeira chave para cima (aprovação) ou para baixo Figura 2.56 Im p lem en tação com
(rejeição) - mas ninguém mais consegue ver a posição multiplexador 4x1 de um sistema para
da chave. Quando chega o momento de votar a segunda exibir o voto de um prefeito.
proposição, ele leva a chave para cima ou para baixo. E,
assim por diante. Depois de votar todas as proposições, ele sai da assembléia e vai tomar um café.
Sem a presença do prefeito, o moderador liga um grande painel luminoso de cor verde ou vermelha.
Quando o sinal de entrada do painel é 0, o painel fica vermelho. Quando a entrada é 1, o painel fica
verde. O moderador controla duas chaves com as quais pode escolher e conectar qualquer uma das
saídas das chaves, usadas pelo prefeito, com o painel luminoso. Desse modo, o moderador usa todas
as configurações das chaves, começando com a configuração 00 (e dizendo “Nesta proposição, o voto
do prefeito f o i...”), então 01,10 c finalmente 11. Em cada configuração, o painel fica aceso com a cor
verde ou vermelha, de acordo com as posições das chaves do prefeito. O sistema pode ser facilmente
implementado usando um multiplexador 4x 1, como mostrado na Fig. 2.56. ◄

Multiplexador Mx1 de N bits


O s m ultiplexadores freqüentem ente são usados para seletivam ente d eix ar passar não só bits
isolados, m as tam bém itens com N bits de dados. Por exem plo, um conjunto de entradas A
pode consistir em quatro bits a3, a2, a l e a0, e um outro conjunto de entradas B tam bém pode
consistir em quatro bits b3, b2. b l e b0. Q uerem os m ultiplexar essas entradas conduzindo-as

* N. de T: Nos Estados Unidos, há governos municipais em que as decisões importantes são tomadas por todos os cidadãos
reunidos em uma assembléia (town meeting).
98 Sistemas Digitais

a um a saída de quatro bits C consistindo em c3, c2, c l e cO. A Fig. 2.57(a) m ostra com o obter
essa m ultiplexação usando quatro m ultiplexadores 2x1.

Notação
sim plificada:
4

ea
sim plificação de:

c3
c2

d
sO cO
(a) (b) (O
Figura 2.57 M ultiplexador 2x l de quatro bits: (a) estrutura interna usando quatro mulliplexado-
res 2x l para selecionar entre os itens A ou B de quatro bits de dados e (b) símbolo para diagrama
de blocos de um multiplexador 2xl de quatro bits. (c) O diagram a de blocos usa uma notação
simplificada comum, consistindo em uma linha cheia com um traço inclinado e o número 4, para
representar quatro lios simples.

Com o a multiplexação de dados é muito usada, um outro bloco construtivo comum é um multi­
plexador yV/x l com N bits de largura de dados. Assim, em nosso exemplo, usaríamos um multiple­
xador 2x l de 4 bits. Não fique confuso, contudo - um multiplexador Mx l de N bits e na realidade
simplesmente o mesmo que N multiplexadores Mx l separados, mas que compartilham as mesmas
entradas de seleção. A Fig. 2. 57(b) mostra o símbolo de um multiplexador 2x l de 4 bits.

► EXEMPLO 2.33 Display multiplexado de automóvel colocado acima do espelho retrovisor


Alguns carros vêm com um display colocado
acim a do espelho retrovisor, como mostrado na
Fig. 2.58. O motorista pode pressionar um botão
chamado modo para mostrar a tem peratura exte­
rior, o consum o médio do carro em quilôm etros
por litro, o consum o instantâneo em quilôm e­
tros por litro ou a distância restante aproximada
que ainda pode ser percorrida antes que acabe o
combustível. Assum a que o com putador central
do carro envia os dados ao display na forma de
quatro números binários de oito bits, T (a tempe­
ratura), M(consumo médio em km/litro), I (con­
sumo instantâneo em km/litro) e Q (quilôm etros
Figura 2.58 Display acima do retrovisor.
restantes). T consiste em oito bits: t7 , t6 , t5 , t4,
t3 , t2 , t l e tO. O mesmo ocorre com M, I e Q. Assuma que o sistem a de display tem duas entradas
adicionais x e y . que sempre mudam de valor seguindo a seqüência seguinte - 00, 01, 10 e 11 - a
cada vez que o botão de modo é apertado (veremos em um capítulo posterior com o criar tal se­
qüência). Quando xy = 00, querem os exibir T, quando xy=01, querem os exibir M, quando xy=10,
queremos exibir I e quando x y = ll, querem os exibir Q. Assuma que as saídas D vão a um display
que sabe como converter esse número binário Dde oito bits cm um número que pode ser exibido e
lido pelas pessoas, como na Fig. 2.58*.

* N. de T: No caso. está sendo mostrada a temperatura exterior (outside) de 87 graus Fahrenheit (ou 31 graus centígrados).
Projeto Lógico Combinacional 99

Podem os projetar o sistem a de display usando oito m ultiplexadores 4x1, com o m ostrado
na Fig. 2.59.

Figura 2.59 Display colocado acima do retrovisor, usando um multiplexador 4x 1 de oito bits.

Observe quantos fios devem ser estendidos desde o com putador central do carro, que pode
estar localizado abaixo do capô, até o display colocado acima do retrovisor - 8 * 4 = 32 fios. Isso
é muito fio. Em um capítulo posterior, veremos como reduzir o número de fios. <

O bserve no exem plo anterior com o um projeto pode ser sim ples, quando utilizam os blo­
cos construtivos de nível m ais elevado. Se tivéssem os de usar m ultiplexadores com uns de
4x1, teríam os oito deles e m uitos fios desenhados. Se tivéssem os de usar portas, teríam os
40 delas. N aturalm ente, por baixo do nosso projeto sim ples d a Fig. 2.59 há, de fato, oito
m ultiplexadores 4x1, e por baixo desses há 40 portas e, ainda, por baixo dessas há grandes
quantidades de transistores. Vem os que o uso de blocos construtivos de nível m ais elevado
torna a nossa tarefa de projeto m uito m ais tratável.

► 2.10 CONSIDERAÇÕES ADICIONAIS


Captura de esquemáticos e simulação
A o p rojetar um circuito, com o saber se estam os projetando corretam ente? T alvez tenham os
criado a tabela-verdade com algum erro, colocando um 0 em algum a casa da coluna de saída
quando deveríam os ter posto um 1; ou talvez tenham os escrito um m interm o errado, escre­
vendo xyz quando deveríam os ter escrito x y z 1. Por exem plo, considere o contador do núm ero
de ls do E xem plo 2.25. C riam os um a tabela-verdade, a seguir criam os equações e finalm ente,
um circuito. O circuito está correto?
Um m étodo de verificarm os o nosso trabalho é fazendo a cham ada engenharia reversa da
função a partir do circuito - com eçando com o circuito, poderíam os convertê-lo em equações
e, em seguida, essas em um a tabela-verdade. Se obtiverm os a m esm a tabela-verdade original,
então o circuito deverá estar correto. E ntretanto, algum as vezes, com eçam os com um a eq u a­
ção, ao invés de um a tabela-verdade, com o no E xem plo 2.24. Poderem os fazer a engenharia
reversa de um circuito obtendo um a equação, m as essa equação pode ser diferente da original,
especialm ente se tiverm os m anipulado algebricam ente a equação original durante o projeto
do circuito. A lém disso, para verificar se duas equações são equivalentes, pode ser necessário
que as equações sejam convertidas para a form a canônica (som a de m interinos). Se a nossa
função tiver um grande núm ero de entradas, isso poderá produzir equações enorm es.
De fato, m esm o se não fizerm os nenhum erro quando estiverm os convertendo o que está
em nossa m ente, a respeito da função desejada, para a form a de tabela-verdade ou equação,
com o saberem os se o nosso entendim ento estava correto?
100 Sistemas Digitais

Um m étodo com um ente usado para verificar se um circuito funciona com o esperávam os
é cham ado dc sim ulação. A simulação dc um circuito é o processo de se fornecer valores de
entradas ao circuito e executar um program a de com putador que calcula a saída do circuito
com essas entradas. Poderem os então conferir se a saída está de acordo com o que esperam os.
O program a de com putador que executa a sim ulação é cham ado de simulador.
P ara u sar a sim u la ç ão na v e ri­
ficação de um c irc u ito , d ev erem o s
*0 ( 3 : 0 ]
d escrev ê-lo u san d o um m étodo que
p e rm ita a leitu ra do c irc u ito pelos
p ro g ram as de com putador. U m m é ­
todo para se d escrev er um circu ito é
d esen h an d o -o p o r m eio de u m a fer­
ram en ta de cap tu ra de esquem ático.
U m a ferram enta de captura de es­
quemático p erm ite que um usuário
co lo q u e p o rtas ló g icas em um a tela
de c o m p u ta d o r e d esen h e fios para
c o n e c ta r essas portas. A ferram enta
p erm ite aos u su ário s g u a rd a r seus
Figura 2.60 Im agem de tela de uma ferram enta com ercial de d e se n h o s de c irc u ito s na form a de
captura de esquemático. arq u iv o s de co m p u tad o r. T odos os
Entradas Entradas d e se n h o s d o s c irc u ito s d este c a p í­
tulo são ex em p lo s de esq u em ático s
10 10
- por exem plo, o desenho do circuito
11 11 da F ig . 2 .5 0 (b ), re p re se n ta n d o um
Simule^^ ) Simule
Saidas Saídas d e c o d ific a d o r 2x4, é um ex em p lo
d3 d3 n r de esq u em ático . A Fig. 2.60 m ostra
d2 d2 um esq u em ático do m esm o projeto,
q u e foi d esen h ad o usando um a fer­
d1 d1 _ R ra m e n ta co m ercial bem c o n h e c id a
d e c a p tu ra de esq u em ático . A c a p ­
dO d0
tura de esq u em ático s é usada não só
(a) (b) para c a p tu ra r os circu ito s q u e serão
Figura 2.61 Simulação: (a) começa com nós para definir os si­ usados pelas ferram entas de sim u la­
nais das entradas ao longo do tempo, (b) gera automaticamente as ção, com o tam bém pelas ferram entas
formas de onda de saída quando solicitamos que o sim ulador faça que m apeiam n o sso s c irc u ito s para
a simulação do circuito. im p lem en taçõ es físicas, co m o será
d iscutido no C apítulo 7.
D epois de criar um circuito por m eio da captura de esquem ático, devem os fornecer ao
sim u lad o r um co njunto de entradas, para as quais desejam os verificar se as saídas são as
corretas. U m a das m aneiras de se fornecer as entradas é desenhando as form as de onda das
entradas do circuito. U m a form a de onda de entrada é um a linha que vai da esquerda para
a direita, representando o valor da entrada à m edida que o tem po avança para a direita. Em
m om entos diferentes, a linha está alta para representar 1 ou baixa para representar 0, com o
m ostrado na Fig. 2.61 (a). D epois de estarm os satisfeitos com as nossas form as de onda de en ­
trada, instruím os o sim ulador a sim ular o nosso circuito usando as form as de onda de entrada
dadas. O sim ulador determ ina quais são as saídas do circuito para cada com binação exclusiva
de entradas e gera as form as de onda das saídas, com o m ostrado na Fig. 2 .6 l(b ). E ntão, p o ­
dem os conferir se as form as de onda de saída estão em concordância com os valores de saída
que estávam os esperando para cada entrada. Essa verificação pode ser feita visualm ente ou,
então, fornecendo certas expressões de verificação (freqüentem ente cham adas de asserções)
ao sim ulador.
Projeto Lógico Combinacional 101

A sim ulação ainda não garante que o nosso circuito está correto, m as aum enta a nossa
confiança.

Comportamento não ideal das portas - atraso de tempo


Idealm ente, as saídas das portas lógicas d e­
veriam m udar de valor instantaneam ente em
respostas a alterações cm suas entradas. Nos
diagram as de tem po anteriores deste cap í­
tulo, assum iu-se que as portas ideais tinham 1 1

esse atraso nulo, com o m ostrado novam ente


o- 0
na Fig. 2.62(a) para o caso de um a porta OR.
Infelizm ente, as saídas das portas reais não 1 1
m udam de valor im ediatam ente m as, pelo
contrário, após um breve intervalo de tem po. o- 0
A final de contas, m esm o o m ais veloz dos 1 1
autom óveis não pode acelerar de 0 a lü ü
km /h em O segundo. O atraso nas portas é 0 0'
devido em parte ao fato de que os transisto­ tempo tempo
res não são chaveados instantaneam ente do (a) (b)
estado de não condução para o de condução Figura 2.62 Diagrama de tempo de uma porta
(ou vice-versa) - por exem plo, leva algum OR: (a) sem atraso de porta, (b) com atraso.
tem po para que os elétrons se acum ulem no
canal de um transistor nM O S. A lém disso, a corrente elétrica viaja a um a grande velocidade,
a qual, em bora m uito elevada, não é ainda infinitam ente rápida. A lém disso, os lios não são
perfeitos e podem retardar a corrente elétrica devido a características “parasíticas” com o ca-
pacitância e indutância. O d iagram a de tem po da Fig. 2.62(b) ilustra com o a saíd a de um a
porta real é ligeiram ente diferente da ideal depois de ocorrerem algum as alterações nas en ­
tradas. O s atrasos nas portas C M O S m odernas podem levar m enos de um nanossegundo para
responder às alterações - extrem am ente rápidos, m as ainda não nulos.

Demultiplexadores e codificadores
D ois com ponentes adicionais, dem ultiplexadores e codificadores, tam bém podem ser co n si­
derados blocos construtivos com binacionais. No entanto, esses com ponentes são bem m enos
usados do que os seus opostos, os m ultiplexadores e os decodificadores. No entanto, por um a
questão de com pletude, irem os introduzir brevem ente aqui esses com ponentes adicionais.
Vocé poderá notar que ao longo deste livro os dem ultiplexadores e codificadores não apare­
cem em m uitos exem plos, se é que aparecem .

Demultiplexador
Um dem ultiplexador tem aproxim adam ente o com portam ento oposto ao de um m ultiplexa-
dor. De form a específica, um demultiplexador 1xM tem um a en trad a de dados e, com base
nos valores de log2(M ) linhas de seleção, passa essa entrada para um a das M saídas. A s outras
saídas perm anecem em 0.

Codificador
Um codificador tem o com portam ento oposto ao de um decodificador. De form a específica,
um decodificador log,(/?) tem n entradas e log2(m ) saídas. D as n en trad as, assum e-se que
apenas um a delas, em qualquer m om ento dado, é 1 (esse seria o caso se a entrada consistisse
em um a chave deslizante ou rotativa com n posições possíveis, por exem plo). O codificador
coloca um valor binário nas log2(//) saídas indicando qual das n entradas é 1. Por exem plo, um
codificador 4x2 tem quatro entradas d3, d2, d l e dO e duas saídas e l e eO. Q uando a entrada
102 Sistemas Digitais

é 0001, a saída é 00. Para 0010. a saída é 01. Para 0100, a saída é 10 e para 1000, a saída é 11.
Em outras palavras, d0=l resulta na saída de 0 em binário, d 1=1 resulta na saída de 1 em biná­
rio, d2=l resulta na saída de 2 em binário e d3=l resulta na saída de 3 em binário.
Um codificador de prioridade tem com portam ento sim ilar, m as lida com situações em
que m ais de um a entrada são 1 ao m esm o tem po. Um codificador de prioridade d á prioridade
à entrada m ais elevada que tem um 1 e fornece o valor binário dessa entrada. Por exem plo,
se um codificador de prioridade 4x2 tiver as entradas d3 e d l iguais a 1 (de m odo que as
entradas são 1010), o codificador de prioridade dará prioridade a d3 e, portanto, produzirá a
saída 11.

► 2.11 OTIMIZAÇÕES ETRADEOFFS EM LÓGICA C0MBINACI0NAL


(VEJA A SEÇÃO 6.2)
A s seções anteriores deste capítulo descreveram com o criar os circuitos com binacionais bá­
sicos. N este livro, o conteúdo desta seção, Seção 2.11, está de fato na Seção 6.2, onde se des­
creve com o m elhorar esses circuitos (m enores, m ais rápidos, etc.) - ou seja, com o fazer oti­
m izações e tradeoffs. U m a m aneira de se usar este livro é tratando das otim izações e tradeoffs
logo após a introdução d o projeto lógico com binacional, ou seja, agora (com o S eção 2 . 11).
Um uso alternativo é tratar das otim izações e tradeoffs m ais tarde (com o Seção 6.2), após ter
introduzido tam bém o projeto seqüencial básico, os com ponentes de bloco operacional e o
projeto em nível de transferência entre registradores - ou seja, após os C apítulos 3 ,4 e 5.

► 2.12 DESCRIÇÃO DE LÓGICA COMBINACIONAL USANDO LINGUAGENS DE


DESCRIÇÃO DE HARDWARE (VEJA A SEÇÃO 9.2)
As linguagens de descrição de hardw are (H D L s) perm item aos projetistas descrever seus
circuitos usando um a linguagem textual ao invés de usar os desenhos dos circuitos. E sta se­
ção, Seção 2 . 12, introduz o uso de H D Ls para descrever a lógica com binacional. N este livro,
o conteúdo desta seção está fisicam ente na Seção 9.2. U m a m aneira de se usar este livro é
introduzir as H D L s agora (com o Seção 2.12), im ediatam ente após a lógica com binacional
básica ter sido introduzida. Um uso alternativo c introduzir as H D Ls m ais tarde (com o Seção
9.2), após ter obtido dom ínio dos projetos com binacional e seqüencial básicos e em nível de
transferência entre registradores.

► 2.13 RESUMO D0 CAPITULO


A Seção 2 . 1 introduziu a idéia de se usar um circuito custom izado para se im plem entar um
com portam ento desejado de sistem a e um a lógica com binacional. Esta últim a é definida na
form a de um circuito digital, cujas saídas são um a função das entradas atuais do circuito. A
Seção 2.2 forneceu um a breve história das chaves digitais, com eçando com os relés da década
de 1930 e chegando aos transistores C M O S de hoje. A m arca principal desse período é a ve­
locidade surpreendente com que o tam anho e o atraso das chaves vem encolhendo continua­
m ente por diversas décadas, chegando aos ICs capazes de alojar um bilhão ou m ais de transis­
tores. A Seção 2.3 descreveu o com portam ento básico de um transistor C M O S - com apenas
o suficiente de inform ação para elu cid ar o m istério de com o funcionam os transistores. A
Seção 2.4 introduziu três blocos construtivos fundam entais que são usados na construção de
circuitos digitais - as portas A N D , as portas O R e as portas N O T (inversores), com as quais é
m uito m ais fácil de se trabalhar do que com transistores. A Seção 2.5 m ostrou com o a álgebra
booleana poderia ser usada para rep resen tar circuitos construídos a partir de portas A N D ,
O R e NOT. perm itindo-nos construir e m anipular circuitos usando a m atem ática - um co n ­
Projeto Lógico Combinacional 103

ceito extrem am ente poderoso. A Seção 2.6 introduziu diversas representações diferentes das
funções booleanas, a saber, equações, circuitos e tabelas-verdade. A Seção 2.7 descreveu um
procedim ento direto de três passos para o projeto de circuitos com binacionais e deu diversos
exem plos de construção de circuitos reais usando esse procedim ento. A Seção 2.8 descreveu
por que as portas N A N D e N O R são na realidade m ais com um ente usadas do que as portas
A N D e G R na tecnologia C M O S, e m ostrou que q u alq u er circuito co n stru íd o com portas
A N D , O R e N O T p o d eria ser co n stru íd o usando apenas portas N A N D ou apenas N O Rs.
A quela seção introduziu tam bém duas outras portas com um ente usadas, X O R e X N O R . A
Seção 2.9 introduziu dois blocos construtivos adicionais que são com um ente usados, os de-
codificadores e os m ultiplexadores. A Seção 2.10 introduziu as ferram entas de captura de
esquem áticos, que nos perm item desenhar os circuitos de m odo que possam ser lidos pelos
program as de com putador, e introduziu tam bém a sim ulação, a qual gera as form as de onda
de saída que correspondem às form as de onda de entrada, fornecidas pelo usuário, de m odo
a nos ajudar a verificar se criam os corretam ente um circuito. A quela seção discutiu tam bém
com o as portas reais apresentam um pequeno atraso entre o instante em que as entradas m u­
dam de valor c o instante em que a saída da porta se altera. N aquela seção, tam bém foram
introduzidos alguns blocos construtivos com binacionais que são m enos com um ente usados,
os dcm ultiplexadores e os codificadores.

2.14 EXERCÍCIOS
Os exercícios assinalados com um asterisco (*) são mais desafiadores.

SEÇÃO 2.2: CHAVES


2.1 Um microprocessador em 1980 usava cerca de 10.000 transistores. Quantos desses microproces­
sadores caberiam em um chip moderno com l bilhão de transistores?
2.2 O primeiro microprocessador Pentium linha cerca de 3 milhões de transistores. Quantos desses
microprocessadores caberiam em um chip moderno com l bilhão de transistores?
2.3 Defina a lei de Moore.
2.4 Assuma que, cm um dado ano, um chip de um certo tamanho, usando o estado da arte cm tecno­
logia, pode conter I bilhão de transistores. Assumindo que a lei de Moore pode ser aplicada, um
chip de mesmo tamanho será capaz de alojar quantos transistores em dez anos?
2.5 Assuma que um telefone celular contém 50 milhões de transistores. De que tamanho seria esse
telefone se ele usasse válvulas termiônicas ao invés de transistores, considerando-se que uma vál­
vula ocupa aproximadamente um volume de 15 centímetros cúbicos?
2.6 Um processador moderno usado em computadores de mesa (desk-top), como o Pentium 4, tem
cerca de 300 milhões de transistores. De que tamanho seria esse processador se usássemos vál­
vulas, como as da década de 1940, assumindo que cada uma ocupa uma área de uma polegada
quadrada (6.5 centímetros quadrados)?

SEÇÃO 2.3: 0 TRANSISTOR CMOS

2.7 Descreva o funcionamento do circuito construído com transis­


tores CMOS que está mostrado na Fig. 2.63, indicando clara­
mente quando o circuito conduz.
2.8 Se aplicarmos uma tensão à porta de um transistor CMOS, por
que a corrente não flui da porta à fonte ou dreno?
Figura 2.63 C ircuito que
com bina dois transistores
CMOS.
104 Sistemas Digitais

SEÇÃO 2.4: PORTAS LÓGICAS BOOLEANAS - BLOCOS CONSTRUTIVOS DOS


CIRCUITOS DIGITAIS

2.9 Qual operação booleana. AND. OR ou NOT. é apropriada para cada um dos seguintes casos:
(a) Detecção de movimento em qualquer um dos sensores de movimento que cercam uma casa
(um sensor fornece uma saída 1 quando detecta um movimento).
(b) Detecção de três botões sendo apertados simultaneamente (um botão fornece uma saída 1
quando 6 apertado).
(c) Detecção da ausência de luz usando um sensor luminoso (o sensor fornece uma saída 1 quando
detecta a luz).
2.10 Converta os seguintes enunciados em equações booleanas:
(a) Um detector de inundação deve ligar uma bomba quando é detectada a presença de água e o
sistema está habilitado.
(b) Um sistema domestico de monitoramento de energia deve soar um alarme quando ê de noite,
uma luz ê detectada dentro de um aposento e nenhum movimento é detectado.
(c) Um sistema de irrigação deve abrir a válvula de água de um esguicho quando o sistema está
habilitado e chuva nem temperaturas congelantes são detectadas.
2.11 Avalie a equação booleana F = (a AND b) OR c OR d para os seguintes valores das variáveis a,
b. c e d.
(a) a=l. b=l, c=l, d=0
(b) a=0. b=l, c=l, d=0
(c) a=l,b=l,c=0,d=0
(d) a=l, b=0, c=l, d=l
2.12 Avalie a equação booleana F = a AND (b OR c) AND d para os seguintes valores das variáveis a.
b. c e d.
(a) a=l, b=l, c=0, d=l
(b) a=0. b=0, c=0, d=l
(c) a=l,b=0.c=0,d=0
(d) a=l, b=0, c=l, d=l
2.13 Avalie a equação booleana F = a AND (b OR (c AND d )) para os seguintes valores das variáveis
a. b. c e d.
(a) a=l, b=l, c=0, d=l
(b) a=0, b=0. c=0,d=l
(c) a=l, b=0, c=0,d=0
(d) a=l. b=0. c=l, d=l
2.14 Mostre os caminhos de condução e o valor de saída do circuito transistorizado da porta OR da Fig.
2 .11 quando: (a) x s 1 e y s 0. (b) x = 1 e y = 1.
2.15 Mostre os caminhos de condução e o valor de saída do circuito transistorizado da porta AND da
Fig. 2.13 quando: (a) x = 1 e y = 0, (b) x = 1 e y = 1.
2.16 Converta cada uma das seguintes equações diretamente para circuitos em nível de porta:
(a) F = ab 1 + bc + c 1
(b) F = ab + b ' c ' d '
(c) F = ((a + b 1) * ( c ‘ + d)) + (c + d + e ‘)
2.17 Converta cada uma das seguintes equações diretamente para circuitos em nível de porta:
(a) F = a 'b ' + b 'c
(b) F = ab + bc + cd + de
(c) F = ( ( a b ) 1 + (c)) + (d + e f ) 1
2 .1 8 Converta cada uma das seguintes equações diretamente para circuitos em nível de porta:
(a) F = abc + a'bc
(b) F = a + bed1 + ae + f
(c) F = (a + b) + (c1 *(d + e + fg))
Projeto Lógico Combinacional 105

2.19 Queremos projetar um sistema que aciona uma campainha elétrica dentro de nossa casa sempre
que for detectado u m movimento no lado de fora à noite. Assumindo que temos um sensor de m o ­
vimento com saída M, que indica quando u m movimento é detectado (M=l significa a detecção de
u m movimento), e u m sensor luminoso com saída L, que indica quando uma luz é detectada (L=l
significa a detecção de luz). A campainha dentro de casa tem uma entrada simples C que, quando
está e m 1,dispara u m som alto de alarme. Usando portas AND, O R e NOT, crie um circuito digital
simples para implementar o sistema de detecção de movimento à noite.
2.20 U m DJ (“d is c jo c k e y " é alguém que toca música em uma festa) gostaria de u m sistema para con­
trolar automaticamente uma luz strobo e u m globo espelhado em um salão de dança dependendo
de se há música tocando e se alguém está dançando. Assuma que temos um sensor sonoro com
saída S que indica quando a música está tocando (S=l significa que a música está tocando) e u m
sensor de movimento M que indica quando há pessoas dançando (M=l significa que há pessoas
dançando). O strobo tem uma entrada L que acende a luz quando L é 1,e o globo tem uma entrada
B que põe a bola a girar quando B é 1. O DJ quer que o globo gire apenas quando a música está
tocando e ninguém está dançando e ele quer também que o strobo acenda somente quando há m ú ­
sica tocando e as pessoas estão dançando. Usando portas AND. O R e NOT, crie u m circuito digital
simples para ativar: (a) o globo e (b) a luz strobo.
2.21 Queremos descrever de forma concisa a seguinte situação, usando uma equação booleana. Vamos
querer despedir u m técnico de futebol (fazendo D=l) se ele for mal humorado (representado por
M=l). Se ele não for mal humorado mas estiver lendo uma temporada de insucessos (representada
pela variável booleana 1= 1), iremos despedi-lo de qualquer forma. Escreva uma expressão que
traduz a situação diretamente em uma equação para D, sem qualquer simplificação.

SEÇÃO 2.5: ÁLGEBRA BOOLEANA


2.22 Para a função F = a + a ' b + aed + c 1:
(a) Liste todas as variáveis.
(b) Liste todas as literais.
(c) Liste todos os termos de produto.
2.23 Para a função F = a 'd' + a 'c + b'c d ' + cd:
(a) Liste todas as variáveis.
(b) Liste todas as literais.
(e) Liste todos os termos de produto.
2.24 Façamos com que a variável T represente ser alto, H, ser pesado e F. ser rápido. Vamos considerar
alguém que é baixo como sendo não alto, leve como não pesado e lento como não rápido. Escreva
uma equação booleana para representar o seguinte:
(a) Você poderá andar de carrossel em um parque de diversões se você for ou alto e leve. ou baixo
e pesado.
(b) Você NÃO poderá andar de carrossel em um parque de diversões se você ou for alto e leve, ou
baixo e pesado. Use álgebra para transformar a equação em uma soma de produtos.
(c) Você poderá ser escolhido para jogar em um certo lime de basquete se você for alto e rápido,
ou alto e lento. Simplifique essa equação.
(d) Você NÃO poderá ser escolhido para jogar em um certo time de futebol se você for baixo e
lento, ou se for leve. Transforme a equação em uma soma de produtos.
(e) Você poderá ser escolhido para jogar tanto no time de basquete como no de futebol de acordo
com os critérios anteriores. Sugestão: combine as duas equações em uma equação aplicando o
operador AND a elas.
2.25 Em relação a um pacote, façamos com que a variável S represente ser pequeno, H, ser pesado e E,
ser caro. Vamos considerar um pacote grande como sendo não pequeno, leve como não pesado e
barato como não caro. Escreva uma equação booleana para representar o seguinte:
(a) Você poderá entregar pacotes apenas se eles forem ou pequenos e caros, ou grandes e baratos.
(b) Você NÃO poderá entregar um pacote como o do item anterior. Use álgebra para transformar
a equação em uma soma de produtos.
106 Sistemas Digitais

(c) Você poderá carregar os pacotes em seu caminhão apenas se os pacotes forem pequenos e
leves, pequenos e pesados, ou grandes e leves. Simplifique a equação.
(d) Você N Ã O poderá carregar os pacotes descritos no item anterior. Use álgebra para transformar
a equação em uma soma de produtos.
2.26 Use manipulação algébrica para converter a seguinte equação para a forma de soma de produtos:
F = a(b + c)(d') + ac'(b + d)
2.27 Use manipulação algébrica para converter a seguinte equação para a forma de soma de produtos:
F = a'b(c + d') + a(b' + c) + a(b + d)c
2.28 Use a lei de DeMorgan para encontrar o inverso (NOT) da seguinte equação: F = abc + a'b.
Reduza á forma de soma de produtos. Sugestão: Comece com F' = (abc + a1b)1
2.29 Use a lei de DeMorgan para encontrar o inverso (NOT) da seguinte equação: F = ac1 + abd1 + acd.
Reduza à forma de soma de produtos.

SEÇÃO 2.6: REPRESENTAÇÕES DE FUNÇÕES BOOLEANAS


2.30 Converta as seguintes equações booleanas em circuitos di­
gitais:
(a) F(a,b,c) = a'bc + ab
(b) F(a,b,c) = a'b
Figura 2.64 Circuito combi nacional /’. (c) F(a,b,c) = abc + ab + a + b + c
(d) F(a,b,c) = c'
2.31 Crie uma representação com equação booleana para o cir­
cuito digital da Fig. 2.64.
2.32 Crie uma representação com equação booleana para o cir­
cuito digital da Fig. 2.65.
2.33 Converta cada uma das equações booleanas do Exercício
2.30 e m uma tabela-verdade.
2.34 Converta cada uma das seguintes equações booleanas em
uma tabela-verdade:
(a) F(a,b,c) = a' + bc'
(b) F(a,b,c) = (ab)' + ac' + bc
Figura 2.65 Circuito combinacional G . (c) F(a,b,c) = ab + ac + ab'c1 + c'
(d) F(a,b,c,d) = a'bc + d'
2.35 Preencha as colunas da Tabela 2.8, usando a equação:
F= ab + b\

TABELA 2.8 T abela-verdade

Entradas Saídas

a b ab b' ab+b' F
0 0
0 1
1 0
1 1
Projeto Lógico Combinacional 107

TABELA 2.9 Tabela- 2.36 Converta a função F mostrada como tabela-verdade na Tabela 2.9 em uma equa­
verdade ção. Não minimize a equação.
a b c F 2.37 Use manipulação algébrica para minimizar a equação obtida no Exercício 2.36.

0 0 0 0 2.38 Converta a função F mostrada como tabela-verdade na Tabela 2. IO em uma


equação. Não minimize a equação.
0 0 1 1
2.39 Use manipulação algébrica para minimizar a equação obtida no Exercício 2.38.
0 1 0 1
2.40 Converta a função F mostrada como tabela-verdade na Tabela 2 .1 1 em uma
0 1 1 1 equação. Não minimize a equação.
1 0 0 0 2.41 Use manipulação algébrica para minimizar a equação obtida no Exercício 2.40.
1 0 1 1 2.42 Crie uma tabela-verdade para o circuito da Fig. 2.64.
1 1 0 1 2.43 Crie uma tabela-verdade para o circuito da Fig. 2.65.
1 1 1 1 2.44 Converta a função F mostrada como tabela-verdade na Tabela 2.9 em um circuito
digital.
TABELA 2.10 Tabela- 2.45 Converta a função F mostrada como tabela-verdade na Tabela 2.10 em um cir­
verdade cuito digital.

a b c F 2.46 Converta a função F mostrada como tabela-verdade na Tabela 2.11 em um cir­


cuito digital.
0 0 0 1
2.47 Converta as seguintes equações booleanas para a forma canônica da soma de
0 0 1 0 mintermos:
0 1 0 1 (a) F (a,b ,c) = a'b c + ab
(b) F (a,b ,c) = a'b
0 1 1 0
(c) F (a,b ,c) = abc + ab + a + b + c
1 0 0 1 (d) F (a,b ,c) = c'
1 0 1 1 2.48 Determine se as funções booleanas F = (a + b ) ' *a c G = a + b' são equivalen-
tes, usando (a) manipulação algébrica e (b) tabelas-verdade.
1 1 0 1
2.49 Determine se as funções booleanas F = a b 'e G = ( a 1 + a b )1 são equivalentes,
1 1 1 0
usando (a) manipulação algébrica e (b) tabelas-verdade.
2.50 Determine se a função booleana G =
TABELA 2.11 Tabela- a ' b ' c + ab 'c + abc' + abc éequi­
verdade valente à função representada pelo
a b c F circuito da Fig. 2.66.
2.51 Determine se os dois circuitos da
0 0 0 0
Fig. 2.67 são equivalentes, usando
0 0 1 1 (a) manipulação algébrica e (b) ta-
0 1 0 0 bclas-verdade.
Figura 2.66 Circuito combinacional H.
0 1 1 0

1 0 0 0

1 0 1 0

1 1 0 1

1 1 1 1

Figura 2.67 Circuitos combinacionais FcG.


108 Sistemas Digitais

2.52 *A Fig. 2.68 mosira dois circuitos nos quais as entradas nào receberam nomes.
(a) Determine se os dois circuitos süo equivalentes. Sugestão: Tente todas as possibilidades de
nomes para as entradas de ambos os circuitos.
(b) Quantas comparações de circuitos você terá de realizar para determinar se dois circuitos, com
IO entradas sem nomes, são equivalentes?

Figura 2.68 Circuitos combinacionais F e (7.

SEÇÃO 2 .7 :0 PROCESSO DE PROJETO LÓGICO COM BINACIONAL

2.53 Um museu tem três salões, cada um com um sensor de movimento (m0. ml e m2) que fornece uma
saída 1 quando é detectado algum movimento. À noite, a única pessoa no museu é o guarda da se­
gurança que caminha de salão a salão. Crie um circuito que soa um alarme (colocando a sua saída
Aem 1) apenas quando, em algum momento, um movimento ê detectado em mais de um salão isto
ê, em dois ou três salões), significando que deve haver um ou mais intrusos no museu. Comece
com uma tabela-verdade.
2.54 Crie um circuito para o museu do Exercício 2.53 que detecta se o guarda está fazendo a ronda no
museu de maneira apropriada. Isso pode ser detectado quando há exatamente um sensor de movi­
mento em 1. (Se nenhum sensor estiver em 1, o guarda deve estar sentado ou dormindo.)
2.55 Considere a função do alarme de segurança para museu do Exercício 2.53. mas para um museu
com 10 salões. Uma tabela-verdade não 6 um bom ponto de partida (linhas demais), nem uma
equação que descreva quando o alarme deve soar (equações demais). No entanto, a inversa (NOT)
da função de alarme pode ser obtida rapidamente na forma de uma equação. Projete o circuito
para um sistema de segurança de 10 salões, projetando o inverso da função e, então, simplesmente
acrescentando um inversor antes da saída da função.
2.56 Um roteador de rede interconecta diversos computadores e permite-lhes enviar mensagens en­
tre si. Se dois ou mais computadores enviarem mensagens simultaneamente, ela colidirão e as
mensagens terão de ser enviadas novamente. Usando o procedimento de projeto combinacional
da Tabela 2.5, crie um circuito de detecção de colisão para um roteador que interconecta quatro
computadores. O circuito tem quatro entradas denominadas MO a M3 que estão em 1 quando o res­
pectivo computador está enviando uma mensagem ou em 0, cm caso contrário. O circuito tem uma
saída denominada C que é 1 quando uma colisão é detectada ou 0. em caso contrário.
2.57 Usando o procedimento de projeto combinacional da Tabela 2.5, crie um detector de número
primo de quatro bits. O circuito tem quatro entradas, N3, N2. NI e NO que correspondem a um nú­
mero de quatro bits (N3 ê o bit mais significativo) c uma saída denominada P que fornece 1 quando
a saída 6 um número primo ou 0. em caso contrário.
2.58 Um carro tem um detector de nível baixo de combustível que fornece o nível corrente de combus­
tível na forma de um número binário de três bits, com 000 significando vazio e 111 significando
cheio. Crie um circuito que acende a luz indicadora “Pouco combustível” (fazendo uma saída L ir
para 1) quando o nível de combustível cai para abaixo do nível 3.
2.59 Um carro tem um sensor para pressão baixa de pneu que fornece a pressão atual do pneu na forma
de um número binário de cinco bits. Crie um circuito que acende a luz indicadora “Pressão de
pneu baixa" (fazendo uma saída L ir para 1) quando a pressão cai para abaixo do nível 16. Suges­
tão: pode ser mais fácil criar um circuito que detecta a função inversa. Você poderá então acrescen­
tar simplesmente um inversor à saída do circuito.
Projeto Lógico Combinacional 109

SEÇÃO 2.8: M A IS PORTAS

2.60 Mostre os caminhos de condução e o valor de saída do circuito transistorizado da porta N A N D da


Fig. 2.45 quando: (a) x = 1 e y = 0 e (b) x = 1 e y = 1.
2.61 Mostre os caminhos de condução e o valor de saída do circuito transistorizado da porta N O R da
Fig. 2.45 quando: (a) x = 1 e y = 0 e (b) x = 0 e y = 0.
2.62 Mostre os caminhos de condução c o valor de saída do circuito transistorizado da porta A N D da
Fig. 2.46 quando: (a) x = l e y = 1 e (b) x = 0 e y = 1.
2.63 Duas pessoas, indicadas pelas variáveis A e B, querem dar uma volta na sua motocicleta. Escreva
uma equação booleana para indicar que exatamente uma das duas pessoas pode vir na moto (A=l
significa que A pode vir e A=0 significa que não). Use então X O R para simplificar a sua equação.
2.64 Simplifique a seguinte equação usando X O R sempre que possível: F = a'b + ab1 + cd' + c'd
+ ac.
2.65 Use X O R para criar u m circuito que fornece u m 1 sempre que o número de ls nas entradas a. b e
c e ímpar.
2.66 Use X O R ou N O R para criar um circuito que detecta quando todas as entradas a. b e c são Os.
2.67 Use X O R ou X N O R para criar u m circuito que detecta quando há um número par de ls nas entra­
das a, b e c.
2.68 Mostre que uma porta X O R de quatro bits é uma função ímpar (no sentido de que a saída é 1 ape­
nas quando o número de ls na entrada é ímpar).

SEÇÃO 2.9: DECODIFICADORES E MULTIPLEXADORES

2.69 Projete u m decodificador 3x8 usando portas AND. O R e NOT.


2.70 Projete u m decodificador 4x 16 usando portas AND. O R e NOT.
2.71 Projete u m decodificador 3x8 com habilitação usando portas AND. O R e NOT.
2.72 Projete um multiplexador 8x1 usando portas AND, O R e NOT.
2.73 Projete um multiplexador 16x I usando portas AND. O R e NOT.
2.74 Projete u m multiplexador 4x1 de quatro bits usando multiplexadores 4x1.
2.75 Crie u m circuito que toca uma campainha sempre que u m movimento é detectado em u m de dois
sensores de movimento. U m a chave S determina qual sensor deve receber atenção: S=0 significa
tocar a campainha quando há movimento no sensor 1, S=1 significa o mesmo com o sensor 2.
2.76 U m centro de entretenimento domestico tem quatro fontes diferentes de áudio que podem ser tocadas
com o mesmo conjunto de alto-falantes. Cada uma das fontes de áudio, denominadas A, B, C e D. e
conectada usando-se oito fios. pelos quais o sinal de áudio digitalizado é transmitido. O usuário sele­
ciona qual fonte de áudio deverá ser tocada usando uma chave rotativa com quatro saídas, s0. sl, s2 e
$3, das quais apenas uma será 1 em um dado momento. Se $0=1, a fonte de áudio A deverá ser tocada,
se sl=l, a fonte de áudio B deverá ser tocada, e assim por diante. Crie um circuito digital com uma
única saída 0 de oito bits que fornecerá em sua saída a fonte de áudio selecionada pelo usuário.

SEÇÃO 2.10: CONSIDERAÇÕES ADICIO NAIS

2.77 Projete um demultiplexador lx4 usando portas AND. O R e NOT.


2.78 Projete u m demultiplexador 1x8 usando portas AND. O R e NOT.
2.79 Projete u m codificador 4x2 usando portas AND, O R e NOT.
2.80 Projete u m codificador 8x3 usando portas AND, O R e NOT. Assuma que apenas uma entrada será
1 cm um momento qualquer.
2.81 Projete u m codificador de prioridade 4x2, usando portas AND, O R e NOT. Assuma que quando
todas as entradas são 0s, o código de saída é 00.
110 Sistemas Digitais

► PERFIL DE PROJETISTA
Durante a gradua­ Pentium II da Intel. Essa experiência foi bem diferente.
ção. Samson apre­ “E m uma equipe menor de projeto, cada pessoa tinha
ciava física e mate­ mais responsabilidade e a eíiciência global era elevada.
mática e durante E m uma equipe grande, cada pessoa trabalhava em uma
seus estudos avan­ parte específica do projeto - o c h ip foi dividido em blo­
çados concentrou- cos. cada bloco em unidades e cada unidade tinha um
se no projeto de líder. Nós nos baseávamos fortemente em fluxos e me­
circuitos integrados todologias de projeto."
(ICs). acreditando Samsom viu os picos e vales da indústria durante
que a industria ti­ as duas últimas décadas: “C o m o em qualquer indústria,
nha u m grande fu­ o mercado de empregos na área de ICs tem seus altos e
turo. Agora, anos baixos." Ele acredita que a indústria sobrevive aos m o ­
depois, ele se dá mentos de baixa em grande parte devido à “inovação".
conta de que estava certo: “Olhando para trás, nesses
“As marcas de renome vendem produtos, mas sem a ino­
últimos 20 anos de tecnologia, experimentamos quatro
vação. os mercados vão para algum outro lugar. Assim,
grandes revoluções: a revolução do PC. a revolução di­
temos de ser bem inovadores, criando novos produtos
gital, a revolução da comunicação c a revolução da In­
para que estejamos à frente na competição global."
ternet - todas tornadas possíveis pela indústria dos ICs.
No entanto, “a inovação não dá e m árvores", Sa­
O impacto dessas revoluções sobre a nossa vida diária é
mson salienta. “Há dois tipos de inovações. A primeira
profunda."
é a invenção, que requer uma boa compreensão da fí­
Ele descobriu que seu emprego era “muito desa­
fiante, interessante e empolgante. Eu desenvolvi con- sica que está por trás da tecnologia. Por exemplo, para
tinuamente novas habilidades para manter e fazer meu passar da T V analógica para a digital, devemos saber
trabalho de forma mais eficiente.” como os olhos das pessoas percebem as imagens, que
U m dos projetos-chave de Samson foi em televisão partes podem ser convertidas para a forma digital,
digital, ou seja, a T V de alta definição (HDTV), que en­ como as imagens digitais podem ser produzidas em
volveu empresas como Zenith, Philips e Intel. Ele lide­ um c h ip de silício, etc. O segundo tipo de inovação
rou a equipe de projeto de doze pessoas que construiu reutiliza a tecnologia já existente em novas aplicações.
o primeiro c h ip de cristal líquido da Intel em silício Por exemplo, podemos reutilizar as tecnologias es­
(LCoS- L iq u id C r y s t a l on S ilic o n ) para relroprojeção paciais avançadas em um novo produto não-espacial
de HDTV. “Os ch ip s LCoS tradicionais são analógicos. atendendo a um mercado maior. A empresa e-Bay é
Eles aplicam diferentes tensões analógicas a cada pixel u m outro exemplo - ela reutilizou a tecnologia da In­
do ch ip de exibição, de modo que possam produzir uma ternet para realizar leilões o n -lin e . As inovações levam
imagem. No entanto, o LCoS analógico é muito sen­ a novos produtos e consequentemente a novos empre­
sível ao ruído e ás variações de temperatura. Usamos gos por muitos anos.
sinais digitais para realizar modulação por largura de Desse modo, Samson aponta que “a indústria está
pulso em cada pixel." Samson está muito orgulhoso das contando com que os novos engenheiros oriundos das
realizações da sua equipe: “A qualidade da nossa ima­ universidades sejam inovadores e que possam continuar
gem de H D T V era muito superior”. a impulsionar a indústria de alta tecnologia. Quando
Samsom também trabalhou com a equipe de pro­ você se formar na universidade, caberá a vo cê tornar as
jeto de 200 pessoas que desenvolveu o processador coisas melhores."
Projeto Lógico Seqiiencial -
Blocos de Controle

► 3.1 INTRODUÇÃO
A saída de um circuito com binacional é um a função que depende apenas das entradas atuais
do circuito. Um circuito com binacional não tem m em ória - não podem os arm azenar bits em
um circuito com binacional e m ais tarde ler esses bits. O s circuitos com binacionais em si são
m uito lim itados em sua utilidade. Por outro lado, usualm ente os projetistas usam os circuitos
com binacionais com o parte de circuitos m aiores, cham ados de circuitos seqüenciais - circu i­
tos que realm ente tem m em ória. Um circuito seqiiencial 6 um circuito cujas saídas dependem
não som ente das entradas atuais, m as tam bém do seu estado atual, que c o conjunto de todos
os bits arm azenados no circuito. O estado do circuito, por sua vez, depende da sequência
passada de valores que apareceram nas entradas do circuito.
Um exem plo cotidiano de um circuito com binacional é um a cam painha: aperte o botão
(a entrada) agora e a cam painha (a saída) loca. A perte o botão de novo e a cam painha toca
novam ente. A perte o botão am anhã, ou na próxim a sem ana, e a cam painha tocará da m esm a
form a a cada vez. U m a cam painha não tem estado, nenhum a m em ória - seu valor de saída
(independentem enlc de se a cam painha está tocando ou não no m om ento) irá depender so­
m ente do valor atual de sua entrada (se o botão está apertado ou não). P o r outro lado, um
exem plo de circuito seqiiencial é um sistem a de porta autom ática de garagem - aperte o botão
(a entrada) agora e a porta abre. A perte o botão novam ente e desta vez a porta se fecha. A perte
o botão am anhã e a porta se abre novam ente. A saída do sistem a (se a porta deve abrir ou fe­
char) dependerá do estado do sistem a (se a porta, no m om ento, está aberta ou fechada), o que
por sua vez dependerá da sequência de valores passados desde o m om ento em que ligam os
o sistem a.
A m aioria dos sistem as digitais com os quais você está fam iliarizado contém circuitos se­
quenciais que arm azenam bits. U m a calculadora de bolso deve conter um circuito seqiiencial,
porque ela deve arm azenar os núm eros fornecidos por você antes de o p erar com eles. Um a
câm era digital arm azena fotos. Um controlador de sem áforos arm azena inform ações que in­
dicam qual deles no m om ento está verde. Um circuito que faz um a contagem decrescente de
59 a 0 arm azena o valor atual da contagem para saber qual deve ser o valor seguinte.
N este capítulo, descreverem os alguns blocos construtivos básicos de circuitos seqüenciais
e o projeto de um a certa classe de circuitos seqüenciais conhecida com o blocos de controle.
112 Sistemas Digitais

3.2 ARMAZENANDO UM BIT - FLIP-FLOPS


Para construir um circuito seqüencial, precisa­
m os de um bloco construtivo que nos capacite Botão r * n Lâmpada azul
a arm azenar um bit. A rm azenar um bit significa "Chamar" 1------ 1 Armazena-
mento de •
que podem os arm azenar um bit no bloco (diga­ Botão um bit
m os um 1) e depois voltar para ver o que foi ar­ "Cancelar" «------ '
m azenado. C om o exem plo, suponha que queira­
m os construir o sistem a dc botão de cham ada de Figura 3.1 Sistema cie botão de cham ada
aerom oça da Fig. 3.1. Um passageiro do avião de aerom oça. Quando o botão “C ham ar”
pode apertar o botão de Chamar para que uma é pressionado, a luz acende-se e mantém-
pequena lâm pada azul seja acesa acim a do seu se assim depois que “C ham ar” é solto.
banco. Isso indica à aerom oça que o passageiro Quando o botão “Cancelar” é pressionado,
precisa de atendim ento. A lâm pada perm ane­ a luz apaga-se.
cerá acesa, m esm o depois de o botão de cham ar
ter sido solto. A lâm pada pode ser apagada pressionando-se o botão de Cancelar. C om o a
lâm pada deve perm anecer acesa, m esm o após o botão de cham ar ter sido solto, precisam os de
um m odo para “ lem brar” que o botão de ch am ar foi pressionado. Isso pode ser feito usando-
se um bloco de arm azenam ento de um bit e arm azenando um 1 no bloco quando o botão de
cham ar é apertado, ou um 0 quando o botão de cancelar é apertado. Nós ligam os a saída desse
bloco de arm azenam ento de um bit à lâm pada azul. A lâm pada acende quando a saída do
bloco é 1.
Para introduzir o projeto interno de um bloco de arm azenam ento de um bit com o esse,
vam os apresentar um a série de diversos circuitos, cada vez m ais com plexos, capazes de ar­
m azenar um bit - um latch SR básico, um latch SR sensível ao nível, um latch D sensível ao
nível e um flip-flop D sensível à borda. O flip-flop D será usado então para criar um bloco,
conhecido com o registrador, que é capaz de arm azen ar m ú ltip lo s bits e que serv irá com o
nosso principal bloco de arm azenam ento de bits, pelo restante do livro. C ad a circuito su­
cessivo elim ina algum problem a do anterior, chegando-se ao robusto flip-flop D e então, ao
registrador.
E steja ciente dc que os projetistas raram ente usam blocos de arm azenam ento dc bits que
não sejam os flip-flops D. A presentarem os os outros blocos principalm cntc para d ar ao leitor
a intuição do que está por baixo do projeto baseado em flip-flops D.

Realimentação - o método básico de armazenamento


O m étodo básico usado para arm azenar um bit em um circu ito digital é a realimentação
(feedback). Você com certeza j á experim entou a realim entação na form a de realim entação
de áudio, quando alguém eslava falando em um m icrofone e ficou à frente d o alto-falante,
fazendo com que um forte zunido contínuo saísse dos alto-falantes (o que por sua vez fez
com que todos tapassem seus ouvidos e rissem ). A pessoa gerou um som que foi captado pelo
m icrofone, saiu pelos alto-falantes (am plificado), foi captado novamente pelo m icrofone, de
novo saiu pelos alto-falantes (am plificado ainda m ais) e assim por
diante. Isso é a realim entação.
Em sistem as de áudio, a realim entação é irritante, m as é extre-
m am enic útil cm sistem as digitais. Intuitivam cntc, cm um a porta
lógica, sabem os que de algum m odo precisam os alim en tar a en ­
trada usando de volta a saída de um a porta lógica, de m odo que o
bit arm azenado fica dando voltas, com o um cão que corre atrás de
seu próprio rabo. Poderíam os tentar o circuito da Fig. 3.2. Figura 3.2 P rim eira
Suponha inicialm ente que Q seja 0 e S seja 0. Em algum m o­ tentativa (mal sucedida)
m ento, suponha que tornem os $ igual a 1. Isso fará com que Q de usar realim entação
torne-se 1 e esse 1 será realim entado de volta à porta O R, obri- para armazenar um bit.
Projeto Lógico Seqüencial - Blocos de Controle 113

gando Q a ser 1, e assim por diante. D esse m odo, m esm o que S volte a 0, Q perm anecerá em
1. Infelizm ente, d aí em diante, Q perm anecerá em 1. N ão tem os com o fazer Q voltar a 0. N o
entanto, esperam os agora que você tenha entendido a idéia básica da realim entação - usando-
a, nós arm azenam os com sucesso um 1.
D esenham os na Fig. 3.3 o diagram a de tem po do circuito tentativo de realim entação m os­
trado na Fig. 3.2. O bserve que assum im os que a porta OR tem um pequeno atraso entre a en ­
trada e a saída, com o discutido na Seção 2.10. Inicialm ente, vam os assum ir que am bas as en ­
tradas da porta O R são 0 (Fig. 3.3(a)). A seguir, tornam os S igual a 1 (Fig. 3.3(b)), o que leva
Q a tornar-se 1 um pouco depois (Fig. 3.3(c)). Isso, por sua vez, faz t tornar-se 1 um pouco
depois (Fig. 3.3(d)). F inalm ente, quando trazem os S de volta a 0 (Fig. 3.3(e)), Q perm anecerá
em 1 porque agora t é 1. A prim eira linha curva com seta indica que o evento de S passar de 0
para 1 faz com que ocorra o evento de Q passar de 0 para 1. P or sua vez, a segunda linha curva
com seta indica que o evento de Q passar de 0 para 1 faz com que ocorra o evento de t passar
de 0 para 1. E ntão, esse 1 continuará a circular, para sem pre, entre a saída e a entrada, sem que
haja m aneira de fazer $ obrigar Q a ser 0.

Figura 3.3 Análise do comportamento da

Latch SR
Dá para demonstrar que o circuito simples da
Fig. 3.4, chamado de latch SR básico, é capaz
de im plem entar o bloco construtivo que de­
sejamos para o arm azenam ento de um bit. O
circuito consiste apenas em um par de portas
NOR com interconexões cruzadas. Quando a
entrada S do circuito é tornada 1, a saída Q é
obrigada a se tornar 1, ao passo que, quando Figura 3.4 Latch SR básico.
R é tom ada igual a 1. Q é obrigada a se tom ar 1
s
0. Fazer ambas S e R iguais a 0 faz com que o
o valor de Q, seja qual for, perm aneça circu-
lando entre a saída e a entrada. Em
outras palavras, S “faz um set" no
Lem bre-se..

latch obrigando-o a ser 1, ao passo


que R “faz um resef no latch obri­
gando-o a ser 0 - daí as letras S
(para set) e R (para reset)*.

* N. cie T: O uso dos termos ingleses set, para carregar um latch


com I. e reset, para carregar um latch com 0. será mantido neste
livro, tendo em vista o seu uso consagrado em português. Figura 3.5 Latch SR, quando S=0 e R = L
114 Sistemas Digitais

Vam os ver porque o latch SR básico funciona com o tal. L em bre-se de que um a porta
N O R apresenta 1 na saída quando todas as entradas da porta são iguais a 0. Se pelo m enos
um a das entradas for 1, a porta N O R dará 0 na saída.
Suponha que façam os S=0 e R=l, com o no circuito de latch SR da Fig. 3.5, e que inicial­
m ente não saibam os quais são os valores de Q e t. C om o a porta inferior do circuito tem pelo
m enos um a entrada igual a 1 (R). a porta terá um 0 em sua saída - no d iagram a de tem po,
quando R torna-se 1, Q é obrigado a tornar-se 0. N o circuito, o 0 do Q realim enta a porta N O R
superior, que terá am bas as entradas em 0 e, portanto, a saída igual a 1. N o d iag ram a de
tem po, quando Q torna-se 0, t é obrigado a tornar-se 1. No circuito, esse 1 realim enta a porta
N O R inferior, que tem pelo m enos um a das entradas igual a 1 (na realidade, am bas as en tra­
das são 1), e assim a porta inferior continuará a ter 0 em sua saída. C onseqüentem ente, a saída
Q será 0 e todos os valores serão estáveis.
A gora suponha que façam os $=0 e R=0, 1
com o na Fig. 3.6. A porta inferior ainda tem
o
pelo menos uma das entradas igual a 1 (a en­
trada que vem da porta superior), de modo
que a porta inferior continua a fornecer um R
0 em sua saída. A porta superior continua a
ter am bas as entradas iguais a 0 e continua a
produzir um 1 em sua saída. A ssim , a saída
Q ainda será igual a 0. D esse m odo, o R=1 0
anterior armazenou um 0 no latch SR. Isso
tam bém é conhecido resetting do latch. Esse 1
Q
0 perm anecerá arm azenado m esm o quando Figura 3.6 Latch SR, 0
fazem os R retornar a 0. quando S=0 e R=0,
A gora, vam os fazer S=1 e R=0, com o na depois de R ter sido 1.
Fig. 3.7. A porta superior do circuito tem
agora um a entrada igual a 1, de m odo que
ela fornece 0 na sua saída - o diagram a de
tem po m ostra que a passagem de 0 para 1 R
de S obriga t a m udar de 1 para 0. A saída
0 da porta superior realim enta a porta in­
ferior, a qual agora tem am bas as entradas
iguais a 0 e fornece 1 em sua saída - o d ia­
gram a de tem po m ostra que a passagem de
1 para 0 de t obriga Q a m udar de 0 para 1.
A saída 1 da porta inferior (Q) realim enta a Q

porta superior, a qual tem pelo m enos um a Figura 3.7 Latch SR,
das entradas igual a 1 (na realidade, am bas quando S=1 e R=0.
as en trad as são 1 agora), de m odo que a
saída da porta superior continua a fornecer
0. Portanto, a saída Q é 1 e todos os valores o
são estáveis.
1
A gora, vam os fazer n o v am en te S=0 R
e R=0, com o na Fig. 3.8. A porta superior 0
do circuito ainda tem pelo m enos um a das
entradas igual a 1 (a entrada que vem da 1
t
porta inferior), de m odo que ela continua a 0
gerar 0 na sua saída. A porta inferior co n ti­
nua a ter 0 em am bas as entradas e continua 1
Q
a gerar 1 em sua saída. A saída Q ainda é Figura 3.8 Latch SR, 0
igual a 1. D esse m odo, o S=1 anterior ar- quando S=0 e R= 1.
Projeto Lógico Seqüencial - Blocos de Controle 115

mazenou um 1 no latch SR. Isso tam bém


é conhecido com o setting do latch. Esse
1 perm anecerá arm azenado m esm o se fi­
zerm os $ retornar a 0.
A gora, o latch SR básico pode ser
usado para im plem entar o sistem a de botão
de cham ada de aerom oça (Fig. 3.9). C o­
nectam os o botão de cham ar à entrada S, o
botão de cancelar à R e a lâm pada â saída
Q. Q uando se pressiona o botão de chamar, Figura 3.9 Sistema de botão de chamada de aero­
a saída Q torna-se 1 e a lâm pada acende-se. moça que usa um latch SR.
A saída Q perm anecerá em 1 m esm o de­
pois de se soltar o botão. Pressionando-se
o botão de cancelar, Q torna-se 0 e conse­
quentem ente a lâm pada apaga-se. A saída
Q perm anecerá em 0 m esm o depois de se
soltar o botão de cancelar.

Latch SR sensível ao nível


Um problem a que ocorre com o latch SR básico é que, quando am bas as entradas S e R são 1
ao m esm o tem po, pode ocorrer um com portam ento indefinido - um 1 pode ter sido arm aze­
nado, um 0 pode ter sido arm azenado ou ainda a saída do latch pode ter entrado em oscilação
passando de 1 para 0 para 1 para 0 e assim por diante. Vamos ver por que.
Se S=1 e R=l, am bas as portas terão pelo m enos uma das entradas iguais a 1, e assim am ­
bas as portas terão 0 nas suas saídas, com o m ostrado na Fig. 3 .10(a). Um problem a ocorrerá
se tornam os S e R iguais a 0 novam ente. Suponha que S e R retornem ao valor 0 exatam ente ao
m esm o tem po. E ntão, am bas as portas terão Os em todas as suas entradas, de m odo que suas
saídas irão m udar de Os para ls, com o m ostrado na Fig. 3.10(b). C om esses ls , as entradas
das portas serão realim entadas, obrigando-as a gerar Os em suas saídas, com o m ostrado na
Fig. 3.10(c). Com esses Os, as entradas das portas são realim entas novam ente, obrigando as
portas a gerar l s em suas saídas, e assim p o r diante. Ir de 1 para 0 para 1 para 0 e assim por
diante é cham ado de oscilação . A oscilação não é um a característica desejável de um bloco
de arm azenam ento de bit.

Figura 3.10 A situação de S=1 e R =l causa problemas - o valor de Q oscila quando S e R voltam
a 00.

Em um circuito real, os atrasos nos fios c nas portas superior e inferior são ligeiram ente
d iferentes entre si. A ssim , depois de um período de o scilação, um a das p o rtas p o d erá se
adiantar em relação à outra (gerando um 1 antes da outra, em seguida um 0 antes da outra, e
assim por diante), até que ela esteja suficientem ente adian tad a e leve o circuito a en trar em
um a condição estável com Q=0 ou Q=1 - não sabem os qual dos casos ocorrerá. Tal situação,
116 Sistemas Digitais

em q ue o valor de um circu ito com m em ória d e­


pende dos atrasos nos fios e portas, e co n h ecid a •I-nJULTUL
com o condição de corrida (race condition). A Fig.
3 . 11 m ostra um a condição de corrida que envolveu
um a oscilação, m as que term inou em um a condição
“’_n_njT_n_í
estável com Q=l. No entanto, não sabíam os que va­ Figura 3.11 A saída Q terminará final-
lor seria assum ido no final pela saída Q (poderia ter mente assumindo o valor 0 ou 1, devido
sido Q=0). S endo assim , o fato de que Q term inou à condição de corrida.
sendo igual a 1 não nos é útil no uso que querem os
fazer do nosso bloco de arm azenam ento de bit.
Em nosso sistem a de botão de cham ada de aerom oça, se o passageiro pressionar am bos os
botões ao m esm o tem po, então o resultado poderá ser um a lâm pada azul com eçando a oscilar
e que term ina ficando acesa ou não.
Em resum o, as entradas S e R nunca devem ser am bas iguais a 1 em um

cuinas lSua' s a ( >n ,a lcN


h aS R *
prática, nunca ligaríam os de fato am bos os botões diretam ente às en-
iradas de um latch vSR (íizcm os isso som ente com o pro p ó sito de m ostrar um
exem plo intuitivo). A ssim , podem os assum ir com segurança que as entradas S e R vêm de
um circuito digital. D essa form a, poderem os p ro jetar esse circuito digital de m odo que as
entradas S e R nunca sejam am bas iguais a 1. E ntretanto, m esm o q u e tentem os projetar esse
circuito de m odo que $ e R nunca sejam iguais a 1, ainda poderíam os nos dep arar com o caso
de que S e R inadvertidam ente sejam 1 ao m esm o tem po. P or exem plo, considere o circuito
sim ples da Fig. 3.12. Em teoria, $ e R nunca podem ser sim ultaneam ente 1-se X=l, então $=1,
m as R=0. Se X=0, R pode ser igual a 1 m as S=0. A ssim , S e R nunca podem ser 1 - em teoria.
N a realidade, neste circuito, as entradas S e R podem perm anecer em 1 durante um breve
intervalo de tem po. Isso ê devido ao atraso que as portas reais apresentam , com o já foi m os­
trado na Fig. 2.62. S uponha que X tenha sido 0 e Y tenha sido 1 por um período de tem po
longo, de m odo que S=0 e R=l. Suponha então que m udem os X para 1. Q uase im ediatam ente,
$ irá m udar para 1 m as R perm anecerá em 1 ainda por um breve intervalo de tem po, enquanto
um novo valor de X propaga-se através do inversor e da porta AND. Em seguida, R m udará seu
valor para 0. Se cada com ponente tiver um atraso de 1 ns (nanossegundo), então na realidade
S e R perm anecerão ao m esm o tem po em 1 durante 2 ns (Fig. 3.13). Valores tem porários de
sinais, devido a atrasos de tem po em portas, são referidos com o glitches.

x
0

0
I SR = 11

1
R
Figura 3.12 Conceitualm ente, as entradas S e
0
R não podem ser 1 neste exemplo de circuito.
No entanto, na realidade isso pode ocorrer de­ Figura 3.13 A tra so s de
vido aos atrasos de tempo do inversor e da porta tempo podem fazer com que
AND. S R = 11.
Projeto Lógico Seqüencial - Blocos de Controle 117

U m a so lu ção parcial para esse problem a


é acrescen tar um a entrada de habilitação C ao
latch SR, com o m ostrado na Fig. 3.14. Q uando
C =l, os sinais S e R propagam -se através das
duas portas A N D até as entradas SI e RI do
circu ito d o latch SR básico, porque S*l=$ e
R*1=R. No entanto, quando C=0, as duas por­
tas A N D fazem com que SI e RI sejam 0, in­
dependentem ente dos valores de S e R. A ssim ,
quando C=0, o valor do latch básico não pode
ser alterado. (Você poderia perceber que a di­
ferença entre os atrasos de tem po das portas Figura 3.14 Latch SR sensível ao nível - um
A ND superior e inferior poderia fazer com que latch SR com entrada de habilitação C.
SI e RI fossem am bos 1, durante um intervalo
de tem po m uito curto, igual à diferença entre
eles, m as esse tem po é breve dem ais para cau­
sar problem a.)
A introdução da entrada de habilitação leva-nos à idéia de tornar a habilitação igual a 1
apenas quando estam os seguros de que S e R têm valores estáveis. A Fig. 3.15 m ostra o cir­
cuito de inversor e A N D da Fig. 3.12, m as desta vez usando um latch SR com um a entrada de
habilitação. Se alterarm os X, deverem os esperar por no m ínim o 2 ns antes de fazer com que a
entrada de habilitação C seja 1, para nos assegurarm os de que as entradas SR do latch estejam
estáveis e não sejam iguais a 11.

Figura 3.15 Latch SR sensível ao nível - um latch SR com entrada de habilitação C.

Um latch SR com um a habilitação é conhecido com o latch SR sensível ao nível , porque


o latch é sensível a suas entradas S e R apenas quando o nível da entrada de habilitação é 1.
E sse latch é tam bém cham ado de latch transparente , porque quando se co loca a entrada de
habilitação em 1, o latch SR interno torna-se transparente às entradas S e R.
Você pode ter observado que a porta N O R su p erio r de um
latch SR gera um a saída com valor oposto ao da saída da porta
s

inferior, a qual está conectada à saída Q. A ssim , podem os incluir 0 '

um a saída Q' em um latch SR quase de graça, sim plesm ente co ­ — c

Q
nectando a porta superior a essa saída. A m aioria dos latches vêm ■ R

na realidade com as duas saídas, Q e Q '. O sím bolo de um latch


SR sensível ao nível com duas dessas saídas e stá m ostrado na Figura 3.16 Símbolo do
Fig. 3.16. latch SR sensível ao nível
de saída dupla.
118 Sistemas Digitais

Relógios e circuitos síncronos


O latch SR sensível ao nível usa uma entrada de habilitação C que deverá ser tornada 1 depois
que estiverm os seguros de que S e R estão estáveis. N o entanto, com o poderem os decidir
quando tornar C igual a 1? A m aioria dos circuitos sequenciais sim plesm ente usa um sinal de
habilitação que pulsa a um a taxa constante. Por exem plo, poderíam os fazer o sinal de habili­
tação ficar em nível alto por 10 ns, então baixo por 10 ns, então alto por 10 ns, então baixo por
10 ns, etc., com o m ostrado na Fig. 3.17.

seguro para X eY
se alterar não devem
X eY ser alterados
/\
Clk 7 \
/ \ . \
lo ns 10 ns 20 ns 30 ns 40 ns 50 ns 60 ns
0 1 0 1 0 1 0

Figura 3.17 Exemplo de um sinal de relógio de nome Clk* As entradas do circuito só podem
mudar de valor enquanto Cl k=0. de modo que as entradas do latch estão estáveis quando Cl k=l.

Os intervalos de sinal alto e de sinal baixo não precisam ser os m esm os - por exemplo, pode­
ríam os criar um sinal que fica baixo por IO ns, alto por l ns, baixo por IO ns, alto por l ns, etc.
Esse sinal de habilitação pulsante é cham ado de sinal de relógio, porque o sinal faz tique-ta­
que (alto, baixo, alto, baixo) com o um relógio, Um circuito, cujos elem entos de arm azenam ento
(no caso, latches) podem sofrer m udanças apenas quando um sinal de relógio está ativo, é conhe­
cido como circuito seqüencial síncrono, ou simplesmente circuito síncrono (o aspecto seqiiencial
está im plícito-não há nada com o um circuito com binacional síncrono). Um circuito sequencial
que não usa um relógio é cham ado de circuito assíncrono. Deixarem os o tópico do projeto de
circuitos assíncronos, im portante e desafiador, para algum livro de projeto digital mais avançado.
A maioria dos circuitos seqüenciais projetados e em uso atualm ente são síncronos.
O s projetistas norm alm ente usam um oscilador para gerar um sinal de relógio.
Um oscilador é um circuito que gera um a saída que se alterna entre 1 e 0 a um a
frequência constante, com o o da Fig. 3.17. T ipicam ente, um com ponente oscilador
não tem entradas (além da alim entação de energia elétrica) e tem um a saída que
representa o sinal de relógio.
O período de um sinal de relógio 6 o intervalo de tem po após o qual o sinal volta a se re­
petir - ou m ais sim plesm ente, o intervalo de tem po entre l s sucessivos. O sinal da Fig. 3.17
tem um período de 20 ns. Um ciclo de relógio rcferc-se a um d esses intervalos de tem po,
significando um intervalo no qual o relógio é prim eiro 1 e em seguida 0. A Fig. 3.17 m ostra
três ciclos e m eio de um relógio. A frequência de um sinal de relógio é o núm ero de ciclos
por segundo sendo calculada com o l/(o período do relógio). O sinal da Fig. 3.17 tem um a
freqüência de 1/20 ns = 50 M Hz. A unidade de freqüência é o hertz (H z), em que 1 H z = 1
ciclo por segundo. M H z é a form a abreviada de m egahertz, ou um m ilhão de Hz.
U m a m aneira conveniente de converter m entalm ente períodos de relógio
Freq. Período com uns, usados em com putadores, em freqüências, e vice-versa, é lem brando-
se de que um período de 1 ns é igual a um a freqüência de 1 G H z (G igahertz,
100 GHz 0,01 ns
significando um bilhão de H z). E ntão se um deles for m ais lento (ou m ais
10 GHz 0,1 ns
rápido) por um fator de 10, o outro será m ais lento (ou rápido) por um fator de
1 GHz 1 ns
100 MHz 10 ns 10 tam bém - assim , um período de 10 ns é igual a 100 M Hz, ao passo que um
10 MHz 100 ns período de 0,1 ns é igual a 10 GHz.

* N. de T: Usaremos o termo original Clk (de clock. relógio, em inglês) tendo em vista o seu amplo uso em publicações técnicas,
folhas de especificações de componentes, livros, etc.
Projeto Lógico Seqüencial - Blocos de Controle 119

► COMO FUNCIONA ? OSCHAD ORES A QUARTZO

Conceituai mente, um oscilador precisa determinada


deve ser entendido como um pelo tam anho e
inversor que se real imenta com forma do quartzo.
a própria saída, como mostrado Além disso, quando
à esquerda. Se C for inicialmente 1. o valor será re­ o quartzo vibra, gera
al imentado por meio do inversor de modo que C uma tensão. Por­
torna-se 0, o qual, realimentado pelo inversor, volta tanto, dando ao
a ser 1, e assim por diante. A frequência de oscila­ quartzo um tamanho
ção depende do atraso de tempo do inversor. Os os- e forma específicos
ciladores reais devem regular a frequência de osci­ e em seguida apli­ Oscilador IC
lação com mais precisão. Um tipo comum de osci­ cando uma corrente,
lador usa quartzo. um mineral que consiste em dió­ obtemos um oscilador eletrônico preciso. Conecta­
xido de silício cm forma cristalina. Ocorre que o mos o oscilador à entrada de sinal de relógio de um
quartzo é tal que vibra quando aplicamos uma cor­ 1C, como está mostrado acima. Alguns ICs vêm
rente elétrica. Essa vibração tem uma frequência com um oscilador interno.

Flip-flop D
E m bora o latch SR seja útil para se introduzir a noção de arm azenam ento de um bit em um
circuito digital, a m aioria dos circuitos usa na realidade dispositivos um pouco m ais avança­
dos, os latches D e os flip-flops D, para arm azenar bits.

Latch D Sensível ao Nível - Um Circuito Básico


de Armazenamento de Bit
Q uando o relógio está alto. o latch SR tem o pro­
blem a irritante de entrar em um estado indefi­
nido se as entradas S e R forem 1. A ssegurar que
os circuitos projetados por nós não irão colocar
um 1 em S e R significa que um a sobrecarga será
im posta ao projetista. Um a m aneira de aliviar os
projetistas desta sobrecarga é, em lugar disso,
usar um novo tipo de latch, cham ado latch D ,
m ostrado na Fig. 3.18.
Figura 3.18 E stru tu ra in tern a de um
E nquanto C=l, um latch D arm azenará q u al­
latch D.
quer valor que esteja presente na sua entrada D e
m anterá esse valor enquanto C=0. Internam ente,
a entrada D do latch está conectada diretam ente
à entrada S e à R através de um inversor. A Fig.
3.19 m ostra um diagram a de tem po do latch D
para alguns exem plos de valores de entrada em D
e C. Q uando D é l e C é l . a saída do latch torna-
se 1, porque S é 1 c R é 0. A o tornar R o oposto
de S. estam os nos assegurando de que S e R não
serão am bos 1 ao m esm o tem po, desde que alte­
rem os S e R apenas quando C é 0.

Figura 3.19 D iagram a de tem po de um


latch D.
120 Sistemas Digitais

O sím bolo de um latch D com duas saídas (Q e


Q') está m ostrado na Fig. 3.20. D Q'

Figura 3.20 Símbolo C Q


do latch D.

Flip-Flop D sensível à borda - um circuito robusto de armazenamento de bit


O latch D tem ainda outro problem a potencialm ente nocivo, que pode causar com portam ento
im previsível em um circuito, que são os sinais que podem se propagar d a saída de um latch à
entrada de outro enquanto o relógio está em 1. P or exem plo, considere o circuito da Fig. 3.21.
Q uando Cl k = l, o valor de Y será carregado no prim eiro latch e ap arecerá na sua saída. Se
Cl k ainda for igual a 1, então aquele valor tam bém será carregado no segundo latch. O valor
perm anecerá se propagando através dos latches até que Cl k retorne a 0. A través de quantos
latches irá o valor se propagar? B difícil de dizer, teríam os de conhecer as inform ações esp e­
cíficas de atraso de tem po de cada latch.

Clk

Clk_A Clk_B___ Í1__n


Figura 3.21 Um problema com latches - através de quantos latches Y irá se propagar em cada
pulso de Cl k A? de Cl k B?

A Fig. 3.22 ilustra esse problem a de p ro p ag ação com m ais d etalhes. S uponha que Dl
seja inicialm ente 0 durante um longo período de tem po. A seguir, torna-se 1 por um tem po
suficientem ente longo para tornar-se estável, quando então Cl k m uda para 1. A ssim , após três
atrasos de porta, Q1 irá m udar de 0 para 1 e, então, D2 tam bém irá m udar de 0 para 1, com o
m ostrado no d iagram a de tem po da esquerda. Se Cl k ainda for 1, então esse novo v alo r de
D2 irá se propagar através das portas A N D do segundo latch, fazendo S2 m udar de 0 para 1 e
R2 m udar de 1 para 0, o que faz Q2 m udar de 0 para 1, com o m ostrado no diagram a de tem po
da esquerda. O bserve tam bém , nesse diagram a, que a m udança que ocorre em D2, enquanto
C2=l, faz com que S2 e R2 sejam iguais a 1 durante um breve intervalo de tem po, devido ao
atraso de tem po extra causado pelo inversor no cam inho para R2. em bora provavelm ente o
tem po em que am bos são 1 seja curto dem ais para causar um problem a.
Você talvez sugira que o sinal de relógio seja tal que torne-se 1 apenas durante um breve
intervalo de tem po. D esse m odo, não haverá tem po suficiente para que a nova saída de um
latch se propague até as entradas do próxim o. N o entanto, quão breve é breve o suficiente? 50
n$? 10 ns? 1 ns? 0,1 ns? N o caso de tornam os curto dem ais o tem po em que o sinal de relógio
está em I , poderá ocorrer desse tem po não ser suficientem ente longo para que o bit na entrada
D do latch torne-se estável no circuito de realim entação do latch. C onseqüentem ente, podere­
m os não arm azenar de form a bem -sucedida o bit, com o m ostrado na Fig. 3.22(c).
Projeto Lógico Seqüencial - Blocos de Controle 121

(b) (c)

Figura 3.22 Um problema com os latches sensíveis ao nível: (a) enquanto C=l, o novo valor de
Q1 pode se propagar até D2, (b) tal propagação pode fazer com que S2 e R2 sejam ambos 1 durante
um breve intervalo de tempo enquanto a habilitação do latch é 1 (mas supostamente SR= 11 nunca
deveria ocorrer). Pode também fazer com que um número desconhecido de latches seja atualizado
em seqüência, (c) simultaneamente, é difícil conseguir um intervalo de tempo, com o relógio em
nível alto, que seja suficientemente reduzido para evitar uma propagação para o próximo latch,
mas ainda suficientemente longo para perm itir que um latch atinja uma situação estável de rea-
limentação. A razão está em que um tempo breve dem ais em nível alto im pede o carregam ento
apropriado do latch.

Um a boa solução é projetar um bloco m ais robusto para o arm azenam ento de um bit - um
bloco que arm azena o bit que está na entrada D no instante em que o relógio sobe de 0 para 1.
O bserve que não dissem os que o bloco arm azenará o bit ins­
tantaneam ente. A o contrário, o bit que acabará sendo arm a­
zenado no bloco é o bit que se encontrava estável em D no
instante em que o relógio subiu de 0 para 1. Tal bloco é ch a­
m ado de flip-flop D sensível à borda. A palavra “borda” re-
fere-se à parte vertical da linha que representa o sinal de re­
lógio quando esse sinal está fazendo um a transição de 0 para
1. A Fig. 3.23 m ostra três ciclos de um relógio e indica as Fi g u ra 3.23 Bordas de su bi da,
três bordas de subida, ou ascendentes, desses ciclos. ou ascendentes, de relógio.

Flip-Flop D Sensível à Borda Usando uma Estrutura Mestre-Servo . U m a m an eira de


se projetar um flip-flop D sensível à borda é usando dois latches D, com o m ostrado na Fig.
3.24.
O prim eiro latch D. conhecido com o mestre , é habilitado (pode arm azenar novos valores
de Dm) quando Cl k é 0 (devido ao inversor), ao passo que o segundo latch D, conhecido com o
servo , é habilitado quando Cl k é 1. A ssim , enquanto Cl k é 0. o bit em D é arm azenado no
latch m estre, e portanto atualizando Qm e Dm - m as o latch servo não arm azena esse novo bit
122 Sistemas Digitais

Clk
u

Figura 3.24 Um flip-flop D que implementa um bloco de arm azenam ento de um bit sensível à
borda e usa internamente dois latches em uma disposição mestre-servo. O latch D mestre armazena
a sua entrada Dm enquanto Cl k=0. No entanto, o novo valor que aparecerá em Qm e portanto em Ds
não será armazenado no latch servo, porque este latch está desabilitado quando Cl k =0. Quando
Cl k torna-se 1, o latch servo fica habilitado e assim armazena o valor qualquer que estava no latch
mestre imediatamente antes de Cl k mudar de 0 para 1.

porque ele não está habilitado, pois Cl k não é 1. Q uando Cl k torna-se 1, o latch m estre é d e­
sabilitado (m antém o valor arm azenado) e, desse m odo, retém o bit q ualquer que estava na
entrada D, im ediatam ente antes de Cl k m udar de 0 para 1. Tam bém , quando Cl k torna-se 1, o
latch servo fica habilitado e arm azena, desse m odo, o bit que o m estre já tinha arm azenado, e
que é o bit que estava na entrada D im ediatam enle antes de Cl k m udar de 0 para 1, im plem en­
tando dessa form a o bloco de arm azenam ento sensível à borda.
A ssim , o bloco sensível à
borda, que usa dois latches in­
ternos, im pede que o bit arm a­
a>
zenado prop ag u e-se por m ais 9-
de um latch quando o relógio é </>
1. C o n sid ere a seq ü ên cia de Clk
flip-flops da Fig. 3.25, q ue é
sim ilar à da Fig. 3 .2 1, m as que Clk A Clk B JU 1
usa flip-flops D em lugar dos Figura 3.25 Usando flip-flops D, agora sabemos através de
latches D. Sabem os que o sinal quantos flip-flops o sinal Y irá se propagar nos casos de Cl k_A
Y irá se p ro p ag ar atrav és de e Cl k_B - exatamente um flip-flop por pulso, nos dois casos.
exatam ente um flip-flop a cada
ciclo de relógio.
A desvantagem de um a abordagem m estre-servo é que precisam os agora
de dois latches D para arm azenar um bit. A ssim , a Fig. 3.25 m ostra quatro flip-
Na verdade, o nome
flops, m as há dois latches dentro de cada flip-flop, totalizando oito latches.
com um e “mestre-
e sc ra v o ”. A lguns, ao
Há m uitos m étodos alternativos além d o de m estre-servo p ara se p ro jetar
invés disso, optam pelo um flip -flo p sensível á borda. De fato, há cen ten as d e m o d elo s d iferen tes de
termo “servo ” porque latches e flip-flops além dos q u e m ostram os antes, com diferen ças em term os
há pessoas que ju lg a m de tam anho, velocidade, consum o, etc. Q u an d o usam os um flip-flop sensível
ofensivo o termo “ es­ à borda, u su alm en te não nos p reo cu p am o s se o flip -flo p é sensível à b o rd a
cra vo O utros usam usando o m étodo de m estre e servo ou se usa alg u m outro m étodo. P recisa­
o s term os p n m a n o - m os ap en as sab er q ue o flip-flop é sensível à borda, significando q u e o valor
secundário do dado que está presente, quando a borda do relógio está subindo, é o valor
q ue será carreg ad o no flip-flo p e q u e ap arecerá na saíd a do flip-flop algum
tem po depois.
Projeto Lógico Seqüencial - Blocos de Controle 123

N a verdade, o que descrem os são os cham ados llip-flops sensíveis à borda positiva ou de
subida , que são disparados quando o sinal de relógio vai de 0 a 1. H á tam bém flip-flops co ­
nhecidos com o sensíveis à borda negativa ou de descida , que são disparados quando o sinal
de relógio passa de 1 a 0. Podem os construir um flip-flop D sensível à borda negativa usando
um a estrutura m estre-servo em que a entrada de relógio do segundo flip-flop é a invertida e
não a do prim eiro.
Flip-flops sensíveis à borda positiva são desenhados
usando um pequeno triângulo na entrada de relógio, e D cr D— ---- D Q' 0 -
os sensíveis à borda negativa são desenhados com um
> Q — — O> o —
pequeno triângulo acom panhado de um a “bolha” inver-
sora, com o m ostrado na Fig. 3.26.
T enha c la ro que, em b o ra nossa estru tu ra m estre- figura 3.26 Flip-flops D sensíveis
servo não altere a saída até a borda de descida do reló- às bordas positiva (m ostrado à es-
gio, o flip-flop ainda é sensível à borda positiva, porque querda) e negativa (à direita). A en-
o flip-ílop arm azena o valor que está na en trad a D no tracia lateral na forma de triângulo
instante em que a borda do relógio está subindo. representa uma entrada de relógio
que é sensível à borda.

Latches versus Flip-Flops: Vários livros definem os term os latch e flip-flop de m odos d ife­
rentes. U sarem os o que parece ser a convenção m ais com um entre os projetistas, ou seja:

• um latch é sensível ao nível e

• um flip-flop é sensível à borda.

A ssim , dizer “ flip-flop sensível à borda” é redundante, porque os flip-flops são, p o r defi­
nição, sensíveis à borda. Do m esm o m odo, di/.er “ latch sensível ao nível” é redundante, por­
que os latches são, por definição, sensíveis ao nível.
A F ig. 3.27 u sa um e x e m p lo d e d ia ­
g ra m a d e te m p o p a ra ilu s tra r a d ife re n ç a
e n tre b lo co s de a rm a z e n a m e n to de bit sen-
síveis ao nível e à borda. A fig u ra e x e m p li­ Clk
fica o q ue o c o rre co m um sinal de re ló g io
e os v alores de um sinal D. A p rim e ira an á ­
lise d e sinal será com a sa íd a Q d o latch D, •n
o qual c o m o sa b e m o s é sen sív el ao nível.
Q (D latch) 8
O latch ig n o ra o p rim e iro p u lso em D (in ­
d ic a d o p o r 3 na figura) p o rq u e o Cl k está
baixo. N o en tan to , q u an d o Cl k to rn a-se alto Q (D flip-flop) 70
( i ), o latch aco m p an h a a en trad a D, d e m odo
q ue q u a n d o D m u d a de 0 para 1 (4 ), a saíd a
d o latch faz o m esm o (7). O latch ig n o ra a Figura 3.27 Diagrama de tempo de um latch
p ró x im a m u d a n ç a em D q u a n d o o Cl k está versus um flip-flop.
b aix o (5 ), m as e n tã o v o lta a a c o m p a n h a r D
q u an d o o Cl k fica alto (6, 8).
C om pare isso com a próxim a análise de sinal, q u e m ostrará o co m p o rtam en to de um
flip-flop D sensível à borda de subida. Na prim eira borda de subida do relógio ( i) , o flip-flop
am ostra o sinal D e o encontra em 0. A ssim , o flip-flop arm azena e gera um 0 na saída (9). Na
próxim a borda de subida (2), o flip-flop am ostra D, encontrando-o em 1. A seguir, ele arm a­
zena e gera um 1 na saída (10). O bserve que o flip-flop ignora todas as m udanças em D que
ocorrem entre as bordas de subida (3.4 ,5 , ó )-ig n o ran d o m esm o as m udanças em D, enquanto
o relógio está alto (4 , 6).
124 Sistemas Digitais

► EXEMPLO 3.1 Botão de chamada de aeromoça usando um flip-flop D TABELA3.1 T a b e la -ve rd a d e


D para o sistem a de botão de
Vamos projetar o nosso sistema de botão de chamada de ae-
rom oça usando um flip-flop D. Se Chamar for pressionado, cham ada
queremos arm azenar um 1. Se Cancel a r for pressionado, que­ Chamar Cancelar Q D
remos armazenar um 0. Se nenhum dos dois for pressionado,
0 0 0 0
queremos armazenar o valor qualquer que já está armazenado
0 0 1 1
no momento, isto é, o que se encontra em Q. Desse modo,
0 1 0 0
precisamos de um circuito combinacional simples que esteja à
0 1 1 0
frente da entrada D e seja descrito pela tabela-verdade dada na
1 0 0 1
Tabela 3.1. Quando Chamar=0 e Cancel ar=0 (as duas primei­
1 0 1 1
ras linhas), D c igual ao valor de Q. Quando Chamar=0 e Can­
1 1 0 1
cel a r = l (as próximas duas linhas), D=0. Quando Chamar=l
1 1 1 1
e Cancel ar= 0 (as próxim as duas linhas), D=l. Finalmente,
quando ambos Chamar=l e Cancel a r = l (as duas últimas li­
nhas), daremos prioridade ao botão de Chamar. Assim, D=l.
D epois de algum as sim plificações algébricas, obtem os a seguinte equação para D:
D = C ancelar'Q + Chamar
O sistema final está mostrado na Fig. 3.28.

Esse projeto, realizado com flip-


Botào
flops D, usou m ais portas do que o
"Chamar"
baseado em latches SR , m ostrado na
Botão
Fig. 3.9 (no qual tam bém se pode usar 'Cancelar"
facilm en te um flip -flo p SR ). U m a
razão para as portas extras é que um (a)
flip-flop D sem pre arm azena o valor
da sua entrada D a cada ciclo de re­ Botão
lógio. D essa m aneira, devem os expli- "Chamar" Lâmpada
azul
citam ente enviar Q dc volta à entrada Botão
D para que esse m esm o valor seja 'Cancelar"

m antido. Em co m p aração , quando


usam os um flip-flop SR, podem os fa­
zer sim plesm ente S=R=0 para m anter (b)
o m esm o valor. A lém disso, precisa­ Figura 3.28 Sistem a para botão de cham ada de ae­
m os converter os apertos de botão em romoça: (a) diagrama de blocos e (b) implementação
valores apropriados para a entrada em usando um flip-flop D.
D. A o invés de sim plesm ente carregar
ou S ou R com 1, é necessário um a lógica extra. No final da década de 1970 e com eço da de
1980, essas portas extras representavam um item im portante do projeto, porque os ICs vinham
apenas com algum as portas. A ssim , portas extras significavam freqüentem ente ICs extras, re­
presentando aum ento de tam anho, custo, consum o, etc. No entanto, atualm ente, nesta época
de ICs com m ilhões de portas, a econom ia representada por um flip-flop SR é de pouca im por­
tância. N o projeto m oderno, quase todos os projetos usam flip-flops D, e não flip-flops SR.
A título de inform ação, os projetistas geralm ente referem -se aos flip-flops apenas com o
flops.
E xam inam os diversos m odelos interm ediários antes de chegar ao nosso m odelo robusto
de flip-flop D, que será usado com o bloco de arm azenam ento de um bit. A Fig. 3.29 resum e
esses m odelos, m ostrando suas características e problem as além de nos conduzir ao robusto
flip-flop D sensível à borda. Ao olhar o resum o, observe que o flip-flop D baseia-se em um
latch D interno para p oder m anter arm azenado um bit durante um ciclo de relógio, e depende
do projetista para que esse introduza realim enlação fora do flip-flop D. de m odo que um bit
perm aneça arm azenado durante vários ciclos dc relógio.
Projeto Lógico Seqüencial - Blocos de Controle 125

Característica: Característica: S e R só Característica: se D for Característica: Somente o


S=1 carrega Q podem produzir algum estável antes e durante valor de D que está presente
com 1 e R=1 efeito quando C=1. C=1, então SR não poderá no instante da borda de
coloca um 0 em Podemos projetar um ser 11, mas será 11 apenas subida do relógio é
Q. Problema: circuito externo de durante um breve glitch, armazenado, de modo que os
SR=11 produz modo que nunca possa mesmo que D mude valores não podem se
um valor ocorrer SR=11 enquanto C=1. Problema: propagar para os outros
indefinido em Q. enquanto C=1. se C=1 for longo demais, flip-flops durante o mesmo
Problema: evitar SR=11 novos valores irão se ciclo de relógio. Tradeoff.
pode ser trabalhoso. propagar através de internamente, usa mais portas
demasiados latches; se do que o latch D e requer mais
curto demais, é possível portas externas do que o
que um armazenamento SR-mas o número de portas
não chegue a ser hoje em dia deixou de ser
habilitado. uma preocupação importante.

Figura 3.29 Blocos cada vez melhores para se arm azenar bits, culminando com o flip-flop D.

Registrador básico - armazendo múltiplos bits


Um registrador é um com ponente seqüencial que pode arm azenar m últiplos bits. Podem os
construir um registrador básico usando sim p lesm en te m últiplos flip-flops, com o m ostrado
na Fig. 3.30. E sse registrador pode arm azenar quatro bits. Q uando o relógio sobe, todos os
quatro flip-flops são carregados com as entradas 10, I I , 12 e 13 sim ultaneam ente.

13 12 11 10

Q3 Q2 Q1 Q0

Figura 3.30 A estrutura interna (à esquerda) de um registrador básico de quatro bits e o símbolo
para diagrama de blocos (à direita).

Esse registrador, construindo de m odo sim ples a partir de m últiplos flip-flops, é a form a
m ais básica de um registrador, tão básica que algum as em presas cham am esse registrador de
sim plesm ente “flip-flop D de 4 bits” . No C apítulo 4, iremos descrever registradores mais avan­
çados, ou seja, registradores com mais características e com mais possibilidades de operação.

► EXEMPLO 3.2 Mostrador da história de temperaturas que usa registradores


Queremos projetar um sistem a que grave o valor da tem peratura externa a cada hora e exiba as
últimas três temperaturas registradas, de modo que um observador possa ver a tendência da tem­
peratura. Uma arquitetura do sistema está mostrada na Fig. 3 .3 1.
Um temporizador gera um pulso C que é aplicado à entrada de relógio a cada hora. Um sensor
de temperatura fornece a temperatura atual na forma de um número binário de cinco bits, variando
de 0 a 31 e correspondendo a temperaturas na escala Celsius. Um mostrador numérico é constru­
ído usando três displays com entradas binárias de cinco bits cada um.
126 Sistemas Digitais

Atual 1 hora atrás 2 horas atrás

Figura 3.31 Sistem a


que m ostra o histórico (N a p r á tic a , e v it a r ía m o s c o n e c t a r a s a íd a C d o t e m p o r iz a d o r a u m a e n tr a d a d e r e ló g io ,
de temperaturas. lig a r ía m o s a s a íd a d e u m o s c ila d o r a u m a e n tr a d a d e r e ló g io . )

Podemos im plem entar o componente, que cham arem os de ArmazenamentoHistóricoTempe-


raturci*, usando três registradores de cinco bits, como está mostrado na Fig. 3.32. Cada pulso de
C carrega a temperatura atual em Ra através das entradas x 4 ,... xO (carregando os cinco fíip-flops
que estão dentro de Ra com os cinco bits de entrada). Ao mesmo tempo, esse registrador Ra é car­
regado com a tem peratura atual e o registrador Rb é carregado com o valor que estava em Ra. De
modo semelhante, Rc é carregado com o valor de Rb. Os três armazenamentos ocorrem ao mesmo
tempo, isto e, na borda de subida de C. O efeito é que os valores que estavam imediatamente antes
da borda do relógio em Ra e Rb são deslocados para Rb e Rc, respectivamente.

Figura 3.32 Estrutura interna do componente AnnazcnamentoHistóricoTemperatura.

A Fig. 3.33 mostra alguns exemplos de valores que estão presentes nos registradores, em diver­
sos ciclos de relógio. Assume-se que todos os registradores tinham Os inicialmente e que, conforme
o tempo avança, as entradas x 4 .... xO têm os valores mostrados no topo do diagrama de tempo.

Figura 3.33 E xem plos


de valores presentes nos
registradores de Annaze-
namentoHistóricoTempe-
ratura. Um item de dados
em particular, o 18. apa­
rece m ovendo-se através
dos registradores a cada
ciclo de relógio.

* N. de T: Essa forma de escrever o nome do componente tem a ver com as linguagens de descrição de hardware (HDL), como
será visto mais adiante.
Projeto Lógico Seqüencial - Blocos de Controle 127

Esse exemplo mostra uma das grandes coisas a respeito dos circuitos síncronos construídos a
partir dos flip-flops sensíveis à borda: muitas coisas acontecem ao mesmo tempo e, não obstante,
não precisamos nos preocupar com a propagação demasiadamente rápida de sinais entre um regis­
trador e outro. A razão disso é que os registradores só são carregados na borda de subida do reló­
gio, o que efetivamente é um intervalo de tempo infinitamente pequeno. Desse modo, quando os
sinais estão se propagando através de um registrador até um outro, já é tarde demais: esse segundo
registrador não está mais prestando atenção a suas entradas de dados. A

D evem os m encionar que, na prática, os projetistas tentam evitar a ligação de q u alq u er


sinal, que não seja a saída de um oscilador, à entrada de relógio de um flip-flop ou registrador.
A ssim , deveríam os evitar a conexão do sinal C às entradas de relógio, pois C vem da saída de
um tem porizador, não de um oscilador. V erem os no C apítulo 4, E xem plo 4.3, com o projetar
um sistem a sim ilar usando um oscilador para o relógio.

► 3.3 MÁQUINAS DE ESTADOS FINITOS (FSMS) E BLOCOS DE CONTROLE


Em um circuito digital, os registradores arm azenam bits. B its arm azenados significam que o
circuito tem m em ória, o que é tam bém conhecido com o estado , resultando os cham ados cir­
cuitos seqüenciais. Um registrador, q ue esteja arm azenando bits, resulta em um circuito com
estados. Por outro lado, na realidade, poderem os usar esses estados para projetar circuitos que
tenham determ inados com portam entos ao longo do tem po. Por exem plo, poderem os esp eci­
ficam ente projetar um circuito que gera um 1 durante exatam ente três ciclos, sem pre que um
botão for apertado, ou então poderem os projetar um circuito que põe luzes a piscar seguindo
um padrão específico, ou ainda poderem os projetar um circuito que é capaz de detectar se três
botões foram apertados segundo um a seqüência em particular e, então, destravar um a porta.
N esses três casos, faríam os uso dos estados para criar com portam entos específicos, ordena­
dos no tem po, para o nosso circuito. Um circu ito seqüencial que co n tro la saídas booleanas
com base em entradas booleanas e em um com portam ento específico, ordenado no tem po, é
referido freqiientem ente com o sendo um bloco de controle.

► EXEMPLO 3.3 Temporizador para manter ligado um laser durante três ciclos - um primeiro projeto malfeito
Considere o projeto de uma parte de um sis­
tem a de cirurgia a laser, com o um sistem a
Bloco de
para rem over cicatrizes ou de visão corretiva. laser «
controle
Tais sistem as funcionam acionando um laser
durante um intervalo de tem po preciso (veja clk >
“Com o funciona? Cirurgia a laser” na página
128). Uma arquitetura genérica de um sistema paciente
como esse está mostrada na Fig. 3.34.
Um cirurgião ativa o laser pressionando Figura 3.34 Sistema tem porizador de laser.
um botão. Assuma então que o laser deve per­
manecer ativado por exatamente 30 ns. Assumindo que o período de nosso relógio é 10 ns, então
30 ns significa 3 ciclos de relógio. (Assuma que b está sincronizado com o relógio e permanece
alto por apenas I ciclo de relógio.) Precisamos projetar um componente de bloco de controle que,
tendo detectado que b=T, mantém x em nível alto por exatam ente 3 ciclos de relógio, ativando
portanto o laser por exatamente 30 ns.
Esse é um exemplo para o qual uma solução por software poderá não funcionar. Usando ape­
nas comandos comuns de programação para ler as portas de entrada e escrever nas portas de saída,
é possível que não consigamos uma maneira de manter uma porta em nível alto por exatamente 30
ns - como, por exemplo, no caso de a freqüência do relógio do microprocessador não ser rápida o
suficiente, ou quando cada comando necessita de dois ciclos para ser executado.
Vamos tentar criar uma implem entação para o sistem a que será baseada em um circuito se­
qüencial. Depois de pensar a respeito por algum tempo, poderemos chegar à implementação (não
tão boa) da Fig. 3.55.
128 Sistemas Digitais

Sabendo que precisamos manter a saída em nível


alto durante ires ciclos de relógio, usamos três flip-flops.
A idéia é fazer com que um 1 seja deslocado através des­
ses três flip-flops, levando três ciclos de relógio para que
o bit percorra todos eles. Aplicamos as saídas dos três
flip-flops a uma porta OR, a qual gera um sinal x de
modo que, se qualquer flip-flop tiver um 1, o laser será
acionado. Fizemos b ser a entrada do primeiro flip-flop, Figura 3.35 Primeira tentativa (mim)
de modo que quando b= l, o primeiro flip-flop armaze­ de implementação do sistema de cirur­
nará um 1 no próximo ciclo de relógio. Um ciclo de re­ gia a laser.
lógio depois, o segundo flip-flop será carregado com 1 e,
assumindo que b tenha agora voltado a 0, o primeiro flip-flop será carregado com 0. Um ciclo de
relógio após, o terceiro flip-flop será carregado com 1 e o segundo flip-flop, com 0. Finalmente,
mais um ciclo de relógio e o terceiro flip-flop será carregado com 0. Desse modo. após o botão ter
sido apertado, o circuito mantém a saída x em 1 durante três ciclos de relógio. M

N ão fizem os um bom trabalho quando im plem entam os esse sistem a. Em


O exem plo a n terio r prim eiro lugar, o que acontecerá se o cirurgião pressionar o botão outra vez,
ilustrou a necessidade antes que os três ciclos tenham transcorrido? Tal situação poderia fazer com
de se d is p o r de uma que o laser ficasse ativado p o r tem po dem asiado. L evando em co nsideração
fo rm a p a ra se d escre­ esse com portam ento, há um a m aneira sim ples de reparar o nosso circuito? Em
ver o com portam ento segundo lugar, não utilizam os nenhum m étodo organizado para projetar o cir­
que se deseja de um cuito - a idéia de usar um a O R com as saídas dos flip-flops surgiu, m as surgiu
circu ito sequencial.
de onde essa idéia? E sse m étodo funcionaria para q u alq u er co m portam ento
seqüenciado no tem po que pudéssem os vir a desejar?
Para projetarm os circuitos que têm um co m p o rtam en to ordenado no tem po e fazerm os
um trabalho m elhor, precisarem os de um a m aneira de representar explicitam ente o com por­
tam ento que desejam os do circuito - com esse propósito, irem os introduzir a cham ada repre-

► COMO FUNCIONA? CIRURGIA A LASER

A cirurgia a laser tornou-se muito popular na dé­ também pode ser usado para vaporizar as células da
cada passada, tendo se tornado possível devido aos pele que formam saliências, devido a cicatrizes ou
sistemas digitais. O laser, inventado no início da verrugas. De modo semelhante, os lasers podem re­
década de 1960, gera um feixe intenso e estreito duzir as rugas alisando a pele ao seu redor, tornando
de luz coerente, com todos os fótons apresentando as fissuras mais graduais e consequentemente menos
um único comprimento de onda e estando em fase óbvias, ou ainda excitando o tecido sob a pele para
entre si (é como estar no ritmo). Em contraste, os estimular o crescimento de novo colágeno.
fótons de uma luz comum espalham-se em todas as Um outro uso frcqüente de lasers em cirurgia é
direções, com uma diversidade de comprimentos de na correção da visão. Em uma cirurgia a laser muito
onda. Pense em um laser como sendo um pelotão de comum, o cirurgião corta a córnea expondo uma
soldados marchando em sincronismo, ao passo que aba em sua superfície. A seguir, o laser dá uma nova
uma luz comum é mais parecido com crianças que forma à região exposta da córnea, tornando-a mais
correm quando estão deixando a escola, após o sino fina segundo um certo padrão. Esse adelgaçamento é
de encerramento das aulas ter sido tocado. Uma luz obtido por meio da vaporização de células.
laser pode ser tão intensa que é capaz de cortar aço. Um sistema digital controla a localização, a
A capacidade de um circuito digital para controlar energia e a duração do laser, baseando-se na infor­
cuidadosamente a localização, a intensidade e a du­ mação previamente programada para a cirurgia de­
ração do laser é o que o torna tão útil em cirurgias. sejada. Atualmente, a disponibilidade de lasers em
Um uso popular do laser em cirurgia é na re­ combinação com circuitos digitais, de baixo custo
moção de cicatrizes. O laser é focado nas células e alta velocidade, tornou possíveis lais cirurgias de
danificadas, ligeiramente abaixo da superfície, fa­ precisão e utilidade.
zendo com essas células sejam vaporizadas. O laser
Projeto Lógico Seqüencial - Blocos de Controle 129

sentação por m áquinas de estados finitos - e precisarem os de um m étodo estruturado para


im plem entar tal com portam ento na form a de um circu ito seqüencial - apresentarem os um
m étodo que servirá de m odelo.

Máquinas de estados finitos (FSMs)


N o capítulo anterior, você viu que poderíam os p ro jetar um circuito com binacional d escre­
vendo prim eiro o com portam ento do circuito desejado p o r m eio de um form alism o m ate­
m ático, conhecido com o equação booleana, e então convertendo a equação em um circuito.
Em um circuito seqüencial, um a equação booleana sozinha não é suficiente para descrever o
com portam ento, precisam os de um form alism o m ais poderoso que incorpore o tem po.
A s m áquinas de estados finitos (FSM s, de Finite State Machines) constituem exatam ente
tal m étodo. O nom e é um tanto estranho, m as o conceito é sim ples. U m a FSM consiste em
diversas coisas, a m ais im portante delas é um conjunto de estados que representa todos os
estados, ou m odos, possíveis de um sistem a.
Eu gosto de usar o hamster de m inha filha com o exem plo intuitivo. D e­
pois de ter lido um hamster co m o bichinho de estim ação , aprendi que os
hamsters têm basicam ente quatro estados: Dormir, Comer, CorrerNaRoda
e TentarEscapar. Eles passam a m aior parte do dia dorm indo (são anim ais
noturnos), um pouco do tem po com endo ou correndo na roda, e o resto do
tem po tentando desesperadam ente escapar da gaiola.
C om o um exem plo m ais orientado para a eletrônica, vam os p ro jetar um
sistem a que repetidam ente carrega um a saída x com 0 em um ciclo de relógio
Tentando escapar e com 1 em outro ciclo de relógio. O sistem a tem claram en te ap en as dois
estados, que cham arem os de Desligado e Ligado. No estado Desligado , x=0
e no estado Ligado , x= l. Podem os m ostrar esses estados e as transições entre
eles, usando o diagram a de estado d a Fig. 3.36.

I I I

Figura 3.36 Um diagrama de estados sim ples (à esquerda) cujo comportamento é descrito pelo
diagrama de tempo (à direita). Acima do diagrama de tempo, vemos a F,SM passando de um estado
a outro a cada ciclo de relógio. A borda de subida do sinal de relógio é representada por “c l kA”.

A ssum a que com eçam os no estado Desligado, ou Des, abreviadam ente. O diagram a mostra
que x é carregado com 0 enquanto o sistem a está nesse estado. O diagram a m ostra tam bém que,
na próxim a borda de subida do sinal de relógio, clkA, o sistem a faz uma transição para o estado
Ligado, ou Ligy abreviadam ente, e que x é carregado com 1 nesse estado. Na próxim a borda de
subida do relógio, o diagram a m ostra que o sistem a faz uma transição de volta ao estado Desli­
gado. O diagram a de tem po que mostra o com portam ento do sistem a está na Fig. 3.36.
L em bre-se do E xem plo 3.3 no qual desejávam os um sistem a que m antivesse a saída em
nível alto, durante três ciclos. Tendo em vista aquele objetivo, vam os am pliar o diagram a de
estados sim ples da Fig. 3.36, incluindo um estado de desligado e três estados de ligado, com o
está m ostrado na Fig. 3.37. A saída x será 0 durante um ciclo e então 1, durante três ciclos,
com o m ostrado no diagram a de tem po da figura.
130 Sistemas Digitais

S a íd a s : x
x=0 clkA X=1 clkA X=1 clkA X=1

E s ta d o |Des|Lig1|Lig2|üg3 Des|üg1 Lig2[üg3|Des

S a íd a s :

Figura 3.37 Sistema de três ciclos em nível alto: diagrama de estados (à esquerda) e diagrama de
tempo (à direita).

Para am pliar ainda m ais o com portam ento, podem os im por condições de entrada às tran­
sições. Irem os expandir o diagram a de estados na Fig. 3.38, alterando a condição necessária
para que ocorra um a transição do estado Desligado (Des) para o Ligado 1 (LigJ). A nova co n ­
dição exigirá não só um a borda de subida no relógio, m as tam bém que b= l. A crescentarem os
tam bém um a transição do estado Desligado retornando ao próprio Desligado , com a co n d i­
ção de que ocorra um a borda de subida no relógio e que b=0. O diagram a de tem po da figura
m ostra o com portam ento de estado e de saída do sistem a para os valores dados de b.

E n tra d a s : b; S a íd a s : x
«JIJJJJJJJL
E n tra d a s :

ü itl
----------------------------- -
.

E s ta d o Des Des Des Des Des Ligl Lig2 Lig3 Des

Saídas-.

Figura 3.38 Sistema para três ciclos em nível alto: diagrama de estados (à esquerda) e diagrama
de tempo (à direita).

D os exem plos anteriores, podem os ver que uma máquina de estados finitos , ou FSM , é
um form alism o m atem ático que consiste em diversas coisas:
• Um conjunto de estados. O nosso exem plo tinha quatro estados: {Ligado 1, Ligado2, Li­
gado 3, Desligado).
• Um conjunto de entradas e um conjunto de saídas. N osso exem plo tinha um a entrada: ( b }
e um a saída {x }.
Um estado inicial, isto é, um estado para se com eçar quando o sistem a é energizado. O es­
tado inicial de uma FSM pode ser indicado graficam ente por m eio de um a linha com seta,
cham ada de aresta, que não tem estado de origem e aponta para o estado inicial. Um a FSM
pode ler apenas um estado inicial. O estado inicial do nosso exem plo é o de Desligado.
U m a descrição que indique para qual estado deverem os ir a seguir, com base no estado
atual e nos valores das entradas. N osso exem plo usa arestas orientadas ou dirigidas ju n ­
tam ente com as condições de entrada associadas, as quais nos dizem qual é o próxim o
estado. Essas arestas são conhecidas com o transições.
• U m a descrição de quais são os valores de saída que devem ser gerados em cada estado.
O nosso exem plo atribuiu um valor para x em cada estado. Em um a FSM , a atribuição de
um a saída é conhecida com o um a ação.
U sam os um a representação gráfica, conhecida com o diagrama de estados , para m ostrar a
FSM do nosso exem plo. Em lugar disso, poderíam os ter representado a FSM na form a de um
texto. N o entanto, os diagram as de estados são os m ais usados na visualização do com porta­
m ento de um a FSM .
Projeto Lógico Seqüencial - Blocos de Controle 131

► EXEMPLO 3.4 FSM para um temporizador que liga um laser durante três ciclos
Podemos criar uma FSM para descrever o sistema temporizador de laser que foi apresentado an­
teriormente. O sistem a deverá ter quatro estados: Ligadol, Ligado! , Ligado3 e Desligado. No
estado Desligado, ou Des, abreviadamente, o laser deverá estar desligado (x=0). Durante o estado
Ligado J, ou Ligl, abreviadam ente, ocorrerá o primeiro ciclo de relógio em que o laser estará
ligado (x=l). O estado Ligado!. ou Lig!, será o segundo e Ligado3, ou Lig3, o terceiro. Na reali­
dade, o diagrama de estados da FSM é idêntico ao mostrado na Fig. 3.38.
A FSM deve ser interpretada como segue. Com eçam os com o nosso estado inicial de Des­
ligado. Perm anecem os nesse estado até que uma das duas transições que saem dele esteja na
condição de verdadeira. Uma dessas transições tem por condição b' AND uma borda de subida
de relógio (b '* c l k^); nesse caso, a transição irá se dar retornando ao estado Desligado. A outra
transição tem por condição a AND uma borda de subida de relógio (b*cl kA); nesse caso, a transi­
ção ocorrerá indo para o estado Ligl. Permanecemos no estado Ligl até que se torne verdadeira a
condição necessária à transição de saída do estado, ou seja, uma borda de subida de relógio-nesse
caso. a transição irá se dar passando-se ao estado Lig!. De modo semelhante, permanecemos no
estado Lig! até a próxima borda de subida de relógio, quando ocorrerá uma transição para o estado
Lig3. Permanecemos em Lig3 até a próxima borda de subida de relógio, quando será feita uma
transição de volta ao estado Desligado. No estado Desligado, temos a ação associada à saída x=0,
ao passo que, nos estados Ligl, Lig! e Lig3, temos a ação associada à x=l.
Desse modo. usando uma FSM. descrevemos precisamente o comportamento seqüenciado no
tempo que é esperado do sistema temporizador de laser.
Enquanto o laser está ligado, é interessante examinar o comportamento dessa FSM se o botão
for apertado uma segunda vez. Observe que as transições entre os estados de Ligado são indepen­
dentes do valor de b. Desse modo, esse sistema sempre irá ligar o laser por exatamente três ciclos
e então retornar ao estado de Desligado para esperar que o botão seja pressionado novamente. M

Simplificando a notação da FSM: tornando implícita a borda de subida do relógio


A té este ponto, incluím os a borda de subida do reló­
gio (c l k^) com o parte da condição necessária para
cada um a das tran siçõ es d a FSM . Incluím o s essa
aresta porque estam os considerando apenas o p ro ­
je to de circuitos seqüenciais que sejam síncronos e,
para arm azenar bits, usem flip-flops disparados pela
borda de subida d o relógio. Na m oderna prática de
projeto, os circu ito s seqüenciais sín ­
a' *clkA cro n o s, c o n stru íd o s co m flip -flo p s
sensíveis à borda, constituem a vasta
m a io ria d o s c irc u ito s se q ü e n c iais. Figura 3.39 Diagrama de estados do
C om o tal, para tornar seus diagram as temporizador de laser, no qual se assume
de estados m ais legíveis, a m aioria dos que qualquer transição está sendo sub­
metida a uma operação AND juntamente
livros e projetistas seguem a conven­
com a borda de subida de um relógio.
ção de que, para todas as transições de

► "ESTADOS", EU COMPREENDO, MAS POR QUE OS TERMOS "FINITOS" E "MÁQUINA"?

As máquinas de estados finitos, ou FSMs. têm esse é usado no sentido matemático ou de ciência da
nome bem estranho que, algumas vezes, traz con­ computação, sendo um objeto conceituai que pode
fusão. O termo “finitos” está presente para diferen­ executar uma linguagem abstrata - especificamente,
ciar as FSMs de uma representação similar usada esse sentido de máquina não é o de hardware. As
em matemática, que pode ter um numero infinito de máquinas de estados finitos são também conhecidas
estados. Essa representação não é muito útil em pro­ como autômatos de estados finitos. As FSMs são
jeto digital. Pelo contrário, as FSMs têm um número usadas para muitas outras coisas além de projeto
limitado, ou finito, de estados. O termo “máquina” digital.
132 Sistemas Digitais

uma FSM , há implicitamente uma operação AND senão realizada com a borda de subida de
um relógio. P or exem plo, um a transição indicada por “a 1” significa na realidade “ a ' c l kA” .
D aqui em diante, quando desenharm os as transições de um a FSM , não incluirem os a borda
de subida do relógio e seguirem os a convenção de que para todas as transições há im plicita­
m ente um a operação A N D com a borda de subida de um relógio. A Fig. 3.39 ilustra o d ia­
gram a de estados do tem porizador de laser da Fig. 3.38, que foi redesenhado usando-se um
relógio im plícito.
N o próxim o ciclo de relógio, ao qual não há co n d içõ es asso ciad as, um a
transição leva sim plesm ente ao estado seguinte, devido à borda de subida que
está im plícita na aresta da transição.
Vamos exam inar m ais alguns exem plos, m ostrando com o descrever um com portam ento
sequenciado no tem po por m eio das FSM s.

► EXEMPLO 3.5 Chave de carro segura


Você já notou que as chaves de muitos dos novos automóveis apresentam uma cabeça de plástico
mais espessa do que as encontradas no passado (veja a Fig. 3.40)? A razão 6 que, acredite se
quiser, há um chip de com putador dentro da cabeça da chave, implementando o que se conhece
por chave de carro segura. Em uma versão básica dessa chave, quando o motorista gira a chave
de ignição, o computador do carro (que está debaixo da tampa do motor e comunica-se usando o
que é cham ado de estação de base) envia um sinal de rádio solicitando ao chip da chave do carro
que responda enviando o seu identificador via um sinal de rádio. Então, o chip da chave responde
enviando o identificador (ID), por meio do que 6 conhecido como transponder (um transponder
“transmite” “respondendo” a uma solicitação). Se a estação de base não receber uma resposta, ou
se a resposta da chave tiver um ID diferente do 1D programado no com putador do cano, então o
computador irá se tornar inoperável e o carro não dará a partida.

Figura 3.40 Por que as cabeças das chaves estão se tornando mais espessas? Observe que a chave
da direita é mais espessa do que a da esquerda. A da direita tem um chip de computador em seu
interior que envia um identificador ao com putador do carro, ajudando dessa forma a reduzir os
roubos de carro.

Vamos projetar um bloco de controle


para uma dessas chaves, cujo 1D é 1011 (os
IDs reais têm tipicam ente 32 bits ou mais
de comprim ento, e não apenas quatro bits).
Assum a que o bloco de controle tem uma
entrada a que deverá ser 1 quando o com ­
putador do carro estiver solicitando o ID do
carro. Assim, inicialmente, o bloco de con­
trole espera que a entrada a torne-se 1. En­
tão, a chave deve enviar seu ID (1011) em Figura 3.41 A FSM da chave de carro segura.
form a serial, com eçando com o bit mais à
direita, por meio de uma saída r. A chave envia 1 no primeiro ciclo de relógio, 1 no segundo ciclo,
0 no terceiro e, finalmente, 1 no quarto. A FSM do bloco de controle está mostrada na Fig. 3.41.
Observe que a FSM envia os bits começando com o bit da direita, que é conhecido como bit menos
significativo (LSB, de least significant bit).
A Fig. 3.42 mostra o diagrama de tempo da FSM para uma situação particular. Quando fazemos
a=l, a FSM entra no estado Kl e gera a saída r= l. Então, a FSM prosseguirá, passando pelos esta­
dos K2, K3 e K4. e gerando as saídas r= l, 0 e 1. respectivamente, mesmo que a entrada volte a 0.
Projeto Lógico Seqüencial - Blocos de Controle 133

Os diagramas de tempo representam


situações particulares, que são definidas
pelo modo de atribuir valores às entradas. E n tr a d a s
cik_rLrLrLn_n_n_rLr^
.----------------- .
Que leria acontecido se tivéssemos man­ a -----------------1 I---------------------------------------

tido a= l por muito mais ciclos? O dia­ Espera Espera Kl K2 Espera E spera
K3
grama de tempo da Fig. 3.43 ilustra essa «
situação. Observe como a FSM. após ter S a íd a s
retornado ao estado de Espera, vai nova­
mente para o estado Kl no próximo ciclo.
O chip de computador dentro da chave
Figura 3.42 O diagrama de tempo da chave de carro
tem circuitos que convertem os sinais de
segura.
rádio em bits e vice-versa.
“Sendo assim , algum dia a chave
do meu carro precisará que sua pilha
seja trocada?” você poderia perguntar.
d*_n_n_n_n_n_n_n_n
E n tr a d a s _______________________________
Na verdade, não; esses chips extraem a a _______________

energia e também o sinal de relógio da


E s ta d o E s p e ra E s p e ra K1 K2 K3 K4 E s p e ra K1
componente magnética do campo de ra­
diofrequência que é gerado pela estação
S a íd a s
de base do computador. As necessidades
extremamente baixas de energia fazem
dos circuitos digitais custom izados, ao
r r
invés de software em microprocessador, Figura 3.43 Diagrama de tem po da chave de carro
o método de implementação preferido. segura para uma sequência diferente de valores da en­
As chaves com chip de computador trada a.
tornam o roubo dc carro muito mais di-
ffcil, porque não são mais possíveis as “ ligações diretas” para dar partida ao carro, já que o compu­
tador não funcionará a menos que receba o identificador correto. Esse método é na verdade muito
simplista: na maioria dos carros, ocorre uma comunicação mais sofisticada entre o computador e
a chave, envolvendo o envio de diversas mensagens em ambos os sentidos, usando inclusive men­
sagens criptografadas, o que dificulta ainda mais enganar o computador. Uma desvantagem das
chaves de carro seguras é que você não pode mais ir até o chaveiro e fazer cópias dessas chaves
por R$ 10,00, a cópia dessas chaves exige ferram entas especiais, elevando o custo a R$ 100.00
ou mais. Quando as chaves com chips de com putador estavam surgindo, um problema comum era
que os fazedores de cópias de chave não se davam conta de que havia chips dentro delas. As cópias
eram feitas e os proprietários de carro iam para casa e depois não conseguiam descobrir porque
seus carros não davam partida, mesmo que a chave entrasse e girasse na chave de ignição. M

► EXEMPLO 3.6 Detector de código


Você provavelmente já viu portas em aeroportos
ou hospitais que, para serem abertas, necessitam
que uma pessoa aperte uma sequência particular de
botões (isto é, um código). Por exemplo, pode ha­
ver três botões, de cores vermelho, verde e azul, e
um quarto botão para dar início ao código. Quando
se aperta o botão de iniciar e, então, a seguinte
sequência - vermelho, azul, verde e vermelho - a
porta é aberta. Esse sistema pode ter a arquitetura Figura 3.44 A rquitetura do detector de
geral m ostrada na Fig. 3.44. Um a saída extra do código.
painel de botões, a. é 1 sempre que um botão qual­
quer estiver sendo pressionado.
Podem os descrever o com portam ento do bloco DetectorDeCódigo usando uma FSM com o
diagrama de estados da Fig. 3.45.
134 Sistemas Digitais

P or sim plicidade, assum a que


cada botão tem um circuito especial
que o deixa sincronizado com o sinal
de relógio, criando um pulso com a
duração de exatam ente um ciclo de
relógio para cada aperto de botão.
Isso é necessário para garantir que o
estado atual não avance erroneamente
para um outro seguinte, caso o aperto
venha a durar mais de um único ciclo
de relógio. (Projetaremos tal circuito
de sincronização no Exemplo 3.9.)
• O com portam ento da FSM é o Figura 3.45 FSM para detector de código.
seguinte:
• A FSM começa no estado Espera. Enquanto o botão de início não for apertado ( s 1), a FSM perma­
necerá em Espera; quando o botão de início é pressionado (s), a FSM passa para o estado Início.
Como a FSM está no estado Início, isso significa que ela agora está pronta para detectar a
seqüência vermelho, azul, verde e vermelho. Se nenhum botão for apertado ( a 1), a FSM per­
manecerá em Início. Se um botão for pressionado e (AND) se esse botão for o vermelho (ar),
a FSM irá para o estado Vermelho 1 ou VermL abreviadamente. Se um botão for pressionado
e (AND) se esse botão não for o vermelho ( a r '), a FSM retornará ao estado Espera-observe
que, quando se está no estado Espera, apertos nos botões de cores serão ignorados até que o
botão de início seja pressionado novamente.
• A FSM perm anecerá no estado Verm l enquanto nenhum botão for pressionado ( a 1). Se um
botão for pressionado e se esse botão for o azul (ab), a FSM avançará para o estado Azul: se
esse botão não for o azul (a b '). a FSM retornará ao estado de Espera.
• De m odo semelhante, a FSM permanecerá no estado Azul enquanto nenhum botão for pres­
sionado ( a ') e passa para o estado Verde se ocorrer a condição ag e o estado Espera se ocorrer
a condição a g '.
Finalmente, a FSM permanecerá em Verde se nenhum botão for pressionado e irá para o estado
Vennelho2, ou Verm2, abreviadam ente, se ocorrer a condição a r e para o estado Espera, se
ocorrer a condição a r '.
• Se a FSM chegar até o estado VcrmeIho2, isso significa que a pessoa apertou os botões na se­
qüência correta - assim, Vermellw2 faz u=I destrancando a porta. Observe que todos os outros
estados fazem u=0. A FSM retorna então ao estado Espera.
Lembre-se de que im plicitamente qualquer condição associada a uma transição está fazendo
uma operação AND com uma borda de subida de relógio. ◄

Conferindo o comportamento da FSM


D efin ir c o rre ta m e n te o co m p o r­
tam en to de um sistem a é difícil.
Q uanto antes acharm os os proble­
m as, m ais fácil será consertá-los.
A ssim , depois de criarm os a FSM ,
p o d eríam o s passar um tem po fa­
zen d o p e rg u n tas so b re co m o o
circu ito irá se co m p o rtar em ce r­
tas situações de entrada e verificar
então se a FSM irá responder com o
esperávam os. C onsidere a FSM do
detector de código que está na Fig.
3.45. O que acontecerá se a pessoa Figura 3.46 FSM melhorada para detector de código.
Projeto Lógico Seqüencial - Blocos de Controle 135

pressionar o botão de início e em seguida ap ertar sim ultaneam ente todos os ires botões de
cores, quatro vezes seguidas? Bem , do m odo que definim os a FSM , a porta será destrancada!
U m a solu ção para essa situação indesejada é m odificar as condições das arestas de transi­
ção que retornam ao estado Espera. No lugar da condição a r ' , poderíam os usar a condição
a ( r '+ b + g ) . A ssim , enquanto a FSM está esperando que o botão verm elho seja pressionado,
se o botão verm elho não for pressionado ou se os botões azul ou verde forem apertados, ela
retornará ao estado Espera e, conseqüentem ente, a porta não será destrancada. Q uando esti­
verm os esperando pelos outros botões específicos, um a situação sem elhante ocorrerá. Um a
FSM m elhorada está m ostrada na Fig. 3.46. C onsertar a FSM foi fácil, m as tentar consertar
um circuito provindo de um a FSM seria m uito m ais difícil.
O corre que a FSM da Fig. 3.46 ainda tem um problem a e bem sério. D escreverem os esse
problem a no E xem plo 3 . 13.

Arquitetura padrão do bloco de controle para implementar uma FSM na


forma de circuito seqüencial
A gora que vim os com o descrever o com portam ento seqüencial usando um a FSM , precisam os
de um m étodo estru tu rad o para converter um a FSM em circu ito seqüencial. N a verdade,
quando se utiliza um a arquitetura padrão para im p lem en tar o circu ito , o m étodo torna-se
m uito sim ples, consistindo em um registrador de estado e um a lógica com binacional, os quais
são conhecidos com o bloco de controle. Há m uitas outras form as de se im p lem en tar um a
FSM . m as lim itar-se a um a arquitetura padrão resulta um m étodo direto de projeto. A arqui­
tetura padrão pode não produzir o núm ero m ínim o de transistores, m as com o já m encionam os
m uitas vezes isso não é m ais um a desvantagem nos dias atuais.
A arquitetura de um bloco de controle padrão
para um a FSM consiste em um registrador de e s­
tado e um a lógica co m b in acio n al. A arq u itetu ra
padrão para a FSM do tem p o rizad o r de laser da
Fig. 3.39 está m ostrada na Fig. 3.47. A arquitetura
consiste em um registrador de estado e um a lógica
com binacional.
O registrador de estado é um registrador de dois
bits que contém um núm ero binário que representa
o estado atual (no caso, o registrador tem dois bits
de largura para representar cada um dos quatro es­ Figura 3.47 A rquitetura de bloco de
tados possíveis). controle padrão para o tem porizador de
A s entradas da lógica com binacional são as en ­ laser.
tradas da FSM (neste caso, b) e tam bém as saídas do
registrador de estado ( s l e sO). A s saídas da lógica
com binacional são as saídas da FSM (x) e tam bém %s 0 CJ CcuO
2 u. Lógica c/) o
§*■
os bits do próxim o estado que serão carregados no C
J ] TJ Com binacional
registrador de estado (n l e nO). O s detalhes da ló ­
gica com binacional determ inam o com portam ento Sf m
do circuito. O processo de desenvolvim ento desses Registrador de / 'm
clk
R e s t a d o d e m bits
detalhes serão cobertos na próxim a seção.
U m a visão m ais geral da arquitetura d o bloco
de controle padrão aparece na Fig. 3.48*. E ssa fi­
Nt ____
gura assum e que o registrador de estado tem tn bits Figura 3.48 A rquitetura de um bloco
de largura. de controle padrão - visão geral.

* N. de T : Conforme a prática comum, manteremos as letras I,O e S para indicar respectivamente a entrada (Input),a saída
(Output) e o estado (State) do bloco de controle.
136 Sistemas Digitais

► 3.4 PROJETO DE BLOCO DE CONTROLE


Processo de projeto de bloco de controle em cinco passos
Podem os p rojetar um bloco de controle usando um processo de cinco passos, resum ido na
Tabela 3.3. Irem os ilustrar esse processo com alguns exem plos.

T A B E LA 3.2 Processo de projeto de um bloco de controle

Passo D e scriçã o

q Capture a FSM Crie uma FSM que descreva o comportamento desejado do bloco de controle.
C/>
00
(U
Q.

CM
Crie a arquitetura Crie a arquitetura padrão usando um registrador de estado com largura apro­
O
c/> priada e uma lógica combinacional, cujas entradas são os bits do registrador
00
cu de estado e as entradas da FSM e cujas saídas são os bits de próximo estado
Q-
e as saídas da FSM.

n Codifique os estados Atribua um número binário único a cada um dos estados. Cada número biná-
© rio que representa um estado é conhecido como uma codificação. Qualquer
ro codificação poderá ser usada desde que cada estado tenha uma codificação
única.

Crie a tabela de Crie uma tabela-verdade para a lógica combinacional de modo tal que a
estados lógica irá gerar as saídas e os sinais de próximo estado corretos para a FSM.
8 Ordenando as entradas primeiro com os bits de estado faz com que a tabela­
is verdade descreva o comportamento dos estados. Assim, a tabela é uma
tabela-verdade.

q Implemente a lógica Implemente a lógica combinacional usando qualquer método.


8
<U combinacional
D-

► EXEMPLO 3.7 Bloco de controle para o temporizador que liga um laser durante três ciclos
(continuação)
Podemos im plem entar o temporizador do laser (veja o Exemplo 3.4) como um circuito seqüencial
usando o processo de cinco passos.
Passo 1: C a p tu re a FSM . A FSM já foi criada antes (veja a Fig. 3.39).
Passo 2: C rie a a rq u ite tu ra . A arquitetura do bloco de controle padrão para a FSM do tempo­
rizador de laser foi mostrada na Fig. 3.47. O registrador de estado tem dois bits para
representar cada um dos quatro estados, A lógica combinacional tem a entrada externa
b e as entradas s l e sO que vêm do registrador de estado, e tem a saída externa x e as
saídas n l e nO que se dirigem ao registrador de estado.
Passo 3: C odifique os estados. Podemos codi­
ficar os estados como segut-Des: 00;
Ligl: 01; Lig2: 10 e Lig3: 11. Lembre-
se, qualquer codificação não repetida
é aceitável. O diagram a de estados
com as codificações está mostrado na
Fig. 3.49.
Passo 4: C rie a ta b e la de estad o s. Dadas a
arquitetura da implem entação e a co­
dificação binária de cada estado, po­ Figura 3.49 Diagrama de estados do tempo­
demos criar a tabela de estados para rizador de laser com os estados codificados.
Projeto Lógico Seqüencial - Blocos de Controle 137

a lógica combinacional, com o mostrado na Tabela 3.3. Nas colunas de entrada, se lis­
tarmos primeiro as entradas do registrador de estado, então poderemos ver facilmente
quais linhas correspondem a quais estados. Na esquerda, preenchemos todas as com bi­
nações de entradas como se faz com uma tabela-verdade. Em cada linha, olhamos no
diagrama de estados na Fig. 3.49 para determ inar as saídas apropriadas. Para as duas
linhas que começam com sls0= 00 (estado Desligado), x deve ser 0. Se b=0, o bloco
de controle deverá permanecer no estado Desligado, de modo que nlnO deverá ser 00.
Se b=l, o bloco de controle deverá ir para o estado Ligadol (Ligl), de modo que nlnO
deverá ser 01.
De modo sem elhante, para as duas li­ TABELA 3.3 Tabela de estados para o
nhas que com eçam com sls0 = 0 1 (estado bloco de controle do temporizador de
Ligl), x deve ser 1 e o próximo estado deve laser
ser Lig2 (independentem ente do valor de Entradas Saídas
b), de modo que nlnO deverá ser 10. C om ­
sl s0 b X n1 n0
pletam os as últimas quatro linhas de modo
semelhante. 0 0 0 0 0 0
Tenha cuidado e observe a diferença en­ Des
0 0 1 0 0 1
tre as entradas e as saídas da FSM da Fig.
3.49 e as entradas e as saídas da lógica com ­ 0 1 0 1 1 0
binacional da Fig. 3.50; esta últim a inclui Ligl
0 1 1 1 1 0
os bits que se originam no registrador de
estado c os que sc destinam a esse mesmo 1 0 0 1 1 1
registrador. Lig2
1 0 1 1 1 1
Passo 5: Implementea lógicacombinacional. Pode­ 1 1 0 1 0 0
mos terminar o projeto usando o processo de Lig3
projeto de lógica combinacional do Capítulo 1 1 1 1 0 0
2. Da tabela-verdade, obtem os as seguintes
equações para as três saídas da lógica com ­
binacional:
x = sl + s0 (observe da tabela que x=l se s 1=1 ou s0=l)
nl = s l 1sOb* + s l ' sOb + s l s 0 ' b ' + sls0'b
nl = s l 1s0 + slsO1
n0 = s l ' s01b + sIsO' b 1 + sls0'b
n0 = s l ' s01b + slsO'
Obtemos então o circuito seqüencial da Fig. 3.50, que implementa a FSM.

M uitos livros organizam a tabela de estados


diferentem ente da Tabela 3.3. N o entanto, in-
tencionalm ente organizam os a tabela de m odo
que ela sirva tanto com o um a tabela de estados
com o um a tabela-verdade, que pode ser usada
para projetar a lógica com binacional do bloco
de controle.

Figura 3.50 Implementação final do bloco de controle para


o temporizador de laser de três ciclos em nível alto.
138 Sistemas Digitais

► EXEMPLO 3.8 Compreendendo o comportamento do bloco de controle do temporizador de laser


Para melhor compreendermos como um bloco de controle implementa uma FSM, vamos analisar o
comportamento do bloco de controle para o temporizador do laser de três ciclos em nível alto. As­
suma que inicialmente estamos no estado 00 ($ls0=00), b ê 0. O relógio está em nível baixo, no mo­
mento. Como mostrado na Fig. 3.51 (lado esquerdo) e baseando-se na lógica combinacional, x será 0
(o valor desejado de saída para o estado 00), nl será 0 e n0 será 0, significando que o valor 00 estará
esperando na entrada do registrador de estado. Assim, na próxima borda de relógio, 00 será carregado
no registrador de estado. Isso significa que iremos permanecer no estado 00, o que 6 o correto.

x=0 x= 0 x=0

Figura 3.51 Análise do com portam ento do bloco de controle para o tem porizador do laser de três
ciclos em nível alto.

Agora, suponha que b torne-se 1. Como mostrado na Fig. 3.51 (no meio), x ainda será 0, como de­
sejado, mas n0 será 1, significando que o valor 01 estará esperando na entrada do registrador de estado.
Assim, na próxima borda de relógio, 01 será carregado no registrador de estado, como desejado.
Como mostrado na Fig. 3.51 (lado direito), um pouco depois de 01 ter sido carregado no registra­
dor de estado, x irá se tornar 1 (após a carga no registrador, haverá um pequeno atraso de tempo para
que os novos valores de s l e s0 propaguem-se através das portas da lógica combinacional). Essa saída
é a correta - devemos gerar uma saída x=l quando estamos no estado 01. Alem disso, nl irá se tomar
1 e n0 será igual a 0, significando que o valor 10 estará esperando na entrada do registrador de estado.
Assim, na próxima borda de relógio, 10 será carregado no registrador de estado, como se deseja.
Depois de 10 ter sido carregado no registrador de estado, x permanecerá 1 e n ln O irá se tornar
11. Quando vier uma outra borda de relógio, 11 será carregado no registrador, x permanecerá 1 e
n ln O irá se tornar 00.
Na próxima borda de relógio, 00 será carregado no registrador. Logo após, x irá se tom ar 0 e,
se b for 0, n ln O irá permanecer 00, mas, se b for 1, n ln O irá se tornar 01. Observe que estamos de
volta ao ponto de onde começamos.
A compreensão de como um registrador de estado e uma lógica combinacional implementam
uma máquina de estados pode exigir um pouco de tempo, já que, quando estamos em um estado
em particular (indicado pelo valor atual do registrador de estado), geramos a saída externa daquele
Projeto Lógico Seqüencial - Blocos de Controle 139

estado e também os sinais para o próximo estado - mas não faremos a transição (isto é, não carre­
garemos o registrador de estado) até que ocorra a próxima borda de relógio. M

► EXEMPLO 3.9 Sincronizador de aperto de botão


Queremos construir um circuito que sincroniza
um aperto de botão com um sinal de relógio, de tal c ic lo l c ic lo 2 c ic lo 3 n c ic lo 4
1 1
c lk
modo que, quando uma pessoa apertar o botão, o
resultado será um sinal que fica em nível alto por E n tra d a s :
bi
exatamente um ciclo de relógio. Esse sinal sincro­
nizado é útil para evitar que um simples aperto S a íd a s :

de botão, que dura diversos ciclos de relógio, seja bo

interpretado como múltiplos apertos de botão. A


Fig. 3.52 usa um diagrama de tempo para ilustrar
o comportamento desejado para o circuito. Figura 3.52 Diagram a de tem po desejado
A entrada do circuito será o sinal bi e a saída, para o sincronizador de aperto de botão.
o sinal bo. Quando bi torna-se 1, representando
o fato de que o botão está sendo apertado, querem os que bo seja 1 por exatam ente um ciclo. A
seguir, esperamos que bi retorne a 0 e, então, esperamos que bi torne-se 1 novamente, o que indi­
caria o próximo aperto do botão.
Passo 1: C a p tu re a FSM . A Fig. 3.53(a) mostra uma FSM que descreve o comportamento do
circuito. A FSM fica esperando no estado A, gerando a saída bo=0 até que bi seja 1.
Então, a FSM faz a transição para o estado B, produzindo a saída bo=l. A seguir, a FSM
faz uma transição para o estado A ou C, os quais ambos geram bo=0 novamente. Desse
modo, bo foi 1 por apenas um ciclo, como se desejava. Se bi retornar a 0, a FSM pas-

Entradas da FSM: b i; Saídas da FSM: bo


bo o.
Q) c/>
TI Q >%
L ó g ic a c/> Q>
CL

c o m b in a c io n a l
Ui
n1

nO
s1 f f sO
R e g is tr a d o r
Entradas da FSM: b i; Saídas da FSM: bo c lk - > d e e s ta d o

t t =
(b)
n1 = s V s O b i + s 1 s 0 'b i
n 0 = s 1 's 0 'b i
b o = s V s O b i' + s V s O b i = s 1 's 0

Lógica combinacional o. (/)


Q> 03
E n tr a d a s S a íd a s **O
£ §•
s1 sO bi n1 nO b o

0 0 0 0 0 0

0 0 1 0 1 0
Figura 3.53 Passos do
0 1 0 0 0 1
projeto do sincronizador
0 1 1 1 0 1
de aperto de botão: (a)
1 0 0 0 0 0
FSM inicial, (b) arqui­
1 0 1 1 0 0
tetura, (c) FSM com os
1 1 0 0 0 0
estados codificados, (d) não usado
1 1 1 0 0 0
tabela de estados e (e)
(d)
circuito final com a ló­
gica com binacional im ­
plementada.
140 Sistemas Digitais

sará de B para A . Se bi ainda for 1, a FSM irá para o estado C, no qual fica esperando
que bi retorne a 0, causando uma transição de volta ao estado A.
Passo 2: Crie a arquitetura. Como a FSM tem três estados, a arquitetura tem um registrador de
estado de dois bits, como mostrado na Fig. 3.53(b).
Passo 3: Codifique os estados. Podemos codificar os estados imediatamente como 00, 01 e 10,
como mostrado na Fig. 3.53(c).
Passo 4: Crie a tabela de estados. Convertemos a FSM, com os estados codificados, em uma
tabela de estados com o mostrado na Fig. 3.53(d). No caso do estado 11. que não foi
usado, escolhemos uma saída bo=0 e uma transição de volta ao estado 00.
Passo 5: Implemente a lógica combinacional. Deduzimos a equação de cada saída da lógica
combinacional, como mostrado na Fig. 3.53(e), e então criamos o circuito final tam ­
bém mostrado. ◄

► EXEMPLO 3.10 Gerador de seqüência


Queremos projetar um circuito com quatro saídas: w, x,
y e z. O circuito deve gerar a seguinte seqüência de pa­
drões de saída: 0001, 0011,1100 e 1000. Depois de 1000,
o circuito deve repetir a seqüência, começando em 0001
novamente. Queremos que o circuito produza o padrão
seguinte de bits apenas na borda de subida do relógio.
Os geradores de seqüência são comuns em uma am ­
pla variedade de sistemas. Por exemplo, poderemos que­
rer que um conjunto de quatro lâmpadas seja colocado a
piscar de acordo com um padrão em particular, tal como Figura 3.54 FSM do gerador de se­
ocorre com painéis lum inosos em festas. Poderíamos, qüência.
em vez disso, querer que um motor elétrico realizasse
rotações com um número determinado de graus a cada
ciclo de relógio. Eletroímãs em torno do motor são ener-
gizados segundo uma seqüência específica de modo a
atrair o motor m agnetizado para a posição seguinte da
rotação-tal motor é conhecido como motor de passo , já
que o motor gira em passos.
Podemos projetar o bloco de controle do gerador de
seqüência usando o nosso processo de cinco passos.
Passo 1: Capture a FSM. Obtemos o comportamento
do sistem a na form a da FSM m ostrada na
Fig. 3.54. A FSM tem quatro estados que
Figura 3.55 Arquitetura do bloco de
denominamos de A, # , C e D (embora quais­
controle do gerador de seqüência.
quer outros nomes não repetidos também se­
jam aceitáveis).
TABELA 3.4 Tabela de estados para
Passo 2: Crie a arquitetura. A arquitetura do bloco de o b lo co de c o n tro le do g e ra d o r de
controle padrão para o gerador de seqüência se q ü ê n cia
terá um registrador de estado de dois bits para
representar os quatro estados possíveis. As sa­ Entradas Saídas
ídas da lógica serão w, x, y e z juntam ente com sl s0 W X y z nl n0
nl e n0, como mostrado na Fig. 3.55. A lógica
combinacional não tem entradas. A 0 0 0 0 0 1 0 1

Passo 3: Codifique os estados. Codificaremos os esta­ B 0 1 0 0 i 1 1 0


dos como segue-A: 00; B\ 01: C: 10 e D: 11. C 1 0 1 1 0 0 1 1
Qualquer outra codificação, com um código
único para cada estado, também seria aceitável. D 1 1 1 0 0 0 0 0
Projeto Lógico Seqüencial - Blocos de Controle 141

Passo 4: Crie a tabela de estados. A tabela de estados para a FSM com os estados codificados
está mostrada na Tabela 3.4.
Passo 5: Implemente a lógica combinacional.
D eduzim os as equações para as saídas
da lógica com binacional a p a rtir da
tabela. D epois de algum as sim p lifi­
cações algébricas, as equações são as
seguintes:
w = sl
x = s ls O '

y = $ l's O
z = s l'
n l = s l x o r sO

nO = sO*

O circuito final está mostrado na Fig. 3.56. ◄ c. « ee . . . .


Figura 3.56 A rquitetura do bloco de
controle do gerador de sequência.

► EXEMPLO 3.11 Chave de carro segura


Vamos com pletar o projeto do bloco de controle de chave de carro segura do Exemplo 3.5. Do
processo de cinco passos, já realizamos o de “Capture a FSM”, tendo-se obtido a FSM mostrada
na Fig. 3 .4 1. Os demais passos são os seguintes.
Passo 2: Crie a arquitetura. Com o a FSM tem cinco estados, precisaremos de um registrador
de estado de três bits. Esse registrador pode representar oito estados. Portanto, três
estados não serão usados. O sinal a é a entrada da lógica combinacional. ao passo que
as saídas são o sinal r e as saídas de próximo estado n2, n l e nO. A arquitetura está
mostrada na Fig. 3.57.
Passo 3: Codifique os estados. Vamos codificar os estados usando um a codificação binária
contínua de 000 a 100. A FSM com as codificações de estado está m ostrada na Fig.
3.58.

Figura 3.58 FSM da chave de carro segura


com os estados codificados.
Figura 3.57 A rquitetura do bloco de
controle para a chave de carro segura.

Passo 4: Crie a tabela de estados. A FSM convertida em uma tabela de estados está mostrada
na Tabela 3.5. Para os estados que não foram usados, decidim os fazer r=0 e o estado
seguinte ser 000.
142 Sistemas Digitais

Passo 5: Im p le m en te a lógica co m b in a- TABELA 3.5 Tabela de estados para o b lo co de


cional. Para im plem entar a lógica c o n tro le da chave de c a rro segura
com binacional, podem os proje­
Entradas Saídas
tar quatro circuitos, um para cada
saída. Deixamos esse passo como s2 sl sO a r n2 nl nO
exercício para o leitor. ◄ 0 0 0 0 0 0 0 0
Espera
0 0 0 1 0 0 0 1
Mais sobre o projeto de blocos de controle
0 0 1 0 1 0 1 0
Convertendo um circuito em uma FSM Kl
0 0 1 1 1 0 1 0
M ostram os na S eção 2.6 que um circuito,
um a tab ela-v erd ad e e um a eq u ação eram 0 1 0 0 1 0 1 1
K2
todos m aneiras de se representar a m esm a 0 1 0 1 1 0 1 1
fu n ção c o m b in a c io n a l. D e m odo se m e ­
0 1 1 0 0 1 0 0
lhante, um circuito, um a tabela de estados K3
e um a FSM são todos m aneiras de se repre­ 0 1 1 1 0 1 0 0
sentar a m esm a função seqüencial. 1 0 0 0 1 0 0 0
K4
E stivem os co nvertendo um a FSM em 1 0 0 1 1 0 0 0
um circu ito usando um processo de cinco
1 0 1 0 0 0 0 0
passos. Podem os tam bém converter um cir­
cuito em um a FSM , aplicando o processo 1 0 1 1 0 0 0 0
de cinco passos da T abela 3.2 ao contrário. 1 1 0 0 0 0 0 0
Não usado
Em geral, a conversão de um circu ito em 1 1 0 1 0 0 0 0
um a equação ou FSM é co n h ecid a com o
1 1 1 0 0 0 0 0
“ fazer a engenharia reversa'' do com porta­
m ento do circuito. 1 1 1 1 0 0 0 0

► EXEMPLO 3.12 Convertendo um circuito seqüencial em uma FSM


Dado o circuito seqüencial da Fig. 3.59, encon­
tre a FSM equivalente.
Com eçam os com o passo 5 do processo de
cinco passos descrito na Tabela 3.2. O circuito
combinacional já foi implementado e, portanto,
podemos passar para o passo 4, onde criaremos
uma tabela de estados.
A lógica com binacional da arquitetura do
bloco de controle tem très entradas: duas en­
tradas, sO e s l , representando o conteúdo do
registrador de estado, e uma entrada, x, que é
uma entrada externa. Portanto, a nossa tabela
de estados terá oito linhas porque há 2?=8 com ­
binações possíveis de entrada.
Depois de termos montado a tabela de es­
tados e enum erado todas as com binações pos­
síveis de entradas (por exemplo, sls0x= 000,
.... s lsO x = lll), usamos as técnicas descritas na Figura 3.59 Um circuito seqüencial com
Seção 2.6 para preencher os valores de saída. comportamento desconhecido.
Por exemplo, considere a saída y. Do circuito
combinacional, vemos que y = s l ' . Sabendo disso, colocamos um 1 em todas as casas da coluna
y da tabela de estados em que s l= 0 e colocamos um 0 nas dem ais casas da coluna y. Agora, con­
sidere nO, o qual vemos que tem a equação booleana nO = s l ' sO' x. Consequentemente, fazemos
nO ser 1, quando s l= 0 , s0=0 e x = l. Usando uma análise similar, preenchemos as colunas z e n l e
passamos ao passo seguinte.
Projeto Lógico Seqüencial - Blocos de Controle 143

No passo 3, devem os codificar os estados. Na- TABELA 3.6 Tabela de estados para o
turalm enie, os estados já foram codificados, mas circuito seqüencial
ainda podemos dar nome a cada um deles. Arbitra- Entradas
Saída
riamente, escolhem os os rótulos A, /?, C e P , vistos
na Tabela 3.6. sl s0 x nl n0 y z
ü passo 2 diz para se criar a arquitetura padrão 0 0 0 0 0 1 0
do bloco de controle. Esse passo não requer trabalho A
algum porque a arquitetura do bloco de controle já 0 0 1 0 1 1 0
foi definida. 0 1 0 0 0 1 0
Finalmente, no passo 1, obtemos a FSM. Inicial- B
mente, montamos um diagrama para a FSM com os 0 1 1 1 0 1 0
quatro estados que rotulamos no passo 3, como mos- 1 0 0 0 0 0 1
trado na Fig. 3.60(a). A seguir, colocamos os valores C
1 0 0 1
das saídas y e z próximos de cada estado. Por excm- 1 0 1
pio, no estado A (sl$0=00), as saídas y e z são 1 e 0, 1 i o 0 0 0 0
respectivamente. Portanto, escrevemos “yz=10” com D
0 0 0 0
o estado A na FSM.

Saídas: y, z Entradas: x; Saídas: y, z

CD CD CDyz=10
CD yz=10
yz=10

CD CD CDyz=00
CD yz=01
yz=01

(a) (b)

Figura 3.60Conversão de uma tabela de estados em um diagrama de FSM: (a) a FSM inicial, (b) a
FSM com as saídas especificadas e (c) a FSM com as saídas e as transições especificadas.

Depois de listar as saídas dos estados B, C e D, mostradas na Fig. 3.60(b), voltamos nossa
atenção às transições dc estado, especificadas na tabela de estados por nl e n0. Considere a pri­
meira linha da tabela de estados, a qual mostra que nln0=00 quando sls0x=000. Em outras pala­
vras, quando estamos no estado A (sls0=00), o próximo estado será o estado A (nln0=00) se x for
0. No diagrama da FSM, isso pode ser representado desenhando uma seta que vai do estado A ao
próprio estado A e rotulando a nova transição com tvx '.” Agora, considere a segunda linha da ta­
bela de estados, a qual indica que, tendo como origem o estado A. deveremos fazer uma transição
para o estado B se x=l. Desenhamos uma seta de transição do estado A para o 5 e a rotulamos com
“x’\ Depois de rotular todas as transições, ficamos com a FSM da Fig. 3.60(c).
Você poderá notar que o estado D não pode ser alcançado a partir de nenhum outro estado e
dele sai uma transição para o estado A, que não depende do valor da entrada. E razoável inferir
que a FSM original tinha apenas três estados e que o estado D é um estado extra, não usado. No
entanto, por completitude, é preferível deixar o estado D no diagrama final. ◄

D ado q ualquer circu ito síncrono, consistindo em portas lógicas e flip-flops, poderem os
sem pre redesenhar o circu ito com o sendo constitu íd o por um registrador de estado e um a
lógica com binacional - a arquitetura do bloco de controle padrão - sim plesm ente agrupando
todos os flip-flops. D esse m odo, a abordagem descrita anteriorm ente funciona para qualquer
circuito síncrono, não apenas para circuitos já desenhados na form a da nossa arquitetura de
bloco de controle padrão.
144 Sistemas Digitais

A rm adilhas" com uns


Q uando sc faz a captura de um a FSM , é com um co m eter erros relacionados
com as propriedades das transições que saem de um estado. Em resum o, um a

o=s ab=11 -
8

qual é o próximo estado?


e a p e n a s um a das condições de transição deve ser verdadeira durante qualquer
borda de subida de relógio. A s propriedades são:
1. Apenas uma c o n d iç ã o d e v e s e r v e rd a d e ira . Em um dado estado, não deve
haver m ais de uma condição de transição que seja verdadeira no m om ento
da borda de subida do relógio. Por exem plo, considere um a FSM com entra­
das a e b e um estado E s t a d o l com duas transições de saída (que saem do

< o4
estado), um a rotulada com vCa ” e a outra com “ b” . O que acontece quando
a = l e b=1? Qual das duas transições deverá será seguida pela FSM ? O pro­
jetista da FSM deve se assegurar de que as condições sejam exclusivas, ape­
nas um a delas poderá ser verdadeira em um dado instante. No exem plo, o
projetista poderia atribuir “ a" e “a 'b " às transições para resolver o pro­
blema. Na realidade, um tipo particular de FSM , conhecida com o FSM não-
determinística , perm ite de fato mais de uma condição verdadeira e que uma
delas seja escolhida de modo arbitrário. Entretanto, quando projetam os cir­
cuitos, usualm ente querem os um com portam ento determ inístico. Por essa
razão, não iremos levar adiante a análise das FSM s não-determ inísticas.
2. Uma d a s c o n d iç õ e s d e v e s e r v e rd a d e ira . Em um dado estado, no m om ento
da borda de subida do relógio, u n ia das transições de saída deve ser esco­
lhida. Em outras palavras, em cada estado, todas as com binações possíveis de
Que acontecerá se
entrada devem ser consideradas. A lgum as vezes, os projetistas não se lem ­
ab=00? bram de garantir isso. Por exemplo, considere um a FSM com entradas a e b,
c um estado E s t a d o l com duas transições de saída, uma denom inada “a ” c
outra “a ' b”. Que acontecerá se a FSM estiver no E s t a d o l e sc a = 0 e b = 0?
N enhum a das condições das duas transições será verdadeira. A FSM não está
com pletam ente especificada, precisam os acrescentar uma terceira transição,
indicando a que estado ir se a 1b 1 for verdadeira. Com essa terceira condição,
cobrim os todos os valores possíveis de a e b. Uma transição com um ente es­
quecida é aquela que aponta de volta ao próprio estado.
Podem os verificar as duas propriedades acim a usando a álgebra booleana.
No caso da prim eira propriedade, em que apenas um a das condições deve ser
verdadeira, podem os verificar se o resultado da A N D d e c a d a p a r d e c o n d iç õ e s
p a r a a s t r a n s iç õ e s d e u m e sta d o s e m p re s e r á 0. Por exem plo, se um estado tiver
duas transições, um a com a condição a e a outra com a condição a ' b, então por
m eio de transform ações booleanas poderem os obter:
a * a 'b
= (a * a ' ) * b
= 0 * b
= 0
No caso da segunda propriedade, em que deve haver um a condição verdadeira, po­
dem os verificar se a O R d e to d a s a s c o n d iç õ e s d e t r a n s iç ã o d e um e s ta d o s e m p re r e s u lt a r á
em 1. C onsiderando o m esm o exem plo de um estado com duas transições, um a com a condi­
ção a e a outra com a condição a 1b, por m eio de transform ações booleanas, obterem os:
a + a 'b
= a * (l+ b ) + a 'b
= a + ab + a 'b
= a + ( a + a ') b
= a + b
Projeto Lógico Seqüencial - Blocos de Controle 145

E stá claro que a O R dessas duas condições não é 1, m as é a+b. A ssim , se a e b fossem am ­
bas 0, não haveria condição verdadeira e, portanto, o próxim o estado não estaria especificado
na FSM . A nteriorm ente, resolvem os esse problem a acrescentando um a outra condição, a ' b 1.
C onferindo novam ente, tem os:
a + a 'b + a 1b 1
= a + a '( b + b 1)
= a + a '* l
= a + a'
= 1
A análise das equações obtidas a partir das condições de cada estado e as dem onstrações
de que elas são 1 ou 0 representam um trabalho enorm e. P ortanto, um a boa ferram enta de
captura de FSM irá detectar essas duas situações e inform ar o projetista sobre isso.

► EXEMPLO 3.13 Verificação das propriedades das transições da FSM do detector de código
A Fig. 3.46 mostrou a FSM de um detector de código. Queremos verificar a propriedade de que
“apenas uma condição deve ser verdadeira” no casos das transições de saída do estado Início. Há
três condições: ar, a ' e a (r'+ b + g ). Assim, temos três pares de condições, aos quais aplicamos o
operador AND e demonstramos que cada um é igual a 0 como segue:
ar * a' a ' * a(r'+ b + g ) a r * a(r'+ b + g )
= (a * a ' ) r = (a '* a )* (r'+ b + g ) = (a* a)* r* (r'+ b + g )
= 0*r = 0*(r'+ b+ g) = a* r* (r'+ b + g )
= 0 = 0 = a rr'+ a rb + a rg
= 0 + arb+arg
= arb + arg
= ar(b+g)
Parece que nossa FSM não está com pletam ente especificada já que o AND
C om o evidên cia de
do terceiro par de condições não d 0, o que por sua vez significa que ambas as
com o essa “a rm a d i­
condições poderão ser verdadeiras ao mesmo tempo, resultando em uma FSM não-
lha ” é com um na re a li­
determinística (se ambas as condições forem verdadeiras, qual será o próximo es­
dade, adm itim os que o
tado?). Lembre-se, da descrição do problema do detector de código, que devemos
e rro com etido na Fig.
3.46 é genuíno e que
passar do estado Início para o estado Vermelhol quando um botão é pressionado
não f o i fe ito apenas (a= l), que esse botão é o vermelho e nenhum outro botão de cor está sendo pres­
com objetivos ed u ca ti­ sionado. A FSM da Fig. 3.46 apresenta a condição a r. Nosso erro foi fazer uma
vos. F o i um re v iso r do especificação parcial dessa condição, em seu lugar deveria ter sido a r b 'g ' - em
liv ro que o lo calizou. outras palavras, um botão foi pressionado (a), é o botão vermelho (r), o botão azul
D e propósito ,deixam os não foi pressionado ( b 1) e o botão verde também não foi pressionado (g 1). Então,
o erro e acrescentam os a transição que vai de Iníciol voltando ao estado Espera poderia ter sido escrita
este exem plo p a ra en­ como a ( r b 1g 1) ' (o mesmo da Fig. 3.46 depois da aplicação da lei de DcMorgan).
fa tiz a r com o os erros Depois dessa alteração, poderemos tentar comprovar novamente a propriedade de
são comuns. que “apenas uma condição deve ser verdadeira” em todos os pares de condições,
envolvendo a r b 1g 1, a ' e a ( r b 1g 1) ':
arb'g' * a' a '*a(rb1g*)1 arb'g' * a(rb'g ')'
= aa' * r b 1g' = 0*(rb'g')1 = a*a*(rb'g')*(rb'g')'
= 0 *rb 'g ' = 0 escreva r b ' g 1 como Y para ficar mais claro...
= 0 = a*a*Y *r
= a*a*0
= 0
De modo semelhante, necessitaríamos alterar as condições de transição dos demais estados e,
então, verificar também os pares de condições dessas transições.
No estado Espera, para verificar a propriedade “uma condição deve ser verdadeira”, aplicamos
o operador OR às três condições e demonstramos que o resultado é 1:
146 Sistemas Digitais

arb'g' + a' + a(rb'g')'


= a' + a r b 'g ' + a ( r b ' g ' ) ' (escreva r b 1g 1 como Y para ficar mais claro)
= a1 + aY + aY'
= a' + a(Y+Y') = a' + a (1)
= a' + a
= 1
Precisaríamos verificar essa propriedade em todos os outros estados, também. ◄

Simplificando as notações de uma FSM: saídas sem atribuição de valores


N ós já introduzim os um a notação sim plificada de FSM em que im plicitam ente q ual­
a=0 a=0
quer transição atua fazendo um a operação A N D com a borda de subida do relógio.
b=1 b=0
c=0 c=1 U m a outra sim plificação que é feita com um ente envolve a atribuição dos valores de

* saída. Se um a FSM tiver m uitas saídas, a listagem da atribuição de valores para todas
as saídas de cada estado poderá ser incôm oda, além de tornar difícil o discernim ento
do que é relevante no com portam ento da FSM . U m a sim plificação com um da nota­
ção é a seguinte: se um valor de saída não for explicitam ente atribuído a um estado,
b=1 c=1
então o valor dessa saída será implicitamente 0.

clk Simplificando os desenhos de circuito: conexões de relógio implícitas


M uitos, se não a m aioria, dos circuitos sequenciais têm um único sinal
de relógio conectado a todos os com ponentes seqüenciais. Sabem os que
um com ponente é seqüencial devido à en trad a que é desenhada com um
pequeno triângulo no sím bolo do com ponente. M uitos desenhos de c ir­
cuitos usam uma sim plificação na qual se assum e que o sinal de relógio

f está conectado a todos os com ponentes seqüenciais. E ssa sim plificação


perm ite um desenho com m enos acúm ulo de conexões.

Formalismos matemáticos no projeto de


circuitos combinacionais e seqüenciais
Descrevemos dois formalismos matemáticos, funções booleanas e FSMs, que
são usados no projeto de circuitos combinacionais e seqüenciais, respectiva­
mente. Observe que não precisamos usar esses formalismos para projetar os
circuitos. Lembre-se de nossa primeira tentativa de construir o temporizador
de laser da Fig. 3.35, que fica ligado durante três ciclos. Sim plesm ente reunimos e conectam os
componentes com a expectativa de obter um circuito que funcionasse corretamente. No entanto, o
uso de formalismos proporciona um método estruturado e confiável de se projetar circuitos. Esses
form alism os também fornecem em basamento para as potentes ferramentas automatizadas que nos
ajudam a realizar projetos, tais com o as ferramentas que autom aticam ente verificam a existência
das “armadilhas** comuns que foram descritas anteriorm ente nesta seção, as que automaticamente
convertem equações booleanas ou FSMs em circuitos, as que verificam se dois circuitos são equi­
valentes, as que simulam os nossos sistemas, etc. Contudo, mal conseguimos tocar em lodos os be­
nefícios dos formalismos matemáticos que se relacionam com a automatização dos vários aspec­
tos do projeto c com a verificação do comportamento correto dos circuitos. Não dá para exagerar o
quanto é importante o uso de formalismos matemáticos confiáveis na condução dos projetos.

► 3.5 MAIS SOBRE FLIP-FLOPS E BLOCOS DE CONTROLE


Outros tipos de flip-flops
A tualm ente, para im plem entar as necessidades de arm azenam ento de bits, os projetistas ge­
ralm ente usam os registradores, os quais são construídos tipicam ente com flip-flops D. No
entanto, no passado, os transistores eram m uitos m ais escassos do que hoje. A ssim , os projetis­
tas utilizavam com freqüência outros tipos de flip-flops, os quais tinham um a funcionalidade
Projeto Lógico Seqüencial - Blocos de Controle 147

m aior que a dos flip-flops D. Com isso. conseguia-se que as portas lógicas requeridas do lado
de fora dos flip-flops fossem reduzidas e consequentem ente que o núm ero de ICs necessários
para im plem entar um circuito fosse reduzido. E sses tipos incluíam os flip-flops SR, JK e T.

Flip-flop SR
O flip-flop SR é sem elhante ao latch SR descrito anteriorm ente. Ele contém um a lógica ad i­
cional que torna o circuito disparável pela borda de subida do relógio, em vez de sim ples­
m ente pelo nível.

Flip-flop JK
O flip-flop JK é sem elhante ao flip-flop SR. com J correspondendo a S e K, a R. O com porta­
m ento de um flip-flop JK se diferencia do de um SR quando am bas as entradas são 1. Lem bre-
se de que o com portam ento de um flip-flop SR é indefinido quando am bas as entradas são
1. Em contraste, um flip-flop JK inverte de valor quando am bas as entradas recebem 1 (na
próxim a borda de relógio, naturalm ente). Inverter significa passar para o estado oposto. Isso
significa que, se o bit arm azenado atualm ente for 1, então o próxim o bit a ser arm azenado será
0. De m odo sem elhante, se o bit arm azenado atualm ente fo r 0, então o próxim o bit será 1.

Flip-flop T
Um flip-flop T atua com o um JK cujas entradas (JK ) foram reunidas em um a única para for­
m ar a entrada T. Em outras palavras, sem pre que T for 0, o flip-flop m anterá o seu estado atual
e, sem pre que T for 1, o flip-flop inverterá o valor de saída.

Comportamento de um flip-flop não ideal


G eralm ente, quando aprendem os pela prim eira vez sobre projeto digital, assum im os que as
portas lógicas e os flip-flops tem com portam entos ideais. Do m esm o m odo, quando aprende­
m os a física do m ovim ento p ela prim eira vez, assum im os que não há atrito nem resistência
do ar. E ntretanto, o co m p o rtam en to não ideal dos flip-flops - a m etaestab ilid ad e - é um
problem a com um de tal ordem na prática do projeto digital real que nos sentim os obrigados a
discutir brevem ente essa questão aqui. Na prática, os projetistas digitais devem estudar m uito
profundam ente a m etaestabilidade e as possíveis soluções antes de realizar projetos sérios.
A m etaestabilidade surge da incapacidade de observar os cham ados tem pos de setup e de
hold , que são introduzidos a seguir.

Tempos de setup e de hold


O s flip-flops são construídos com condutores e portas lógicas, os quais ap re­
sentam atrasos de tem po. A ssim , um flip-flop real im põe algum as restrições

relativas ao instante em que as entradas dos flip-flops podem m udar de valor
em relação à borda de relógio, de m odo a assegurar um a operação correta ape­
— 1
sar desses atrasos. Duas restrições im portantes são:

tempo de setup Tempo de setup : As entradas de um flip-flop (por exem plo, a entrada D) d e­
vem estar estáveis durante um intervalo de tem po m ínim o, conhecido com o
clk tem po de setup, antes da chegada da borda do relógio. Intuitivam ente, isso
faz sentido: os valores de entrada devem ter tem po para se propagar através
das lógicas com binacionais internas e estar à espera nas entradas das portas
DJ lógicas internas antes da chegada do pulso de relógio.

Tempo de hold : As entradas de um flip-flop devem perm anecer estáveis por


tempo de h o ld um intervalo de tem po mínim o, conhecido com o tem po de hold*, após a che­

* N. de T: Os tempos de setup e hold também são conhecidos por tempos de preparação e manutenção, respectivamente.
148 Sistemas Digitais

gada da borda do relógio. Intuitivam ente, isso tam bém faz sentido-o sinal de
relógio deve ter tem po para se propagar através das portas internas e criar um
estado com realim entação estável.

U m a restrição associada relaciona-se com a largura (duração) m ínim a do pulso de reló­


gio; o pulso deve ser suficientem ente largo para garantir que os valores corretos possam se
propagar através da lógica interna e estabelecer um estado de realim entação estável.
N orm alm ente, um flip-flop vem acom panhado de um a folha de especificações que d es­
creve os tem pos de setup, hold e as larguras m ínim as do pulso de relógio.
A Fig. 3 .6 1 ilustra um exem plo de violação do tem po de setup. D m udou para 0 próxim o
dem ais da borda de subida de relógio. O resultado é que R não m antém o valor 1 por tem po
suficiente para criar um a realim entação estável nas portas N O R s, de conexões cruzadas, per­
m itindo que Q perm aneça 0. Em vez disso, Q fica tem porariam ente em 0. Esse pulso de curta
duração alim enta a porta N O R superior, causando um pulso em Q1 que vai a 1 por um breve
intervalo de tem po. Esse pulso volta à porta N O R inferior realim entado-a, e assim por diante.
Provavelm ente, a oscilação continuará até que um a condição de corrida obrigue o circuito a
entrar em um a situação estável com Q = 0 ou Q = 1 - ou então o circuito entrará em um estado
m etacstável, que passarem os a descrever agora.

Figura 3.61 Violação do tempo de setup: D muda para 0 ( I ) próximo demais da borda de subida
de relógio. O sinal u muda para 1 após o atraso de tem po do inversor (2) e, então, R muda para
1 após o atraso da porta AND (3). Neste momento, o pulso de relógio está term inado fazendo R
retom ar a 0 (4) antes que uma situação de realimentação estável tenha ocorrido, produzindo Q = 0
nas portas NOR de conexões cruzadas. A mudança em R que gerou um 1 obriga Q a mudar para 0
após o atraso de tempo da porta NOR (5), mas o retorno de R a 0 obriga Q a voltar imediatamente a
1 (6). O pulso de um 0 em Q alimenta a porta NOR superior, levando Q' a produzir um pulso curto
de 1 (7). Esse pulso de 1 realimenta a porta NOR inferior, produzindo outro pulso curto de 0 em Q.
Esse pulso fica circulando no circuito de portas NORs em conexão cruzada (oscilação); em algum
momento, no final, uma condição de corrida levará Q a permanecer em 1 ou 0, ou possivelmente,
entrarem um estado metaestável (a ser discutido).

Metaestabilidade
Se um projetista não conseguir se assegurar de que um circuito obedece aos tem ­
pos de setup e hold de um flip-flop, o resultado poderá ser que o flip-flop e n ­
trará em um estado m etaestável. Um flip-flop em estado metaestável está em um
violação do tempo
de s e tu p estado diferente de 0 ou 1, estáveis. G eralm ente, m etaestável significa que um
sistem a está apenas m arginalm ente estável - o sistem a tem outros estados que
são m uito m ais estáveis. Um flip-flop em estado m etaestável terá um a saída com
tensão interm ediária entre a tensão de um 0 e a de um 1. E ssa tensão tam bém
estado
metaestável pode oscilar um pouco. Isso é um problem a. C om o a saída de um flip-flop está
Projeto Lógico Seqüencial - Blocos de Controle 149

conectada a outros com ponentes, com o portas lógicas e outros flip-flops, esse valor incom um
de tensão poderá causar valores estranhos de saída em outros com ponentes e, logo, os valores
presentes em todo o nosso poderão estar em m á form a.
Por que iríam os violar os tem pos de setup e hold ? Afinal de contas, dentro de um circuito
que nós m esm os projetam os, podem os m edir o cam inho m ais longo, desde a saída de um
dado flip-flop até a entrada de qualquer flip-flop. D esde que façam os o período de relógio
suficientem ente m ais longo d o que o cam inho m ais longo, poderem os assegurar que o nosso
circuito atenderá aos tem pos de setup. De m odo sim ilar, poderem os assegurar que os tem pos
de hold tam bém serão satisfeitos.
O problem a é que provavelm ente o nosso circuito contém um a interface com as entradas
externas e não podem os controlar quando essas entradas irão m udar de valor. Isso significa
que as entradas poderão violar os tem pos de setup e hold, se forem conectadas às entradas de
um flip-flop. Por exem plo, um a entrada pode estar ligada a um botão que é apertado por uma
pessoa - não será possível lhe dizer que fique apertando o botão durante tantos nanossegundos
antes da borda do relógio e que m antenha o botão apertado durante tantos nanossegundos após
a borda do relógio, de m odo que os tem pos de setup e hold sejam satisfeitos. A ssim , a m ctaes-
tabilidade é basicam ente um problem a que ocorre quando um flip-flop tem entradas que não
estão sincronizadas com o relógio do circuito; essas entradas são ditas assíncronas.
U sualm ente, os projetistas tentam sin cro n izar a
entrada assíncrona de um circuito com o seu relógio,
ai \\ /
antes que essa entrada propague-se até os com ponen­ /
\\ // >
tes do circuito. Um a m aneira com um de se sincronizar \\ //
uma entrada assíncrona é prim eiro alimentar um único // \\\
// \\
flip-flop D com a entrada assíncrona e então usar a
// \
saída desse flip-flop sem pre que a entrada for necessá­
ria, com o m ostrado na Fig. 3.62 para o caso da entrada >
assíncrona a i. U sando um único flip-flop, com o m os­
trado, elim ina-se tam bém um segundo problem a: os di­ ai
> >
ferentes valores do m esm o sinal que aparecem nos flip-
flops internos, em um a borda de relógio, devido aos
diferentes atrasos de tem po dos diversos cam inhos.
“Pare aí m esm o, agora!” você poderia dizer. Esse
!
f li p - f l o p d e
s in c r o n iz a ç ã o
flip-flop de sincronização não está sujeito ao m esm o >
problem a dos tem pos de setup e hold e consequente­
mente à mesm a questão de m etaestabilidade? Sim, isso Figura 3.62 A alim entação de ape­
é verdade. No entanto, pelo m enos, a entrada assíncrona nas um único flip-flop com entradas
afetará apenas um flip-flop diretam ente e não possivel­ assíncronas externas poderá reduzir
mente diversos ou dúzias de flip-flops e outros com po­ os problemas de metaestabilidade.
nentes. Além disso, aquele flip-flop de sincronização foi
introduzido especificamente com o objetivo de sincronização, ao passo que os dem ais flip-flops
são usados para arm azenar bits com outras finalidades. Portanto, podem os escolher um flip-flop
de sincronização que minim ize o problem a da m etaestabilidade, podem os escolher um flip-flop
extrem am ente rápido e/ou um outro com tem pos de setup e hold m uito pequenos e/ou ainda um
outro com circuitos especiais para m inim izar a m etaestabilidade. Esse flip-flop poderá ser maior
ou consum ir mais energia do que o normal, m as haverá apenas um único deles para cada entrada
assíncrona, de m odo que essas questões não serão um problema. No entanto, não esqueça que,
não im portando o que façam os, o flip-flop de sincronização ainda poderá tornar-se metaestável,
mas pelo m enos poderem os m inim izar a probabilidade de acontecer um estado m etaestável se
escolherm os um bom flip-flop.
Um a outra coisa que devem os considerar é que tipicam ente um flip-flop não irá perm ane­
cer m etaestável por m uito tem po. N o final, em algum instante, o flip-flop irá “tom bar” para
um 0 ou 1 estável, com o um a m oeda que lançada ao chão poderá girar por um instante (um es-
150 Sistemas Digitais

tado m etaestável), m as que acabará


finalm ente tom bando para o lado da
cara ou coroa estáveis. Portanto, o
que m uitos projetistas fazem é intro­
duzir dois ou m ais flip-flops em sé­
rie com propósitos de sincronização,
com o m ostrado na Fig. 3.63. A ssim ,
m esm o que o p rim e iro flip -flo p
torne-se m etaestável, ele provavel­
m ente irá alcançar um estado estável
antes do próxim o período de reló ­
gio e, desse m odo, o segundo flip-
flop terá ainda m enos probabilidade Figura 3.63 Flip-flops de sincronização dim inuem a
de se to rn ar m etaestável. A ssim , é probabilidade de metaestabilidade em nossos flip-flops
m uito baixa a probabilidade de um comuns.
sinal m etaestável atingir realm ente
os flip-flops norm ais do nosso circuito. E ssa abordagem tem a desvantagem óbvia de atrasar
em diversos ciclos as alterações que ocorrem no sinal de entrada; na Fig. 3.63, o restante do
circuito não verá m udanças na entrada ai antes que tenham decorrido três ciclos.
A m edida que o período do relógio torna-se cada vez m enor, a probabilidade do prim eiro
flip-flop estabilizar-se antes do próxim o ciclo de relógio dim inui. D esse m odo, a m etacsta-
bilidade torna-se um problem a cada vez m ais desafiador à m edida que o período de relógio
encurta. M uitos m étodos avançados de se lidar com essa questão foram propostos.
A p esar disso, não interessa quão arduam ente nós tentem os, a m etaestabil idade sem pre
será um a possibilidade. Isso significa que o nosso circuito poderá falhar. P oderem os m inim i­
zar a probabilidade de falha, m as não poderem os elim in ar com pletam ente as falhas, devido
à m etaestabilidade. O s projetistas freqüentem ente qualificam os seus projetos usando um a
m edida cham ada tempo médio entre fa lh a s , ou M TBF*. Eles geralm ente procuram obter
M T B Fs de m uitos anos. M uitos estudantes acham esse conceito de não poder projetar circui­
tos à prova de falhas um tanto desconcertante. No entanto, isso é a situação real do que ocorre
em projetos.
O s projetistas de circuitos digitais sérios de alta velocidade deveriam estu d ar profunda­
m ente o problem a da m etaestabilidade e as soluções m odernas para ele.

Entradas de reset e set dos flip-flops


A lguns flip-flops D (assim corno outros
tipos de flip-flop) têm entradas extras que
podem forçar o flip-flop a 0 ou 1, inde­
pendentem ente da entrada D. U m a delas
é a entrada de clear , ou reset, que força o
flip-flop a 0. U m a outra é a entrada de set,
que força o flip-flop a 1. A s entradas de (a) (b ) (O
reset e set são m uito úteis na inicialização
Figura 3.64 Flip-flops D com: (a) reset síncrono
dos flip-flops, carregando-os com um va­
R, (b) reset assíncrono AR e (c) reset e set assín­
lor inicial (por exem plo, inicializar todos
cronos.
os flip-flops com Os) quando os circuitos
são energizados ao serem ligados, ou quando se d eseja levar o sistem a ao estado de partida
(resetting do sistema). E ssas entradas de reset e set não devem ser confundidas com as en ­
tradas R e S de um latch ou fiip-fiop RS: as entradas de reset e set são entradas especiais de

* N. de T: De mean time between failures, em inglês.


Projeto Lógico Seqüencial - Blocos de Controle 151

controle, presentes em q ualquer tipo de flip-flop (D , RS, T e JK ), tendo prioridade sobre as


entradas norm ais de dados do flip-flop.
A s entradas de reset e set de um flip-flop podem ser síncronas ou assíncronas. No instante
da borda de subida do relógio, um a entrada de reset síncrono força o flip-flop a 0, indepen­
dentem ente do valor presente na entrada D. No flip-flop da Fig. 3.64(a), a aplicação de um
1 em R fará com que o flip-flop seja forçado a 0 na próxim a borda de subida do relógio. Do
m esm o m odo, a aplicação de um set síncrono forçará o flip-flop a 1 na borda de subida do
relógio. A ssim , as entradas de reset e set têm prioridade sobre a entrada D. Se um flip-flop
tiver am bas as entradas de set e reset síncronas e se am bas estiverem cm 1, as folhas de dados
de especificação deverão inform ar ao usuário do flip-flop qual delas tem a prioridade.
U m a entrada de reset assíncrono força o flip-flop a 0 independentem ente do sinal de re­
lógio (ele não precisa estar subindo, nem m esm o ser 1, para que o reset assíncrono ocorra) daí
o term o “assín cro n o ” . Do m esm o m odo, a en trad a de set assíncrono , tam bém co n h ecid a
c o m o presety pode ser usada para forçar assincronam ente o flip-flop a 1.
O m itirem os a discussão sobre com o as entradas síncronas c assíncronas dos sinais de set
e reset são projetadas internam ente em um flip-flop.
U m ex em p lo do c o m p o rta m e n to
de um a en trada de reset assíncrono em
um flip-flop está m ostrado na Fig. 3.65.
A ssum im os que inicialm ente o flip-flop
arm azena um 1. Fazendo AR ser 1, o flip-
flop é forçado a 0, independentem ente
de q ualquer borda de relógio. Q uando
a p ró x im a b orda de re ló g io ch eg a,
AR ainda é 1, de m odo que o flip-flop
perm anece em 0 m esm o que a entrada
D seja 1. Q uando AR retorna a 0, o flip-
flop passa a aco m p an h ar a entrada D
nas sucessivas bordas de relógio, com o
Figura 3.65 A entrada de reset assíncrono força o
está m ostrado.
flip-flop a 0, independentemenle de c l k ou D.
Estado inicial de um bloco de controle
Nesta seção, quando im plem entam os as FSM s com o blocos de controle, leitores particularmente
observadores poderão ter se perguntado quando projetam os o bloco de controle que implementou
a FSM , o que aconteceu com o estado inicial que tinha sido apontado por nós? O estado inicial
de uma FSM é o estado no qual ela com eça a sua atividade quando é ativada inicialm ente-ou, em
term os de bloco de controle, quando o bloco de controle é inicialmente energizado. Por exemplo,
a FSM do bloco de controle do tem porizador de laser da Fig. 3.39 tem o estado inicial Desli­
gado. Nesta seção, quando convertem os as nossas FSM s em form a de gráfico para tabelas de
estado, ignoramos a informação do estado inicial. Assim , todos os nossos circuitos de blocos de
controle partiam de um estado qualquer baseado nos valores que estivessem presentes por acaso
no registrador de estado quando energizávam os o circuito inicialmente. O desconhecim ento do
estado inicial pode resultarem problemas, por exemplo, não querem os que o bloco de controle do
tem porizador de laser com ece em um estado que acione o laser de imediato.
Uma solução é acrescentar uma entrada adicional, reset, a cada bloco de controle. Fazer re ­
set ser 1 obrigará o registrador de estado a carregar o estado inicial. Esse estado inicial deve ser
forçado para dentro do registrador de estado. As entradas de reset e set de um flip-flop aparecem
de form a muito conveniente nessa situação. Podem os sim plesm ente conectar a entrada de reset
do bloco de controle às entradas de reset e set dos flip-flops do registrador de estado de maneira
tal que os flip-flops são carregados com o estado inicial quando reset é 1. Por exem plo, se o
estado inicial de um registrador de estado de dois bits tiver que ser 01, então poderem os conectar
152 Sistemas Digitais

a entrada de r e s e t do bloco de controle às


entradas de reset e set dos dois flip-flops,
com o m ostrado na Fig. 3.66.
No bloco de controle, naturalm ente,
para que esse processo de inicialização
funcione com o desejado, o projetista deve
se assegurar de que o reset do bloco de
controle estará em 1 quando o sistem a for
en erg izad o in icialm en te. A g aran tia de
que a entrada de reset estará em 1 durante
a energização inicial pode ser conseguida
usando um circuito eletrônico apropriado,
co n ectad o à chave de liga/desliga, cuja
descrição está alem dos nossos objetivos.
O b se rv e q u e, se as e n tra d a s
síncronas de reset ou set de um flip-flop Figura 3.66 Bloco de controle de um tem pori­
forem usadas, então a d iscu ssão anterior zador que liga um laser durante três ciclos com
sobre tem pos de setup e hold, assim com o uma entrada de reset que carrega o registrador de
as questões de m etaestabilidade, aplicam - estado com o estado inicial 01.
se a essas entradas de reset e set.

Comportamento não ideal de um bloco de controle: glitches de saída


Glitching é a presença de valores tem porários em um condutor elétrico, causado tipicam ente
por diferentes atrasos de tem po devido a cam inhos lógicos diferentes que chegam até esse
condutor. Vimos um exem plo de glitching na Fig. 3.13. Glitching tam bém ocorre frequente­
m ente quando um bloco de controle altera os estados, devido aos diferentes com prim entos dos
cam inhos entre cada um dos flip-flops do registrador de estado do bloco de controle e as saídas
deste. C onsidere o projeto do tem porizador que liga um laser durante três ciclos da Fig. 3.50.
O laser deve estar desligado (saída x=0) no estado sls0 = 0 0 e ligado (x=l) nos estados sls0= 01,
sls0 = 10 c s l s 0 = l l . Entretanto, o atraso de tem po de s l até a porta O R do x da figura poderia
ser m aior do que o atraso de s0 até essa porta. O resultado poderia ser que, quando o registrador
de estado m uda de estado indo de sls0= 01 a sls0= 10, as entradas da porta OR veriam m om en­
taneam ente um 00. A porta OR produziria assim m om entaneam ente (glitch) um 0. No exem plo
do tem porizador do laser, esse glitch poderia m om entaneam ente desligar o laser, o que seria
uma situação indesejável. Pior ainda seriam glitches que m om entaneam ente ativassem o laser.
O s verdadeiros projetistas devem determ in ar se tal glitching é realm ente um problem a
em um sistem a em particular. Se for o caso, eles deverão to m ar providências para evitá-lo.
U m a solução, no caso do exem plo do tem porizador do laser, poderia ser a inserção de um
flip-flop D após a porta O R do x da Fig. 3.50. Isso iria atrasar a saída x em 1 ciclo de relógio
(resultando ainda três ciclos ativos). No entanto, os glitches vistos na saída de x poderiam ser
elim inados, já que apenas valores estáveis, que aparecessem na saída, seriam carregados no
flip-flop durante as bordas de subida do relógio.

Entradas ativas em nível baixo (lógica negativa)


A té agora, assum im os flip-flops c outros com ponentes cujas
entradas eram ativas em nível alto. U m a entrada ativa em
nível alto é um a entrada de controle cuja operação associada
é ativada fazendo a entrada ser 1. Por exem plo, quando fazí­
am os um reset em um flip-flop, assum íam os que o valor da Figura 3.67 Flip-flop D com
entrada de reset era 1. E ntretanto, ao invés disso, um com po­ en trad a sín cro n a de reset,
nente pode ter um a entrada que é ativa em nível baixo. Um a ativa em nível baixo.
Projeto Lógico Seqüencial - Blocos de Controle 153

entrada ativa em nível baixo (tam bém conh ecid a co m o en trad a de lógica negativa) é um a
entrada de controle cuja operação é ativada quando se faz a entrada ser 0. A Fig. 3.67 m ostra
um flip-flop D com um a entrada síncrona de reset, que é ativada em nível baixo (o círculo na
entrada de R indica que ela é ativada em nível baixo). A ssim , para colocar a saída d o flip-flop
em 0, precisam os tornar R igual a 0, ao passo que, no funcionam ento norm al de um flip-flop
D. faríam os R igual a 1.
E ntradas ativas em nível baixo podem existir em q u alq u er com p o n en te com entradas de
controle, não apenas em flip-flops. P o r exem plo, a entrada de controle de habilitação de um
decodificador poderia se r ativada em nível baixo - qu an d o fizéssem os a h abilitação ser 0
(significando que o decodificador estava habilitado), teríam os o funcionam ento norm al do
decodificador, ao passo que quando ela fosse igual a 1 (significando que o deco d ificad o r
estaria desabilitado), teríam os todas as saídas iguais a 0.
Q uando o com portam ento de um com ponente é discutido, os projetistas freqüentem ente
usam o term o assert* para d izer que estam os colocando o valor que ativa a operação asso ­
ciada na entrada de controle. D esse m odo, diríam os que devem os ativar (assert) a en trad a R
do flip-flop D da Fig. 3.67 para fazer um reset que co lo cará a saída em 0. O uso do term o
assert evita possíveis confusões que poderiam ocorrer quando algum as entradas de controle
são ativadas em nível alto c outras, em nível baixo.
T ipicam ente, as entradas ativas em nível baixo ocorrem quando a im plem entação do pro­
je to interno de um com ponente requer m enos portas do que q u an d o é im plem entado com
entradas ativas em nível alto.

► 3.6 OTIMIZAÇÕES E TRADEOFFS EM LÓGICA SEQÜENCIAL (VEJA A SEÇÃO 6.3)


A s seções anteriores descreveram com o fazer o projeto de lógica seqüencial básica. E sta se­
ção, cujos conteúdos estão de fato na Seção 6.3, descreve com o criar um a lógica seqüencial
melhor (m enor, m ais rápida, etc.) usando otim izações e tradeoffs. U m a form a de se usar este
livro consiste em introduzir otim izações c tradeoffs para a lógica seqüencial im ediatam ente
após a introdução do projeto lógico seqüencial básico, ou seja, agora. Um uso alternativo
deste livro deixa esse estudo para m ais tarde, após com pletar a introdução dos com ponentes
básicos de bloco operacional e de projeto RTL (C apítulos 4 e 5).

► 3.7 DESCRIÇÃO DE LÓGICA SEQÜENCIAL USANDO LINGUAGENS DE DESCRIÇÃO


DE HARDWARE (VEJA A SEÇÃO 9.3)
Esta seção, cujos conteúdos estão de fato na Seção 9.3, introduz o uso de H D Ls para d escre­
ver a lógica seqüencial básica. Um a form a de uso deste livro consiste em apresentar o uso de
H D Ls im ediatam ente após a introdução do projeto lógico seqüencial básico, isto é, agora. Em
um a form a alternativa, essa introdução é feita m ais tarde.

► 3.8 PERFIL DE PRODUTO - 0 MARCA-PASS0


Um m arca-passo é um dispositivo eletrônico que fornece estím ulos elétricos ao coração para
ajudar a regular o seu batim ento. Perm ite a estabilização de um coração cujo “ m arca-passo”
intrínseco, natural do corpo, não está funcionando de form a adequada, devido possivelm ente
a algum a doença. M arca-passos im plantáveis, colocados abaixo da pele por m eio de cirurgia,
com o está m ostrado na Fig. 3.68, são usados por m ais de m eio m ilhão de am ericanos. Eles
são alim entados por um a bateria que dura d ez anos ou mais. O s m arca-passos têm m elhorado
e prolongado a vida de m ilhões de pessoas.

* N. de T: Afirmar, estabelecer, com o sentido de fazer ter um efeito.


154 Sistemas Digitais

Um co ração tem duas aurículas (esquerda e d ireita) e d o is ventrículos (esquerdo e d i­


reito). O s ventrículos bom beiam o sangue para as artérias, ao passo que as aurículas recebem
o sangue das veias. Um m arca-passo m uito sim ples tem um sensor que detecta as contrações
naturais do ventrículo direito do coração e um fio de saída para ap licar estím ulos elétricos
nesse m esm o ventrículo, caso a contração natural não ocorra dentro de um período de tem po
específico (tipicam ente, um pouco inferior a um segundo). E sses estím ulos elétricos causam
contrações, não apenas no ventrículo direito, m as tam bém no esquerdo.

Figura 3.68 Marca-passo com tios terminais (esquerda) e a localização do marca-passo abaixo da
pele (direita). Cortesia da Medtronic, Inc.

Podem os descrever o funcionam ento do bloco de controle de um m arca-passo sim ples


usando a FSM da Fig. 3.69. O lado esquerdo da figura m ostra o m arca-passo que consiste
em um bloco de controle c um tem porizador. O tem porizador tem um a entrada t, que aplica
um reset quando t = l . D epois d o reset, o tem p o rizad o r co m eça um a contagem regressiva
a partir de 0,8 segundo. Se o tem porizador chegar a 0, ele colocara sua saíd a z em 1. Pode
acontecer do tem porizador sofrer um reset antes de chegar a 0, caso em q u e o tem porizador
não colocará z em 1 e o tem porizador com eçará um a nova contagem regressiva a p artir de
0.8 segundo. O bloco de controle tem um a entrada s, que se torna 1 quando um a contração
é detectada no ventrículo direito. O bloco de controle tem um a saída p, que é colocada em 1
quando o bloco de controle deve disparar um a contração.

E n tra d a s -,s, z
S a íd a s : t, p

Figura 3.69 FSM do bloco de controle de um marca-passo básico.


Projeto Lógico Seqüencial - Blocos de Controle 155

O lado direito da figura m ostra o funcionam ento do bloco de controle com o uma FSM . Ini­
cialm ente, no estado ResetTemporizador, o bloco de controle causa um reset no tem porizador
fazendo t= l. N orm alm ente, o bloco de controle ficará esperando no estado Espera e assim per­
m anecerá, enquanto uma contração não for detectada ( s 1) nem o tem porizador tiver chegado
a 0 ( z 1). vSe o bloco de controle detectar uma contração natural (s), então ele fará novam ente
um reset no tem porizador e voltará a ficar esperando. Por outro lado, se o bloco de controle ver
que o tem porizador chegou a 0 (z= l), então ele seguirá para o estado Contração, o qual obri­
gará o coração a se contrair aplicando p=l. Em seguida, o bloco de controle voltará a esperar
novamente. A ssim , enquanto o coração estiver se contraindo naturalm ente, o m arca-passo não
aplicará estím ulo ao coração. Entretanto, se o coração não se contrair dentro de 0,8 segundo,
após a últim a contração (natural ou forçada), o m arca-passo irá forçar um a contração.
As aurículas recebem sangue das veias e contraem -se para bom bear o sangue para dentro dos
ventrículos. As contrações auriculares ocorrem um pouco antes das ventriculares. Assim , muitos
m arca-passos, conhecidos com o “atrioventriculares (A -V )”, detectam e forçam não apenas as
contrações ventriculares mas também as auriculares. Desse modo, esses m arca-passos tem dois
sensores c dois fios de saída para os estím ulos elétricos e podem proporcionar uma saída car­
díaca melhor, com o resultado desejável de pressão sanguínea m ais elevada (Fig. 3.70).

sv. zv
E n tra d a s -, s a . z a ,
Saídas-, pa, ta, pv, tv
ta=1

sa'*za'
(R e s e tT e m p o r iz a d o r ;

( E s p e ra A
sa'*za
pa=1
'C o n t r a A Isv Contra-
uçâoV ) sa\ çãoA
pv=1 V
sv^zv I E s p e ra V )
tv=1

( R e s e tT e m p o riz a d o rV )
sv'*zv'

Figura 3.70 FSM do bloco de controle de um marca-passo atrioventricular (na qual se usou a
convenção de que as saídas que não estão explicitamente ativadas estão implicitamente em 0).

O m arca-passo tem dois tem porizadores, um para a aurícula direita (TemporizadorA) e


um para o ventrículo direito (TemporizadorV). Inicialm ente, no estado ResetTemporizadorA ,
o bloco de controle faz reset no TemporizadorA e, então, fica esperando por um a contração
auricular natural ou que o tem porizador chegue a 0. Se o bloco de controle detectar um a co n ­
tração auricular natural (sa), então o bloco de controle deixará de forçar a contração da aurí­
cula. Por outro lado, se o TemporizadorA chegar antes a 0. então o bloco de controle seguirá
para o estado ContraçãoA. o qual forçará um a contração na aurícula aplicando pa= l. D epois
de um a contração auricular (natural ou forçada), no estado ResetTemporizadorV , o bloco de
controle fará reset no TemporizadorV e, então, ficará esp eran d o um a contração ventricular
natural ou que o tem porizador chegue a 0. Se ocorrer um a contração ventricular natural, então
o bloco de controle deixará de forçar a contração do ventrículo. Por outro lado, se o Tempori­
zadorV chegar antes a 0. então o bloco de controle seguirá para o estado ContraçãoV , o qual
forçará um a contração no ventrículo aplicando pv=l. A seguir, o bloco de controle irá retornar
aos estados relacionados com a aurícula.
A m aioria dos m arca-passos m odernos pode ter os parâm etros do tem porizador pro­
gram ados por m eio de sinais de rádio, sem a necessidade de fios. D esse m odo, os m édicos
podem tentar diversos tratam entos sem precisar rem over, program ar e reim plantar cirurgica­
m ente o m arca-passo.
156 Sistemas Digitais

E sse exem plo dem onstra a utilidade das F S M s na d escrição d o com portam ento de um
bloco de controle. O s m arca-passos reais têm blocos de co n tro le com dezenas ou m esm o
centenas de estados para poder lidar com os diversos detalhes que por sim plicidade não foram
incluídos nesse exem plo.
C om o surgim ento dos m icroprocessadores de consum o m uito baixo, um a tendência do
projeto de m arca-passos é o uso de m icroprocessadores para im plem entar a F S M , no lugar
de um circuito seqüencial custom izado. A im plem entação com m icroprocessador traz a van­
tagem da reprogram ação da FSM ser facilitada, am pliando a faixa de tratam entos que podem
ser experim entados por um m édico.

► 3.9 RESUMO DO CAPITULO


A Seção 3.1 introduziu o conceito de circuitos sequenciais, isto é, circuitos que arm azenam
bits, significando circuitos que têm m em ória, ou estado com o é conhecido. A Seção 3.2 d e­
senvolveu um a série de blocos de arm azenam ento de bit, cada vez m ais robustos, incluindo-se
o latch SR, o latch D o flip-flop D e finalm ente um registrador que pode arm azenar m últiplos
bits; introduziu tam bém o conceito de relógio, que sincroniza as cargas nos registradores. A
Seção 3.3 introduziu as m áquinas de estados finitos (FSM s) para descrever o com portam ento
esperado de um circuito seqüencial e um a arquitetura padrão capaz de im plem entar as FSM s.
E ssa arquitetura padrão é conhecida com o bloco de controle. Em seguida, a Seção 3.4 d escre­
veu um processo de cinco passos para converter uma FSM em um a im plem entação baseada
em bloco de controle. A Seção 3.5 destacou alguns tipos de flip-flops diferentes do flip-flop
D, os quais foram populares no passado, e tam bém descreveu diversas questões de tem po re­
lativas ao uso dos flip-flops. Incluem -se nesse caso os tem pos de setup e holcle a m etaestabi-
lidade. A seção apresentou as entradas assíncronas de cleareset dos flip-flops, descrevendo o
seu uso para colocar um a FSM em seu estado inicial. A Seção 3.8 pôs em destaque um m arca-
passo cardíaco, tendo ilustrado o uso de um a FSM para descrever o seu funcionam ento.
O projeto de um circuito com binacional com eça com a descrição do com portam ento es­
perado do circuito por m eio de um a equação ou um a tabela-vcrdade. A pós, segue-se um
processo de diversos passos que converte tal com portam ento em um circuito com binacional.
O projeto de um circuito seqüencial com eça descrevendo-se o com portam ento esperado do
circuito na form a de um a FSM . A pós, segue-se um processo de diversos passos que converte
esse com portam ento em um circuito. Tal circu ito é conhecido com o bloco de controle e é
constituído por um registrador e um circuito com binacional. C onceitualm ente, portanto, com
os conhecim entos dos C apítulos 2 e 3, podem os co n stru ir q u alq u er circuito digital. E ntre­
tanto, m uitos circuitos digitais lidam com dados de entrada que têm m uitos bits de largura,
com o por exem plo cin co entradas de 32 bits de largura. Im agine q u ão com plexas nossas
equações, tabelas-verdade ou F SM s poderiam se tornar se elas envolvessem 5*32= 160 e n ­
tradas. F elizm ente, foram desenvolvidos co m p o n en tes para lid ar esp ecificam en te com as
entradas de dados e assim sim plificar o processo de p ro jeto -co m p o n en tes esses que serão
descritos no próxim o capítulo.

► 3.10 EXERCÍCIOS
Os exercícios indicados com um asterisco (*) são mais desafiadores.

SEÇÃO 3.2: ARM AZENANDO U M BIT - FLIP-FLOPS


3.1 Calcule o período de relógio para as seguintes frequências de relógio.
(a) 50 kHz (primeiros computadores)
(b) 300 Mhz (processador da Playstation 2 da Sony)
(c) 3.4 GHz (processador Pentium 4 da Intel)
Projeto Lógico Seqüencial - Blocos de Controle 157

(d) l O Ghz (PC$ do início da década de 2000)


(e) 1 THz (1 Terahertz)
3.2 Calcule o período de relógio para as seguintes frequências de relógio.
(a) 32,768 kHz
(b) 100 Mhz
(c) 1,5 GHz
(d) 2,4 Ghz
3.3 Calcule as frequências de relógio para os seguintes períodos de relógio.
(a) 1 s
(b) 1 ms
(c) 20 ns
(d) 1 ns
(e) 1,5 ps
3.4 Calcule as frequências de relógio para os seguintes períodos de relógio.
(a) 500 ms
(b) 400 ns
(c) 4 ns
(d) 20 ps
3.5 *Assuma que os cientistas desenvolveram um chip que tem transistores perfeitos e lios condutores
com resistência nula, significando que os sinais no interior desse chip podem viajar à velocidade
da luz. ou 3 x 10s. Assumindo que o nosso circuito tem uma largura de 25 mm e uma altura de 25
mm, calcule o período e a freqüência do relógio, quando a distância mais longa que qualquer sinal
deve percorrer em um único período de relógio é:
(a) um oitavo da largura do circuito
(b) metade da altura do circuito
(c) a largura do circuito
(d) diagonal em relação ao circuito
(e) o perímetro do circuito
3.6 Analise o comportamento de um latch SR para a seguinte situação: Q. S e R são 0 e haviam per­
manecido assim anteriormente por um longo tempo. Então, S muda para 1 e fica assim por um
longo tempo. A seguir, S muda de volta a 0. Usando um diagrama de tempo, mostre os valores que
aparecem em cada fio para todas as alterações de valor nos ílos. Assuma que as portas lógicas têm
um atraso de tempo muito pequeno, diferente de zero.
3.7 Repita o Exercício 3.6, mas assuma que S muda para 1 e permanece assim durante o tempo exato
para que o sinal propague-se através de uma poita lógica. Após isso, S muda de volta a 0: em ou­
tras palavras, S não satisfaz ao tempo de hold do latch.
3.8 Analise o comportamento de um latch SR sensível ao nível (veja a Fig. 3.14) para o padrão de
entradas da Fig. 3.71. Assuma que S I, R 1 e Q são inicial mente 0. Complete o diagrama de tempo,
assumindo que as portas lógicas têm um tempo de atraso muito pequeno, diferente de zero.

c ______ ______ ______

sJ I_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
R ______________ | |_____________| ___________

S1

R1

Figura 3.71 Diagrama de tempo para o padrão de entradas do latch SR do Exercício 3.8.
158 Sistemas Digitais

3.9 Analise o comportamento de um latch SR sensível ao nível (veja a Fig. 3.14) para o padrão de
entradas da Fig. 3.72. Assuma que S l , R 1 e Q são inicialmente 0. Complete o diagrama de tempo,
assumindo que as portas lógicas têm um tempo de atraso muito pequeno, diferente de zero.

R
SI
R1
Q

Figura 3.72 Diagrama de tempo para o padrão de entradas do latch SR do Exercício 3.9.

3.10 Analise o comportamento de um latch SR sensível ao nível (veja a Fig. 3.14) para o padrão de
entradas da Fig. 3.73. Assuma que S l , R l e Q são inicialmente 0. Complete o diagrama de tempo,
assumindo que as portas lógicas têm um tempo de atraso muito pequeno, diferente de zero.

C
s
R
S1

R1
Q

Figura 3.73 Diagrama de tempo para o padrão de entradas do latch SR do Exercício 3 . 10.

3.11 Analise o comportamento de um latch I) (veja a Fig. 3 . 18) para o padrão de entradas da Fig. 3.74.
Assuma que Q 6 inicialmente 0. Complete o diagrama de tempo, assumindo que as portas lógicas
têm um tempo de atraso muito pequeno, diferente de zero.

D _ í
s
R

Figura 3.74 Diagrama de tempo para o padrão de entradas do latch D do Exercício 3 .11.

3.12 Analise o comportamento de um latch I) (veja a Fig. 3 .18) para o padrão de entradas da Fig. 3.75.
Assuma que Q 6 inicialmente 0. Complete o diagrama de tempo, assumindo que as portas lógicas
têm um tempo de atraso muito pequeno, diferente de zero.

C ______I I______ I I________ I [_


D ___________I I_________________________ I I_________________
S

Figura 3.75 Diagrama de tempo para o padrão de entradas do latch D do Exercício 3 .12.
Projeto Lógico Seqüencial - Blocos de Controle 159

3.13 Analise o comportamento de um flip-flop I) sensível à borda, que usa uma estrutura de mestre e
servo (veja a Fig. 3.24). para o padrão de entradas da Fig. 3.76. Assuma que cada latch interno
armazena inicialmente um 0. Complete o diagrama de tempo, assumindo que as portas lógicas têm
um tempo de atraso muito pequeno, diferente de zero.

C ___

D/Dm __ T

Cm

Qm/Ds

Cs

Qs

Figura 3.76 Diagrama de tempo para o padrão de entradas do flip-flop D do Exercício 3 . 13.

3.14 Analise o comportamento de um flip-flop D sensível à borda, que usa uma estrutura de mestre e
servo (veja a Fig. 3.24). para o padrão de entradas da Fig. 3.77. Assuma que cada latch interno
armazena inicialmente um 0. Complete o diagrama de tempo, assumindo que as portas lógicas têm
um tempo de atraso muito pequeno, diferente de zero.

C
D/Dm
Cm
Qm/Ds
Cs
Qs

Figura 3.77 Diagrama de tempo para o padrão de entradas do flip-flop D do Exercício 3 .14.

3.15 Compare os comportamentos de um latch D e um flip-flop D completando o diagrama de tempo


da Fig. 3.78. Assuma que cada dispositivo armazena inicialmente um 0. Dê uma breve explicação
do comportamento de cada dispositivo.

D I l l |_______________ | __________

Q (latch D)

Q (flip-flop D)

Figura 3.78 Diagrama de tempo para o padrão de entradas do latch D e do flip-flop D do Exercício 3.15.

3.16 Compare os comportamentos de um latch D e um flip-flop D completando o diagrama de tempo


da Fig. 3.79. Assuma que cada dispositivo armazena inicialmente um 0. Dê uma breve explicação
do comportamento de cada dispositivo.

D _________________ I I I I______ I _____


Q (latch D)

Q (flip-flop D)

Figura 3.79 Diagrama de tempo para o padrão de entradas do latch D e do flip-flop D do Exercício 3 .16.
160 Sistemas Digitais

3.17 Crie um circuito de ires latches I) sensíveis à borda, conectados em série (a saída de um está ligada
à entrada do próximo). .VIostro como um relógio, que permanece um longo tempo em nível alto,
pode fazer com que o valor de entrada do primeiro latch D propague-se através de mais de um
latch durante o mesmo ciclo de relógio.
3.18 Repita o Exercício 17 usando flip-flops D sensíveis à borda e mostre como a entrada do primeiro
latch D não se propaga até o próximo flip-llop, independentemente de quanto tempo o sinal de
relógio permanece em nível alto.
3.19 Usando flip-flops D, crie um circuito com a3 a2 a1 a0
uma entrada X c uma saída Y, tal que Y é
sempre igual a X, mas atrasado em dois
1 1 I I
13 12 11 10
ciclos de relógio.
> reg(4)
3.20 Usando quatro registradores, projete um
circuito que armazena os quatro valores Q3 Q2 Q1 Q0
anteriores vistos em uma entrada D de
í
oito bits. O circuito deverá ter uma saída
simples de oito bits que pode ser configu­
b3 b2 b1 b0
rada. usando duas entradas sl e s0, para
fornecer o valor de qualquer um dos qua­ 13 12 11 I0 13 12 11 10
reg(4)
tro registradores. (Sugestão: use um mul- > reg(4)
tiplexador 4x l de oito bits.)
Q3 Q2 Q1 Q0 Q3 Q2 Q1 Q0
3.21 Considere três registradores de quatro
bits que estão conectados entre si como 1 c2 dI TcO
c3
1Td2 Td1 d01
d3
mostrado na Fig. 3.80. Assuma que os
valores iniciais dos registradores são des­ Figura 3.80 Configuração de registradores.
conhecidos. Analise o comportamento dos
registradores completando o diagrama de
tempo da Fig. 3.81.

a3..a0 < 11 14 8 1 5 9 15 15 3 3 9 14 0 0 0 7 2 7

b3..b0

c3..c0

d3..d0

Figura 3.81 Diagrama de tempo para o padrão de entradas do registrador de quatro bits do Exercício 3.21

3.22 Considere três registradores de quatro bits que estão conectados entre si como mostrado na Fig.
3.83. Assuma que os valores iniciais dos registradores são desconhecidos. Analise o comporta­
mento dos registradores completando o diagrama de tempo da Fig. 3.82.

a3..a0 11 14 8 1 5 9 15 15 3 3 9 14 0 0 0 7 2

C - JL 11 11 11 Jl
b3..b0

c3..c0

d3..d0

Figura 3.82 Diagrama de tempo para o padrão de entradas do registrador de quatro bits do Exercício 3.22.
Projeto Lógico Seqüencial - Blocos de Controle 161

SEÇÃO 3.3: M Á Q U IN A S DE ESTADOS FINITOS (FSM s) E BLOCOS DE CONTROLE

3.23 Desenhe u m diagrama de estados para uma F S M que tem a3 a2 a1 a0


uma entrada X e uma saída Y. Sempre que X mudar de 0 _L i i _L
para i.Y deverá ser l por dois ciclos de relógio e então 13 12 11 10
retornar a O-mesmo que X ainda seja l.(Neste problema
> reg(4)
e em todos os demais problemas que envolvem FSMs. as­
suma que, em qualquer transição, uma borda implícita de Q3 Q2 Q1 Q0
relógio faz uma operação A N D juntamente com a condi­
ção de transição). b3 b2 b1 b0
I3 12 11 I0
3.24 Desenhe o diagrama de estados de uma F S M sem entradas
e três saídas, x, y e z. Os valores de xyz devem seguir sem­ > reg(4)
pre a seguinte seqiiência: 000. 001.010, 100. repetir. A
Q3 Q2 Q1 Q0
saída deverá mudar apenas na borda de subida do relógio.
Torne 000 o estado inicial. c3 c2 d c0
3.25 Faça novamente o Exercício 24, mas acrescente uma en­ 13 12 11 10
trada I que, ao ser posta cm 0. interrompe a seqiiência. reg(4)
>
Quando a entrada I volta a l.a seqiiência prossegue a par­
tirdo ponto em que foi interrompida. Q3 Q2 Q1 Q0

3.26 Refaça o Exercício 25, exceto que a seqiiência começará 1 I I 1


d3 d2 d1 d0
em 000 sempre que I retornar a I.
F ig u ra 3.83 Configuração de re­
3.27 O mostrador de u m relógio de pulso pode fornecer uma
gistradores.
de quatro informações: hora atual, alarme, cronômetro e
data, que são controladas por dois sinais sl e s0 (00 exibe
a hora atual, 01. a do alarme. 10, a do cronômetro e 11. a data - assuma que slsO controla um
multiplcxador de N bits de largura que deixa passar os dados do registrador apropriado). Quando
se pressiona u m botão B (o que faz B=l), o próximo item da seqiiência será exibido (se, no m o ­
mento, o item mostrado for a data, o próximo será a hora atual). Crie um diagrama de estados para
uma F S M que descreva esse comportamento de forma sequencial. A F S M terá um bit de entrada
B e dois bits de saída, sl e s0. Sempre que o botão for pressionado, assegure-se de que ocorrerá o
avanço de apenas um item, independentemente de quanto tempo o botão permanece pressionado;
isto é, depois de ter avançado para o próximo item dentro da seqiiência, espere primeiro que o
botão seja solto. Use nomes curtos mas sugestivos para cada estado. Faça com que a exibição da
hora atual seja o estado inicial.
3.28 Expanda o diagrama de estados que você criou no Exercício 27 acrescentando uma entrada R.
Quando R= 1, a F S M é forçada a voltar ao estado que exibe a hora atual.
3.29 Desenhe o diagrama de estados de uma F S M que tem uma entrada gcnt e três saídas, x , y e z. As
saídas x y z geram uma seqiiência chamada “código Gray" em que exatamente uma das três saídas
muda de 0 para I ou de I para 0. A seqiiência em código Gray que a F S M deve produzir ê 000,
010, 011, 001, 101, 111, 110, 100 voltando a se repetir. A saída deve mudar apenas na borda de
subida do relógio quando gcnt = I.Faça 000 ser o estado inicial.
3.30 Analise o funcionamento da F S M que você criou no Exercício 29 completando o diagrama de
tempo da Fig. 3.84. e m que C é a entrada de relógio e S ó o registrador de estado de n bits. Assuma
que S é inicialmente 000.

Figura 3.84 Diagrama de tempo para o padrão de entradas da FSM do Exercício 3.30.
162 Sistemas Digitais

3.31 Desenhe um diagrama de tempo para a F S M da Fig. 3.85, tal que a F S M comece no estado E sp e ra ,
chegue ao estado E N e retorne ao estado Esp era . Descreva o comportamento do circuito em por­
tuguês.

F ig u ra 3.85 F S M do Exercício 3.31.

3.32 Para as FSMs com os seguintes números de estados, indique qual é o menor número possível de
bits que o registrador de estado deve ter para poder representar os estados em cada um dos casos:
(a) 4
(b) 8
(c) 9
(d) 23
(e) 900
3.33 Quantos estados possíveis podem ser representados por um registrador de I6 bits?
3.34 Se uma F S M tivesse N estados, qual seria o número máximo de transições possíveis que poderiam
existir (assume-se que há um número grande de entradas, querendo-se dizer com isso que o nú­
mero de transições não é limitado pelo número de entradas)?
3.35 *Assumindo uma entrada e uma saída, quantas FSMs existem com quatro estados possíveis?
3.36 *Suponha que lhe sejam dadas duas FSMs que funcionam concorrentemente. Descreva uma ma­
neira de se combinar essas duas FSMs em uma única F S M que tenha funcionalidade idêntica às
das duas FSMs separadas. Dê um exemplo. Se a primeira F S M tiver N estados e a segunda tiver M
estados, quantos estados terá a F S M combinada?
3.37 *Algumas vezes, a divisão de uma F S M grande cm duas
FSMs menores resulta em um circuito mais simples. Di­
vida a F S M mostrada na Fig. 3.88 em duas FSMs, uma
contendo G0-G3 e a outra. G4-G7. Se for necessário,
você poderá acrescentar estados, transições, entradas e
saídas adicionais entre as duas FSMs. Sugestão: você
terá de introduzir sinais entre as FSMs para que uma
avise a outra para ira algum estado.

SEÇÃO 3.4: PROJETO DE BLOCO DE CONTROLE

3.38 Usando o processo de cinco passos para se projetar um


bloco de controle, converta a F S M da Fig. 3.86 em um
bloco de controle. Implcmente-o usando u m registrador
de estado e portas lógicas.
Projeto Lógico Seqüencial - Blocos de Controle 163

3.39 Usando o processo de cinco passos para se projetar um


bloco de controle, converta a F S M da Fig. 3.87 em um
bloco de controle. Implemente-o usando u m registrador
de estado e portas lógicas.
3.40 Usando o processo de cinco passos para se projetar um
bloco de controle, converta a F S M que você criou no
Exercício 24 em um bloco de controle. Implemente-o
usando u m registrador de estado e portas lógicas.
3.41 Usando o processo de cinco passos para se projetar um
bloco de controle, converta a F S M que você criou no
Exercício 27 em um bloco de controle. Implemente-o
usando u m registrador de estado e portas lógicas.
3.42 Usando o processo de cinco passos para se projetar um bloco de controle, converta a F S M que
você criou no Exercício 29 em u m bloco de controle. Implemente-o usando u m registrador de
estado e portas lógicas.
3.43 Usando o processo de cinco passos para se projetar u m bloco de controle, converta a F S M da Fig.
3.88 em u m bloco de controle, interrompendo o processo quando você criar a tabela de estados.
Observação: A sua tabela de estados será bastante grande, tendo 32 linhas, talvez seja o caso de
usar algum programa, como processador de texto ou planilha eletrônica, para desenhar a tabela.

3.44 Crie uma F S M que lenha uma entrada X e uma saída


Y. Sempre que X mudar de 0 para l.Y deverá ser l
por cinco ciclos de relógio e então retornar a 0. mesmo
que X ainda seja l.Usando o processo de cinco passos
para se projetar u m bloco de controle, converta a F S M
em u m bloco de controle, interrompendo o processo Entradas: a,b
quando você criar a tabela de estados. Saídas: y
3.45 A F S M da Fig. 3.89 tem dois problemas: há um estado
que tem duas transições cujas condições podem ser ver­
dadeiras ao mesmo tempo e há outros estados que têm
transições sem haver garantia de que uma delas é verda­
deira. Aplicando as operações O R e A N D às condições
das transições de cada estado, demonstre que de fato
esses problemas existem. Então, conserte-os aperfeiço­
ando a FSM. Para tanto, faça o melhor que puder para
tentar supor o que pretendeu o criador da FSM. Figura 3.89 FSM do Exercício 3.43.
164 Sistemas Digitais

3.46 Faça a engenharia reversa do comportamento do circuito sequencial mostrado na Fig. 3.90.

Figura 3.90 Circuito seqüencial no qual deve-se


fazer engenharia reversa.

SEÇÃO 3.5: M A IS SOBRE FLIP-FLOPS E BLOCOS DE CONTROLE

3.47 Considere três flip-flops T ligados como mostrado na Fig. 3.92. Analise o comportamento dos
flip-flops completando o diagrama de tempo da Fig. 3.91. Assuma que inicialmente todos os flip-
flops contêm Os.*
1
0

Q1

Q2

Q3

Diagrama de tempo para o padrão de entradas do flip-flop T do


F ig u ra 3.91
Exercício 3.47.

3.48 Mostre como conectar quatro flip-flops T


entre si para criar um circuito que conta de
0 a 15 e então retorna a 0 novamente-em ou­
tras palavras, ele faz a contagem 0000,0001,
0010, ..., 1111 e retorna a 0000. Sugestão:
considere o uso da saída Q de u m flip-flop
como sendo a entrada de relógio de u m outro
flip-flop. Assuma que inicialmente todos os F ig u ra 3.92 Ties flip-flops T.
flip-flops contêm 0s.
3.49 Defina metaeslahilidade.
3.50 Projete u m bloco de controle que tem um registrador de estado de quatro bits. Quando uma en­
trada de reset e colocada em 1. ele 6 inicializado de forma síncrona com o estado 1010.
3.51 *Projete um llip-flop D com entradas assíncronas de r e s e t ( A R ) e s e t (AS), usando portas lógicas
básicas.
Projeto Lógico Seqüencial - Blocos de Controle 165

► PERFIL DE PROJETISTA
Brian graduou-se no final.” Assim, era importante ser capaz de trabalhar
como bacharel em sozinho e em grande grupo. Isso exigia capacidade para
engenharia elétrica exercer uma boa comunicação e trabalhar e m grupo.
e trabalhou por vá­ Além disso, também era importante compreender não
rios anos. Ao per­ apenas uma das partes do sistema, mas os aspectos im­
ceber que haveria portantes das demais partes, exigindo conhecimento so­
uma futura de­ bre diversos assuntos.
manda pelo projeto Atualmente, Brian é consultor independente de
digital baseado em projeto digital. Depois de adquirir experiência em seus
u m tipo cada vez campos, muitos engenheiros eletricistas, engenheiros
mais popular de c h ip digital, conhecido como F P G A de computação e cientistas de computação passam a
(veja o Capítulo 7), ele retornou à universidade para ob­ fazer consultoria. “Eu gosto da flexibilidade que u m
ter u m grau de mestre em engenharia elétrica, com uma consultor tem. O aspecto positivo é trabalhar em uma
dissertação cujo tema tinha como alvo o projeto digital ampla variedade de projetos. A desvantagem é que al­
baseado em FPGAs. Ele trabalhou em duas companhias gumas vezes eu só trabalho em uma pequena parte de
diferentes e agora está trabalhando como consultor in­ um projeto, em vez de acompanhar um produto desde
dependente na área de projeto digital. o seu início até estar concluído. Naturalmente, ser um
Ele participou de diversos projetos, incluindo um consultor independente significa que há menos estabi­
sistema que impede a ocorrência de incêndio em casas, lidade do que quando se ocupa uma posição regular em
desarmando u m disjuntor quando a corrente que circula uma empresa, mas eu não me preocupo com isso."
no circuito indica que está ocorrendo um arco voltaico, Brian tirou vantagem da flexibilidade proporcio­
uma arquitetura de microprocessador para acelerar o nada pela consultoria e assumiu um emprego de tempo
processamento de vídeo digitalizado e uma máquina parcial para dar aulas em uma disciplina de projeto di­
para mamografia que permite a localização exata de tu­ gital e outra de sistem as em barcados em uma universi-
mores em mulheres. dade. “Eu realmente gosto de dar aula e aprendi muito
U m dos projetos que lhe pareceu mais interessante ensinando. Eu também gosto de introduzir os estudan­
foi uma escaneadora de bagagens para detectar explosi­ tes no campo dos sistem as em barcados .”
vos. “Nesse sistema, há muitos dados sendo adquiridos, Quando perguntado a respeito do que ele mais
além de motores funcionando, raios X sendo emitidos gosta no campo de projeto digital, ele responde “gosto
e outras coisas, tudo acontecendo ao mesmo tempo. de construir produtos que tornem a vida das pessoas
Para ser bem-sucedido, você tem que dar atenção aos mais fácil, segura e divertida. Isso é muito satisfatório”.
detalhes e comunicar-se com as demais equipes do Perguntado sobre que conselho daria aos estudan­
projeto, de modo que todos fiquem no mesmo barco.” tes, ele diz que uma coisa importante é “fazer perguntas.
Ele achou aquele projeto particularmente interessante Não tenha receio de parecer estúpido quando você fizer
porque “estava trabalhando em uma pequena parte de perguntas em um novo emprego. As pessoas não espe­
uma máquina muito grande e complexa. Tínhamos de ram que você saiba tudo, mas esperam realmente que
manter o foco na nossa parte do projeto e, ao mesmo você pergunte quando se sentir inseguro. Além disso, fa­
tempo, perceber como todas as partes iriam se encaixar zer perguntas é uma parte importante do aprendizado”.
Componentes de Blocos
Operacionais

► 4.1 INTRODUÇÃO
O s C apítulos 2 e 3 introduziram blocos construtivos gradativam ente m ais com plexos que po­
dem ser usados para construir circuitos digitais. Esses blocos eram as portas lógicas, os mul-
tiplexadores, os decodificadores, os registradores básicos e finalm ente os blocos de controle.
O s blocos de controle são bons na im plem entação de sistem as que tenham alguns sinais de
controle na entrada c que gerem alguns sinais de controle na saída. Por exem plo, se verm os
que um a entrada de controle em particular tornou-se 1 (correspondendo talvez a um botão que
foi apertado), então poderem os querer gerar um 1 em uma saída de controle (correspondendo
possivelm ente a um a lâm pada que deve ser acesa). N este capítulo, irem os focar na criação de
blocos construtivos que são bons para sistem as com entradas e saídas de dados. Em geral, os
sistem as digitais tem dois tipos de entradas (e de saídas, tam bém):

• Controle: Uma entrada de controle tem tipicam ente um bit, o qual representa algum evento
específico que está ocorrendo fora do sistema, com o um botão que está sendo apertado, ou o
estado em que se encontra algum a coisa em particular fora do sistem a, com o uma porta que
está sendo fechada ou um carro que está passando por um cruzamento. As entradas de controle
podem ser agrupadas em bits múltiplos, com o quatro bits para representar qual entre 16 botões
está sendo apertado, ou dois bits para representar cada um de quatro estados possíveis de uma
porta (fechada, um terço aberta, dois terços aberta e completam ente aberta). Normal mente, as
entradas de controle são usadas para influenciar o estado atual do bloco de controle.

• Dados: T ipicam ente, um a entrada de dados tem bits m últiplos, que em conjunto represen­
tam um a entidade única. Por exem plo, um a entrada de 32 bits pode representar um a tem pe­
ratura em binário. U m a entrada de sete bits pode representar o andar em que um elevador
encontra-se em um edifício de cem andares. Um a entrada de dados pode ter apenas um
único bit. Essa entrada diferencia-se de um a de controle, de um bit, porque não depende­
m os diretam ente do valor desse bit para influenciar o estado atual do bloco de controle.

N em todas as entradas podem ser classificadas rig o ro sam en te com o sendo dc controle
ou de dados, há algum as entradas que estão no lim ite entre esses dois tipos. N o entanto, a
m aioria das entradas pode ser classificada com o sendo dc um ou outro tipo. (N aturalm cntc,
um sistem a digital tam bém tem entradas de alim entação elétrica, dc terra e dc relógio, além
das entradas dc controle c dados.)
O bloco de controle é um bloco construtivo usado para se criar sistem as constituídos
principal m ente por entradas e saídas de controle. N o entanto, precisam os tam bém de blocos
construtivos para serem usados em sistem as que contenham entradas e saídas de dados. Em
Componentes de Blocos Operacionais 167

particular, precisam os de registradores para arm azenar os dados e unidades funcionais para
operar com esses dados (por exem plo, som ar ou dividir). Esses com ponentes sào conhecidos
com o com ponentes do nível de transferência entre registradores - RTL (Register-Transfer
Level), ou tam bém componentes de bloco operacional. Um circuito com posto por tais co m ­
ponentes é conhecido com o bloco operacional*.
Os blocos operacionais podem se tornar bem complexos. Portanto, é crucial construir blocos
operacionais a partir de com ponentes que contenham níveis adequadam ente elevados de funcio­
nalidade. Por exem plo, se lhe perguntassem que com ponentes constituem um autom óvel, você
provavelmente faria uma lista que incluiria motor, pneus, chassi, carroceria, e assim por diante.
Cada um desses com ponentes exerce uma função de alto nível dentro do todo que é o autom ó­
vel. Você pensou no pneu e não na borracha, nos cabos internos de aço, na válvula, nos flancos
e em outras partes que constituem o pneu. Essas partes detalhadas fazem parte da estrutura de
um pneu, não de um automóvel. Quando se pensa no carro, o pneu é um com ponente de nível
adequadam ente elevado; não é o caso de uma válvula. De modo sem elhante, quando projetam os
blocos operacionais, devem os dispor de um conjunto de com ponentes de bloco operacional com
nível adequadam enie elevado - as portas lógicas são de um nível dem asiadam ente baixo.
E ste capítulo define tal conjunto de com ponentes de blocos operacionais e introduz tam ­
bém blocos operacionais sim ples. N o C apítulo 5, verem os com o criar blocos operacionais
m ais avançados e com o com biná-los com blocos de controle para construir um com ponente
de nível ainda m ais elevado, conhecido com o processador.

4.2 REGISTRADORES
Um registrador de N bits é um com ponente seqüencial capaz de arm azenar N bits. Larguras
típicas (o núm ero de bits N) de registradores são 8, 16 e 32, em bora q ualquer largura seja
possível. O s bits de um registrador frequentem ente representam dados, com o oito bits repre­
sentando uma tem peratura na form a de núm ero binário.
O nom e com um usado para arm azenar dados em um registrador é carregar , em bora as
palavras escrever e armazenar tam bém sejam usadas. A ação oposta a carregar um registrador
é conhecida com o ler os conteúdos de um registrador. A leitura consiste sim plesm ente em se
conectar às saídas do registrador - note portanto que a leitura não está sincronizada com o re­
lógio e, além disso, ela não rem ove os bits do registrador nem os m odifica de nenhum modo.
Os registradores estão disponíveis em uma variedade de tipos. Introduzirem os alguns dos
mais com uns nesta seção. O s registradores são possivelm ente o com ponente de bloco operacio­
nal mais fundam ental. A ssim , irem os fornecer num erosos exem plos de suas estruturas e usos.

Registrador de carga paralela


O tipo m ais básico de registrador, m ostrado na Fig. 3.30 do C apítulo 3, consiste sim plesm ente
em um conjunto de flip-flops q ue são carregados a cada ciclo de relógio. Esse registrador bá­
sico é útil com o registrador de estado em um bloco de controle, já que ele deve ser carregado
em todos os ciclos de relógio. N o entanto, na m aioria dos dem ais usos dos registradores,
querem os de algum a form a controlar se, cm um ciclo de relógio em particular, um registrador
deve ser carregado ou não (em alguns ciclos, querem os carregá-lo c, em outros, querem os
sim plesm ente m anter o valor anterior).
Podem os obter controle sobre a carga de um registrador colocando um multiplexador 2xl na
frente de cada flip-flop, com o m ostrado na Fig. 4.1(a) para o caso de um registrador de quatro
bits. Quando o sinal de carga (load)** for 0,1 oad=0, e o sinal de relógio estiver subindo, cada flip-

* N. dc T: Também conhecido por da tapa th, caminho de dados, cm português.


** N. de T: A exemplo de outros sinais que scrào vistos mais adiante, o termo load será mantido no original em inglês, tendo em
vista o seu amplo uso em livros, textos técnicos, folhas de dados de especificação, etc.
168 Sistemas Digitais

► POR QUE 0 NOME REGISTRADOR"?

Historicamente, o termo “registro*” referia-se a mente, o termo refere-se a um dispositivo de arma­


uma tabuleta ou quadro-negro nos quais as pessoas zenamento de dados. Neste contexto, já que um con­
podiam anotar temporariamente as transações em junto de flip-flops armazena dados, o nome registro,
dinheiro e depois fazer a sua contabilidade. Geral- ou registrador, parece bem apropriado.

flop será carregado com o valor de sua própria saída Q, com o m ostrado na Fig. 4.1 (b). Com o Q é o
conteúdo atual do flip-flop, ele não irá m udar quando o sinal 1oad for 0. Quando o sinal de 1oad
for 1 e o sinal de relógio estiver subindo, cada flip-flop será carregado com uma das entradas de
dados 1 0 ,11 .12 ou 13, assim, o registrador será carregado com as entradas de dados quando 1oad
for 1.

13 12 n 10

(a) (c)

13 12 11 IO I3 I2 11 IO
o
li
T5
CO
o

(b)

Registrador de quatro bits com carga paralela: (a) estrutura interna, (b) caminhos
F ig u r a 4.1
quando 1oad=0 e 1oad= l, (c) símbolo do registrador para diagrama de blocos.

carga paralela. A Fig. 4.1(c) dá um sím bolo de d iagram a de blocos para um registrador de
carga paralela de quatro bits. O símbolo de diagrama de blocos de um com ponente m ostra as
suas entradas e saídas sem m ostrar os detalhes internos.
C o m o os reg istrad o res são um co m p o n en te fu ndam ental d o s b lo co s o p eracio n ais, ire­
m os ap resen tar diversos ex em p lo s envolv en d o -o s para g aran tir q u e o leito r sin ta -se à von­
tade com eles.

► E X E M P L O 4.1 E x e m p lo b á s ic o d o u s o d e r e g is tr a d o r e s

A Fig. 4.2 mostra uma ligação simples de três registradores RO, RJ e R2. Suponha que nos seja dito
que os valores de entrada são os mostrados no diagrama de tem po da Fig. 4.3(a). Então, podere­
mos determinar os valores nos registradores RO. RJ e R2. como mostrado na Fig. 4.3(b). Antes da

* N. cie T: O termo “registro” deu origem a “registrador”, usado em português. Há inclusive autores nacionais que usam o termo
registro em vez de registrador.
Componentes de Blocos Operacionais 169

primeira borda de relógio, eles são mos­


trados como “????", já que não sabemos
quais são eles. Na realidade, são com bi­
nações de quatro valores de 0 e 1. No en­
tanto, desconhecemos quais são eles em
particular.
Antes da primeira borda de relógio,
vemos que a entrada a 3 ..a 0 torna-se
1111. Assim, na prim eira borda do re­
lógio, RO será carregado com 1111. No
mesmo instante, RI e R2 serão carrega­
dos com o valor de RO* que e “ ????”.
Desse modo, RJ c R2 ainda terão con­
teúdos “ ????”.
Antes da segunda borda de relógio,
vemos que a entrada a3. .aO muda para
0001. Assim, na segunda borda de reló-
gio, RO será carregado com 0001. Simul- Figura 4.2 Exemplo básico do uso de registradores,
taneam ente, RI sera carregado com o
valor de RO, que era 1111, e R2 será carregado com o valor de RO invertido, ou seja, 0000.

I I I I

£
clk
!1
Jl
!2
11
!3
Jl
!4
II
!5
Jl
(a) *§
a3..a0 1111
X 0001
X 1010

RO ????
X 1111 0001 1010 1010 1010

R1 ????
X'
????
! -------------------
1111 0001 1010 1010

R2 ???? \ ???? 0000 0101 jx 0101


I
T—
3 —
o

->1111 ! 1111->0001 0001-->1010 1010 i 1010


► T

X X ! * r - X L i ,
o
o—

0001 RO 1010 R0 j 1010 R0

X !T ^ t
???? ! ???? --------- mo !
o
o

o
O

or-
o

o
O

???? ---------,l--------- ???? 1111 0000


f—

-------- 0001
--------- --------
R1 R2 ! R1 R2 R1 R2 R1 R2 ! R1 R2 ! R1 R2

Figura 4.3 Exemplo básico do uso de registradores.

Antes da terceira borda de relógio, vemos que a entrada a3. .aO torna-se 1010. Na terceira
borda de relógio, R0 será carregado com 1010, enquanto simultaneamente RJ ficará com 0001 e
R2, com 1110.
Vemos que a3. .aO perm anece em 1010 antes da quarta borda de relógio. Na quarta borda de
relógio, R0 será carregado novamente com 1010. enquanto sim ultaneam ente RJ será carregado
com 1010 e R2, com 0101.
Com o a3..a0 permanece em 1010 antes da quinta borda de relógio, então na quinta borda R0
será carregado novamente com 1010, enquanto RI será carregado novamente com 1010 e R2, no­
vamente com 0101.

gados valores desconhecidos tanto em R l como em R2.


170 Sistemas Digitais

A característica im portante que se deve ter em mente, neste exemplo, é que os registradores
RO, Rl e R2 são todos carregados simultaneamente. Assim, mesmo que RO seja carregado com um
novo valor em uma horda de relógio, RJ e R2 ficarão com o seu valor anterior, não o novo valor,
na mesma borda de relógio. ◄

► EXEMPLO 4.2 Amostrador de peso


Considere uma balança que é usada
para pesar frutas em uma mercearia. A
balança tem um mostrador que exibe o
peso corrente. Queremos acrescentar
um segundo mostrador e um botão que
o usuário pode apertar para memorizar o
peso corrente (isso é chamado algumas
vezes de “amostragem”), de modo que
quando as frutas são retiradas, o peso
memorizado continua a ser exibido no
segundo mostrador. Um diagram a do
sistema está mostrado na Fig. 4.4.
A ssum a que a balança fornece
o peso corrente, na forma de um nú­
mero binário de quatro bits, e que os
m ostradores de “Peso corrente” e
“Peso m em orizado” convertem auto­
maticamente o número binário de suas Figura 4.4 Amostrador de peso que foi implementado
entradas em valores que podem ser li­ com um registrador de carga paralela de quatro bits.
dos pelas pessoas. Podemos projetar o
bloco de AmostradorPeso usando um registrador de carga paralela de quatro bits. Conectamos
o sinal b do botão à entrada de carga do registrador. A saída é conectada ao mostrador de “Peso
memorizado”. Sempre que b for 1, o valor do peso e armazenado no registrador e, desse modo, e
exibido no segundo mostrador. Quando b volta a 0. o registrador mantém o seu valor, de modo que
o segundo mostrador continua mostrando o mesmo peso, mesmo que outros itens sejam colocados
na balança e o primeiro mostrador mude de valor. ◄

► EXEMPLO 4.3 Mostrador do histórico de temperaturas usando registradores (novamente)


Lem bre-se do Exem plo 3.2 do C apítulo 3, no qual um tem porizador gerava um pulso em uma
entrada C a cada hora. Nós ligam os aquela entrada C às entradas de relógio de trés registradores,
os quais eram conectados de tal forma que o prim eiro registrador era carregado com a tem pe­
ratura atual, o segundo, com a tem peratura anterior à atual, e o terceiro, com a tem peratura que
precedeu a tem peratura anterior à atual, na borda de subida de C. Entretanto, na prática, tipica­
mente não conectam os nenhum a entrada, que não seja um sinal de relógio (de um oscilador), à
entrada de relógio de um registrador. Portanto, podem os refazer o projeto do sistem a para que
um sinal de relógio seja aplicado à entrada de relógio do registrador, o qual perm ite carga para­
lela. Poderíam os então ligar a entrada C às entradas de carga dos registradores, com o mostrado
na Fig. 4.5.
A freqüência do oscilador pode ser mais rápida do que um pulso por hora. De fato. devido à
natureza de como são feitos os osciladores (veja “Com o Funciona? Osciladores a Q uartzo” na
página 119 do Capítulo 3), as suas frequências estão no mínimo na faixa dos quilohertz.
Temos que garantir que, quando o tem porizador gera seu pulso horário em C, esse será 1 du­
rante apenas um ciclo de relógio. Se assim não fosse, os registradores seriam carregados mais de
uma vez durante um único pulso (porque, durante esse pulso, muitas bordas de subida do relógio
ocorreriam e os registradores seriam carregados a cada borda de subida do relógio). Desse modo,
a temperatura atual seria carregada em dois ou mesmo todos os três registradores. Podemos con-
Componentes de Blocos Operacionais 171

Figura 4.5 Projeto interno do componente AnnazenamentoHistóncoTempemtum, que usa registrado­


res de carga paralela.

seguir uma saída que fique em nível alto durante um único ciclo, usando o mesmo relógio como
entrada do temporizador. Em seguida, projetamos a máquina de estados interna do temporizador
para que produza O l durante apenas um estado, de modo sim ilar ao que usamos para fazer uma
saída ser 1 durante exatamente três ciclos no Exemplo 3.7 do Capítulo 3. ◄

► EXEMPLO 4.4 Display de automóvel, colocado acima do espelho retrovisor, que usa registradores de
carga paralela
No Capítulo 2, descrevemos o exemplo de um sistema colocado acima do espelho retrovisor que
pode mostrar uma de quatro entradas de oito bits: T, M, I e Q. Naquele exemplo, assumimos que o
computador central do carro conectava-se ao sistema colocado acima do espelho retrovisor por meio
de 32 linhas (4*8). Trinta e dois fios é muito fio para ser conectado entre o computador e o espelho
retrovisor. Ao invés disso, assumimos que o computador ligava-se àquele sistema usando oito linhas
de dados (C), duas linhas de controle alaO que especificavam qual item de dados devia aparecer em
C (sendo T quando ala0=00, Mquando ala0=01, I quando ala0=10 e Q quando alaO = ll) e ainda uma
linha de controle load, totalizando 11 linhas ao invés de 32 linhas. O computador pode enviar os
dados em qualquer ordem, a qualquer momento. Quando os itens de dados chegam, o sistema sim­
plesmente os armazena no registrador apropriado (de acordo com alaO). Desse modo, o sistema
necessita de quatro registradores de carga paralela, nos quais sào armazenados os itens de dados. As
linhas de controle alaO servem, portanto, de “endereço”, dizendo em qual registrador deve-se fazer
a carga. Como no exemplo anterior, as entradas xy determinam qual valor deve ser passado para a
saída D que será enviada ao display de oito bits (sendo que as entradas xy mudam de valor em se­
quência, a cada vez que o usuário aperta o botão de modo).
Podemos projetar o sistema como mostrado na Fig. 4.6. A figura mostra uma notação
simplificada muito usada que substitui um grupo de fios por um único fio mais espesso que
tem um traço inclinado e um número que indica o número de fios presentes no grupo.
T ▼T TTT▼ Usando alaO, o decodificador habilita um único dos quatro registradores. A linha de

♦ 8
1oad habilita o decodificador - se 1oad for 0, nenhuma das saídas do decodificador será
1 e, portanto, nenhum dos registradores será carregado. A parte com multiplexador do
sistema é a mesma do exemplo anterior no Capítulo 2.

t
Vamos ver agora como esse sistema funciona, exemplificando com uma sequência de
entradas. Suponha inicialmente que todos os registradores armazenem Os e que xy=00. As­
sim, o display mostrará 0. Se o usuário apertar quatro vezes o botão de modo, as entradas xy
seguirão a seqüência 01,10,11 voltando a 00, sendo que o display mostrará 0 a cada toque do botão (já
que todos os registradores contêm 0s). Agora, suponha que durante um ciclo de relógio, o computa­
dor do carro faz ala0= 01.1oad=l c 000001010. Então o registrador I será carregado com 00001010.
Como xy=00, o display ainda estará mostrando os conteúdos do registrador 0, ou seja, 0. Agora, se
o usuário pressionar o botão de modo, xy irá se tornar O le o display irá mostrar o valor decimal de
172 Sistemas Digitais

°
O
fc

CD C
T3
O
k-
O

8 £
Og
Q o

Figura 4.6 Display colocado acima do retrovisor. Os sinais alaO . gerados pelo com putador cen­
tral do carro, determinam qual registrador deve ser carregado com C quando 1oad=l. Os sinais xy,
independentes de alaO e produzidos quando o usuário aperta o botão de modo, determinam qual
registrador deve ter a sua saída colocada na saída D para o display.

00001010 que está presente no registrador I, ou seja, dez em decimal. Apertando mode novamente,
xy mudará para 10, de modo que o display m ostrará o conteúdo do registrador 2, que é 0. A
qualquer instante, o com putador do carro poderá carregar os outros registradores, ou recarregar
o registrador 1, com novos valores, em qualquer ordem. Observe que a carga dos registradores é
independente da exibição dos registradores. ◄

► EXEMPLO 4.5 Tabuleiro de damas computadorizado


O jogo de damas é um dos jogos de tabuleiro mais populares do mundo. Um tabuleiro de damas
consiste em 64 quadrados (ou casas), formado por oito fileiras e oito colunas. Cada jogador co­
meça com 12 pedras (ou peças) sobre o tabuleiro. Um tabuleiro de damas computadorizado pode
substituir as peças usando um LED (liglit-emitting diode, ou diodo emissor de luz) em cada casa.
Um LED aceso representa uma peça que está ocupando aquela casa; um LED apagado representa
uma casa desocupada. Para tornar o exemplo mais simples, ignore o problema de cada jogador ter
a sua própria cor para as peças. Um exemplo de tabuleiro está mostrado na Fig. 4.7(a).
Tipicamente, um tabuleiro de damas computadorizado tem um microprocessador que acompa­
nha a posição de cada peça, move as peças de acordo com os comandos do jogador ou de acordo
com um programa que joga damas (quando o jogador está jogando contra o computador), calcula
o número de pontos de cada jogador, etc.
N ote que o m icroprocessador precisa definir os valores de 64 bits, um para cada casa. No
entanto, o m icroprocessador de baixo custo usado neste dispositivo não tem 64 pinos. O mi­
croprocessador precisa de registradores externos para arm azenar os bits que acionam os LEDs
e terá de escrever nesses registradores, um de cada vez. Entretanto, o m icroprocessador faz as
cargas nos registradores tão rapidam ente que um observador provavelmente veria todos os LEDs
m udando ao m esm o tem po, sem reparar que alguns LEDs mudam alguns m icrossegundos antes
dos outros.
Vamos usar um registrador por coluna. Isso significa que no total precisarem os de oito re­
gistradores de oito bits, como mostrado abaixo do tabuleiro da Fig. 4.7(a), com nomes R7 a RO.
Cada um dos oito bits de um registrador corresponde a uma casa em uma fileira diferente, mas na
mesma coluna do registrador, indicando se o respectivo LED está aceso ou não, com o mostrado
na Fig. 4.7(b). Os oito registradores são conectados ao microprocessador. O microprocessador usa
oito pinos (D) para os dados, ires pinos (i 2, i 1, i 0) para endereçar o registrador apropriado (que
está decodificado como uma linha de carga para cada um dos oito registradores) e um pino (e) para
Componentes de Blocos Operacionais 173

O led LED aceso

F igura 4.7 Um
tabuleiro de damas
eletrônico: (a) oito
re g istra d o re s de
oito bits (R7 a RO)
podem ser usados
para acionar os 64
LEDs, usando um
registrador por co­
luna e (b) detalhe
de com o um re­ R7 R6 R5 R4 R3 R2 R1 RO 10100010

tttffitn
gistrador (5 ligado
aos LEDs de uma d7 cJ6 d5 d4 d3 d2 d1 dO
coluna e com o o

m
8N \ e i2 i1 iO decodificador 3x8 do do
valor 1 0 1 0 0 0 1 0 , microprocessador decodificador
arm azenado nesse _ L _ i (b)
microprocessador
registrador, acende
três LEDs. (a)

a linha de carga do registrador (implementada usando a habilitação do decodificador), totalizando


12 pinos - um número muito melhor do que 64 pinos. Para configurar o tabuleiro no início de um
jogo, o microprocessador cria a seqüência mostrada na Fig. 4.8. A

D — ( 1 0 100010 X 0 10000101 X 10100010 X 010000101X X 010000101X"10100010 X 010000101


10100010

i 2 .i1 .i 0 — ( 0 0 0 (R 0 ) X 001 (R D X 010 <R2) X~011 X"7oQ(R4) X


(R 3) X
1 0 U R 5 ) X ~ h Õ (R 6 ) 111 ( R 7 p -

eJ 1_

dk___TL n _______n . n n _______ r i


Figura 4.8 Diagram a de tempo mostrando uma sequência de entradas que pode ser usada na
inicialização.

Na primeira borda de subida de relógio, R0 é carregado com 10100010. Na segunda borda de


subida de relógio, RJ é carregado com 01000101. E assim por diante. Depois de oito ciclos de reló­
gio, os registradores irão conter os valores desejados e os LEDs do tabuleiro estarão acesos, como
mostrado na Fig. 4.9. ◄

Registrador de deslocamento
U m a coisa que poderíam os querer fazer com um registrador seria deslocar os conteúdos de
um registrador para a esquerda ou para a direita. D eslocar à direita significa m over um bit ar­
m azenado (em um flip-flop) para o flip-flop que lhe está à direita. Se um registrador de quatro
bits arm azena originalm ente 1101, então o deslocam ento à direita produzirá 0110, com o m os­
trado na Fig. 4 . 10(a). Perdem os o bit que estava m ais à direita (no caso, um 1), e colocam os
um 0 no bit m ais à esquerda. Para construir um registrador capaz de deslocam ento à direita,
precisam os co n ectar os flip-flops do registrad o r co n ceitu alm en te de m odo sem elhante ao
m ostrado na Fig. 4.10(b).
174 Sistemas Digitais

► COMO FUNCIONA ? JOGOS DE TABULEIRO COMPUTADORIZADOS

Muitos de vocês já participaram de algum jogo de diante. Os bons programas de jogos de computador
computador, como damas, gamão ou xadrez, usando “podam“ as configurações que parecem ser muito
tabuleiros com pequenos displays para representar ruins e portanto improváveis de serem escolhidas
as pedras ou, possivelmente, usando um programa pelo oponente, exatamente como as pessoas fazem
gráfico em um computador pessoal ou website. O para reduzir o número de configurações a serem ana­
método principal usado pelos computadores para es­ lisadas. Os computadores podem examinar milhões
colher os movimentos das peças, entre os próximos de configurações, ao passo que as pessoas podem
possíveis, é chamado de antecipação. Para a configu­ examinar mentalmente apenas umas poucas dúzias.
ração corrente de peças no tabuleiro, o computador O xadrez, possivelmente o mais complexo dos jogos
examina todos os movimentos simples possíveis que populares de tabuleiro, tem atraído muita atenção
ele poderia fazer. Para cada um desses movimentos, desde o início da era dos computadores. Alan Turing,
ele também pode considerar todos os movimentos considerado um dos pais da ciência da computação,
simples possíveis que o oponente poderá vir a fazer. escreveu muito a respeito do uso de computadores
Para cada configuração nova resultante dos possíveis para jogar xadrez e lhe é atribuído ter escrito o pri­
movimentos, o computador avalia quão boa é a con­ meiro programa para jogar xadrez em 1950. No en­
figuração, a chamada qualidade da configuração, e tanto. as pessoas mostraram-se melhores jogadores
escolhe o movimento que poderá levar à melhor con­ do que os computadores até 1977. quando o Deep
figuração. Cada movimento que o computador ante­ Blue da IBM derrotou o então campeão mundial
cipa (um movimento do computador, um movimento de xadrez em uma partida de xadrez que se tornou
do oponente, outro movimento do computador, outro clássica. O Deep Blue tinha 30 processadores IBM
do oponente) é chamado de montante de antecipa­ RS-6000 SP conectados a 480 chips especializados
ção. Os bons programas podem antecipar três, qua­ em jogar xadrez. Ele podia avaliar 200 milhões de
tro, cinco ou mais movimentos. 0$ cálculos de ante­ movimentos por segundo e, portanto, muitos bilhões
cipação são custosos em termos de tempo e memória em alguns minutos. Atualmente, os torneios de xa­
de computador - se cada jogador puder realizar IO drez confrontam não apenas pessoas contra progra­
movimentos possíveis por vez, então para antecipar mas de computador, mas também programas contra
dois movimentos resultará em 10*10=100 configu­ programas. Muitos desses torneios são patrocinados
rações que devem ser avaliadas; três movimentos pela International Computer Games Association.
resultará em 10* 10* 10= 1000 configurações, quatro
movimentos em 10.000 configurações e assim por (Fonte: Computer Chess History, cie Bill Wall).

P o d e m o s c ria r um re g is tra d o r c a p a z d e
d eslo cam en to à d ireita, co m o m o strad o na Fig.
4 .1 1 . O re g istra d o r co n té m d u a s e n tra d a s de
c o n tro le , s h r e s h r _ in * . O sinal s h r = l faz
com q ue o co rra um d e slo cam en to à d ireita, na
borda de su b id a d o relógio, ao p asso q ue sh r= 0
faz o reg istra d o r m an ter o valor co rren te. O s i­
nal s h r _ i n é o bit q u e q u e re m o s c o lo c a r no
bit m ais à e sq u e rd a d u ra n te u m a o p e ra ç ã o de
d eslo cam en to .

01000101 01000101 01000101 01000101

Figura 4.9 O tabuleiro dc damas depois de


* N. de T: De shift rii>ht {shr). deslocamento á direita, e input (in), entrada, carregar os registradores com as posições
em inglês. iniciais das peças.
Componentes de Blocos Operacionais 175

Figura 4.10 Exem­ C o n te ú d o s d o r e g is t r a d o r shr_in


1 1 0 1
plo de deslocamento a n te s d o d e s lo c a m e n to X
à d ir e it a
à direita: (a) exem ­
plo de co n teú d o s C o n te ú d o s d o r e g is tr a d o r (b)
a p ó s o d e s lo c a m e n to
antes e depois de à d ir e it a
um d e slo c a m e n to (a)
à direita e (b) visão
bit a bit do desloca­
mento.

shr in
-1 - 1 11 -1 . 1 T—
shr 1 0 1 0 1 0 1 0 II 1 0 1 0 1 0 1 0
H
2x1 "<7> 2x1
1 1 ___ 1___ ___
T
D D D
D D D D > > >
> > > > Q Q Q
Q Q Q Q
Q3 Q2 Q1
T Q3 T Q2 T Q1 ^Q0 (b)
(a)
— shr_jn
shr

Figura 4.11 Registrador de deslocamento: (a) > Q3 Q2 Q1 Q0


implementação, (b) blocos operacionais quando I I I I
s h r = l e (c) símbolo de diagrama de blocos. (0

Registrador circular
O registrador circu lar é um a pequena variação de um reg istrad o r de d eslocam ento no qual
o bit que está saindo 6 enviado de volta (rotação) tornando-se o bit que entra no registrador.
D essa form a, o bit m ais à direita é deslocado para o flip-flop que está m ais à esquerda, com o
m ostrado na Fig. 4.12.

C o n te ú d o s d o r e g is t r a d o r
110 1 a n te s d a r o t a ç ã o à d ir e it a

m , C o n te ú d o s d o r e g is t r a d o r
1110 a p ó s a r o ta ç ã o à d ir e it a

(a) (b)
Figura 4.12 Exemplo de rotação à direita: (a) conteúdos do registrador antes e depois da rotação,
e (b) vista bit a bit da operação de rotação.

A im plem entação de um registrador circular é conseguida m odificando o projeto da Fig.


4.11. A saída do flip-flop m ais à direita, no lu g ar de s h r _ in , é co lo cad a na en trad a i 1 do
m ultiplexador m ais à esquerda. Um registrador circular precisa de algum recurso para que se
possa colocar valores para dentro do registrador, p o r deslocam ento ou por carga paralela.

► EXEMPLO 4.6 Display colocado acima do retrovisor usando registradores de deslocamento


No Exemplo 4.4. refizemos o projeto da conexão entre o com putador central do carro e o sis­
tema de display colocado acima do espelho retrovisor para reduzir o número de fios de 32 para
8+2+1 = 11. No entanto, mesmo 11 fios ainda 6 muito fio para ser colocado entre o com putador e
o sistema de display. Vamos reduzir ainda mais o número de fios usando registradores de deslo­
camento no sistema de display. As entradas do sistem a de display vindas do com putador do carro
serão um bit de dados C, duas linhas de endereço alaO e uma linha de comando de deslocamento
176 Sistemas Digitais

shi f t , totalizando apenas quatro fios. Quando o com­


putador precisar escrever em um dos registradores do
sistem a de display, ele definirá valores para alaO de
forma apropriada e então ativará shi f t com 1 durante t
Estefeixe ——
exatamente oito ciclos de relógio.
deveria ser fino
Em cada um desses oito ciclos de relógio, o com ­
- uns poucos
putador atribuirá a C cada um dos oito bits de dados
fios, não onze.
que devem carregados. Com eçará com o bit menos
significativo, no prim eiro ciclo de relógio, e term i­
nará com o bit mais significativo, no oitavo ciclo de relógio. Desse modo, podemos projetar o
sistema de display como mostrado na Fig. 4.13.

N o ta : e s s a lin h a é d e 1 b it, a o in v é s d e 8 b it s c o m o a n te s

Figura 4.13 Projeto do sistem a de display ,


para ser colocado acima do espelho retrovisor,
usando registradores de deslocam ento para re­
duzir o número de linhas que vem do computa­
dor do carro. O com putador define os valores D
de alaO de acordo com qual será o registrador
a ser carregado e, então, mantém s h i f t = l du­
rante oito ciclos de relógio. O sinal C será igual
aos conteúdos do registrador bit a bit, um bit
por ciclo de relógio, resultando na carga do re­
gistrador com o valor enviado de oito bits.

Quando shi ft= l, o registrador apropriado será carregado com um novo valor, o qual é deslocado
para dentro de registrador durante os próximos oito ciclos de relógio. Esse método produz o mesmo
resultado que uma carga paralela a partir de oito entradas separadas, mas utiliza menos fios.
Esse exemplo mostra uma forma de com unicação entre circuitos digitais, conhecida como
comunicação serial na qual os circuitos transmitem os dados enviando-os bit a bit. ◄

Registradores com múltiplas funções


M uitos registradores podem realizar um a variedade de operações (tam bém cham adas de fu n ­
ções ), com o carga, deslocam ento à direita, d eslocam ento à esquerda, rotação à direita, ro ­
tação à esquerda, etc. O usuário do registrador seleciona a operação desejada no m om ento
definindo as entradas de controle do registrador. Introduzirem os agora alguns registradores
de m últiplas funções.

► COMO FUNCIONA? COMUNICAÇÕES ENTRE COMPUTADORES EM UM AUTOMÓVEL USANDO


TRANSFERÊNCIA SERIAL DE DADOS

Os automóveis modernos contêm dúzias de compu­ isto é, um bit de cada vez, como a comunicação no
tadores distribuídos pelo carro: alguns debaixo do Exemplo 4.6, para reduzir o número de fios. Um es­
capô, no painel, acima do espelho, alguns na porta, quema de comunicação particularmente popular em
alguns no porta-malas, etc. Estender fios dentro do automóveis é o chamado barramento CAN {Control­
carro de modo que esses computadores possam se ler Area Network) que agora tornou-se um padrão in­
comunicar é um desafio. Assim, a maioria dos com­ ternacional definido pelo padrão ISO (International
putadores de automóvel comunica-se serial mente, Standards Organization) de número 11.898.
Componentes de Blocos Operacionais 177

Registrador com carga paralela e deslocamento à direita


U m a com binação m uito usada dc funções em um registrador é a carga e o deslocam ento.
Podem os projetar um registrador de 4 bits cap az de executar carga paralela e deslocam ento à
direita, cujos detalhes estão m ostrados na Fig. 4 . 14(a). A Fig. 4 . 14(b) m ostra um sím bolo do
registrador para diagram a de blocos.

s h r jn I3 12 11 10

(a)

Figura 4.14 Registrador de quatro bits com as fun­ s1 s0 O peration


ções de carga paralela e deslocamento à direita: (a) es­
0 0 M antenha o va lo r atual
trutura interna e (b) símbolo para diagrama de blocos.
0 1 Carga paralela
1 0 Desloque à direita
O bserve que usam os um m u ltip lex ad o r 4 x l, ao 1 1 (não usada - vam os
invés de um 2x1, na frente de cad a flip-flop, porque carregar Os)
cada um deles agora pode receber seu próxim o bit de
Figura 4.15 Tabela de funções de
três lugares (a quarta entrada do m ultiplexador não é
um registrador de quatro bits com as
usada). O registrador tem duas entradas de controle,
operações de carga paralela e desloca­
com o com portam ento m ostrado na Fig. 4.15.
mento à direita.
Vamos exam inar o m ultiplexador e o flip-flop do
bit m ais à direita. Q uando sls0=00, o m ultiplexador passa o valor atual do flip-flop de volta
ao próprio flip-flop. Isso faz com que o flip-flop seja recarregado com o seu valor corrente
na próxim a borda de subida de relógio, m antendo assim o valor atual. Q uando sls0=01, o
m ultiplexador passa o valor da entrada externa 10 para o flip-flop. fazendo com que o flip-
flop seja carregado. Q uando sls0=10, o m u ltip lex ad o r passa o valor da saída corrente do
flip-flop da esquerda, Q l, causando portanto um deslocam ento à direita. O valor sls0= 11 não
é um valor vãlido de entrada para o registrador e portanto nunca deve ocorrer. N esse caso, o
m ultiplexador passa Os.

► COMO FUNCIONA ? COMUNICAÇÃO USB E SEM FIOS ENTRE DISPOSITIVOS DIGITAIS

A comunicação serial entre dispositivos digitais, bit de cada vez por meio de uma freqiiência de rádio.
como entre computadores pessoais, lapíops, impres­ Ao passo que a comunicação de dados entre disposi­
soras, câmeras, etc. está em toda parte. A popular tivos pode ser serial, as computações realizadas den­
interface USB tem um esquema de comunicação tro dos dispositivos são feitas geral mente em para­
serial (USB significa Universal Serial Bus , isto é, lelo. Desse modo, os registradores de deslocamento
barramento serial universal) que é usado para ligar são muito usados dentro dos circuitos para converter
um computador pessoal a outros dispositivos por dados internos paralelos em dados seriais para serem
meio de um fio. Além disso, praticamente todos os enviados a um outro dispositivo e para receber dados
esquemas de comunicação sem fio, como WiFi e seriais e convertê-los em dados paralelos que serão
BlueTooth, usam comunicação serial, enviando um usados internamente pelo dispositivo.
178 Sistemas Digitais

Registrador com carga paralela, deslocamento à esquerda e deslocamento à direita


O acréscim o cia função d e deslocam ento ã esquerda ao registrador de quatro bits an terio r é
im ediato e está ilustrado na Fig. 4.16. Em vez de colocar 0 em cada entrada 13 do m ultiplexa-
dor 4x 1, irem os colocar a saída do flip-flop que está à direita. A entrada 13 do m ultiplexador
da extrem a direita será conectada a um a entrada adicional shl i n.*

13 12 11 IO

(a) (b)

Figura 4.16 R egistrador de quatro bits com as funções de carga paralela, deslocam ento à es­
querda e deslocamento à direita: (a) estrutura interna e (b) símbolo para diagrama de blocos.

O registrador tem as funções m ostrad as na Fig.


S1 sO Operação
4.17.
0 0 Mantenha o valor atual
0 1 Carga paralela
Registrador de carga e deslocamento com entradas
1 0 Desloque à direita
de controle separadas para cada operação
1 1 Desloque à esquerda
Geralm ente, os registradores não vêm com entradas
de controle que codificam a função usando o núm ero
Figura 4.17 Tabela de funções de
mínim o de bits, com o as entradas de controle dos regis­
um registrador de quatro bits com as
tradores que projetam os antes. A o contrário, cada fun­
operações de carga paralela, desloca­
ção tem usual mente a sua própria entrada de controle.
mento à esquerda e deslocam ento à
A ssim , um registrador, com as funções de carga,
direita.
deslo cam en to à esq u erd a e d eslo cam en to à direita,
pode ter a tabela de funções da Fig. 4.18. A s quatro funções possíveis (m anter, d eslo car à
esquerda, deslocar à direita e carga) necessitam na realidade de apenas duas entradas de co n ­
trole, m as a figura m ostra que o registrador tem três entradas de controle: ld . s h r e s h l .
O bserve que, se o usuário ativar m ais de um a en trad a com 1, deverem os d ecid ir qual
operação deverá ser realizada. .Se o usuário ativar am bas as entradas s h r e s h l , darem os prio-

► ENTRADAS NÃO USADAS

O exemplo da Fig. 4.14 incluiu um multiplexador com conduzirá ou não? Na verdade, não sabemos. Conse­
quatro entradas das quais usamos apenas três. Note quentemente, poderemos ter um funcionamento inde-
que na realidade atribuímos valores específicos às en­ sejado para o multiplexador. As entradas não devem
tradas não usadas, em vez de simplesmente deixá-las ser deixadas desconectadas. Por outro lado, deixar as
desconectadas. Lembre-se de que cada entrada está saídas desconectadas não representa problema - uma
controlando transistores dentro do componentc-sc saída desconectada pode ter um 1 ou 0 que simples­
não lhe atribuirmos um valor, o transistor interno mente não controlarão mais nada.

* N. de T: De shift left (shl), deslocamento á esquerda, e input (///), entrada, em inglês.


Componentes de Blocos Operacionais 179

ridade à s h r. Se o usuário ativar ld shr shl Operação


1d e um a ou am bas shr e s h l , d a­
rem os prioridade à 1d . 0 0 0 Mantenha o valor atual
0 0 1 Desloque à esquerda
A estrutura interna desse re­
0 1 0 Desloque à direita
gistrador é sim ilar ao registrador
0 1 1 Desloque à direita-shr tem prioridade sobre shl
com carga e deslo cam en to p ro ­
1 0 0 Carga paralela
je ta d o antes, exceto que as três
1 0 1 Carga paralela-ld tem prioridade
en trad as de co n tro le l d , shr e
1 1 0 Carga paralela-ld tem prioridade
shl precisam ser transform adas
1 1 1 Carga paralela-ld tem prioridade
usando um circu ito com binacio-
nal sim ples nas duas entradas s l Figura 4.18 Tabela de funções de um registrador de quatro
e sO do registrador anterior, com o bits com entradas de controle separadas para carga paralela,
m ostrado na Fig. 4.19. deslocamento à esquerda e deslocamento à direita.

Figura 4.19 Um pequeno circuito combinacional transforma as entradas de controle ld, shr e
shl nas entradas de seleção s l e sO do multiplexador.

Podem os projetar o circuito com binacional com eçando com um a tabela-verdade sim ples
com o a m ostrada na Fig. 4.20(a).
A ssim , obtem os as seguintes equações para o circuito com binacional do registrador:
sl = ld '* s h r'* s h l + ld '* s h r* s h l' + ld'*shr*shl
sO = l d ' * s h r ' * s h l + ld

Entradas Saídas Operação


ld shr shl s1 sO ld sh r shl Operação
0 0 0 0 0 Mantenha o va lo r -------- ► 0 0 0 Mantenha o valor
0 0 1 1 1 Desloque à e sq u e rd a -------- ► 0 0 1 Desloque à esquerda
0 1 0 1 0 Desloque à direita ----- — p , 0 1 X Desloque à direita
0 1 1 1 0 Desloque à direita 1 X X Carga paralela
1 0 0 0 1 Carga paralela 'y '/ *
1 0 1 0 1 (b)
Carga paralela ' / /
1 1 0 0 1 Carga paralela ' /
1 1 1 0 1 Carga paralela '

(a)

Figura 4.20 Tabelas-verdade que descrevem as funções de um registrador com deslocamentos à


esquerda e à direita, e carga paralela. Também está descrito o mapeamento das entradas de con­
trole do registrador para as linhas de seleção do multiplexador interno 4 x l: (a) tabela de funções
com pleta que define o mapeamento de ld . shr e shl em s l e sO e (b) uma versão com pacta da
tabela de funções.
180 Sistemas Digitais

A substituição da caixa do circuito com binacional da Fig. 4.19 pelas portas descritas pelas
equações com pletará o projeto do registrador.
T ipicam ente, as folhas de especificação dos registradores m ostram a tabela de funções de
form a com pacta, tirando vantagem das prioridades das entradas de controle, com o m ostrado
na Fig. 4.20(b). Um único X em um a linha significa que aquela linha representa na realidade
duas linhas da tabela com pleta, com um a linha tendo um 0 na posição do X e outra tendo um
1. D ois Xs em um a linha significa que aquela linha representa na realidade quatro linhas da
tabela com pleta, um a linha tendo 00 na posição dos Xs, um a outra tendo 01, um a outra 10 e
ainda um a outra tendo 11. Da m esm a form a, três Xs representam oito linhas. O bserve que, se
colocarm os as entradas de controle com prioridade m ais elevada no lado esquerdo da tabela,
conseguirem os que as funções da tabela perm aneçam bem organizadas.

Processo de projeto de registradores


A Tabela 4.1 descreve um processo genérico para se p ro jetar um registrador com q ualquer
núm ero de funções.

TABELA 4.1 Processo de quatro passos para se projetar um registrador com múltiplas funções

Passo Descrição

1 Determine o tamanho Conte o número de funções (não esqueça da função que mantém o valor
do multiplexador corrente!) e coloque um multiplexador à frente de cada flip-flop com, no
mínimo, esse número de entradas.

2 Crie a tabela de fun­ Crie uma tabela de funções que define as operações desejadas para
ções do multiplexador cada valor possível das linhas de seleção do multiplexador.

3 Conecte as entradas Para cada função, conecte a entrada de dados correspondente do mul­
do multiplexador tiplexador à entrada externa ou saída de flip-flop apropriada (possivel­
mente passando por alguma lógica combinacional) para obter a função
desejada.

4 Mapeie as linhas de Crie uma tabela-verdade que mapeia as linhas de controle externas nas
controle linhas internas de seleção dos multiplexadores, com prioridades apro­
priadas, e então projete a lógica combinacional que implemente esse
mapeamento.

Irem os ilustrar o processo de projeto de um registrador com outro exem plo.

► EXEMPLO 4.7 Registrador com carga, deslocamento e set e clear síncronos


Querem os projetar um registrador com as seguintes funções: carga, deslocam ento à esquerda,
clear síncrono e set síncrono, tendo entradas exclusivas para cada operação (ld , s h l, cl r, s e t).
A função de clear síncrono em um registrador significa carregar todo o registrador com 0s na
próxima borda de subida do relógio. A função de set síncrono significa carregar todo o registra­
dor com ls na próxima borda de subida do relógio. O termo síncrono está incluído porque alguns
registradores vêm com operações de clear ou set assíncronos. Seguindo o processo de projeto de
registradores da Tabela 4 . 1, realizamos os seguintes passos:
Passo 1: D eterm ine o ta m a n h o do m ultiplexador. Há cinco funções: carga, deslocamento à
esquerda, clear síncrono, set síncrono e manutenção cio valor atual. Não esqueça da
função que mantém o valor atual, já que essa operação está implícita.
Passo 2: C rie a tabela de funções do m ultiplexador. Usaremos as primeiras cinco entradas de
um multiplexador 8x1 para as cinco funções desejadas. Para as três entradas restantes
do multiplexador, optaremos pela manutenção do valor atual, embora essas entradas
nunca devam ser utilizadas. A tabela está mostrada na Fie. 4.21.
Componentes de Blocos Operacionais 181

s2 s1 sO Operação
0 0 0 Mantenha o va lo r atual
0 0 1 Carga paralela
0 1 0 Desloque à esquerda
0 1 1 Clear síncrono
1 1 0 0 Set síncrono
1 1 0 1 Mantenha o va lo r atual
Figura 4.21 Tabela de funções de um Ki 1 0 Mantenha o va lo r atual
registrador com carga, deslocamento e 1 1 1 Mantenha o va lo r atual
set e clear síncrono.

Passo 3: C onecte as e n tra d a s do m ultiple- In


xador. Conectam os as entradas do de
m ultiplexador com o ilustrado na Qn-1
Fig. 4.22, a qual mostra apenas o
rt-ésimo flip-flop e o multiplexador
por simplicidade.

Figura 4.22 A N-ésima fatia de um


registrador com as seguintes funções:
manter o valor atual, carga paralela,
deslocar à esquerda, clear síncrono e
set síncrono.

Passo 4: M apeie as lin h as de controle. Daremos a prioridade mais elevada à entrada cl r, se­
guida por s e t, 1d e s h l. Assim, as entradas de controle do registrador serão mapeadas
nas linhas de seleção do multiplexador 8x1 com o mostrado na Fig. 4.23.

Entradas Saídas
clr set ld shl s2 s1 sO Operação
0 0 0 0 0 0 0 Mantenha o va lo r atual
0 0 0 1 0 1 0 Desloque à esquerda
0 0 1 X 0 0 1 Carga paralela
0 1 X X 1 0 0 S et (tudo com 1s)
1 X X X 0 1 1 Clear (tudo com Os)

Figura 4.23 Tabela-verdade para as linhas de controle de um registrador com a N-


ésim a fatia mostrada na Fig. 4.22.

Observando cada saída da Fig. 4.23, deduzim os as equações que descrevem o circuito que ma-
peia as entradas de controle externas nas linhas de seleção do multiplexador. Assim, obtemos:

s2 = c l r ' * s e t
sl = c lr ^ s e f ^ ld ^ s h l + c lr
sO = c l r ' * s e t ' * l d + c l r

Então, poderemos criar um circuito combinacional que implementa essas equações, as quais
mapeiam as entradas externas de controle do registrador nas linhas de seleção do multiplexador,
completando assim o projeto do registrador. ◄

A lguns registradores vêm com entradas de co n tro le de clear assíncrono e/ou set assín ­
crono. E ssas entradas podem ser im plem entadas conectando-as às entradas de clear e/ou set
assíncronos já existentes nos próprios flip-flops.
182 Sistemas Digitais

4.3 SOMADORES
A adição de dois núm eros binários 6 possivelm ente a m ais com um das operações que é rea­
lizada com dados em um sistem a digital. Um somadorde N bits é um com ponente de bloco
operacional que adiciona dois núm eros A e B gerando um a som a S de N bits e um transporte (o
“ vai um ") C de 1 bit. Por exem plo, um som ador de quatro bits adiciona dois núm eros de q u a ­
tro bits, com o 0111 e 0001, resultando um a som a de q u atro bits, 1000 no caso, e um transporte
de 0. A adição 1111 + 0001 produz um sinal de transporte de 1 e um a som a igual a 0000 ou
10000, no caso de você tratar o bit de transporte e os bits de som a com o sendo um resultado
de cinco bits. Freqüentem ente, N é referido com o sendo a largura do som ador. O projeto de
som adores que sejam rápidos e eficientes, m esm o que tenham um grande tam anho (largura),
é um tem a que vem recebendo um a considerável atenção há m uitas décadas.
E m bora pareça que possam os projetar um som ador de N bits seguindo o processo da Ta­
bela 2.5 para se projetar lógica com binacional, ocorre que a construção por esse processo de
um som ador de N bits deixa de ser prático quando N é m uito m aior do que quatro. Um som a­
dor de quatro bits tem duas entradas de quatro bits, ou seja, oito entradas no total, e tem quatro
saídas de som a e um a saída de transporte. A ssim , poderíam os construir o som ador usando o
processo padrão de projeto de lógica com binacional d a Tabela 2.5. Por exem plo, um som ador
de dois bits, que adiciona dois núm eros d e dois bits, poderia ser projetado co m eçando com
a tabela-verdade m ostrada na Fig. 4.24. Poderíam os então im plem entar a lógica usando um a
im plem entação de dois níveis baseada em portas lógicas para cada um a das saídas.

Entradas Saídas Entradas Saídas


a1 aO b1 bO c si sO a1 aO bl bO c s1 sO
0 0 0 0 0 0 0 1 0 0 0 0 1 0
0 0 0 1 0 0 1 1 0 0 1 0 1 1
0 0 1 0 0 1 0 1 0 1 0 1 0 0
0 0 1 1 0 1 1 1 0 1 1 1 0 1
0 1 0 0 0 0 1 1 1 0 0 0 1 1
0 1 0 1 0 1 0 1 1 0 1 1 0 0
0 1 1 0 0 1 1 1 1 1 0 1 0 1
0 1 1 1 1 0 0 1 1 1 1 1 1 0

Figura 4.24 Tabela-verdade para um som ador de dois bits.

O problem a desse processo é que, para som adores com larguras m aiores, resultam tabe-
las-verdade m uito grandes e portas lógicas dem asiadas. Um som ador de 16 bits tem 1 6 + 1 6
= 32 entradas, significando que a tabela-verdade terá m ais de quatro bilhões de linhas. Um a
im plem entação de dois níveis dessa tabela, baseada em portas lógicas, provavelm ente exigiria
m ilhões de portas. Para ilustrar esse ponto, realizam os um experim ento no qual usam os o pro­
cesso padrão de projeto lógico com binacional para criar som adores com larguras crescentes,
com eçando com som adores de um bit e daí para cim a. U sam os a ferram enta de projeto lógico
m ais avançada disponível no m ercado e solicitam os que ela criasse um circuito com dois
níveis de lógica com binacional (um nível com portas A N D que alim entam um a porta OR, no
segundo nível, para cada saída) e um núm ero m ínim o de portas (na realidade, transistores).
O gráfico da Fig. 4.25 resum e os nossos resultados. O bserve com que rapidez o núm ero
de transistores cresce com a largura do som ador. Esse crescim en to rápido é um efeito do
crescim ento ex p o n en cial-se a largura do som ador for N bits, o núm ero de linhas na labela-
verdade será proporcional a 2,v (m ais precisam ente, a 2 Wv) . N aturalm ente, esse crescim ento
exponencial im pede-nos de usar o processo de projeto padrão para som adores com larguras
superiores a oito ou dez bits. No nosso experim ento, não conseguim os com pletá-lo para lar-
Componentes de Blocos Operacionais 183

guras m aiores do que oito bits - a ferra­ 10000


m enta sim plesm ente não pôde com pletar 8000
o p ro jeto em tem po razoável. E la p re­ w
0<—)
cisou de três segundos para co n stru ir o O 6000
ço
som ador de seis bits, quarenta segundos ‘5 5 1
c
CO 4000
para o som ador de sete bits e trinta m inu­
11
tos para o de oito bits. D epois de um dia
inteiro, o som ador de nove bits ainda não
tinha sido term inado. A nalisando esses
wmmmni
2000

0
4 5
i H 1
8
N
dados, poderá você prever o num ero de
transistores exigidos para um som ador de Figura 4.25 Por que somadores de muitos bits de
16 bits, ou de 32 bits, usando dois níveis largura não são construídos usando a lógica com-
de p ortas? C om base na figura, parece binacional padrão de dois níveis-observe o cres­
que o núm ero d e transistores d u p lica a cimento exponencial? Quantos transistores seriam
cada aum ento de N. Tem os cerca de 1000 necessários para um som ador de 32 bits?
transistores para N = 5 ,2 0 0 0 transistores
para N = 6 ,4 0 0 0 para N = 7 e 8000 para N = 8. A ssum indo que essa tendência continua para
som adores m ais largos, então um som ador de 16 bits teria oito duplicações alêm do som ador
de oito bits. Isso significa que o som ador de oito bits será m ultiplicado por 2 = 256. A ssim ,
um som ador de 16 bits exigiria 8000 * 256 = cerca de dois m ilhões de transistores. Um som a­
dor de 32 bits exigiria dezesseis duplicações além do som ador de 16 bits, significando que o
som ador de 16 bits será m ultiplicado por 2 I6= 64K . ou seja, dois m ilhões vezes 64K = acim a
de 100 bilhões de transistores. Esse é um núm ero exorbitante de transistores. E stá claro que
precisam os de um a outra abordagem para projetar som adores com larguras m aiores.

Somador - estilo propagação de "vai um" (c a rry -rip p le )


Há um a outra abordagem , ao invés do processo padrão, para se projetar um circuito lógico
com binacional capaz de som ar dois núm eros binários. C onsiste na criação de um circuito
que im ita a form a pela qual nós som am os à m ão dois núm eros, isto é, um a co lu n a de cada
vez. C onsidere a adição, coluna a coluna, de um núm ero binário A=1111 (15 na base 10) e um
outro B=0110 (6 na base 10), com o m ostrado na Fig. 4.26.

fl fl fl
o i 0 1
1 1 1 1 1 1 1 1 1 1 1
+ 011 + o 1 1 0 + 0 1 0

Figura 4.26 Adição de dois números t0 t1


binários à mão, coluna a coluna. 1 1 0 1 10 10 1

Em cada coluna, som arem os três bits para obter o bit de resultado da som a além do bit de
“ vai um " para a próxim a coluna. A prim eira coluna é um a exceção, porque som arem os ape­
nas dois bits, m as ainda assim estarem os produzindo um a som a e um bit de “vai um ” . O bit de
“ vai um “ da últim a coluna torna-se o quinto bit da som a, resultando 10101 (21 na base 10).
Podem os projetar um com ponente com binacional para fazer tal adição, a qual necessa­
riam ente deve se realizar em um a única coluna. A s entradas e saídas desse com ponente estão
m ostradas na Fig. 4.27. E ntão, tudo que precisam os fazer é projetar esse com ponente, para
que realize a adição em um a coluna, e em seguida co n ectar diversos deles, com o m ostrado
na Fig. 4.27, criando assim um som ador de q u atro bits. T enha em m ente, no entanto, que
esse m étodo de criação de som adores tem por objetivo o projeto eficiente de som adores com
184 Sistemas Digitais

larguras m aiores, com o o de oito bits visto antes ou com m ais bits. E stam os ilustrando esse
m étodo por m eio de um som ador de apenas q u atro bits, porque essa largura de bits torna os
nossos núm eros pequenos e fáceis de serem lidos. N o entanto, se realm ente necessitarm os de
um som ador de quatro bits, o processo padrão para se desenvolver o projeto lógico com bina-
cional em dois níveis tam bém funcionará bem.

Figura 4.27 Uso de com ­


ponentes com binacionais
para som ar dois núm eros
binários coluna a coluna. SOMA

A gora, projetarem os os com ponentes de cada coluna da Fig. 4.27.

Meio-somador Entradas Saídas


Um meio-somador é um com ponente com binacional que adiciona a b co s
dois bits (a e b) e gera um a som a (s) e um bit de transporte de “ vai 0 0 0 0
um " (co)*. (N ote que não dissem os que um m eio-som ador som a 0 1 0 1
dois números de dois bits - um m eio-som ador adiciona sim p les­ 1 0 0 1
m ente dois bits.) O com ponente na extrem a direita da Fig. 4.27 é
1 1 1 0
um m eio-som ador. E le som a os dois bits (a e b) da coluna m ais à
direita e produz a som a (s ) e o “ vai um " (co). U sando o processo Figura 4.28 T abela-
direto de projeto lógico com binacional do C apítulo 2, podem os verdade de um meio-
projetar um m eio-som ador com o segue: somador.

Passo 1: Capture a função. U sarem os um a tabela-verdade para capturar a função. A tabela-


verdade apropriada está m ostrada na Fig. 4.28.

Passo 2: Converta para equações. Vem os claram ente que co = ab e s = a ' b + a b ' . O b ­
serve que a equação s = a 'b + a b ' é a m esm a que s = a x o r b.

Passo 3: Crie o circuito. O circuito de um meio-


som ador, que im plem enta as equações anteriores,
está m ostrado na Fig. 4.29(a). A Fig. 4.29(b) m os­
tra o sím bolo, usado em diagram as de blocos, do
m eio-som ador.

Somador completo
Um somador completo 6 um com ponente com bi­
nacional que adiciona três bits (a, b e c i ) e gera
um a som a (s) e um bit de transporte de “ vai um ” (b)
(co). (N ote que não dissem os que um so m ad o r Figura 4.29 Meio-somador: (a) circuito
com pleto adiciona dois números de três bits - um e (b) símbolo para diagrama de blocos.
so m ad o r co m p leto ad icio n a sim p lesm en te três

* N. de T: De carry out. transportar para fora, em inglês.


Componentes de Blocos Operacionais 185

bits.) O s três com ponentes da Fig. 4.27 são som adores com pletos. C ada um som a dois bits
m ais o bit de transporte de “ vem um " (c i ),* q u e vem da coluna da direita, produzindo a som a
(s ) c o “ vai um " (co). U sando o processo direto de projeto lógico com binacional, podem os
projetar um som ador com pleto com o segue:

Passo 1: Capture a Junção. U sarem os um a tabela-verdade


Entradas Saídas
para capturar a função, a qual está m ostrada na Fig. 4.30.
a b Cl co s
Passo 2: Converta para equações. O btem o s as seguintes 0 0 0 0 0
equ açõ es para co e s. P or sim p licid ad e, escrev erem o s c i 0 0 1 0 1
com o c. U sarem os m étodos algébricos para sim p lificar as 0 1 0 0 1
equações. 0 1 1 1 0
co = a ' b c + a b ' c + a b c ' + abc 1 0 0 0 1

co = a ' b c + abc + a b ' c + abc + a b c 1 + abc 1 0 1 1 0


co = ( a ' + a ) b c + ( b ' + b ) a c + ( c ' + c ) a b 1 1 0 1 0
co = bc + ac + ab 1 1 1 1 1
s = a ' b ' c + a ' b c 1 + a b ' c ' + abc
s = a ' ( b ' c + b c ' ) + a ( b ' c 1 + bc) Figura 4.30 Tabela-verdade
s = a ' ( b xor c) + a ( b xor c ) ' do somador completo.
s = a xor b xor c
D urante a sim plificação algébrica da equação de co, notam os que cada um dos três pri­
m eiros term os pode ser com binado com o último abc, porque cada um dos três prim eiros
term os é diferente do último em apenas um a variável. A ssim , criam os três instâncias (cópias)
do último term o abc (o que não altera a função) e com binam os esses term os com cad a um dos
três prim eiros. N ão se preocupe se agora você não conseguir acom panhar essa sim plificação;
a Seção 6.2 apresentará m étodos que tornam essa sim plificação m ais direta. Se você já leu
aquela seção, você poderá tentar o uso de um m apa de K arnaugh (introduzido naquela seção)
para sim plificar as equações.

Passo 3: Crie o circuito. O circuito a b ci


de um som ador com pleto está m os­
trado na Fig. 4 .3 1(a). A Fig. 4.3 l(b)
m ostra o sím bolo, usado em diagra­
mas de blocos, do som ador completo. a b ci
Somador
Somador de quatro bits com completo
SC
propagação do bit de transporte de
co s
"vai um"
U sando três som adores com pletos e
(b)
um m eio-som ador. podem os p roje­
tar um som ador de quatro bits com co
propagação de “vai um ” . E le som a (a)

dois núm eros de quatro bits produ­ Figura 4.31 Somador completo: (a) circuito e (b) sím­
zindo a som a de quatro bits e tam ­ bolo para diagrama de blocos.
bém o bit de transporte de “vai um ” ,
com o m ostrado na Fig. 4.32.

* N. de T: De carry in .transportarpara dentro, em inglês


186 Sistemas Digitais

a3 b3 a2 b2 a1 b1 aO bO

co s3 s2 s1 sO
(a) (b)

Figura 4.32 Somador de quatro bits: (a) implementação com propagação do bit de transporte de “vai
um” usando três somadores completos e um meio-somador e (b) símbolo para diagrama de blocos.

Podem os incluir um bit de “ vem um ” no som ador de quatro bits. Isso nos perm itirá conec­
tar som adores de quatro bits, form ando som adores com larguras m aiores de bit. Para incluir
o bit de “vem um ” , substituím os o m eio-som ador (que estava na posição de extrem a direita)
por um som ador com pleto, com o m ostrado na Fig. 4.33.

a3 b3 a2 b2 a1 b1 aO bO ci

co s3 s2 s1 sO
(a) (b)

Figura 4.33 Somador de quatro bits: (a) implem entação com propagação do bit de transporte e
uma entrada de “vem um”, e (b) símbolo de diagrama de blocos.

Vamos analisar o com portam ento desse som ador. Suponha que todas as entradas tenham
sido Os p o r um longo tem po. Isso significa que S será 0000, co será 0 e todos os valores de c i
nos som adores com pletos tam bém serão 0. A gora, suponha que sim ultaneam ente A torne-se
0111 c B. 0001 (sabem os que a som a dos dois é 1000). E sses novos valores de A e B irão se
propagar através dos som adores com pletos. S uponha que o atraso de um som ador com pleto
seja 2 ns. A ssim , 2 ns após A e B terem m udado de valor, as saídas de som a dos som adores
com pletos irão m udar, com o m ostrado na Fig. 4.34(a). D esse m odo, s3 irá se tornar 0+0+0=0
(com co3=0), s2 irá se tornar 1+0+0=1 (com co2=0), s l irá se tornar 1+0+0= 1 (com co l= 0 ), e
sO irá se tornar 1+1=0 (com co0=l). No entanto, 1111+0110 não deve ser 00110-pelo co n trá­
rio, deveria ser 01000. ü que é que aconteceu de errado?
N ão aconteceu nada de errado; o som ador com propagação do “ vai um ” sim plesm ente
não está pronto d ep o is de apenas 2 ns. A pós 2 ns, co0 m udou de 0 para 1. A gora, devem os
dar tem po para que o novo valor de co0 propague-se através do próxim o som ador com pleto.
A ssim , após m ais 2 ns, s l será igual a 1+0+1=0 e co2 irá se tornar 1. Desse m odo, após 4 ns (o
atraso de dois som adores com pletos), a saída será 00100, com o m ostrado na Fig. 4.34(b).
Fique esperando. A pós um terceiro atraso, o novo valor de co2 terá se propagado através
do próxim o som ador com pleto, resultando que s2 irá se tornar l+0+l=0 e co2 será igual a 1.
A ssim , depois de um atraso de três som adores com pletos, a saída será 00000, com o m ostrado
na Fig. 4.34(c).
Só m ais um p o u co d e p aciên cia. A p ó s um q u arto a tra so de so m a d o r com pleto, co2 terá
tid o tem p o p ara se p ro p a g a r atrav és d o ú ltim o so m ad o r, re su lta n d o q u e s3 irá se to rn a r
Componentes de Blocos Operacionais 187

0111+0001

Saída após 2 ns (1 SC de atraso)

Saída após 4 ns (2 SCs de atraso)

Saída após 6 ns (3 SCs de atraso)

o 0 0 Saída após 8 ns (4 SCs de atraso)

Figura 4.34 Exemplificação da soma 0111+0001 usando um som ador de quatro bits com propa­
gação de “vai um”. Temporariamente, a saída irá exibir resultados incorretos (espúrios) até que o
bit de transporte que se origina no som ador completo mais à direita tenha tido tempo de se propa­
gar até o somador completo mais à esquerda.

0+0+1 =1 e co3 p e rm a n ec e rá 0. A ssim , d e p o is d e um a tra so d e q u atro so m a d o re s com ple­


tos, a sa íd a se rá 01000, c o m o m o stra d o n a F ig. 4 .3 4 (d ), se n d o q u e 01000 é o re su lta d o
correto.
R ecapitulando, até que os bits de transporte tivessem tido tem po para se
Há diversas formas
de se denominador os propagar através de todos os som adores, da direita à esquerda, a saída não es­
somadores. Preferimos tava correta. O s valores interm ediários são conhecidos com o valores espúrios.
a expressão “propaga­ O atraso do som ador de quatro bits, ou seja, o tem po que precisam os esperar
ção de vai um " para até que a saída torne-se o valor estável correto, é igual ao atraso de quatro so­
ser consistente com os m adores completos, ou 8 ns neste caso, que é o tem po necessário para que os
nomes de outros tipos bits de transporte propaguem -se através de todos os som adores; d a í o term o
de somadores, como somador com propagação de “vai u m ”.
“seleção de vai um ” N o início, os estudantes confundem freqüentem ente som adores completos
e “antecipação de vai com som adores de N bits. Um som ador de três bits adiciona dois núm eros de
um ”, que serão descri­
três bits. Um som ador completo produz um bit de som a e um bit de “ vai u m ” .
tos no Capítulo 6.
Usual m ente, um som ador completo é usado para som ar apenas uma coluna de
dois núm eros binários, ao passo que um som ador de N bits é usado para som ar
dois núm eros de N bits.
188 Sistemas Digitais

Um somaclor de N bits freqüentem ente apresenta um bit de “vem um”, de modo que o so-
m ador pode ser colocado em cascata com outros som adores de N bits para form ar som adores
maiores. A Fig. 4.35(a) mostra um som ador de oito bits construído a partir de dois som adores de
quatro bits. Quando som am os dois núm eros de oito bits, devem os fazer o bit de “vem um” à di­
reita ser 0. A Fig. 4.35(b) mostra o sím bolo para diagram a de blocos desse som ador de oito bits.

a7 a6 a5 a4 b7 b6 b5 b4 a3a2a1a0 b3 b2 b1 bO

a3 a2 a1 aO b3 b2 b1 bO a3 a2 a1 aO b3 b2 b1 bO a7.. aO b7.. bO

Somador de quatro bits ci Somador de quatro bits ci Somador de oito bits ci

co s3 s2 s1 sO co s3 s2 s1 sO co s7.. sO

co s7 s6 s5 s4 s3 s2 s1 s0
(a) (b)
Figura 4.35 Som ador de oito bits: (a) implementação com propagação de “ vai um” construída a
partir de dois somadores com propagação de “vai um” e (b) símbolo de diagrama de blocos.

► EXEMPLO 4.8 Calculadora que realiza somas baseada em DlP-switch


Vamos projetar uma calculadora muito simples que pode som ar dois números binários de oito
bits e produzir um resultado de oito bits. Os números binários de entrada virão de chaves DIP de
oito botões deslizantes e a saída será mostrada através de oito LEDs, como mostrado na Fig. 4.36.
Uma chave DIP (Dual Inline Package)* de oito bits é um componente digital simples com botões
ou chaves que um usuário pode mover para cima ou para baixo. Em cima, é gerado um 1 no bit
correspondente e, em baixo, é gerado um 0. Um LED (iighr-emitting diodé) é apenas uma pequena
lâmpada que acende, quando a entrada do LED é 1, e apaga, quando a entrada é 0.
Podem os im plem entar essa calculadora utilizando no bloco CALC um som ador de oito
bits com propagação de “vai um ” , com o m ostrado na Fig. 4.36. Q uando um a pessoa move os
botões da chave DIP, novos valores binários propagam -se através das portas do som ador. Isso
produz saídas interm itentes e conseqüentem ente faz com que alguns L E D s pisquem rapida-

Chaves DIP

0 □□□□□□00 □000001
a7..a0 b7..b0
Somador de oito bits com ci —0
propagação de "vai um "
co s7..s0

Figura 4.36 Uma calculadora CALC


para realizar som a baseada em
chaves DIP de oito bits. A figura LEDs
0 0 00010#
mostra a soma 2+3=5.

* N. de T: Encapsulamento Dual Inline. A expressão “Dual Inline” refere-se a duas filas (linhas) de pinos em paralelo que estão
embaixo da chave, usados para conectar eletricamente os botões deslizantes a outros circuitos.
Componentes de Blocos Operacionais 189

m ente até que finalm ente os valores tenham se propagado através de todo o circuito. N esse
m om ento, a saída estabiliza-se e os L ED s exibem corretam ente a nova som a.
Se quiserm os evitar o piscar dos L ED s, devido aos valores interm itentes, poderem os in­
troduzir no sistem a um botão i (significando “é igual a '’), q u e indicará quando o novo va­
lor deverá ser exibido. A pertarem os o botão i som ente após ter configurado as duas chaves
D IP com novos valores de entrada que deverão ser som ados. Podem os usar a entrada i com
um registrador, com o na Fig. 4.37. C onectam os a en trad a i à en trad a l oad de um registra­
dor de carga paralela. Q uando um a pessoa m ove as chaves DIP, novos valores interm itentes
aparecem nas saídas do som ador. No entanto, esses valores serão bloqueados na entrada do
registrador, ao m esm o tem po que o registrador m antém o valor anterior e conseqüentem ente
os LED s estarão exibindo esse valor. A seguir, quando o botão i é pressionado, o registrador
será carregado na próxim a borda de relógio e então os LED s irão exibir o novo valor.
O bserve que o valor exibido será correto apenas se a som a for igual ou in ferio r a 255.
Poderíam os ligar co a um quinto LED para exibir som as entre 256 e 5 11.

Chaves DIP

1
0 mm DOB DQDDDODO
a7..a0 b7..b0
Figura 4.37 Uma calcu la­ Somador de oito bits c' 0
dora para realizar somas, ba­
seada em chaves DIP de oito co s7..s0
bits, usando um registrador

para bloquear as saídas espú­ i


- Id

11111II CALC
rias nos LEDs. Esses LEDs Registrador de oito bits
são atualizados somente após
1

00000*0# ^
o botão ser pressionado, fa­
zendo com que o registrador
de saída seja carregado.

Atraso e tamanho de um somador com propagação de "vai um"


A ssum indo que os som adores com pletos são im plem entados usando dois níveis de portas
(portas A N D seguidas por um a O R) e que cada porta tem um atraso de l ns, vam os calcular o
atraso total de um som ador de 32 bits com propagação de “vai um ” . Irem os calcular tam bém
o tam anho de um som ador com o esse.
Para determ inar o atraso, observe prim eiro q u e o “vai um ” deve se propagar desde o pri­
m eiro som ador com pleto até o trigésim o segundo. O atraso do prim eiro som ador é 2 portas
* l ns/porta = 2 ns. A gora, o novo “vai um ” deverá se propagar através do segundo som ador
com pleto, resultando em m ais 2 ns, e assim por diante. D esse m odo, o atraso total do som ador
de 32 bits será 2 ns/som ador com pleto * 32 som adores com pletos = 64 ns.
Para determ inar o tam anho, observe que um som ador com pleto requer aproxim adam ente
cinco portas (dizem os aproxim adam ente porque a porta O R de três entradas de um som ador
requer m ais transistores do que um a porta A N D de d u as entradas. U m a porta X O R de três
entradas requer ainda m ais transistores). C om o o som ador de 32 bits tem 32 som adores com ­
pletos, o tam anho total do som ador de 32 bits, com propagação de “vai um ” , será 5 portas/
som ador com pleto * 32 som adores com pletos = 160 portas.
O som ador de 32 bits, com propagação de “ vai u m ” , tem um atraso grande, m as um nú­
m ero razoável de portas. Na Seção 6.4, verem os com o co n stru ir som adores m ais rápidos, à
custa de m ais portas, m as usando ainda um núm ero razoável de portas.
190 Sistemas Digitais

► EXEMPLO 4.9 Balança com compensação de peso usando um somador


Uma balança, como de banheiro, usa um
sensor para determinar o peso de alguma Sensor
coisa (como uma pessoa) que esteja so­
bre ela. As leituras feitas desse mesmo
de peso
•’O -
5 4 3
objeto podem variar com o tempo, devido
00000
ao desgaste do sistema de sensor (como
uma mola que perde a elasticidade), re­ tttttttt m
sultando possivelmente na exibição de a7..a0 b7..b0
um peso que é alguns quilogramas me­
Somador de oito bits ci
nor. Assim, a balança pode ter um botão — 0
que a pessoa gira para compensar o peso CO s7.sO
menor. O botão indica o valor que deve
ser acrescentado a um dado peso antes de 1 w m u i
ser exibido. Suponha que o botão possa ld Registrador
Ajuste
clk do mostrador
ser ajustado para produzir um valor de de Peso
compensação de 0, l , 2 , 7 , como mos­
trado na Fig. 4.38.
Podem os im plem entar o sistem a
ir n u nao mostrador

usando um som ador de oito bits, com Figura 4.38 Balança com compensação: o mostrador
propagação de “vai um”, com o mostrado circular exibe um número de 0 a 7 (000 a 111). Esse
na Figura. Em cada borda de subida do número é somado ao peso que foi medido produzindo
relógio, o registrador do m ostrador será uma soma que então é exibida.
carregado com a soma do peso medido
mais o valor de compensação. ◄

4.4 DESLOCADORES
O deslocam ento de bits é um a operação com um aplicada a dados. O deslocam ento pode ser
usado para m anipular bits, com o quando querem os inverter a ordem dos bits dc um núm ero.
O deslocam ento é útil para se transm itir dados serialm ente, com o foi feito no E xem plo 4.6.
O deslocam ento tam bém é útil para m ultiplicar ou dividir por dois. N a base 10, você deve
estar fam iliarizado com a idéia de que se pode m ultiplicar por 10 acrescentando sim plesm ente
um 0 a um núm ero. Por exem plo, 5 vezes 10 é 50. A crescentar um 0 é o m esm o que realizar
o deslocam ento de um a posição à esquerda. Do m esm o m odo, na base 2, pode-se m ultiplicar
por 2 acrescentando um 0, ou seja, deslocando os bits um a posição à esquerda. A ssim , 0101
vezes 2 é 1010. Além disso, na base 10, pode-se m ultiplicar por 100 acrescentando-se dois Os,
ou seja, um deslocam ento de duas vezes à esquerda. D esse m odo, na base 2, pode-se multi­
plicar por 4 fazendo um deslocam ento de duas vezes à esquerda. Na base 2, deslocar os bits
à esquerda três vezes é o m esm o que m ultiplicá-los por 8, e assim por diante. C om o deslocar
bits à esquerda é o m esm o que m ultiplicá-los por 2, deslocar à d ireita é o m esm o que dividi-
los por 2. A ssim , 1010 dividido por 2 é 0101.
E m bora o deslocam ento possa ser feito usando um registrador de deslocam ento, algum as
vezes precisam os de um com ponente com binacional específico para realizá-lo. Isso deve ser
feito deslocando núm eros diferentes de posições e em am bos os sentidos.

Deslocadores simples
Um deslocador de N bits é um com ponente que pode deslocar um a entrada de N bits um certo
núm ero de vezes para gerar um a saída de N bits.
O deslocador m ais sim ples faz um deslocam ento de um a posição em um dado sentido. D i­
gam os que queiram os um deslocador para fazer um deslocam ento de um a posição à esquerda.
O projeto desse deslocador sim ples é im ediato, consistindo sim plesm ente de fios, com o mos-
Componentes de Blocos Operacionais 191

irado na Fig. 4.39(a) para o caso de um deslocador de quatro bils. O bserve que o deslocador
tem um a entrada adicional (in, de input, entrada) para o valor que deverá ser deslocado para
a posição do bit m ais à direita.

i3 i2 i1 iO i3 i2 i1 iO

JL q3 q2 q1 qO
«1 (O

T
(a)

Figura 4.39 Deslocadores combinacionais: (a) deslocador à esquerda com o símbolo de diagrama
de blocos mostrado embaixo, (b) componente de deslocam ento à esquerda ou de passagem, (c)
componente de deslocamento à esquerda/dircita ou de passagem.

Um d e slo c a d o r m ais av an çad o p o d e fa z e r d e slo c a m e n to s de um a p o siç ã o à e sq u e rd a


q u a n d o u ma e n tra d a ad icio n al sh (de shift, d e slo c a r) for 1, ou d e ix a r as e n tra d a s p a ssa ­
rem atrav és d o c o m p o n e n te a té as sa íd a s sem re a liz a r d e slo c a m e n to s q u a n d o sh fo r 0.
P o d em o s p ro je ta r esse d e slo c a d o r u san d o m u ltip le x a d o re s 2x1, co m o m o stra d o na Fig.
4 .3 9 (b ).
Um d eslo cad o r ainda m ais avançado poderá fazer d eslocam entos de um a posição à e s­
querda ou à direita, com o m ostrado na Fig. 4.39(c). Q uando am bas as entradas de controle
forem 0, os valores de entrada passam através do com ponente sem sofrer alterações. Q uando
shL=l, o d eslocador faz um deslocam ento à esquerda e, quando shR=l, o deslocador faz um
deslocam ento à direita. Q uando am bas essas entradas de controle são 1, o deslocador pode ser
projetado para gerar Os na saída, pela ligação de Os às entradas 13 dos m ultiplexadores (não
m ostrado). O utras expansões desse deslocador sim ples são possíveis, com o p erm itir deslo ­
cam entos de um a posição ou duas. A s estruturas internas desses deslocadores com m últiplas
funções requerem m ultiplexadores grandes e o m apeam ento das entradas de controle para as
linhas de seleção dos m ultiplexadores, exatam ente com o se tornou necessário no projeto dos
registradores com m últiplas funções.

► EXEMPLO 4.10 Um conversor aproximado de graus Celsius para Fahrenheit usando um deslocador
Recebemos um termôm etro digital que digitaliza a tem peratura em
C
graus Celsius produzindo um número binário C de oito bits. Assim, 30
graus Celsius seria digitalizado com o 00011110. Queremos converter
essa tem peratura em graus Fahrenheit, novamente com oito bits. A
equação dc conversão necessária é:
t
1 <<1 h °
F = C*9/5 + 32 00100000
1 = Ï8
Vamos assum ir que não estam os preocupados com a exatidão e,
Som ador de o ito bits
assim, substituiremos a equação por uma mais simples:
'8
F = C*2 + 32
Podemos projetar o conversor facilmente usando um deslocador à
esquerda (com o valor de entrada de deslocamento igual a 0) para cal­ Figura 4.40 Conversor
cular C*2, e então um som ador para acrescentar 32 (00100000), como de graus C elsius para
mostrado na Fig. 4.40. Fahrenheit.
192 Sistemas Digitais

► FAHRENHEIT VERSUS CELSIUS

Os Estados Unidos representam a temperatura espacial Mars Climate Orbiter, custando diversas
usando a escala Fahrenheit, ao passo que a maior centenas de milhões de dólares, foi destruída ao en­
parte do mundo usa a escala Celsius do sistema mé­ trar rápido demais na atmosfera de Marte. A razão:
trico. Presidentes e outros líderes americanos têm “um erro de navegação resultou de alguns comandos
desejado a mudança para o sistema métrico há quase da espaçonave terem sido enviados em unidades in­
tanto tempo quanto a existência dos Estados Unidos. glesas ao invés de terem sido convertidas para unida­
Muitas leis foram promulgadas ao longo dos séculos, des métricas." (Fonte: www.nasa.gov). Será que, se
sendo que a mais recente foi a Metric Conversion Acl todos os leitores deste livro que moram nos Estados
de 1975 (emendada diversas vezes desde então). Essa Unidos usassem a escala Celsius quando estivessem
lei designa o sistema métrico como sendo o sistema conversando, não iríamos acelerar a transição? As­
preferido de pesos e medidas para ser usado nas ati­ sim, em lugar de dizer “Hoje está fazendo um calor
vidades comerciais dos Estados Unidos. Mesmo as­ de noventa graus lá fora", diga “Hoje está fazendo
sim, a mudança para o sistema métrico tem sido lenta um calor de trinta e dois graus lá fora". Na realidade,
e atualmente poucos americanos sentem-se confor­ deveríamos dizer “Hoje está fazendo um calor de três
táveis com ela. O problema dessa transição lenta foi dezenas e dois graus lá fora" (você se lembra da ma­
pungentemente demonstrado em 1999 quando a nave neira correta de se fazer contagem do Capítulo I ?).

► EXEMPLO 4.11 M édia de temperatura


Lembre-se do Exemplo 4.3, no qual registra­
dores foram usados para memorizar o histó­
rico dos valores de temperatura dos três últi­
mos períodos de relógio. Queremos estender
esse sistem a para memorizar, não os três,
mas os quatro últimos valores. Querem os
também que o sistem a calcule a média dos
quatro últimos valores e que coloque esse va­
lor em uma saída Tmed. A média dos quatro
valores Ra, Rb, Rc e Rd é (Ra+Rb+Rc+Rd)/4.
Observe que dividir por quatro é o mesmo
que fazer um deslocamento de duas posições
(com um valor de entrada de deslocamento
de 0), como mostrado na Fig. 4.41. A

Figura 4.41 Sistema para determ inar a tempera­


tura média usando um registrador deslocador que
executa dois deslocam entos para fazer a divisão
por quatro.

Deslocador barrei*
Um deslocador barrei de N bits é um deslocador de N bits para uso geral q u e pode realizar
deslocam entos ou rotações de qualquer núm ero de posições. N o m om ento, por sim plicidade,
vam os considerar apenas deslocam entos à esquerda. Um deslocador barrei de oito bits pode
realizar deslocam entos de 1 posição, 2 posições, 3 posições, 4 posições, 5 posições, 6 p o si­
ções, ou 7 posições à esq u erd a (e naturalm ente 0 posições, significando que nenhum d e s­
locam ento deve ser realizado). P ortanto, um d eslo cad o r barrei de oito bits req u er apenas

* N. de T: Literalmente, deslocador barril, em português.


Componentes de Blocos Operacionais 193

três linhas de controle, digam os x , y e z , para especificar o valor do deslocam ento, xyz=000
pode sig n ificar nenhum deslocam ento, x y z =001 significará d eslocam ento de um a posição,
xyz=010, deslocam ento de duas posições, etc.
Poderíam os projetar esse deslocador barrei colocando um m ultiplexador 8x I à frente de
cada um a das oito saídas do deslocador, conectando xyz às entradas de seleção dos oito m ul-
tiplexadores e, em seguida, conectando as entradas de cada m ultiplexador com as entradas
adequadas do deslocador para cada configuração de x, y e z. A ssim , em cada m ultiplexador, a
entrada 10 (correspondendo a xyz=000 e significando ausência de deslocam ento) irá sim ples­
m ente receber a entrada do deslocador que está na m esm a posição que o bit de saída que está
sendo considerado. A entrada I I (correspondendo a xyz=001 e significando deslocam ento de
um a posição à esquerda) irá receber a entrada do deslocador que está um a posição à direita.
A entrada 12 (xyz=010, significando deslocam ento de duas posições à esquerda) irá receber a
entrada do deslocador que está duas posições à direita, e assim por diante.
M esm o que seja conceitualm ente sim ples, esse projeto exige fios dem asiados para serem
estendidos. Por outro lado, tam bém não se presta bem para ser am pliado com larguras m aio­
res de bit, com o no caso de um deslocador barrei de 32 bits: um m ultiplexador 32x 1 não pode
ser construído usando dois níveis de portas (A N D /O R ), porque portas com 32 entradas são
grandes dem ais para serem im plem entadas de form a eficiente c, ao contrário, devem ser im ­
plem entadas usando-se portas m enores dispostas em m últiplos níveis.
Um projeto m ais elegante de um deslocador barrei de
oito bits consiste em três deslocadores sim ples d ispos­ 1I
tos em cascata, com o m ostrado na Fig. 4.42. O prim eiro
pode realizar deslocam entos de quatro (ou nenhum a) p o ­
sh
8f « 4 in
sições à esquerda, o segundo, duas (ou nenhum a) posi­
ções à esquerda, e o terceiro, um a (ou nenhum a) posição
à esquerda. O bserve que os deslocam entos “som am -se” 1

entre si: deslocar duas posições à esquerda e então m ais sh « 2 in

um a resulta em um deslocam ento total de três posições.


A ssim , co nfigurando cada d eslo cad o r adequadam ente,
podem os obter qualquer deslocam ento com um valor to­ sh «1 in 0
tal de posições entre zero e sete. A conexão das entradas
8
de controle x, y e z c fácil: pense sim plesm ente em xyz
V .
com o sendo o núm ero binário que representa o núm ero
de deslocam entos, x representa um deslocam ento de qua­ Figura 4.42 Um deslocador bar­
tro posições, y representa duas posições e z, um a posi­ rei de oito bits (apenas desloca­
ção. D esse m odo, sim plesm ente conectam os x à entrada mento à esquerda).
do deslocador de quatro posições, y à entrada do de duas
posições e z à entrada do de um a posição.
O projeto acim a exam inou um deslocador barrei que podia realizar deslocam entos apenas
para a esquerda. Podem os facilm ente am pliar o deslocador barrei para incluir am bos os des­
locam entos à esquerda e à direita. Vamos substituir os deslocadores à esquerda internos por
deslocadores que podem fazer deslocam entos à esquerda e à direita, sendo que cada um tem
um a entrada de controle para indicar o sentido do deslocam ento. E ntão, o deslocador barrei
tam bém terá um a entrada de controle de sentido, que estará conectada à entrada de controle
de sentido de cada um dos deslocadores internos.

4.5 C0MPARAD0RES
Freqüentem ente, querem os com parar dois núm eros binários para ver se são iguais ou se um de­
les 6 m aior do que o outro. Por exem plo, poderem os querer soar um alarm e se um term ôm etro,
que mede a tem peratura corporal de uma pessoa, indica um a tem peratura superior a 39 graus
Celsius. Os com ponentes com paradores realizam tais com parações entre núm eros binários.
194 Sistemas Digitais

Comparador de igualdade (identidade)


Um comparador de igualdade (equality cornparator) de N bits (algum as vezes ch am ad o
de comparador de identidade) é um com ponente de bloco operacional que com para duas
entradas A e B de N bits, produzindo na saída um sinal de controle igual a 1 quando as duas en ­
tradas são iguais. D uas entradas de N bits, digam os duas entradas de quatro bits A=a3a2ala0
e B=b3b2blb0, serão iguais se cada par de bits correspondentes forem iguais. A ssim , A=B se
a3=b3, a2=b2, a l= b l e aO=bO.
Seguindo o processo de projeto lógico com binacional da Tabela 2.5, com eçam os obtendo
a função de um com parador de igualdade de quatro bits na form a de um a equação:
eq = (a3b3+a3'b3') * (a2b2+a2' b2•) * ( a lb l+ a l' b l ') *
(aObO+aO'bO')
C ada term o detecta se os bits correspondentes são iguais, ou seja, se am bos os bits são
1 ou se am bos os bits são 0. A s expressões que estão d entro dos parênteses representam o
com portam ento de um a porta X N O R (lem bre-se do C apítulo 2 que um a porta X N O R produz
um 1 de saída quando os dois bits de entrada da porta são iguais). A ssim , podem os substituir
a equação anterior pela equação equivalente:
eq = (a3 xn o r b3) * (a2 xnor b2) * (a l x n o r b l) * (a0
xn o r bO)
C onvertem os essa equação no circuito da Fig. 4.43.

a3 b3 a2 b2 a1 b1 aO bO

a3 a2 a1 aO b3 b2 b1 bO
Comparador de igualdade
de quatro bits
eq

(b)

Figura 4.43 C om parador dc igualdade: (a) estrutura interna e (b) sím bolo de diagram a de
blocos.

N aturalm ente, poderíam os ter construíd o o co m p arad o r partindo de um a tabela-verdade,


m as isso se ria m u ito trab alh o so no caso de um c o m p a rad o r gran d e, j á q u e h av eria d em a­
siad as linhas p ara q ue a tab ela-v erd ad e fo sse trab alh ad a facilm en te à m ão. U m a a b o rd a ­
gem que usa tab ela-v erd ad e en u m era todas as possíveis situações em q u e os bits são todos
iguais, j á q ue so m en te essas situ açõ es têm um 1 na co lu n a d a saíd a eq. N o c a so de dois
núm eros de q u atro bits, um a dessas situ açõ es será 0000=0000. U m a outra será 0001=0001.
C laram ente, há tantas situações q u an to s são os núm eros b inários de q u atro b its-isto signi­
fica que há 2 = 1 6 situações em que am b o s os núm eros são iguais. N o caso de dois núm eros
de oito bits, há 256 situ açõ es d e igualdade. N o caso de dois núm eros de 32 bits, há quatro
b ilhões de situ açõ es de igualdade. U m c o m p a rad o r co n stru íd o seg u n d o e ssa ab o rd ag em
será grande se não m inim izarm os a equação. P o r outro lado, essa m in im ização será difícil
devido à g rande q u an tid ad e de term os. O nosso projeto, q u e se baseou em portas X N O R s,
p arece ser m uito m ais sim p les e p o d e ser am p liad o facilm en te p a ra en trad as q u e tenham
um a largura elevada de bits.
Componentes de Blocos Operacionais 195

Comparador de magnitude - usando propagação do bit de transporte ( c a rry -rip p le )


Um comparador de magnitude de N bits é um com ponente de bloco operacional que co m ­
para clois núm eros binários A e B e indica se A>B. A=B ou A<B.
Já vim os diversas vezes que, quando se com eça o projeto de certos com ponentes de blo­
cos operacionais a partir de um a tabela-verdade, essa se torna grande dem ais. Em lugar disso,
vam os projetar um co m p arad o r de m agnitude analisando com o nós com param os núm eros
à m ão. C onsidere a com paração de dois núm eros de quatro bits A =a3a2ala0 e B=b3b2blb0.
C om eçam os olhando os bits de ordem m ais elevada de A e B, ou seja, a3 e b3. C om o eles são
iguais (am bos são 1), olham os então o próxim o p ar de bits, a2 e b2. N ovam ente, com o são
iguais (am bos são 0), olham os o próxim o par de bits, a l e b l. C om o a l> b l (1> 0), co n clu í­
m os que A>B.
A ssim , a com paração de dois núm eros binários é feita pela com paração que se inicia com
os pares de bits de ordem m ais elevada e segue até os de ordem m enos elevada. Se os bits de
um par forem iguais, precisarem os com parar o p ar seguinte, de ordem m enos elevada. Tão
logo os bits de um par forem diferentes, concluirem os que A>B se a i =1 e bi =0, ou que A<B
se bi =1 e a i =0. D esse m odo, projetam os um com parador de m agnitude usando a estrutura*
m ostrada na F is. 4.44.

a3 b3 a2 b2 a1 b1 aO bO

igt AgtB
leq AeqB
lit ■AltB

EstágioO Estágiol Estágio2 Estágio3


(a)


a3 a2 M1
a1 aO
UH
b3 b2 b1• —
bO
0- Igt AgtB
1- leq Comparador de magnitude de quatro bits AeqB
o- lit AltB

(b)
Figura 4.44 C om parador de magnitude de quatro bits: (a) estrutura interna usando
componentes idênticos em cada estágio e (b) símbolo de diagrama de blocos.

C ada estágio funciona co m o segue. Se in _ g t= l (significando que um estágio de ordem


m ais elevada determ inou que A>B), então este estágio não precisa co m p arar bits e sim ples­
m ente produz a saída o u t_ g t= l. Do m esm o m odo, se in _ l t= l (significando que um estágio
de ordem m ais elevada determ inou q ue A<B), então este estágio sim plesm ente produz a saída
o u t_ l t= l. Se in _ eq = l (significando que os pares de bits nos estágios de ordem m ais elevada
eram todos iguais), então este estágio deve com parar bits e gerar um a saída o u t_ g t= l se a= l
e b=0, um a saída o u t_ l t= l se a=0 e b= l, ou então um a saíd a o u t_ e q = l se a c b forem am bos
iguais a 1 ou 0.
Poderíam os obter a função de um bloco de estágio usando um a tabela-verdade com cinco
entradas. Por brevidade, no entanto, irem os sim plesm ente usar as seguintes equações que fo­
ram deduzidas da explicação anterior sobre o funcionam ento de cada estágio. O circuito para
cada um desses estágios resulta diretam ente dessas equações:

* N. de T: A exemplo de casos anteriores, alguns termos serão mantidos no original. Pode ser oportuno dar as seguintes indi­
cações: in (de input, entrada), out (de output, saída), gt (de greater than. maior do que), eq (de equal, igual) e It (de less than,
menor do que).
196 Sistemas Digitais

o u t_ g t = in _ g t + (in _ eq * a * b ')
o u t j t = i n _ l t + (in _ eq * a ' * b)
o u t eq = in eq * (a XNOR b)

1 0 1 1
a3 b3 a1 b1 a0 b0

1 1 , 1 ♦ 1 1
a b / a b a b
0.
ig t in_gt out_gt in_gt out_gt in_gt out_gt AgtB
leq- in_eq out.ea in_eq out„eq in_eq out_eq AeqB
llt : in jt o u tJ t\ in jt out_lt in_lt o u t jt AltB

Estágio3 Estágio2 Estágiol EstágioO


(a)

1 1 -0 % 1 1
a3 b3 a2 b2 a0 b0


a
1
b
I
a
í
b /
\
a
I
b
igt- in_gt out_gt in_gt out_gt in_gt out_gt AgtB
leq- in_eq out_eq in_eq out_eiq in_eq out_eq AeqB
llt : in jt o u t jt in_lt OUtJt\ in jt o u t jt AltB

Estágio3 Estágio2 Estágiol EstágioO


(b)

1 1 0 0
a3 b3 a2 b2 ai bl
1 1 * 1 w
a b a b a b T
ig t ■ in_gt out_gt in_gt out_gt in_gt out_ç
leq- in_eq out_eq in_eq out_eq in_eq O U t_ € q
llt : in jt o u t jt

Estágio3
in_lt o u t jt

Estágio2
in_lt out_lt

Estágiol
V EstágioO
(c)
1 1 0 0 1 0
a3 b3 a2 b2 a1 b1 aó bO

1
a
1
b
1
a b
I í
a b
1
a b (
0.
ig t in_gt out_gt in_gt out_gt in_gt out_gt in_gt out Jt
leq- in_eq out_eq in_eq out.eq in_eq out_eq in_eq out_eq
llt in jt o u t jt in lt out lt in jt o u t jt in lt out lt\

Estágio3 Estágio2 Estágiol EstágioO


(d)

Figura 4.45 A propagação interna de um com parador de magnitude.

A Fig. 4.45 m ostra o funcionam ento desse com parador para as entradas A=1011 e B=1001.
Podem os ver que o com portam ento do com parador consiste em quatro estágios:

• N o Estágio3, m ostrado na Fig. 4.45(a), com eçam os fazendo na entrada externa Ie q = l,


obrigando o com parador a fazer a com paração. O Estágio3 tem in _ e q = l e. com o a3= l e
b3=l. então o u t_ eq irá se tornar 1, ao passo que o u t_ g t e o u t_ l t serão 0.

• N o Estágio2 , m ostrado na Fig. 4.45(b), vem os que, com o a saída o u t_ eq do Estáigio3 está
conectada à entrada in _ eq do Estágio2 , então a in _ eq do Estágio2 será 1. C om o a2=0 e
b2=0. então o u t_ eq irá se tornar 1, ao passo que o u t_ g t e o u t_ l t serão 0.
Componentes de Blocos Operacionais 197

• N o Estágio / , m ostrado na Fig. 4.45(c), vem os que, com o a saída o u t_ eq do Estâgio2 está
conectada à entrada in _ eq do Estágio / , então a in_eq do Estágio 1 será 1. C om o a l = l e
bl=0. então o u t_ g t irá se tornar 1, ao passo q u e o u t_ eq e o u t_ l t serão 0.

• N o EstágioO, m ostrado na Fig. 4.45(d), vem os que as saídas do Estágio1 obrigam in _ g t


do EstágioO a ser 1, o que diretam ente força o u t_ g t d o EstágioO a ser 1, e o u t_ e q e
o u t_ l t a serem 0. O bserve que os valores de a0 e b0 são irrelevantes. C om o as saídas do
EstágioO estão ligadas às saídas externas do com parador, AgtB será 1, ao passo que AeqB
e Al tB serão 0.

C om o o resultado propaga-se através dos estágios de m aneira sem elhante à de um som a-


dor com propagação do bit de transporte de “ vai u m ”, um com parador de m agnitude, assim
construído, é freqüentem ente referido com o tendo um a im plem entação do tipo “com propa­
gação de bit de transporte” , em bora na realidade o que está se propagando não seja um bit
de transporte.
O com parador de m agnitude de quatro bits pode ser conectado facilm ente a outro com pa­
rador de quatro bits para construir um com parador de m agnitude de oito bits, e desse m odo
tam bém outros com paradores de qualquer tam anho, sim plesm ente co n ectando as saídas de
com paração de um com parador (AgtB, AeqB e Al tB) às entradas de com paração do próxim o
com parador ( I g t , Ieq e II t) .
Se cada estágio for construído com dois níveis de lógica e um a porta tiver um atraso de 1
ns, então cada estágio lerá um atraso de 2 ns. A ssim , o atraso d o com parador de m agnitude
de quatro bits, com propagação de bit de transporte, terá 4 estágios * 2 ns/estágio = 8 ns. Um
com parador de 32 bits construído dessa form a terá um atraso de 32 estágios * 2 ns/estágio =
64 ns.

► E X E M P L O 4.12 D e te r m in a n d o o m e n o r d e d o is n ú m e r o s u s a n d o u m c o m p a r a d o r

Querem os projetar um com ponente com binacional que toma duas entradas A e B de oito bits. e
produz uma saída C de oito bits que é a menor entre A e B. Podemos usar um comparador de mag­
nitude e um multiplexador 2xl de oito bits para im plem entar esse componente, como mostrado
na Fii». 4.46.

Um com ponente combinacional para determ inar o menor entre dois números; (a)
F ig u r a 4 .4 6
projeto interno usando um comparador de magnitude e (b) símbolo de diagrama de blocos.

Se A<B. a saída Al tB será 1. Nesse caso, queremos que A passe através do multiplexador. As­
sim, conectamos Al tB à entrada de seleção do multiplexador 2x1 de oito bits e A à entrada 11 do
multiplexador. Se Al tB for 0, então AgtB=l ou AeqB=l. Se AgtB=l, iremos querer que B passe. Se
AeqB=l, poderemos passar A ou B (pois são iguais). Optamos por passar B. Então, devemos sim ­
plesmente conectar B à entrada 10 do multiplexador 2x1 de oito bits. Em outras palavras, se A<B,
passaremos A e, se A não for menor que B. passaremos B.
198 Sistemas Digitais

O bserve que tornam os a entrada de controle Ieq do co m p arad o r igual a 1, e as entradas


I g t e II t iguais a 0. E sses valores obrigam o co m p arad o r a co m p arar as suas entradas de
dados. ◄

4.6 CONTADORES
U m contador de N bits c um com ponente construído a partir de um a extensão de um regis­
trador de N bits, que pode increm entar ou decrem en tar o próprio valor a cad a ciclo de reló ­
gio, quando um a entrada de controle de habilitação de contagem é 1. Incrementar significa
ad icionar 1, decrementar sig n ifica subtrair 1. U m co n tad o r que pode in crem en tar é conhe­
cido co m o contador crescente (np-counter ), um co n tad o r que pode d ecrem en tar e co n h e­
cido co m o contador decrescente ( down-counter ) e um c o n tad o r que pode in crem en tar e
decrem entar é conhecido com o contador crescente/decrescente (up-down-counter). A ssim ,
um co n tad o r crescen te de quatro bits produz a seguinte seqüencia: 0000, 0001, 0010, 0011,
0 1 0 0 .0 1 0 1 ,0 1 1 0 ,0 1 1 1 , 1000, 1001, 1010. 1011, 1100, 1101, 1110, 1111,0000, 0001, etc. O b ­
serve que o contador dá um a volta completa retornando do valor m ais alto (1111) a 0. Do
m esm o m odo, um contador decrescente dá um a volta com pleta indo de 0 para o valor m ais
elevado. U m a saída de controle do contador, freqüentem ente cham ada de contagem termi­
nal , ou t c (terminal counter ), torna-se 1 durante o ciclo de relógio no qual o contador atinge
seu últim o (term inal) valor de contagem , após o que o contador reto rn a ao prim eiro valor da
contagem .
A Fig. 4.47 m ostra o sím bolo para diagram a
de blocos de um contador crescente de quatro bits. cnt Contador crescente de 4 bits
Q uando c n t= l, o contador increm enta o seu pró­ > tc C
prio valor a cada ciclo de relógio. Q uando cnt= 0,
o contador m antém o seu valor corrente. D urante o
ciclo em que o contador vai retornar de 1111 para
F ig u ra 4.47 Símbolo para diagram a de
0000, o contador faz tc = l durante aquele ciclo c,
blocos de um contador crescente de qua­
no próxim o ciclo, faz tc retornar a 0.
tro bits.

Contador crescente
Podem os p rojetar um co n tad o r crescente de N
bits usando o processo de projeto de registrado­
res descrito na T abela 4.1 - o valor increm en­
tado do registrador irá alim entar um a entrada de
m ultiplexador e as linhas de controle do co n ta­
dor serão m apeadas para as linhas de seleção do
m ultiplexador. U m a vista m ais sim p les de um
projeto de contador crescente está m ostrada na
Fig. 4.48, na qual se assum e que há um co m p o ­
nente increm entador para som ar 1 ao valor co r­
rente. Q uando cn t= 0 , o registrador deve m anter
o seu valor corrente. Q uando c n t= l, o registra­
Projeto interno de um conta­
F ig u ra 4.48
dor deve ser carregado com o seu valor corrente
dor crescente de quatro bits.
m ais 1. N ote que a p orta A N D de quatro entra­
das obriga a contagem term inal tc a tornar-se 1
quando o contador chega a 1111.

Incrementador
Precisam os projetar um circuito com binacional para o contador crescente. P oderíam os sim ­
plesm ente usar um som ador de N bits, colocando na entrada B o valor 0001 e um 0 na entrada
Componentes de Blocos Operacionais 199

de “vem um ". N o entanto, usar um som ador de N bits é dem ais


transportes: 0 1 1
porque não precisam os de toda a lógica envolvida em som ador
0 0 11
de N bits, um a vez que B sem pre será ap en as 0001. Em lugar naA “
1IOU
disso, observe, na Fig. 4.49, que so m ar 1 a um núm ero binário XZ i1
usado +
envolve apenas dois bits por coluna, e não três, com o qu an d o 0 0 10 0
dois núm eros binários quaisquer são som ados.
L em bre-se de que um m eio-som ador adiciona dois bits (veja Figura 4.49 Som ar 1 a
a S eção 4.3). A ssim , um contador crescente sim ples poderia ser um núm eros binário re­
co n stru íd o usan d o m eio s-so m ad o res, co m o m o strad o na Fig. quer apenas dois bits por
4.50. coluna.

a3
1-
a
r
b
a2

a
j
1
b
31
,r
a
i—
i

b
a0

a
a1
T
b O
uh
a3 a2 a1 aO
T3
CO

MS MS MS MS C
+1
Q>
co s co s co s co s E co s3 s2 s1 sO
Q>

i _ r ^ O
O

co s3 s2 S1 sO r m j
(b)
1 1 (a)

Figura 4.50 Contador crescente de quatro bits: (a) projeto interno e (b) sím bolo para diagrama
de blocos.

Em lugar disso, podem os projetar um


co n tad o r crescente usando o processo de
p ro jeto lógico co m b in acio n al do C a p í­
tulo 2. C om eçam os com a tabcla-vcrdadc,
m ostrada na Fig. 4 .5 1. O b tem o s a saída
de cada linha sim plesm ente som ando 1 ao
núm ero b in ário co rresp o n d en te que está
na co lu n a de en trad as na m esm a linha.
Em seguida, deduzim os um a equação para
cada co lu n a de saída. P or exem plo, p o ­
dem os facilm ente ver que a equação para
c0 ê cO=a3a2alaO . P odem os tam bém ver
facilm ente q ue s 0 = a 0 '. D evem os deduzir
as equações das dem ais saíd as e, em se ­
guida, im plem entar um circuito para cada
um a delas. O contador crescente resultante
terá um atraso total de apenas dois níveis
de portas, o que é um atraso inferior ao do
contador crescente da Fig. 4.50, co n stru ­
ído com m eios-som adores.
Poderíam os usar o m esm o processo de
Figura 4.51 Tabela-verdade para um incremen-
p ro jeto lógico com binacional para co n s­
tador de quatro bits.
truir increm entadores m aiores. L em bre-se
que dissem os na Seção 4.3 que a co n stru ­
ção de som adores, usando o processo de projeto lógico com binacional, não era m uito prática.
N o entanto, construím os um incrcm cntador usando esse processo. U m a diferença chave a ser
observada é que um som ador de quatro bits tem oito entradas, ao passo que um increm enta-
dor de quatro bits tem apenas quatro entradas. A ssim , a partir do processo de projeto lógico
200 Sistemas Digitais

com binacional, poderem os construir increm entadores com larguras m aiores usando im ple­
m entações com lógicas de dois níveis. N atu ralm en te, em algum ponto, m esm o o núm ero
de entradas de um increm entador torna-se grande dem ais. N esse caso, poderem os encadear
increm entadores m enores para form ar um increm entador maior.

► EXEMPLO 4.13 Contador crescente usado no display acima do espelho retrovisor


Nos Exemplos 4.4 e 4.6, assumimos que quando se
apertava o botão de modo, as entradas xy iriam seguir
a sequência 00, 01, 10, 11 voltando a 00 novamente.
Um projeto simples para se conseguir tal sequência,
assum indo que a entrada de modo é 1 durante exa­
tamente um ciclo de relógio a cada aperto do botão
(veja Exemplo 3.9), utiliza um contador crescente,
como mostrado na Fig. 4.52. ◄ Figura 4.52 Seqüenciador para as en­
tradas xy do display colocado acima do
espelho retrovisor.

► EXEMPLO 4.14 Gerador de pulsos de 1 Hz usando um oscilador de 256 Hz


Suponha que tenhamos um oscilador de 256 Hz, mas
gostaríamos de ter um sinal com pulsos de l Hz. Po­
deremos converter o sinal de 256 Hz em um sinal p cnt contador crescente de 8 bits
de 1 Hz usando um contador de oito bits. Esse con­ > tc C
osc
tador retorna a zero a cada 256 ciclos. Portanto, po­ (256 Hz)
demos simplesmente conectar o sinal do oscilador à P y (não usado)
(1 Hz)
entrada de relógio do contador, m anter a entrada cnt
do contador em 1 e então usar a saída tc do contador Figura 4.53 Divisor de relógio.
como sinal de pulsos, como m ostrado na Fig. 4.53.
Um sinal de 1 Hz pode ser útil para acionar um reló­
gio de horas, por exemplo, já que 1 Hz significa um
pulso por segundo. ◄

Contador decrescente
U m co n tad o r d ecrescen te pode ser projetado
de form a sem elh an te à de um co n tad o r c re s­
cente, su b stitu in d o o in c re m e n ta d o r p o r um
d ecrem en tad o r, co m o m o strad o na Fig. 4 .5 4
p ara o caso d e um c o n ta d o r d e c re sc e n te de
q u a tro bits. U m d e c re m e n ta d o r p o d eria ser
p ro jetad o d e form a sim ila r a um in crem en ­
tador, co m eçan d o com um a tab ela-v erd ad e,
co m o a da Fig. 4 . 5 1. N ote q ue a saída t c de
contagem term inal to rn a-se 1 q u an d o o c o n ­
tad o r d ec re sc e n te chega a 0000, im p lem en ­
tado com um a porta N O R (lem b re-se de que
a porta N O R d á saída 1 quando todas as suas Figura 4.54 Projeto interno de um contador
en trad as são 0). A razão do co n tad o r decres- decrescente de quatro bits.
cen te d etectar 0000 para tc , ao invés de 1111,
com o no co n tad o r crescente, é q ue um co n ta­
d o r decrescen te retorna ao início d a contagem d ep o is d e 0000, com o na seg u in te seqíiência
de contagem : 0100, 0011, 0010, 0001, 0000, 1111, 1110,...
Componentes de Blocos Operacionais 201

Contador crescente/decrescente
Contador crescente/decrescente de 4 bits
Um c o n ta d o r c re sc e n te /d e c re sc e n te
pode co n tar tanto p ara cim a (co n ta­
gem crescente) com o para baixo (con­ dir í 2x1
f
O
tagem d ecrescen te). E le re q u e r um a
entrada de sinal d i r para indicar a d i­
clr
reção da contagem , além do sinal de clr
cnt
h abilitação de contagem c n t. Vamos ld Registrador de 4 bits

definir d ir= 0 com o significando uma >


co n tag em crescen te, e d i r = l com o
decrescente. A Fig. 4.55 m ostra o pro­ 1
je to desse co n tad o r crescentc/dccres- +1
cente de quatro bits com um a entrada
/
de controle de clear ( reset) síncrono.
1 2x1 O
Um m u ltip lex ad o r 2 x l d eix a passar
ou o valor d ecrcm entado ou o incre­
m entado, com d i r fazendo a seleção
entre os dois: d ir= 0 (contagem cres­
Figura 4.55 Projeto de um contador crescente/de­
cente) faz passar o valor increm entado
crescente de quatro bits.
e d i r = l (contagem decrescente) deixa
passar o valor decrcm entado. O valor escolhido, depois de passar através do m ultiplexador,
é carregado no registrador de quatro bits se c n t= l. O sinal d i r tam bém seleciona a saída ou
da porta N O R ou da A N D . que será passada para a saída externa de contagem term inal tc
- quando di r=0 (contagem crescente) a A N D será selecionada, ao passo que quando di r= l
(contagem decrescente) a N O R será a escolhida.
A lternativam ente, poderíam os projetar um contador crescente/decrescente usando o pro­
cesso de projeto da S eção 4.2, conectando diretam ente as saídas do increm entador e do de-
crem enlador a m ultiplexadores colocados à frente de cada flip-flop c m apeando os sinais de
controle cl r, c n t e di r para as linhas de seleção do m ultiplexador.
O bserve que acrescentam os tam bém um a en trad a de controle c l r , que poderia ter sido
acrescentada aos contadores crescente e decrescente anteriores. Q uando está em 1, essa en ­
trada faz o reset síncrono do registrador, ou seja, o b rig a as saídas do reg istrad o r a serem
todas 0 na borda de subida de relógio. U sam os um registrador de quatro bits com clear para
que o contador pudesse dispor da operação de clear.

► EXEMPLO 4.15 Seqüenciador luminoso


Q uerem os projetar um sistem a com oito lâmpadas
enfileiradas, de modo que as lâmpadas sejam acesas,
uma de cada vez, da direita para a esquerda e man­
tenham-se repetindo essa sequência de iluminação à
taxa de uma lâmpada por um segundo. Esse painel
luminoso poderá ser atrativo se for colocado no lado
de fora de um restaurante ou cinema, por exemplo.
Por simplicidade, assum im os que temos um os-
cilador que gera um sinal de relógio de l Hz (signi­
ficando uma borda de subida por segundo). Iremos
conectar esse relógio a um contador crescente de três
bits, e ligar as três saídas do contador a um dccodifi- Figura 4.56 Seqüenciador luminoso.
cador 3x8, como mostrado na Fig. 4.56.
Quando o sistema é energizado, ele contará para cima (não sabemos qual era o valor inicial do
contador, mas isso realmente não importa), retom ando de 111 a 000. Não necessitamos da saída
tc neste exemplo.
202 Sistemas Digitais

Observe que usamos um contador de três bits com um decodificador e não um contador de oito
bits, mesmo que houvesse oito saídas. Um contador de oito bits iria gerar a sequência 00000000,
00000001, 00000010...... 11111110,11111111. Essa sequência não é a desejada. M

Contador com carga paralela


F re q ü e n te m e n te , os c o n ta d o res vêm
com a cap acid ad e de inicialização do
valor de contagem . Isso ê conseguido
c a rre g a n d o -se o re g istra d o r d o c o n ­
tad o r com dados em paralelo. A Fig.
4.57 m ostra o projeto de um contador
crescente de quatro bits com carga pa­
ralela. Q uando a entrada de controle 1d
é 1, o m ultiplexador 2x1 d eix a passar
a entrada L com os dados a serem car­
regados; quando ld é 0, o m ultiplexa­
dor deixa passar o valor increm entado.
A lém disso, fazem os um a operação O R
com os sinais 1d e e n t do contador para
g erar o sinal de carga do registrador.
Q uando e n t é 1, o valor increm entado Figura 4.57 Projeto interno de um contador cres­
é carregado. Q uando 1d é 1, os dados da cente de quatro bits com carga paralela.
carga paralela são carregados. M esm o
que e n t seja 0, ld = l fará o registrador
1000
ser carreg ad o . De m odo sem elhante,
um co n tad o r decrescente ou um cres-
1
cente/decrescente poderia ser am pliado ld
para perm itir carga paralela.
ent Contador decrescente
A carga paralela é útil quando que­ de 4 bits
rem os g erar um sinal pulsado que não > tc C
cik
pode se r o b tid o d ire ta m e n te q u an d o
se deixa o co n tad o r reto rn ar ao valor
(n ã o usado)
inicial pulsando a sua saída tc natural­
m ente. Um co n tad o r de N bits retorna Figura 4.58 Um esquem a de contador
natural m ente a seu valor inicial a cada que produz um pulso t c a cada nove
„V
2 ciclos. O que fazer se quiserm os um ciclos.
pulso a cada X ciclos, sendo que X não é
uma potência de 2? Por exem plo, digam os que tenham os um contador decrescente de quatro
bits, que norm alm ente pulsa a saída t c e retorna ao início a cada 16 ciclos, e suponha que
queiram os um pulso a cada 9 ciclos. Podem os conseguir isso, fazendo um a carga paralela em
L com o valor 9 m enos 1, ou seja. 8 (1000), e conectando a saída tc à entrada de controle de
carga 1d, com o m ostrado na Fig. 4.58. Q uando o contador atinge seu m enor valor (0000), tc
irá se tornar 1, obrigando a entrada ld a se tornar 1. A ssim , no próxim o ciclo de relógio, o
contador irá carregar 1000, ao invés de fazer um retorno ao valor inicial 1111. (O bservação:
a carga ocorre no próximo ciclo, não no atual, porque tc m uda para 1 após a borda de subida
de relógio, de m odo que o novo valor de ld não estará disponível até a próxim a borda de
relógio.) D esse m odo, o contador iria m ostrar a seqüência 8, 7 ,6 , 5 ,4 , 3 ,2 , 1,0 , pulso em tc
e então vai para 8. A razão pela qual carregam os 9 m enos 1, ao invés de 9, m esm o que q uei­
ram os um pulso a cada 9 ciclos, é porque devem os lem brar que o 0 faz parte da seqüência de
contagem , do m esm o m odo que contar de form a decrescente de 15 a 0 tom a 16 ciclos.
Podem os usar um contador crescente para o m esm o propósito, m as o valor de carga deve
ser igual ao total de ciclos m enos o núm ero de ciclos desejados. A ssim , no exem plo anterior.
Componentes de Blocos Operacionais 203

usaríam os um valor total de 16 - 9 = 7 (0111). O contador m ostraria a seqüência 7, 8, 9, 10,


11, 12, 13, 14, 15, pulso em tc , e então vai para 7.

► EXEMPLO 4.16 Display de contagem regressiva para véspera de ano novo


No Exemplo 2.30, utilizamos um microprocessador para gerar uma saída, com os números 59 a
0, e com base nessa saída usamos um decodificador para acender uma entre 60 lâmpadas. Neste
exemplo, substituiremos o microprocessador por um contador decrescente de carga paralela para
realizar a contagem de 59 até 0. Suponha que tenhamos à disposição um contador decrescente de
oito bits, que pode contar de 255 até 0. Precisamos carregar 59 e então decrementar. Assuma que
uma pessoa pode apertar um botão chamado r e s e t para carregar o valor 59 no contador, e então
mover uma chave decrem entar da posição de 0 (não contar) para a posição 1 (contar), para come­
çar a contagem regressiva. A implementação do sistema está mostrada na Fig. 4.59.

Figura 4.59 Sistem a de contagem regressiva para Feliz Ano Novo, usando um contador de­
crescente.

Observe que o sinal t c é a nossa indicação de “Feliz Ano Novo” . Conectam os esse sinal a
uma saída chamada fo g o s_ d e_ arti f i ci o e assumimos que ela ativa um dispositivo que acende os
fogos de artifício. Feliz Ano Novo!

► EXEMPLO 4.17 Gerador de pulsos de 1 Hz usando um oscilador de 60 Hz


No Brasil, a eletricidade que chega às casas opera na forma de uma corrente alternada com uma
frequência de 60 Hz. Muitos aparelhos eletrodomésticos convertem esse sinal em um sinal digital de
60 Hz e, então, o de 60 Hz em um sinal de l Hz, para
acionar um relógio horário ou outro dispositivo que
precisa dispor do tempo em nível de segundo. Diferen­ contador crescente
temente do Exemplo 4.14, não podemos simplesmente de 6 bits
usar um contador com uma largura de bits em particu­ osc tc

T
lar, já que nenhum contador retorna ao início depois (60 Hz)
de 60 ciclos - um contador de cinco bits retorna a zero
depois de 32 ciclos, ao passo que um de seis bits re­
torna a zero depois de 64 ciclos. Vamos começar com
um contador de seis bits, que conta de 0 a 63 e então
retorna a 0. Iremos acrescentar alguma lógica extra,
como mostrado na Fig. 4.60. A lógica adicional deve (1 Hz)
detectar quando o contador chega a 59 e então obrigar
o contador a retomar a 0, na próxima borda de subida Figura 4.60 Divisor de relógio.
204 Sistemas Digitais

de relógio, ao invés de deixar o contador continuar até 60 e mais adiante. Cinqüenta e nove na forma
de um número binário de seis bits é 111011. Assim, a porta AND da Fig. 4.60 detecta 111011, caso em
que a saída da porta AND obriga a entrada de clear (ou reset) ser 1. Assumimos que a entrada clr tem
prioridade sobre a entrada de habilitação de contagem cnt do contador. Como a saída da porta AND
irá pulsar a cada 60 ciclos e a freqüência de entrada do relógio é 60 Hz, esse circuito converterá um
relógio de entrada de 60 Hz em um relógio de saída de 1 Hz. Um circuito que converte um relógio de
entrada em um novo relógio com uma freqüência menor é conhecido como divisor de relógio. ◄

Temporizador
Um uso com um para um contador é com o com ponente central dc outro dispositivo cham ado
de tem porizador. Um temporizador é um tipo especial de contador que m ede tem po. A m edi­
ção de tem po é um a tarefa m uito com um em sistem as digitais.
Um tipo de tem porizado r é baseado em um co n tad o r decrescente. A rm a­
N ó s carregam os 999,
e não 1000, porque zenam os um valor no contad o r e esperam os que a contagem term inal (0) seja
devem os le m b ra r que atingida. Se souberm os a freqüência do oscilador, então poderem os carregar
0 é parte d a contagem. o valor que corresponde a um intervalo de tem po desejado. P o r exem plo, su­
Tente co n ta r de 9 até ponha que queiram os saber quando passou um segundo, usando um contador
0, levantando um dedo que tem um a freqüência de relógio de 1 kH z. A ssim , carregarem os 999 (em
a cada vez que você binário, 1111100111) no contador e habilitarem os a contagem . D epois de 1 se­
d is s e r um número. gundo, o contador terá chegado a 0, e ativado a sua saída de contagem term inal,
Note que quando você avisando-nos que 1 segundo transcorreu. Um tem porizador pode repetir esse
ch eg a r a 0, dez dedos
processo autom aticam ente, usando a contagem term inal para recarreg ar auto­
estarão levantados.
m aticam ente o valor desejado de tem po (999, no nosso exem plo) no contador.
Esse tem porizador pode ser usado em qualquer tipo de relógio que forneça as horas. O nosso
tem porizador anterior, que foi usado para ligar um laser durante três ciclos (C apítulo 3), p o ­
deria ter sido construído usando um tem porizador com o com ponente, especial m ente se, ao
invés de desejar que o laser estivesse ligado durante três ciclos, tivéssem os desejado que ele
ficasse aceso por um período de tem po com o 1,5 segundo.
Um outro tipo de temporizador é baseado em um contador crescente. Damos reset nesse conta­
dor forçando-o a 0 e então habilitamos a contagem quando tiver início algum evento que queremos
cronometrar. Quando o evento termina, dcsabilitamos o contador, após o que o contador conterá o
número de ciclos que ocorreram durante o evento. Se soubermos a duração de um ciclo de relógio,
multiplicaremos o número de ciclos pela duração de um ciclo de relógio para obter a duração total
do evento. Por exemplo, se cronom etrarm os um evento obtendo 500 ciclos de relógio e se a fre­
qüência do oscilador do temporizador for 1 kHz, então a duração do evento será 500 ciclos * 0,001
s/ciclo = 0.5 s. Ilustraremos esse tipo de tem porizador usando um exemplo.

► EXEMPLO 4.18 Sistema de medição de velocidade de rodovia


M uitas rodovias e auto-estradas têm sistem as que medem a velocidade dos carros em diversos
pontos da estrada e enviam essas informações de velocidade a um com putador central. Essas in­
formações são usadas pelos agentes de manutenção da lei, planejadores de trânsito c na geração de
relatórios dc Internet e rádio sobre o tráfego.
Uma técnica de se medir a velocidade de um carro usa dois sensores, colocados abaixo da
estrada, como mostrado na Fig. 4 .6 1. Quando um carro está sobre um sensor, esse produz um 1
de saída; em caso contrário, ele produz um 0. As saídas dos sensores viajam através de fios sub­
terrâneos até a caixa do computador de medição de velocidade, algumas das quais estão acima do
solo e outras, abaixo. O medidor de velocidade determina a velocidade dividindo a distância entre
os sensores (que é fixa e conhecida) pelo tempo necessário para que um veículo viaje do primeiro
sensor até o segundo. Se a distância entre os sensores for 0,01 quilômetros e um veículo precisar
de 0,5 segundo para se deslocar do primeiro até o segundo sensor, então a velocidade do veículo
será 0,01 quilômetros / (0,5 segundo * (1 hora / 3600 segundos)) = 72 quilômetros por hora.
Componentes de Blocos Operacionais 205

(a)
a' b'

Figura 4.61 M edição das


velocidades de veículos em
uma rodovia por meio de um
sistem a de medição de velo­
cidade.

Para medir o tempo entre os sensores, construímos uma FSM simples que controla um tempo­
rizador de 16 bits, como mostrado na Fig. 4 .6 1. O estado SO força o tem porizador a 0. A FSM faz
uma transição para o estado 5 / quando um carro passa pelo primeiro sensor. O estado 57 dispara
o início da contagem crescente no temporizador. A FSM permanece em SJ até que o carro passe
pelo segundo sensor, causando uma transição para o estado 52. Esse estado 52 interrompe a con­
tagem e calcula o tempo decorrido usando a saída C do temporizador. Assumindo uma entrada de
relógio de l kHz no temporizador, significando que cada ciclo dura 0 .0 0 1 s, então o tempo será C *
0,001 s. Esse resultado seria então multiplicado por 0,01/3600 para obter a velocidade. Omitimos
os detalhes de implementação do cálculo da velocidade, o qual muito provavelmente seria imple­
mentado como programa em um microprocessador. ◄

4.7 MULTIPLICADORES - ESTILO ARRAY


Um multiplicador N xN é um com ponente de bloco operacional que m ultiplica dois núm eros
binários de N bits, A (o m ultiplicando) e B (o m ultiplicador), produzindo um resultado na
saída de ( N+N) bits. P or exem plo, um m ultiplicador de 8x8 faz o produto de dois núm eros
binários de oito bits e produz um resultado na saída de 16 bits. O projeto de um m ultiplicador
/Vx/Vcom dois níveis de lógica, usando o processo padrão de projeto lógico com binacional re­
sulta em um projeto dem asiadam ente com plexo, com o j á vim os anteriorm ente nas operações
de som a e com paração. Para m ultiplicadores com N m aior ou igual a quatro, precisam os de
um m étodo m ais eficiente.
P o d em o s c ria r um m u ltip lic a d o r d e tam an h o razoável im ita n d o a fo rm a d e re a liz a r­
m os a m u ltip lic a ç ã o à m ão. C o n sid e re a m u ltip lic a ç ã o de d o is n ú m ero s b in á rio s 0110 e
0011 à m ão:

0110 (o núm ero superior é cham ado de multiplicando)


0011 (o núm ero inferior é cham ado de multiplicador)
(cada um a das linhas abaixo é cham ada de produto parcial)
0110 (porque o bit m ais à direita do m ultiplicador é 1, e 0110*1=0110)
0110 (porque o segundo bit do m ultiplicador é 1, e 0110*1=0110)
0000 (porque o terceiro bit do m ultiplicador é 0, e 0110*0=0000)
+0000 (porque o bit m ais à esquerda do m ultiplicador é 0, e 0110*0=0000)

00010010 (o produto é a som a de todos os produtos parciais: 18, que é 6*3)

C ada produto parcial é facilm ente obtido fazendo um a op eração A N D do m u ltip lica­
dor corrente e o m ultiplicando. A ssim , a m u ltiplicação de d o is núm eros A (a 3 a 2 a la 0 ) e B
(b3b2blb0) pode ser representada com o segue:
206 Sistemas Digitais

► COMO FUNCIONA ? SENSORES DE CARROS EM RODOVIAS

Em uma auto-estrada, como um sensor de velocidade ou de se­


máforo sabe que um carro está presente em uma determinada
pista? Atualmente, o método principal usa o que é chamado de
laço indutivo. Um laço de fio é colocado um pouco abaixo do
pavimento - geralmente é possível ver os cortes, como mostrado
na Fig. 4.62(a). Esse laço de fio tem uma “indutância“ particular.
Indutância é um termo de eletrônica que descreve a oposição do
lio a uma mudança na corrente elétrica; indutâncias maiores sig­
nificam que o fio tem uma oposição maior a mudanças de cor­
rente. Quando se coloca um pedaço grande de ferro (como um
carro) próximo do laço de fio. a indutância é alterada. (Por quê?
Porque o metal perturba o campo magnético criado por uma cor­
rente que esteja variando no fio - mas isso está começando a
ficar além do nosso objetivo.) O circuito de controle do semá­
foro permanece verificando a indutância do tio (possivelmente
tentando alterar a corrente e vendo de quanto é real mente a sua
variação durante um certo período de tempo). Se a indutância for
maior que o normal, o circuito assumirá que um carro está em
cima do laço de fio.
Muitas pessoas pensam que os laços vistos nas pistas são
balanças que medem o peso - eu já vi ciclistas pulando sobre os
laços tentando mudar os sinais de um semáforo. Isso não fun­
ciona, mas asseguro que é divertido observá-los.
Outras pensam que os pequenos cilindros colocados nos
braços de suporte de semáforos, como o da Fig. 4.62(b). detec­
tam veículos. Geralmente são dispositivos que detectam sinais
especial mente codificados de rádio ou infravermelho, produzi­ (b)
dos por veículos de emergência, que obrigam o semáforo a fi­
Figura 4.62 (a) Laços indutivos para
car verde para o veículo de emergência (por exemplo, o sistema
detecção de veículo em uma estrada,
“Opticom“ da empresa 3M). Esses sistemas são um outro exem­
plo de sistemas digitais, reduzindo o tempo necessário para que (b) sensor de sinal, em itido por veí­
os veículos de emergência cheguem até o local de uma emergên­ culos de em ergência, que Ibrça o se­
cia. assim como reduzindo os acidentes que envolvem o próprio máforo de um cruzamento a se tornar
veículo de emergência, como quando avança um semáforo e verde para o veículo de em ergência
desse modo frequentemente salva vidas. que está se aproximando.

a3 a2 al a0
X b3 b2 bl b0

b0a3 b0a2 bOal bOaO ( p p i)


bla3 bla2 b la l blaO 0 (PP2)
b2a3 b2a2 b2al b2a0 0 0 (pp3)
+ b3a3 b3a2 b3al b3a 0 0 0 (pp4)

p7 p6 p5 p4 p3 P2 Pl p0

D epois de gerar os produtos parciais (ppL pp2 , pp3 e pp4), pela aplicação d a operação
A N D ao bit corrente do m ultiplicador juntam en te com cada bit do m ultiplicando, precisam os
sim plesm ente som ar todos esses produtos parciais. Podem os usar três som adores de larguras
variadas para calcular a som a. O projeto resultante está m ostrado na Fig. 4.63.
Esse projeto tem um tam anho razoável, cerca de três vezes m aior do que um som ador com
propagação de “ vai um ” . O projeto tam bém tem velocidade razoável. O atraso consiste no
Componentes de Blocos Operacionais 207

atraso de um a porta para a geração dos produtos parciais m ais os atrasos dos som adores. Se
cada som ador for do tipo com propagação de “ vai um ” , então o atraso do som ador de cinco
bits será 5*2= 10 atrasos de porta, o do som ador de seis bits será 6*2=12 atrasos de porta, e o
do som ador de sete bits será 7*2=14 atrasos de porta. Se assum irm os que o atraso total dos
som adores é sim plesm ente a som a dos atrasos dos som adores, então o atraso total seria assim
1 + 10 + 12 + 14 = 37 atrasos de porta. N o entanto, o atraso total de som adores com propaga­
ção de “vai um ” , quando encadeados entre si, é na realidade m enor do que a sua som a (veja
o E xercício 4.15).

a3 a2 a1 aO

Figura 4.63 Projeto interno de um multiplicador tipo array* de 4 x 4 bits.

M ultiplicadores m aiores, que terão m ais som adores encadeados, serão m ais lentos devido
aos atrasos m aiores. Projetos de m ultiplicadores m ais rápidos são possíveis, à cu sta de m ais
portas.

► 4.8 SUBTRATORES
Um subtrator de N bits é um com ponente de bloco operacional que tom a duas entradas biná­
rias A e B e produz um resultado S na saída igual a A-B.

Subtrator de números positivos apenas


A subtração é um pouco m ais com plexa quando consideram os resultados negativos, tal com o
5 - 7 = - 2 , porque até o m om ento não havíam os discutido a representação de núm eros ne­
gativos. Por enquanto, vam os assum ir que estam os lidando apenas com núm eros positivos,
de m odo que as entradas do subtrator e o resultado sem pre serão positivos. Esse poderia ser
o caso, por exem plo, do projeto de um sistem a que sem pre subtrai núm eros pequenos de nú­
m eros m aiores, com o ocorre quando estam os com pensando um a tem peratura am ostrada que
sem pre é m aior do que 25 graus, usando um pequeno valor de com pensação que sem pre será
m enor do que 5 graus.

* N. dc T: Arranjo, em inglês. Rcfcre-se à disposição matricial dos elementos da multiplicação.


208 Sistemas Digitais

O projeto cie um subtrator de N bits, usando o processo padrão de projeto lógico com bina-
cional, sofre do m esm o problem a de crescim ento exponencial do tam anho apresentado pelo
som ador de /V bits. (Veja a Seção 4.3.) Em vez disso, podem os ten tar novam ente im itar em
hardware a subtração feita à mão.
A Fig. 4.64 m ostra a subtração de núm eros binários feita “à m ão” . C o m eçando com a
prim eira coluna, vem os que a é m enor do que b (0 < 1), necessitando-se pedir em prestado
à coluna da esquerda. O resultado da prim eira coluna é então 1 0 - 1 = 1 (na base dez, dois
m enos um é igual a um ). A segunda coluna tem um 0 em a devido ao em préstim o leito pela
prim eira coluna, tornando a < b (0 < 1), o que leva a pedir em prestado à terceira coluna,
que deverá pedir em prestado à quarta coluna. O resultado da segunda coluna será então 10 -
1 = 1. A terceira coluna, devido ao em préstim o feito pela segunda coluna, tem um 1 em a,
que não é m enor do que b, de m odo que o resultado da terceira coluna será 1-1=0. A quarta
coluna tem a=0 devido ao em préstim o feito pela terceira coluna e, com o b tam bém é 0, o
resultado é 0-0=0.

primeira coluna segunda coluna terceira coluna quarta coluna


0 0 1 10 0 1 0
1 0 / ÍO X w X 0 x f 1 0 0 1 0

0 1 1 1 - 0 1 1 1 - 0 1 1 1 - 0 1 1 1

1 1 1 0 1 1 0 0 1 1
(a)
a3 b3 a2 b2 a1 b1 aO bO wi

wo s3 s2 s1 sO
(b) (c)

Figura 4.64 Projeto de um subtrator de quatro bits: (a) subtração feita “à mão”, (b) implementa­
ção da propagação do empréstimo usando subtratores completos com uma entrada de “pedido de
empréstimo” wi, e (c) símbolo de diagrama de blocos.

Com base no com portam ento recém descrito, poderem os criar o projeto interno de um sub­
trator completo combinacional para im plem entar o funcionam ento de cada coluna. Um subtrator
com pleto terá uma entrada wi para representar um pedido de em préstim o feito pela coluna ante­
rior, e uma saída wo para representar um pedido de em préstim o feito para a coluna seguinte, além
das entradas a e b e a saída s. (U sarem os a letra w para representar os em préstim os e não a letra b
porque a letra b já está sendo usada na entrada; o w vem do final da palavra horrow - emprestar,
em inglês.) Deixam os o projeto de um subtrator com pleto como exercício para o leitor.

► EXEMPLO 4.19 Calculadora de soma e subtração baseada em chaves do tipo DIP


No Exem plo 4.8. projetamos uma calculadora simples, que podia som ar dois números binários
de oito bits e fornecer um resultado de oito bits, usando chaves do tipo DIP para as entradas e um
registrador mais LEDs para a saída. Vamos estender aquela calculadora permitindo que o usuário
escolha entre as operações de soma e subtração. Vamos introduzir uma chave simples do tipo DIP,
como mais uma entrada do sistema, a qual determina o valor de um sinal f (de função). Quando
f=0, a calculadora deverá somar e quando f= l, a calculadora deverá subtrair.
Uma implem entação dessa calculadora usa um somador, um subtrator e um multiplexador,
como mostrado na Fig. 4.65. A entrada f escolhe qual saída de componente, som ador ou subtrator.
Componentes de Blocos Operacionais 209

deve ser passada através do multiplexador para as entradas do registrador. Quando o usuário aperta
e, o resultado da soma ou da subtração será carregado no registrador e exibido nos LEDs.
Esse exemplo assume que o resultado de uma subtração é sempre um número positivo, nunca
negativo. Assume também que o resultado está sempre entre 0 e 255.

Chaves do tipo DIP

o DDQDQDDQ DDQDDDDD
A
8
£
B ci
_0_
A
£ B wi
Somador de 8 bits Subtrator de 8 bits
co S wo S

Figura 4.65 C a l­
culadora de som a e
subtração baseada
em chaves do tipo
DIP de oito bits. A
entrada f seleciona
entre som a e sub­
tração.

► EXEMPLO 4.20 Conversor de espaço de cores - RGB para CMYK


Im agens coloridas são manipuladas por monitores de computador, câmeras digitais, escaneadores,
impressoras e outros dispositivos eletrônicos. Esses dispositivos tratam as imagens como sendo
compostas por milhões de minúsculos pixels (forma abreviada de “picture elements ”, elementos
de imagem, em inglês), os quais são pontos indivisíveis que representam partes muito pequenas
da imagem. Cada pixel tem uma cor, de modo que uma imagem é simplesmente uma coleção de
pixels coloridos. Um bom monitor de com putador pode suportar mais de dez milhões de cores
diferentes em um único pixel. Como pode um monitor criar uma cor exclusiva para cada pixel?
Em um método comum, usado no chamado monitor RGB, o monitor tem internamente três fontes
luminosas - vermelho, verde e azul. Qualquer luminosidade de cor pode ser criada adicionando-se
intensidades específicas de cada uma dessas três cores. Assim, para cada pixel, o monitor emite
intensidades específicas de vermelho, verde e azul naquela posição onde se encontra o pixel sobre
a tela, de modo que as três cores somam-se para criar a cor de pixel desejada. Cada cor básica (ver­
melho, verde e azul) é representada normalmente como um número binário de oito bits (cada um
abrange um intervalo de 0 a 255). Isso significa que cada cor é representada por 8+8+8=24 bits.
Um valor (R, G, B) de (0, 0 ,0 ) representa o preto. O valor (10, 10, 10) representa um cinza muito
escuro, ao passo que (200, 200, 200) representa um cinza claro. O valor (255, 0, 0) representa o
vermelho, ao passo que (100, 0, 0) representa um vermelho mais escuro (não intenso). O valor
(255, 255, 255) representa o branco. O valor (109, 35, 201) representa algum a mistura das três
cores básicas. A representação da cor, usando valores de intensidade de vermelho, verde e azul, é
conhecida como espaço de cores RGB (red, green, blue).
O espaço de cores RGB é excelente para os monitores de com putador e alguns outros disposi­
tivos, mas não é o melhor para outros, como as impressoras. A mistura das tintas vermelha, verde
e azul não produz o branco, mas pelo contrário o preto. Por quê? Porque tinta não é como a luz;
pelo contrário, a tinta reflete a luz. Assim, a tinta vermelha reflete a cor vermelha, absorvendo os
raios luminosos verdes e azuis. De modo semelhante, a tinta verde absorve os raios vermelhos e
azuis. A tinta azul absorve os raios vermelhos e verdes. Misture todas as tintas sobre o papel e a
210 Sistemas Digitais

mistura irá absorver toda a luz, refletindo nada e produzindo assim o preto. Portanto, as impresso­
ras usam um espaço de cores diferente, baseado nas cores com plem entares das cores vermelho,
verde e azul, correspondendo às cores ciano, magenta e amarelo. Esse espaço é conhecido como
espaço de cores CMY (cyan, magenta, yellow ). A tinta de cor ciano absorve o vermelho refletindo
o verde e o azul (a mistura das quais é o ciano). A tinta magenta absorve o verde, refletindo o ver­
melho e o azul (que é a cor magenta). A tinta amarela absorve o azul, refletindo o vermelho e o
verde (que é o amarelo).
Note que uma impressora
a cores pode ter três cartuchos
de tinta colorida, um ciano,
um magenta e um amarelo. A
Fig. 4.66 mostra os cartuchos
de tinta de uma impressora a
cores em particular. Algumas
im pressoras têm um único
cartucho de cores ao invés de
três. Esse cartucho contém
intem am ente compartimentos
separados de tinta para as três
cores.
Uma impressora deve con­
verter uma im agem recebida
em RGB para CMY. Vamos
projetar um circuito rápido
para realizar essa conversão.
Figura 4.66 Uma impressora a cores mistura tintas de cores
Dados os três valores de R, G
ciano, magenta e amarelo para criar qualquer cor. A figura mos­
e B de um pixel em particular,
tra o interior de uma impressora a cores com cartuchos dessas
as equações de C, M e Y são
Ires cores à direita, rotuladas de C, M e Y. Em lugar de misturar
simplesmente:
as três cores para fazer cinzas e preto, essas impressoras podem
C = 255 - R usar a tinta preta diretam ente (o cartucho grande à esquerda).
M = 255 - G Assim, consegue-se produzir uma cor preta de melhor aspecto e
Y = 255 - B
econom izar as tintas coloridas de maior custo.
(255 é o valor m áxim o para
um número de oito bits). Um
circuito para realizar essa con­
versão pode ser construído usando subtratores, como mostrado na Fig. 4.67.
Na realidade, a conversão precisa ser um pouco mais complexa. A tinta não é perfeita, signifi­
cando que a mistura de ciano, magenta e amarelo dá um preto que não se parece com o preto que
você poderia esperar. Além disso, as tintas coloridas são caras em comparação com a tinta preta.
Portanto, sempre que possível, as impressoras a cores usam tinta preta. Uma maneira de maximi­
zar o uso da tinta preta é separando o preto presente nos valores de C, M e Y. Em outros palavras,
um valor (C, M , Y) de (250. 200, 200) pode ser pensado como (200. 200, 200) mais (50, 0, 0). O
valor (200, 200, 200), que é um cinza escuro, pode ser gerado usando tinta preta. O valor restante
(50, 0, 0) pode ser produzido usando uma pequena quantidade de ciano e nenhuma tinta magenta
ou amarela, economizando assim tinta colorida preciosa. Um espaço de cores CMY estendido ao
preto é conhecido como espaço de cores CMYK (O “K” vem da última letra da palavra “ black”,
preto em inglês. Usa-se “K” e não “B’\ primeira letra de “ black”, para evitar confusão com o “B”
de “blue”, azul).
Desse m odo, um conversor de RGB para C M Y K pode ser descrito com o:
K = Mínimo (C, M, Y)
C2 = C - K
M2 = M - K
Y2 = Y - K
Componentes de Blocos Operacionais 211

Figura 4.67 Um conversor de RGB


para CMY.

Figura 4.68 Um conversor de RGB para CMYK.

em que C, M e Y já foram definidos antes. Desse modo, criamos o circuito da Fig. 4.68 para con­
verter um espaço de cores RGB em um CMYK. Usam os o componente RGBparaCMY da Fig.
4.67. Também usamos duas vezes o componente MIN que criamos no Exemplo 4.12 para deter­
minar o mínimo de dois números. Usando dois desses com ponentes pode-se calcular o mínimo
de três números. Final mente, usamos mais três subtratores para subtrair o valor de K dos valores
de C ,M e Y . Em uma impressora real, as imperfeições das tintas e do papel requerem ainda mais
ajustes. Um conversor de espaço de cores mais realístico multiplica os valores de R, G e B por uma
série de constantes, que podem ser descritas usando matrizes:
|C| |m00m01 m02 | |R|
jMj = jmlOmil ml2 |* |G|
jYj jm20m21 m22 | |B|
Discussões adicionais sobre esse conversor baseado em matriz estão além dos objetivos deste
exemplo. M

Representação números negativos: complemento de dois


O projeto de subtrator da seção anterior assum iu que estávam os lidando apenas com núm eros
de entrada e resultados de saída am bos positivos. N o entanto, em m uitos sistem as, podem os
obter resultados que são negativos e, de fato, os nossos valores de entrada podem eles pró­
prios ser negativos. D esse m odo, precisam os de um a m aneira para rep resen tar os núm eros
negativos usando bits.
Um a representação óbvia, m as não m uito eficiente, é conhecida com o sinal e magnitude.
N essa representação, o bit de ordem m ais elevada é usado apenas para representar o sinal do
núm ero, com 0 significando positivo e 1, negativo. O s dem ais bits de ordem inferior repre­
sentam a m agnitude ou m ódulo do núm ero. N essa representação e usando núm eros de quatro
bits, 0111 representa +7, ao passo que 1111 representa - 7 . A ssim , quatro bits podem rep re­
sentar os valores entre - 7 e +7. (N ote, a propósito, que tanto 0000 com o 1000 representam
0, o prim eiro representa +0 e o segundo, - 0 .) A representação em sinal e m agnitude é fácil
de ser com preendida pelas pessoas, m as não se presta facilm ente ao projeto de co m p o n en ­
tes aritm éticos sim ples com o som adores e subtratores. Por exem plo, se as entradas de um
som ador usarem a representação em sinal e m agnitude, então o som ador terá de exam inar o
212 Sistemas Digitais

bit de ordem m ais elevada e em seguida realizar internam ente um a adição ou um a subtração,
usando circuitos diferentes para cada.
E m lugar disso, o m étodo m ais com um de se rep resen tar núm eros negativos e realizar
subtração em um sistem a digital utiliza na realidade um artifício que nos perm ite usar um
somador para realizar a subtração. A utilização de um som ador para realizar a subtração
perm itirá que continuem os a usar o nosso som ador sim ples, além de utilizar o m esm o com po­
nente tanto na som a com o na subtração.
Estam os introduzindo
A chave para se fazer a subtração usando a adição está no que é conhecido
o com plem ento de com o complementos. Prim eiro, vam os apresentar os com plem entos no sistem a
dez somente com p ro ­ de num eração de base dez, de m odo que você possa se fam iliarizar com o co n ­
p ó sito s in tu itiv o s-n a ceito, m as tenha em m ente que a intenção é usar com plem entos de base dois, e
real idade, estarem os não de base dez.
usando o com plem ento C onsidere a subtração que envolve dois núm eros 1 9
de dois. de um dígito, na base dez, digam os 7 - 4. O resultado 2 8
deve ser 3. V am os defin ir o complemento de um núm ero A de um 3 7
dígito, na base dez, com o sendo o número cpie quando somado a A 4 6
resulta em dez . A ssim , o com plem ento de l é 9. de 2 é 8. e assim por 5 5
diante. A Fig. 4.69 m ostra os com plem entos dos núm eros de 1 a 9.
6 4
O que há de m aravilhoso com os com plem entos é que você pode
utilizá-los para realizar a subtração usando a som a. O núm ero que 7 3

está sendo subtraído é substituído pelo seu com plem ento, em seguida 8 2
faz-se a som a, e final m ente descarta-se o “vai um” . Por exem plo: 9 1

7 -4 — > 7 + 6 = 13 — > 13 = 3 Figura 4.69 Com ple­


mentos na base dez.
Substituím os 4 pelo seu com plem ento, 6, em seguida som am os
6 a 7 e obtivem os 13. Finalm ente, descartam os o “vai um ” , ficando 3, que é o resultado co r­
reto. A ssim , realizamos uma subtração usando a adição.

complementos

9 S o m a r o c o m p le m e n t o p r o d u z u m a r e s p o s ta
c o m e x a ta m e n te 10 a m a is - d e s c a r ta n d o a c o lu n a
0 d a s d e z e n a s o b té m - s e a r e s p o s ta c o rre ta .

Figura 4.70 Subtraindo por meio da adição-subtrair um número (4) é o mesmo que somar o com­
plemento (6) desse número e então descartar o “ vai um”, já que pela definição de complemento, o
resultado terá exatamente IO a mais. Afinal de contas, é assim que o complemento foi definido - o
número mais seu complemento deve ser igual a IO.

U m a reta m arcada com núm eros ajuda-nos a ver o porquê dos com plem entos funciona­
rem , com o m ostrado na Fig. 4.70.
O conceito de com plem ento fu nciona com q u alq u er núm ero de dígitos. D igam os que
querem os realizar um a subtração usando dois núm eros de dois dígitos, na base dez, com o 55
Componentes de Blocos Operacionais 213

- 30. O com plem ento de 30 será o num ero que adicionado a 30 resulta em 100. D esse m odo,
o com plem ento de 30 e 70. A som a 55 + 70 é 125. D escartando o “vai um ” fica 25, que e o
resultado correto de 55 - 30.
Desse modo, o uso dos com plem entos permite a realização da subtração usando-se a adição.
“N ão tão depressa!” você poderá dizer. Para determ inar o co m plem ento não tivem os de
realizar um a subtração? Sabem os que 6 é o com plem ento de 4 fazendo 10 - 4 = 6, e que 70 é
o com plem ento de 30 fazendo 100 - 30 = 70. Sendo assim , nós não levam os sim plesm ente a
subtração para um a outra etapa, a etapa do cálculo do com plem ento?
Sim . E xceto que na base d o is , p o d e m o s c a lc u la r o c o m p le m e n to de um
O com plem ento de dois m o d o m u ito m a is s im p le s - s im p le s m e n te in v e rte n d o to d o s o s b it s e s o m a n d o
pode s e r ca lcu la d o /. Por exem plo, considere o cálculo do co m plem ento do num ero 001 de três
sim plesm ente in ver­ bits, na base dois. O com plem en to será o núm ero que, quando adicionado a
tendo os bits e a cre s­ 001, resulta em 1000 - você provavelm ente pode ver que o com plem ento d e ­
centando 1-e vita n d o verá ser 111. U sando o m esm o m étodo de cálculo do com plem ento que utiliza­
assim a necessidade m os com a base dez, calcularem os o com plem ento de dois de 001 com o: 1000
de subtração quando - 0 0 1 = 111 - assim , 111 é o com plem ento de 001. No entanto, ocorre que se
se c a lc u la um co m p le­
sim plesm ente inverterm os todos os bits de 001 e adicionarm os 1. obterem os o
mento.
m esm o resultado! A inversão dos bits de 001 fornece 110: som ando 1 resulta
em 110+1 = 111 - o com plem ento correto.
D esse m odo, para realizar um a subtração, digam os 011 - 001, poderem os fazer o se ­
guinte:
011 - 001
— > 011 + ((0 0 1 )'+ 1 )
= 011 + (110+1)
= 011 + 111
= 1010 (descarte o “ vai um ” à esquerda)
— > 010
E ssa é a resposta correta e não envolveu nenhum a su b tração -ap en as um a inversão de bits
e adições.
O m itirem os a discussão q ue ju stifica o cálcu lo do co m plem ento na base dois, fazendo
um a inversão de bits e um a adição de 1 - para os nossos propósitos, precisam os saber apenas
que esse artifício funciona com os núm eros binários.
Na verdade, há dois tipos de com plem entos para um núm ero binário. O tipo que vim os
antes é conhecido com o complemento de dois , obtido pela inversão de todos os bits do núm ero
binário e pela adição de 1. Um outro tipo é conhecido com o complemento de um , o qual é
obtido sim plesm ente invertendo todos os bits, sem o acréscim o de 1. O com plem ento de dois é
m uito m ais usado com um enle nos circuitos digitais e resulta em uma lógica m ais sim ples.
Os com plem entos de dois perm item um a m aneira sim ples de representar núm eros negati­
vos. D igam os que tenham os quatro bits para representar os núm eros e queiram os representar
núm eros positivos e negativos. P odem os o p tar por rep resen tar os núm eros positivos com o
0000 a 0111 (0 a 7). O s núm eros negativos podem ser obtidos tom ando o co m plem ento de
dois dos núm eros positivos porque a - b é o m esm o que a + ( - b ) . A ssim , -1 seria represen­
tado pelo com plem ento de 0001, ou (0 0 0 1 )'+ 1 = 1110+1 = 1111. De m odo se m e lh a n te ,- 2
será (0010) '+1 = 1101+1 = 1 1 1 0 ,-3 s e rá (0011) '+1 = 1100+1 = 1101, e assim por diante.
N o caso d e - 7 , terem os (0 1 1 1 )'+ 1 = 1000+1 = 1001. N ote que o com plem ento de 0000 é
1111+1 = 0000. A representação em com plem ento de dois tem apenas um a representação
para 0, que é 0000 (diferente da representação em sinal e m agnitude, a qual tem duas repre­
sentações para 0). Note tam bém que podem os representar - 8 com o 1000. D esse m odo, a re­
presentação em com plem ento de dois é ligeiram ente assim étrica, tendo um núm ero negativo
a m ais do que núm eros positivos. Um núm ero em com plem ento de dois de quatro bits pode
representar qualquer núm ero de - 8 a +7.
214 Sistemas Digitais

D igam os que você tem núm eros de qu atro bits e quer arm azenar - 5 . O núm ero - 5 será
(0 1 0 1 )'+ 1 = 1010+1 = 1011. A gora, você q u er s o m a r- 5 a 4 (ou 0100). A ssim , sim plesm ente
fazem os a som a: 1011 + 0100 = 1111, que é - 1 , a resposta correta.
O bserve que todos os núm eros negativos têm um 1 no bit de ordem m ais
O b it de ordem m ais elevada. Desse m odo, em com plem ento de dois, esse bit é frequentem ente refe­
elevada em co m p le­ rido com o o bit de sinal , 0 significa positivo, 1 significa negativo.
m ento de d o is atua Se você qu iser conhecer a m agnitude ou m ódulo de um núm ero negativo
com o um bit de sin a l: em com plem ento de dois, você pode obtê-la tom ando novam ente o co m p le­
0 sig n ifica p ositivo, 1 m ento de dois. A ssim , para d eterm in ar o quanto o núm ero 1111 representa,
sig n ifica negativo. podem os tom ar o com plem ento de dois de 1111: (1 1 1 1 )1+1 = 0000+1 = 0001.
C olocam os um sinal negativo na frente para obter -0001, ou -1 .
U m a m aneira m ais rápida para as pessoas obterem m entalm ente a m agnitude de um nú­
m ero negativo de quatro bits em com plem en to de dois (tendo um 1 do bit de ordem m ais
elevada) é subtrair a m agnitude dos três bits inferiores de 8. A ssim , para 1111, os três bits
inferiores são 111 ou 7, e a m agnitude é 8 - 7 = 1, significando que 1111 representa - 1 . Para
um núm ero de oito bits em com plem ento de dois, irem os subtrair a m agnitude dos sele bits
inferiores de 128. A ssim , 10000111 s e r á -( 1 2 8 - 7 ) = -1 2 1 .
Em resum o, podem os representar os núm eros negativos usando a representação em com ­
plem ento de dois. A som a de núm eros em co m plem ento de dois é feita sem m odificações
adicionais, sim plesm ente som am os os núm eros. M esm o que um ou am bos os núm eros sejam
negativos, sim plesm ente som am os os núm eros. Para realizar a subtração A - B, tom am os o
com plem ento de dois de B e o som am os a A, resultando em A + (-B ). C om putam os o co m p le­
m ento de dois de B sim plesm ente invertendo os bits de B e então adicionando 1.

Construindo um subtrator usando um somador e complementos de dois


C om o co n h ecim en to d a rep resen tação em co m p lem en to
de dois, podem os ver ag o ra co m o fazer a subtração usando
um som ador. Para co m p u tar A - B, calcu lam o s A + (-B ),
q ue é o m esm o q ue A + B' + 1 porque -B pode ser calcu ­
lado co m o B1 + 1 em co m p lem en to de dois. A ssim , para
re a liz a r a sub tração , in v ertem o s B e c o lo c a m o s um 1 na
entrada de “ vem um ” de um som ador, co m o m o strad o na
Fig. 4.71.

Somador/Subtrator Figura 4.71 S u b tra to r em


U m a form a d ireta d e se p ro je ta r um co m p o n en te subtra- com plem ento de dois usando
to r/so m ad o r co n siste em um a en trad a sub tal que, quando um somador.
s u b = l, o c o m p o n e n te su b trai, m as,
q u an d o $ub=0, o co m p o n en te som a,
c o m o m o stra d o na Fig. 4 .7 2 (a ). O
m u ltip le x a d o r 2x1 de N bits d e ix a
p assar B q u an d o sub=0, c d eix a p as­
sa r B‘ q u a n d o s u b = l. O sin al su b
tam b ém e stá c o n e c ta d o à e n tra d a
c in de “ vem um ” , d e m odo q ue c in
é 1 na subtração. N a realidade, portas
X O R podem ser usad as em lu g ar dos
inversores e d o m ultiplexador, com o
m o stra d o na Fig. 4 .7 2 (b ). Q u an d o
Figura 4.72 (a) Um som ador/subtrator em com ple­
sub=0, a saída d a porta X O R é igual
mento de dois que usa um multiplexador e (b) circuito
alternativo para B usando portas XOR.
Componentes de Blocos Operacionais 215

ao valor da o utra entrada. Q uando su b = l, a saíd a d a porta X O R é o inverso do valor p re­


sente na o utra entrada.

► EXEMPLO 4.21 Calculadora de soma e subtração baseada em chaves do tipo DIP (continuação)
Vamos revisitar a calculadora de soma e subtração, baseada em chaves do tipo DIP, do Exemplo
4.19. Observe que, em qualquer momento, a saída exibe os resultados ou do somador ou do subtra-
tor, mas nunca ambos simultaneamente. Assim, na realidade, não precisamos de um som ador e um
sublrator funcionando em paralelo. Em vez disso, podemos usar um único componente somador/
subtrator. Assumindo que as chaves tenham sido acionadas, os seguintes cômputos são realizados
quando fazemos f=0 (somar) versus f= l (subtrair):
00001 1 1 1 + 00000001 ( f = 0 ) = 00010000
00001111 - 00000001 ( f = l ) = 00001111 + 11111110 + 1 =
00001 1 1 0

Conseguimos isso simplesmente conectando f à entrada sub do somador/subtrator, como mos­


trado na Fig. 4.73.

Chaves DIP

0 ÜBQOBBBB O0B000B0
1
A
! B
8

sub S om ador/subtrator de 8 bits


0 fl
S

2*
* ►Id
Registrador de 8 bits
Figura 4.73 Calculadora de clk- ->
CALC
soma e subtração de oito bits,
8
baseada em chaves do tipo
DIP, usando um som ador/
— 1
subtrator e a representação LEDs
• • • • M M
em complemento de dois.

Vamos considerar os números com sinal que usam com plem ento de dois. Se o usuário não
estiver ciente que a representação em complemento de dois está sendo usada e se ele entrar apenas
com números positivos através das chaves DIP. então o usuário deverá usar apenas as sete chaves
de ordem inferior das oito chaves DIP de entrada, deixando a oitava chave na posição 0, signifi­
cando que o usuário só poderá entrar com números que estão de 0 (00000000) a 127 (01111111). A
razão pela qual o usuário não pode utilizar o oitavo bit é que, na representação em complemento
de dois, quando o bit de ordem mais elevada é tornado 1, o número torna-se negativo.
Se o usuário estiver ciente que complementos de dois estão sendo usados, então o usuário po­
derá utilizar as chaves DIP para representar também os números negativos entre -1 (11111111) e
-1 2 8 (10000000). Naturalmente, o usuário deverá verificar o bit mais à esquerda, para determinar
se a saída representa um número positivo ou negativo, na forma de complemento de dois. M

D etecção de estouro
Q uando realizam os aritm ética usando núm eros binários de largura fixa de bits, algum as vezes
o resultado tem largura m aior do que essa largura fixa. Essa situação é conhecida com o es­
touro ou transbordamento. Por exem plo, considere a som a de dois núm eros binários de q u a ­
tro bits (por enquanto, apenas núm eros com uns, não em com plem ento de dois) e o arm azena­
m ento do resultado com o outro núm ero de quatro bits. A so m a de 1111 + 0001 resulta em
216 Sistemas Digitais

10000 - um núm ero de cinco bits, que tem um a largura m aior do que os quatro bits que tínha­
m os para arm azenar o resultado. Em outras palavras, 1 5 + 1 = 16, sendo que 16 req u er cinco
bits para ser representado em binário. Q uando som am os dois núm eros binários, podem os
d etectar facilm ente o estouro observando sim p lesm en te o bit de “vai u m ” do som ador -
quando esse bit é 1, então ocorreu um estouro. D esse m odo, um som ador ao fazer 1111 +
0001 dará a saída 1 + 0000, em que o l é o “ vai um” , indicando um estouro.
Q uando são usados núm eros em co m ­
plem ento de dois, a detecção do esto u ro é bits d e sinal

m ais com plicada. S uponha novam ente que


1 1 1 0 0 0
tenham os núm eros de quatro bits, m as agora P \ p \
1 1
+\oJ 0 0 1
esses núm eros estão na fo rm a de co m p le­ +W 0 0 0 +y 1 1 1
m ento de dois. C o n sid ere a som a de dois

©
© 1 1 1

o
1 1 1
núm eros positivos, tais com o 0111 e 0001 na
e s to u ro e s to u ro s e m e s to u r o
Fig. 4.74(a). Um som ador de quatro bit for­ (a) (b) (O
neceria um a saída de 1000, mas isso está in­ S e o s b it s d e s in a l d o s n ú m e r o s t iv e r e m o m e s m o
correto: o resultado de 7 + 1 deveria ser 8, e v a lo r, o q u a l é d if e r e n t e d o v a lo r d o b i t d e s in a l d o
r e s u lta d o , e n tã o o c o r r e u u m e s to u r o .
1000 representa - 8 em com plem ento de dois.
O problem a é que o m aior núm ero positivo Figura 4.74 Detecção de estouro em com ple­
que podem os representar em com plem ento mento de dois pela comparação dos bits de si­
de dois com quatro bits é 7. A ssim , quando nal: (a) quando dois números positivos são so­
som am os dois núm eros positivos, podem os mados, (b) quando dois números negativos são
detectar o estouro verificando se o bit m ais somados, (c) ausência de estouro.
significativo é 1 no resultado.
De m odo sim ilar, considere a som a de dois núm eros negativos, tais com o 1111 e 1000 na
Fig. 4.74(b). Um som ador iria produzir na saída um a som a de 0111 (e um “ vai um ” de 1). O
valor 0111 está incorreto: -1 + - 8 deveria s e r - 9 , m as 0111 é +7. O problem a é que o núm ero
m ais negativo que podem os representar com q u atro bits em com plem ento de dois é -8 . A s­
sim , quando som am os dois núm eros negativos, podem os detectar o estouro verificando se o
bit m ais significativo é 0 no resultado.
N ote que, quando som am os um núm ero positivo com um negativo, ou um negativo com
um positivo, nunca pode ocorrer estouro. O resultado sem pre será m enos negativo do que o
núm ero m ais negativo, ou m enos positivo do que o núm ero m ais positivo. Por exem plo, o
caso extrem o é a som a - 8 + 7, que é - 1 . N essa som a, aum entando - 8 ou dim inuindo 7, ainda
resulta em um núm ero entre - 8 e 7.
D esse m odo, a detecção do estouro em co m p lem en to de d o is envolve a detecção de se
am bos os núm eros de entrada são positivos e produzem um resultado negativo, ou se am bos
os núm eros de entrada são negativos e produzem um resultado positivo. D izendo de outra
form a, a detecção de estouro em com plem ento de dois envolve a detecção de se os bits de si­
nal de am bas as entradas são os m esm os entre si, m as diferem do bit de sinal do resultado. Se
cham arm os de a o bit de sinal de um a entrada, de b o da outra entrada e de R o do resultado,
então as seguintes equações fornecem um a saída 1 quando há estouro:

estouro = a b r' + a ' b ' r

E m bora o circuito que im plem enta a equação anterior para a detecção do estouro seja bem
sim ples e intuitivo, podem os criar um circuito ainda m ais sim ples se nosso som ador gerar
um “vai um ” . Esse m étodo m ais sim ples com para o bit de transporte que entra na coluna do
bit de sinal com o bit de transporte que sai dessa m esm a coluna, o “vai um ” , quando o bit de
transporte que entra é diferente do que sai, houve estouro.
Componentes de Blocos Operacionais 217

A Fig. 4.75 ilustra esse m étodo para d i­ 7 7 7 0 0 0 0 0 0


0 1 1 1 1 1 1 1 1 0 0 0
versos casos. N a Fig. 4.75(a), o bit de trans­
porte q ue en tra no bit de sinal c 1, e o que + 0 0 0 1 + 1 0 0 0 + 0 1 1 1
sai é 0. C om o o bit de transporte que chega
0 1 0 0 0 7 0 1 1 1 0 1 1 1 1
e o que sai são d iferen tes, en tão houve e s­
e s to u r o e s to u ro s e m e s to u r o
touro. Um circuito para detectar se dois bits (a) (b) (c)
são d ife re n te s é sim p lesm en te um a porta
S e o b i t d e tr a n s p o r t e q u e e n tr a n a c o lu n a d e s in a l
X O R , que é m ais sim ples do que o circuito é d if e r e n t e d o q u e s a i, e n tã o o c o r r e u u m e s to u r o .
do m étodo anterior. O m itim os a d iscu ssão
sobre o porquê desse m étodo funcionar, m as Figura 4.75 Detecção de estouro em com ple­
o ex am e dos casos da Fig. 4.75 deve ajudar mento de dois pela comparação do bit de trans­
porte que chega com o que sai da coluna do bit
no entendim ento intuitivo.
de sinal: (a) quando dois números positivos são
som ados, (b) quando dois números negativos
são somados, (c) ausência de estouro.

► POR QUE ESSAS CALCULADORAS DE BAIXO CUSTO?

Diversos exemplos anteriores lidaram com o projeto então precisará acrescentar $1.000.00 ao preço de
de calculadora simples. Calculadoras baratas, cus­ venda do chip se você deseja atingir o ponto de
tando menos de um dólar, são fáceis de encontrar. equilíbrio quando vender o chip (significando re­
Calculadoras são mesmo dadas de graça por muitas cuperar os custos de projeto e fabricação). Se você
companhias que vendem outras coisas. No entanto, planeja produzir e vender 10 desses chips, então
uma calculadora contém internamente um c/tip que terá de acrescentar $1.000.000/10 = $100.000 ao
implementa um circuito digital e, geralmente, os custo de venda de cada chip. Se planeja produzir e
chips não são baratos. Por que algumas calculadoras vender 1.000.000 desses chips, então você deverá
são tais pechinchas? acrescentar apenas $1.000.000/1.000.000 = $1 ao
A razão é conhecida como economia de escala, preço de venda de cada chip. Final mente, se você
significando que frequentemente os produtos são planeja produzir e vender 10.000.000 deles, pre­
mais baratos se produzidos em grandes volumes. cisará acrescentar apenas $1.000.000/10.000.000
Por quê? Porque os custos de projeto e fabricação = $0,10 = 10 centavos de dólar ao preço de venda
do c/tip podem ser amortizados com grandes nú­ de cada chip. Se a matéria prima custar apenas 20
meros. Suponha que custe $1.000.000 para projetar centavos de dólar por chip, e se você acrescentar
um chip customizado de calculadora e para realizar mais 10 centavos de dólar por chip a título de lucro,
a fabricação do chip (um valor bem razoável)-os então eu poderei comprar o chip de você por apenas
custos de projeto e fabricação são chamados fre­ 40 centavos de dólar. Nesse caso, eu posso dar de
quentemente de custos de desenvolvimento ou cus­ graça essa calculadora, como muitas companhias já
tos não recorrentes de engenharia (NRE). Se você fazem como incentivo para as pessoas comprarem
planeja produzir e vender apenas um desses chips, algo mais.

Display Chip (oculto) Bateria


218 Sistemas Digitais

► 4.9 UNIDADES LOGICO-ARITMETICAS - ALUS


U m a unidade de aritmética e lógica - A LU (arithmetic-logic unit) é um com ponente de
bloco operacional capaz de executar diversas operações aritm éticas e lógicas com duas en ­
tradas de dados, com N bits de largura, gerando um a saíd a de dados de N bits. A adição e
a subtração são exem plos de operações aritm éticas. A lguns exem plos de operações lógicas
incluem A N D , O R, X O R, etc. A s entradas de controle da A LU indicam qual operação em
particular deve ser realizada.
Para com preender a necessidade de um com ponente do tipo A LU , considere o E xem plo
4.22.

► EXEMPLO 4.22 Calculadora multifuncional sem usar uma ALU


Vamos estender a nossa calculadora anterior, baseada em chaves DIP, para que ela possa realizar
oito operações, determ inadas por uma chave DIP tripla, que fornece três entradas x, y e z para o
nosso sistema, como mostrado na Pig. 4.76. Para cada combinação das três chaves, queremos exe­
cutar as operações mostradas na Tabela 4.2 com as entradas de dados Ae B de oito bits. produzindo
uma saída de oito bits em S.

TABELA 4.2 Operações desejadas da calculadora


Entradas E xem plo de sa íd a se
O peração A=00001111,
X y z
B=00000101

0 0 0 S=A +B S=00010100
00
<

CO

0 0 1 S=00001010
ii
i

0 i 0 S=A +1 S=00010000
00
<

0 1 1 S=00001111
ii

1 0 0 S = A AND B (AND bit a bit) S=00000101

1 0 1 S = A OR B (OR b it a bit) S=00001111

1 1 0 S = A XOR B (XOR bit a bit) S=00001010

1 1 1 S = NOT A (com plem ento bit a bit) S=11110000

A tabela inclui diversas operações bit a bit (AND, OR, XOR c complemento). Uma operação
bit a bit aplica-se separadamente a cada par de bits correspondentes de A e B .
Podemos projetar um circuito para a nossa calculadora, como mostrado na Fig. 4.76, usando
um com ponente separado para cada operação: usamos um som ador para realizar a adição, um
sublrator para a subtração, um contador crescente para realizar um incremento, e assim por diante.
Entretanto, esse circuito é muito ineficiente em relação ao número de fios. ao consumo de energia
e ao atraso. Há fios demais que devem ser estendidos a todos os componentes e especialmente ao
multiplexador, que terá 8*8 = 64 entradas. Além disso, todas as operações estão sendo realizadas
continuamente, o que desperdiça potência elétrica. Por outro lado, imagine ainda se estivéssemos
lidando não com números de oito bits, mas de 32 bits, e se quiséssem os realizar não apenas oito
operações, mas 32 operações. Nesse caso. teríamos ainda mais fios (32*32 = 1024 conexões nas
entradas do multiplexador) e bem mais consumo de energia. Ademais, um multiplexador 32x1 irá
necessitar de diversos níveis de portas, porque, devido a razões práticas, uma porta lógica de 32
entradas (dentro do multiplexador) precisará provavelmente ser implem entada usando diversos
níveis de portas lógicas menores.
Componentes de Blocos Operacionais 219

Chaves DIP

0 mmm b bbbbbbq

E n e r g ia
d e s p e r d iç a d a

/ "8 /
/ 8/ 8
/
G ra n d e
q u a n t id a d e d e fio s

Figura 4.76 Uma


calcu ladora m ulti­
funcional de oito
bits, b asead a em
chaves DIP, que usa
c o m p o n e n te s s e ­
parados para cada
função.

Vimos no exem plo anterior que o uso de com ponentes separados para cada operação não é
eficiente. Para resolver o problem a, observe que, a cada ve/., a calculadora só pode ser confi­
gurada para um a única operação. A ssim , não há necessidade de com putar todas as operações
em paralelo, com o foi feito no exem plo. Ao contrário, podem os criar um único com ponente
(um a A L U ) que pode co m p u tar q u alq u er um a das oito operações. Esse com p o n en te seria
m ais eficiente em relação à área ocupada e à energia consum ida e teria atraso m enor porque
um m ultiplexador grande não seria necessário.
Vamos com eçar usando um som ador com o nosso projeto interno básico para um a ALU.
Para evitar confusão, vam os cham ar as entradas do som ador interno de IA e IB, de “A interno”
e ” B interno”, para distingui-las das entradas externas A e B da A LU. C om eçam os conform e
m ostrado na Fig. 4.77(a). A A LU consiste em um som ador e algum a lógica à frente de suas
entradas. C ham arem os essa ló g ica de ex ten so r de aritm ética e lógica, ou extensor AL. O

Figura 4.77 U nidade de


aritmética e lógica: (a) pro­
jeto de ALU baseado em
um som ador sim ples, com
um extensor de aritm ética
e lógica e (b) detalhe do
extensor de aritm ética e ló­
gica. (a)
220 Sistemas Digitais

objetivo do extensor AL é determ inar os valores das entradas do som ador com base nos va­
lores das entradas de controle x, y e z da A LU , de m odo que o resultado aritm ético ou lógico
desejado aparece na saída do som ador. Na realidade, o extensor AL consiste em oito com po­
nentes idênticos, cham ados de abext, um para cada par de bits a i e b i , com o m ostrado na Fig.
4.77(b). Ele tam bém tem um com ponente cinext para com putar o bit c i n.
Desse m odo, precisam os projetar os com ponentes abext e cinext para com pletar o projeto
da A LU. C onsidere as quatro prim eiras operações da Tabela 4.2, que são aritm éticas:

• Q uando xyz=000, S=A+B. A ssim , neste caso, querem os IA=A, IB=B e c i n=0.

• Q uando xyz=001, S=A-B. A ssim , querem os IA=A, IA=A, IB=B' e c in = l.

• Q uando xyz=010, S=A+1. A ssim , querem os IA=A, IB=0 e c in = l.

• Q uando xyz=011, S=A. A ssim , querem os IA=A, IB=0 e c i n=0. O bserve que A passará atra­
vés do som ador porque A+0+0=A.

A s quatro últim as operações da A LU são todas operações lógicas. Podem os co m p u tar a


operação desejada no com ponente abext e en trar com esse resultado em IA. A seguir, fazem os
IB ser 0 e ci n ser 0, de m odo que o valor de IA passará inalterado através do som ador.
U m a possível estrutura para abext usa um m ultiplexador 8x1 à frente de cada um a das
saídas dos com ponentes abext e cinext, sendo x. y c z as entradas de seleção. N esse caso, d e­
verem os definir cad a um a das entradas do m ultiplexador, com o descrito antes. U m a estrutura
m ais eficiente e rápida criaria um circuito custom izado para cada um a das saídas dos com po­
nentes. D eixam os ao leitor, com o exercício, a conclusão do projeto interno dos com ponentes
abext e cinext.
O E xem plo 4.23 faz um novo projeto para a calculadora m ultifuncional do E xem plo 4.22,
desta vez usando um a ALU.

► EXEMPLO 4.23 Calculadora multifuncional usando uma ALU


No Exemplo 4.22, construímos uma calculadora de oito funções sem usar uma ALU. O resultado
foi o desperdício de área e energia, fiação com plexa e atrasos longos. Usando a ALU projetada
anteriorm ente, a calculadora poderia ser construída com o m ostrado na Fig. 4.78. Note como o
projeto é simples e eficiente. ◄

Chaves DIP

0 □D0OOO00 ; □□□□□0QQ

Figura 4.78 Um a calcu­


ladora m ultifuncional de
oito bits, baseada em cha­
ves do tipo DIP. que usa LEDs
uma ALU.
Componentes de Blocos Operacionais 221

► 4.10 BANCOS DE REGISTRADORES


Um banco de registradores M xN (register file) é um com p o n en te de m em ó ria de blocos
operacionais que propicia um acesso eficiente a um conjunto de M registradores, onde cada
registrador tem um a largura de N bits. P ara co m p reen d er a necessidade de um banco de re­
gistradores quando se constrói bons blocos operacionais, ao invés de sim plesm ente usar M
registradores separados, considere o E xem plo 4.24.

► EXEMPLO 4.24 Sistema de display, acima do espelho retrovisor, que usa 16 registradores de 32 bits
Lembre-se do sistema de display colocado acima do espelho retrovisor do Exemplo 4.4. Quatro re­
gistradores de oito bits foram multiplexados em uma saída de oito bits. Em lugar disso, suponha que
o sistema requeresse dezesseis registradores de 32 bits para exibir mais valores e com mais precisão
cada um. Nesse caso, necessitaríamos de um multiplexador I6x 1 de 32 bits de largura, como mostrado
na Fig. 4.79. De um ponto de vista puramente de lógica digital, o projeto está correto. No entanto, na
prática, esse multiplexador é muito ineficiente. Conte o número de fios que seriam ligados no multi­
plexador: 16x32 = 512 fios. Isso é muito fio para estender entre os registradores e os multiplexadores,
como demonstração prática, experimente conectar 512 lios na parte traseira de um aparelho de som.
O acúmulo de muitos fios em uma área pequena é conhecido como congestionamento.

32

Figura 4.79 Projeto de um display, colocado acima do retrovisor, com dezesseis registradores de
32 bits. O multiplexador tem demasiados fios de entrada, resultando em congestionamento. Além
disso, as linhas de dados C são ramificadas e enviadas a demasiados registradores, produzindo um
enfraquecimento de corrente.

De forma sem elhante, considere a determinação dos caminhos a serem seguidos, o chamado
roteamento, pelos dados de entrada até todos os dezesseis registradores. Cada fio de entrada está
sendo ram ificado em dezesseis outros fios. Im agine a corrente elétrica como sendo um rio -a ra­
mificação de um rio em dezesseis rios menores proporcionará um fluxo de água muito menor em
cada um dos rios menores do que no rio principal. Do mesmo modo, a ram ificação de um fio,
conhecida como fanout* somente pode ser feita um certo número de vezes antes que as correntes
nos fios das ramificações sejam pequenas demais para poder controlar eficientemente os transis­
tores. Além disso, os fios com baixas correntes também podem apresentar baixas velocidades, de
modo que o fanout pode criar também atrasos demorados nos fios. M

* N. de T: Termo inglês que expressa a idéia de “saídaem leque”.


222 Sistemas Digitais

O s problem as de fanout e congestionam ento, ilustrados no exem plo anterior, podem ser
resolvidos observando que nunca necessitam os carregar m ais de um registrador de cada vez,
e que tam bém nunca precisam os ler m ais de um registrador de cada vez. Um banco de regis­
tradores M xN resolve os problem as de fanout e congestionam ento. Para isso, os M registrado­
res são agrupados em um único com ponente, tendo esse com ponente um a única entrada de
dados de N bits de largura e um a única saída de dados de N bits de largura. A fiação dentro do
com ponente é feita cuidadosam ente para que o fanout e o congestionam ento sejam tratados
adequadam ente. A Fig. 4.80 m ostra um sím bolo para d iagram a de blocos de um banco de
registradores 16x32 (16 registradores, 32 bits de largura cada um).
C onsidere a ação de escrever um valor em um re­
gistrador de um banco de registradores. C olocam os os 32
W_data R_data
dados a serem escritos na entrada W_data. Precisam os
então de um a m aneira para indicar em qual registra­ W_addr R_addr
dor desejam os de fato escrever. C om o há 16 registra­
dores, precisam os de quatro bits para esp ecificar um W_en R_en
registrador em particular. E sses bits são cham ados de 16x32
^èanco de registradores
endereço do registrador. A ssim , devem os c o lo c a r o
endereço do registrador desejado na entrad a W_addr. Figura 4.80 Símbolo para diagrama
Por exem plo, se quiserm os escrever no registrador 7, de blocos de um banco de registra­
farem os W_addr=0111. Para indicar q ue na realidade dores 16x32.
querem os escrever em um dado ciclo de relógio (não
querem os escrever a cada ciclo), colocarem os a entrada W_en em 1. O conjunto de entradas
W_data, W_addr e W_en é conhecido com o porta de escrita de um banco de registradores.
A leitura é sem elhante. E specificam os o endereço do reg istrad o r a ser lido na entrada
R_addr e habilitam os a leitura fazendo R_en=l. Esses valores farão com que o banco de regis­
tradores coloque na saída R_data os conteúdos do registrador que foi endereçado. O conjunto
de R_data, R_addr e R_en é conhecido com o porta de leitura de um banco de registradores.
A s portas de escrita e leitura são independentes entre si. A ssim , durante o m esm o ciclo de
relógio, podem os escrever em um registrador e ler de outro (ou do m esm o) registrador.*

W_data

W_addr

W_en

Figura 4.81 Um projeto interno possível de um banco de registradores 4x32.

* N. de T: Em relação aos termos usados nos sinais das portas de entrada e saída do banco de registradores, as seguintes indicações
podem ser úteis: W(de write* escrever), R (de read, ler), d ata (dados), addr (de address, endereço) e en (de enable, habilitação).
Componentes de Blocos Operacionais 223

Vam os considerar corno projetar internam ente um banco de registradores. Por sim p lici­
dade, considere um banco de registradores 4x32, ao invés do banco de registradores 16x32
descrito antes. Um projeto interno de um banco de registradores 4x32 esta m ostrado na Fig.
4.81. Vamos considerar o circuito de escrita desse banco de registradores, encontrado no lado
esquerdo da Figura. Se W_en=0, o banco de registradores não escreverá em nenhum registra­
dor, porque as saídas do decodificador de escrita serão todas Os. Se W_en=l, então o decodifi-
cador de escrita analisa W_addr e coloca um 1 na entrada de carga de exatam enle um registra­
dor. N o próxim o ciclo de relógio, o valor de W_data será escrito nesse registrador.
O bserve o com ponente triangular que está no interior
de um a circunferência. E le tem um a entrada e um a saída,
e está inserido na linha W_data (na realidade, haveria 32
desses com p o n en tes já que W_data tem 32 bits de lar­
gura). Esse com ponente é conhecido com o driver , tam ­
bém cham ado de buffer , e está ilustrado na Fig. 4.82(a).
A saída de um d r iv e r é igual à sua entrada, m as o sinal de
saída c m ais robusto (corrente m ais elevada). Você se
lem b ra do p ro b le m a de feinout que d esc re v e m o s no
E xem plo 4.24? Um d r i v e r reduz esse problem a. Na Fig. c=1: q=d d q
c=0: q='Z' d q
4.81, a linha de W_data divide-se em apenas duas, indo a
dois registradores, antes de seguir para o d r iv e r . A saída c o m o se n ã o h o u ve sse co n e x ã o

do driver divide-se então e vai para m ais dois registrado­ (b)


res apenas. A ssim , ao invés de um fanout de quatro, a li­ Figura 4.82 (a) d r iv e r e (b) d r i ­
nha de W_data tem um fanout de apenas dois (na reali­ v e r de três estados.
dade três, se incluirm os o próprio d r iv e r ) . A inserção de
d r iv e r s está além dos propósitos deste livro, sendo tem a para um livro de projeto V LSI ou
projeto digital avançado. No entanto, esperam os que, tendo visto ao m enos um exem plo de
uso de d r i v e r , você terá um a idéia de um a das razões pela qual um banco de registradores é
um com ponente útil: o com ponente esconde do projetista a com plexidade do se u fa n o u t .
Para com preender o circuito de leitura, você deve entender prim eiro o com ­
Em inglês, esses co m ­ portam ento de um outro com ponente - é o com p o n en te triangular com duas
ponentes selo m ais
entradas e um a saída, ilustrado na Fig. 4.82(b), sendo conhecido com o driver
com um ente conhecidos
com o “ tri-state d rive rs de três estados ou buffer de três estados. Q uando a en trad a de controle c é 1,
(d rive rs íri-e s ta d o )” ao o com ponente atua com o um í/r/v e rc o m u m - a sua saída é igual à sua entrada.
invés de "three-state No entanto, quando a entrada de controle c é 0, a saída do d r iv e r não é 0 nem 1,
d rive rs (d riv e rs de três m as está no estado de alta im pedância, com o é conhecido, sendo escrito com o
esta d o s)". N o entando, ‘Z \ A alta im pedância pode ser pensada com o se não houvesse nenhum a c o ­
“tri-state ” é uma nexão entre a entrada e a saída do d r iv e r . “Três estados” significa que o d r iv e r
m arca registrada da
tem três estados de saída possíveis: 0, 1 e Z.
N a tio n a l Sem ico n d u c­
tor Corp oration. Assim , A gora, na m etade direita da Fig. 4.81, vam os exam inar o circuito de leitura
em m uitos docum entos, do banco de registradores. Q uando R_en=0, o banco dc registradores não lê ne­
p a ra não c o lo c a r o b ri­ nhum registrador, já que todas as saídas do decodificador são Os. Isso significa
gatoriam ente o sím bolo que as saídas de todos os d r iv e r s de três estados estão no estado Z e desse m odo
de m arca registrada, a saída R_data está em alta im pedância. Q uando R_en=l, então o decodificador
após cada vez que "tri-
analisa R _addr e coloca um 1 na en trad a de controle de ex atam ente um dos
state " é utilizado, usa-
d r iv e r s de três estados, o qual passará o conteúdo do seu registrador para a
se “three-stale”.
saída R_data.
E steja ciente de que, na realidade, cada um dos d r iv e r s de três estados m ostrados rep re­
senta um conjunto de 32 d r iv e r s de três estados, um para cada um dos 32 fios que vêm dos 32
registradores e se dirigem à saída R_data de 32 bits. Todos os 32 d r iv e r s desse conjunto são
controlados pela m esm a entrada de controle.
O s fios alim entados pelos diversos d r iv e r s de três estados são conhecidos com o barra -
mento , com o indicado na Fig. 4.81. Q uando as entradas de dados de um m ultiplexador têm
224 Sistemas Digitais

m uitos bits de largura e/ou quando um m ultiplexador tem m uitas en ­


tradas de dados, um barram ento e um a alternativa m uito com um para o
m ultiplexador porque resulta em m enos congestionam ento.
N ote que o projeto de um banco de reg istrad o res presta-se bem
para extensões com núm eros grandes de registradores. A s linhas de
escrita de dados podem ser acionadas por m ais drivers , se necessário.
A s linhas de leitura de dados são alim en tad as a partir de drivers de
très estados e, portanto, não há co n g estio n am en to com o no caso de
um m ultiplexador sim ples. O leitor pode querer com parar o projeto do
banco de registradores da Fig. 4.81 com o da Fig. 4.6, que essen cial­
m ente era um projeto pobre de um banco de registradores.
A Fig. 4.83 m ostra um exem plo com diagram as de tem po, que descreve a escrita e a
leitura em um banco de registradores. D urante o ciclo ! , não conhecem os os conteú d o s do
banco de registradores. A ssim , esses conteúdos serão m ostrados com o “ ?” . D urante o ciclo ! ,
fazem os W_data=9 (em binário, naturalm cnte), W_addr=3 e W_en=l. E sses valores fazem com
que um 9 seja escrito na posição 3 do banco de registradores, durante a prim eira borda de
relógio. O bserve que fizem os R_en=0. D esse m odo, na saída do banco de registradores não
haverá nada (“Z"), e o valor que colocam os em R_addr pode ser qualquer um (é um valor que
“ não im porta’', sendo escrito com o “X'’).

I l I l
ciclo 1 fj ciclo 2 j~] ciclo 3 í ciclo 4 |~| ciclo 5 |~j ciclo 6 !
clk

— —
_X 177
S / -----------
x

CM
CM

L - v --------------------
W _data)( 9 X X 555
- , -
W _ a d d r^ 3
X 1 X X
X
X 3 J( 3
W_en __ 1

R_data \ Z Z z Y p9
X</ * V 2 X 9 X 555

R_addr ( X
X X X !> ! L .Í
(X * X F ""X 3
R en __ V 11 _______ ____ \ )

0: 0:
1: 22 22 22 1: 22 22
2: 2 : 177 177
3: 3: 555

Figura 4.83 Escrita e leitura em um banco de registradores.

D urante o ciclo2 , fazem os W_data=22, W _addr=l e W_en=l. Esses valores fazem com que
um 22 seja escrito na posição l do banco de registradores, durante a borda 2 de relógio.
D u ran te o ciclo3 , fazem os W_en=0, de m odo que não im porta q u ais valores irem os atri­
buir a W_data e W_addr. T am bém fazem os R_addr=3 e R_en=l. E sses valores fazem com
q ue o co n teú d o d a posição 3 seja lido e colocado na saíd a R_data d o banco de registradores.
O valor dc R_data to rn a-se 9. O bserve q u e a leitura não está sin cro n izad a co m a b o rd a de
reló g io 3-R_data altera-se um pouco ap ó s R_en tornar-se 1. O ex am e do circu ito d a Fig.
4.81 deve to rn ar claro por q ue a leitura não está sin cro n izad a - q u an d o R_en to rn a-se 1, o
d eco d iíicad o r de saída é habilitado a sim p lesm en te ativar um dos g ru p o s de buffers de três
estados.
D urante o ciclo4 , fazem os R_en retornar a 0. N ote que isso faz R _data tornar-se “Z” no­
vam ente.
Componentes de Blocos Operacionais 225

D urante o c i c l o 5 , querem os sim ultaneam ente ler e escrever no banco de registradores.


L em os a posição 1 (o que faz R _data tornar-se 22) e ao m esm o tem po escrevem os o valor 177
na posição 2.
Finalm ente, durante o cicloó , querem os sim ultaneam ente ler e escrever na m esm a posição
do banco de registradores. Fazendo R_addr=3 e R_en=l, obrigarem os o conteúdo 9 da posição
3 a aparecer em R_data um pouco depois da aplicação desses valores. Fazem os tam bém W_
addr=3, W_data=555 e W_en=l. C om isso. na borda 6 de relógio, o valor 555 será arm azenado
na posição 3 do banco de registradores. N ote que R_data tam bém m udará tornando-se 555
um pouco após a borda de relógio.
A capacidade de ler e escrever sim ultaneam ente nas posições de um banco de registrado­
res, até na m esm a posição, é um a característica am plam ente usada. O próxim o exem plo fará
uso dessa capacidade.

► EXEMPLO 4.25 Sistema de display, acima do espelho retrovisor, que usa um banco de
registradores 16x32
O Exemplo 4.4 usou quatro registradores de oito bits em um sistema de d is p la y colocado acima do
espelho retrovisor. O Exemplo 4.24 ampliou o sistem a usando 16 registradores de 32 bits, resul­
tando em problemas de fa n o u t e congestionamento. Podemos refazer aquele exemplo usando um
banco de registradores. O projeto está mostrado na Fig. 4.84. Como o sistema sempre coloca na
saída um dos valores de registrador no d is p la y , fizemos a entrada R_en ter um valor constante de 1.
Note que a escrita e a leitura em registradores particulares são independentes.

W_data R_data

W_addr R_addr
Figura 4.84 Projeto
de d is p la y , colocado W_en R_en
acim a do retrovisor, v Banco de registradores
usando um banco de 16x32
registradores.

Um banco de registradores que tem um a porta de leitura e um a de escrita é conhecido às


vezes com o um banco de registradores de porta dupla. Para deixar claro que as duas portas
consistem em um a porta de leitura e um a de escrita, esse banco de registradores pode ser refe­
rido com o segue: b a n c o d e re g is tra d o re s d e p o r t a d u p la (u m a d e le it u r a . u m a d e e s c r it a ).
Na realidade, um banco de registradores pode ter apenas um a porta, que seria usada
tanto para ler com o para escrever. Um banco de registradores com o esse tem apenas um co n ­
ju n to de linhas de dados, servindo tanto de en trad a com o de saída, um conjunto de entradas
de endereço, um a entrada de habilitação e m ais um a entrada indicando se querem os escrever
ou ler do banco de registradores. E sse banco de registradores é conhecido com o banco de
registradores de porta simples.

Banco de registradores de portas múltiplas (duas de leitura , uma de escrita). M uitos ban­
cos de registradores têm três portas: um a porta de escrita e duas portas de leitura. A ssim , no
m esm o ciclo de relógio, dois registradores podem ser lidos sim ultaneam ente e um outro,
escrito. Esse tipo de banco de registradores é especialm ente útil em m icroprocessadores, por­
que um a instrução típica de m icroprocessador opera com dois registradores e arm azena o
resultado em um terceiro registrador, com o na instrução “RO <— RI + R 2 ” .
Em um banco de registradores, podem os criar uma segunda porta de leitura, acrescentando
um outro conjunto de linhas com Rb_data. Rb_addr e Rb_en. Introduziríam os um segundo deco-
dificador de leitura, com uma entrada de endereço Rb_addr e um a de habilitação Rb_en, um se­
gundo conjunto de d r iv e r s de três estados e um segundo barram ento conectado à saída Rb_data.
226 Sistemas Digitais

Outras variações de bancos de registradores. O s bancos de registradores estão disponíveis


em todos os tipos de configurações. O núm ero típico de registradores em um banco de regis­
tradores varia de quatro a 1024, e larguras típicas vão de oito a 64 bits por registrador, m as os
tam anhos podem ir além desses valores. O s bancos de registradores podem ter
O núm ero m áxim o de um a porta, duas portas, três portas e até mais, m as, indo além de três portas, o
p orta s que j á vi em um desem penho do banco de registradores pode baixar e seu tam anho aum entar de
banco de registradores form a significativa, devido à dificuldade de se fazer o roteam ento de todos os
de um produto com er­ fios dentro do banco de registradores. No entanto, ocasionalm ente você irá se
c ia l f o i dez portas de deparar com bancos de registradores com possivelm ente três portas de escrita e
feitura e cin co portas três portas de leitura, quando o cham ado acesso concorrente tornar-se crítico.
de escrita.

► 4.11 TRADEOFFS COM COMPONENTES DE BLOCO OPERACIONAL (VEJA A SEÇÃO 6.4)


Para cada com ponente de bloco operacional que introduzim os nas seções anteriores, criam os
a im plem entação m ais básica e fácil de entender. N esta seção, cujos conteúdos estão de fato
na Seção 6.4, descrevem os im plem entações alternativas de diversos co m p o n en tes de bloco
operacional. C ada alternativa representa um tra d e q /f entre um critério de projeto e um o u tro -
a m aior parte dessas alternativas faz um tr a d e o f f buscando um atraso m enor em troca de
um tam anho maior. U m a form a de uso deste livro consiste em cobrir essas im plem entações
alternativas im ediatam ente após a introdução das im plem entações básicas (isto é, agora). Um
outro uso deste livro consiste em cobrir essas im plem entações alternativas m ais tarde, após
m ostrar com o usar os com ponentes de bloco operacional durante o projeto lógico em nível de
transferência entre registradores.

► 4.12 DESCRIÇÃO DE COMPONENTES DE BLOCO OPERACIONAL USANDO


LINGUAGENS DE DESCRIÇÃO DE HARDWARE (VEJA A SEÇÃO 9.4)
E sta seção, cujos conteúdos estão de fato na Seção 9.4, m ostra com o usar H D Ls para d escre­
ver diversos com ponentes de bloco operacional. U m a form a de usar este livro consiste em
descrever esse uso de H D L agora, ao passo que um a outra descreve esse uso de H D L m ais
tarde.

► 4.13 PERFIL DE PRODUTO: UMA MAQUINA DE ULTRA-SOM


Se você ou alguém que você conhece já teve um bebê, então talvez você já tenha visto im a­
gens de ultra-som do bebê antes que ele ou ela tivesse nascido, com o a im agem da cabeça do
feto vista na Fig. 4.85(a).
A im agem não foi obtida por um a câm era colocada de algum m odo no útero, m as, pelo
contrário, por um a m áquina ultra-sônica, pressionada contra a pele d a m ãe e apontada em d i­
reção ao feto. O “ im ageam ento” ultra-sônico é atualm ente um a prática com um em obstetrícia:
ajuda principal m ente os m édicos a acom panhar o desenvolvim ento do feto e a corrigir preco-
ccm cntc problem as potenciais, m as tam bém dando aos pais um a enorm e em oção quando eles
vislum bram de repente pela prim eira vez a cabeça, as mãos e os pezinhos de seu bebê.

Visão funcional
Essa seção descreve brevem ente as principais idéias funcionais de com o o im ageam ento por
ultra-som funciona. O s projetistas digitais não costum am trabalhar no vazio, eles em pregam
suas habilidades em aplicações particulares e, desse m odo, norm alm ente aprendem as princi­
pais idéias funcionais que estão por baixo dessas aplicações. Portanto, irem os lhe apresentar
as idéias básicas das aplicações de ultra-som . O im ageam ento por ultra-som trabalha enviando
ondas sonoras para o interior do corpo e ouvindo os ecos que retornam . Elem entos com o ossos
Componentes de Blocos Operacionais 227

(a)

Figura 4.85 (a) Imagem ultra-sônica de um feto, criada


usando um dispositivo ultra-sônico que é simplesmente
colocado sobre o abdômen da mãe (b) e que forma a
imagem gerando ondas sonoras e escutando os ecos. As
fotos são uma cortesia da Philips Medicai Systems.

produzem ecos diferentes de elem entos com o pele ou fluídos. A ssim , um a m áquina ultra-sô­
nica processa os diferentes ecos para gerar im agens com o as da Fig. 4.85(a) - os ecos intensos
podem ser exibidos com o branco e os fracos, com o preto. A s m áquinas ultra-sônicas de hoje
em dia apóiam -se fortem ente em circuitos digitais velozes para gerar as ondas sonoras, ouvir
os ecos e processá-los, gerando im agens de boa qualidade em tem po real.

Formador Processador Conversor de Monitor


Transdutor de feixe digital de sinais varredura
ccccc n— y
))))) L i= 3 ö 3

Figura 4.86 Componentes básicos de uma máquina ultra-sônica.

A Fig. 4.86 ilustra as partes básicas de um a m áquina de ultra-som . Vamos d iscu tir cada
parte individualm ente.

Transdutor
Um transdutor converte a energia de um a form a em outra. C ertam ente, você está fam iliari­
zado com um tipo de transdutor, os alto-falantes de um aparelho de som estereofônico. Eles
convertem a energia elétrica em som , quando a corrente elétrica é alterada em um fio. Essa
variação faz um ím ã nas proxim idades m over-se para frente e para trás, em purrando o ar e
criando assim um som . Um outro transdutor fam iliar é um m icrofone dinâm ico que converte
o som em energia elétrica, deixando as ondas sonoras m over em um ím ã que induz variações
de corrente em um fio nas proxim idades. Em um a m áquina ultra-sônica, o transdutor converte
os pulsos elétricos em pulsos de som e os pulsos de som (os ecos) em pulsos elétricos. No
entanto, em lugar de ím ãs, o transdutor usa cristais piezoelétricos. A plicando um a corrente
elétrica a um desses cristais, o cristal m uda rapidam ente de form a, vibrando, e assim gerando
ondas sonoras tipicam ente na faixa de freqüência de 1 a 30 m egahertz. As pessoas não conse­
guem ouvir quase nada acim a de 30 quilohertz (o term o “ultra-som ’' refere-se ao fato de que
228 Sistemas Digitais

a freqüência está além da audição hum ana). E ssas ondas sonoras (os ecos), quando se chocam
contra o cristal, criam um a corrente elétrica. O com ponente transdutor de um a m áquina ultra-
sônica pode conter centenas desses cristais, os quais podem ser vistos com o sendo centenas
de transdutores. C ada transdutor é considerado com o sendo um canal.

Formador de feixe
Um form ador de feixe “ focaliza" e “direciona" e le tro n ic a m e n te o feixe sonoro de um co n ­
ju n to de transdutores em direção a, ou oriundo de, pontos focais específicos, sem na realidade
ser necessário m over nenhum a peça, com o ocorre no caso de em um a antena parabólica, para
se obter esse foco e esse direcionam ento.
Para com preender a form ação de um feixe sonoro, devem os prim eiro e n ­
O s projetistas, em sua
tender a idéia da adição de sons. C onsidere dois foguetes pirotécnicos esto u ­
vida profission al, de­
vem freqiientem ente to­ rando com fortes estrondos ao m esm o tem po, o prim eiro a um qu ilô m etro e
m a r conhecim ento s o ­ o outro a dois q uilôm etros de você. D epois de cerca de três segundos, você
bre a área p a ra a q u a l ouvirá o estro n d o do prim eiro foguete, assu m in d o -se que o som viaja a 333
eles irã o re a liza r os m etros/segundo (ou um quilôm etro a cada três segundos) - um a aproxim ação
projetos. M uitos p ro je ­ razoável. O estro n d o do foguete m ais d istan te será ouvido cerca de seis se­
tistas consideram esse gundos após o seu estouro. D esse m odo, você ouvirá “bum ... (passam -se três
aprendizado, com o segundos) ... bum ". No entanto, em lugar disso, assu m a que o foguete m ais
co n h e ce r ultra-som , próxim o estoura três segundos após o esto u ro do m ais distante. N esse caso,
um dos aspectos fa s c i­
você ouvirá am bos ao m esm o tem po: um forte “ B U M !!!” . Isso ocorre porque
nantes do trabalho.
os dois sons som am -se. A gora, assum a que há 100 foguetes espalhados por
um a cidade e você deseja que os sons de todos esses foguetes atinjam sim ultaneam ente um a
casa em particular (talvez de alguém que não lhe agrade m uito). Você poderá conseguir isso
estourando os foguetes m ais próxim os algum tem po depois de ter estourado os m ais d istan ­
tes. .Se você controlar corretam ente os tem pos, aquela casa em particular ouvirá um estrondo
único “ B U M !!!", trem endam ente intenso, provavelm ente sacudindo bastante as paredes da
casa, com o se um enorm e foguete tivesse explodido. A o invés disso, as dem ais casas d a c i­
dade ouvirão um a série de estrondos m enos barulhentos, porque os instantes das explosões
não dão com o resultado que todos esses sons sejam som ados nessas outras casas.
A g o ra você en te n d e o p rin c íp io b ásico d a fo rm ação d e um feixe so n o ro : se você ti­
ver m últiplas fontes so n o ras (fo g u etes em n o sso ex em p lo , tran sd u to res em um a m áq u in a
u ltra-sô n ica) c o lo c a d a s em d iv erso s lo cais, você p o d erá fazer com que to d o s os so n s se­
ja m so m a d o s, cm um p o n to q u a lq u e r d o e sp a ç o . P ara isso , v o cê d e v e rá c o n tro la r c u i­
d a d o sa m e n te os in stan tes em q ue os so n s de to d as as fo n tes são g e ra d o s, de m o d o que
todas as o n d as so n o ras ch eg u em sim u ltan e a m e n te ao p o n to d esejad o . E m o u tras palav ras,
você p o d erá fo calizar e d ire c io n a r e le t r o n ic a m e n t e o feixe so n o ro in tro d u z in d o atraso s
ap ro p riad o s. A fo calização e o d ire c io n a m e n to d o som são ú teis p o rq u e a q u e le p o n t o em
p a r t i c u l a r p r o d u z ir á u m e c o m u it o m a is in t e n s o d o q u e t o d o s o s d e m a is p o n t o s . D esse
m odo. p o d erem o s o u v ir facilm en te o eco d a q u ele p o n to p o rq u e ele e sta rá acim a d o s ecos
de to d o s os d em ais pontos.
A Fig. 4.87 ilustra o conceito da localização e do d irecio n am en to eletrônicos, usando
duas fontes sonoras para focalizar e direcionar um feixe até um ponto X desejado.
No prim eiro degrau de tem po (Fig. 4.87(a)), a fonte inferior co m eça a em itir a sua onda
sonora. No segundo degrau de tem po (Fig. 4.87(b)), a fonte superior com eça a em itir a sua
onda sonora. D epois de três degraus de tem po (Fig. 4.87(c)), as ondas de am bas as fontes al­
cançam o ponto focal, som ando-se. Elas continuarão a se som ar enquanto as ondas de am bas
as fontes estiverem em fase entre si. P odem os sim plificar o desenho, m ostrando apenas as
linhas desde as fontes até o ponto focal, com o m ostrado na Fig. 4.87(d).
U m a m áquina de ultra-som usa essa capacidade para fo calizar e d irecio n ar eletro n ica­
m ente o som , varrendo ponto p o r ponto toda a região que está à frente dos transdutores. A
m áquina pode fazer essa varredura dezenas ou centenas de vezes por segundo.
Componentes de Blocos Operacionais 229

A s d u a s o n d a s a lc a n ç a m o
p o n t o fo c a l a o m e s m o t e m p o

ponto
focal
3
CD
D
CL
C
o
T
C
wU

(d)

Figura 4.87 Focalizando o som em um ponto em particular usando a formação de feixe: (a) primeiro
degrau de tempo - apenas o transdutor inferior gera som, (b) segundo degrau de tempo - agora o
transdutor superior também gera som, (c) terceiro degrau de tempo - os dois sons somam-se no ponto
focal, (d) uma ilustração mostrando que o transdutor superior está a dois degraus de tempo do ponto
focal, ao passo que o transdutor inferior está a três intervalos. Isso significa que o transdutor superior
deve gerar um som, com um atraso de um intervalo, após o transdutor inferior emitir um som.

Para cada ponto focal, a m áquina precisa escu tar o cco que retorna do tecido que está
presente nesse ponto. A partir disso, ela poderá determ inar se esse tecido é osso, pele, sangue,
etc., utilizando o fato de que cada um desses tecidos produz um eco diferente. L em bre-se
de que o eco oriundo do ponto focal é m ais intenso do que os dos d em ais pontos, porque
nesse ponto o som é o resultado de uma som a de sons. A form ação de feixe tam bém pode ser
usada para focalizar um dado ponto do espaço e escutá-lo. Para que o som seja focalizado
em um ponto em particular, quando “escutarm os” o som de um dado ponto focal, deverem os
tam bém , do m esm o m odo que pulsos sonoros são produzidos com atrasos específicos, intro­
duzir atrasos nos sinais que são recebidos pelos transdutores, porque o som chega antes aos
transdutores m ais próxim os do que aos m ais distantes. A ssim , usando atrasos apropriados,
poderem os “alinhar” os sinais de todos os transdutores, para que os sons captados, oriundos
do ponto focal, sejam todos som ados. Esse conceito está m ostrado na Fig. 4.88.

Ponto
focal
JL Atraso de
r e s u lta d o
in t e n s ific a d o

um degrau

_JUL
r e s u lta d o
(a) (b) (c) (d ) s e m a tr a s o

Figura 4.88 Escutando o som de um ponto em particular com a utilização da formação de feixe:
(a) primeiro degrau de tempo, (b) segundo degrau de tempo - o transdutor superior escutou pri­
meiro o som. (c) terceiro degrau de tempo - o transdutor inferior escuta agora o som, (d) atrasar
o transdutor superior em um degrau de tempo láz com que as ondas vindas do ponto focal sejam
somadas, amplificando o som.

N ote que certam ente haverá ecos dos dem ais pontos da região, m as os que vêm do ponto
focal serão m uito m ais intensos; desse m odo, os eco s m ais fracos poderão ser filtrados c
desprezados.
230 Sistemas Digitais

O bserve que a form ação de feixe pode ser usada para escu tar um ponto em particular,
m esm o que os sons vindos daquele ponto não sejam os ecos que estão retornando a partir
de nossos próprios pulsos sonoros, o som pode estar sen d o produzido pelo próprio objeto
naquele ponto, com o o m otor de um carro ou um a pessoa falando. A form ação de feixe é o
equivalente eletrônico do apontam ento de um a grande “antena parabólica” em um a direção
em particular. E ntretanto, a form ação de feixe não requer partes móveis.
A form ação de feixe é enorm em ente com um em um a am pla variedade de aplicações de
sonar, com o na observação de um feto ou co ração hum anos, na prospecção de petróleo no
subsolo, no m onitoram ento das regiões vizinhas de um subm arino, em espionagem , etc. A
form ação de feixe é usada em algum as próteses auditivas que têm m icrofones m últiplos para
focalizar a fonte da fala que está sendo detectada; nesse caso, a form ação de feixe deve ser
adaptativa. A form ação de feixe pode ser usada em telefones celulares com m icrofones m úl­
tiplos para focalizar a voz da pessoa e ate em estações de rádio base de telefones celulares
(usando sinais de rádio, e não ondas sonoras) para focalizar um sinal que está indo ou vindo
de um celular.

Processador de sinal, conversor de varredura e monitor


O processador de sinal analisa os dados de eco de cada ponto da região varrida, extraindo
o ruído (veja a Seção 5.11 para um a discu ssão sobre filtragem ), fazendo interpolação entre
pontos, atribuindo um nível de cinza a cad a ponto que depende dos ecos ouvidos (ecos co r­
respondentes aos ossos podem ser representados em branco, aos líquidos, em preto, e à pele,
em cinza, por exem plo) e realizando outras tarefas. O resultado é um a im agem da região em
escala de cinza. O conversor de varredura analisa gradativam ente essa im agem gerando os
sinais necessários para que um m onitor em preto-e-branco exiba a im agem .

Circuitos digitais de um formador de feixe de uma máquina de ultra-som


M uitas das tarefas de controle e de processam ento de sinais em um a m áquina de ultra-som
são realizadas usando software que e executado em um ou m ais m icroprocessadores, g eral­
m ente especiais que foram projetados especificam ente para o processam ento digital de sinais,
conhecidos com o processadores digitais de sinal, ou D SPs (Digital Signal Processors). N o
entanto, algum as tarefas são m uito m ais fáceis de serem realizadas usando circuitos digitais
custom izados, com o os do form ador de feixe.

Gerador de som e circuitos de atraso de eco


A fo rm ação d o feixe durante a etap a de
geração do som consiste em obter atrasos
ap ro p riad o s p ara cen ten as de tran sd u to ­
res. E sses atrasos variam dependendo do
ponto focal, de m odo que eles não podem
ser determ inados dentro dos próprios trans­
dutores. A o contrário, podem os colocar um
circuito de atraso à frente de cada transdu­
tor, com o m ostrado na Fig. 4.89. Para um
dado ponto focal, o D SP escreve o valor
ap ropriado de atraso em cada circu ito de
atraso, escrevendo o valor de atraso no bar-
ram ento denom inado atraso_da_saida e o Figura 4.89 Circuitos de atraso de saída de um
“endereço” nas linhas denom inadas end, e transdutor para dois canais.
habilitando o decodificador. O decodifica-
d o r irá ativar a linha de carga de um dos
com ponentes Atraso_De_Saída .
Componentes de Blocos Operacionais 231

D epois de escrever em cad a com ponente, o


D SP dá partida em todos sim ultaneam en te tor­
nando in íc io _ d a _ s a íd a igual a 1. C ada com po­ cnt 1 a
tc
nente Atraso_De_Saída, após o atraso esp ecifi­
ld ld
cado, produzirá um pulso em sua saída s. Vamos contador
decrescente
assum ir que esse pulso faz o transdutor produzir
um som . Em seguida, o D SP faz i n í c i o _ d a _ c <
s a íd a voltar a 0 e passa a escutar o eco.
Atraso_De_Saída
Podem os im plem entar o com ponente Atraso_
DeJSaída usando um contador decrescente com
carga paralela, com o m ostrado na Fig. 4.90. As Figura 4.90 Circuito Atraso_De_Saída.
entradas de carga paralela L e 1d carregam o co n ­
tador decrescente com seu valor inicial de co n ­ início_da_saída
tagem . A entrada c n t dá início à contagem d e ­ í atraso_da_saída
crescente, quando o contador chega a zero, ele * __
produz um pulso em tc . A saída de dados do co n ­ Atraso_
De_Saídald
tador não é usada nesta im plem entação.
<d
D epois que a m áq u in a de ultra-som em itiu
cada onda sonora focalizada cm um ponto focal atraso_do_eco
a - — X----
em particular, a m áquina deve escutar o eco que
Atraso_ ,d
retorna do ponto focal. Essa escuta requer atrasos De_Eco ta ►p a r a
apropriados em cad a transdutor, para levar em os
< t. atrasado s o m a d o r e s
co n sid eração as d ife re n te s d istân cias en tre o
ponto focal e cada transdutor. A ssim , cada trans­ Figura 4.91 Circuitos de atrasos de saída
d u to r necessita de um outro circu ito de atraso e de eco para o transdutor de um canal.
para atrasar o sinal de eco recebido, com o m os­
trado na Fig. 4.91. O com p o n en te Atraso_De__
Eco recebe na sua entrada t o sinal do transdutor, ~r a
reg ld
o qual será assum ido com o tendo sido d ig ita li­ <
zado com valores de N bits. Esse sinal deverá ser
colocado na saída t_ a tr a s a d o depois de ter sido
atrasado adequadam ente. O valor do atraso pode
■ y y
ser carregado pelo D SP usando as entrada a e ld
do com ponente.
P o d em o s im p lem en tar o co m p o n en te de
Atraso_De_Eco usando uma serie de registradores,
õ>
CD L-n
CD

_A_
CO
n5 r
CD

com o m ostrado na Fig. 4.92. Essa im plem entação Atraso De Eco <
pode atrasar o sinal de saída em zero, um, dois ou
tres ciclos de relógio, sim plesm ente usando as li­ Figura 4.92 Circuito Atraso_De_Eco.
nhas apropriadas de seleção do m ultiplexador 4x1.
Uma cadeia mais longa de registradores, juntam ente com um multiplexador maior, pode fornecer
atrasos maiores. O DSP configura o valor do atraso escrevendo no registrador superior, que por
sua vez ativa as linhas de seleção do m ultiplexador 4x1. Uma im plem entação mais flexível do
com ponente de Atraso JDe_Eco usaria em vez disso um com ponente temporizador.

Circuitos somadores - árvore de somadores


A saída de cada transdutor, apropriadam ente atrasada, deve ser som ada para criar um único
sinal de eco oriundo do ponto focal, com o foi ilustrado na Fig. 4.88. A quela figura linha ape­
nas dois transdutores e, conseqüentem ente, apenas um único som ador. O que aconteceria se
tivéssem os 256 transdutores, com o seria m ais provável em um a m áquina real de ultra-som ?
C om o som aríam os 256 valores? Poderíam os som ar os valores de m odo linear, com o ilustrado
à esquerda da Fig. 4.9 3 (a) para o caso de oito valores. O atraso desse circu ito é aproxim a-
232 Sistemas Digitais

dam ente igual ao atraso de sete som adores. A B C D E F G H A B C D E F G H


Para 256 valores, o atraso seria ap ro x im a­ 11 _ 1 K J L J _ L .1 I..I I
dam ente o de 255 som adores. Esse valor re­
presenta um atraso m uito grande. \j + I U
P oderem os fazer m elhor se reorganizar­ E

m os a form a pela qual calculam os a som a,


usan d o um a co n fig u ração de som adores,
\
L
atraso V
de três fs
co n h ecid a co m o um a árvore de somado­ somadores
res. Em outras palavras, ao invés de som ar (b)
( ( ( ( ( ( A + B )+ C )+ D )+ E )+ F )+ G )+ H , ilu s ­ T
trado na Fig. 4 .93(a), poderíam os calcular atraso de sete \
somadores Í~ T s
((A + B )+ (C + D )) + ((E + F )+ (G + H )), com o
( a)
m ostrado na Fig. 4 .9 3 (b ). A resp o sta é a
m esm a e usa o m esm o núm ero de som ado­
F ig u r a 4 .9 3 Som ando muitos números: (a)
res, m as este últim o m étodo realiza quatro
linearmente, (b) usando uma árvore de .soma­
som as em paralelo, então duas em paralelo
dores. Note que am bos os métodos usam sele
e cm seguida realiza um a últim a adição. O
somadores.
atraso é assim de apenas três som adores.
Para 256 valores, o prim eiro nível da árvore iria com putar 128 adições em paralelo, o segundo
nível, 64 adições em paralelo, então 32, então 16, então oito, então quatro, então duas e final­
m ente um a últim a adição. D esse m odo, a árvore de som adores teria oito níveis, significando
um atraso total igual a oito atrasos de som ador. Isso é bem m ais rápido do que 256 atrasos de
som ador - 32 vezes mais rápido , de fato.
A saída da árvore de som ad o res pode ser co lo cad a em um a m em ória para p erm itir o
acom panham ento dos resultados por parte do DSP, o qual poderá acessar os resultados algum
tem po após terem sido gerados.

Multiplicadores
A cabam os de ap resen tar um a versão g ran d e­
m ente sim plificada da form ação de feixe. N a
realidade, m uitos outros fatores devem ser co n ­
i início_da_saída

atraso_da_saída
y__
siderados durante a form ação de feixe. D iversas A traso.
ld
dessas co n sid eraçõ es poderão ser levadas em D e_Saída

conta m ultiplicando-se cada canal por valores < r e g i s t r a d o r ld


constantes, que o D SP novam ente estabelece de /
A <
form a individual para cad a um dos canais. Por
exem plo, focalizando um ponto sob a superfície
da pele, próxim o do dispositivo que é seguro
A t r a s o . ,cl
D e _ E c o ta
T
para
e conduzido pela m ão, pode requerer que seja < somadores
dado um peso m aio r aos sinais que chegam
oriundos dos transdutores da região próxim a do F ig u r a 4.94 Canal ampliado com um mul­

centro do dispositivo. Portanto, um canal pode tiplicador.


na realid ad e incluir um m ultiplicador, com o
m ostrado na Fig. 4.94. O D SP pode escrever um valor no registrador m ostrado. Esse valor
representaria um a constante pela qual o sinal do transdutor seria m ultiplicado.
N o ssa introdução à m áquina de ultra-som foi g ran d em en te sim plificada em relação a
um a m áquina real. M esm o nesta introdução sim plificada, você pode ver em uso m uitos dos
com ponentes de bloco operacional deste capítulo. U sam os um co n tad o r decrescen te para
im plem entar o com ponente Atraso_De_Saída. D iversos registradores ju n tam en te com mul-
tiplexadores foram usados no com ponente Atraso_De_Eco. U sam os m uitos som adores para
adicionar os sinais que chegam dos transdutores c usam os um m ultiplicador para d ar pesos
diferentes a esses sinais.
Componentes de Blocos Operacionais 233

Desafios futuros em ultra-som


N as duas últim as décadas, as m áquinas de ultra-som passaram de quase totalm ente an aló g i­
cas para digitais em sua m aioria. O s sistem as digitais consistem em circuitos digitais cu sto ­
m izados e software executado em D SPs e m icroprocessadores, que trabalham em conjunto
para criar im agens em tem po real.
U m a das principais tendências das m áquinas de ultra-som envolve a criação de im agens
tridim ensionais (3D ) em tem po real. A m aioria das m áq u in as de ultra-som das décadas de
1990 e 2000 gerava im agens bidim ensionais, cuja qualidade (ou seja, m ais pontos focais por
im agem ) foi m elhorando durante essas décadas. D iferen tem en te do ultra-som b id im en sio ­
nal, a g eração de im agens 3D req u er que a v isu alização da reg ião de in teresse seja feita
desde diferentes perspectivas, exatam ente co m o as pessoas veem as coisas com seu p ar de
olhos. Tal g eração tam bém requer um a quantidade m uito g ran d e de cálculos para que um a
im agem 3D seja criada desde duas (ou m ais) perspectivas. O resultado é um a im agem com o
a da Fig. 4.95.
E ste é o rosto de um feto. Im pressionante,
não é? L eve em co n sid eração q ue esta im a­
gem é feita tão som ente de ondas sonoras que
são refletidas no ventre de um a m ulher. A cor
tam bém pode ser acrescentada para distin g u ir
entre os diversos fluídos e tecidos. E sses cál­
culos tom am tem po, m as processadores m ais
ráp id o s, aco p lad o s a circu ito s dig itais c u sto ­
m izados en g en h o so s, estão trazen d o o ultra-
som 3D em tem po real para m ais próxim o da
realidade.
Um a outra tendência é em direção a m áqui­
nas m enores e m ais leves, de m odo que pos­ Figura 4.95 Im agem 3D do rosto de um
sam ser usadas em um a variedade m ais am pla feto. A foto é uma cortesia da Philips M edi­
de situações envolvendo cuidados de saúde. As cai Systems.
prim eiras m áquinas eram volum osas e pesadas,
as m ais m odernas vêm em carros m óveis e algum as versões recentes são portáteis. Um a
outra tendência está ocorrendo no sentido de tornar as m áquinas de ultra-som m ais baratas,
de m odo que possivelm ente cad a m édico tenha um a em seu consultório, cada am bulância
transporte um a para aju d ar o pessoal de em erg ên cia m édica a apurar a extensão de certos
ferim entos, e assim por diante.
O ultra-som é usado em num erosas outras aplicações m édicas, tal com o no im ageam ento
do coração para detectar problem as de artérias ou válvulas. Tam bém é usado em várias outras
aplicações, com o no m onitoram ento de regiões subm arinas.

► 4.14 RESUMO DO CAPITULO


N este capítulo, com eçam os (Seção 4 . 1) introduzindo a idéia de construir blocos construtivos
para serem usados em operações com uns envolvendo dados com m últiplos bits. Esses blocos
são conhecidos com o com ponentes de bloco operacional ou de nível de transferência entre
registradores. A seguir, introduzim os um a série de co m p o n en tes de bloco operacional, in­
cluindo registradores, registradores de deslocam ento, som adores, com paradores, contadores,
m ultiplicadores, subtratores, unidades de aritm ética e lógica e bancos de registradores. Em
cada com ponente, exam inam os dois aspectos: o projeto interno do com ponente e o uso do
com ponente em aplicações.
Term inam os (Seção 4.13) descrevendo alguns princípios básicos que fundam entam o fun­
cionam ento de um a m áquina de ultra-som e m ostrando com o diversos com ponentes de bloco
234 Sistemas Digitais

operacional podem ser usados para im plem entar partes da m áquina. A lgo que você deve ter
notado é com o o projeto de um a m áquina de ultra-som real requer conhecim entos da área de
ultra-som . E m uito com um que um program ador de software ou um projetista digital tenham
algum entendim ento da área da aplicação.
No próxim o capítulo, você aplicará o seu conhecim ento de projeto lógico com binacional,
projeto lógico seqüencial (projeto de blocos de controle) e com ponentes de bloco o peracio­
nal para construir circuitos digitais que poderão im plem entar tarefas com putacionais m uito
genéricas e poderosas.

► 4.15 EXERCÍCIOS
O s exercícios indicados com um asterisco (*) são m ais desafiadores.
N os exercícios relativos a com ponentes de bloco operacional, está indicado se a ênfase
está no projeto interno ou no uso do com ponente.

SEÇÃO 4.2: REGISTRADORES


4.1 Analise o comportamento de um registrador de oito bits de carga paralela com entrada I,saída Q e
entrada de controle de carga ld. completando o seguinte diagrama de tempo.

i -K 5 X 1 X 124 92 0 X~^~>
ld

c lk

4.2 Analise o comportamento de um registrador de oito bits de carga paralela com entrada 1. saída
Q, entrada de controle de carga ld c entrada c lr síncrona para fazer reseu completando o seguinte
diagrama de tempo.

I — < 5 ) C ~ Q < 124 X 65 X 92 )C ^^< 0 X 21 >-

c lr

c lk

4.3 Projete um registrador de quatro bits com duas entradas de controle sl e sü, quatro entradas de
dados 13. 12. 11 e 10, e quatro saídas de dados Q3, Q2. Ql e Q0. Quando sls0=00. o registrador
mantém o seu valor. Quando s 1$0=01. o registrador carrega 13..10. Quando sls0=10, o regis­
trador é carregado com 0000. Quando sls0 = l 1, o registrador faz o complemento do conteúdo,
de modo que, por exemplo, 0000 torna-se 1111 e 1010 torna-se 0101. (P ro b le m a de p ro je to de
com ponente.)

4.4 Repita o problema anterior, mas quando sls0= l 1 o registrador inverte a ordem de seus bits, de
modo que 1110 torna-se 0111 e 1010 torna-se 0101. (P ro b lem a de projeto de com ponente.)
4.5 Projete um registrador de oito bits com duas entradas de controle sl e s0, oito entradas de dados
17..10 e oito saídas Q7..Q0. A entrada sls0=00 significa manter o valor atual. sls0=01 significa
carregar e sls()=10 significa cle a r. Quando s 1s0= 11, o n ib b le superior troca de lugar com o nib-
Componentes de Blocos Operacionais 235

ble inferior (um nibble corresponde a quatro bits), de modo que 11110000 torna-se 00001111, e
11000101 torna-se 01011 100, por exemplo. (Problema de projeto de componente.)
4.6 O radar portátil que é usado por um policial está sempre emitindo um sinal de radar e medindo a
velocidade dos carros quando passam. No entanto, quando o policial quer multar um motorista por
excesso de velocidade, ele deve guardar a velocidade medida do carro, memorizando-a na unidade
de radar. Construa um sistema para implementar o recurso de memorização de velocidade no radar
portátil. O sistema tem uma entrada V de velocidade, uma entrada B do botão de memorização
do radar portátil e uma saída D de dados que serão enviados ao mostrador de velocidade do radar.
(Problema de projeto de componente.)

SEÇÃO 4.3: S 0M A D 0R E S
4.7 Analise os valores que aparecem nas saídas de um somador de três bits com propagação de “vai
um” para cada intervalo de tempo correspondente ao atraso de um somador completo, quando 111
é somado a 011. Assuma que todas as entradas foram zero anteriormente por um período longo de
tempo.
4.8 Assumindo que todas as portas têm um atraso de uma unidade de tempo, calcule o tempo mais longo
necessário para somar dois números usando um somador de oito bits com propagação de “vai um”.
4.9 Assumindo que as portas AND têm um atraso de duas unidades de tempo, as portas OR. um atraso
de uma unidade de tempo, e as portas XOR. um atraso de três unidades de tempo, calcule o tempo
mais longo necessário para somar dois números usando um somador de oito bits com propagação
de “vai um”.
4.10 Projete um somador de dez bits com propagação de “vai um” usando somadores de quatro bits
com propagação de “vai um”. (Problema de uso de componente.)
4.11 Projete um somador que calcula a soma de três números de oito bits. usando somadores de oito
bits com propagação de “vai um”. (Problema de uso de componente.)
4.12 Projete um somador que calcula a soma de quatro números de oito bits. usando somadores de oito
bits com propagação de “vai um”. (Problema de uso de componente.)
4.13 Projete um termômetro digital que pode compensar erros na saída T da medição de temperatura
do dispositivo, a qual 6 uma entrada de oito bits em nosso sistema. O valor da compensação pode
ser positivo apenas, e chega ao nosso sistema via as entradas a, b e c. a partir de uma chave DIP de
três pinos. O nosso sistema deve fornecer a temperatura compensada por meio de uma saída U de
oito bits. (Problema de uso de componente.)
4.14 Repita o problema anterior, exceto que o valor da compensação pode ser positivo ou negativo,
entrando em nosso sistema por meio de quatro entradas a, b, c e d. a partir de uma chave DIP de
quatro pinos. O valor da compensação está na forma de complemento de dois (de modo que é bom
que a pessoa que ajusta a chave DIP saiba disso!) Projete o circuito. Qual é o valor do intervalo de
compensação possível da temperatura de entrada? (Problema de uso de componente. )
4.15 Podemos somar três números de oito bits, conectando cada somador de oito bits, com propagação
de “vai um”, à saída de outro somador de oito bits. com propagação de “vai um”. Assumindo que
todas as portas têm um atraso de uma unidade de tempo, calcule o atraso mais longo desse soma­
dor de três números de oito bits. Sugestão: você terá de examinar cuidadosamente o interior dos
somadores, com propagação de “vai um”, incluindo a parte interna dos somadores completos, para
que o atraso mais longo seja calculado corretamente, indo de qualquer entrada até qualquer saída.
(Problema de uso de componente.)

SEÇÃO 4.4: DESLOCADORES


4.16 Projete um deslocador de oito bits que desloca suas entradas de dois bits à direita (entrando 0s),
quando a entrada de controle de deslocamento do deslocador é l . (Problema de projeto de com­
ponente.)
4.17 Projete um circuito que fornece a média de quatro entradas de oito bits, representando números
binários (não na forma de complemento de dois). (Problema de uso de componente.)
236 Sistemas Digitais

4.18 Projete um circuito que toma uma entrada I) de oito bits, representando números binários (não na
forma de complemento de dois), e fornece o dobro desse valor. (Problem a cie uso de com ponente.)
4.19 Projete um circuito que fornece um valor que d nove vezes o valor de sua entrada D de oito bits,
representando números binários (não na forma de complemento de dois). Sugestão: use um deslo­
cador e um somador. (P ro b lem a de uso de com ponente.)
4.20 Projete um circuito especial de multiplicação que faz o produto de sua entrada de 16 bits por l, 2,
4, 8. 16 ou 32, especificado por três entradas a. b e c (abc=000 significa nenhuma multiplicação,
abc=001 significa multiplicar por 1. abc=010. por 4. abc=()l 1, por 8, abc=100, por 16 e abc=l()l
significa multiplicar por 32). Sugestão: use um componente predefinido que foi descrito neste
capítulo. (P ro b lem a de uso de com ponente.)
4.21 Analise detalhadamente o funcionamento do deslocador b a rre i mostrado na Fig. 4.42, quando
I=0110 0 10 1, x = I, y = 0 e z = l . Assegure-se de mostrar como a entrada I é deslocada após cada
estágio interno do deslocador.
4.22 Analise detalhadamente o funcionamento do registrador b a rre i mostrado na Fig. 4.42, quando
I= 10 0 110 11 , x = 0, y = l e z = 0. Assegure-se de mostrar como a entrada I é deslocada após cada
estágio interno do deslocador.
4.23 Usando o deslocador b a rre i mostrado na Fig. 4.42. quais valores são necessários nas entradas x. y
e z para que a entrada l seja deslocada seis posições à esquerda?

SEÇÃO 4.5: C0M PARAD0RES


4.24 Analise detalhadamente o funcionamento do comparador mostrado na Fig. 4.45, quando a= 15 e b= 12.
Assegure-se de mostrar como as comparações propagam-se através dos comparadores individuais.
4.25 Frojete um comparador que determina se três números de quatro bits são iguais, conectando com­
paradores de magnitude de quatro bits entre si e usando componentes adicionais, se for necessário.
(P ro b lem a de uso de com ponente.)
4.26 Projete um comparador de magnitude de quatro bits, com propagação de bit de transporte, que
tem duas saídas, uma de maior do que ou igual, gte , e outra saída de menor do que ou igual, Ite.
Assegure-se de mostrar claramente as equações usadas no desenvolvimento dos comparadores
individuais de um bit e como eles são conectados para formar o circuito de quatro bits. (Prob lem a
de p rojeto de com ponente.)
4.27 Projete um comparador de magnitude de cinco bits. (P ro b lem a de projeto de com ponente.)
4.28 Projete um circuito que fornece I na saída quando a entrada de oito bits do circuito é 99:
(a) usando urn comparador de igualdade,
(b) usando apenas portas.
Sugestão: no caso de (b). você precisará de apenas uma porta AND e alguns inversores. (Problem a
de uso de com ponente.)
4.29 Use comparadores de magnitude e uma lógica para projetar um circuito que determina o mínimo
de três números de oito bits. (P ro b le m a de uso de com ponente.)
4.30 Use comparadores de magnitude e uma lógica para projetar um circuito que determina o máximo
de dois números de 16 bits. (P ro b le m a de uso de com ponente.)
4.31 Use comparadores de magnitude e uma lógica para projetar um circuito que fornece um l na saída
quando uma entrada de oito bits está entre 75 e 100. inclusive. (Problem a de uso de com ponente.)
4.32 Você deve projetar um sistema de alarme para temperatura corporal de pessoas, que será usado em
um hospital. O seu sistema toma uma entrada de oito bits, que representa a temperatura, indo de
0 a 255. Se a temperatura medida for igual ou menor do que 35, você deverá fazer a saída A ser
l . Se a temperatura estiver entre 36 e 40. você deverá tornar a saída B igual a l . Finalmente, se a
temperatura for igual ou maior do que 41, você deverá fazer com que C seja igual a l . (Prob lem a
de uso de com ponente.)

4.33 Você está trabalhando como adivinhador de pesos em um parque de diversões. O seu trabalho é
tentar adivinhar o peso das pessoas antes que elas subam na balança. Se a sua estimativa não esti­
Componentes de Blocos Operacionais 237

ver a menos de cinco quilogramas do peso real da pessoa (para mais ou para menos), ela ganhará
um prêmio. Construa um sistema que analisa a sua estimativa e fornece uma saída, indicando se
o valor está a menos de cinco quilogramas. O analisador tem uma entrada E de oito bits para o
valor estimado, uma entrada P de oito bits com o valor correto medido pela balança e uma saída
simples C que será 1 se o peso estimado estiver dentro dos limites definidos pelas regras do jogo.
(P ro b lem a de uso de com ponente.)

SEÇÃO 4.6: CONTADORES


4.34 Projete um contador crescente de quatro bits que tem duas entradas de controle: cnt habilita a
contagem crescente, ao passo que c le a r faz o reser síncrono do contador colocando Os em suas
saídas:
(a) usando um registrador de carga paralela como bloco construtivo,
(b) usando diretamente flip-flops e multiplexadores e seguindo o procedimento de projeto de
registrador da Seção 4.2. (P ro b le m a de projeto de com ponente.)
4.35 Projete um contador decrescente de quatro bits que tem três entradas de controle: cnt habilita a
contagem crescente, c le a r faz o reset síncrono do contador colocando Os em suas saídas, e set
coloca sincronicamentc ls em todas as suas saídas:
(a) usando um registrador de carga paralela como bloco construtivo,
(b) usando diretamente flip-flops e multiplexadores e seguindo o procedimento de projeto de
registrador da Seção 4.2. (P ro b le m a de projeto de com ponente.)
4.36 Projete um contador crescente de quatro bits com uma saída adicional upper. Esse sinal fornece
1 sempre que o contador estiver dentro da metade superior (u p p er) do intervalo de contagem do
contador, ou seja, 8 a 15. Use um contador crescente básico de quatro bits como bloco construtivo.
(P ro b le m a de p rojeto de com ponente.)
4.37 Projete um contador crescente/decrescente de quatro bits que tem quatro entradas de controle:
cnt_up habilita a contagem crescente, c n tjd o w n habilita a contagem decrescente, c le a r faz o reset
síncrono do contador colocando Os em suas saídas e set coloca 1s de modo síncrono em todas as
suas saídas. Se ambas as entradas de controle c o u n tju p e count_dow n forem 1, o contador irá
manter o seu valor corrente de contagem. Use um registrador de carga paralela como bloco cons­
trutivo. (P ro b le m a de projeto de com ponente.)
4.38 Projete o circuito de um contador decrescente de quatro bits. (Problem a de projeto de componente.)
4.39 Projete um sistema de roleta de contagem eletrônica usando um contador de 64 bits. A entrada é
um bit A. que será 1 durante exatamente um ciclo de relógio sempre que uma pessoa passar pela
roleta. A saída é um número binário de 64 bits. Uma segunda entrada B será 1 sempre que um
botão de reset for pressionado e Os serão colocados em todas as saídas do contador. Sabendo que
a Disneylandia da Califórnia atrai cerca de 15.000 visitantes por dia, e assumindo que todos eles
passam pela sua roleta, quantos dias serão necessários antes que o contador volte a zero? (P r o ­
blem a de uso de com ponente.)
4.40 (a) Usando um contador crescente, com uma entrada de controle síncrona de c le a r e uma lógica
extra, projete um circuito que gera uma saída 1 a cada 99 ciclos de relógio.
(b) Projete o contador da parte (a), mas use um contador decrescente com carga paralela.
(c) Quais são os tradeoffs entre os dois projetos das partes (a) e (b)?
(P ro b lem a de uso de com ponente.)
4.41 (a) Dê os intervalos de contagem para contadores com as seguintes larguras de bit: 8, 12. 16, 20,
32,40, 64 e 128 bits.
(b) Para cada tamanho de contador da parte (a), assumindo um relógio de l Hz, indique quantos
minutos, horas, dias. etc. o contador ficaria contando antes que retornasse a zero.

SEÇÃO 4.7: MULTIPLICADORES - ESTILO ARRAY


4.42 Assumindo que todas as portas têm um atraso de uma unidade de tempo, quais dos seguintes pro­
jetos irá calcular mais rapidamente o produto de oito bits dado por A*9:
(a) um circuito como o projetado no Exercício 4 .19, ou
238 Sistemas Digitais

(b) um multiplicador, estilo a rra y , de oito bits com uma de suas entradas conectada a um valor
constante de nove.
4.43 Projete um multiplicador, estilo a rra y , de oito bits. (Prob lem a de p rojeto de com ponente.)
4.44 Projete uma versão mais exata do conversor de graus Celsius para Fahrenheit do Exemplo 4.10.
O novo circuito de conversão recebe a temperatura digitalizada em graus Celsius na forma de um
número binário C de 16 bits, e fornece a temperatura em graus Fahrenheit na forma de uma saída
F de 16 bits. A nossa equação mais exata para o cálculo aproximado de uma conversão de Celsius
para Fahrenheit é: F = C*30/16 + 32. (Prob lem a de uso de com ponente.)

SEÇÃO 4.8: SUBTRATORES


4.45 Desenvolva o projeto interno de um subtrator completo. (P ro b le m a de projeto de com ponente.)
4.46 Converta os seguintes números binários em complemento de dois para números decimais:
(a) 00001111
(b) 10000000
(c) 10000001
(d) 11111111
(e) 10010101
4.47 Converta os seguintes números binários em complemento de dois para números decimais:
(a) 01001101
(b) 00011010
(c) I I 101001
(d) 10101010
(e) 11111100
4.48 Converta os seguintes números binários em complemento de dois para números decimais:
( a ) 11100000
(b) 01111111
(c) 11110000
( d ) 11000000
(e) 11100000
4.49 Converta os seguintes números binários de nove bits, em complemento de dois. para números
decimais:
(a) 011111111
(b) 111111111
( c ) 100000000
( d ) 110000000
(e) 11111I I 10
4.50 Converta os seguintes números decimais para números binários de oito bits na forma de comple­
mento de dois:
(a) 2
(b) -1
(c) -23
(d) -128
(e) 126
(0 127
(g) 0
4.51 Converta os seguintes números decimais para números binários de oito bits na forma de comple­
mento de dois:
(a) 29
(b) 100
(c) I25
(d) -29
Componentes de Blocos Operacionais 239

(e) -100
(0 -125
(g) -2
4.52 Converta os seguintes números decimais para números binários de oito bits na forma de comple­
mento de dois:
(a) 6
(b) 26
(c) -8
(d) -3 0
(e) -6 0
(0 -90
(g) -120
4.53 Converta os seguintes números decimais para números binários de nove bits na forma de comple­
mento de dois:
(a) 1
(b) -1
(c) -256
(d) -255
(c) 255
(0 -8
(g) -128
4.54 Usando subtratores de quatro bits, construa um subtrator que tem três entradas de oito bits. A, B e
C, e uma única saída de oito bits. F, em que F=(A-B) - C. (Prob lem a de uso de com ponente.)
4.55 Você recebe um termômetro digital que digitaliza a temperatura gerando um número binário K de
16 bits em graus Kelvin. Construa um sistema que converte a temperatura para um valor Fahre­
nheit de 16 bits. Use a seguinte equação para fazer uma conversão aproximada: F = (K-273)*2+32.
(Prob lem a de uso de com ponente.)

SEÇÃO 4.9: UNIDADES LÓ G IC O -A R ITM E TIC A S-A LU s


4.56 Projete uma ALU com duas entradas A e B de oito bits e sinais de controle x, y e z. A ALU deve
realizar as operações descritas na Tabela 4.3. Use um somador de oito bits c um extensor aritine-
tico/lógico. (P ro b le m a de p rojeto de com ponente.)

TABELA 4.3 O perações d e se ja d a s da ALU

Entradas
Operação
X y z
OO
<
CO

0 0 0
II
1

0 0 1 S=A +B
0 i 0 S=A * 8
0 i 1 S = A /8
1 0 0 S = A NAND B (NAND bit a bit)
1 0 1 S = A XOR B (XOR bit a bit))
1 i 0 S = Inverter A (inversão da ordem dos bits)
1 i 1 S = NOT A (com plem ento bit a bit)
240 Sistemas Digitais

4.57 Projete uma ALU com duas entradas A e B de oito bits e sinais de controle x, y e z. A ALU deve
realizar as operações descritas na Tabela 4.4. Use um somador de oito bits e um extensor aritmé-
tico/lógico. (P ro b lem a de p rojeto de com ponente.)

TABELA 4.4 Operações desejadas da ALU

Entradas
Operação
x y z
0 0 0 S =A +B
0 0 1 S = A AND B (AND bit a bit)
0 i 0 S = A NAND B (NAND bit a bit)
0 i 1 S = A OR B (OR bita bit))
1 0 0 S = A NOR B (NOR bit a bit))
1 0 1 S = A XOR B (XOR bit a bit))
1 1 0 S = A XNOR B (XNOR bita bit))
1 1 1 S = NOT A (complemento bita bit)

4.58 Um professor que ensina álgebra booleana quer ajudar seus alunos a aprender e entender os ope­
radores booleanos. Para isso, deseja colocar à disposição dos estudantes uma calculadora capaz
de realizar operações AND. NAND, OR, NOR, XOR, XNOR e NOT. bit a bit. Usando a ALU
especificada no Exercício 4.57, construa uma calculadora lógica simples, usando chaves DIP nas
entradas e LEDs na saída. A calculadora lógica deve ter também uma chave DIP de três entradas
para selecionar qual operação lógica deverá ser realizada. (P ro b lem a de uso de com ponente.)

SEÇAO 4.10: BANCOS DE REGISTRADORES


4.59 Projete um banco de registradores 8x32 de duas portas (uma de leitura, uma de escrita). (Problem a
de p rojeto de com ponente.)
4.60 Projete um banco de registradores 4x4 de três portas (duas de leitura, uma de escrita). (Prob lem a
de p rojeto de com ponente.)
4.61 Projete um banco de registradores I0xl4 (uma porta de leitura, uma porta de escrita). (Prob lem a
de p rojeto de com ponente.)
4.62 *Crie um sistema de discagem rápida para telefone. Oito botões especiais b0-b7 acessam cada
número previamente armazenado. O número que foi discado por último existe como nove dígitos
armazenados em nove registradores R0-R8 de oito bits. Quando o usuário do telefone aperta
um outro botão S juntamente com qualquer um dos botões b()-b7. o número que foi discado por
último é armazenado no banco de registradores, na posição correspondente ao botão. Quando o
usuário pressiona apenas um dos botões b0-b7, o número presente no banco de registradores, na
posição correspondente ao botão, é lido e colocado em nove saídas P0-P8 de oito bits. (Prob lem a
de uso de com ponente.)
Componentes de Blocos Operacionais 241

► PERFIL DE PROJETISTA
Roman começou a es­ irão ajudá-lo a resolver os problemas que você encon­
tudar ciência da com­ tra como engenheiro". Roman destaca que nas últimas
putação na graduação décadas o projeto digital vem mudando a passos rápi­
porque se interessava dos. Isso torna necessário que os engenheiros aprendam
por desenvolvimento novas técnicas de projeto e novas linguagens de pro­
de software. Durante a gramação, como VHDL ou SystemC, e sejam capazes
graduação, seus inte­ de adotar novas tecnologias para permanecerem bem-
resses am pliaram -se sucedidos. “À medida que a indústria continua a progre­
incluindo projeto digi­ dir rapidamente, as companhias contratam engenheiros
tal e sistemas embar­ não só pelo que já conhecem, mas mais pela capacidade
cados e, por fim. leva­ que têm para continuar ampliando esse conhecimento e
ram-no a se envolver aprendendo novas habilidades." Ele destaca que “a gra­
com pesquisa, desenvolvendo novos métodos para au­ duação dá aos estudantes uma excelente oportunidade
xiliar os projetistas a construir rapidamente circuitos de aprender não só informações e habilidades essen­
integrados (IC) de grande porte. Roman continuou seus ciais ao seu trabalho acadêmico, mas também de apren­
estudos e recebeu seu grau de mestre em ciência da der mais por conta própria, possivelmente aprendendo
computação. Após, Roman trabalhou em uma grande diferentes linguagens de programação, envolvendo-se
empresa, projetando circuitos integrados (ICs) para com a pesquisa ou trabalhando em atividades de projeto
eletrônica de consumo, e também em uma start-up de maior porte."
company* voltada ao processamento de alto desempe­ Roman está motivado pela satisfação obtida com o
nho. seu trabalho e pela possibilidade de trabalhar com ou­
Roman sente-se satisfeito trabalhando tanto como tros engenheiros, compartilhando os mesmos interesses.
um desenvolvedor de software, como um engenheiro de “A motivação é uma das chaves para se ter sucesso em
hardware. Ele acredita que “basicamente, projetos de uma carreira de engenheira. Embora a motivação possa
hardware e de software são muito similares, porque fun­ vir de muitas fontes, poder encontrar uma carreira,
damentam-se na resolução eficiente de problemas difí­ na qual se esteja verdadeiramente interessado e satis­
ceis. Embora boas habilidades para resolver problemas feito, realmente ajuda. Os colegas de trabalho também
sejam importantes, boas habilidades para aprender tam­ são uma grande fonte de motivação, como também de
bém são importantes”. Contrariamente ao que muitos conhecimentos e conselhos técnicos. Trabalhar como
estudantes possam acreditar, ele destaca que “aprender membro de uma equipe que se comunica bem é muito
é uma atividade e uma habilidade fundamental, que não gratificante. Você é capaz de se motivar mutuamente,
termina quando você recebe seu diploma. Para resolver além de usar seus pontos fortes, juntamente com os de
problemas, você frequentemente tem de aprender no­ seus colegas, para alcançar objetivos muito além dos
vas habilidades, adotar novas ferramentas e linguagens que você poderia atingir sozinho."
de programação, c determinar se as soluções existentes

* N. de T: Trata-se de um novo empreendimento de risco, geralmente voltado a tecnologias avançadas recentes, não sendo ainda
necessariamente lucrativo.
Projeto em Nível de
Transferência entre
Registradores (RTL)

► 5.1 INTRODUÇÃO
N os c a p ítu lo s a n terio res, d efin im o s os c o m p o n e n te s c o m b in a c io n a is e se q ü e n c iais que
são n ecessário s para c o n stru ir sistem as digitais. N este cap ítu lo , ap ren d erem o s a co n stru ir
sistem as d ig itais in teressan tes e úteis a p a rtir d esses co m p o n en tes. Em particular, vam os
co m b in ar c o m p o n en tes de b lo co s o p e ra c io n a is p ara c o n stru ir os b lo co s o p e ra c io n a is e
u sarem o s b lo co s de co n tro le para co n tro lá -lo s. A co m b in a ç ã o de um bloco de co n tro le
com um bloco operacional é co n h ecid a com o processador. A lguns p ro cessad o res, co m o os
de um co m p u tad o r pessoal, são program áveis - esses p ro cessad o res são o tem a cen tral do
C ap ítu lo 8. O utros p ro cessad o res são cu sto m izad o s para realizar um a tarefa em particular,
não sendo p ro g ram áv eis - o p ro jeto d esses p ro cessad o res cu sto m izad o s é o tem a central
deste capítulo.
A tualm ente, os projetistas digitais concentram -se principalm ente no projeto de p roces­
sadores custom izados, em oposição ao projeto de com ponentes digitais de m ais baixo nível.
Podem os defin ir um processador custom izad o com o sen d o um circu ito digital q u e im ple­
m enta um algoritm o de com putador - um a seqüência de instruções que realiza um a tarefa
em particular. Por exem plo, podem os definir um algoritm o que filtra o ruído presente em um
fluxo de sinais digitalizados de áudio e, então, criar um processador para im plem entar aquele
algoritm o. Um outro algoritm o pode codificar dados com propósitos de com ercio eletrônico
seguro. Um algoritm o poderia com parar um a im pressão digital com 10.000 outras, para per­
m itir que um policial determ inasse rapidam ente se alguém é um crim inoso que está sendo
procurado. U m algoritm o de processam ento de im agem poderia detectar a presença de um
tanque (m ilitar) em um a im agem m uito grande de vídeo. A form ação de um feixe, parte do
exem plo da m áquina de ultra-som do capítulo anterior, pode ser en tendida com o sendo um
outro algoritm o, im plem entado usando o procedim ento de projeto de p ro cessad o r daquele
capítulo. De fato, na realidade, diversos de nossos exem plos do capítulo anterior, com o o
display colocado acim a do espelho retrovisor, a calculadora baseada em chaves DIP e o co n ­
versor de espaço de cores, podem ser entendidos com o sendo processadores m uito sim ples
que im plem entam algoritm os igualm ente sim ples.
O s processadores podem ser projetados usando diversos m étodos de projeto. O m étodo
m ais com um , p raticad o hoje em dia, é co n h ecid o co m o p ro jeto em nível d e tran sferên cia
en tre registradores. O projeto em nível de transferência entre registradores , ou projeto
Projeto em Nível de Transferência entre Registradores (RTL) 243

(Register Transfer Levei), co n siste em urna am p la variedade de ab o rd ag en s. N o entanto,


g eralm en te um p ro jetista esp ecifica os reg istrad o res de um circu ito , d escrev e as possíveis
transferências e operações a serem realizadas com os dad o s de entrad a, de saída e dos regis­
tradores, e define o controle que especifica qu an d o tran sferir e o p erar com os dados.
R ecordando os processos de projeto que definim os para circuitos com binacionais, no C a­
pítulo 2, e para circuitos seqüenciais (blocos de controle), no C apítulo 3, tínham os:

• N o processo de projeto lógico com binacional, delineado na Tabela 2.5,


1. O prim eiro passo era capturar o com portam ento desejado para o circuito lógico com ­
binacional, por m eio de um a tabela-verdade ou um a equação.
2. O s dem ais passos eram converter o com portam ento em um circuito.

• N o processo dc projeto lógico sequencial (bloco de controle) da Tabela 3.2,


1. O prim eiro passo era capturar o com portam ento desejado para o circuito lógico se-
qüencial, usando um a m áquina de estados finitos.
2. O s dem ais passos eram converter o com portam ento em um circuito.

Portanto, não deve ser surpresa que:

1. O prim eiro passo de um m étodo de projeto RTL será capturar o com portam ento d e­
sejado do processador. Introduzirem os o conceito de m áquina de estados de alto nível
para capturar o com portam ento RTL.

2 . O s dem ais passos serão converter o com portam ento em um circuito.


A Fig. 5.1 ilustra a idéia de que o processo de pro­
■Capture o comportamento)
je to pode ser visto com o sendo inicialm ente a captura
do co m p o rtam en to e, em seguida, a conv ersão desse
com portam ento em um circuito. Esse processo aplica-se
a todos os casos, independentem ente de estarm os reali­
Converta em circuito
zando projeto lógico com binacional, lógico seqüencial
ou RTL.
Figura 5.1 O processo de projeto.
N este capítulo, introduzirem os o processo de projeto
RTL, tam bém conhecido com o m étodo de projeto RTL.
C om o o processo é criativo em sua m aior parte, u tili­
zarem os num erosos exem plos para ilustrar o processo.
Introduzirem os tam bém diversos com ponen tes de alto
nível, que serão úteis durante o projeto RTL, incluindo
com ponentes de m em ória e de fila.

► 5.2 0 MÉTODO DE PROJETO RTL


Na prática, o projeto RTL é realizado usando um a am pla variedade de m étodos, m as pode ser
útil definir um m étodo geral com o o da Tabela 5 . 1.
P ode ser n ecessário um quinto passo, no qual a freq ü ên cia de reló g io é esco lh id a. Os

circuito final.
A im plem entação da FSM do bloco de co n tro le, na fo rm a de um circu ito sequencial,
com o aprendem os no C apítulo 3, com pletaria então o projeto.
O bserve que o prim eiro passo captura o com portam ento desejado, ao passo que os dem ais
convertem o com portam ento em um circuito.
Prim eiro, darem os um exem plo pequeno e sim ples, com o ilustração “prévia”, dos passos
do m étodo de projeto RTL, antes dc definirm os cada passo m ais detalhadam ente.
244 Sistemas Digitais

TABELA 5.1 Método de projeto RTL

Passo Descrição
Obtenha uma máquina de Descreva o comportamento desejado do sistema na forma de uma má-
estados de alto nível quina de estados de alto nível. Essa máquina consiste em estados e tran­
O
c/>
C O sições. A máquina de estados é de "alto nível" porque as condições para
cu
CL as transições e as ações dos estados são mais do que simplesmente
operações booleanas envolvendo os bits de entrada e de saída.

<2 Crie um bloco operacional Partindo da máquina de estados de alto nível do passo anterior, crie um
£ bloco operacional capaz de realizar as operações que envolvem dados.
D_

Conecte o bloco operacio- Conecte o bloco operacional a um bloco de controle. Conecte também as
$ nal a um bloco de controle entradas e saídas booleanas que são externas ao bloco de controle.
Q-

^ Obtenha a FSM do bloco de Converta a máquina de estados de alto nível na máquina de estados
o controle finitos do bloco de controle (FSM). Para isso, substitua as operações que
ro envolvem dados por sinais de controle, que são ativados ou lidos pelo
bloco de controle.

► EXEMPLO 5.1 Uma máquina de fornecer refrigerante


Devemos projetar o processador de uma máquina de fornecer refri­
o ca
gerante. Um detector de moedas fornece ao nosso processador uma
entrada c de um bit, a qual, quando uma moeda é detectada, torna-se *8 > 8
1 durante um ciclo de relógio e também uma entrada a de oito bits
C'
que indica o valor da moeda em centavos. Uma outra entrada s de Processador da
d m áquina de
oito bits indica o custo de um refrigerante (esse valor pode ser defi­
fornecer refrigerante
nido pelo proprietário da máquina). Depois do processador detectar
um total de moedas cu jo valor é igual ou maior do que o custo de um
refrigerante, ele deverá atribuir 1 a um bit de saída d durante um ci- Figura 5.2 Símbolo para
cio de relógio, fazendo com que um refrigerante seja fornecido (essa diagram a de blocos de
máquina fornece apenas um tipo de refrigerante). A máquina não uma máquina de fornecer
fornece troco - qualquer valor em excesso é retido. A Fig. 5.2 m os­ refrigerante.
tra um símbolo de diagrama de blocos do sistema.
Passo 1 Neste passo do nosso método de projeto RTL, E n tra d a s : c (bit), a(8 bits), s (8 bits)
deve-se obter o comportamento desejado do sistema. A S a íd a s : d (bit)
R e g is tr a d o r e s lo cais-, to t (8 bits)
Fig. 5.3 mostra uma máquina de estados de alto nível
que descreve o com portam ento desejado. O primeiro
estado. Início, coloca a saída d em 0 e inicializa um re­
gistrador local t o t com 0. Esse registrador t o t acumula
o valor total de centavos que o sistema recebeu em mo­
d=0
edas até o momento. Em seguida, a máquina de estados tot=0
entra no estado Esperar. (Recorde-se do Capítulo 3 que
uma transição sem indicação de condição representa
uma condição que im plicitam ente tem valor “verda­
deiro” e, consequentem ente, na próxima borda de su­ Figura 5.3 Máquina de estado de alto
bida de relógio, a máquina irá para o estado seguinte.) nível de uma máquina de fornecer re­
A FSM permanecerá nesse estado, enquanto nenhuma frigerante.
moeda for detectada e o total de centavos acumulados
até o momento for menor do que o custo de um refrigerante. Quando uma moeda é detectada, a
máquina de estados vai para o estado Somar, que adiciona o valor dessa moeda a t o t e, então,
retorna ao estado Esperar. Logo que t o t for igual ou maior (em outras palavras, não for menor) do
Projeto em Nível de Transferência entre Registradores (RTL) 245

que o custo de um refrigerante, a máquina de esta­


dos irá para o estado Fornecer, o qual fornecerá um
refrigerante fazendo d ser 1. Em seguida, a máquina
to tjd
de estados retorna ao estado Início.
to t.clr
Passo 2 Neste passo, é criado um bloco operacional.
Precisaremos de um registrador local para to t , um
somador para calcular t o t + a, e um comparador
conectado a t o t e s para verificar se tot< s. O bloco tot lt s
operacional resultante aparece na Fig. 5.4.
Passo 3 Neste passo, o bloco operacional é conec­
tado ao bloco de controle. A Fig. 5.5 mostra as co­
nexões. Observe que as entradas e saídas do bloco Figura 5.4 Bloco operacional da máquina
de controle são sinais de apenas um bit. de fornecer refrigerante.

Passo 4 Neste passo, é obtida a FSM do bloco de s a


controle. Ela tem os mesmos estados e transições ^8 ^8
da máquina de estados de alto nível, mas utiliza o
bloco operacional para realizar as operações. A Fig.
5.6 mostra a FSM do bloco de controle. Na má­
quina de estados de alto nível, o estado Início fazia
a operação com dados t o t = 0 ( t o t tem oito bits to tjd
de largura, de modo que essa atribuição de 0 não é
tot_clr
uma operação de apenas um bit). Para realizar essa B loco de Bloco
operação, fazemos to t_ c l r= l, o que corresponde controle
tot lt s o p e r a c i o n a l
a aplicar um c/ear no registrador to t , o qual passa
a ter valor 0. As transições do estado Esperar re­ Figura 5.5 Conexões entre o bloco
alizavam operações com os dados, de acordo com de controle e o bloco operacional da
o resultado da com paração to t< s. Agora, no lu­ máquina de fornecer refrigerante.
gar do bloco de controle, tem os um
com parador para fazer a análise da
com paração. Desse modo, o bloco
de controle precisa apenas verificar
o resultado da comparação através do
sinal to t_ l t_ s* produzido pelo com­
parador. O estado Somar realizava a
operação com dados t o t = t o t +
a. O bloco operacional calcula essa
soma para o bloco de controle, o qual
só precisa aplicar to t_ ld = l para que
o resultado da som a seja carregado no
registrador to t.
Para com pletar o projeto, vamos Figura 5.6 A FSM do bloco de controle da máquina de
im plem entar a FSM do bloco de con­ fornecer refrigerante.
trole na form a de um registrador de
estado e uma lógica com binacional. A Fig. 5.7 mostra uma tabela de estados parcial para o bloco
de controle, na qual os estados foram codificados como Início: 00, Esperar. 01, Somar: 10 e For­
necer. 11. Para term inar o projeto do bloco de controle, deveremos com pletar a tabela de estados,
incluir um registrador de estado de dois bits e criar um circuito para cada uma das cinco saídas
da tabela, com o foi discutido no Capítulo 3. O Apêndice C fornece detalhes da finalização do
projeto do bloco de controle e também analisa o funcionamento mútuo dos blocos de controle e
operacional. *4

* N. de T: Lembrando que lt vem de less than, menor do que.


246 Sistemas Digitais

O exem plo anterior deu um a visão rf


o rf

totjd
0
prévia do m étodo de projeto RTL. O b­ r 1
rf

serve que com eçam os com um a m á­


r-¥
o
s1 sO c w n1 nO d -i
quina de estados de alto nível, que não 0 0 0 0 0 1 0 0 1
era sim p lesm en te um a FSM porque o 0
•mmm0 0 1 0 1 0 0 1
O
havia reg istrad o res locais incluídos c 1
0 0 1 0 0 0 0 1
e porque havia operações com dados
0 0 1 1 0 1 0 0 1
(ao invés de apenas o p eraçõ es boo-
0 1 0 0 1 1 0 0 0
leanas) nos estados e nas transições. (D
Lm

0 1
Lm 0 1 0 1 0 0 0
E ntão, criam os um bloco operacional <D
Q.
</> 0 1 1 0 1 0 0 0 0
para im plem entar esses registradores LU
0 1 1 1 1 0 0 0 0
lo cais e para re a liz a r as o p eraçõ es

Fornecer Somar
1 0 0 0 0 1 0 1 0
com os dados. A lém disso, tivem os
# • • # • •
necessidade de um bloco de controle
p ara c o n tro la r esse bloco o p eracio ­ 1 1 0 0 0 0 1 0 0
nal. D efinim os que o com portam ento • •• •• •

desse bloco de controle seria o m esm o


do com portam ento da m áquina de es­
tados de alto nível, exceto que a FSM Figura 5.7 Tabela de estados do bloco de controle da
do bloco de controle usava sinais de máquina de fornecer refrigerante (parcial).
controle recebidos do bloco operacio­
nal para realizar e verificar as operações do bloco operacional. Final mente, poderíam os proje­
tar o bloco de controle usando o processo de projeto de bloco de controle do C apítulo 3.
A gora, discutirem os cada passo do m étodo de projeto RTL com m ais detalhes, ilustrando
cada um deles com um novo exem plo.

Passo 1: Crie uma máquina de estados de alto nível


U m a m áquina de estados de alto nível é um m odelo de com putação, sim ilar a um a m áquina
de estados finitos, m as com características adicionais que perm item a descrição de côm putos
envolvendo m ais do que sim plesm ente dados booleanos.
Lembre-se de que uma m áquina de estados finitos (FSM ) consiste cm entradas, saídas, esta­
dos, ações desenvolvidas nos estados (um m apeam ento de estados em valores de saída) e transi­
ções de estados (um m apeam ento de estados e entradas em próximos estados). No entanto, as en­
tradas e saídas de uma FSM restringem -se a tipos booleanos, as ações estão limitadas a equações
booleanas e as condições para as transições, a expressões booleanas. Essas lim itações tornam
incômoda a especificação de côm putos que envolvem dados que não sejam de apenas um bit.
A Fig. 5.3 m ostrou um a m áquina de estados
de alto nível que descrevia o com portam ento E n tra d a s -, c (bit), a (8 b i t s ) , s {8 b i t s )
S a íd a s : d (bit)
do p ro cessad o r de um a m áquina de fornecer
Registradores locais: t o t ( 8 b i t s )
refrigerante. O bserve que a m áquina de estados
não é um a FSM , devido às diversas razões re­
alçadas (em negrito) na Fig. 5.8. Um a razão é
que a m áquina de estados tem entradas com ti­
pos de dados de oito bits, ao passo que as FSM s d=0
perm item apenas entradas e saídas de tipos bo­ tot=0

oleanos (um único bit, cada). U m a outra razão


é que a m áquina de estados contém um regis­
trador local t o t para arm azenar dados interm e­
Figura 5.8 Máquina de estado dc alto nível
diários, ao passo que as FSM s não perm item o
para uma máquina fornecedora de refrige­
arm azenam ento local de dados - o único item
rante, em que os elementos que não perten­
“arm azenado” em uma FSM é o próprio estado.
cem à FSM foram realçados (em negrito).
Projeto em Nível de Transferência entre Registradores (RTL) 247

U m a terceira razão é que as ações nos estados e as condições para as transições envolvem
operações com dados, com o t o t = 0 (lem bre-se dc q u e t o t tem oito bits dc largura), t o t < s
(o operador booleano “<” não existe), e t o t = t o t + a (em que “+ “ é um a som a aritm ética,
não um operador O R, não havendo nenhum operador booleano de som a aritm ética), ao passo
que um a FSM perm ite apenas equações e expressões booleanas.
Portanto, um a m áquina de estados útil, de alto nível, será um a extensão de FSM em que:

• as entradas e as saídas podem envolver outros tipos de dados além de simples bits ,

• registradores locais podem ser incluídos (com vários tipos de dados), e


as ações e as condições podem envolver tam bém equações e expressões aritméticas em
geral, e não apenas booleanas.

E ssa m áquina de estados de alto nível não é a única extensão possível da FSM . Há dúzias
de extensões diferentes da FSM . No entanto, neste capítulo, irem os u tilizar a extensão de
FSM que foi descrita no parágrafo anterior. Esse tipo de m áquina de estados de alto nível é
cham ado algum as vezes de FSM com dados , ou FSM D.
Irem os continuar a usar as seguintes convenções, para as m áquinas de estados de alto
nível, que tam bém usam os com as FSMs:

• Im plicitam ente, há um a operação A N D envolvendo cada con d ição de transição e um a


borda de subida do relógio.

• Em um estado, qualquer saída de bit, para a qual não foi atribuído nenhum valor, im plici­
tam ente vale 0. N ota: essa convenção não se aplica a saídas com m últiplos bits.

A gora, darem os um outro exem plo de com o descrever um sistem a, usando um a m áquina
de estados de alto nível.

► EXEMPLO 5.2 Medidor de distância baseado em raio laser - Máquina de estados de alto nível
Há incontáveis aplicações que requerem a m edição exata da distância de um objeto desde um
ponto conhecido. Por exemplo, os construtores de estradas precisam determ inar com exatidão o
comprimento de um trecho de estrada. Os cartógrafos precisam determ inar com exatidão a loca­
lização e a altura de colinas e montanhas e a extensão de lagos. Um guindaste gigante, usado na
construção de arranha-céus, precisa determinar com exatidão a distância do seu braço móvel desde
a base. Em todas essas aplicações, esticar uma fita métrica para medir a distância não é muito prá­
tico. Um método melhor envolve a medição de distâncias com base em raio laser.
Na m edição de distâncias baseada em raio laser, um laser é apontado para o objeto de inte­
resse. A seguir, o laser é ligado durante um breve intervalo e é dada a partida em um temporizador.
A luz laser, viajando à velocidade da luz, desloca-se até o objeto e é refletida. Um sensor detecta
a reflexão da luz laser, fazendo com que o tem porizador pare. Conhecendo o tempo T gasto pela
luz para se deslocar até o objeto e retornar, e sabendo que a velocidade da luz é 3x10S metros/se-
gundos, podemos calcular facilmente a distância Dpela equação: 2D = T segundos * 3x 108 metros/
segundo. A medição de distâncias baseada em raio laser está ilustrada na Fig. 5.9.
248 Sistemas Digitais

Vamos projetar um processador para controlar o laser e o tem porizador, capaz de calcular
distâncias de até 2000 metros. Um diagrama de blocos do sistema está mostrado na Fig. 5.10. O
sistema tem uma entrada B de um bit, que é igual a 1 quando o usuário pressiona um botão para dar
início à medição. Uma outra entrada S de um bit vem do sensor, valendo 1 quando a luz refletida
do laser é detectada. Uma saída L de um bit controla o laser, ativando-o quando L é 1. Finalmente,
uma saída D de /V bits indica a distância em binário, em unidades de metros - vamos assumir que
um display converte esse número de binário para decimal e exibe o resultado em um LCD para
que possa ser lido pelo usuário. A saída D terá, no mínimo, 11 bits porque números de 0 a 2047
podem ser representados com 11 bits, e querem os medir distâncias até 2000 metros. Vamos fazer
com que D tenha 16 bits.

L
do botão para o laser
M edidor de
distância
D 16 b asead o S
para o d i s p l a y M /
em laser — do se n so r

Figura 5.10 Diagrama de blocos do sistem a de medição de distância, baseado em raio laser.

Passo 1: C rie unia m áq u in a de estados de alto nível


Podemos descrever por completo o controle do sistema, usando uma máquina de estados de alto
nível. Para facilitar a criação da máquina de estados, iremos enum erar a sequência de eventos que
fundamentam o sistem a de medição:
O sistema é energizado. Inicialmente, o laser do sistema está desligado e. no display de saída,
o sistem a mostra uma distância de 0 metros.
• A seguir, o sistema espera que o usuário pressione um botão, B, para iniciar a medição.
• Depois do botão ter sido pressionado, o sistema deve ligar o laser. Vamos optar por deixar o
laser ligado durante um ciclo de relógio.
• Depois do laser ter sido pulsado, o sistem a deve esperar que o sensor detecte a reflexão do
laser. Enquanto isso, o sistem a deve medir o tempo que transcorre desde o instante em que o
laser foi pulsado até a detecção da reflexão pelo sensor.
• Depois da detecção da reflexão, o sistema deve usar o valor do tempo decorrido, desde que o
laser foi pulsado, para com putar a distância até o objeto de interesse. Então, o sistema deve
voltar a esperar que o usuário pressione o botão para que uma nova medição seja realizada.
A sequência anterior guiará a nossa construção de uma má­ B, S (1 bit cada)
E n t r a d a s :

quina de estados de alto nível. Começaremos com um estado L (bit), D (16 bits)
S a i d a s ' .

inicial, que chamaremos de S0. A tarefa de S0 é garantir que,


quando nosso sistema é energizado, ele não coloque uma dis­
tância incorreta no d is p la y e que o laser não seja ligado (possi­
velmente provocando ferimentos no usuário despreparado). A
especificação desse comportamento, na forma de uma máquina
L=0 ( l a s e r d e s l i g a d o )

de estados de alto nível, é imediata, como mostrado na Fig. D= 0 ( d i s t â n c i a = 0 )

5.11. Observe que a diferença entre a máquina de estados de


alto nível e uma FSM está em que as ações do estado usam Figura 5.11 M áquina de esta­
um tipo de dados que tem uma largura superior a um bit (isto dos parcial de alto nível do sis­
é, D tem 16 bits). No entanto, para cada transição, a própria tema de m edição: inicialização.
máquina de estados de alto nível segue a convenção de que há
uma AND implícita, envolvendo a condição da transição e a borda de subida do relógio. Desse modo,
a máquina de estados realiza transições somente nas bordas de relógio (exatamente como nas FSMs).
Note que, apesar das atribuições L = 0 e D = 0) parecerem iguais, a atribuição L = 0 coloca um bit 0 na
saída L de um bit, ao passo que a atribuição D = 0 produz um número 0 de 16 bits (que, na realidade, é
Projeto em Nível de Transferência entre Registradores (RTL) 249

(X)0(X)(X)0(X)000(X)0) na saída Dde 16 bits. Algumas outras notações fazem distinção entre atribuições
de bit e de dados, usando notações diferentes, como colocar um bit entre aspas simples. Por exemplo,
a atribuição de bit L = 0 poderia ser escrita altemativamcnte como L-10 1.
Depois da inicialização, o sistema de medição espera que o usuário pressione o botão B. ini­
ciando o processo de medição. Quando o usuário aperta o botão, B torna-se 1 e o sistema de medi­
ção deve prosseguir ativando o laser. Para realizar a espera, acrescentamos um estado após SO, que
chamaremos de 5 /, mostrado na Fig. 5.12. As transições mostradas fazem com que a máquina de
estados permaneça no estado SI enquanto B = 0 (o que significa B‘ ser verdadeiro).
Quando B = 1, o laser deve permanecer ligado durante um ciclo. Em outras palavras, quando B =
1, a máquina de estados deve fazer uma transição que a leve para um estado que liga o laser, seguido
por um estado que o desliga. Chamaremos o estado que liga o laser de 52 e o estado que o desliga de
S3. A Fig. 5.13 mostra como S2 e S3 estão conectados na máquina de estados de alto nível.
No estado 53, a máquina de es­
tados deve esperar até que o sensor E n tr a d a s : b , s (1 b i t c a d a )

dctcctc a reflexão do laser (S = 1). Saida* L (bit)' D (16 bits)


D urante o tem po em que $ = 0, a
B ' (botão não pressionado)
máquina de estados permanece em
S3. Enquanto isso, com o foi m en­
cionado na seqiiência de eventos de
antes, a máquina de estados deverá
m edir o tem po decorrido entre a
pulsação do laser e a detecção da
sua reflexão. Da discussão sobre
tem porizadores do Capítulo 4. sa­ Figura 5.12 M áquina de estados parcial de alto
bemos que, para um dado período nível do sistem a de medição: esperando que o
de relógio, podemos medir o tempo botão seja pressionado.
contando o número de ciclos de re­
lógio e multiplicando esse número E n tra d a s : B , S (1 b i t c a d a )
pelo período do relógio (tem po = S a íd a s : L (bi t ), D ( 1 6 b i t s )

ciclos * (l/freqüencia do relógio)). B'


Assim, para contar os ciclos de reló­
gio, usaremos um registrador local,
que chamaremos de Dctr. Enquanto
espera pela reflexão do laser, a má­
quina de estados increm enta D ctr.
(Por simplicidade, ignoramos a pos­
sibilidade de que nenhuma reflexão
possa ocorrer.) Devemos também Figura 5.13 M áquina de estados parcial de alto nível do
inicializar D ctr com 0, o que op­ sistema de medição: pulsando o laser durante um ciclo.
tamos por fazer no estado SI. Com
essas modificações, nossa máquina de estados de alto nível está mostrada na Fig. 5.14.

E n tra d a s : B, S (1 b i t c a d a ) S a id a s : L (bi t ), D ( 1 6 b i t s )
Registradores Locais: D c t r ( 1 6 b i t s )

B' S ' (nenhum a reflexão)

L = 0 Dctr = 0 L = 1 L = 0
D = 0 (reset da D ctr = Dctr + 1
contagem de ciclos) ( c o n ta g e m d e c ic lo s )

Figura 5.14 Máquina de estados parcial de alto nível do sistema de medição: esperando pela re­
flexão do laser e contando os ciclos de relógio.
250 Sistemas Digitais

Logo que a reflexão for detectada (S = 1), a nossa máquina de estados de alto nível deverá cal­
cular a distância D que está sendo medida. Da Fig. 5.9, vemos que 2*D = T s * 3x10S m/s. Também
sabemos que o tempo T, em segundos, é D ctr * (1/freqüência de relógio). Para simplificar o pro-
jcto do sistema, vamos assumir que a frequência de relógio é 3x10', ou 300 MHz. Como a luz viaja
a 3x10S metros por segundo, cada ciclo de relógio corresponde assim a um metro. Desse modo,
com um relógio de 300 MHz, o contador D ctr indica o número de metros que o feixe de raio laser
percorre desde o medidor até o objeto e de volta ao medidor. Para calcular apenas a distância desde
o medidor até o objeto, dividiremos D ctr por 2 (fazendo manipulações algébricas nessas equações,
chega-se a D= D ctr/2). Esse cálculo será feito no estado que chamaremos de S4. A nossa máquina
de estados final de alto nível está mostrada na Fig. 5.15.

E n tra d a s : B, S (1 bit cada) S aídas-. L (bit), D (16 bits)


R e g is tr a d o r e s Locais-. Dctr (16 bits)

Figura 5.15 M áquina de estados parcial de alto nível do sistema de medição: calculando o valor
de D.

Podemos resum ir o com portam ento da máquina de estados de alto nível da Fig. 5.15 como
segue:
• S0 é o estado inicial. No estado S0, a máquina de estados inicializa o laser, desligando-o ao
fazer L=0 e fazendo a saída ser carregada com D=0. A seguir, a máquina faz uma transição para
o estado Sl.
• Sl faz cleare m D ctr, carregando-o com 0, e então espera até que o botão seja pressionado.
Quando isso ocorre, a máquina faz uma transição para o estado S2.
• S2 liga o laser e, em seguida, a máquina faz uma transição para o estado S3.
• S3 desliga o laser e incrementa D ctr a cada ciclo de relógio (com um relógio de 300 MHz, cada
ciclo corresponde a um metro). A máquina permanece em S3, incrementando D ctr a cada ciclo
de relógio, até que a reflexão seja detectada. Nesse momento, a máquina faz uma transição
para o estado S4.
• S4 carrega a saída D com o número final da contagem de ciclos, dividido por dois, o que cor­
responde à distância medida em metros. A máquina então retorna ao estado Sl, no qual Uca
esperando que o botão seja pressionado novamente.
Um medidor de distância real, baseado em laser, poderia usar uma freqiiência de relógio mais
elevada, para m edir distâncias com precisão superior a um metro apenas. M

A m áquina de estados de alto nível, descrita acim a, é apenas um dos tipos de FSM s. U m a
variedade de m áquina de estados, que foi m uito popular no passado, era cham ada de Máquina
Algorítmica de Estados , ou A SM (Algorithmic State Machine). A s A SM s são sem elhantes
a fluxogram as, ex ceto que incluem a noção de um relógio que habilita as transições de um
estado para outro (um fluxogram a tradicional não contém o conceito explícito de relógio). As
A SM s, com o os fluxogram as, contêm m ais “estrutura” do que um a m áquina de estados. Uma
m áquina de estados pode realizar transições de q u alq u er estado para q ualquer outro estado,
ao passo que um a ASM restringe as transições d e form a que os côm putos são sem elhantes
a um algoritm o - um a seqüência ordenada de instruções. U m a A SM usa diversos tipos de
Projeto em Nível de Transferência entre Registradores (RTL) 251

caixas, incluindo caixas de estado, condição e de saída. T ipicam ente, as A SM s perm itiam
tam bém o arm azenam ento local de dados e operações com dados.
C) surgim ento das linguagens de d escrição de hardw are (veja o C ap ítu lo 9) p arece ter
substituído em grande parte o uso de A SM s. já que essas linguagens contêm os construtos que
suportam a estruturação algorítm ica, e m uito m ais. Por essa razão, não irem os aprofundar a
descrição das A SM s.

Passo 2: Crie um bloco operacional


D ada um a m áquina de estados de alto nível, querem os criar um bloco operacional que im ­
plem ente todos os arm azenam entos de dad o s e côm putos, envolvendo tipos de dados não
booleanos, presentes na m áquina. Isso nos perm itirá substituir a m áquina de estados de alto
nível por um a FSM que controla apenas o bloco operacional. Podem os decom por esse passo
de “crie um bloco operacional” em diversos passos m ais sim ples:

P asso 2: C rie u m bloco o p e ra c io n a l

(a) Faça com que todas as entradas e saídas de dados sejam entradas e saídas do bloco ope­
racional.
(b) Para cada registrador que faz parte da m áquina de estados de alto nível, im plem ente o ar­
m azenam ento de dados acrescentando um registrador ao bloco operacional. A lém disso,
geralm ente acrescentam os um registrador para cada um a das saídas de dados.
(c) M etodicam ente, exam ine cada estado e cada transição, acrescentando e conectando no­
vos com ponentes de bloco operacional para que as novas com putações com dados sejam
im plem entadas. À m edida q ue vão se tornando necessários, acrescen tarem o s m ultiple-
xadores à frente das en trad as de cad a com ponente. A ssim , um co m p o n en te p ode ser
co m p artilh ad o en tre diversos sinais q u e usam o m esm o co m p o n en te em estad o s d ife ­
rentes. A lgum as vezes, constatam os que um co m p o n en te já existe (por exem plo, um
registrador), m as que precisam os acrescen tar um a nova en trad a de controle a ele (por
exem plo, um a entrada de clear em um registrador para que ele possa ser carregado com
0 ).
U m term o com um para descrever o acréscim o de um com ponente a um projeto é distan­
ciamento. A ssim , d izem os que instanciam os um novo registrador em vez de adicionam os
um novo registrador. O uso desse term o evita um a possível confusão com o term o adicionar
para significar um a adição aritm ética (por exem plo, “adicionam os dois registradores” pode­
ria se tornar am bíguo). Q uando acrescentam os um novo com ponente, devem os dar-lhe um
nom e que seja único, diferente de qualquer outro nom e de com ponente do bloco operacional.
A ssim , se instanciarm os um registrador, poderem os cham á-lo dc Registrador! . Se instanciar­
m os um outro registrador, poderem os cham á-lo de Registrador2. N a verdade, deveríam os dar
nom es significativos sem pre que possível. D esse m odo, poderem os ch am ar um registrador de
RegTemperatura e outro, de RegUmidade.
Q uando acrescentam os um novo com ponente, entradas adicionais para o bloco operacio­
nal poderão ser criadas, correspondendo às entradas de controle do com ponente. Por exem ­
plo, quando acrescentam os um registrador, serão criadas novas entradas para o bloco opera­
cional, correspondendo às entradas de controle de carga e clear do registrador. D everem os
dar nom es únicos a cada entrada de controle do bloco operacional, descrevendo idealm ente
qual com p o n en te é con tro lad o pela entrad a e qual op eração é realizada. Por exem plo, se
acrescentarm os um registrador de nom e Registrador! , poderem os então criar duas novas en ­
tradas de controle no bloco operacional, de nom es Registrador! J o a d e Registrador! jclear
De m odo sem elhante, poderem os ter necessidade de usar as saídas de controle de um co m ­
ponente com o, por exem plo, a saída de um com parador. N esse caso, tam bém deverem os dar
nom es únicos a essas saídas.
252 Sistemas Digitais

► EXEMPLO 5.3 Medidor de distância baseado em raio laser - Crie um bloco operacional
Continuarem os agora o Exemplo 5.2 prosseguindo com o segundo passo do método de projeto
RTL.
Passo2: Crie uni blocooperacional
Podem os seguir os passos mais simples desta etapa para criar o bloco operacional mostrado na
Fig. 5.17:
(a) A saída Dé uma saída de dados (16 bits) e, portanto, iremos torná-la uma saída de bloco
operacional, como mostrado na Fig. 5 .16(i).
(b) Precisamos de um registrador para implementar o registrador local Dctr de 16 bits. Notando
que as operações em Dctr são as de clear (no estado SI ) e incrementar (no estado S3). pode­
remos implementá-lo acrescentando um contador crescente, como mostrado na Fig. 5.16(ii).
Além disso, como queremos controlar quando a saída D muda (note que alteramos Dapenas
no estado S4). acrescentamos um registrador Dreg de 16 bits na saída D, como mostrado na
Fig. 5.16(iii). Prolongamos os sinais de controle do contador Dctr e do registrador Dreg,
tomando-os entradas do bloco operacional e tendo cada sinal um nome exclusivo, como
mostrado na Fig. 5 .16(iv).

Dreg_clr
D re g jd
(iv)
Dctr_clr
Dctr_cnt

Figura 5.16 Bloco operacional parcial do medidor de distância baseado em laser.

(c) Em S3, observando que Dé carregado com Dctr dividido por 2, vamos inserir um registrador
deslocador à direita entre Dctr e Dreg para implementar a divisão por 2, como mostrado na
Fig. 5 .17.

Dreg_clr
D re g jd

Dctr_clr
Dctr_cnt

Figura 5.17 Bloco operacional do sistema de medição de distância baseado cm laser.

A Fig. 5 .17 mostra que o bloco operacional resultante é muito simples, mas ainda assim trata-
se de um bloco operacional. M
Projeto em Nível de Transferência entre Registradores (RTL) 253

N o exem plo anterior, não houve necessidade de m ultiplexadores. A ssim , irem os ilustrar
em separado por que algum as vezes eles devem ser incluídos. C onsidere o exem plo da m á­
quina de estados parcial de alto nível, m ostrado na Fig. 5 .1 8(a). A Fig. 5 .1 8(b) m ostra o bloco
operacional d ep o is da im plem entação das ações do estado TO. E ssas ações requerem um
som ador, no qual os registradores £ e F estão conectados às entradas A q B. A Fig. 5 . 18(c)
m ostra o bloco operacional, após a im plem entação das ações do estado TI. Esse estado tam ­
bém req u er um som ador, m as, com o já ex iste um no bloco operacional, não precisarem os
acrescentar outro. O s registradores R c G deverão ser conectados às entradas A e B do som a­
dor. m as, co m o essas entradas já têm conexões vindas de E e Z7, deverem os então acrescentar
m ultiplexadores, com o m ostrado na Fig. 5.18(d). O bserve que foram criados nom es únicos,
para cada um a das entradas de controle dos m ultiplexadores.

R e g is tr a d o r e s lo c a is :

E, F,G, R (16 bits)

(a)

Figura 5.18 Instanciamento de multiplexadores para o bloco operacional: (a) parte de um exemplo
de máquina de estados de alto nível, (b) o bloco operacional depois da implementação das ações do
estado TO, (c) o bloco operacional depois da implementação das ações do estado T l . resultando duas
fontes para cada uma das entradas do somador, (d) o bloco operacional depois do instanciamento dos
multiplexadores para lidar com as fontes múltiplas.

Passo 3: Conecte o bloco operacional a um bloco de controle


O Passo 3 do m étodo de projeto RTL é na verdade im ediato. S im plesm ente criam os um bloco
de controle, com as entradas e as saídas booleanas do sistem a, e em seguida o conectam os às
entradas e saídas de controle do bloco operacional.

► EXEMPLO 5.4 Medidor de distância baseado em laser - Conecte o bloco operacional a um bloco de
controle
Continuando o exemplo anterior, prosseguimos com o Passo 3 do método de projeto RTL:
Passo 3: C onecte o bloco operacional a um bloco de controle
Conectaremos o bloco operacional a um bloco de controle conforme mostrado na Fig. 5.19. Liga­
remos as entradas e saídas de controle (£, L e S) ao bloco de controle, e a saída de dados (D) ao
bloco operacional. Também ligaremos o bloco de controle às entradas de controle do bloco opera­
cional (Dreg_ch\ D regjd , Dctr_ch\ Dctrjcnt). Normalmcnlc, não mostraremos o bloco gerador
de relógio, mas o estam os mostrando explicitamente nesta figura para tornar claro que o gerador
deve ser exatamente de 300 MHz.
254 Sistemas Digitais

para o laser
do sensor

Figura 5.19 Projeto dos blocos de controle e operacional (processador) para o medidor de distância
baseado em laser.

Passo 4: Obtenha a FSM do bloco de controle


vSe tiv erm o s c ria d o c o rre ta m e n te o nosso b lo c o o p e ra c io n a l, a o b te n ç ã o de um a F SM
para o b lo co d e c o n tro le é im ed iata. A F SM terá os m esm o s e sta d o s e tra n siç õ e s q u e a
m áq u in a d e esta d o s de alto nível. S im p le sm e n te d efin im o s as e n tra d a s e saíd as da F SM
(to d o s serão d e um bit ap en as) e, no lu g a r d o s cô m p u to s p resen tes nas açõ es e co n d içõ es,
terem o s c o rre sp o n d e n te m e n te v alo res a p ro p ria d o s n o s sin a is d e c o n tro le d o b lo co o p e ­
racio n al. L e m b re -se de q u e c ria m o s o b lo c o o p e ra c io n a l e sp e c ific a m e n te p a ra re a liz a r
esses c ô m p u to s e, p o rtan to , p re c isa m o s a p en as c o n fig u ra r a p ro p ria d a m e n te o s sin a is de
co n tro le d o b lo co o p eracio n al para im p le m e n ta r c ad a cô m p u to em p a rtic u la r no m om ento
co rreto .

► EXEMPLO 5.5 Medidor de distância baseado em laser - Obtendo a FSM do bloco de controle
Continuamos com o exemplo anterior, indo para o Passo 4 do método de projeto RTL.
Passo 4: O b ten h a a FSM do bloco de controle
O último passo é projetar a parte interna do bloco de controle. Podemos descrever o com porta­
mento do bloco de controle, refinando a nossa máquina de estados de alto nível da Fig. 5.15 e ob­
tendo uma FSM. Substituiremos as ações e condições de “alto nível”, com o Dctr=0. por atribui­
ções e condições reais para os sinais de entrada e saída do bloco de controle, como D ctr_cl r= l,
conform e m ostrado na Fig. 5.20. Observe que a FSM não indica diretam ente quais operações
estão ocorrendo no bloco operacional. Por exemplo, S4 carrega Dreg com D c tr/2 , mas a FSM
em si mostra apenas que o sinal de carga de Dreg está sendo ativado. Assim , o com portam ento
completo do sistem a pode ser determinado a partir da FSM, olhando também o bloco operacional
ao mesmo tempo.

► COMO FUNCIONA? CONTROLEADAPTATIVO DE VELOCIDADE DE AUTOMÓVEL

No início da década de 2000, surgiram controles de à frente. Uma maneira de se medir essa distância usa
velocidade de automóvel que não só mantêm uma um medidor de distância baseado em laser, sendo
dada velocidade, como também mantêm uma dada que a fonte de raio laser e o sensor são instalados na
distância até o carro que está à frente, diminuindo grade frontal do carro, conectados a um circuito e/ou
assim a velocidade quando necessário. Esse controle microprocessador que calcula a distância. O valor da
“adaptativo" ajusta-se assim âs mudanças de tráfego distância é enviado a uma entrada do sistema de con­
em uma auto-estrada. Para isso, esses blocos de con­ trole de velocidade, que determina quando aumentar
troles adaptativos devem medir a distância até o carro ou diminuir a velocidade do automóvel.
Projeto em Nível de Transferência entre Registradores (RTL) 255

E n tra d a s : B, S S a íd a s : L, Dreg_clr, D re g jd , Dctr_clr, Dctr.cnt

Dreg_ld = 0 D re g jd = 0 D re g jd = 0 D re g jd = 0 D re g jd = 1
Dctr_clr = 0 Dctr_clr = 1 Dctr_clr = 0 Dctr_clr = 0 Dctr_clr = 0
Dctr_cnt = 0 Dctr_cnt = 0 Dctr_cnt = 0 Dctr_cnt = 1 Dctr_cnt = 0
( la s e r d e s lig a d o ) (z e re o c o n t a d o r ) ( la s e r lig a d o ) ( la s e r d e s lig a d o ) ( c a r r e g u e D r e g c o m D c tr /2 )
(z e re D re g ) ( in c r e m e n te ) ( p a r e a c o n ta g e m )

Figura 5.20 Descrição da FSM usada no bloco de controle do medidor de distância baseado em
laser. A ação desejada em cada estado está mostrada em itálico na linha de baixo. A correspon­
dente atribuição de sinal que permite a realização de cada ação está em negrito.

Lembre-se do Capítulo 3 que normal mente seguimos a convenção de que os sinais de saída de uma
FSM. que não são mostrados explicitamente em um estado, têm implicitamente valor 0. De acordo
com essa convenção, a FSM seria como a da Fig. 5.21. Mesmo assim, poderemos ainda optar por mos­
trar explicitamente a atribuição de um 0 (por exemplo, L = 0 no estado S3) se essa atribuição for uma
ação chave de um estado. As ações-chave de cada estado foram colocadas em negrito na Fig. 5.20.

E n tra d a s : B, S S a íd a s : L, Dreg_clr, Dreg_d, Dctr_clr, Dctr_cnt

( la s e r d e s lig a d o ) ( la s e r d e s lig a d o ) ( c a r r e g u e D r e g c o m D c tr /2 )
(z e re D r e g ) ( in c r e m e n te ) (p a re a c o n ta g e m )

Figura 5.21 Descrição da FSM, usada no bloco de controle do m edidor de distância baseado
em laser, usando a convenção de que, quando as saídas dessa FSM não são mostradas, elas têm
implicitamente valor 0.

Completaríamos o projeto implementando essa FSM com um registrador de estado de três bits
e uma lógica combinacional, para obter o próximo estado e a lógica de saída, como descrito no
Capítulo 3. M

5.3 EXEMPLOS E QUESTÕES DE PROJETO RTL


O projeto RTL envolve um a certa quantidade de criatividade e insight. A ssim , um a boa m a­
neira de co m eçar a aprender o projeto RTL talvez seja vendo alguns exem plos. D arem os
agora exem plos adicionais do m étodo de projeto RTL, com os quais tam bém explicarem os
detalhadam ente algum as questões.

Exemplo de projeto de uma interface de projeto simples


► EXEMPLO 5.6 Interface simples de barramento
Geralmente, os processadores precisam transferir dados entre si. Normal mente, esses dados são en­
viados por um barramento para reduzir os problemas de congestionamento de fios, que de outro modo
256 Sistemas Digitais

poderiam ocorrer (veja a Seção 4.10). Suponha que 16 processadores diferentes, cada um com 32 bits
de saída, sejam conectados a um único barramcnto de 32 bits de nome D. Suponha que outro proces­
sador, um processador mestre, queira ler a saída de qualquer um desses 16 processadores. (Vamos
chamar esses 16 processadores de periféricos, um termo comum dado a um processador quando ele
funciona como auxiliar de um processador mestre.) O processador mestre fornece um endereço. A, de
quatro bits, em sua saída, que pode ser lido por todos os 16 periféricos, sendo que cada um deles tem
o seu próprio endereço único (0000, ou 0001, ou 0010, ou etc.). Como o processador mestre sempre
aplica um valor às linhas de endereço, mas nem sempre quer realizar uma leitura, ele tem uma outra
saída. rd. que é tornada 1, quando está lendo, e 0, quando não está lendo. Desse modo, se o processa­
dor mestre quiser ler o valor de saída do periférico cinco, ele colocará nas linhas A o valor 0101 e,
então, tornará rd igual a 1. A seguir, o processador mestre lerá as linhas de dados D (possivelmente
armazenando os dados lidos em um registrador local) e então fará rd retornar a 0. Além disso, en­
quanto o processador mestre estiver lendo, o valor em D não deverá ser alterado.
Um diagrama de blocos do sistema está mos-
trado na Fig. 5.22. Essa configuração é muito
Processador
sim ilar à de um com putador de mesa, em que mestre
um processador mestre pode ler os registradores
dos processadores periféricos - entre os quais 1
podem estar uma unidade de disco, uma unidade rd
de CD-ROM, um teclado, um modem, etc. 32, D
Acabamos de descrever o que é conhecido
como um protocolo de barramento. Um proto­
colo de barramento define uma sequência de PerO
'

- J T
T
Perl
’ J
Perl 5
ações sobre linhas de dados, endereço e controle,
de modo a realizar uma transferência de dados Figura 5.22 Exemplo de interface de barra-
nessas linhas de um processador a outro. mento.
Uma interface de barramento im plem enta
um protocolo de barram ento para um proces­ p a ra /d o b a rra m e n to d o p ro c e s s a d o r

sador. Vamos im plem entar a interface de barram ento rd D A


para um dos processadores periféricos. A Fig. 5.23 dá o
diagrama de blocos de um dos periféricos, dividido em ' 32 / * >
” /
uma parte principal e uma de interface de barramento. A Faddr
saída Q da parte principal é uma entrada da interface de Interface de barramento -
barramento. Vamos assum ir que o endereço próprio do
Qi
periférico é dado por uma outra entrada, Faddr, da inter­ [3 2
face de barramento. O valor de Faddr poderia vir de uma
chave D1P ou talvez de um outro registrador. A interface Parte principal
de barram ento tem também entradas e saídas que estão
Periférico
conectadas aos sinais de barramento rd, De A.
ü Passo 1 do nosso método de projeto RTL consiste
Figura 5.23 Diagrama de blocos de
em criar uma máquina de estados de alto nível. Com base
uma interface de barramento.
no protocolo de barramento que definimos, a parte da in­
terface de barramento do periférico enviará dados apenas
se o endereço presente na entrada A for igual ao endereço da entrada Faddr e (AND) se o processa­
dor estiver solicitando uma leitura fazendo rd ser 1. Enquanto uma interface de barramento estiver
esperando por uma instrução do processador mestre para enviar dados, a interface de barramento
não deverá interferir com aquilo que um outro processador possa estar escrevendo nas linhas com­
partilhadas de dados, D. Assim, enquanto espera por um endereço que combine com o seu próprio
e que rd= l, a interface de barramento não deve aplicar valor algum ao barramento D (estado conhe­
cido como de alta impedância, representado por “Z").
Quando a interface de barramento detecta um endereço que combina e rd=l, ela deve colocar os
dados da entrada Q (oriundos da parte principal) na saída D. No entanto, devemos também assegurar
que D não mudará enquanto o processador mestre estiver lendo a interface de barramento. Podemos
manter estável o valor em D se armazenarmos o valor de Q em um registrador local Ql. Enquanto a
Projeto em Nível de Transferência entre Registradores (RTL) 257

interface de barramento não estiver


enviando dados, ela atualizará Q1 com
o valor corrente de Q. Quando estiver
enviando dados, ela não atualizará Q1
e colocará o valor de Q1 no barra­
mento D, o que fará com que D não
mude durante um envio de dados.
Podemos ver que a im plem enta­
ção da interface de barramento, para
o protocolo de barramento, pode ser
descrita por uma máquina de estados
de alto nível, usando os dois estados
m ostrados na Fig. 5.24: um estado Figura 5.24 Máquina de estados de alto nível da parte que
no qual a interface de barram ento envia dados em uma interface de barramento simples.
espera para ficar habilitada a enviar 1
dados (E s p e r a n d o M e u E n d e r e ç o ) e
um estado no qual ela envia os dados
clk _ji_n_ i_TLn_ “ L T L n
Entradas
(E n v ie D a d o s ).
A Fig. 5.25 dá um exemplo de
rd ___ rn _ T
ED E E ED ED E
UJ

LU
diagrama de tempo para o compor­ Estado
tamento da máquina de estados ( E Saídas
significa o estado E s p e ra n d o M e u E n - D z Q1 Z Q1 Z
d ereço e E D . E n v ie D a d o s). Enquanto
o sistema permanecer no estado E . o
Figura 5.25 Diagram a de tempo da interface de bar­
sistema colocará Z em D. Quando rd=l
ramento.
e A=Faddr*, o sistema colocará o con-
teíído de Q1 na saída, a partir da borda de subida do próximo relógio. O sistema continuará a colocar Q1
na saída enquanto rd=l. Quando o sinal de leitura retornar a 0, o sistema volta ao estado E s p e ra n d o -
M e u E n d e re ço na borda de subida de relógio e, consequentemente, volta a colocar Z na saída.
O Passo 2 é criar um bloco operacional, como mostrado à direita na Fig. 5.26. O bloco opera­
cional contém um com parador de igualdade de quatro bits para comparar A e Faddr, um registra­
dor Q1 de 32 bits de largura e um d r iv e r de três estados de 32 bits de largura que possibilita colocar
em D o valor de Q1 ou nada. As entradas de dados do bloco operacional são A. Faddr e Q. ao passo
que a única saída de dados é D.

Figura 5.26 O bloco operacional (direita) e a descrição da FSM do bloco de controle (esquerda) da
interface de barramento simples.

* N. de T: Pode ser útil ter em mente que rd e addr vêm de read (ler) e address (endereço), em inglês.
258 Sistemas Digitais

O Passo 3 é conectar o bloco operacional a um bloco de controle, como mostrado na Fig. 5.26.
O bloco de controle tem uma entrada de controle externa, r d , e também recebe uma entrada de
controle do bloco operacional, A _ e q _ F a d d r, indicando se A é igual a F a d d r. O bloco de controle
tem duas saídas dc controle para o bloco operacional, sendo que o sinal Ql_l d faz com que Q1 seja
carregado com Q e D_en controla o driver de três estados.
O Passo 4 é obter a FSM do bloco
de controle. Sim plesm ente substituí­
mos as operações que envolvem da­
dos, realizadas pela m áquina de esta­
dos de alto nível da Fig. 5.24, pelos
sinais apropriados de controle, com o
está m ostrado no lado esquerdo da
Fig. 5.26. Substituím os A= F a d d r pelo
sinal A _ e q _ F a d d r . as ações de D=,,Z" Figura 5.27 Placa PCI encaixada em um slot de PC.
e de D=Q por D _ e n =0 e D _ e n = l , e a
ação de Q1=Q por Q l _ l d=l. A seguir, im plem entaríam os a FSM usando um registrador de estado
(neste caso de apenas um bit) e lógica com binacional.
É possível que você já tenha ouvido falar de diversos barram entos populares, como o barra-
mento PCI (Peripheral Component Interface) de um com putador pessoal. Esses são os barramen­
tos usados por uma “p la c a ’ de PC quando é colocada em um PC, como a placa mostrada na Fig.
5.27. Na placa, você pode ver os contatos metálicos dos barramentos - cada contato corresponde
a um fio do barramento. O protocolo de barram ento para PCI é muito mais com plexo do que o
protocolo do exemplo anterior. Centenas de outros “padrões” de protocolos existem. Os projetis­
tas que não precisam realizar interfaces com outros chips frequentemente definem o seu próprio
protocolo para o barramento de comunicação. M

Compressão de vídeo - exemplo de projeto de soma de diferenças absolutas (SAD)

► EXEMPLO 5.7 Compressão de vídeo - Soma de diferenças absolutas


Progressivam ente, o vídeo digitalizado está se tornando um lugar-com um , com o no caso do
DVD, cada vez m ais popular (veja a Seção 6.7 para m ais inform ações sobre os DVDs). Um
vídeo digitalizado consiste fundam entalm ente em uma sequência de im agens digitalizadas, as
quais são conhecidas com o quadros. Porém , esse vídeo digitalizado produz arquivos enorm es
de dados. C ada pixel de um quadro é arm azenado usando diversos bytes. D igam os que um
quadro contenha cerca de um m ilhão de pixels. Podem os assum ir então que precisarem os de
1 M byte por quadro, e que serão m ostrados aproxim adam ente 30 quadros por segundo (um a
taxa norm al para um televisor). Desse modo, terem os 1 M byte/quadro * 30 quadros/segundo
= 30 M bytes/segundo. Um m inuto de vídeo irá requerer 60 segundos * 30 M bytes/segundo
= 1,8 G bytes e 60 m inutos vão necessitar de 108 G bytes. Um film e de duas horas irá exigir
mais de 200 Gbytes. E uma quantidade m uito grande de dados, m aior do que pode ser enviado

► NEM TODOS =s SÃO IGUAIS

A Fig. 5.24 mostrou dois usos diferentes do símbolo esses dois significados do símbolo “=". Algumas
“=”. No caso das ações de um estado. “=” significou linguagens usam símbolos diferentes para distin­
“atribuir o valor do lado direito ao lado esquerdo”, guir os dois significados. Por exemplo, a linguagem
por exemplo, D=Q1. No caso de uma transição, “=” C usa “=" para “atribuir" e “==" para “é igual". A
significou “o lado direito é igual ao lado esquerdo", VHDL usa (ou “<=") para “atribuir” e “=” para
por exemplo. A=Faddr. Cuide para não confundir “é igual".
Projeto em Nível de Transferência entre Registradores (RTL) 259

Em 2004, d ep ois de rapidam ente pela Internet ou arm azenado em um DVD, o qual pode conter de
um desastre n a tu ra l na 5 a 15 G bytes. Para tornar mais prático o uso de vídeo digitalizado em páginas
Indonésia, um re p ó r­ da web, film adoras digitais, telefones celulares, ou m esm o em DVDs, precisare­
ter de um n o tic iá rio mos com prim ir esses arquivos, tornando-os bem m enores. Uma técnica chave da
de televisão fe z uma com pressão de vídeo é levar em conta que quadros sucessivos frequentem ente
reportagem no local, têm muita sem elhança entre si. D esse modo, ao invés de enviar uma seqüência
usando um telefone de im agens digitalizadas, poderem os enviar um quadro de im agem digitalizado
c e lu la r com câm era.
(um quadro ‘'b ase’'), seguido por dados que descrevem apenas a diferença entre
Q uando não estavam
o quadro base e o próxim o. A ssim , para uma série num erosa de quadros, pode­
o co rrend o m udanças
rem os enviar apenas os dados dessas diferenças antes de enviarm os um outro
sig n ifica tiv a s n as c e ­
quadro base. Esse m étodo produz algum a perda de qualidade, mas se enviarm os
nas, o vídeo era de boa
quadros de base com freqüência suficiente, a qualidade poderá ser aceitável.
qualidade. Q uando a
cena m udava (com o
quando se g ira a c â ­ Quadro 1 Quadro 2 Quadro 1 Quadro 2
m era p a ra obter um
efeito panorâm ico), o
vídeo tornava-se m uito
intermitente, porque
a câm era do c e lu la r
linh a de transm itir
im agens com pletas em Quadro Quadro Quadro Diferença de 2
vez de tra n sm itir a pe­ digitalizado 1 digitalizado 2 digitalizado 1 em relação a 1
n as as d iferenças entre
as im agens. C om o
resultado, m enos q u a ­
dros eram transm itidos
1 Mbyte 1 Mbyte 1 Mbyte 0,01 Mbyte
através d a la rg u ra de
(a) (b)
banda lim itada da c â ­
m era do telefone. Figura 5.28 Um princípio chave da com pressão de vídeo leva em consideração
que quadros sucessivos têm muita similaridade: (a) envio dos quadros como ima­
gens digitalizadas distintas, (b) alternativamente, envio de um quadro base e, em
seguida, dos dados da diferença, a partir dos quais os quadros originais poderão ser
reconstruídos posteriormente. Se pudermos fazer isso com dez quadros, o caso (a)
irá requerer l Mbyte * IO = IO Mbytes, ao passo que o caso (b) (comprimido) irá
requerer apenas l Mbyte + 9 * 0 ,0 1 Mbyte = 1,09 Mbytes, uma redução de tama­
nho de quase dez vezes.

Naturalm ente, se houver uma mudança considerável de um quadro para o seguinte (como
mudança de cena ou muita movimentação), não poderemos usar o método da diferença. Portanto,
para determ inar se os quadros podem ser enviados usando-se o método da diferença, os dispo­
sitivos de compressão de vídeo precisam estim ar rapidam ente a similaridade entre dois quadros
digitalizados consecutivos. Um modo comum de se determ inar a sim ilaridade de dois quadros é
computando o que é conhecido como soma de diferenças absolutas (SAI)*). Para cada pixel do
quadro 1, computamos a diferença entre esse pixel e o seu correspondente no quadro 2. Cada pixel
é representado por um número, de modo que uma diferença significa uma diferença de números.
Suponha que representemos um pixel com um byte (um pixel real é representado usualmente por
três bytes, no mínimo) e estejamos comparando os pixels no lado esquerdo superior dos quadros I
e 2 da Fig. 5.28(a). Digamos que esse pixel no lado esquerdo superior do quadro 1 tenha um valor
255. O pixel no quadro 2 é claramente igual, de modo que teremos também o valor 255. Assim,
a diferença desses dois pixels é 255 - 255 = 0. Poderemos com parar os pixels seguintes daquela
linha em ambos os quadros e constatar que a diferença é zero novamente. Seguimos assim com
todos os pixels daquela linha, em ambos os quadros e também nas próximas. Entretanto, quando

* N. de T: De s u m o f a b s o lu te d iffe re n c e s , em inglês.
260 Sistemas Digitais

calculamos a diferença dos dois pixels, que estão bem à esquerda na linha do meio, onde o ponto
prelo está posicionado, vemos que esse pixel no quadro 1 é preto, digam os com um valor 0. Por
outro lado, o pixel correspondente no quadro 2 é branco, digam os com um valor 255. Assim, a
diferença será 255 - 0 = 255. De modo semelhante, a meio caminho naquela linha, encontramos
outra diferença. Desta vez, o pixel no quadro 1 é branco (255) e o pixel no quadro 2 é preto (0) - a
diferença é 255 - 0 = 255, novamente. Observe que estamos preocupados apenas com a diferença,
não em saber se é menor ou maior. Desse modo, estamos na realidade procurando o valor absoluto,
ou módulo, da diferença entre os pixels dos quadros 1 e 2. Somando os valores absolutos das dife­
renças de cada par de pixels, obtemos um número representativo da similaridade dos dois quadros
- o valor zero indica igualdade e valores maiores significam sim ilaridades menores. Se a soma
resultante estiver abaixo de algum limiar (por exemplo, abaixo de 1000), poderemos então aplicar
o método do envio dos dados de diferença, como mostrado na Fig. 5.28(b) - não explicamos aqui
como calcular os dados de diferença, porque isso está além do escopo deste exemplo. Se a soma
estiver acima do limiar, então a diferença entre os blocos será grande demais e. portanto, devere­
mos enviar a imagem digitalizada completa do quadro 2. Desse modo. um vídeo com similaridade
entre quadros permitirá compressão mais elevada do que se houver profusão de diferenças.
Na verdade, a maioria dos métodos de compressão de vídeo calcula a sim ilaridade não en­
tre dois quadros inteiros, mas entre blocos correspondentes de 16x16 - no entanto, a idéia é a
mesma.
O cálculo da som a das diferenças absolutas é demorado, se feito em software. Desse modo,
essa tarefa poderá ser feita usando um circuito digital customizado, ao passo que as demais tare­
fas poderão continuar a ser feitas em software. Por exemplo, você poderá encontrar um circuito
SAD dentro de uma filmadora digital ou dentro de um telefone celular que suporta vídeo. Vamos
projetar esse circuito. Um diagrama de blocos está mostrado na Fig. 5.29. As entradas do circuito
serão uma memória A de 256 bytes, com os conteúdos de um bloco de 16x16 pixels do quadro 1, e
uma outra B de 256 bytes, com os conteúdos do Quadro 2. As memórias serão discutidas na Seção
5.6. Por enquanto, considere uma memória como sendo um banco de registradores e ignore os
detalhes das interfaces das memórias. Uma outra entrada do circuito comece diz ao circuito quando
começar a fazer os cálculos. Uma saída sad apresentará o resultado depois de um certo número de
ciclos de relógio.
O Passo 1 do nosso método de projeto RTL é criar uma máquina de estados de alto nível.
Podemos descrever o comportamento do componente SAD, usando a máquina de estados de alto
nível mostrada na Fig. 5.29(a). Na parte superior, estão declaradas as entradas, as saídas e os regis-

E n tr a d a s : A, B (memória de 256 bytes); comece (bit)


S a íd a : sad (32 bits)
R e g is tr a d o r e s L o c a is : soma. sad_reg (32 bits); i (9 bits)

Figura 5.29 Componente para soma de diferenças absolutas (SAD): (a) diagrama de blocos e (b)
máquina de estados de alto nível.
Projeto em Nível de Transferência entre Registradores (RTL) 261

tradores locais soma. i e sad_reg, que serão usados. O registrador soma conterá o valor parcial da
soma de diferenças. Daremos a esse registrador uma largura de 32 bits. O registrador i será usado
para indexar o pixel corrente nas memórias de bloco; i irá de 0 a 256 c, por isso, usaremos uma
largura de nove bits. O registrador sad_reg será conectado à saída sad (é uma boa prática usar re­
gistradores com as saídas de dados) e, desse modo, terá uma largura de 32 bits, como a saída sad.
Inicialm ente, a máquina de estados espera que a entrada comece torne-se l. Então, inicializa os
registradores soma e i com 0. Em seguida, a máquina de estados entra em um laço: se i for menor
do que 256, a máquina de estados calculará o valor absoluto da diferença dos pixels, indexados
por i nos dois blocos (a notação A[1] refere-se aos dados da palavra i na memória A), atualiza
a som a parcial, incrementa i e volta a repetir essas operações. Em caso contrário, a máquina de
estados carrega o registrador sad_reg com a soma, que agora representa a soma final, e retorna ao
primeiro estado para esperar que o sinal comece torne-se 1 novamente.
Um ponto a ser enfatizado novamente é que a ordem das ações em um estado não tem impacto
sobre os resultados, porque todas essas ações ocorrem simultaneamente. Assim, para o estado
dentro do laço, os resultados não serão alterados se dispusermos as ações como “ soma = soma +
abs (A [i ] —B[ai ] ) ; i = i + 1” ou como “ i = i + l;som a = soma + abs (A [i ] —B[i ] ) ”. Qualquer
uma dessas formas usa o valor anterior de i .
O Passo 2 do nosso método de projeto RTL é criar um bloco operacional. Vemos da máquina
de estados de alto nível que precisaremos de um subtrator, um componente para o valor absoluto
(que não projetamos anteriormente, mas que é simples de ser projetado), um somador e um com-
parador para i e 256. Construím os o bloco operacional mostrado na Fig. 5 .3 0 .0 somador terá uma
largura de 32 bits, de modo que a entrada de oito bits, vinda do componente que calcula abs, terá
Os colocados em seus 24 bits mais à esquerda.
O Passo 3 é conectar o bloco operacional a um bloco de controle, como mostrado na Fig. 5.30.
Note que definimos as interfaces para as memórias A e B como sendo constituídas pelas linhas de
leitura, endereço e dados. Observe também que não listamos explicitamente as entradas e saídas da
FSM do bloco de controle já que elas podem ser vistas na periferia do bloco de controle.
O Passo 4 é converter a máquina de estados de alto nível em uma FSM. Ela está mostrada no
lado esquerdo da Fig. 5.30. Por conveniência, indicamos as ações de alto nível originais (riscadas)
e não mostramos suas substituições pelas ações correspondentes da FSM.
Para completar o projeto, devemos converter a FSM em uma implementação de bloco de con­
trole (um registrador de estado e uma lógica combinacional), como foi descrito no Capítulo 3. A*

sad

Figura 5.30 Bloco operacional SAD e FSM do bloco de controle*.

* N. de T: Relembrando, em i_lt_256, o lt vem de less than (menor do que).


262 Sistemas Digitais

Com parando im plem entações feitas em softw are e usando circuitos custom izados
No E xem plo 5.7, dissem os que a saída aparece depois de um certo núm ero de ciclos de re­
lógio. Vamos determ inar quantos ciclos exatam ente. D epois que comece torna-se 1, a nossa
m áquina de estados irá gastar um ciclo inicializando registradores em 57. Em seguida, irá usar
dois ciclos em cada um a das 256 iterações do laço (estados 52 e S3) e, finalm ente, m ais um c i­
clo para atualizar o registrador de saída no estado S4, totalizando 1 + 2*256 + 1 = 5 1 4 ciclos.
Se tivéssem os executado a SA D em softw are, teríam os tido provavelm ente necessidade
de m ais do que dois ciclos de relógio por iteração do laço. Possivelm ente, necessitaríam os
de dois ciclos para carregar os registradores internos, então um ciclo para a subtração, talvez
dois ciclos para o valor absoluto c um ciclo para a som a, totalizando seis ciclos por iteração.
A ssim , para calcular um a SA D , o circuito custom izado que construím os seria ccrca de três
vezes m ais rápido, com dois ciclos por iteração e assum indo freqüencias iguais de relógio.
N a realidade, verem os na Seção 6.5 que é possível construir um circuito SA D que é muito
mais rápido.

Armadilhas" de projeto RTL e boa prática


Armadilha: assum ir que um registrador é atualizado no e sta d o em que é escrito
Ao se criar um a m áquina de estados de alto nível, talvez o erro m ais com um seja supor que
um registrador é atualizado no estado em que ele é carregado. E ssa suposição é incorreta
e poderá levar a com portam entos inesperados se a m áquina de estad o s ler o reg istrad o r no
m esm o estado. De form a sem elhante, o m esm o poderá ocorrer se a m áquina de estados pre­
cisar ler o registrador devido ás condições de transição para o estado seguinte. Por exem plo,
a Fig. 5.31 (a) m ostra um a m áquina de estados de alto nível sim ples. E xam ine a m áquina de
estados e, então, responda às duas perguntas seguintes:

• Q ual será o valor de Q após o estado A?

• Q ual será o estado final: C ou D?

A s respostas poderão lhe surpreender. O valor de Q não será 99; o valor de Q será na reali­
dade desconhecido. A razão está ilustrada no diagram a de tem po da Fig. 5.31 (b). O estado A
configura o bloco operacional para que, na próxim a borda de relógio, um 99 seja carregado

► VÍDEO DIGITAL-IMAGINANDO 0 FUTURO

As pessoas parecem ter um apetite insaciável por poderemos imaginar displays de vídeo (com áudio),
vídeo de boa qualidade e, por essa razão, muita aten­ colocados nas paredes de nossos lares ou locais de
ção é dada ao desenvolvimento de codificadores e trabalho, exibindo continuamente o que está acon­
decodificadores rápidos e/ou eficientes para uso em tecendo em outra casa (talvez a de nossa mãe) ou
dispositivos de vídeo digital, como tocadores e gra­ no escritório de um sócio que está no outro lado do
vadores de DVD, câmeras digitais de vídeo, telefo­ país - como uma janela virtual que dá para um ou­
nes celulares que funcionam com vídeo digital, uni­ tro lugar. Poderemos imaginar também dispositivos
dades de videoconferência, televisores, TV set-top portáteis que nos permitirão ver continuamente o
boxes.* etc. É interessante pensar em direção ao fu­ que alguém mais, com uma câmera minúscula - tal­
turo - se assumirmos que a codificação e decodifica- vez um filho ou esposa, esteja vendo. Esses avanços
ção de vídeo irão se tornar ainda mais potentes e as poderão mudar signiíicativamente os nossos padrões
velocidades da comunicação digital irão aumentar.* de vida.

* N. dc T: Uma TV set-top boxe um dispositivo que recebe um sinal de vídeo e. cm seguida, faz a sua dccoditicação e conversão,
permitindo a sua exibição em uma TV. Costuma estar alojado em uma pequena caixa, geralmente colocada acima do aparelho
de TV. É muito comum em TV a cabo, recepção via antena parabólica, adaptação de televisor convencional (analógico) para
recepção digital, etc.
Projeto em Nível de Transferência entre Registradores (RTL) 263

em R e tam bém para que o valor do registrador R R e g is tr a d o r e s lo c a is : R, Q (8 bits)


seja carregado no registrador Q. Q uando essa borda
de reló g io acontecer, as duas cargas serão re a li­ R<100
zadas simultaneamente. A ssim , na subida da borda
de relógio, a saída Q ficará com o valor d esco n h e­
cido qualquer q ue estava em R.
A lém disso, o estado final não será D, mas C. A
razão está ilustrada no diagram a de tem po da Fig.
5.3 l(b). O estado B configura o bloco operacional
para que, na próxim a borda de subida de relógio, o
valor 100 seja carregado em R, e configura tam bém
o bloco de controle para que o próxim o estado seja
carregado com base nas condições de transição. O q( )
valor de R é 99 e, portanto, a condição de transição (b)
R<100 torna-se verdadeira, significando que o bloco
de controle será configurado para carregar o estado Figura 5.31 M áquina de estados de
C. e não o D , no registrador de estado. N a próxim a alto nível que se comporta de modo di­
borda de relógio, R irá se tornar 100 e o próxim o ferente do que muitas pessoas poderiam
estado será C. esperar, porque ocorre uma leitura de
A chave da questão está em sem pre lem brar-se registrador no mesmo estado em que é
de que as ações de um estado configuram o bloco carregado: (a) máquina de estados, (b)
operacional e o bloco de controle, preparando-os diagrama de tempo.
para que os valores desejados sejam carregados na
próxima borda de relógio - enquanto não acontece
essa próxima borda de relógio, os valores não estão carregados de fato. A ssim , todas as ex­
pressões, que participam das ações ou das condições de transição para o próxim o estado, usam
os valores anteriores dos registradores, não os valores que estão sendo atribuídos no próprio
estado. Pelo m esm o raciocínio, todas as ações de um estado ocorrem sim ultaneam ente na pró­
xima borda de relógio, podendo ser escritas em qualquer ordem.
A ssum indo que o projetista quer real mente que Q seja igual a 99 e que o estado final seja D,
então um a solução é acrescentar um estado extra, antes de ler o valor do registrador que esta­
m os configurando para ser carregado. A Fig. 5.32(a) m ostra um a nova m áquina de estados na
qual a atribuição Q=R foi deslocada para
o estado B , após R=99 ter se efetivado.
A lém disso, a m áquina de estados tem
um novo estado, Z?2, que sim plesm ente
perm ite a atualização de R com o novo
valor, antes que esse valor seja lido nas
condições de transição. O diagram a de
tem po d a Fig. 5.32(b) m ostra o co m ­
portam ento que era esperado pelo pro­
jetista.
N este caso, um a solução alternativa
para o problem a da transição é utilizar
valores de com paração que levem em
consideração que está sendo usado o
valor anterior. A ssim , em vez de c o m ­
parar R com lü ü , as com parações p o ­
dem ser com 99. Figura 5.32 M áquina de estados de alto nível que
A razão pela qual o estado S2 foi evita a leitura de registradores recém configurados
incluído no Exem plo 5.2 foi para evitar para serem carregados: (a) máquina de estados, (b)
essa “arm adilha” . diagrama de tempo.
264 Sistemas Digitais

Armadilha: leitura de saídas


Um outro e rro com um é criar um a E n tra d a s : A , B (8 bits) E n tra d a s : A , B (8 bits)
m áquina de estad o s de alto nível na S a íd a : P (8 bits) S a íd a : P (8 bits)

qual um a saída externa é lida na m á­ R e g is t r a d o r L o c a l: R (8 bits)

q u in a de estad o s. A s saíd as podem


apenas ser escritas, não podendo ser
lidas. P or ex em p lo , a F ig. 5 .3 3 (a)
m ostra um a m áquina de estad o s de
alto nível que não é válida - a leitura
de P no estado T não c perm itida. vSc (a) (b)
você q u iser ler um a saída, en tão d e­ Figura 5.33 (a) A leitura de uma saída não é perm i­
verá criar c usar um registrador local. tida e (b) uso de um registrador local.
A Fig. 5.33(b) m ostra o uso de um re­
gistrador local R para evitar a leitura da saída P.

Boa prática de projeto: dados de saída em registradores


É um a boa idéia assegurar-se sem pre de que seu projeto tem um registrador para cada saída
de dados. F azer isso evitará que valores espúrios ap areçam nessas saídas. P o r exem plo, a
m áquina de estados da Fig. 5.33(b) poderia ser im plem entada com o um bloco operacional no
qual a saída P estaria ligada diretam ente à saída de um som ador, com o m ostrado na Fig. 5.34.
D esse m odo, enquanto a adição estivesse sendo calculada, P iria fornecer valores espúrios de
saída durante algum tem po após R ter sido carregado com o valor de A. Além disso, se A ou B
m udassem em alguns outros estados, P tam bém m udaria, m as essa m udança provavelm ente
não seria o com portam ento esperado da m áquina de estados - o valor de P só deveria m udar
quando fosse atribuído a P um novo v a lo re m um estado. Um outro problem a é que qualquer
processador que use a saída P deve levar em conta o som ador quando o m ais longo dos atrasos
entre registradores é calculado, para se determ inar o cam inho crítico de um circuito (veja a
Seção 5.4).
Portanto, seguirem os a prática de projeto que sem pre B B
coloca um registrador diretam ente antes da saíd a de d a­
> >
dos, co m o m ostrado na Fig. 5.34(b). M esm o que ex p li­
citam ente não d eclarem os o registrador com o sendo um í I
registrador local, sem pre o assum irem os presente quando
interpretarm os a m áquina de estados de alto nível e sem ­
pre o incluirem os quando criarm os o bloco operacional. 7
(a) Preg
A lternativam ente, podem os explicitam ente d eclará-lo e, >
então, assum ir que a saída está conectada diretam ente a
esse registrador - essa é a abordagem adotada no E xem plo (b)
7
5.7, no qual declaram os o registrador sad_reg. É um a boa
Figura 5.34 (a) valores espúrios
prática não ler esse registrador; o seu único propósito é ser
surgirão em P, (b) o problema é
conectado à porta de saída.
resolvido fazendo P ser a saída
D ependendo d o exem plo, a inclusão de registradores
de um registrador.
nas saídas de dados tem a desvantagem potencial de atra­
sar em um ciclo a escrita de dados nas portas de saída.

Projeto RTL com predomínio de dados


Podem os considerar um projeto com o caindo em duas categorias: projetos com predom ínio
de controle ou com predom ínio de dados.
Um projeto com predomínio de controle é um cujo bloco de controle contém a m aior
parte da com plexidade do projeto. Q uando desenvolve um projeto com o esse, um projetista
concentra-se principal m ente no projeto do bloco de controle. Isso sig n ifica que o esforço
Projeto em Nível de Transferência entre Registradores (RTL) 265

cie projeto está dirigido em sua m aior parte à d efinição do co m portam ento dos estados do
sistem a. L ogo que o projetista tenha definido esse co m portam ento, ele poderá o b ter im e­
diatam ente o bloco operacional a partir desse co m portam ento de estados. Um p rojeto com
predom ínio de controle responde tipicam ente a entradas externas em um intervalo preciso de
tem po, e geralm ente tem um bloco operacional sim ples.
Um projeto com predomínio de dados é um cujo bloco operacional contém a m aior parte
da com plexidade do projeto. Q uando desenvolve um projeto com o esse, um projetista con-
centra-se principalm ente no projeto do bloco operacional. Isso significa que o esforço de pro­
je to está dirigido cm sua m aior parte ao distanciam ento e à interconexão dos com ponentes do
bloco operacional. Logo após o projetista ter definido o bloco operacional, ele poderá definir
im ediatam ente o com portam ento dos estados do bloco de controle. Um projeto com predo­
m ínio de dados tem geralm ente m uito paralelism o em seu bloco operacional, o qual pode ser
m uito grande. N esse tipo de projeto, os projetistas freqüentem ente desconsideram o prim eiro
passo do nosso m étodo de projeto RTL, descrito na Tabela 5.1.
O s lerm os “predom ínio de controle” e “predom ínio de dad o s” são m eram enic descritivos
e não podem ser usados rigorosam ente para classificar os projetos. A lguns projetos exibirão
as propriedades dc am bos os tipos. É com o os term os “introvertido” e “extrovertido” para
descrever as pessoas - em bora os term os sejam tileis, as pessoas não podem ser classifica­
das rigorosam ente com o sendo introvertidas ou extrovertidas, porque m uitas delas estão em
algum lugar interm ediário, ou exibem características de am bas as categorias. O exem plo da
interface de barra m ento sim ples foi um caso que tem um a quantidade sem elhante de controle
e dados. O circuito SA D de com pressão de vídeo, pelo m enos segundo a form a co m o o pro­
jetam os, tam bém foi um a m istura de controle e dados.
O projeto RTL é um processo que tem m uito de criativo. D ois projetistas podem chegar a
projetos m uito diferentes para um m esm o sistem a, seguindo possivelm ente m étodos d iferen­
tes de projeto e resultando diferenças em term os de desem penho, tam anho e outros critérios.

Exemplo de projeto de um filtro FIR


C om o os nossos exem plos anteriores tinham predom ínio de controle ou eram um a m istura de
controle e dados, agora irem os dar um exem plo de projeto com predom ínio de dados.

► EXEMPLO 5.8 Filtro FIR


Um filtro digital toma uma sequência de entradas digitais e gera uma sequência de saídas digitais
na qual alguma característica da seqüência de entrada foi removida ou modificada. A Fig. 5.35
mostra um diagrama de blocos de um filtro digital popular, conhecido como filtro FIR. A entrada
X e a saída Y têm N bits de largura cada uma, como por exemplo 12 bits. Como exemplo de filtra­
gem, considere que a seguinte sequência X, de valores digitais de temperatura, venha do sensor de
temperatura de um m otor de carro, sendo amostrada a cada segundo: 180, 180, 181.240. 180, 181.
O valor 240 provavelmente não é uma medida exata, porque a temperatura de um motor não pode
pular 60 graus em um segundo. Um filtro digital removeria esse “ruído” da seqüência de entrada,
gerando possivelmente uma seqüência de saída em Y como: 180, 180, 181, ISL 180, 181.
Um filtro FIR (usualmente lido pronunciando-se as letras “F” “I” “R” ), sigla em inglês para
resposta finita ao impulso (Finite Impulse Response), é um tipo de filtro genérico digital muito po­
pular que pode ser usado com uma ampla variedade de objetivos de filtragem. A Fig. 5.35 mostra
o diagrama de blocos de um filtro FIR. A idéia básica de um filtro FIR é simples: a saída corrente

Figura 5.35 Diagrama de blocos genérico de um filtro FIR.


266 Sistemas Digitais

é obtida m ultiplicando-se o valor atual de entrada por uma constante. A seguir, esse resultado é
somado ao valor anterior de entrada que foi multiplicado por uma constante, e assim por diante.
De certa forma, as adições feitas assim, envolvendo os valores anteriores, resultam em uma média
ponderada. Descreveremos a filtragem digital e os filtros FIR cm mais detalhes na Seção 5.11.
Para os propósitos deste exemplo, precisaremos saber simplesmente que um filtro FIR pode ser
descrito pela seguinte equação:
y(t) = cO x x(t) + c l x -x(\t)+ c2 x - x(2 1)
Um filtro FIR com três termos, como na equação acima, é conhecido como um filtro FIR de
três taps. Os filtros FIR reais têm normalmente muitas dezenas de taps - usamos três taps apenas
com propósito ilustrativo. Quando um projetista de filtro usa um filtro FIR, ele atinge um objetivo
particular de filtragem simplesmente escolhendo as constantes do filtro FÍR.
Queremos projetar um circuito para im plem entar o filtro FIR. Como a equação de um filtro
FIR é apenas transform ação de dados e nenhum controle, vamos desconsiderar o Passo 1 do
método de projeto RTL indo diretamente ao Passo 2 - projeto do bloco operacional. Precisare­
mos de um registrador em cada um dos taps para arm azenar x(t), x(t-l) e x(t-2). A cada ciclo de
relógio, iremos mover x(t-J) para x(t-2), x(t) para x(t-I) e carregarem os x(t) com a entrada atual.
Assim, iniciamos o bloco operacional com três registradores, conectados como mostrado na Fig.
5.36. Observe como os dados movem-se para a direita, a cada ciclo de relógio, de modo que xtO
armazena a entrada atual, x t l , a entrada anterior e xt2. a entrada antes da anterior. Neste exemplo,
vamos assumir que os dados têm 12 bits de largura.

f il t r o FIR de tr ê s taps
x(t) x(t- V x(t-2)

xtO Xt1 x t2
x Y
12 12 12 12
clk *> >

F ig u ra 5.36Começando a construir o bloco operacional do filtro FIR - inserção e conexão dos


registradores paraxf/J, x(t-I) ex(t-2).

Agora, em cada tap, precisaremos de mais um registrador para arm azenar os valores das cons­
tantes cO, c l e c2 - mais tarde, iremos nos ocupar com a forma de carregar esses registradores.
Precisarem os também de um m ultiplicador cm cada tap, para multiplicar o valor x do tap pelo
valor c da constante. O bloco operacional com os registradores das constantes e os multiplicadores
está mostrado na Fig. 5.37.

F ig u ra 5.37 Ampliando o bloco operacional do filtro FIR - inserção e conexão dos registradores
para cO, c l e c2 de cada tap, juntam ente com os multiplicadores. Por simplicidade, as conexões de
relógio não estão mostradas e assume-se que todas as linhas de dados têm 12 bits de largura.
Projeto em Nível de Transferência entre Registradores (RTL) 267

A saída Yé a soma dos produtos dos taps. Para isso, podemos inserir somadores para calcular a
soma resultante e podemos conectar essa soma à saída Y, como mostrado na Fig. 5.38.
Completamos o coração do projeto do bloco operacional desse filtro FIR. Agora precisamos
de um meio para que um usuário carregue os valores das constantes nos registradores cO, c l e c2.
Vamos criar uma outra entrada C para o filtro, uma linha de carga CL e um endereço de dois bits.
Cal e Ca2, que o usuário do filtro poderá usar para carregar uma constante em um registrador em
particular. O valor CalCa0=00 indica que o registrador cO deve ser carregado, 01 indica que c l deve
ser carregado, e 10, que c2 deve ser carregado. O valor de entrada C será carregado no registrador
apropriado, durante uma borda de relógio, apenas quando CL=1. Podemos projetar facilmente o cir­
cuito que realiza essa carga, usando um decodificador, como mostrado na Fig. 5.39. As linhas de
endereço Cal e CaO alimentam um decodificador 2x4, habilitando assim o registrador apropriado
(note que o endereço 11 não é usado). A entrada de carga CL é conectada à entrada de habilitação
do decodificador. Note também que acrescentamos um registrador à saída Y, o que geralm ente é
uma boa prática de projeto, já que esse registrador assegura que a saída não flutua quando produ­
tos e somas parciais são computados. Isso reduz a probabilidade do usuário aumentar acidental­
mente o caminho crítico, conectando Ya uma quantidade grande de lógica combinacional antes de
Yser carregado em um registrador.

A saída Y do filtro FIR é com putada como sendo a som a dos produtos dos taps
F ig u r a 5 .3 8
(assume-se que todas as linhas de dados têm 12 bits de largura).

Após o término do projeto do bloco operacional, o nosso método de projeto RTL envolve mais
dois passos para com pletar o bloco de controle. No entanto, esse projeto em particular não neces­
sitou de um bloco de controle, nem mesmo de um simples! Esse exemplo é na realidade um caso
extremo de um projeto com predomínio de dados. M

Comparação de implementações em software e com circuitos customizados


É interessante com parar o desem penho da im plem entação em hardw are de um filtro FIR de
três taps com um a im plem entação em softw are, ü cam inho crítico vai desde os registradores
x t e c, passando por um m ultiplicador e dois som adores antes de alcançar o registrador y re g
de Y. N a im plem entação em hardw are, vam os assu m ir que o som ador tem um atraso de 2
ns. Vamos assum ir tam bém que o encadeam ento de som adores resulta na som a dos atrasos,
A ssim , dois som adores encadeados terão um atraso de 4 ns (um a análise detalhada das portas
internas dos som adores poderia m o strar que o atraso na realidade seria um pouco m enor).
Vamos assum ir que o m ultiplicador tem um atraso de 20 ns. D esse m odo, o cam inho crítico,
ou o m ais longo atraso entre registradores (a ser discutido com m ais detalhes na Seção 5.4),
seria de co a yreg, passando pelo m ultiplicador e os dois som adores, com o m ostrado na Fig.
5.39. O atraso desse cam inho será 20 + 4 = 24 ns. O bserve que o cam inho de cl a yreg será
igualm ente longo, m as não m ais longo. Um cam inho crítico de 24 ns significa que o bloco
268 Sistemas Digitais

F ig u ra 5.39O bloco operacional do filtro FIR é finalizado com um circuito que carrega os regis­
tradores das constantes. Acrescentamos também um registrador à saída Y. o que é uma boa prática
de projeto. O caminho crítico - o atraso mais longo entre registradores - está representado pela
linha tracejada.

operacional poderia ter um a freqüência de 1 / 24 ns = 42 M H z. Em outras palavras, um a nova


entrada poderá surgir em X a cada 24 ns, e novas saídas aparecerão em Y a cada 24 ns.
A gora, vam os considerar o desem penho em hardw are de um filtro de tam anho m aior: um
filtro FIR de 100 taps em vez de ires. A principal diferença de desem penho é que precisare­
m os acrescentar 100 valores e não apenas ires. L em bre-se da Seção 4.13 que um a árvore de
som adores é um a m aneira rápida de se som ar m uitos valores. C em valores irão necessitar de
um a árvore com sele níveis - 50 adições, depois 25, então 13 (aproxim adam ente), então sete,
então quatro, então duas e então uma. A ssim , o atraso total será 20 ns (para o m ultiplicador)
m ais sete atrasos de som ador (7*2 ns = 14 ns), totalizando 34 ns.
Para um a im plem entação em softw are, assum irem os 10 ns por instrução. A ssum a que
cada m ultiplicação ou adição necessite de duas instruções. Um filtro de 100 taps precisará

► COMO FUNCIONA? QUALIDADE DE VOZ EM TELEFONES CELULARES

Durante a década passada, os telefones celulares tais é llltrar esse ruído de fundo, retirando-o do sinal
tornaram-se lugar-comum. Eles operam em ambien­ de áudio. Na próxima vez em que você conversar
tes muito mais ruidosos do que os telefones de linha com alguém que esteja usando um celular, preste
comuns, incluindo o ruído de automóveis, vento, atenção e observe como o ruído que você ouve é
aglomerações de pessoas falando, etc. Assim, a re­ muito menor do que o realmente captado pelo mi­
moção desse ruído por filtragem é especial mente crofone. À medida que os circuitos continuam a ser
importante nos telefones celulares. O seu celular aperfeiçoados em velocidade, tamanho e consumo,
contém no mínimo um, e provavelmente mais, mi­ a filtragem provavelmente será melhorada ainda
croprocessadores e circuitos digitais customizados mais. Alguns dos telefones mais modernos podem
diversos. Depois de converter o sinal de áudio ana­ usar mesmo até dois microfones, associados a téc­
lógico do microfone em uma seqüência de bits de nicas de formação de feixe (veja a Seção 4.13) para
áudio digital, parte do trabalho desses sistemas digi­ focalizar a voz do usuário.
Projeto em Nível de Transferência entre Registradores (RTL) 269

de aproxim adam ente 100 m ultiplicações e 100 adições, de m odo que o tem po total será (100
m ultiplicações * 2 instruções / m ultiplicação + 100 adições * 2 instruções / adição) * 10 ns
por instrução = 4000 ns.
Em outras palavras, a im plem entação em hardw are seria 100 vezes m ais rápida (4000 ns
/ 34 ns) do que a im plem entação em softw are. Portanto, um a im plem entação em hardw are
poderá processar 100 vezes m ais dados do que um a im plem entação em softw are, resultando
um a filtragem m uito melhor.

► 5.4 DETERMINANDO A FREQÜENCIA DE REL0GI0


O projeto RTL produz um processador, consistindo em um bloco operacional e um bloco de
controle. D entro do bloco operacional e do bloco de controle, há registradores, os quais ne­
cessitam de um sinal de relógio. Um sinal de relógio deve ter um a frequência em particular.
A freqüência determ inará quão rápido o sistem a irá ex ecu tar a tarefa especificada. O b v ia­
m ente, um a freqüência m ais baixa resultará em um a execução m ais lenta, ao passo que um a
freqüência m ais elevada resultará em um a execução m ais rápida. E xpresso de outra form a,
com um período m aior a execução fica m ais lenta, ao passo que com um período m enor fica
m ais rápida.
O s projetistas de circuitos digitais querem freqüentem ente (m as nem sem pre) que seus
sistem as funcionem tão rapidam ente quan to possível. E ntretanto, um p ro jetista não pode
escolher um a freqüência de relógio arbitrariam ente elevada (o que significaria um período
arbitrariam ente pequeno). C onsidere, por exem plo, o circuito sim ples da Fig. 5.40, no qual
os registradores a e b alim entam um registrad o r c p assando por um som ador. O som ador
tem um atraso de 2 ns. Isso significa que, quando as entradas do som ador m udam , as saídas
do som ador não estarão estáveis senão após 2 ns - antes de 2 ns, as saídas do som ador terão
valores espúrios (veja a .Seção 4.3 p ara um a d escrição dos valores espúrios que aparecem
nas saídas de um som ador). Se o projetista esco lh er um
período de relógio de 10 ns, o circuito deverá trabalhar
bem . Se o perío d o for en cu rtad o para 5 ns. a execução i i
será acelerada, m as encurtar o período para 1 ns resultará clk
um com portam ento incorreto do circuito. Em um ciclo de
relógio, novos valores devem ser carregados nos regis­
>

nr >

tradores a e b. N o próxim o ciclo de relógio, o registrador atraso \ _j_


c será carreg ad o 1 ns após (assim com o a e /;), m as a de 2 ns
saída do som ador não estará estável até que 2 ns tenham
passado. O valor carregado no registrador c será assim
I
algum valor espúrio que não tem nenhum significado útil, >
e não será a som a de a e b.
1
A ssim , um p ro jetista deve ser cu id ad o so para não
atribuir um a freqüência m uito elevada ao relógio. Para Figura 5.40 O caminho mais de­
determ inar a freqüência m ais elevada possível, um p ro ­ morado é 2 ns.
jetista deve analisar o circuito inteiro e encontrar o cam i­
nho com o m ais longo dos atrasos, desde qualquer registrador até qualquer outro registrador,
ou entre qualquer entrada de circuito e qualquer registrador. O atraso m ais longo de um cir­
cuito, entre registradores ou entre um a entrada e um registrador, é conhecido com o caminho
crítico. O s projetistas escolhem então um a freqüência cujo período é maior do que o cam inho
crítico do circuito.
A Fig. 5.41 ilustra um circuito com no m ínim o quatro cam inhos possíveis entre qualquer
registrador e qualquer outro registrador:

• Um cam inho com eça no registrador a , passa pelo som ador e term ina no registrador c. O
atraso desse cam inho é 2 ns.
270 Sistemas Digitais

• Um outro cam inho com eça no registrador a ,


passa pelo som ador e o m ultiplicador, e ter­
m ina no registrador d. O atraso desse cam i­
nho é 2 ns + 5 ns = 7 ns.

• Um outro cam inho com eça no registrador b ,


passa pelo som ador e o m ultiplicador, e ter­
m ina no registrador d. O atraso desse cam i­
nho tam bém é 2 ns + 5 ns = 7 ns.

• O últim o cam inho com eça no registrador /?,


passa pelo m ultiplicador e term ina no regis­
trador d. () atraso desse cam inho é 5 ns.

A ssim , o cam in h o m ais longo é de 7 ns (na Figura 5.41 D eterm inação do cam inho
realidade, há dois desses cam inhos). D esse m odo, crítico,
o período do relógio deve ter no m ínim o 7 ns.
A análise anterior assum e que o único atraso entre registradores é devido aos atrasos lógi­
cos. Na realidade, os fios tam bém tem atrasos. Nos anos de 1980 e 1990, o atraso lógico pre­
dom inou sobre os atrasos nos fio s-esses eram frequentem ente desconsiderados. No entanto,
nas tecnologias de chip m odernas, os atrasos nos fios podem ser iguais ou m esm o m aiores do
que os atrasos lógicos e, portanto, não podem ser ignorados. O s atrasos nos fios são som ados
ao com prim ento de um cam inho do m esm o m odo que os atrasos lógicos. A Fig. 5.42 ilustra o
cálculo do com prim ento de um cam inho no qual foram incluídos os atrasos nos fios.
A lém disso, a an álise an te rio r não con sid ero u os tem ­
p o s de setup d o s reg istrad o res. L e m b re -se d a S eção 3.5
q ue as e n tra d a s de flip -fio p s (c, co n se q ü e n tc m e n te , as
e n trad as d e re g istrad o res) devem e sta r estáv eis d u ran te
,5 ns
um p erío d o esp ecificad o de tem po antes d a borda d e um
relógio. O tem po de setup 6 som ado ao co m p rim en to do
cam inho.
M esm o considerando os atrasos nos fios e os tem pos de
setup, os projetistas tipicam ente escolhem um período de 'w
cc f s0>
relógio que é ainda maior do que o cam inho crítico, com
um valor que depende de quão conservador o projetista de­
seja ser para se assegurar de que o circu ito irá trabalhar
T
sob um a variedade de condições de operação. C ertas co n ­ Figura 5.42 O cam inho mais
dições podem m udar o atraso dos com ponentes de circuito, longo será de 3 ns se considerar-
com o tem peratura m uito elevada ou m uito baixa, vibração, mos os atrasos nos fios.
idade, etc. G eralm ente, quanto m aior for o período além do
cam inho crítico, m ais conservador será o projeto. Por exem plo, podem os d eterm in ar que o
cam inho crítico tem 7 ns, m as podem os escolher um período de relógio de IO ns, ou m esm o
15 ns, sendo este últim o bem conservador.
Se um objetivo do projeto for o baixo consum o, então um projetista poderá esco lh er um
período ainda maior, com o 100 ns, para reduzir a potência consum ida pelo circuito. N a Seção
6.6, será discutido o porquê da redução de freqüência baixar o consum o.
Q uando um p rojetista analisa um p ro cessad o r (blocos de co n tro le e o p eracio n al) para
determ inar o cam inho crítico, ele deve estar ciente de que os cam inhos entre registradores
existem não só dentro do bloco operacional (Fig. 5.43(a)), m as tam bém dentro do bloco de
controle (Fig. 5.43(b)), entre os blocos de controle e operacional (Fig. 5.43(c)), e m esm o
entre o processador e os com ponentes externos.
Projeto em Nível de Transferência entre Registradores (RTL) 271

► FABRICANTES CONSERVADORES DE CHIPS E OVERCLOCKING DE PCs

Usualmente, os fabricantes de chips publicam as PC, conseguem ajustar a frequência de relógio dos
freqüências máximas de relógio de seus chips com chips para um valor superior ao máximo publicado.
um valor um pouco abaixo do máximo real-possi- Numerosos sites na Internet publicam estatísticas a
velmente IO, 20 ou mesmo 30% abaixo. Esse con­ respeito dos sucessos e fracassos de pessoas que ten­
servadorismo reduz as possibilidades do chip vir a tam acelerar a freqüência de quase todos os tipos de
falhar em situações não previstas, como extremos processadores usados em PCs - parece que o normal
de calor ou frio, ou ligeiras variações no processo é um valor IO a 40% superior ao máximo publicado.
de fabricação. Muitos entusiastas de computadores Entretanto, eu não recomendo o overclocking (por­
pessoais tiram vantagem desse conservadorismo e que você pode danificar o microprocessador devido
fazem o chamado overclocking” de seus PCs, ou ao superaquecimento), mas é interessante ver como
seja, alterando os ajustes do BIOS {Basic lnpnt/On- projetos conservadores são uma presença frequente.
tput System. ou sistema básico de entrada e saída) do

r f
Lógica com binacional 8 8

± i
Id
tot
clr <

m
8 bits sjomador
< eje 8 bits
tot_lt_s
n r ( 1 ____
/ '8
Bloco operacional /

(a)

Figura 5.43 Caminhos críticos cm um circuito: (a) dentro dc um bloco operacional, (b) dentro de
um bloco de controle e (c) entre um bloco de controle e um bloco operacional.

O núm ero de cam inhos possíveis em um circu ito pode ser bem grande. C onsidere um
circuito, com N registradores, que tem cam inhos desde cada um dos registradores até todos
os outros. A ssim , haverá N*N. ou /V" cam inhos possíveis entre os registradores. Por exem plo,
se N for 3 e os três registradores forem referidos com o A, B e C, então os cam inhos possíveis
serão: A — >A, A — >B. A — >C , B — >A, B— >B, B— >C , C— >A, C— >B e C— >C , ou 3*3=9
cam inhos possíveis. Para M=50, poderá haver até 2500 cam inhos possíveis. Devido ao grande
núm ero de cam inhos possíveis, ferram entas autom áticas podem ser de grande auxílio. F er­
ram entas de análise de tempo podem ex am in ar autom aticam en te todos os cam in h o s para
determ inar o m ais longo, e assegurar tam bém que os tem pos de setup e hold sejam satisfeitos
em todo o circuito.
272 Sistemas Digitais

► 5.5 DESCRIÇÃO EM NÍVEL COMPORTAMENTAL: PASSANDO DE C


PARA PORTAS (OPCIONAL)
À m edida que a quantidade de transistores por chip co n tin u a a au m en tar e, co n seq u en te­
m ente, os projetistas constroem sistem as digitais m ais com plexos que usam esses tran sisto ­
res adicionais, o com portam ento dos sistem as digitais torna-se progressivam ente m ais difícil
de ser com preendido. F reqüentem ente, um projetista que está construindo um novo sistem a
digital acha útil descrever prim eiro o com portam ento desejado do sistem a usando um a lin­
guagem de program ação, com o C, C + + ou Java, para prim eiro o b ter um a descrição correta
do com portam ento desejado. (A lternativam ente, o projetista pode usar os construtos de pro­
gram ação de alto nível de um a linguagem de descrição de hardw are, com o V H D L ou Verilog,
para obter um a descrição correta do com portam ento desejado.) A seguir, o projetista converte
essa descrição em linguagem de program ação cm um projeto RTL, segu in d o o m étodo de
projeto RTL, o qual usualm ente com eça com um a descrição RTL de uma m áquina de estados
de alto nível. A conversão de um a descrição de um sistem a, feita com um a linguagem de
program ação, cm um a descrição RTL é conhecida com o projeto em nível comportamental.
Introduzirem os o projeto em nível com portam ental por m eio de um exem plo.

► EXEMPLO 5.9 Soma de diferenças absolutas em C para a compressão de vídeo


Lembre-se do Exemplo 5.7, no qual criamos um componente que realizava a soma de diferenças
absolutas. Naquele exemplo, começam os com uma máquina de estados de alto nível - mas essa
máquina de estados não era muito fácil de ser compreendida. Podemos descrever mais facilmente
o cômputo da som a de diferenças absolutas usando um código em linguagem C. como mostrado
na Fie. 5.44.

int SAD (b y te A [256], b y te B [256]) / / n ã o é b e m a s in ta x e C


{
u in t s o m a ; s h o rt u in t i;
s o m a = 0;
i = 0;
w h ile (i < 256) {
Figura 5.44 D escrição usando s o m a = s o m a + a b s (A[i] - B[i]);
um programa em C do cômputo de i = i + 1;
uma soma de diferenças absolutas
>
- o program a em C pode ser mais re tu rn (so m a);
fácil de desenvolver e compreender
do que uma máquina de estados.

Para a maioria das pessoas, é muito mais fácil com preender esse código do que a máquina de
estados de alto nível da Fig. 5.29. Assim, em certos projetos, o código em C (ou algo similar) é o
ponto de partida mais natural.
Para iniciar o método de projeto RTL, deveremos transformar esse código em uma máquina de
estados de alto nível, como a da Fig. 5.29, e em seguida prosseguir completamente com o método,
obtendo assim o circuito projetado. M

É instrutivo definir um m étodo estruturado para converter um código C em um a m áquina


de estados de alto nível. A definição desse m étodo deixará claro que um código em C pode
ser compilado automaticamente, produzindo-se um program a, que pode ser executado em um
processador program ável, ou um circuito digital customizado. D estacam os que a m aioria dos
projetistas, que com eça com um código em C e prossegue então segundo os passos do pro­
je to RTL, não segue necessariam ente um m étodo em particular para realizar essa conversão.
E ntretanto, na realidade, as ferram entas autom atizadas seguem sim um m étodo, o qual tem
algum as sem elhanças com o que passarem os a descrever. D estacam os tam bém que. algum as
Projeto em Nível de Transferência entre Registradores (RTL) 273

vezes, o m étodo de conversão produz estados “extras” que, com o é possível observar, podem
ser com binados com outros - essa com binação poderia ser feita posteriorm ente em um passo
de otim ização, em bora possam os ir com binando alguns deles à m edida que avançam os com
o m étodo de projeto.
Irem os considerar três tipos de com andos usados nos códigos em C - com ando de atribui­
ção, laço de w hile e com ando condicional (if-then-else). Para cada um deles, fornecerem os
tam bém um m odelo de m áquina de estados em alto nível.
O com ando de atribuição em C é
convertido cm uma m áquina de esta­
dos, a qual contém um único estado.
As ações desse estado executam a atri­
buição, com o m ostrado na Fig. 5.45.
O com ando if-then (se-então), em
Figura 5.45 M odelo de máquina de estados para o
C, é convertido em um estado no qual
comando de atribuição.
a condição do com ando if 6 testada. Se
essa condição for verdadeira, será feito
um salto para os estados especificados
na parte do then. Em caso contrário, o
salto irá desconsiderar esses estados e
irá direto para o estado “fim ” , com o
m ostrado na Fig. 5.46.
Podem os converter o com ando if-
then-else (se-então-senão) da lingua­
gem C em um a m áquina de estados
sim ilar, tendo um estado no qual a
co n d ição do com an d o if é testada. Figura 5.46 Modelo de máquina de estados para o
D esta vez, no entanto, se a condição comando if-then.
do if for falsa, o salto será dirigido para
os estados especificados na parte do
else, com o m ostrado na Fig. 5.47.
É com um a parte do else co n ter
um outro com ando //p o rq u e os pro­
gram adores em C poderão usar m últi­
plas partes else if em um a região do
código.
F in al m en te, o c o m a n d o d e laço
while (en q u an to ) d a lin g u ag em C é
c o n v ertid o em e sta d o s se m elh an tes Figura 5.47 M odelo de máquina de estados para o
aos d o co m an d o if-then, ex ceto que, comando if-then-else.
se a c o n d iç ã o d o while fo r v e rd a ­
d eira, a m á q u in a de esta d o s e x e c u ­
tará os c o m an d o s d o while e saltará
de volta para o estad o em que a c o n ­
d ição é testad a, e não para o estad o
“ fim ” , c o n fo rm e m o strad o na Fig.
5 .4 8 . P o d e re m o s a tin g ir o e sta d o
final ap en as q u an d o a c o n d iç ã o fo r
falsa.
D ados esses m odelos sim ples de
conversão, um a am pla variedade de
program as em C poderá ser transfor­ Figura 5.48 M odelo de m áquina de estados para o
m ada em m áquinas de estados de alto comando de laço while.
274 Sistemas Digitais

nível, a partir das quais já sabem os com o criar projetos de circuito, seguindo o nosso m étodo
de projeto RTL.

► EXEMPLO 5.10 Conversão de um comando if-then-else em uma máquina de estados


Recebemos um código semelhante a C, mostrado na Fig. 5.49(a), que com puta o valor máximo de
duas entradas de dados Xe Y. Usando o método da Fig. 5.47, podemos transformar esse código em
uma máquina de estados, convertendo primeiro o com ando if-then-else em estados, como mos­
trado na Fig. 5.49(b). A seguir, convertemos os comandos then em estados, e então, os comandos
else, resultando a máquina de estados final da Fig. 5.49(c).

E n tra d a s -, uint X,Y *


S a id a s : uint Max

f(X>Y){___
Max = X; { th e n ( e ls e

> comandos) comandos)


else {
-1
Max =Y;
i— — — — — — — — — — . ■J
>

(a)

Figura 5.49 Projeto em nível com portam ental a partir de código em C: (a) código em C para
computar o máximo de dois números, (b) conversão do comando if-then-else em uma máquina de
estados, (c) conversão dos com andos then e else em estados. A partir da máquina de estados de
(c) poderemos usar o nosso método de projeto RTL para completar o projeto. Observação: o valor
máximo poderia ser implementado de forma mais eficiente; aqui usamos um cálculo de máximo
que pudesse resultar em um exemplo de fácil compreensão. A

► EXEMPLO 5.11 Conversão de um código C para o cálculo de SAD em uma máquina de estados de alto nível
Queremos converter a descrição, feita com um programa em C, da soma de diferenças absolutas
do Exemplo 5.9 em uma máquina de estados de alto nível. O código, mostrado na Fig. 5.50(a), está
escrito, não na forma de uma chamada de procedimento, mas sim na forma de um laço infinito.
Uma entrada “comece” é usada para indicar quando o sistem a deve computar a SAD. Após alguma
otimização, o com ando “w h ile(l)” é convertido simplesmente em uma transição que retorna do
último estado ao primeiro. Adiaremos o acréscim o dessa transição até que tenhamos definido o
restante da máquina de estados. Iniciam os com o com ando “while(!com ece)”, o qual, baseado
na abordagem anterior dos modelos de conversão, é transformado nos estados mostrados na Fig.
5.5()(b). Como o laço não tem com andos em seu interior, podemos sim plificar os seus estados,
como está mostrado na Fig. 5.50(c). Essa figura mostra também os estados correspondentes aos
dois com andos seguintes de atribuição. Como essas duas atribuições podem ser feitas sim ulta­
neamente, combinamos os dois estados em um único, como mostrado na Fig. 5.50(d). A seguir,
usando os modelos de conversão, transformamos o próximo laço de while nos estados mostrados
na Fig. 5.50(e). Na Fig. 5.50(f), incluímos os estados correspondentes aos com andos do laço de
while, e combinamos em um único os dois estados correspondentes aos comandos de atribuição,
porque essas atribuições podem ser feitas simultaneamente. Na Fig. 5.50(0, também está mostrado
o estado que corresponde ao último comando do código C. aquele que faz a atribuição sad=sonui.
Finalmente, os estados vazios, obviamente desnecessários, são eliminados e, considerando que o
código inteiro está dentro do laço “w h ile(l)”, é acrescentada também uma transição que vai do
último estado até o primeiro.
Projeto em Nível de Transferência entre Registradores (RTL) 275

Figura 5.50 Projeto em nível comportamental do código usado para som ar diferenças absolutas:
(a) código original em C, escrito na forma de um laço infinito, (b) conversão do comando “while
(ícomece);” em uma máquina de estados, (c) estados simplificados do “while (ícomece);” e estados
para os comandos de atribuição que se seguem, (d) combinação de dois estados de atribuição em
um único, (e) inserção do modelo de conversão do laço de while seguinte, (f) inserção dos estados
para esse laço de while e combinação de dois comandos de atribuição em um único, (g) máquina
de estados de alto nível final, com o “w hile(l)” incluído, na qual há uma transição no último estado
que retorna ao primeiro estado, e onde os estados, obviamente desnecessários, foram removidos.

Observe a semelhança entre a nossa máquina de estados final de alto nível da Fig. 5.50(g) e a
máquina de estados de alto nível da Fig. 5.29, que projetamos partindo do zero.
Em algum momento, precisaremos estabelecer uma relação entre os tipos de dados da lingua­
gem C e os bits. Por exemplo, o código em C anterior declara que i é do tipo short unsigned inte-
ger, o que significa 16 bits sem sinal. Assim, poderíamos declarar que i é de 16 bits na máquina
de estados de alto nível. Por outro lado, em vez disso, como sabemos que o intervalo de i vai de 0
a 256, poderíamos declarar que i e um tipo de dado com 9 bits de largura (a linguagem C não tem
um tipo de dado com 9 bits de largura).
Em seguida, a partir dessa máquina de estados, poderemos prosseguir e projetar um bloco de
controle e um bloco operacional, como foi feito na Fig. 5.30. Portanto, podemos converter um
código C em portas, usando um método direto automático. ◄
276 Sistemas Digitais

P o r in te rm éd io dos ex em p lo s a n terio re s, v o cê viu co m o um c ó d ig o em C p o d e ser


co n v ertid o em um circu ito digital cu sto m izad o , u san d o m éto d o s q u e são to talm en te a u to ­
m atizáveis.
Um có d ig o em C g en érico pode c o n ter tipos ad icio n ais de co m an d o s, alg u n s dos quais
podem ser co n v ertid o s facilm en te em estados. P or exem plo, um laço de fo r pode se r c o n ­
v ertid o em estad o s, tran sfo rm an d o p rim eiro o laço de fo r em um laço de while. U m c o ­
m ando switch pode ser convertido, tran sfo rm an d o p rim eiro o co m an d o switch em c o m a n ­
dos if-then-else.
E ntretanto, quando se faz a conversão para circuito, alguns constructos da linguagem C
trazem problem as. Por exem plo, os ponteiros e a recursividade não podem ser facilm ente
convertidos. D esse m odo, quando se parte de um código em C, as ferram entas de au tom ati­
zação de projeto em nível com portam ental geralm ente im põem restrições a esse código, para
que possa ser m anipulado pela ferram enta. E ssa im posição de restrições é conh ecid a com o
redução do conjunto de instruções da linguagem (subsetting ).
E m bora, nesta seção, tenham os dado ênfase aos códigos cm C , é óbvio que q u aisquer
linguagens sem elhantes, co m o C ++, Java, V H D L , Vcrilog, etc., podem ser convertidas cm
circuitos digitais custom izados - desde que seja feita um a redução adequada do conjunto de
instruções d a linguagem .

► 5.6 COMPONENTES DE MEMÓRIA


O projeto em nível de transferência en tre registradores inclui o
distanciam ento e a conexão de com ponentes para form ar blocos
operacionais, que são controlados p o r blocos de controle. O pro­
je to RTL freqüentem ente utiliza alguns com ponentes adicionais c/>
além do bloco operacional e do de controle. §
co
•••
Um desses com ponentes é a m em ória. U m a memória M xN é Q.
um com ponente capaz de arm azenar M itens de dados (data), de N
bits cada um. C ada item de dados é conhecido com o um a palavra.
A Fig. 5.51 ilustra o arm azenam ento que está disponível cm uma N b it s d e
m em ória M.xN. la r g u r a c a d a u m a

G eralm ente, podem os classificar as m em órias em dois grupos: M e m ó r ia M * N


m em ória R A M , que pode ser escrita e lida, e m em ória ROM , que
som ente pode ser lida. E ntretanto, com o verem os, a separação en ­ Figura 5.51 Visão Ió-
tre as duas categorias não é nítida, devido às novas tecnologias. eica de uma memória.

Memória de acesso aleatório (RAM)*


U m a RAM equivale logicam ente a um banco de registradores (veja a Seção 4 . 10) - esses dois
com ponentes são m em órias cujas palavras podem ser lidas e escritas individualm ente a partir
de entradas de endereço (cada palavra pode ser entendida com o um registrador). A s d iferen­
ças entre um a RAM e um banco de registradores são:

• O tam anho de M - C ostum am os nos referir às m em órias m enores (entre 4 e 512 ou m esm o
1024 palavras ou tanto) com o bancos de registradores e às m aiores com o RAM s.

• A im plem entação do arm azenam ento dos bits - Para quantidades crescentes de palavras,
um a im plem entação com pacta torna-se cada vez m ais im portante. A ssim , para arm azenar
bits cm um a RAM típica, ao invés de flip-flops, usa-se um a form a de im plem entação
m uito com pacta.

* N. de T: De r a n d o m a c c e s s m e m o r y , em inglês.
Projeto em Nível de Transferência entre Registradores (RTL) 277

• O form ato físico da m em ória - Para um núm ero elevado de palavras, o form ato físico de
im plem entação da m em ória torna-se im portante. Se o form ato for retangular e alongado,
algum as conexões serão curtas e outras, com pridas, ao passo que, se o form ato for q u a ­
drado, todas as conexões terão um com prim ento m édio. Portanto, o form ato de um a RAM
típica é quadrado para que o seu cam inho crítico seja reduzido. Para realizar as leituras,
lê-se prim eiro um a linha inteira de palavras e, em seguida, seleciona-se a palavra (coluna)
apropriada nessa linha.

N ão há um a linha divisória nítida entre a definição de um banco de registradores e a de


um a RAM . As m em órias (típicas) m enores tendem a ser cham adas de bancos de registrado­
res, e as m aiores, de RAM s. No entanto, freqüentem ente você verá esses term os sendo usados
de form a inversa.
U m a m em ória R A M típica tem um a única porta. A lg u m as R A M s têm duas portas. O
acréscim o de m ais portas a um a RAM é m uito m enos frequente do que a um banco de regis­
tradores, porque, devido ao m aior form ato de um a R A M , os custos extras de atraso e tam anho
tornam -se m uito m aiores. N o entanto, conccitualm ente, um a R A M pode ler um núm ero arbi­
trário de portas de leitura e escrita, exatam ente com o um banco de registradores.
A Fig. 5.52 m ostra o diagram a de blocos de um a RAM
1024x32 de porta única (/V/=1024, /V=32). A entrada de d a­ 32
data
dos data, com 32 bits de largura, pode servir, qu an d o se 10
escreve, de linha de entrada de dados ou, qu an d o se lê, de oüür

saída. A entrada addr tem um a largura de dez bits e, durante RAM


rw 1024x32
as leituras e escritas, serve de linha de endereço. A entrada
de controle rw de um bit indica se a operação corrente d e­ en

verá ser de leitura ou escrita (por exem plo, rw=0 significa ler >
e rw =l, escrever). A entrada de controle en de um bit h abi­
lita a R A M , perm itindo que ela seja lida ou escrita-q u an d o Figura 5.52 Sím bolo de dia­
não querem os ler nem escrever em um ciclo de relógio em grama de blocos de uma RAM
particular, fazem os en ser 0, evitando assim que a m em ória 1024x32.
seja lida ou escrita (independentem ente do valor de rw).
A Fig. 5.53 m ostra a estrutura lógica interna de um a R A M MxN. Q uando dizem os “e s­
trutura interna” significa que podem os pensar em um a estrutura im plem entada desse m odo,
m esm o que a im plem entação física real con ten h a um a estrutura diferente. (C om o analogia,
a estrutura lógica de um telefone é um m icrofone e um alto-falante, co n ectad o s a um a li­
nha telefônica. Por outro lado, fisicam ente, as im plem entações dos telefones reais são m uito

► POR QUE SE CHAMA MEMÓRIA DE ACESSO ALEATÓRIO?

Nos primeiros tem pos do projeto digital, não cabeça. Em outras palavras, a memória era aces­
existiam RAMs. Se você tivesse informações e sada sequencialmente. Quando a RAM foi inicial­
quisesse que seu circuito digital as armazenasse, mente lançada, sua característica mais atrativa era
você deveria guardá-las em uma fita ou um tam­ que um endereço “aleatório” podia ser acessado,
bor magnético. As unidades de fita (e de tambor, levando o mesmo tempo que o acesso a qualquer
também) tinham de mover a fita até que a posição outro endereço, independentemente de qual ende­
desejada de memória estivesse debaixo da cabeça, reço tinha sido lido antes. A razão é que, quando se
a qual podia ler ou escrever nela. Se em um dado acessa uma RAM. não há “cabeça” alguma sendo
momento a posição 900 estivesse debaixo da ca­ usada nem fita ou tambor girando. Desse modo. o
beça e você quisesse escrever na posição 999, a fita termo memória de “acesso aleatório” (ou “acesso
deveria ser movida, passando pelas posições 901, randômico”) foi usado e tem permanecido em uso
902, ... 998, até que a posição 999 estivesse sob a até hoje.
278 Sistemas Digitais

diferentes, podendo conter m onofones, headsets *, conexões sem 11o, dispositivos internos
de atendim ento autom ático, etc.) A parte principal d a estru tu ra de um a R A M é um a grade
contendo os blocos de arm azenam ento de bits, tam bém conhecidos co m o células. U m co n ­
junto de N células form a cada um a das M palavras. U m a en trad a de endereço alim enta um
decodificador. C ada um a de suas saídas habilita todas as células d a palavra que corresponde
ao valor presente de endereço. A entrada de habilitação, en, pode d esabilitar o decodificador,
im pedindo que um a palavra qualquer seja habilitada. A entrada de controle de leitura ou es­
crita, rw, tam bém se conecta a todas as células, controlando se a célula será gravada com os
dados de escrita w data, ou se o conteúdo dela será lido e colocado na saída de dados de leitura
r d a t a . As linhas de dados estão conectadas a todas as células das palavras. D esse m odo,
cada célula deve ser projetada de m odo que o conteúdo aparecerá na saída apenas quando ela
estiver habilitada. Q uando desabilitada, nada é colocado na saída, im pedindo que ocorram
interferências com a saída de algum a outra célula.

wdata(N-l) wdata{N-2) wdataO


Seja A = log 2 M
habilitação bloco de armazenamento
de palavra
fc rffc • •• de bit (também conhecido
I ^ I

addrO-
addrl
aO
a1
decodi­
dO
3 3 .1 #• •
como "célula")

~o
x>
ficador d1 fcfcfea
m ••• AxM
•••
a(A-1) dcjta célula
addr(A-1)' 1
1
habHitaçãoj h_a_bjlit_ação
d(M-1) de palavra Tde palavra
clk- >
i rw d^ta
en
rw p a r a to d a s a s c é lu la s
T
rdata(N-l) rdata(N-2) rdataO

Figura 5.53 Estrutura lógica interna de uma RAM.

O bserve que a RAM da Fig. 5.53 tem as m esm as en ­


tradas e saídas do diagram a de blocos da RAM da Fig.
5.52, exceto que as linhas de escrita e leitura de dados
da RAM da Fig. 5.53 estão separadas, ao passo que na
Fig. 5.52 há um único conjunto de linhas de dados (porta
única). A Fig. 5.54 m ostra com o linhas separadas podem
ser com binadas dentro de um a R A M que tem um único
conjunto de linhas de dados.
Figura 5.54 Entrada e saída de da­
Armazenamento de bit em uma RAM dos de uma RAM de porta única.

C om parada com um banco de registradores, a característica chave de um a R A M é a sua


com pacidade. L em bre-se do C apítulo 3 que usam os um flip-fiop para im plem entar um bloco
de arm azenam ento de bit. C om o as R A M s arm azenam um a g ran d e quantidade de bits, elas
utilizam um bloco de arm azenam ento de bit que é m ais com pacto do que o de um flip-flop.
D esse m odo, irem os discutir brevem ente os projetos internos dos blocos de arm azenam ento
de bit que são usados em dois tipos populares de R A M s - RAM estática e RAM dinâm ica.
No entanto, saiba antecipadam ente que os projetos internos desses blocos envolvem questões
de eletrônica, além do escopo deste livro, fazendo parte dos objetivos de livros sobre VLSI ou

* N. de T: O monofonc do telefone é a parte móvel que o usuário segura com a mão enquanto fala. H constituída pelo microfone
e o alto-falante (ou um fone). O headset é um suporte de monofonc que se ajusta à cabeça, permitindo que a pessoa fique com
as mãos livres.
Projeto em Nível de Transferência entre Registradores (RTL) 279

projeto digital avançado. Felizm ente, um com ponente do tipo R A M encobre a com plexidade
de sua eletrônica interna usando um contro lad o r de m em ória. A ssim , a interação entre um
projetista digital e um a RAM continua sendo a que foi discutida na seção anterior.

RAM estática
U m a RAM estática (SR A M , de Static RAM)
usa um bloco de arm azenam ento de bit consti­
tuído por dois inversores conectados em laço,
com o m ostrado na Fig. 5.55. Um bit d passa
pelo inversor inferior para tornar-se d ', retorna
através do inversor superior c torna-se d nova-
m ente - assim , o bit fica arm azenado no laço
inversor. E m com paração com a estrutura “ ló-
gica*’ d a R A M d a Fig. 5.53, o bserve que o
bloco de arm azenam ento d e bit contém um a Figura 5.55 Célula de uma SRAM.
linha extra de dados, d a ta 1, que o atravessa.
Para escrever um bit nesse laço inversor,
colocam os o valor desejado do bit na linha de
dados d a ta e o seu co m p lem en to em d a t a '.
D esse m odo, para arm azenar um 1, o co n tro ­
lador de m em ória faz d a ta = l e d a t a ' =1, com o
m ostrado na Fig. 5.56. (Para arm azenar um 0,
o controlador deve fazer data= 0 e d a t a ' = 1.) A
seguir, o controlador faz enabl e = l, o que ativa
os dois transistores m ostrados. D esse m odo,
os valores de d a ta e d a ta ' aparecerão no laço Figura 5.56 Escrevendo um 1 em uma célula
inversor, co m o m o strad o (so b rep o n d o -se a de SRAM.
q u alq u er valor que já estivesse ali antes). A
com preensão com pleta do porquê do funcionam ento desse circuito envolve detalhes elétricos
que estão além do escopo desta discussão.
Para realizar a leitura do bit arm azenado, pode-se colocar prim eiro um 1 em ambas as li­
nhas d a ta e d a t a 1 (um a ação conhecida c o m o pré-carga) c, em seguida, fazer o sinal de habi­
litação ser 1. Em um dos lados, um dos transistores habilitados lerá um 0. Com isso, o 1 pré-
carrcgado cm d a ta ou d a t a 1 sofrerá um a queda de tensão, a qual passará a ser um pouco infe­
rior à tensão norm al do 1 lógico. A m bas as linhas d a ta e d a ta ' são conectadas a um circuito
especial, cham ado de amplificador sensor de tensão. Esse circuito d etecta se a tensão em
d a ta é ligeiram ente m aior que a de d a t a ', significando que um 1 lógico está arm azenado, ou
se a tensão em d a t a 1 é ligeiram ente m enor que a de d a ta , significando que um 0 lógico está
arm azenado. N ovam ente, os detalhes de eletrônica estão além do escopo desta discussão.
Observe que o bloco de arm azenam ento de bit da Fig. 5.57 utiliza seis transistores - dois em
cada um dos inversores e dois fora. Seis transis­
tores é m enos do que o necessário em um Hip-
Hop D. E ntretanto, há um custo: deve-se usar
um circuito especial para ler o bit arm azenado
no bloco, ao passo que, em um flip-flop D, os
valores lógicos usuais são produzidos direta­
m ente na sua saída. Esse circuito especial au­
menta o tempo de acesso aos bits arm azenados.
U m a RAM baseada em um bloco de arm a­
zenam ento de bit de seis transistores, ou em
algum sem elhante, é co n h ecid a com o R AM
estática , ou SRAM . E nquanto houver energia Figura 5.57 Leitura de uma SRAM.
280 Sistemas Digitais

alim entando os transistores, um a R A M estática m anterá o bit arm azenado. A não ser, natural­
m ente, que o bloco esteja sendo escrito, o b it arm azenado não muda - é estático (invariável).

RAM dinâm ica


Um bloco alternativo, m uito usado no arm a­
d« ta
zenam ento de bits em R A M , tem apenas um
único transistor por bloco. Esse bloco utiliza célula
um capacitor (de valor relativam ente elevado)
na saída do transistor, com o m ostrado na Fig. habilitação
de palavra
'
J
dx
5.58(a). h
à a p a c ito r
A escrita poderá ocorrer se e n a b le for 1; ' e m d e s c a rg a
o sinal d a ta = l irá carregar a placa superior do f le n ta
capacitor com 1, ao passo que d ata= 0 carrega-
a com 0. Q uando e n a b le retorna a 0, o 1 na (a)

placa superior com eça a ser descarregado atra­


data-
vés do capacitor até a placa inferior e d aí até a
terra. (Por quê? Porque é assim que um cap a­ enable-
citor funciona.) N o entanto, intencionalm ente,
d e s c a rre g a
o cap acito r é projetado para ter um valor re­ d-
(b)
lativam ente elevado, de m odo que a descarga
leva um tem po longo. D urante esse tem po, o Figura 5.58 Célula cie uma SRAM.
bit d perm anece efetivam ente arm azenado no
capacitor. A Fig. 5.58(b) m ostra um diagram a de tem po, que ilustra a carga e descarga do
capacitor.
A leitura pode ser realizada fazendo prim eiro d a ta ter um a tensão interm ediária entre 0 e 1
e, em seguida, fazendo e n a b le ser 1. O valor arm azenado no capacitor irá m odificar a tensão
presente na linha de dados. E ssa tensão alterada pode ser detectada por circuitos especiais,
conectados à linha de dados, que am plificam o valor detectado, tornando-o 1 ou 0 lógico.
A contece que, quando se realiza a leitura da carga arm azenada, o capacitor descarrega-se.
A ssim , depois de ler o bit, a RAM deve im ediatam ente escrevê-lo de volta no bloco de arm a­
zenam ento. A RAM deve conter um controlador de m em ória para autom aticam ente fazer essa
escrita.
C om o um bit arm azenado no cap acito r d escarrcga-sc g radualm ente para
a terra, a R A M deve dar um refresh* em c ad a bloco de arm azenam ento de
Os chips de DRAM
apareceram primeira- bit antes que os bits sejam com pletam ente descarregados c conseqüentcm ente
mente no início da dé­ perdidos. Para dar refresh em um bloco de arm azenam ento de bit, a RAM deve
cada de 1970 e podiam ler o bloco e então escrever o bit lido de volta no bloco. Isso deve ser repetido a
memorizar apenas uns cada poucos m icrossegundos. A RAM deve co n ter um controlador de m em ória
poucos milhares de interno para autom aticam ente d ar refresh.
bits. As DRAMs moder­ N ote que, no m om ento em que q u erem o s ler um a R A M . ela pode estar
nas podem armazenar ocupada dando refresh. A lém disso, autom aticam ente, cada leitura deve ser
muitos bilhões de bits. seguida de um a escrita. A ssim , um a RAM baseada na tecnologia de transistor
m ais capacitor pode necessitar de m ais tem po para ser acessada.
C om o o bit arm azenado altera-se (descarrega-se), m esm o quando se está fornecendo
energia e não se está escrevendo no bloco de arm azenam ento de bit, um a RAM que se baseia
em blocos de arm azenam ento, com transistor e capacitor, é conhecida com o RAM dinâmica ,
ou DRAM (Dynamic RAM).
C om parada com um a SR A M , um a D RA M é ainda m ais com pacta, requerendo apenas um
transistor por bloco de arm azenam ento de bit, em vez de seis transistores. O custo é que um a

* N. de T: Refrescar, usado com o sentido de “refrescara memória”.As expressões “dar refreslr e “fazer refrcslr sao bastante
usadas e serão adotadas aqui.
Projeto em Nível de Transferência entre Registradores (RTL) 281

D RA M necessita de refresh, o que em últim a análise torna m ais dem orado o tem po de acesso.
Um outro custo, não m encionado antes, e que a construção do cap acito r de valor relativa­
m ente elevado de um a D RA M requer um processo especial de fabricação de clüp. A ssim , a
com binação de um a D RA M com a lógica habitual pode ser dispendiosa. D urante a década de
1990, mal se ouvia falar dessa com binação de DRAM e lógica em um m esm o chip. E ntre­
tanto, os avanços tecnológicos perm itiram que D R A M s e circuitos lógicos aparecessem no
m esm o chip em m ais e m ais casos.
Para arm azenar o mesmo núm ero de bits, a Fig.
5.59 m ostra graficam ente as vantagens da co m p aci­ Memória MxN
dade das SR A M s sobre os bancos de registradores e implementada como:

das D R A M s sobre as SRA M s. banco de


registradores

Usando uma RAM


A Fig. 5.60 m ostra diagram as de tem po que descre­
vem com o se deve escrever e ler na R A M da Fig.
DRAM
5.52. O d iag ram a d e tem po da Fig. 5 .6 0 m ostra
com o escrever um 9 c um 13 nas posições 500 e 999
durante as bordas de relógio l e 2, respectivam ente.
A seguir, o próxim o ciclo m ostra com o ler a posi­
ção 9 da R A M , fazendo addr= 9, data=Z e rw=0 (o Figura 5.59 Ilustração dos benefícios
que significa um a leitura). L ogo após rw tornar-se da com pacidade de SRAMs e DRAMs
0, d a ta torna-se 500 (o valor que previam ente haví­ (fora de escala).
am os arm azenado na posição 9). O bserve que p ri­
m eiro tivem os de d esab ilitar a nossa escrita de d a ta (fazendo-o ser Z), de m odo que não
houvesse interferência com os dados que estão sendo lidos da RAM . N ote tam bém que essa
operação de leitura da RAM é assíncrona.

clk tl fl 1
«

*
i
addr
X 9J k 13
data X 500 X 999
x^x,/ 500
rw J l s ig n ific a e s c re v e r k"
en _J
o r a R A M 19] a g o r a R A M Í1 3 ]
*

e ig u a l a 5 0 0 é ig u a l a 9 9 9
(a} (b)
Figura 5.60 Leitura e escrita em uma RAM: (a) diagram as de tempo, (b) tem pos de setup, hold
e acesso.

O atraso entre o instante em que colocam os a linha rw em m odo de leitura e o m om ento


em que a saída d a ta torna-se estável é conhecido com o tempo de acesso ou tempo de leitura
da RAM .
A gora darem os um exem plo do uso de um a R A M em um projeto RTL.

► EXEMPLO 5.12 Gravador digital de áudio usando uma RAM


Vamos projetar um sistema que pode gravar sons e depois reproduzi-los. Esse tipo de gravador é
encontrado em diversos brinquedos, em secretárias eletrônicas telefônicas, no anúncio de mensa-
282 Sistemas Digitais

gens pré-gravadas de celulares e em numerosos outros dispositivos. Precisaremos de um conver­


sor analógico-digital para digitalizar o som, uma RAM para arm azenar o som digitalizado, um
conversor digital-analógico para dar saída ao som digitalizado e um processador para controlar os
conversores e a RAM. A Fie. 5 .6 1 mostra um diagrama de blocos do sistema.

microfone

alto-falante

Figura 5.61 Utilização de uma RAM em um sistema digital de gravação de som.

Para arm azenar sons digitalizados, o bloco processa­


R e g is t r a d o r lo c a l : a {12 bits)
dor pode implementar o segmento da máquina de estados
de alto nível que está mostrado na Fig. 5.62. Primeiro, no
estado 5, a máquina inicializa seu contador de endereço
interno a com 0. A seguir, no estado 7. a máquina carrega ad_ld=1
um valor no conversor analógico-digital, para que uma ad_buf=1
nova amostra analógica de som seja digitalizada, e coloca Ra=a
o buffer de ires estados no modo adequado para que esse Rrw=1
Ren=1
valor digitalizado seja passado às linhas de dados d ata da
RAM. Também, nesse estado, o valor do contador a torna-
se o endereço da RAM e as linhas de controle habilitam a
escrita. Em seguida, a máquina faz uma transição para o
estado (/, cujas transições com param o valor de a com Figura 5.62 M áquina de estados
4095. Esse estado também increm enta a. (Lem bre-se de para o arm azenam ento de sons di­
que as transições realizadas a partir de U irão usar o valor gitalizados em uma RAM.
anterior de a, não o incrementado. Assim, nas transições, o
valor é comparado com 4095, não 4096.) A máquina re­ R e g is t r a d o r lo c a l: a {12 bits)
torna ao estado T e, consequentem ente, continua a escre­
ver amostras em endereços consecutivos da memória en­
quanto essa não estiver preenchida (a < 4095). Observe
que a com paração é feita com 4095, não 4096. É assim ad_buf=0
porque a ação do estado X, a = a + 1, não ocorre antes da Ra=a
Rrw=0
próxima borda de relógio. Desse modo, a comparação a <
Ren=1
4095, feita na transição de X para o próximo estado, usa o
valor anterior de a, não o incrementado. (Veja a discussão
na Seção 5.3 sobre erros comuns.)
Para reproduzir os sons digitalizados que foram ar­
m azenados, o bloco processador pode im plem entar o Figura 5.63 M áquina de estados
segm ento de m áquina de estados de alto nível, m ostrado para a reprodução de sons digitali­
na Fig. 5.63. Depois de inicializar o contador a no estado
zados a partir de uma RAM.
V, a m áquina entra no estado W. Esse estado desabilita
o buffer de três estados, evitando interferências com os dados de saída da RAM , que surgem
durante as leituras da RAM . Também, nesse estado, são determ inadas as linhas de endereço
Projeto em Nível de Transferência entre Registradores (RTL) 283

da RAM e a leitura é habilitada pelas linhas de controle. A ssim , os dados lidos irão aparecer
nas linhas d a ta . O próxim o estado X carrega um valor no conversor digital-analógico, o qual
converterá o dado recém lido da RAM em um sinal analógico. Esse estado também increm enta
o contador a. A m áquina retom ará ao estado W para continuar a leitura até que toda a memória
tenha sido lida. ◄

Memória apenas de leitura (ROM)


U m a m em ória apenas de leitura (RO M , de Read Only Memory) é um a m em ória que pode ser
lida, m as não pode ser escrita. Por ser apenas de leitura, o m ecanism o de arm azenam ento de
bit de um a ROM pode apresentar diversas vantagens em relação a um a R A M , entre elas:

• Compacidade - Em um a ROM , o volum e ocupado pelo arm azenam ento de bit pode ser
ainda m enor do que o de um a RAM .

• Não-volatilidade - Em um a ROM . o arm azenam ento de bit preserva os conteúdos m esm o


após o desligam ento do fornecim ento de en erg ia-q u an d o volta a ser ligado, os conteúdos
da ROM podem ser lidos novam ente. D iferentem ente, um a RAM perde os seus conteúdos
quando se desliga a energia. U m a m em ória assim , que perde os seus conteúdos quando a
energia é cortada, é conhecida com o volátil, ao passo que um a m em ória capaz de conser­
var os seus conteúdos sem estar enenzizada é conhecida com o não-volátil.

• Velocidade - Pode ser m ais rápido ler um a ROM do que um a R A M , cspecialm ente do que
um a DRAM .

• Baixo consumo - D iferentem ente de um a R A M , uma ROM não consom e en erg ia para
m anter os seus conteúdos. A ssim , um a ROM consom e m enos energia do que um a RAM .

Portanto, se os dados arm azenados em um a m em ória não forem alterados, pode-se esco ­
lher um a ROM para arm azenar os dados e obter as vantagens acim a.
A Fig. 5.64 m ostra o sím bolo para diagram a de blo­
cos de um a ROM 1024x32. A estrutura lógica interna de 32
um a ROM MxN está m ostrada na Fig. 5.65. O bserve que data
10
a estrutura interna é m uito sem elhante à da RAM m os­ addr R0M
1024 x 32
trada na Fig. 5.53. O s blocos de arm azenam ento de bit
en
form am palavras que são habilitadas pelas saídas de um
decodificador, sendo o endereço a entrada do decodifica-
dor. N o entanto, com o um a ROM pode apenas ser lida,
Figura 5.64 Sím bolo para d ia­
não podendo ser escrita, não há necessidade de um a en­
gram a dc blocos de uma ROM
trada de controle rw para especificar um a leitura ou uma
1024x32.
escrita, nem de linhas w data para dar en trad a a dados
que seriam escritos. Tam bém , com o não há escritas síncronas em um a ROM , ela não tem en ­
trada de relógio. De fato, um a ROM não é apenas um com ponente assíncrono. N a realidade,
ela pode ser pensada com o sendo um com ponente combinacional (quando estam os apenas
lendo a ROM ; posteriorm ente, verem os algum as variações).
N este ponto, alguns leitores podem estar sc perguntando com o escreverem os os conteúdos
iniciais em um a ROM , que só poderá ser lida depois. Afinal de contas, se não puderm os e s­
crever de jeito nenhum os conteúdos de um a ROM , então ela não terá nenhum a utilidade para
nós. O bviam ente, deve haver algum a m aneira de se escrever os co n teú d o s em um a ROM .
N ão obstante, a escrita dos conteúdos iniciais de um a ROM é conhecida na term inologia de
ROM s com o sendo a programação da ROM. O s tipos de ROM s diferenciam -se pelas form as
de im plem entação dos blocos de arm azenam ento de bit, o que por sua vez leva a diferenças
nos m étodos usados para program á-las. A gora, descreverem os diversas im plem entações po­
pulares de blocos de arm azenam ento de bit de ROM s.
284 Sistemas Digitais

Seja A = 1092 M

addrO
addrl
•o
■D
TO
addr(A-1)

en

data(N-1) data(N-2) dataO

Figura 5.65 Estrutura lógica interna de uma ROM.

Tipos de ROM

ROM program ável por m áscara


A F ig. 5 .6 6 ilu stra a c é lu la de a rm a z e n a ­
m en to d e b it de um a R O M p ro g ram áv e l 1 linha de dados 0 linha de dados
p o r m áscara. U m a ROM programável por
célula célula
máscara tem o s se u s c o n te ú d o s p ro g ra ­
m ad o s q u a n d o o chip é fab ricad o , conec­ habilitação
tando l s d ire ta m e n te às célu la s q u e devem
a rm a z e n a r um 1, e Os às c é lu la s q u e d e ­
de palavra
T T
vem a rm a z e n a r um 0. L e m b re -se d e q u e
um “ 1” é na re a lid a d e u m a te n sã o m aio r
d o q ue zero, v in d a d e um d o s d iv erso s p i­ Figura 5.66 Células de uma ROM program á­
nos de e n tra d a de a lim e n ta ç ã o e lé tric a de vel por máscara: célula da esquerda programada
um chip - assim , lig a r um 1 sig n ifica fazer com 1. célula da direita programada com 0.
d irelam en te um a co n ex ão d esd e o p in o de
e n tra d a d e a lim e n ta ç ã o a té a c é lu la . Do
m esm o m odo, lig a r um 0 a um a c é lu la sig ­
n ifica c o n e c ta r o pino d e terra d ire ta m e n te
à c é lu la. E ste ja c ie n te d e q ue a F ig. 5.66
a p re se n ta a v isão lógica de um a c é lu la de R O M q u e é p ro g ram áv el com m áscara - o p ro ­
je to físico real d e ssas célu las pode se r um p o u co d ife re n te - p o r ex em p lo , u m a fo rm a c o ­
m um de p ro jeto re ú n e d iv ersas célu la s v erticais, e n file ira n d o -a s p ara fo rm ar um a g ran d e
p o rta ló g ica se m e lh a n te a u m a N O R . D eix a m o s os d e ta lh e s para livros m ais av an çad o s
so b re o p ro jeto C M O S digital.
A s conexões são colocadas nos chips durante a fabricação. U sa-sc um a com binação de
produtos quím icos sensíveis à luz e um feixe lum inoso que passa através de lentes e “m ásca­
ras” , as quais bloqueiam a luz im pedindo-a de alcançar as regiões onde estão depositados os
produtos quím icos. (Veja o C apítulo 7 para m ais detalhes.) E ssa é a razão do term o “ m áscara”
em ROM program ada com m áscara.
A ROM program ável por m áscara é a m ais com p acta dc todos os tipos de ROM s, mas
os conteúdos da ROM já devem ser conhecidos durante a fabricação do chip. Esse tipo de
ROM é m ais adequado a produtos bem consolidados e fabricados em grandes quantidades,
nos quais a com pacidade ou um custo m uito baixo são críticos, e nos quais a program ação da
ROM nunca será feita depois da fabricação do chip da ROM.
Projeto em Nível de Transferência entre Registradores (RTL) 285

ROM programável baseada em fusível - ROM programável uma vez (0TP-R0M)


A Fig. 5.67 ilustra um a célu la de arm aze­
1 linha de d<3dos 1 linha de dados
nam ento de bit de um a ROM b asead a em
fusível. U m a ROM baseada em fusível usa célula célula
um fusível em cada célula. Um fusível é um
com ponente elétrico que inicialm ente pode habilitação
conduzir desde um a extrem idade até a outra, de palavra
S f T/
com o um fio, m as cuja ligação en tre as ex­ / /
trem idades pode ser destruída (“queim ada") f u s ív e l f u s ív e l q u e im a d o

passando-se um a corrente acim a do norm al


através do fusível. Um fusível queim ado não Figura 5.67 Células de uma ROM baseada em
conduz e é, pelo contrário, um circuito aberto fusível: célula da esquerda programada com 1,
(ausência de conexão). N a figura, a célula da célula da direita, com 0.
esquerda tem o seu fusível intacto, de m odo
que, quando a célula está habilitada, aparece um 1 na linha de dados. A célula da direita tem o
seu fusível queim ado, de m odo que, quando a célula está habilitada, nada aparece na linha de
dados (um a eletrônica especial será necessária para converter esse nada em um 0 lógico).
Um a ROM baseada em fusível é fabricada com todos os fusíveis intactos, de m odo que os
conteúdos inicialm ente arm azenados são todos ls. U m usuário dessa ROM pode program ar
os conteúdos, ligando a ROM a um dispositivo especial, conhecido com o um programador ,
que fornece correntes acim a do norm al apenas para os fusíveis das células que devem arm a­
zenar Os. C om o um usuário pode program ar os conteúdos dessa ROM , ela é conhecida com o
ROM program ável, ou PROM (Programmable Read Only Memory).
Um fusível queim ado não pode voltar à sua co n d ição inicial de condutor. A ssim , uma
ROM baseada em fusível pode ser program ada apenas um a vez. A s ROM s basedas em fusível
são conhecidas tam bém com o ROM program ável um a vez (One Time Programmable ROM),
ou O TP-RO M .

PROM apagável-EPROM
A Fig. 5.68 dá um a visão lógica dc um a célula
de PRO M apagável. U m a célu la de PROM linha de dados linha de dados
«I
apagável (Erasable PROM), ou EPROM , usa célula célula
J i
um tipo especial de transistor, o qual contém
o que é conhecido com o porta flutuante, em II
cada célula. O s detalhes de um transistor de
porta flutuante estão além do esco p o desta
seção, m as resu m id am en te - um tran sisto r
habilitação
de palavra
£ 7
e lé tro n s a p ris io n a d o s
de porta flutuante tem um a porta especial na
qual os elétro n s podem se r “ap risio n ad o s” . Figura 5.68 Células de uma EPROM: célula
Um transistor, que tem elétrons aprisionados da esquerda program ada com 1, célula da di­
em sua porta, perm anecerá no estado de não reita, com 0.
condução e, assim , está program ado para ar­
m azenar um 0. Em caso contrário, considera-se que a célula está arm azenando um 1.
Inicialm ente, um a célula de EPRO M não tem elétrons aprisionados em nenhum transistor
de porta flutuante, de m odo q ue os conteúdos inicialm ente arm azenados são todos ls . Um
dispositivo program ador aplica um a tensão acim a do norm al aos transistores daquelas células
que devem arm azenar Os. E ssa tensão elevada faz com que os elétrons abram um túnel através
de um pequeno m aterial isolante até a região da porta flutuante. Q uando a tensão é rem ovida,
os elétrons não têm energia suficiente para criar um túnel de volta, perm anecendo assim ap ri­
sionados na célula direita da Fig. 5.68.
Os elétrons podem ser libertados expondo-os a uma luz ultravioleta (UV) de certo com pri­
mento de onda. A luz UV energiza os elétrons perm itindo que eles abram um túnel de volta, atra-
286 Sistemas Digitais

vés do pequeno m aterial isolante, escapando assim da região da


porta flutuante. Portanto, quando um chip de EPROM é exposto
à luz UV, todos os Os arm azenados são “apagados” , fazendo com
que o chip seja restaurado, voltando a ter ls em todos os seus
conteúdos. Após, pode-se program ar a EPROM novamente. Daí
vem o term o PROM “apagável” . Tipicam ente, tal cliip pode ser
apagado e reprogram ado cerca de dez mil ou mais vezes, e pode
reter seus conteúdos sem consum ir energia elétrica por dez ou
mais anos. Com o usual m ente os chips estão dentro de encapsu­ Figura 5.69 “Jan ela” do
lamentos de cor preta que não deixam passar a luz, então são ne­
e n c a p su la m e n to de um
cessárias janelas no encapsulam ento dos chips com EPROM para m icroprocessador que usa
que a luz UV possa entrar, com o m ostrado na Fig. 5.69. uma EPROM para arm aze­
nar programas.
EEPROM e memória flash
U m a PROM eletricamente apagáveL ou EEPROM (Electri-
cally Erasable PROM). utiliza um m étodo de program ação de
E EPR O M baseada em tensões elevadas para ap risio n ar elétrons em um transistor de porta
flutuante. N o entanto, d iferen tem en te de um a EPR O M que req u er luz UV para liberar os
elétrons e assim apagar a PROM , um a EEPRO M utiliza um a outra tensão elevada para liberá-
los. A ssim , em um a EEPR O M , não é necessário colocar o chip debaixo de luz UV.
Com o as EEPROM s usam tensões no apagam ento, essas tensões podem ser aplicadas ape­
nas a células específicas. Assim , ao passo que as EPROM s precisam ser apagadas por com pleto,
em uma EEPRO M , pode-se apagar uma palavra de cada vez. Desse modo, podem os apagar e
reprogram ar certas palavras de uma EEPROM sem alterar os conteúdos das dem ais palavras.
A lgum as E EPR O M s requerem um dispositivo program ador especial para realizar a pro­
gram ação. No entanto, a m aioria das EEPR O M s m odernas não requer a aplicação de tensões
especiais aos pinos, e tam bém contém controladores de m em ória internos que conduzem o
processo de program ação. A ssim , podem os reprogram ar os conteúdos de um a EEPRO M (ou
parte de seus conteúdos) sem nunca retirar o chip do sistem a que utiliza a EEPRO M - essa
EEPR O M é conhecida com o sendo in system programmable (ISP ), ou seja, program ável
dentro do sistem a. Portanto, a m aioria desses dispositivos pode ser lida e escrita de m odo
m uito sem elhante ao de um a RAM .
A Fig. 5.70 m ostra o sím bolo para diagram a de blocos
32
de um a E E PR O M . O bserve q ue as linhas de dad o s são data
bidirecionais, exatam ente com o foi o caso de um a RAM . 10
A E EPR O M tem um a entrada de controle wri t e - o sinal ---- 5 ^ * addr
w rite = 0 indica um a operação de leitu ra (quando e n = l), en EEPROM
ao passo que w ri te = l indica que os d ad o s presentes nas 1024x32
---------► wr i te
linhas de dados devem ser program ados na palavra cujo
endereço é especificado pelas linhas de endereço. N o e n ­ _____ busy

tanto, a program ação de um a palavra em um a E E PR O M >


exige tem po, talvez vários, d ú zias, cen ten as ou m esm o
m ilh ares d e ciclo s de relógio. P o rtan to , as E E P R O M s Figura 5.70 Sím bolo para dia­
podem ter um a saída de controle busy de ocupado, para gram a de blocos de uma EE­
indicar q ue a program ação ainda não está com pleta. E n ­ PROM 1024x32.
quanto o dispositivo estiv er ocu p ad o , o usuário da E E ­
PRO M não deve tentar escrever em um a palav ra diferente. Felizm ente, na m aioria das E E ­
PR O M s, os dados a serem program ados e o en d ereço são carregados em registradores inter­
nos, liberando o circuito que está escrevendo na E EPR O M de m an ter esses valores durante
a program ação.
As EEPRO M s m odernas podem ser program adas dezenas de m ilhares a m ilhões de vezes
ou m ais, e podem preservar os seus conteúdos por até cem anos ou m ais sem energia elétrica.
Projeto em Nível de Transferência entre Registradores (RTL) 287

A o passo q u e o ap ag am en to de um a palavra por vez é satisfató rio em alg u m as ap lica­


çõ es q u e utilizam E E P R O M , o u tras ap lic a ç õ es p recisam q u e g ran d es b locos d e m em ó ria
sejam ap ag ad o s rap id am en te - por exem plo, um a ap licação de câm era dig ital p o d e p re c i­
sa r a p ag ar o b lo co d e m em ó ria co rresp o n d en te a um a foto inteira. U m a memória fla sh é
um tipo de E E PR O M na qual todas as palavras d e um g ran d e b lo co de m em ó ria podem ser
apag ad as m uito rapidam ente, possivelm ente ao m esm o tem po, ao invés d e um a palavra por
vez. U m a m em ória flash pode ser ap ag ad a co m p letam en te fazendo-se um a en trad a de co n ­
tro le e r a s e (ap ag ar) ser 1. M u itas m em ó rias do tip o flash p erm item tam b ém q u e ap en as
um a região e sp ecífica, co n h ecid a co m o b lo co ou setor, seja ap ag ad a d e ix a n d o in to cad as
as o u tras regiões.

Usando uma ROM


D arem os agora exem plos de uso de ROM em projetos RTL.

Exemplo 5.13 Boneca falante que usa uma ROM


Queremos projetar uma boneca que dirá a mensagem “Bom te ver” sempre que o seu braço direito
for movido. Um diagrama de blocos do sistema está mostrado na Fig. 5 .7 1. Um sensor de vibração
no braço direito da boneca tem uma saída v que se torna 1 quando uma vibração é detectada. Um
processador detecta a vibração, e então deve enviar uma versão digitalizada da mensagem “Bom te
ver” para um conversor digital-analógico conectado a um alto-falante. A mensagem “Bom te ver”
será pré-gravada com a voz de uma atriz profissional. Como a mensagem não será alterada durante
toda a existência da boneca, poderemos gravá-la em uma ROM.

a lto - f a la n t e

se n so r de
v ib r a ç ã o

Figura 5.71 U tilização de


uma ROM em um sistema de
boneca falante.

A Fig. 5.72 mostra o segmento de uma máquina de R e g is t r a d o r lo c a l: a (12 bits)


estados de alto nível que reproduz a mensagem depois
a<4095
da detecção de uma vibração. A máquina começa no es­
tado 5, inicializando o contador de endereços a da ROM
com 0 e esperando que uma vibração seja detectada.
Quando uma vibração é detectada, a máquina avança
para o estado 7. o qual lê a posição corrente da ROM. A
seguir, a máquina passa para o estado U, o qual carrega
a=4095
o conversor digital-analógico com o valor lido da ROM,
incrementa a e volta ao estado 7 enquanto a não atinge
4095 (lem bre-se de que a condição de transição de U
para o próximo estado testa o valor de a antes desse ser Figura 5.72 Máquina de estados para
increm entado e, portanto, a com paração é feita com 1er a ROM.
4095, não com 4096).
Com o a mensagem dessa boneca nunca será alterada, poderemos optar por usar uma ROM
programável por máscara, ou então uma OTP-ROM. Poderemos usar uma OTP-ROM durante o
desenvolvimento do protótipo ou durante as vendas iniciais da boneca para então, durante a produ­
ção de grandes volumes, fabricar versões baseadas em ROM programável por máscara. ◄
288 Sistemas Digitais

► EXEMPLO 5.14 Secretária eletrônica digital para telefone usando uma memória flash
Devemos projetar a parte que reproduz a mensagem pré-gravada de uma secretária eletrônica de
telefone (por exemplo, “Não estam os em casa agora, deixe uma mensagem“ .) Essa mensagem
deve scr gravada digitalm ente, deve ser gravável um número qualquer de vezes pelo proprietá­
rio da máquina, e deve perm anecer gravada mesmo quando a alimentação elétrica da secretária
eletrônica é desligada. A gravação começa imediatamente após o usuário pressionar um botão de
gravação, que coloca um sinal rec (gravar) em 1. Como deve ser possível gravar mensagens, não
poderemos usar uma ROM programável por máscara ou uma OTP-ROM. Como o desligamento
da energia elétrica não deve causar a perda da mensagem gravada, não poderemos usar uma RAM.
Assim, deveremos escolher uma EEPROM ou uma memória flash. Optaremos por uma memória
flash, como mostrado na Fig. 5.73. Observe que a memória flash tem a mesma interface que uma
RAM, exceto que a memória flash tem uma entrada extra de nome erase (apagar). Nessa memória
flash em particular, o sinal erase apaga completamente os conteúdos dela. Enquanto a memória
flash está se apagando, ela mantém a saída busy (ocupado) em 1. Durante esse tempo, não pode­
remos escrever na memória flash.

microfone alto-falante

Figura 5.73 Utilização de memória flash em uma secretária eletrônica digital.

A Fie. 5.74 mostra o segmento de uma má-


W Sm »

R e g is t r a d o r lo c a l: a (13 bits)
quina de estados de alto nível que grava a mensa­
bu
gem. O segmento da máquina de estados começa
a<4096
quando o botão de gravar é apertado. O estado 5
ativa o apagamento da memória flash (er= l) e, em [ SJ ( T ) bu' ( U )----
seguida, o estado T espera que o apagamento es­ ' a=0 er=0 ad_ld=1
er=1 ad_buf=1
teja concluído (bu1). Esse apagamento deve ocor­
rec Ra=a
rer em apenas alguns poucos milissegundos, para ( V
Rrw=1
não perderm os nada da mensagem falada. A se­ Ren=1
guir, a máquina de estados faz uma transição para a=a+1 a=4096
o estado U, o qual copia uma amostra digitalizada
do conversor analógico-digital para a memória
flash , escrevendo na palavra de endereço corrente Figura 5.74 M áquina de estados para ar­
a. O estado U também incrementa a. O próximo m azenar som digitalizado em uma m em ó-
estado (V) verifica se a memória está completa ria flash.
com amostras, testando a<4096 e retornando ao
estado U até que a memória esteja preenchida.
Observe que, diferentemente dos Exemplos 5.12 e 5.13, essa máquina de estados incrementa a
antes de chegar ao estado que verifica se o último endereço foi alcançado (estado V). Desse modo,
as transições de V para os próximos estados usarão o valor 4096, e não 4095. M ostramos essa ver-
Projeto em Nível de Transferência entre Registradores (RTL) 289

são apenas por variedade. A versão do Exemplo 5.12 pode ser um pouco melhor porque requer que
a e o com parador tenham apenas 12 bits de largura (representando valores de 0 a 4095), em vez de
13 bits (representando valores de 0 a 4096).
Essa máquina de estados assume que as escritas na memória flash requerem um cielo de reló­
gio. Algumas memórias flash requerem mais tempo para escrever, mantendo ativa a saída busy até
que a escrita esteja terminada. Nesse caso de memória flash , precisaríamos acrescentar um estado
entre os estados U e V, semelhante ao estado T entre Sc U.
Para evitar a perda de amostras de som enquanto se espera, poderemos gravar primeiro todas
as amostras em uma RAM 4096x 16 e, em seguida, copiar todos os conteúdos da RAM para a me­
mória flash. ◄

Tornando confusa a distinção entre RAM e ROM


O bserve que a E EPR O M e a ROM flash tornam co n fu sa a distin ção entre R A M e ROM .
M uitos dispositivos de EEPR O M m odernos perm item ser escrito s ex atam en te com o um a
R A M , tendo quase a m esm a interface, com a única diferença de que o tem po necessário para
escrever em um a EEPROM é m aior do que em um a RAM . No entanto, a diferença entre esses
tem pos está dim inuindo a cada ano.
T ornando ainda m ais confusa essa distinção, há os dispositivos de m em ória R A M não-
volátil (NVRAM, de non-volatile RAM), que são dispositivos de m em ória RAM que preser­
vam os seus conteúdos m esm o sem alim entação elétrica. D iferentem ente da ROM , o tem po
de escrita em um a N V R A M é sem elhante ao de um a RAM com um - tipicam ente, um ciclo
de relógio. U m tipo de N V R A M contém sim plesm ente um a .SRAM e um a bateria interna.
Esta é capaz de fornecer energia à SR A M por dez ou m ais anos possivelm ente. Um outro tipo
de N V R A M contém am bas um a SR A M c um a EEPR O M - o controlador da N V R A M copia
autom aticam ente os conteúdos d a SR A M para a E E PR O M , norm alm ente no m om ento em
que a alim entação elétrica é rem ovida. A lém disso, um a am pla pesquisa e desenvolvim ento
de novas tecnologias de arm azenam ento de bits estão levando a N V R A M s não-voláteis, ainda
m ais próxim as da R A M , em term os de desem penho e densidade. U m a dessas tecnologias
é conhecida com o M A G R A M , sigla para R A M m agnética, a qual usa o m agnetism o para
arm azenar cargas, tendo tem pos de acesso sem elhantes aos da D R A M , sendo não-volátil e
dispensando a necessidade de refresh.
Portanto, os projetistas digitais têm disponível um a enorm e variedade de tipos de m em ó­
ria, os quais diferem em custo, desem penho, tam anho, não-volatilidade, facilidade de uso,
tem po de escrita, duração da retenção dos dados e outros fatores.

► 5.7 FILAS (FIFOS)


A lg u m as vezes as n o ssas n e c e ssid a d e s de a r­
f im micto
m az e n a m en to req u erem e sp e c ific a m e n tc q u e
leiam o s os iten s na m esm a ordem em q u e fo­
ram escritos, sendo q ue a leitu ra rem o v e o item
d a lista. P o r e x em p lo , um re sta u ra n te m o v i­
m en tad o pode le r um a lista de e sp e ra de c lie n ­
tes - o re c e p c io n ista e sc re v e os n o m es d o s e s c re v e ite n s lê (e r e m o v e )
clien tes no fim da lista, m as q u an d o um a m esa n o f im d a fila ite n s d o in íc io
d a fila
fica d is p o n ív e l, e le lê o n o m e d o p ró x im o
clien te no início da lista, rem ovendo esse nom e Figura 5.75 Visão conceituai dc uma fila.
d a lista. A ssim , o p rim e iro c lie n te e sc rito na
lista é o p rim eiro c lien te a se r lido dela. U m a fila é um a lista q u e é escrita no fim , m as é
lida no seu início, sen d o q ue um a leitu ra tam b ém rem ove o item lid o da lista, c o m o m o s­
trado na Fig. 5.75. O term o com um para fila no in g lês d o s E stad o s U nidos é “/m e” (linha)
- p o r ex em p lo , você tlc a em “ lin h a ” na m e rc ea ria , com as p e sso a s e n tra n d o no fim e
290 Sistemas Digitais

sen d o a te n d id a s no in ício . N o in g lês b ritâ n ico , a p alav ra queue (fila) é


u sad a d iretam en te no lin g u a ja r d o d ia -a -d ia (c o n fu n d in d o alg u m as vezes
os am erican o s q ue visitam o u tro s p aíses de fala ing lesa). C o m o o prim eiro
item a se r e sc rito na lista será o p rim e iro item a se r lido e re m o v id o da
lista, um a fila é c o n h ecid a co m o se n d o d o tip o o primeiro que entra é o
primeiro que sai (F IF O , de first-in first-out). C o m o tal, alg u m as vezes as
filas são c h a m a d a s d e fila s F IF O , e m b o ra e sse te rm o seja re d u n d a n te
p o rq u e em um a fila, p o r d efin ição , o p rim eiro q u e en tra é o p rim eiro q u e
sai. O term o F IF O em si é fre q ü e n te m e n te u sa d o p ara se re fe rir a um a
fila. A lg u m as vezes, usa-se tam bém o term o buffer. U m a e sc rita em um a
fila é referid a alg u m as vezes c o m o push ou enqueue , e um a leitura é c h a ­
m ada alg u m as v ezes de pop ou dequeue*
Faça fila a partir deste
ponto P o d em o s im p le m e n ta r
u m a fila u san d o um a m e ­
m ó ria - d ep en d en d o d o tam an h o de fila n e­
c e ssá rio , um b a n c o d e re g istra d o re s ou
um a R A M . Q u an d o se usa um a m em ó ria,
o in ício e o fim irão se d eslo car o cu p an d o
d ife re n te s p o siçõ es d e m em ó ria â m ed id a
q ue a fila é e sc rita e lida, c o m o m ostrado
na Fig. 5.76. A figura m o stra um a fila in i­
cialm en te vazia de oito palavras, com a m ­
bos o início e o fim p o sicio n ad o s no e n d e ­
reço de m em ó ria 0. A p rim eira ação sobre
a fila é e screv er o item A , q u e será c o lo ­
cado no fim (en d ereço 0), e o en d ereço de
fim será in crem en tad o para 1. A próxim a
ação é escrever o item fí , q ue será colocado
no fim (e n d e re ç o 1), e o fim é in crem en ­
tado para 2. A próxim a ação é um a leitura,
q ue virá d o início (endereço 0), fornecendo
o item A. A seguir, o e n d e re ç o d e in ício é
in crem en tad o para 1.
A s le itu ra s e e s c rita s s u b s e q ü e n te s Figura 5.76 A escrita e a leitura em uma fila,
c o n tin u a rã o d e m o d o se m e lh a n te , ex ceto im plem entada em uma m em ória, fazem com
q ue q u a n d o o fim ou o in ício c h eg arem a que o início e o fim movam-se.
o
7, seu p ró x im o v alo r d e v e rá se r 0, e não
8. E m o u tras p alav ras, p o d e -se p e n sa r na
m em ó ria c o m o se n d o um c írc u lo , co m o m o stra d o na
Fig. 5.77.
Há duas condições em um a fila que são de interesse:

• Vazia: não há itens na fila. E ssa cond ição pode ser


detectada quando início = fim , com o se pode ver na
fila que está no topo da Fig. 5.76.

• Cheia : não há m ais espaço para o acréscim o de itens à


fila, significando que há N itens em um a fila de tam a­
nho N. Isso ocorre quando o fim dá a volta no círculo
e alcança o início, significando que início = fim. Figura 5.77 Na im plem entação
de uma fila em uma m em ória,
trata-se essa memória como sendo
* N. de T: Também são usadas as expressões inserir e remover. um círculo.
Projeto em Nível de Transferência entre Registradores (RTL) 291

In felizm en te, note que as condições para d etectar se a fila está vazia ou cheia são as
m esm as - o endereço do início da fila 6 igual ao do fim. U m a m aneira de se distin g u ir um a
condição da outra é sabendo se, antes dos endereços de início e fim terem se tornado iguais,
havia ocorrido um a leitura ou um a escrita.
Em m uitos usos de um a fila, o circuito que escreve na fila opera independentem ente do
circuito que faz as leituras. A ssim , um a fila im plem entada com m em ória pode usar um a m e­
m ória de porta dupla com portas separadas de leitura e escrita.
P odem os im p lem en tar um a fila
de oito palavras usando um banco
de registradores, de oito palavras e
p orta dupla, e com ponentes ad icio ­
nais, com o na Fig. 5.78. Um conta­
dor crescente de três bits contém o
endereço do início da fila, ao passo
q ue o u tro c o n ta d o r c re sc e n te de
três bits contém o endereço do fim.
Q uando se trata a m em ó ria com o
sendo um círcu lo , note que esses
contadores voltam naturalm ente de
7 para 0, ou de 0 para 7, com o dese­
jad o . U m co m parador de igualdade
d etecta se o valo r d o co n tad o r de
início é igual ao do contador de fim.
Um controlador escreve os dados de
escrita no banco de registradores, in­
crem enta o co n tad o r de fim de fila
durante um a escrita, lê os dados de
leitu ra do b an co de reg istrad o res Figura 5.78 Arquitetura de uma fila de oito palavras
e in crem en ta o co n tad o r de início de 16 bits.
d u ran te um a leitura, determ inando
quando a fila está cheia ou vazia com base na com paração de igualdade e se a operação an te­
rior foi um a escrita ou um a leitura. D eixam os de descrever com m ais detalhes o controlador
da fila, m as ele pode ser construído a partir de um a FSM .
Um usuário da fila nunca deve ler uma fila vazia nem escreverem uma fila cheia; dependendo
do projeto do controlador, tal ação poderia ser sim plesm ente ignorada ou poderia levar a fila a
um estado interno errôneo (por exemplo, os endereços de início e fim poderiam se cruzar).
A m aioria das filas apresenta um a ou m ais saídas adicionais de controle que indicam se a
fila está meio cheia ou 80% cheia.
A s filas são com uns cm sistem as digitais. A lguns exem plos são:

• Um teclado de com putador escreve em um a fila as teclas apertadas e solicita sim ultânea-

m ente que o com putador leia as teclas que foram escritas na fila. E possível que algum a
vez, você tenha digitado teclas m ais rapidam ente do que o seu co m putador era capaz dc
ler. N esse caso, as teclas adicionais foram ignoradas - e é possível que você tenha inclu­
sive ouvido bipes a cada vez que você apertava as teclas adicionais, indicando que a fila
estava cheia.

• Um a câm era de vídeo digital pode escrever em um a fila os quadros de vídeo capturados
recentem ente e. ao m esm o tem po, pode ler esses quadros da fila, com prim i-los e arm a­
zená-los cm um a fita ou outra m ídia.

U m a im pressora de com putador pode arm azenar tarefas de im pressão em um a fila, e n ­


quanto essas tarefas estão esperando pela im pressão.
292 Sistemas Digitais

• Um m odem arm azena os dados que estão chegando em um a fila e solicita que o com pu­
tador leia esses dados.

Um roteador de rede de com putador recebe pacotes de dados de um a porta de entrada e


escreve esses pacotes em um a fila. E nquanto isso, o roteador lê os pacotes da fila, analisa
a inform ação de endereço d o pacote e, em seguida, envia o p acote através d e um a das
diversas portas de saída.

► EXEMPLO 5.15 Usando uma fila


Mostre o estado interno de uma
tila de oito palavras, e os valores
dos dados que foram lidos, após F ila in ic ia lm e n t e
cada uma das seguintes sequên­ v a z ia
cias de escritas e leituras, assu­
mindo-se uma fila inicialm ente
vazia:
1. Escreva 9, 5, 8, 5, 7, 2 e 3 1. A p ó s e s c r e v e r
9, 5, 8, 5 , 1 2 , 3
2. Leia
3. Escreva 6
4 . Escreva 3
5. Escreva 4 2. A p ó s le r

6. Leia
A Fig. 5.79 mostra os esta­
dos internos da fila. Após a pri­
meira sequência de sete escritas
3. A p ó s e s c r e v e r 6
(passo I), vemos que o endereço
de fim de fila está apontando
para 7. A leitura (passo 2) é feita
no endereço 0 do início da fila,
fornecendo um dado de valor
4. A p ó s e s c r e v e r 3 cheia
9. O endereço de início é incre­
mentado para 1. Observe que,
embora a fila ainda esteja com
o valor 9 no endereço 0, esse 9
5. A p ó s e s c r e v e r 4 E R R O ! E s c r e v e r e m u m a f ila c h e ia
não é mais acessível durante o r e s u lta e m u m e s ta d o d e s c o n h e c id o
funcionam ento normal da fila,
estando portanto basicam ente Figura 5.79 Exemplo de escritas e leituras em uma fila.
perdido. A escrita de um 6 (passo
3) incrementa o endereço de fim
de fila, o qual ultrapassa 7 voltando a 0. A escrita de um 3 (passo 4) incrementa para 1 o endereço de
fim, o qual agora se torna igual ao endereço de início. Isso significa que a fila está cheia. Se uma lei­
tura ocorresse agora, o valor 5 seria lido. Entretanto, em lugar disso, ocorre a escrita de um 4 (passo
5) - essa escrita não deveria ter sido realizada, porque a fila estava cheia. Desse modo, essa escrita
coloca a 111a em um estado errôneo e não poderemos prever o comportamento de qualquer escrita ou
leitura seguinte. ◄

N aturalm entc, um a fila poderia vir acom panhada de algum procedim ento interno de to ­
lerância a erros, com o ignorar as escritas, se estivesse cheia, ou fornecer algum valor em
particular (com o 0), se fosse lida quando estivesse vazia.
Projeto em Nível de Transferência entre Registradores (RTL) 293

5.8 HIERARQUIA-UM CONCEITO-CHAVE DE PROJETO

Lidando com a complexidade


A o longo deste livro, tem os utilizado um poderoso conceito de projeto conhecido com o hie­
rarquia. D efine-se a hierarquia genericam ente com o sendo um a organização com um as pou­
cas “coisas” no topo e cada um a delas consistindo possivelm ente em diversas outras. Talvez
o tipo m ais conhecido de hierarquia seja um país. No topo está o país, que consiste em m uitos
estados ou províncias, cada um dos quais por sua vez consiste em m uitas cidades. U m a hie­
rarquia envolvendo um país, províncias e cidades, está m ostrada na Fig. 5.80. E ssa figura
m ostra os três níveis da hierarquia - país, províncias e cidades.
A Fig. 5.81 m ostra o m esm o país, m as
desta vez estão indicados apenas os dois ní­
veis superiores da hierarquia - países e pro­
víncias. Na verdade, a m aioria dos m apas
de um país m ostra apenas esses dois níveis
superiores da hierarquia (possivelm ente, in­
dicando as principais cidades de cada pro­
víncia ou estado, m as certam ente não todas
elas) - a indicação de todas as cidades lam ­
bem tornaria o m apa excessivam ente d eta­
lhado c confuso. Um m apa de um a provín­
cia ou estad o , en tretan to , poderia m o strar Figura 5.80 Exem plo de hierarquia com três
todas as cidades desse estado. A ssim , vem os níveis: um país constituído de províncias, cada
que a hierarquia desem penha um papel im ­ uma das quais é constituída de cidades.
p ortante na co m p reen são d o s p aíses (ou
pelo m enos dos seus m apas).
De modo sem elhante, a hierarquia desem ­
penha um papel im portante no projeto digital.
No C apítulo 2, introduzim os o com ponente
m ais fundam ental dos sistem as digitais - o
transistor. Nos C apítulos 2 e 3, introduzim os
diversos com ponentes básicos form ados a
partir de transistores, com o portas AND, por­
tas OR e portas NOT, e então alguns com po­ Figura 5.81 H ierarquia que mostra apenas os
nentes ligeiram ente m ais com plexos form a­ dois níveis superiores.
dos a partir de portas: multiplexadores, deco-
dificadores, flip-flops, etc. No Capítulo 4, com binam os esses com ponentes básicos para form ar
com ponentes de nível mais elevado: os com ponentes de bloco operacional, com o registradores,
som adores, ALUs, m ultiplicadores, etc. No C apítulo 5, introduzim os com ponentes que eram
constituídos de com ponentes de bloco operacional, incluindo controladores, blocos operacio­
nais, processadores (constituídos de bloco de controle e bloco operacional), m em órias e filas.
O uso de hierarquia capacita-nos a lidar com projetos complexos. Imagine tentar com preender
o projeto da Fig. 5.30 em nível de portas lógicas - aquele projeto consiste provavelmente em di­
versos milhares de portas lógicas. As pessoas não podem com preender de vez o com portam ento
de diversos m ilhares de coisas. No entanto, podem com preender o de algum as poucas dúzias.
Conseqüentem ente, quando o núm ero de coisas cresce acim a de poucas dúzias, nós agrupam os
essas coisas em uma nova coisa, para poder lidar com a com plexidade. Entretanto, a com plexi­
dade sozinha não ê suficiente - precisam os associar tam bém um significado com preensível às
coisas de nível mais elevado criadas por nós, uma tarefa conhecida como abstração.
294 Sistemas Digitais

Abstração
U m a hierarquia poderá envolver não só o agrupam ento de coisas em algo maior, m as tam bém
a associação de um com portam ento de nível m ais elevado a essa coisa maior. A ssim , quando
agrupam os transistores para form ar um a porta A N D , não dissem os apenas q u e um a porta
A N D era um agrupam ento de transistores - pelo contrário, associam os tam bém um com por­
tam ento específico à porta A N D . Esse com portam ento descrevia de m odo fácil de entender
com o funcionava o agrupam ento de transistores. De m odo sem elhante, quando agrupam os as
portas lógicas em um som ador de 32 bits, não dissem os sim plesm ente que um som ador era
um agrupam ento de portas lógicas - pelo contrário, associam os tam bém um com portam ento
específico fácil d e entender ao som ador. Um som ador de 32 bits faz a som a de dois núm eros
de 32 bits.
A associação de um com portam ento de nível m ais elevado a um com ponente para e n ­
co b rir os detalhes com plexos internos desse com p o n en te é um p ro cesso co n h ecid o com o
abstração.
A abstração libera o projetista de precisar lem brar, ou m esm o com preender, os detalhes
de baixo nível de um com ponente. S abendo que um som ador realiza a som a de dois núm eros,
um projetista poderá usá-lo em um projeto. Ele não precisa se preocupar se a im plem entação
interna do som ador usa propagação de “vai um '’ ou se usa algum circuito, talvez m ais rápido,
m as que é maior. Em lugar disso, o projetista precisa conhecer apenas o atraso c o tam anho
do som ador, os quais são novas abstrações.

Construindo um componente maior a partir de versões menores do mesmo componente


U m a tarefa com um de projeto é criar um a versão m aior de
um com ponente a partir de versões m enores do m esm o com ­
ponente. P o r exem plo, suponha q ue você tenha portas A ND
de três entradas à disposição, m as precisa de um a porta A ND
de nove en trad as. Você poderá co m b in ar diversas portas
A N D de três entradas para form ar um a porta A N D de nove
entradas, com o m ostrado na Fig. 5.82. De m odo sem elhante,
você poderá ag ru p ar portas O R em um a porta O R m aior e
portas X O R em portas X O R m aiores. A lgum as co m b in a­
ções poderão requerer m ais de dois n ív e is-a construção de
um a porta A N D de oito entradas, a partir dc portas A N D Figura 5.82 Com pondo uma
de duas entradas, req u er quatro A N D s de duas entradas no porta AND de nove entradas
prim eiro nível, duas A N D s de duas entradas no segundo ní­ a partir de portas AND de três
vel e um a A N D de duas entradas no terceiro nível. A lgum as entradas.
com binações podem term inar tendo entradas extras, as quais
deverão ser conectadas a 0 ou 1 - um a porta A N D de oito entradas co n stru íd a com A N D s
de três entradas seria sem elhante à Fig. 5.82, porém com a entrada inferior da porta A N D de
baixo conectada a um 1. D epois de tentar alguns exem plos de com binação de portas A N D
para form ar portas m aiores, você poderia obter um a regra geral para com binar portas A N D de
qualquer tam anho para form ar um a porta m aior: preencha o prim eiro nível com portas A ND
(as m aiores disponíveis) até que a som a de suas entradas seja igual ao núm ero desejado de en­
tradas. A seguir, preencha o segundo nível de m odo sim ilar (conectando as saídas do prim eiro
nível às portas do segundo nível) e assim por diante até chegar a um nível que tenha apenas
um a porta (esse será o últim o nível). C onecte as portas não usadas a 1. Para m anter o m esm o
padrão de construção, o agrupam ento de portas N A N D , N O R ou X N O R em portas m aiores
do m esm o tipo, exigirá m ais algum as portas.
Os m ultiplexadores tam bém podem ser com binados para form ar um m ultiplexador maior.
Por exemplo, suponha que você tenha m ultiplexadores 4x1 e 2x1 à disposição, m as precisa de
um multiplexador 8x 1. Você poderá com binar os multiplexadores m enores em um multiplexador
Projeto em Nível de Transferência entre Registradores (RTL) 295

8x1, com o m ostrado na Fig. 5.83. Observe que s2 seleciona 4x1


i 0 ----- i0
entre o grupo i 0- i 3 e o i 4 - i 7, ao passo que s l e sO se­
n — i1
lecionam uma das entradas do grupo. Você poderá conferir
que os valores das linhas de seleção perm item que a entrada i 2 ----- i2 d
apropriada passe através do m ultiplexador. Por exem plo, i3 — i3

s2sls0=000 permite a passagem da entrada iO, s2sls0=100 2x1


s1 sO
perm ite a passagem da i4 , e s 2 s ls 0 = lll, a d a i7. io

U m p ro b lem a p articu larm en te in teressan te d e c o m ­ d


i1
posição que ocorre frequentem ente é o d e c ria r um a m e­ 4x1 1
1
i4 — i0 1
| sO
m ória m aio r a p artir de m em ó rias m enores. A m em ó ria 1
i 5 ----- i1 1
1
m aio r p o d e te r p alav ras m ais largas, te r m ais palavras,
i 6 ----- i2 d
ou am bos. 1
i 7 ----- i3 1
1
Por exem plo, suponha que você tenha à disposição um 1
1
grande núm ero de RO M S 1024x8, m as você q u er um a
s1 !s0
ROM 1024x32. A grupar as R O M s m enores em um a m aior
é im ediato, com o m ostrado na Fig. 5.84. Precisarem os de
s1 sO s2
quatro R O M s 1024x8 para ob ter 32 bits em cad a palavra
de dados. C onectam os as dez entradas de endereço às q u a­ Figura 5.83 Um multiplexador
tro ROM s. Do m esm o m odo, conectam os a entrada de ha­ 8x1 composto por multiplexado-
bilitação às quatro ROM s. A grupam os as quatro saídas de res 4x1 e 2x 1.
oito bits para form ar a saída desejad a de 32 bits. A ssim ,
cada ROM arm azena um dos bytes da palavra de 32 bits. A
leitura de um a posição, digam os a posição 99, resulta em
quatro leituras sim ultâneas dos bytes da posição 99, um a
em cada ROM.

1I
T3 II
I
CO II
I
I
I
C I
<D II

Figura 5.84C om pondo uma


ROM 1024x32 a p artir de
ROMs 1024x8.

C o m o o u tro ex em p lo d e uso de R O M , su p o n h a novam ente q u e você ten h a à d isp o sição


R O M s 1024x8, m as d esta vez você p recisa de um a R O M 2048x8. A ssim , você tem um a
linha ex tra de en d ereço p o rq u e tem o d o b ro de p alav ras p ara endereçar. A Fig. 5.85 m o s­
tra co m o usar d u as R O M s 1024x8 p ara c ria r um a R O M 2048x8. A R O M de c im a rep re­
sen ta a m etade su p e rio r da m em ó ria (102 4 p alavras) e a R O M d e baixo, a m etad e in ferio r
(1 0 2 4 palavras). U sam o s a linha 11 d e e n d e re ç o (alO ) p ara h a b ilita r a R O M de cim a ou
a R O M de b aix o - os o u tro s d e z b its rep resen tam a p o siç ã o d en tro de cad a R O M . O bit
11 alim en ta um d e c o d ific a d o r 1x2, cu jas saíd as alim en tam as h a b ilita ç õ es d as R O M s. A
Fig. 5.86 usa um a tab ela de en d ereço s para m o strar co m o o bit 11 selecio n a um a das duas
R O M s m enores.
296 Sistemas Digitais

N a verdade, poderíam os usar qualquer


a9..a0
bit para selecionar entre a ROM superior e addr

a ROM inferior. G eralm ente, os projetistas 1x2 do ROM


i0 ded 1024x8
usam o bit m enos significativo (aO) para
e a1 en data
fazer a seleção. A ssim , a ROM superior re­
'8
presentaria todas as palavras de endereço i
par e a ROM inferior, todas as palavras de
addr
endereço ímpar.
ROM
F inal m ente, em um m o m en to q u a l­ 1024x8
quer, co m o estará ativa apenas um a das
en data
RO M s, poderem os ju n ta r as linhas de da­
dos de saída e co n ectá-las para fo rm ar a
nossa saída d e oito bits, com o m ostrado
TL
na Fig. 5.85.
C o m o e x e m p lo fin al, su p o n h a q u e
v o cê p re c ise d e u m a R O M 4 0 9 6 x 3 2 , C om pondo uma ROM 2048x8 a
F ig u r a 5 .8 5

m as só tem R O M s 1024x8 à d isp o sição . partir de ROM s 1024x8.


N esse c a so , p re c isa m o s te r m a is p a la ­
vras e tam bém palavras de larg u ra m aior.
a10 a9 a8 •• • aO
A ab o rd ag em é im ediata: p rim eiro , crie
0 0 0 0 0 0 0 0 0 0
um a R O M 4 0 9 6 x 8 usando q u atro R O M s, addr
0 0 0 0 0 0 0 0 0 1
um a em cim a da outra, e co n ectan d o os 0 0 0 0 0 0 0 0 1 0 ROM
d o is bits m ais sig n ificativ o s de en d ereço • •• 1024x8
a um d e c o d ific a d o r 2 x 4 para se le c io n a r 1 1 1 1 1 1 1 1 1 0 en data
a R O M a p ro p ria d a e, se g u n d o , to rn e a 1 1 1 1 1 1 1 1 1 1
ROM m ais larga, acrescen tan d o m ais três 0 0 0 0 0 0 0 0 0 0
R O M s ao lad o d e cad a u m a das q u atro 0 0 0 0 0 0 0 0 0 1 addr
R O M s iniciais. 0 0 0 0 0 0 0 0 1 0 ROM
A m aioria dos com ponentes de bloco •• • 1024x8

operacional que introduzim os no C apítulo 1 1 1 1 1 1 1 1 1 0 en data


4 pode ser com binada para form ar versões 1 1 1 1 1 1 1 1 1 1

de largura m aior do m esm o tipo de co m ­


F ig u ra 5.86Quando se compõe uma ROM
ponente.
2048x8 a partir de duas ROMs 1024x8, pode-
se usar o bit mais significativo de endereço
para fazer a seleção entre as duas ROMs. Os
dem ais bits de endereço definem a posição
dentro da ROM escolhida.

5.9 OTIMIZAÇÕES ETRADEOFFS EM PROJETO RTL (VEJA A SEÇÃO 6.5)


As seções anteriores deste capítulo descreveram com o realizar o projeto em nível de transfe­
rência entre registradores para criar processadores, constituídos de um bloco de controle e um
operacional. E sta seção, que na realidade está na Seção 6.5, descreve com o criar processado­
res que são m ais otim izados, ou que realizam o tradeoff de uma característica por outra (por
exem plo, tam anho por desem penho). Um a form a de usar esse livro consiste em analisar essas
otim izações e tradeoffs, logo após a introdução do projeto em nível RTL, ou seja, agora. U m a
outra form a deixa essa análise para m ais adiante.
Projeto em Nível de Transferência entre Registradores (RTL) 297

5.10 DESCRIÇÃO DE PROJETO RTL USANDO LINGUAGENS DE DESCRIÇÃO


DE HARDWARE (VEJA A SEÇÃO 9.5)
Essa seção, que na realidade está na Seção 9.5, descreve o uso de H D Ls durante o projeto
RTL. Em um a form a de usar esse livro, essa descrição de H D L é feita logo após a introdução
do projeto em nível RTL, ou seja, agora. Em um a outra form a, a descrição do uso das H D Ls
é vista m ais adiante.

► 5.11 PERFIL DE PRODUTO-TELEFONE CELULAR


Um celular, form a reduzida de telefone celular, tam bém conhecido com o telefone m óvel, é
um telefone portátil sem fio que pode ser usado para realizar cham adas telefônicas, enquanto
se anda por um a cidade. O s celulares tornaram possível a co m u n icação entre pessoas d is­
tantes, quase cm qualquer m om ento e em q u alq u er lugar. A ntes dos celulares, a m aioria dos
telefones estava vinculada a lugares fixos com o um a casa ou um escritório. A lgum as cidades
m antinham um sistem a de telefones m óveis baseado em rádio, o qual usava um a potente
antena central localizada em algum lugar da cidade, possivelm ente no topo de um edifício
elevado. C om o as freqüências de rádio são escassas e, portando, distribuídas cuidadosam ente
pelos governos, esse sistem a de radiotelefonia podia usar apenas algum as dezenas ou c e n ­
tenas de freqüências diferentes de rádio e, portanto, não podia suportar um grande núm ero
de usuários. C om o conseqüência, esses poucos usuários pagavam taxas m uito elevadas pelo
serviço, lim itando o uso desses telefones m óveis a poucos indivíduos abastados e a funcioná­
rios públicos im portantes. Para poder dispor do serviço, o qual geralm ente não funcionava em
outras cidades, esses usuários deveriam estar dentro de um certo raio, m edido em dezenas de
quilôm etros, desde a antena central.

Células e estações base


N a década de 1990, a popularidade dos tele­ a n te n a d a
fones celulares explodiu crescendo de pou­ e s ta ç ã o b a s e

cos m ilhões de usuários até centenas de m i­


lhões durante aquela década (em bora a pri­
m eira cham ada com telefone celu lar tenha
sido feita por M artin C ooper da M otorola, o
inventor do celular, lá por 1973) e hoje é d i­
fícil para m uitas pessoas se lem brar com o
era a vida antes dos telefones celulares. A
idéia técnica, que fundam enta os telefones
celu lares, co n siste em d iv id ir um a cid ad e
em num erosas regiões pequenas, conhecidas normal
com o células (d aí o term o “telefone c e lu ­
lar”). A Fig. 5.87 m ostra um a cidade d iv i­ F ig u ra 5.87 O telefone 1 na célula A pode usar
dida em três células. N a realidade, um a c i­ a mesma freqüência de rádio que o telefone 2
dade típ ica pode ser d iv id id a em d ú zias, na célula C. Assim, aum enta-se o número de
cen ten as ou m esm o m ilh ares de célu las. possíveis usuários de telefones celulares em
C ada célu la tem a su a an ten a de rádio e uma cidade.
equipam ento próprios no seu centro, co n h e­
cido com o estação base. C ada estação base pode usar dúzias ou centenas de freqüências dife­
rentes de rádio. A antena de cada estação base precisa apenas tran sm itir um sinal de rádio
298 Sistemas Digitais

suficientem ente potente para cobrir a área da célula correspondente à estação base. A ssim , na
realidade, as células não adjacentes podem reutilizar as m esm as freqüências, de m odo que as
radiofrcqüências, em núm ero lim itado, perm itidas para os telefones m óveis, podem ser com ­
partilhadas por m ais de um telefone em um dado m om ento. C onsequentem ente, m uito m ais
usuários podem ser atendidos, o que leva a um a redução de custos p o r usuário. A Fig. 5.87
ilustra que o celular l na célula A pode usar a m esm a frequência que o celular 2 na célula C,
porque os sinais de rádio da célula A não alcançam a célula C. S uportar m ais usuários signi­
fica reduzir grandem ente o custo por usuário e ter m ais estações base significa disponibilizar
o serviço em m ais áreas do que sim plesm ente as grandes cidades.
A Fig. 5.88(a) m ostra um a antena
típica de estação base. O equipam ento
da estação pode estar em uma pequena
construção ou com um ente em um a pe­
quena caixa, próxim o da base da antena.
Na realidade, a antena m ostrada suporta
as antenas de dois provedores diferentes
de serviço de telefonia celular - um a no
topo e outra um pouco abaixo no mesmo
poste. O terreno para os postes custa caro.
P or essa razão, os provedores o com ­
partilham , ou algum as vezes procuram
estruturas altas para m ontar as antenas,
com o edifícios, postes de ilum inação em
estacionam entos, e outros lugares de in­
teresse (por exem plo, a Fig. 5.88(b)). A l­
guns provedores tentam encobrir as suas
antenas para torná-las mais agradáveis ao
olhar, com o na Fig. 5.88(c) - a árvore in­
teira da figura é artificial. F ig u ra 5.88 Estações base encontradas em diver­
Em um a cid ad e, todas as estações sos locais.
base de um fornecedor de serviço são
conectadas a um a central de com utação. E ssa central não apenas co necta o sistem a de te ­
lefonia celular ao sistem a regular de telefonia com “ linhas terrestres” , m as tam bém atribui
freqüências de rádio específicas às cham adas telefônicas e faz a co m utação entre as células
quando um telefone está se deslocando entre elas.

Como funcionam as chamadas de telefones celulares


S uponha que você esteja segurando o celular 1 na célula A da Fig. 5.87. Q uando você liga o
celular, ele fica esperando por um sinal vindo de algum a estação base em um a frcqüência de
controle. E ssa freqüência especial de rádio é usada na com unicação dos com andos (em vez
dos dados de som ) entre a estação base e o celular. Se o telefone não receber nenhum sinal
desse tipo, ele indicará um erro de “Sem serv iço ” . Se o telefone receb er o sinal d a estação
base A , então ele transm itirá o seu próprio núm ero de identificação (ÍD ) para a estação A.
C ada telefone celular tem o seu núm ero de identificação ID exclusivo. (N a realidade, dentro
de cada celular, há um cartão de m em ória não-volátil que contém esse núm ero de identifica­
ção - potencialm ente, um usuário pode trocar cartões entre celulares, ou ter m últiplos cartões
para o m esm o aparelho, m udando de núm ero quando troca de cartão.) Esse núm ero ID é co ­
m unicado ao com putador da central de com utação pela estação base A e, com o conseqüência,
o banco de dados no com putador do provedor de serviço registra agora que o seu celu lar está
na célula A. Para lem brar a central de com utação de sua presença, o celular envia periodica­
m ente um sinal de controle.
Projeto em Nível de Transferência entre Registradores (RTL) 299

Q uando então alguém cham a o núm ero do seu celular, essa ligação pode estar vindo pelo
sistem a telefônico com um e indo para a central de com utação. () banco de dados no co m ­
putador da central indica que seu celular está na célula A. Em um dos tipos de tecnologia de
telefonia celular, o com putador da central de com utação atribui à cham ada um a freqiiência
específica de rádio, suportada pela estação base A. N a verdade, o co m p u tad o r atribui duas
freqüências. um a para falar e outra para escutar, d e m odo que a escuta e a fala podem ocorrer
sim ultaneam ente no celu lar - vam os cham ar esse p ar de freqüências de canal. A seguir, o
com putador diz ao seu telefone para com pletar a cham ada, usando o canal atribuído, e o tele­
fone toca. N aturalm ente, pode acontecer que haja tantos telefones envolvidos com cham adas
na célula A que a estação base A não tenha freqüências disponíveis - nesse caso, a pessoa que
cham ou poderá ouvir um a m ensagem avisando que o usuário não está disponível.
Fazer um a cham ada ocorre de m odo sem elhante, m as quem inicia a cham ada é o seu celu ­
lar. C om o resultado, freqüências de rádio são novam ente atribuídas (ou aparece um a m ensa­
gem de “Telefone ocupado” , se não houver freqüências disponíveis no m om ento).
Suponha que neste m om ento o seu telefone esteja executando um a cham ada com a estação
base A e que você esteja se deslocando da célula A para a célula B. com o na Fig. 5.87. A estação
base A verá o sinal se enfraquecendo, ao passo que a estação base B o verá se intensificando, e
as duas estações base transm itirão essa inform ação à central de com utação. Em algum ponto,
o com putador da central decidirá m udar a sua ligação da estação base A para a estação base B.
O com putador atribui um novo canal para a ligação na célula B (lem bre-se, células adjacentes
usam conjuntos diferentes de freqüências para evitar interferências) e envia um com ando para
o seu telefone (através da estação base A, naturalm ente) para m udar de canal. () seu celular faz
essa m udança e com eça a se com unicar com a estação base B. D urante um a ligação telefônica,
essa m udança pode ocorrer dúzias de vezes enquanto um carro desloca-se através de uma c i­
dade, e é im perceptível para o usuário do telefone. A lgum as vezes essa m udança falha, com o
quando a nova célula não tem freqüências disponíveis, e a ligação “cai” .

Interior de um telefone celular

Componentes básicos
Um telefone celular necessita de circuitos digitais sofisticados para executar as ligações. A
Fig. 5.59 m ostra o interior de um telefone celu lar básico. A s placas de circu ito im presso
contêm diversos chips para im plem entar os circuitos digitais. Um desses circuitos realiza a
conversão analógico-digital da voz (ou outro som ) em um a seqüência de Os e ls e um outro
executa a conversão analógico-digital de um a seqüência digitalizada recebida, passando-a de
volta para a form a de sinal analógico. A lguns dos circuitos, tipicam ente softw are de m icro-

F ig u ra 5.89Interior de um telefone celular: (a) aparelho, (b) bateria e cartão ID à esquerda, teclado
e display no centro, circuitos digitais sobre placa de circuito impresso à direita, (c) as duas faces da
placa de circuito impresso, mostrando diversos encapsulamentos de chips digitais sobre a placa.
300 Sistemas Digitais

processador, executam tarefas que m anipulam os vários recursos do celular, com o o sistem a
de m enu, a agenda de endereços, os jo g o s, etc. O bserve que lodos os dados que você guarda
em seu celular (por exem plo, agenda de endereços, toques m usicais custom izados, inform a­
ções sobre a pontuação m áxim a obtida nos jo g o s, etc.) serão gravados provavelm ente em um a
memória flash, cuja não-volatilidade assegura que os dados perm anecerão guardados na m e­
m ória, m esm o que a bateria descarregue ou seja rem ovida. O utras tarefas im portantes são as
respostas dadas aos com andos da central de com utação e a filtragem realizada pelos circuitos
digitais. Em um tipo de filtragem , o sinal de rádio da portadora é retirado da radiofreqüência
de recepção. Em um outro tipo, o ruído presente na seqiiência digitalizada de áudio que vem
do m icrofone é rem ovido, antes dessa sequência ser enviada através da radiofreqüência de
transm issão. Vam os exam inar a filtragem com m ais detalhes.

Filtragem e filtros FIR


A filtragem é possivelm ente a tarefa m ais co m u m realizad a em pro cessam en to digital de
sinais. Esse processam ento atua sobre um a seqiiência de dados digitais que vem da d ig itali­
zação de um sinal de entrada com o áudio, vídeo ou rádio. Tais seqüências de dados são en ­
contradas em inúm eros dispositivos eletrônicos, com o tocadores de CD , telefones celulares,
m onitores cardíacos, m áquinas de ultra-som , rádios, controladores de m otores, etc. A filtra­
gem de um a seqiiência de dados ê a atividade que rem ove características particulares do sinal
de entrada e produz um novo sinal de saída sem essas características.
Um objetivo com um de filtragem é a rem oção de ruído de um sinal. Você certam ente já
ouviu ruído em sinais de áudio (aquele som sibilante desagradável no seu aparelho de som ,
celular ou telefone sem fio). Provavelm ente, você tam bém ajustou um filtro para reduzir esse
ruído, quando você ajustou o controle de “A gudos” d o seu aparelho de som (em bora esse
filtro possa ter sido im plem entado usando m étodos analógicos ao invés de digitais). O ruído
pode surgir em qualquer tipo de sinal, não apenas em áudio. O ruído pode vir de um dispo­
sitivo de transm issão im perfeito, um dispositivo im perfeito de au d ição (por exem plo, um
m icrofone barato), ruído de fundo (por exem plo, ruídos de trânsito que chegam ao seu celu­
lar), interferência elétrica produzida por outros aparelhos elétricos, etc. Em um sinal, o ruído
aparece tipicam ente com o saltos bruscos em relação a um sinal suave.
Um outro objetivo com um de filtragem é a rem oção da freqüência portadora de um sinal.
U m a freqüência portadora é um sinal que foi acrescentado a um sinal principal com o propó­
sito de transm itir esse sinal principal. Por exem plo, um a estação de rádio poderia transm itir
um sinal de rádio de 102,7 M H z. E ssa freqüência de 102,7 M H z é a freqüência portadora. O
sinal d a portadora pode ser um a onda scnoidal de dada freqüência cm particu lar (por exem ­
plo, 102,7 M H z) que é adicionada ao sinal principal, que é o sinal de m úsica em si. Um apa­
relho receptor sintoniza a freqüência portadora e, em seguida, rem ove o sinal da portadora,
restando apenas o sinal principal.
Um filtro FIR (usualm ente lido pronunciando as letras “F ” “ 1” “R ” ), sigla para “Finite
Im pulse R esponse”, ou seja, resposta finita ao im pulso, é um filtro m uito genérico, que pode
ser usado em um a grande variedade de objetivos de filtragem . A idéia básica de um filtro FIR
é m uito sim ples: m ultiplique o valor de entrada atual por um a constante e acrescente esse re­
sultado ao valor anterior de entrada que, por sua vez, foi m ultiplicado por um a constante. Em
seguida, acrescente esse resultado ao próxim o valor anterior, vezes um a constante, e assim
por diante. Um projetista que usa um filtro FIR consegue atingir um objetivo em particular de
filtragem simplesmente escolhendo as constantes do filtro FIR.
M atem aticam ente, um filtro FIR pode ser descrito com o:

y(t) = c*0 x x(f) + c l x - x ( t - l ) + c l x x (t-2 ) + c3 x - x ( t - 3 ) + c4 x - x ( t- 4 ) + ...


A variável t representa o passo atual de tem po, a*é o sinal de entrada e y é o sinal de saída.
C ada term o (por exem plo, c0*x(t)) é chamado de tap. A ssim , a equação anterior representa
um filtro de 5 taps.
Projeto em Nível de Transferência entre Registradores (RTL) 301

Vamos ver alguns exem plos da versatilidade do filtro FIR . A ssum a q u e tem os um filtro
FIR de 5 taps. Em prim eiro lugar, para sim plesm ente passar um sinal inalterado através do
filtro, fazem os eO ser l e cl=c2=c3=c4= 0. Para am plificar um sinal de entrada, fazem os cO
ser um núm ero m aior que l, com o cO igual a 2. Para criar um filtro suavizador, que produz
na saída a m édia do valor atual e os quatro valores anteriores de entrada, podem os sim ples­
m ente atribuir valores equivalentes às constantes tais que som ados sejam iguais a 1, com o
cO=cJ =c2=c3=c4=02. O s resultados desse filtro aplicado a um sinal de en trad a ruidoso
estão m ostrados na Fig. 5.90. Para suavizar e am plificar, podem os esco lh er valores e q u i­
valentes para as co nstantes tais que som ados resultem em algo m aior que 1, por exem plo,
c0=cl=c2=c3=c4= 1, produzindo um a am plificação de cinco vezes. Para criar um filtro que
inclui apenas os dois valores anteriores ao invés dos quatro anteriores, sim plesm ente fazem os
c3 e c4 ser 0. Vem os que todos esses diversos filtros foram construídos, m udando-se sim ples­
m ente os valores das constantes de um filtro FIR. O filtro FIR é realm ente m uito versátil.

Figura 5.90 Resultados de um filtro FIR de 5 taps com c0=c 1=c2=c3=c4=0,2 aplicado a um sinal
ruidoso. O sinal original é uma onda senoidal. O sinal ruidoso tem saltos aleatórios. A saída FIR
(fir_média_saída) é muito mais suave do que o sinal ruidoso, aproxim ando-se do sinal original.
Observe que a saída FIR está ligeiramente deslocada para a direita, significando que a saída está
ligeiramente atrasada no tempo (provavelmente uma pequena fração de um segundo de atraso).
Usualmente, esse ligeiro atraso não é importante em uma aplicação em particular.

E ssa versatilidade se estende ainda m ais. N a realidade, podem os filtrar um a freqüencia


portadora usando um filtro FIR e ajustando os coeficientes com diferentes valores, cuidadosa­
m ente escolhidos para rem over um a freqüencia particular. A Fig. 5.91 m ostra um sinal prin­
cipal. entrada / , que querem os transm itir. A dicionam os esse sinal a um sinal de portadora,
entrada2 , para obter o sinal com posto, entradajotal. Por exem plo, o sinal entradajotal é
aquele que seria transm itido por um a estação de rádio, com entradal sendo o sinal de áudio
da m úsica e entradal, a freqüencia portadora.
A gora digam os que o receptor de um aparelho de som receba esse sinal com posto e p re­
cise rem over o sinal de portadora, de m odo que o sinal de m úsica possa ser enviado às cai­
xas de som . Para determ inar com o filtrar o sinal de portadora, exam ine cuidadosam ente as
am ostras (os quadradinhos da Fig. 5.91) do sinal de portadora. O bserve que a taxa de am os­
tragem é tal que se tom arm os qualquer am ostra e a som arm os à am ostra de três passos antes,
obterem os 0. Isso acontece porque, no caso de um ponto de valor positivo, o ponto de três
am ostras anteriores será negativo e de m esm a m agnitude. N o caso de um ponto negativo, o
ponto de três am ostras antes será positivo e de m esm a m agnitude e, no caso de um ponto de
valor zero, o ponto de três am ostras antes tam bém terá valor zero. De m odo sem elhante, a
adição de um a am ostra de sinal de portadora a um a am ostra de três passos adiante tam bém
302 Sistemas Digitais

Figura 5.91 A adição de um sinal principal, entrada/ , a um sinal de portadora, entmda.2, resulta
no sinal composto entradajo ta l.

resulta em zero. D esse m odo, para filtrar o sinal de portadora, sim plesm ente adicionam os
cada am ostra à am ostra de três passos antes. Podem os tam bém som ar cada am ostra à m etade
da am ostra de três passos antes com m ais m etade da am ostra de três passos adiante. Podem os
conseguir isso, usando um filtro FIR de 7 taps com os seguintes sete coeficientes: 0 ,5 ,0 , 0. I ,
0 ,0 e 0,5. C om o a som a deles é igual a 2. podem os dividi-los por dois para resultar um a som a
de I , com o segue: 0,25, 0, 0, 0,5, 0, 0 e 0,25. A aplicação desse filtro FIR de 7 taps ao sinal
com posto resulta na saída FIR m ostrada na Fig. 5.92. O sinal principal é recuperado. D eve­
m os salien tar q ue escolhem os o sinal de portadora de m odo que este exem plo viesse a d ar
bons resultados - outros sinais poderiam não ser recuperados tão perfeitam ente. N o entanto,
o exem plo dem onstra a idéia básica.

Figura 5.92 Filtragem do sinal de portadora usando um filtro FIR de 7 taps com as constantes
0,25, 0, 0, 0.5, 0, 0 e 0,25. O ligeiro atraso no sinal de saída normalmente não gera problemas.

F iltros FIR de cinco e sete taps podem ser en co n trad o s na prática; m uitos filtros FIR
podem conter dezenas ou centenas de taps. C ertam ente, os filtros FIR podem ser im plem en­
tados usando softw are (e freqüentem ente o são), m as m uitas ap licações requerem que as
centenas de m ultiplicações e adições, para cada am ostra, sejam executadas m ais rapidam ente
do que é possível cm softw are, levando a im plem entações custom izadas de circuitos digitais.
O E xem plo 5.8 ilustrou o projeto de um circuito para filtro FIR.
Há m uitos tipos de filtros além dos filtros FIR . A filtragem digital de sinais faz parle de
um cam po m ais am plo, conhecido com o processam ento digital de sinais, ou DSR A área de
D SP tem um a rica fundam entação m atem ática e é um cam po de estudo em si. São os m éto­
dos avançados de filtragem que tornam as conversações telefônicas tão claras, com o ocorre
atualm ente.
Projeto em Nível de Transferência entre Registradores (RTL) 303

5.12 RESUMO DO CAPITULO


N este capítulo, descrevem os (Seção 5.1) que m uito do projeto digital atual envolve o projeto
de com ponentes em nível de processador e que esse projeto é feito no assim cham ado nível de
transferência entre registradores (RTL). Introduzim os (Seção 5.2) um m étodo de projeto RTL
de quatro passos para converter o com portam ento RTL em um a im plem entação com proces­
sador, sendo esse constituído de um bloco operacional controlado por um bloco de controle. O
m étodo de projeto RTL fez uso dos com ponentes de bloco operacional, definidos no C apítulo
4, e do processo de projeto de um bloco de controle, definido no C apítulo 3, o qual se baseou
no processo de projeto com binacional do C apítulo 2. D em os diversos exem plos de projeto
RTL (Seção 5.3), apontando ao m esm o tem po diversas falhas e as boas práticas de projeto,
e discutim os tam bém as características de projetos com predom ínio de controle ou dados.
D iscutim os (Seção 5.4) com o definir a freqücncia de relógio de um circuito com base no seu
cam inho crítico. D em onstram os (Seção 5.5) com o um program a seqüencial, com o um pro­
gram a em C, pode conceitualm ente ser convertido em portas, usando algum as transform ações
diretas que convertem o C em com portam ento RTL, com o sabem os, pode então ser convertido
em portas, usando o m étodo de projeto RTL de quatro passos. Essa dem onstração deve deixar
claro que a funcionalidade de um sistem a digital pode ser im plem entada com o softw are em
m icroprocessador, ou com o circuito digital custom izado (ou m esm o com o am bos). As diferen­
ças entre as im plem entações em softw are e em circuitos custom izados não estão relacionadas
com o que cada um a pode im plem entar - am bas podem im plem entar qualquer funcionalidade.
As diferenças estão relacionadas com características m étricas de projeto com o desem penho do
sistem a, consum o de energia, tam anho, custo, tem po de projeto e assim por diante. Portanto,
para que seja obtida a m elhor im plem entação total em relação às restrições das características
m étricas de projeto, os projetistas digitais m odernos devem estar à vontade para fazer a m igra­
ção da funcionalidade de um softw are em m icroprocessador para circuitos digitais custom i­
zados e vice-versa. Introduzim os (Seção 5.6) diversos com ponentes de m em ória com um ente
usados em projeto RTL, incluindo com ponentes R A M e ROM. Introduzim os tam bém (Seção
5.7) um com ponente de fila que pode ser útil durante o projeto RTL. Tom am os um m om ento
para d iscu tir (Seção 5.8) um a técnica genérica que estam os usando ao longo deste livro, a
hierarquia, a qual auxilia um projetista a lidar com a com plexidade.
N os C apítulos 1 a 5, enfatizam os os m étodos diretos de projeto para sistem as gradativa­
m ente m ais com plexos, m as não enfatizam os com o projetar bem esses sistem as. A m elhoria
de nossos projetos será o foco do próxim o capítulo.

5.13 EXERCÍCIOS
O s exercícios indicados com um asterisco (*) são m ais desafiadores.

SEÇÃO 5.2: 0 MÉTODO DE PROJETO RTL


5.1 (a) Crie uma máquina de estados de alto nível que descreve o seguinte comportamento de sistema.
O sistema tem uma entrada A de oito bits, uma entrada d de um bit e uma saída S de 32 bits.
A cada ciclo de relógio, se d=l, o sistema deverá somar o valor de A à soma acumulada até
o momento c colocar esse valor na saída $. Ao contrário, $e d=0. o sistema deverá subtrair.
Ignore as questões de estouros crescente e decrescente. Não esqueça de incluir um estado de
inicialização. Sugestão: Declare e use um registrador interno para guardar a soma.
(b) Acrescente uma entrada reset de um bit ao sistema. Quando rs t= l. o sistema deve fazer reset
tornando a soma igual a 0.
5.2 Crie uma máquina de estados de alto nível para um dispositivo simples de cncriptar e decriptar
dados. Se uma entrada b de um bit for 1, o dispositivo armazenará os dados de uma entrada I de
32 bits como sendo o assim chamado valor de offset. Se b for 0 e uma outra entrada e de um bit
for 1, então o dispositivo “encripiará” sua entrada I, somando o valor armazenado de offset à essa
entrada I, e colocará esse valor encriptado em uma saída J de 32 bits. Se. ao contrário, uma outra
entrada d de um bit for 1, o dispositivo deverá “decriptar” os dados em I. subtraindo o valor de
304 Sistemas Digitais

offseu antes de colocar o valor decriptado em J. Assegure-se de explicilamente levar em conside­


ração todas as combinações possíveis dos três bits de entrada.
5.3 Crie uma máquina de estados de alto nível para um controlador de mistura de água fria e quente
de banheira. O sistema tem uma entrada razão de três bits que indica a razão desejada entre água
fria e quente, e uma entrada abri r de um bit indicando que a água deve fluir. O sistema tem duas
saídas águaquente e á g u a f ri a de quatro bits cada, que controlam as taxas ou velocidades de fluxo
de água quente e fria. A soma dessas duas taxas deve ser sempre igual a 16. A sua máquina de
estados de alto nível deve determinar os valores de saída de á g u a q u e n te e á g u a f ri a, de modo que
a razão entre os fluxos de água fria e quente seja o mais próximo possível da razão desejada, ao
passo que o fluxo total deve ser sempre 16. Sugestão: Como só há 8 razões possíveis, uma solução
aceitável pode usar um estado para cada razão.
5.4 Crie uma máquina de estados de alto nível que inicializa completamente com Os os conteúdos de
um banco de registradores 16x32. A inicialização começa quando uma entrada r s t é 1.
5.5 (a) Crie uma máquina de estados de alto nível que soma cada registrador de um banco de regis­
tradores 128x8 ao registrador correspondente em outro banco de registradores 128x8. arma­
zenando o resultado em um terceiro banco de registradores 128x8. O sistema deve começar a
fazer a soma apenas quando uma entrada somar de um bit for 1 e não deve executar novamente
a soma (de registradores) ate que tenha terminado a soma corrente (somente somando nova­
mente se a entrada somar for 1).
(b) Estenda esse sistema para realizar somas e subtrações, usando uma entrada op adicional de um
bit, tal que op=l significa somar e op=0 significa subtrair.
5.6 Projete uma máquina de estados de alto nível para um contador crescente de quatro bits. com uma
entrada ent de controle de contagem, uma entrada cl r para clear e uma saída tc de lórmino de
contagem. Use o método de projeto RTL da Tabela 5.1 para converter a máquina de estados de alto
nível em um bloco de controle e um bloco operacional. Use um registrador c um incremcntador
combinacional no bloco operacional, não simplesmente um registrador contador. Projete o bloco
de controle até o nível de registrador de estado e portas lógicas.
5.7 Compare o contador crescente projetado no Exercício 5.6 com projetado na Fig. 4.48.
5.8 Crie um bloco operacional
para a máquina de estados de
alto nível da Fig. 5.93.
5.9 ^Começando com o projeto
da máquina de fornecer re­
frigerante do Exemplo 5.1.
crie um diagrama de blocos
e uma máquina de estados de
alto nível para uma máquina
de fornecer refrigerante. Essa
permite escolher entre dois ti­
pos de refrigerante e também Figura 5.93 Exemplo de uma máquina de estados de alto nível.
fornece troco ao consumidor.
Um detector de moedas for­
nece ao circuito um sinal m de um bit que torna-se 1 durante um ciclo de relógio, quando uma
moeda é detectada, e também a quantia v de oito bits, com o valor da moeda em centavos. Duas en­
tradas r l e r2 de oito bits indicam o custo dos dois tipos de refrigerante que podem ser escolhidos.
A escolha de refrigerante do usuário é controlada por dois botões bl e b2 que. quando pressionados,
ficam em I durante um ciclo de relógio. Se o usuário tiver colocado moedas suficientes para o re­
frigerante escolhido, então o circuito colocará um dos bits de saída f 1 ou f2 em 1 durante um ciclo
de relógio, o que levará a máquina a fornecer o refrigerante escolhido. Se for necessário troco, o
circuito da máquina de fornecer refrigerante colocará um bit nt em 1 durante um ciclo de relógio e
também indicará na saída vt de oito bits o valor necessário do troco. Usando o método de projeto
RTL mostrado na Tabela 5 .1. converta a máquina de estados de alto nível em um bloco de controle
e um bloco operacional. Projete o bloco operacional até o nível de estrutura, mas projete o bloco de
controle até o nível de FSM apenas, como foi feito na Fig. 5.26.
Projeto em Nível de Transferência entre Registradores (RTL) 305

5.10 (a) Use o método de projeto RTL


E n tr a d a s : comece(bit), dados(8 bits), end(8 bits), w_wait{bit)
da Tabela 5.I para converter a S aídas-. w_data(8 bits), w_addr{8 bits), w_wr(bit)
máquina de estados de alto ní­
vel da Fig. 5.94 em um bloco de
controle e um bloco operacional. w_wait'
( Esperar \
Projete o bloco operacional em ^comece'
nível de estrutura, mas projete o comecew
bloco de controle apenas até o
f Envie \ Envie
nível de FSM, como foi feito na
V Endereço >r * \ D a d o s i J w- wait
Fig. 5.26.
(b) *Projete a FSM do bloco de con­ w_wr=1 w_data =dados
trole em nível de estrutura. w_addr=end

5.11 Crie uma FSM que faz interface com Figura 5.94 Máquina de estados de alto nível de uma
o bloco operacional da Fig. 5.95. A interface de barramento com sinal de espera (w_wait).
FSM deve usar o bloco operacional
para computar o valor médio dos 16
elementos de 32 bits de um array* A qualquer. Esse arranjo A é armazenado em uma memória,
com o primeiro elemento no endereço 26. o segundo no endereço 27, e assim por diante. Assuma
que, quando um novo valor é colocado nas linhas de endereço M_end, a memória coloca os dados
lidos quase que imediatamente nas linhas de saída M_dados. Ignore a possibilidade de estouro.

M_end

i_ld
Lclr
s_ld
s_clr

i_lt16
a_ld
a_clr
m é d ia jd
média_clr

média

Figura 5.95 Bloco operacional para computar a média de 16 elementos de um arranjo**.

5.12 Usando o método de projeto RTL da Tabela 5.1. desenvolva um projeto RTL para um circuito me­
didor de tempo de reação que mede o tempo decorrido entre o acendimento de uma lâmpada e o
apertar de um botão por uma pessoa. O medidor tem três entradas, uma entrada clk de relógio, uma
entrada rst de reset e um botão de entrada B. Também tem três saídas, uma saída len de habilitação
da lâmpada, uma saída rtempo de tempo de reação de dez bits e uma saída lemo para indicar que
o usuário não foi rápido o suficiente. O medidor de tempo de reação trabalha da seguinte maneira.
Durante o reset, o medidor espera por 10 segundos antes de acender a lâmpada fazendo len ser I.
A seguir, o medidor de tempo de reação mede o intervalo de tempo decorrido em milissegundos
até o usuário pressionar o botão B, fornecendo o tempo como um número binário de 12 bits na
saída rtempo. Se o usuário não pressionar o botão dentro de 2 segundos (2000 milissegundos). o
medidor irá ativar a saída lento tornando-a 1 e colocando 2000 em rtempo. Assuma que a entrada
de relógio tem uma frequência dc I kHz. Sugestão: Este é um problema dc projeto RTL com

* N. cie T: Em português, arranjo, significando um agrupamento finito e ordenado de elementos em forma de matriz.
** N. de T: Relembrando, em i_li 16. It significa menor do que (le s s than).
306 Sistemas Digitais

predomínio de controle. Projete o bloco operacional até o nível de estrutura e o bloco de controle
apenas até o nível de FSM, como foi feito na Fig. 5.26.
5.13 Use o método de projeto RTL da Tabela 5 .1 para converter a máquina de estados de alto nível da
Fig. 5.74 em um bloco de controle e um bloco operacional. Projete o bloco operacional até o nível
de estrutura e o bloco de controle apenas até o nível de FSM, como foi feito na Fig. 5.26.

SEÇÃO 5.3: EXEMPLOS E QUESTÕES DE PROJETO RTL


Nos seguintes problemas, projete o bloco operacional até o nível de estrutura e o bloco de controle ape­
nas até o nível de FSM, como foi leito na Fig. 5.26.
5.14 Usando o método de projeto RTL da Tabela 5 .1, desenvolva um projeto RTL que computa a soma
de todos os números positivos, que estão dentro de um banco de registradores A de 5 12 palavras,
consistindo em números de 32 bits armazenados na forma de complemento de dois.
5.15 Usando o método de projeto RTL da Tabela 5 .1, desenvolva um projeto RTL que computa a soma
de todos os números positivos presentes em um conjunto de 16 registradores separados, de 32 bits
cada, os quais armazenam os números na forma de complemento de dois. Torne o projeto o mais
rápido possível, executando tantos cálculos concorrente mente (em paralelo) quanto for possível.
Sugestão: esse é um projeto com predomínio de dados.
5.16 Usando o método de projeto RTL da Tabela 5 .1. desenvolva um projeto RTL que coloca na saída o
valor máximo encontrado em um banco de registradores A consistindo em 64 números de 32 bits.
5.17 Usando o método de projeto RTL da Tabela 5 .1. desenvolva um projeto RTL que fornece na saída
um sinal de alerta sempre que a temperatura média das quatro últimas amostras for superior a um
valor definido pelo usuário. O circuito tem uma entrada TC de 32 bits que indica a temperatura
corrente lida, uma entrada TA de 32 bits que indica a temperatura especificada pelo usuário, na
qual o sinal de alerta deve ser habilitado, e um botão c/rd e entrada que desabilita o sinal de alerta.
Quando a temperatura média excede o nível de alerta especificado pelo usuário, o circuito deve
ativar a saída A, habilitando o sinal de alerta. A saída de alerta deve permanecer em nível alto até
que o botão clr seja pressionado. Sugestão: dentro do seu bloco operacional, você pode usar um
registrador deslocador à direita para implementar a divisão.
5.18 Usando o método de projeto RTL da Tabela 5 .1, desenvolva um projeto RTL de um filtro digital
que coloca na saída a média da entrada corrente e da amostra anterior, ambas de 32 bits. Sugestão:
dentro do seu bloco operacional, você pode usar um registrador deslocador à direita para imple­
mentar a divisão.

SEÇÃO 5.4: DETERM INANDO A FREQÜÊNCIA DE RELOGIO


5.19 Assumindo que um inversor tem um atraso de l ns. todas as demais portas têm um atraso de 2 ns
e as conexões têm um atraso de l ns. determine o caminho crítico do circuito somador completo
mostrado na Fig. 4.31.
5.20 Assumindo que um inversor tem um atraso de l ns, todas as demais portas têm um atraso de 2 ns e
as conexões têm um atraso de l ns, determine o caminho crítico do decodificador 3x8 da Fig. 2.50.
5.21 Assumindo que um inversor tem um atraso de l ns, todas as demais portas têm um atraso de 2 ns
e as conexões têm um atraso de l ns, determine o caminho crítico de um multiplexador 4x l .
5.22 Assumindo que um inversor tem um atraso de l ns e todas as demais portas têm um atraso de 2 ns,
determine o caminho crítico de um somador de oito bits com propagação de “vai um”:
(a) assumindo que as conexões não têm atraso,
(b) assumindo que as conexões têm um atraso de l ns.
5.23 (a) Converta a FSM do medidor de distância baseado em laser, mostrada na Fig. 5.21. em um
registrador de estado e lógica combinacional.
(b) Assumindo que todas as portas têm um atraso de 2 ns, o contador crescente de 16 bits tem
um atraso de 5 ns e as conexões não têm atraso, determine o caminho crítico do medidor de
distância baseado em laser.
(c) Calcule a correspondente frequência máxima de relógio para o circuito.
Projeto em Nível de Transferência entre Registradores (RTL) 307

SEÇÃO 5.5: DESCRIÇÃO EM NÍVEL COMPORTAMENTAL: PASSANDO DE C PARA PORTAS


(OPCIONAL)

5.24 Converta o seguinte código, semelhante a C. que calcula o máximo divisor comum (MDC) de dois
números a e em uma máquina de estados de alto nível.
Entradas: byte a, byte b, bit comece
Saídas: byte mdc, bit terminado
MDC:
while(l) {
while(lcomece);
terminado = 0;
while ( a != b ) {
if ( a > b ) {
a = a - b;
}
else {
b = b - a;
)
)
mdc = a;
terminado = 1;

5.25 Use o método de projeto RTL da Tabela 5.1 para converter a máquina de estados de alto nível que
você projetou no Exercício 5.24 em um bloco de controle e um bloco operacional. Projete o bloco
operacional em nível de estrutura, mas projete o bloco de controle apenas até o nível de uma FSM.
5.26 Converta o seguinte código, semelhante a C. que calcula a diferença máxima entre dois números
quaisquer dentro de um arranjo A constituído por 256 valores de oito bits. em uma máquina de
estados de alto nível.
Entradas: byte a[256], bit comece
Saídas: byte difjnax, bit terminado
DIF_MAX:
while(l) {
while(!comece);
terminado = 0;
i = 0;
max = 0;
min = 255; // valor máximo de 8 bits
while( i < 256 ) {
if( a[i] < min ) {
min = a [i];
}
if( a[i] > max ) {
max = a [i];
}
i - i + 1;
)
difjnax = max - min;
terminado = 1;
308 Sistemas Digitais

5.27 Use o método de projeto RTL da Tabela 5.1 para converter a máquina de estados de alto nível
que você projetou no Exercício 5.26 em um bloco de controle e um bloco operacional. Projete o
bloco operacional em nível de estrutura, mas projete o bloco de controle apenas até o nível de uma
FSM.
5.28 Converta o seguinte código, semelhante a C. que calcula o numero de vezes que o valor b é encon­
trado dentro de um arranjo A constituído por 256 valores de oito bits, em uma máquina de estados
de alto nível.

Entradas: byte a [256], byte b, bit comece


Saídas: byte freq, bit terminado
FREQÜÊNCIA:
while(l) {
whi!e(!comece);
terminado = 0;
i = 0;
freq = 0;
while( i < 256 ) {
if( a[i] == b ) {
freq = freq + 1;
)

}
terminado = 1;

5.29 Use o método de projeto RTL da Tabela 5 .1 para converter a máquina de estados de alto nível
que você projetou no Exercício 5.28 em um bloco de controle e um bloco operacional. Projete
o bloco operacional em nível de estrutura, mas projete o bloco de controle apenas até o nível de
uma FSM.
5.30 Desenvolva um procedimento padrão para converter um laço do{ (w hile (em português faça{ }
enquanto) com a forma seguinte em uma máquina de estados de alto nível.

do {
// comandos do laço de do while
} while (cond);

5.31 *Converta o laço whi 1e(a ! = b), dentro da descrição em código C do Exercício 5.24, em um laço
do{ }whi 1e, como descrito no Exercício 5.30. Usando o procedimento padrão que você criou para
o laço do { }whi 1e no Exercício 5.30, converta o código C revisto em uma máquina de estados de
alto nível. Use o método de projeto RTL da Tabela 5.1 para converter a máquina de estados de alto
nível, que você projetou no problema anterior, em um bloco de controle e um bloco operacional.
Projete o bloco operacional em nível de estrutura, mas projete o bloco de controle apenas até o
nível de uma FSM.
5.32 Desenvolva um procedimento padrão para converter um laço fo r() (para) com a seguinte forma
em uma máquina de estados de alto nível.

for(i=início; i<cond; i++)


{
// comandos de for
}
Projeto em Nível de Transferência entre Registradores (RTL) 309

5.33 *Converta o laço whi 1e(a ! = b), dentro da descrição em código C do Exercício 5.24, em um laço
f o r ( ) , como descrito no Exercício 5.32. Usando o procedimento padrão que você criou para o
laço fo r() no Exercício 5.32, converta o código C revisto em uma máquina de estados de alto ní­
vel. Use o método de projeto RTL da Tabela 5.1 para converter a máquina de estados de alto nível,
que você projetou no problema anterior, em um bloco de controle e um bloco operacional. Projete
o bloco operacional em nível de estrutura, mas projete o bloco de controle apenas até o nível de
uma FSM.
5.34 ^Converta o laço whi 1e (i < 256). dentro da descrição em código C do Exercício 5.26, em um
laço f o r (). como descrito no Exercício 5.32. Usando o procedimento padrão que você criou para
o laço fo r() no Exercício 5.32. converta o código C revisto em uma máquina de estados de alto
nível. Use o método de projeto RTL da Tabela 5.1 para converter a máquina de estados de alto
nível, que você projetou no problema anterior, em um bloco de controle e um bloco operacional.
Projete o bloco operacional em nível de estrutura, mas projete o bloco de controle apenas até o
nível de uma FSM.
5.35 Compare os tempos necessários para executar a computação seguinte usando um circuito custo­
mizado versus um software. Assuma que uma porta tem um atraso de 1 ns, um microprocessador
executa uma instrução a cada 5 ns, e n=10 e m=5. Estimativas são aceitáveis; você não precisa
projetar o circuito, ou determinar exatamente quantas instruções de software serão executadas.
fo r (i = 0 ; i<n, i++) {
s = 0;
fo r (j = 0; j < m, j++) {
s = s + c [i]* x [i + j ] ;
}
y [i] = s;

SEÇÃO 5.6: COMPONENTES DE M EM Ó R IA

5.36 Calcule o número aproximado de células de armazenamento de bit de DRAM que podem ser co­
locadas em um IC com capacidade de 10 milhões de transistores.
5.37 Calcule o número aproximado de células de armazenamento de bit de SRAM que podem ser colo­
cadas em um IC com capacidade de 10 milhões de transistores.
5.38 Faça um resumo das diferenças principais entre memórias DRA.V1 e SRAM.
5.39 Desenhe a estrutura lógica interna completa de uma DRAM 4x2 (quatro palavras, dois bits cada),
rotulando claramente todos os componentes e as conexões internas.
5.40 Desenhe a estrutura lógica interna completa de uma SRAM 4x2 (quatro palavras, dois bits cada),
rotulando claramente todos os componentes e as conexões internas.
5.41 * Projete uma célula de memória SRAM com entrada de reset que. quando habilitada, irá colocar
0 nos conteúdos da célula de memória.

SEÇÃO: M EM Ó R IA APENAS DE LEITURA (ROM)

5.42 Faça um resumo das diferenças principais entre memórias EPROM e EEPROM.
5.43 Faça um resumo das diferenças principais entre memórias EEPROM e flash.

SEÇÃO 5.7: FILAS (FIFOS)

5.44 Em uma fila de oito palavras, mostre o estado interno da fila e forneça os valores dos dados lidos
para as seguintes sequências de escritas e leituras: (l) escrever A. B, C. D. E. (2) ler. (3) ler. (4)
escrever U, V, W, X. Y, (5) ler, (6) escrever Z, (7) ler, (8) ler, (9) ler.
310 Sistemas Digitais

5.45 Crie uma FSM que descreva o controlador de fila da Fig. 5.78. Preste atenção ã ativação correta
das saídas c h e ia e vazia.
5.46 Crie uma FSM que descreva o controlador de fila da Fig. 5.78, mas com um comportamento que
ignora escritas, quando a fila está cheia, e leituras, quando ela está vazia (colocando um 0 na
saída).

SEÇÃO 5.8: HIERARQUIA - U M CONCEITO-CHAVE DE PROJETO

5.47 Componha uma porta AND de 20 entradas a partir de portas AND de duas entradas.
5.48 Componha um multiplexador 16x I a partir de multiplexadores 2x l .
5.49 Componha um decodificador 4xl6 com habilitação a partir de decodificadores 2x4 com habilitação.
5.50 Componha uma RAM 1024x8 usando apenas RAMs 512x8.
5.51 Componha uma RAM 512x8 usando apenas RAMs 512x4.
5.52 Componha uma ROM 1024x8 usando apenas ROMs 5 12x4.
5.53 Componha uma ROM 2048x8 usando apenas ROMs 256x8.
5.54 Componha uma RAM 1024x 16 usando apenas RAMs 512x8.
5.55 Componha uma RAM 1024x 12 usando apenas RAMs 5 12x8 e 5 12x4.
5.56 Componha uma RAM 640x12 usando apenas RAMs 128x4.
5.57 *Escreva um programa que recebe um parâmetro N e automaticamente constrói uma porta AND
de N entradas a partir de portas AND de duas entradas. Seu programa precisa simplesmente in­
dicar quantas portas AND de duas entradas existem em cada nível. A partir disso, poderemos
facilmente determinar as conexões.
Projeto em Nível de Transferência entre Registradores (RTL) 311

► PERFIL DE PROJETISTA
Chi-Kai iniciou a uni­ Os chips sofisticados, como os usados em redes,
versidade para se for­ são bem custosos, exigindo um projeto cuidadoso. “Os
mar em engenharia, procedimentos de projeto de software e chips são fun­
mas terminou se for­ damentalmente diferentes. O software pode permitir-se
mando em ciência da ter falhas porque correções podem ser aplicadas. O de­
computação, devido a senvolvimento no silício é outra história. As despesas
seus interesses cres­ realizadas de uma vez só para fabricar um chip a partir
centes em algoritmos do silício estão na ordem de 500.000 dólares. Se houver
e redes. Depois de se alguma falha de grande extensão, você talvez precise
graduar, ele trabalhou gastar mais 500.000 dólares. Essa restrição significa
em uma “ start-up que a abordagem usada para fazer a verificação é bem
company" no Silicon Valley que fabricava chips para diferente - efetivamente: não pode haver falhas.” “Ao
redes de computadores. A sua primeira tarefa foi simu­ mesmo tempo, esses chips devem ser projetados rapida­
lar esses c/iips antes de serem fabricados. De dez anos mente para bater a concorrência do mercado, tornando
para cá, ele tem trabalhado com múltiplas gerações de o trabalho “extremamente desafiador e empolgante”.
dispositivos de rede que executam hufferingyscheduling Uma das maiores surpresas que Chi-Kai encon­
e swiíching com células ATM e pacotes IP. “Os chips trou em seu trabalho é a “incrível importância da boa
necessários para implementar dispositivos de rede são capacidade de comunicação". Chi-Kai trabalhou em
componentes complexos que devem funcionar todos equipes de dez a trinta pessoas, e alguns chips exi­
juntos, quase que perfeitamente, para suprir os blocos giram até mais de cem pessoas. “Engenheiros tecni­
construtivos das redes de telecomunicação e dados. camente excelentes são inúteis, a menos que saibam
Cada geração de dispositivos torna-se sucessivamente como colaborar com os outros, disseminando o seu
mais complexa.” conhecimento. Os chips estão ficando cada vez mais
Quando perguntado sobre quais habilidades são ne­ complexos - blocos individuais de código em um dado
cessárias para esse trabalho, Chi-Kai diz: “Mais e mais, chip têm a mesma complexidade de um chip completo
a amplitude do conjunto de habilidades de alguém é de apenas alguns poucos anos atrás. Para arquitetar,
mais importante do que a profundidade. Para ser um en­ projetar e implementar a lógica em hardware, é neces­
genheiro efetivo de chips. é necessário capacidade para sário ter habilidade para transmitir a complexidade.”
compreender a arquitetura dos chips (visão global), pro­ Além disso, Chi-Kai destaca que “exatamente como
jetar a lógica, verificar a lógica e trabalhar com o silício em qualquer entidade social, há política envolvida. Por
no laboratório. Todas essas partes do ciclo de projeto exemplo, as pessoas estão preocupadas com aspira­
interagem cada vez mais. Para ser verdadeiramente efe­ ções de promoção, ganhos financeiros e segurança no
tivo em uma dada área em particular, é necessário ter emprego. Mesmo assim, dentro desse contexto mais
também conhecimento prático das outras. Além disso, amplo, a equipe deve permanecer trabalhando em con­
cada área requer habilidades muito diferentes. Por junto para entregar um chip". Portanto, ao contrário
exemplo, a verificação requer uma boa capacitação em das concepções que muitas pessoas têm a respeito dos
programação de soft ware, ao passo que a fabricação do engenheiros, eles devem ter excelentes habilidades
chip a partir do silício requer que se saiba usar um ana­ pessoais, além de fortes habilidades técnicas. A enge­
lisador lógico - boas habilidades em hardware”. nharia é uma disciplina social.
Otimizações e Tradeoffs

► 6.1 INTRODUÇÃO
O s capítulos anteriores descreveram com o p ro jetar circuitos digitais usando técnicas diretas.
E ste capítulo descreverá com o p ro jetar circuitos melhores. Para os nossos propósitos, me­
lhor significa circuitos que são m enores, m ais rápidos ou que consom em m enos energia. No
m undo real, o projeto pode envolver critérios adicionais.

16 transistores 4 transistores
1 atraso de porta

F2 = wx
atraso (atrasos de portas)
(a) (b) (c)

Figura 6.1 Uma transform ação de circuito que melhora tanto o tamanho como o atraso é uma
o tim iza çã o : (a) circuito original, (b) circuito otimizado e (c) gráfico do tamanho e atraso de cada
circuito.

C o n sid ere o circu ito para a eq u a ç ã o de F l, m o strad o na Fig. 6.1 (a). O tam anho d o cir­
cuito, assumindo dois transistores por entrada de porta (e ig n o ran d o os in v erso res, p o r
sim p lic id ad e ), é 8 * 2 = 16 tran sisto res. O atraso do circu ito , q u e é o d o c a m in h o m ais
longo d esd e a entrada até a saída, é de dois atraso s de porta. P o d erem o s tra n sfo rm a r alge-
b ricam en te a eq u ação , o b ten d o a de F2, m o strad a na Fig. 6. l(b ). A eq u ação d e F2 rep re­
sen ta a m esm a fu n ção q ue F l, m as re q u e r ap en as q u a tro tra n sisto re s (em vez de 16) e o
atraso co rresp o n d e ao de ap en as u m a p orta (em vez de duas). A tran sfo rm ação m elhorou
tan to o tam an h o co m o o atraso, co n fo rm e m o strad o na Fig. 6.1 (c). Q u an d o fazem o s tran s­
form ações que m elhoram todos os critério s q u e nos interessam , estam o s re­
Um tradeo f f m elhora alizan d o um a otimização.
algum crité rio à s c u s ­ A gora, co n sid ere o circu ito de um a função diferen te, que im plem enta a
tas de outros crité rio s equação de G1 na Fig. 6.2(a). O tam anho do circuito (assum indo dois transis­
de n osso interesse.
tores por entrada de porta) é dc 14 transistores e o atraso do circuito é o co r­
Um a o tim iza çã o m e­
respondente a duas portas. Poderem os transform ar algebricam ente a equação,
lhora todos os c rité rio s
obtendo G2, m ostrada na Fig. 6.2(b), resultando um circuito que tem apenas 12
de nosso interesse, ou
m elhora alg un s deles transistores. E ntretanto, a redução de transistores deu-se às custas de um m aior
sem p io r a r os dem ais. atraso correspondente ao de três portas, com o m ostrado na Fig. 6.2(c). Qual
Otimizações e Tradeoffs 313

circuito é m elhor, o de G1 ou de G2? A resposta depende de qual critério é o m ais im portante


para nós, tam anho ou atraso. Q uando m elhoram os um critério às custas de outro, tam bém de
nosso interesse, estam os realizando um tradeoff.

G l = w x + wy + z G2 = w(x+y) + z atraso (atrasos de portas)

Figura 6.2 Uma transformação de circuito que melhora o tamanho mas piora o atraso é um tra­
deoff. (a) circuito original, (b) circuito transform ado e (c) gráfico do tam anho e atraso de cada
circuito.

Provavelm ente, você faz otim izações e tradeoffs todos os dias. Possivelm ente, você vai e
retorna do serviço, entre um a cid ad e e outra, usando um a estrad a e m particular. Você pode
estar interessado em dois critérios: tem po e segurança. O utros critérios podem não ser de seu
interesse, com o a paisagem ao longo d o cam inho. Q uando você escolhe um novo cam inho,
m elhorando tanto o tem po de viagem com o a segurança, você está fazendo um a otim ização
no seu deslocam ento até o trabalho. Se você escolher um a estrada que m elhora a segurança
às custas de um tem po de viagem aum entado, você estará fazendo um tradeoff (inteligente,
possivelm ente).
A Fig. 6.3(a) ilustra casos de o tim iza­
ções versus tradeoffs para três projetos ini­
ciais diferentes. O s critérios são o atraso e o
tam anho, sendo que ser m enor é o m elhor
em todos os critérios. O bviam ente, preferi­
m os otim izações e não tradeoffs , já que as
o tim izações m elhoram am bos os critério s
(ou pelo m enos m elhoram um critério sem
prejudicar o outro, com o m ostrado pelas se­
tas horizontal e vertical no lado esquerdo da Fi gura 6.3 (a) Ot im izações versus ( b) tradeoffs.
figura). E n tretan to , nem sem pre podem os
m elhorar um critério sem prejudicar um o u ­
tro. P or exem plo, se um projetista desejar m elhorar o desem penho do consum o de com bus­
tível de um autom óvel, é possível que ele terá de tornar o carro m enor - um tradeoff entre os
critérios de eficiência para o consum o de com bustível e o conforto.
Para os projetistas de sistem as digitais, alguns critérios gerais com um ente de interesse
são:

• Desempenho : um a m edida do tem po de execução de um a com putação pelo sistem a.


• Tamanho : um a m edida do núm ero de transistores, ou da área de silício, de um sistem a
digital.

• Potência consumida : um a m edida da energia consum ida em um segundo por um sistem a,


diretam ente relacionada com o calo r gerado pelo sistem a e a energia que é consum ida das
baterias pelas com putações.

H á dúzias de outros critérios.


314 Sistemas Digitais

É possível realizar otim izações e tradeoffs em quase todas as etapas do projeto digital.
Este capítulo descreve algum as otim izações e tradeoffs de alguns critérios com uns, em vários
estágios d o projeto digital.

6.2 OTIMIZAÇÕES E TRADEOFFS EM LÓGICA COMBINACIONAL


N o C apítulo 2, descrevem os com o projetar lógica com binacional, ou seja, com o converter um
com portam ento com binacional desejado em um circuito com portas. Há m étodos de otim iza­
ção e de tradeoff que poderem os aplicar para m elhorar esses circuitos.

Otimização do tamanho da lógica usando métodos algébricos


A im plem entação de um a função booleana usando apenas dois níveis de portas - um nível de
portas A N D seguido de um nível de porta O R - geralm ente resulta em um circuito que tem
atraso m ínim o. L em bre-se do C apítulo 2 que qualquer equação booleana pode ser escrita na
form a de um a som a de produtos, sim plesm ente expandindo-a por m eio de m ultiplicações -
por exem plo, xy(w+z) = xyw + xyz. A ssim , qualquer função booleana pode ser im plem en­
tada usando-se dois níveis de portas. A sua equação é sim plesm ente convertida em um a som a
de produtos e, em seguida, portas A N D são usadas para os produtos, seguindo-se um a porta
O R para a som a.
U m a otim ização com um é a minimização do número de transistores que
N a s décadas de 1970 são usados na im plem entação do circuito lógico de dois níveis dc um a função
e 1980, quando os booleana. E ssa otim ização é tradicionalm ente cham ada otimização da lógica
transistores eram caros de dois níveis , ou algum as vezes minimização da lógica de dois níveis , a qual
(centavos de d ó la r será referida com o otimização de tamanho da lógica de dois níveis , para d is­
cada, p o r exem plo), a tinguir essa otim ização das otim izações cada vez m ais com uns de desempenho
m in im iza çã o s ig n ifi­
e potência , além de outras possíveis.
ca va m in im iza çã o de
Para otim izar o tam anho, precisam os de um m étodo para determ inar o nú­
tamanho, a q u a l d o m i­
m ero de transistores de um circuito dado. U sarem os um m étodo sim ples para
nava o p rojeto digital.
O s atuais transistores determ inar o núm ero de transistores:
de b a ixo custo (0,0001 A ssim , um a porta lógica de três entradas (seja um a A N D , O R, N A N D ou
centavos de d ó la r
N O R) irá requerer 3 * 2 = 6 transistores. O s circuitos que estão dentro das
cada, p o r exem plo)
portas lógicas m ostradas na Seção 2.4 podem tornar claro porque estam os
tornam as otim izações
assum indo dois transistores por entrada de porta.
de outros c rité rio s m ais
ou igualm ente crítica s. P or sim plicidade, irem os ig n o rar os invcrsores qu an d o d eterm inarm os o
núm ero de transistores.

O problem a da otim ização do tam anho da lógica de dois níveis pode ser visto algebri-
camente com o sendo um problem a de minimização do número de termos e literais de uma
equação booleana, a qual está na forma de uma soma de produtos. A razão pela qual pode­
m os exam inar algebricam ente o problem a é que, lem brando a Seção 2.4. podem os converter
diretam ente um a equação booleana, na form a de um a so m a de produtos, em um circuito,
usando para isso um nível com portas A N D seguido de outro com um a porta OR. Por exem ­
plo, a equação F = wxy + wxy' da Fig. 6.1 (a) tem seis literais, w, x. y, w, x e y 1, e dois term os,
wxy e wxy', totalizando 6 + 2 = 8 literais e term os. Em um circuito, cada literal e cada term o
convertem -se em um a entrada de porta aproxim adam ente, com o m ostrado na Fig. 6.1 (a) - as
literais convertem -se em entradas de portas A N D e os term os, em entradas de porta O R. A s­
sim , o circuito tem 3 + 3 + 2 = 8 entradas de porta. Com dois transistores por entrada de porta,
o circuito tem 8 * 2 = 16 transistores. O núm ero de term os e literais p ode ser m inim izado
Otimizações e Tradeoffs 315

algebricamente: F = wxy + wxy' = w x(y+y‘ ) = wx, a qual tem apenas duas literais, w e x ,
resultando 2 entradas de porta, ou 2 * 2 = 4 transistores, com o m ostrado na Fig. 6.1 (b). (N ote
que um a equação com um único term o não precisa de um a porta O R.)

► EXEMPLO 6.1 Otimização do tamanho de uma lógica de dois níveis usando métodos algébricos
Minimize o número de termos e literais na implementação de dois níveis da equação:
F = xyz + xyz' + x ' y ' z ' + x ' y ' z
Vamos fazer a minimização usando transformações algébricas:
F = xy(z + z ') + x ' y ' (z + z ' )
F = xy*l + x ' y ' * l
F = xy + x ' y '
Não parece haver mais minimizações que possamos realizar. Assim, reduzimos o circuito de
12 literais e 4 termos (significando 12 + 4 = 16 entradas de porta, ou 32 transistores) para apenas
4 literais e 2 termos (significando 4 + 2 = 6 entradas de porta, ou 12 transistores). M

O exem plo anterior m ostrou a transfo rm ação algébrica m ais com um que é usada para
sim plificar um a equação booleana, convertendo-a à form a de som a de produtos. Em geral,
essa transform ação pode ser escrita com o:

ab + a b ' = a (b + b ') = a * l = a

V am os ch am ar essa transform ação de combinação de termos para eliminar uma va­


riável. M ais formal m ente, essa transform ação é conhecida com o teorema da unificação. No
exem plo anterior, aplicam os duas vezes essa transform ação, um a vez com xy sendo a, e z
sendo b, e um a segunda vez com x ' y 1 sendo a, e z sendo b.
A lgum as vezes precisam os duplicar term os para aum entar as possibilidades de com biná-
los e elim inar um a variável, com o está ilustrado no próxim o exem plo.

► EXEMPLO 6.2 Reutilização de um termo durante uma otimização do tamanho de uma lógica de dois níveis
Minimize o número de termos e literais na implementação de dois níveis da equação:
F = x ' y ' z ' + x ' y ' z + x' yz
Voce poderá notar que há duas possibilidades para se com binar termos e elim inar uma va­
riável:
I: x ' y ' z ' + x ' y ' z = x 1y '
2: x ' y ' z + x' yz = x ' z
Observe que o termo x ' y ' z aparece em ambas os casos, mas ele aparece apenas uma vez na
equação original. Portanto, iremos primeiro duplicar o termo na equação original (essa duplicação
não altera a função, porque a = a + a) de modo que poderemos usar duas vezes o termo quando
formos combiná-los para eliminar uma variável, como segue:
F = x ' y ' z ' + x ' y ' z + x' yz
F = x ' y ' z ' + x ' y ' z + x ' y ' z + x' yz
F = x ' y ' ( z+z' ) + x ' z ( y' +y)
F = x' y' + x' z ◄

D epois de com binar term os para el i mi nar um a variável, o term o resultante tam bém po­
derá ser com binado com outros para elim inar um a outra variável, com o m ostrado no exem plo
seguinte.
316 Sistemas Digitais

► EXEMPLO 6.3 Combinação repetida de termos para elim inar variáveis


M inim ize o número de termos e literais na implementação de dois níveis da equação:
G = x y ' z ' + xy' z + xyz + xyz'
Podem os com binar os dois primeiros term os para elim inar uma variável e também os dois
últimos:
G = xy' (z' +z) + xy(z+z' )
G = xy' + xy
Podemos combinar os dois termos restantes para elim inar uma variável:
G = xy' + xy
G = x(y' +y)
G= x ◄

N os exem plos anteriores, com o foi possível “ ver” as oportunidades para com binar term os
e elim inar um a variável? A contece que as equações originais dos exem plos estavam escritas
de tal m odo que ficou fácil ver as p o ssib ilid ad es de co m b in ação - os term os que podiam
ser com binados estavam lado a lado. Em vez disso, suponha que a equação do E xem plo 6 . 1
tivesse sido escrita com o:

F = x ' y ' z + xyz + xyz' + x ' y ' z '

E ssa é a m esm a função, m as os term os aprecem cm um a ordem diferente. Podem os ver


que os dois term os centrais podem com binados:
F = x ' y ' z + xyz + x y z ' + x ' y ' z 1
F = x ' y ' z + xy(z+z' ) + x ' y ' z '
F = x ' y ' z + xy + x ' y ' z '
N esse caso, entretanto, é possível que deixássem os de ver que os term os à esq u erd a e à
direita poderiam ser com binados. Portanto, poderíam os parar a m inim ização, pensando que
já havíam os obtido um a equação totalm ente m inim izada.
Há um m étodo visual que nos ajuda a ver as oportunidades para com binarm os term os,
elim inando variáveis, um m étodo que descreverem os agora.

Um método visual para a otimização do tamanho de uma lógica de dois níveis - mapas K
O s mapas de Karnaiigh , ou sim plesm ente mapas K , constituem um m étodo visual cujo ob­
jetivo é ajudar as pessoas a m inim izar algebricam ente as equações booleanas que têm poucas
(duas a quatro) variáveis. N a verdade, na prática de projeto, eles não são m ais usados com u-
m ente. N o entanto, constituem um m eio m uito eficien te para se compreender os m étodos
básicos de otim ização que fundam entam as ferram entas autom atizadas atuais. Um m apa K
é essencialm ente uma representação gráfica de um a tabela-verdade. Isso significa que um
m apa K é m ais um a m aneira de se representar um a função (as outras são um a equação, um a
tabela-verdade e um circuito). A idéia subjacente a um m apa K é o posicionam ento gráfico
de m interm os adjacentes um do outro, que são diferentes entre si em apenas um a variável, de
m odo que poderem os real m ente “ver” a oportunidade de com binarm os term os para elim inar
um a variável.

Mapas K de três variáveis


A Fig. 6.4 m ostra um m apa K da equação:

F = x ' y ' z + xyz + x y z ' + x ' y ' z '

q ue é a eq u ação do E x em p lo 6.1, m as com os term o s d isp o sto s em um a o rd em diferente.


O m apa tem o ito célu las, um a p a ra cad a c o m b in a ç ã o possível de v alo res d as variáveis.
Otimizações e Tradeoffs 317

V am os ex am in ar as célu las da linha superior. A célula c o rre s p o n d e o b s e rv e q u e


a xyz=000 n â o e s tá e m
à e sq u e rd a no to p o c o rre sp o n d e a x y z =000, sig n ifi­ o rd e m
cando x 'y ' z 1. A próxim a célu la à d ireita co rresp o n d e
a xyz=001, sig n ifican d o x ' y ' z . A célu la se g u in te à 11 10
d ire ita c o rre sp o n d e a xyz= 011, sig n ific a n d o x ' y z . T
0 1 1 0 0
Final m ente, a célu la m ais à d ire ita em cim a c o rre s­
pon d e a xyz=010, sig n ific a n d o x ' y z ' . O b serv e q u e 0 1
( °
essas célu las da fila su p e rio r não estão o rd en ad as de 'Á 1

form a b in ária crescente. E m ve/, disso, a o rd em é 000.


tr a te a s c o lu n a s d a e s q u e r d a e
0 0 1 ,011 e 010 ao invés de 000, 0 0 1 ,0 1 0 e 01 1. A o r­ d a d ir e it a c o m o a d ja c e n te s ta m b é m
dem é tal q ue células adjacentes cliferem entre si em
exatamente uma variável. P o r exem plo, as célu las de Figura 6.4 Mapa K de três variáveis.
x ' y ' z (001) e x ' y z (011) são ad jacen tes e são d ife re n te s en tre si em apenas
Em um m apa K . as
um a variável, isto é, y. De m o d o sem elh an te, as c é lu la s d e x 1y ' z ' e x y ' z '
cé lu la s adjacentes sào
são ad ja c e n tes e d ife re m en tre si ap en as na variável x. A ssu m e-se tam bém
diferentes entre s i em
q ue o m apa tem suas colunas esquerda e direita adjacentes , de m odo q u e a
exatamente uma va ­
riável. célu la bem à d ireita em cim a (010) é ad ja c e n te à c é lu la bem à e sq u e rd a na
m esm a lin h a (000) - o b serv e q u e essas célu las d iferem tam b ém en tre si em
apenas um a variável. A d jacen te sig n ifica e sta r co n tíg u o na horizo n tal ou na vertical, m as
não diagonalmente , p o rq u e as célu las d ia g o n a is são d ife re n te s en tre si em m ais de um a
variável. A lém d isso , as célu las de um a co lu n a tam b ém d iferem en tre si em e x a ta m e n te
um a variável.
Podem os representar um a função booleana com o um m apa K colocando l s nas células
correspondentes aos m interinos da função. A ssim , para a equação F anterior, colocam os um 1
nas células correspondentes aos m interm os x ' y ' z , xyz, xyz' e x ' y ' z ' , co m o m ostrado na
Fig. 6.4. C olocam os 0s nas células restantes. O bserve que um m apa K é sim plesm ente m ais
um a form a de representação de um a tabela-verdade. Em vez de m ostrar a saída para cada
com binação de entradas usando um a tabela, um m apa K usa um a representação gráfica. Por­
tanto, um m apa K é m ais um a form a de se representar um a função booleana e, de fato, é um a
outra representação padrão.
O s m apas K perm item - A utilidade de um m apa K na m inim ização de tam anho é que, com o o m apa
n os ver as o p o rtu n i­ é construído de m odo que células adjacentes diferem entre si em exatam ente
dades de co m b in a r um a variável, en tão sabem os que dois l s adjacentes em um mapa K indicam
term os p a ra e lim in a r que podemos combinar os dois mintermos para eliminar uma variável. Em
uma variável. outras palavras, um m apa K perm ite-nos ver facilm ente quando podem os com ­
binar dois term os c elim inar um a variável. Indicam os essa com binação d e se ­
nhando um círculo que circunda os dois l s adjacentes e, em seguida, m ostram os o term o re­
sultante após rem over a variável que é diferente nas duas células adjacentes. Isso será ilus­
trado no próxim o exem plo.

► EXEMPLO 6.4 Otimização do tamanho de uma lógica de dois níveis


usando métodos algébricos
M inimize o número de literais e termos na im plem entação de
dois níveis da equação:
F = xyz + xyz' + x ' y ' z ' + x ' y ' z
Observe que essa é a mesma equação do Exemplo 6.1. Para
representar a função, criamos um mapa K, mostrado na Fig. 6.5.
Vemos ls adjacentes na região superior esquerda do mapa. A s­ Figura 6.5 M inim ização de
sim, iremos envolver com um círculo esses ls para obter o termo uma função de três variáveis
x ' y 1 - em outras palavras, o círculo é uma notação abreviada usando um mapa K.
para x ' y ' z ' + x ' y ' z = x ' y ' . D e modo sem elhante, vemos
318 Sistemas Digitais

ls adjacentes na região direita interior do mapa, de modo que podemos desenhar um círculo que
representa xyz + x y z' = xy. Portanto, F = x ' y ' + xy. ◄

L e m b re -se d o E x em p lo 6.3 q u e, a lg u m a s v ezes, os term o s p o d em se r c o m b in a d o s


re p e tid a s v ezes para e lim in a r variáveis, resu ltan d o um n ú m ero ain d a m e n o r d e term o s e
literais. P o d em o s refazer aq u e le ex em p lo u san d o um a o rd em d ife re n te para as sim p lific a ­
çõ es co m o segue:
G = x y ' z ' + x y ' z + xyz + xyz'
G = x ( y ' z ' + y ' z + yz + y z ' )
G = x ( y ' ( z ' + z ) + y ( z + z ' ))
G = x ( y ‘+y)
G = x
N a segunda linha, observe que se fez um a operação A N D de x com um a O R de todas as
com binações possíveis das variáveis y e z. O bviam ente, para quaisquer valores de y e z, um a
dessas com binações de y e z será verdadeira. D esse m odo, a expressão dentro dos parênteses
sem pre lerá valor 1, com o dem onstram os algebricam ente nas linhas finais anteriores.
O s m ap a K tam b ém aju d am -n o s a ver g raficam en te G yz
e ss a s itu a ç ã o . A lém d e n o s a ju d a r a v er q u a n d o
X 00 01 11 10
p o d em o s c o m b in a r dois m in term o s para e lim in a r um a
variáv el, os m ap as K fo rn ecem um a m a n e ira g rá fic a 0 0 0 0 0
d e v e rm o s q u a n d o p o d e m o s c o m b in a r q u a tr o
m in term o s para e lim in a r d u as variáveis. S im p lesm en te
p re c isa m o s p ro c u ra r q u a tro c é lu la s a d ja c e n te s , q u e
1 1 1
X
fo rm am um retân g u lo ou um q u a d ra d o (m as não um a
Figura 6.6 Quatro ls adjacentes.
fo rm a em “L ” ). E ssas q u atro célu las terão um a variável
q u e se rá a m e sm a e to d as as c o m b in a ç õ e s p o ssív eis
das o u tras d u as variáveis. A Fig. 6.6 m o stra a fu n ção a n te rio r G co m o um m apa K de três
v ariáv eis. N a c o lu n a in ferio r, o m ap a tem q u a tro l s a d ja c e n te s. O s q u a tro m in te rm o s
c o rre sp o n d en te s a e sse s l s são x y ' z 1, x y ' z, xyz e x y z ' - o b serv e q u e x é o m esm o em
to d o s os m in term o s, ao passo q ue todas as q u a tro c o m b in a ç õ e s de y e z ap arecem neles.
D e s e n h a m o s um c írc u lo e n v o lv e n d o o s q u a tro l s in f e rio r e s p a ra re p re s e n ta r a
sim p lific a ç ã o d e G m o stra d a nas e q u a ç õ e s a n te rio re s. O re su lta d o é G = x. Em o u tras
p a la v ra s, o “ c írc u lo ” é u m a n o ta ç ã o a b re v ia d a p a ra a s im p lific a ç ã o a lg é b ric a d e G
m o strad a nas cin co e q u a ç õ e s acim a.
O b serv e q u e p o d e ría m o s le r dese- G yz
Sempre desenhe os nhado círculos envolvendo os dois l s da
maiores círculos possi- . , , X 00 01 11 10
. . . esquerda e os dois ls da direita do m apa
veis para cobrir os Is
K, com o m ostrado na Fig. 6.7, resultando
de um mapa K. 0 0 0 0
em G = x y ' + xy. C laram ente, G pode ser
sim plificada novam ente obtendo-se x ( y ' + y ) = x . Desse 1 1
0 X 1

modo, para se m inim izar ao m áxim o a equação, deve-se xy xy


sem pre desenhar o m aior círculo possível.
Figura 6.7 Círculos não ótimos.
C om o outro exem plo de quatro ls adjacentes, consi­
dere a equação:

H = x ' y ' z + x ' y z + x y ' z + xyz

A Fig. 6.8 m ostra o m apa K da função da equação. Q uando se faz um círculo para envol­
ver os quatro ls adjacentes, obtém -se a equação m inim izada, H = z.
Otimizações e Tradeoffs 319

A lgum as vezes, precisam os envolver o m esm o H yz


1 duas vezes. Isso é perm itido. Por exem plo, co n ­
sidere a equação:
X
\ 00 01 11 10

I = x ' y ' z + xy' z' + xy'z


0 0 A 0

+ xyz + xyz'

A Fig. 6.9 m o stra o m apa K d a função d essa


1 0
y 0

Figura 6.8 Quatro ls adjacentes.


eq u ação . P o d em o s en v o lv er os q u a tro l s in fe­
rio res p a ra re d u z ir e ss e s q u a tro m in te rm o s a yz yz
ap en as x. N o e n ta n to , isso d e ix a so b ra r um 1
00 01 11 10
iso la d o n a lin h a de cim a, q u e c o rre sp o n d e ao
7 \
m in term o x ' y ' z . T em os q ue i ncl uir esse m in- o 0 1 0 0

term o na eq u ação m in im izad a p o rq u e, se o d e s­


c a rta rm o s, e sta re m o s m o d ific a n d o a fu n ção . 1 1
X__z_
P o d eríam o s in clu ir o p ró p rio m interm o, d an d o
I = x + x 1y ' z. E n tretan to , essa ex p ressão não Figura 6.9 Envolvendo um 1 duas vezes.
está m in im izad a, p o rq u e a eq u ação original in-
clu ía o m interm o x y ' z e x y ' z + x ‘y ' z = ( x + x ' ) y ' z = y ' z . N o m apa K, envolvem os esse
1 q ue está na linha de cim a e tam bém o 1 que está na célu la ab aix o . A fu n ção m in im izad a
é a s s im I = x + y ' z .
É perm itido incluir um 1 duas vezes - isso não altera a função. Pense a
/:p erm itid o c o b rir
respeito disso: se duplicarm os um m interm o, a função não se m odificará (não
um I m ais de uma vez
p a ra m in im iza r term os esqueça, a = a + a), e essa duplicação pode perm itir um a otim ização maior.
m últiplos. Em outras palavras:
I = x ' y ' z + x y ' z ' + x y ' z + xyz + xyz'
I = x ' y ' z + x y ' z + x y ' z ' + x y ' z + xyz + xyz'
I = ( x ' y ' z + x y ' z ) + ( x y ' z 1 + x y ' z + xyz + x y z ' )
I = ( y ' z ) + (x)
D uplicam os um m interm o, resultando em um a m aior otim ização.
Por outro lado, não há razão para envolver ls m ais de um a vez se os l s já estão incluídos
em term os m inim izados. Por exem plo, o m apa K da equação:

J = x ' y ' z ' + x ' y ' z + x y ' z + xyz

ap arece na Fig. 6.10. N ão há razão para d ese- yz


nhar o círc u lo d o qual resu lta o term o y ' z . Os
outros d o is círculos cobrem todos os ls , sig n ifi­
cando que os term os d esses dois círcu lo s fazem 0
a equação fo rn ecer 1 para todas as com bin açõ es
1
de en trad a requeridas. Do terceiro círculo resulta
apenas um term o ex tra sem q u e a
Para m in im iza r o n ú ­ Figura 6.10 Um termo desnecessário.
eq u ação seja alterada. A ssim , não
m ero de termos ,dese­
querem os apenas d esen h ar o s m aio res círcu lo s possíveis para co b rir todos os
nhe o m ínim o p o ssív e l
ls , m as querem os tam bém d esen h ar o mínimo possível de círculos.
de círcu lo s.
M encionam os anteriorm ente que as colunas esquerda e direita de um m apa
K são adjacentes. A ssim , podem os desenhar círculos que cobrem os lados de um m apa K. Por
exem plo, o m apa K da equação:

K = x y ' z ' + x y z' + x ' y ' z


320 Sistemas Digitais

aparece na Fig. 6.11. A s duas células com ls nos


cantos são adjacentes, já que os lados esq u erd o e
direito de um m apa são adjacentes e, portanto, p o ­
dem os d esenhar um círculo que cobre am bas, re­
sultando o term o x z '.
Algumas vezes um 1 não tem ls adjacentes. Nesse
caso, simplesmente desenhamos um círculo em torno
do 1 isolado, resultando um termo que é um min-
termo. O termo x ' y ' z da Fig. 6.11 é um exemplo.
Em um m apa K de três variáveis, um círculo
deve c o n ter um a célu la isolada ou d uas, q u atro
ou oito células adjacentes. U m círculo não pode
conter som ente três, cinco, seis ou sete células. A
razão é que o círculo deve representar transform a­
ções algébricas que elim inam variáveis, as quais
aparecem em todas com binações possíveis. Desse
00 01 11 10
m odo, essas variáveis podem ser fatoradas e co m ­
binadas resultando um 1. Três células adjacentes 0 0 0 0

não contêm todas as com binações de duas variá­


veis - está faltando um a. A ssim , o círculo da Fig.
6.12 não é válido já que ele corresponde a x y 1z ' +
U 1
1 ; 0

x y ' z + xyz, a qual não pode ser sim plificada até Figura 6.12 Círculo inválido.
obter-se um único term o. Para cobrir essa função,
precisaríam os de dois círculos, um ao redor do par
esquerdo de ls e o outro ao redor do par direito.
Se todas as células de um m apa K tivessem ls,
com o a função E na Fig. 6.13, então teríam os oito ls
adjacentes. Podem os desenhar um círculo ao redor
dessas oito células. C om o o círculo representa uma
operação OR de todas as com binações possíveis das
três variáveis da função, e com o obviam ente uma
dessas com binações será verdadeira para qualquer
conjunto de valores de entrada, a equação seria m i­
nim izada obtendo-se sim plesm ente E = 1.
S em pre que estiv er em d ú v id a se um círculo
é válido, lem bre-se sim plesm ente que o círculo é Figura 6.13 Oito ls adjacentes.
um a form a abreviada de se representar as transfor­
m ações algébricas que com binam term os para eli­
m inar variáveis. Um círculo deve represen tar um
conjunto de term os que contém todas as com bina­
ções possíveis de algum as variáveis, ao passo que
outras variáveis são iguais em todos os term os. As
variáveis que se m odificam podem ser elim inadas,
resultando um term o único sem essas variáveis.

Mapas K de quatro variáveis


O s m apas K tam bém são úteis para m inim izar fun­
ções booleanas de quatro variáveis. A Fig. 6.14
m ostra um m apa K de quatro variáveis para a se ­
guinte função:

F = w1x y 1z 1 + w' xy' z + w' x' yz + w'xyz


+ wxyz + wx'yz
Otimizações e Tradeoffs 321

N ovam ente, o bserve q ue as célu las ad ja c e n tes de c ad a p ar são d ife re n te s en tre si em


ex atam en te um a variável. O s lados e sq u e rd o e d ireito são co n sid e ra d o s ad ja c e n tes e as
linhas superior e in ferio r d o m apa tam bém são ad jacen tes - note que as célu las da esq u erd a
e da direita diferem em apenas um a variável e o m esm o ocorre com as células superiores c
inferiores.
C obrim os os l s do m apa com os dois círculos m ostrados na Fig. 6.14, resultando os ter­
m os w' x y ' e yz, de m odo que a equação m inim izada é F = w1x y ' + yz.
Um círculo que cobre oito células adjacentes re­
G yz
presenta todas as com binações de três variáveis, de
wx
m odo que a m anipulação algébrica elim inará todas 00 01 11 10
as três variáveis e produzirá um term o. Por exem ­ 00 0 1 \ 0
/ í
plo, a função da Fig. 6.15 é sim plificada obtendo-se
um único term o, z, com o está m ostrado. 01 0 1 1 0
Em um m apa K de quatro variáveis, os tam a­
nhos válidos de círculo são um a, duas, quatro, oito 11 0 1 1 0
c d ezesseis célu las adjacentes. Um círculo envol­
vendo todas as dezesseis células fornece um a fun­
ção que é igual a 1.
10 0
À 0

Mapas K maiores Figura 6.15 Oito células adjacentes.


M apas K de cinco e seis variáveis foram propostos,
m as são m uito com plicados para serem usados de
form a efetiva. A ssim sendo, não irem os discuti-los
m ais detalhadam ente. 0
Tam bém há m apas K de du as variáveis, com o
está m ostrado na Fig. 6.16. E ntretanto, não são par­ 1
ticularm ente úteis, porque é m uito fácil se m inim i­
zar algebricam ente as funções de duas variáveis. Figura 6.16 Mapa K de duas variáveis.

Usando um mapa K
D ada qualquer função booleana de três ou quatro variáveis, o seguinte m étodo resum e o uso
de um m apa K para m inim izar a função:

1. Converta a função da equação para a form a de um a som a de m interm os.

2. Coloque um 1 na célula apropriada do m apa K para cada m interm o.

3. Cubra todos os l s desenhando um núm ero mínimo de maiores círcu lo s possíveis,


de m odo que cad a 1 seja incluído ao m enos um a vez, e escreva o term o co rresp o n ­
dente.

4 . Faça OR de todos os term os resultantes para criar a função m inim izada.


O prim eiro passo, conversão para a form a de um a som a de m interm os, pode ser feito
algebricam ente, com o no C apítulo 2. A lternativam ente, m uitas pessoas acham m ais fácil
com binar os passos 1 e 2, convertendo a função da equação para a form a de um a som a de
produtos (em que cada term o não é necessariam ente um m interm o), preenchendo então com
ls as células correspondentes a cada term o no m apa K. Por exem plo, considere a função de
quatro variáveis:

F = w 'xz + yz + w 'x y 'z '

O term o w' xz corresponde às duas células fracam ente som breadas da Fig. 6.17. Portanto,
colocam os ls nessas células. O term o yz corresponde à coluna inteira que está fortem ente
som breada na figura. O term o w 'x y 'z 1 corresponde à célula, isolada e não som breada da
esquerda, que contém um 1.
322 Sistemas Digitais

A m in im ização p ro sseg u irá usando círcu lo s F yz

para cobrir os ls e fazendo um a operação O R de wx

todos os term os. A função da Fig. 6 .1 7 c idêntica


à da Fig. 6.14, para a qual obtivem os a equação 00 0 \o \ “11 0
m inim izada: F = w 'x y ' + yz.
N 01 r 1 1 1/ 0

► EXEMPLO 6.5 Otimização do tamanho de uma lógica de dois * 11 0 0 1 0


níveis usando um mapa K de três variáveis
10 0 0 0
Minimize a seguinte equação:
6 = a + a 'b 'c ' + b * ( c ' + b c ') Figura 6.17 Os lermos w1xz e yz.
Vamos com eçar convertendo a equação em uma
soma de produtos:
G = a + a 'b 'c ' + b c' + bc'
bc
C olocam os os ls correspondentes aos term os
em um m apa K de três variáveis, com o na Fig. \ 00 01 11 10
6.18. A linha inferior corresponde ao term o a, a
0 1 0 0 1
célula de cim a à esquerda, ao term o a ' b ' c ' , e a
coluna da direita, ao term o b c ' (que aparece duas 1 1 1 1 1
vezes na equação).
Em seguida, cobrimos os ls usando os dois círcu­ Figura 6.18 Termos no mapa K.
los mostrados na Fig. 6.19. Uma operação OR com
os termos resultantes produz a equação minimizada
G = a + c 1. ◄

► EXEMPLO 6.6 Otimização do tamanho de uma lógica de dois


níveis usando um mapa K de quatro variáveis
Minimize a seguinte equação:
H = a'b'(cd' + c 'd ') + ab'c'd' + ab 'cd '
+ a ' bd + a 1b c d '
Convertendo para a forma de soma de produtos,
obtém-se:
H = a 'b 1c d ' + a 'b 'c 'd ' + a b 'c 'd ' + Figura 6.19 Uma cobertura.
ab'cd' + a 'bd + a 1b c d '
Preenchem os com os l s correspondentes aos
term os, resultando o m apa K m ostrado na Fig. cd

6.20. O term o a 'b d corresponde às duas células ab


00 \ 01 11 / 10
cujos ls estão em itálico. Todos os dem ais termos
são m interm os e, portanto, correspondem a células
isoladas.
00
37 0 0
^3 b 'd '

C obrim os os ls usando círcu lo s com o está


m ostrado na figura. Um “círcu lo ” cobre os q u a ­
01 0 ' 1
V (-) a'bc

11 0 0 0 0 a'bd
tro cantos, resultando o term o b 'd '. Esse círculo
pode parecer estranho, m as lem bre-se que as cé­
lulas superiores e inferiores são adjacentes e que
as células à esquerda e à direita tam bém o são. Há
10
3^ 0 0
£
um outro círculo no term o a 'b d e um terceiro no
term o a ' bc. A equação m inim izada de dois níveis Figura 6.20 Exemplo de mapa K.
é, portanto:
H = b ' d ' + a 'b c + a ' bd ◄
Otimizações e Tradeoffs 323

O bserve o 1 em negrito na Fig. 6.20. C obrim os esse 1 desenhando um círculo que incluiu
o 1 à esquerda, resultando o term o a 'b c . A lternativam ente, poderíam os ter desen h ad o um
círculo que incluísse esse 1 em negrito, obtendo a equação m inim izada:

H = b ' d ' + a' c d' + a' bd

E ssa equação representa não apenas a m esm a função, m as requer tam bém o m esm o nú­
m ero de transistores que a equação anterior. Portanto, vem os que pode haver m uitas equações
m inim izadas, que são igualm ente boas.

Combinações don't care* de entrada


A lgum as vezes, tem os garantia de que certas com binações de entrada em um a função boole-
ana nunca poderão ocorrer. Para essas com binações, não precisarem os nos im portar se a saída
da função será 1 ou 0, porque, na realidade, a função nunca verá esses valores na entrada - as
saídas correspondentes a essas entradas sim plesm ente não interessam , são irrelevantes {don 7
care). C om o exem plo intuitivo, se você se tornasse o soberano do m undo, você viveria em
um palácio ou em um castelo? Não im porta a sua resposta (a saída), porque a entrada (você
tornar-se soberano do m undo) sim plesm ente não acontecerá.
De m odo a obter a m elhor m inim ização possível, portanto, quando for dada um a co m b i­
nação irrelevante de entrada, poderem os escolher se a saída será 1 ou 0 para cada um a dessas
com binações. C om o as saídas correspondentes a essas co m binações don't care de en trad a
não im portam , poderem os escolher qualquer saída que seja capaz de produzir a m elhor otim i­
zação possível, já que elas sim plesm ente não irão ocorrer.
A lgebricam ente, podem os usar lerm os don 7 care introduzindo-os em um a equação d u ­
rante a m inim ização algébrica, criando um a situação que perm itirá com binar term os e elim i­
nar um a variável. C om o exem plo sim ples, considere a função F = x y 1z \ para a qual tem os
garantia, por algum a razão, de que os term os x *y1z 1 e x y 1z nunca serão 1. N otam os que, se
acrescentarm os o prim eiro term o don 7 care à equação, resultará x y 'z ' + x ' y ' z ' = (x+ x1)
y 1z ' = y ' z ' . A ssim , a introdução do term o don 7 care x ' y ' z ' na equação propicia um bene­
fício para a otim ização. E ntretanto, se introduzirm os o segundo term o don 7 care, não terem os
esse benefício. Portanto, optam os por não introduzir esse termo.
Em um m apa K, as com binações don't care
F yz yV
de entrada podem ser m anipuladas facilm ente
X
colocando-se um X em cada m interm odow 7 care \ oo / oi 01 n 10
do m apa. N ão temos que co b rir os Xs com c ír­ X 0 0 0
culos, m as podemos cobrir alguns ls se isso nos
ajudar a desenhar círculos m aiores, enquanto es­ 1 X 0 0
tiverm os cobrindo os ls. Isso significa que m enos
variáveis aparecerão nos term os correspondentes Figura 6.21 Mapa com saídas don 7 care.
aos círculos. No exem plo anterior, desenharíam os
0 m apa K m ostrado na Fig. 6 .2 1, o qual tem um
1 correspondente a x y 'z ' quando a função deve
fornecer 1, e d o is Xs co rresp o n d en tesa x ' y ' z ' e F yz y'z' d esn ecessário
x y 'z quando a função puder fornecer 1, se isso
X oo 01 11 10
nos ajudar a m inim izar a função. D esenhando um
único círculo, obterem os a equação m inim izada 0 T Xi 0 0 0
F = y ' z 1. (N essa discussão, seja cuidadoso para
não confundir o X m aiúsculo, correspondente a 1 x ys 0 0
x /
um a saída don 7 care, com o x m inúsculo, corres­
pondente a um a variável.) Figura 6.22 Uso de Xs com desperdício.

* N. de T: Significa que não importa, que não é de se preocupar.


324 Sistemas Digitais

Lem bre-se, os casos don 7 care nào precisam ser cobertos. A cobertura da Fig. 6.22 d á um
exem plo de uso com desperdício de casos don 7 care. O círculo que cobre o X inferior, produ­
zindo o term o x y ', não é necessário. Esse term o não está errado, porque não nos im porta se a
saída será 1 ou 0 quando x y ' fo r 1. N o entanto, esse term o levaria a um circuito maior, porque
a equação resultante seria F = y 1z 1 + x y '. C om o não nos im porta, por que não tornar a saída
0 quando x y ' for 1 e, desse m odo, obter um circuito m enor?

► E X E M P L O 6.7 M in im iz a ç ã o d o ta m a n h o d e u m a ló g ic a d e d o is n ív e is c o m te r m o s d o n 't c a r e n o m a p a K

M inimize a seguinte equação:


F = a 1b c 1 + a b c 1 + a 1b 1c
sabendo que os termos a 1bc e abc são don 7 care. Intuitivamente, esses termos significam que bc
nunca poderá ser 11.
Começamos criando o mapa K de três variáveis da Fig. 6.23. a'c
Colocam os ls nas três células correspondentes aos mintermos
00 /„
da função. Em seguida, colocam os Xs nas células dos dois ter­ 01 /
mos don't care. Podemos cobrir o 1 de cima à esquerda com 0 0
u ( A
A
um círculo que contém um X. De modo semelhante, colocando
os dois Xs dentro de um círculo, podemos cobrir os dois ls da 0 \x
1 0
1J
direita com um círculo maior. A equação minimizada resultante
é F = a 1c + b. F ig u r a 6 .2 3 U sando term os
Sem os termos don 7 care, a equação teria sido minimizada don 7 care.
obtendo-se F = a 'b 'c + b c '. A ssum indo dois transistores
por entrada de porta e ignorando os inversores, a equação
minimizada sem os term os don 7 care iria requerer (3+2+2)*2 = 14 transistores (3 entradas de
porta na primeira porta AND, 2 na segunda porta AND e 2 na porta OR. vezes 2 transistores por
entrada de porta). Por outro lado, a equação minimizada com os termos don't care requer apenas
(2+0+2)*2 = 8 transistores. ◄

► E X E M P L O 6.8 C o m b in a ç õ e s d e e n tr a d a d o n 't c a r e e m u m e x e m p lo d e c h a v e d e s liz a n te

Considere uma chave deslizante, m ostrada


na Fig. 6.24, que pode estar em uma de cinco
posições, com três saídas x, y e z indicando a
posição cm binário. Assim, xyz pode assumir
os valores 001, 010, 011, 100 e 101. Os ou­
tros valores de xyz não são possíveis, ou seja,
os valores 000, 110 e 111 (ou x ' y ' z ', x y z1 e
xyz). Desejam os projetar uma lógica com bi- F ig u ra 6.24 Exemplo de chave deslizante.
nacional, com entradas x, y e z, que fornecerá
uma saída 1 se a chave estiver nas posições 2,
3 ou 4, correspondendo aos valores 010, 011
e 100 de xyz.
Uma equação booleana que descreve a ló­
gica desejada é: G = x ' y z ' + x ' yz + x y ' z 1.
Podem os m inim izá-la usando um mapa K, G yz
como mostrado na Fig. 6.25. A equação mi­
00 01 11 10
nimizada resultante é: G = x y 'z ' + x 'y .
r
Entretanto, se levarmos em consideração 0 0 0 1 1
y
os casos don 7 care, poderem os obter uma x /z '
equação minimizada mais simples. Em par­ 1 0
( 1 )
ticular, sabemos que jam ais nenhum dos três
m interm os x ' y 1z ', x y z 1 e xyz poderá ser Figura 6.25 Sem os casos d o n 7 c a r e .
Otimizações e Tradeoffs 325

verdadeiro, porque a chave poderá estar apenas em


uma das cinco posições indicadas antes. Desse modo, 00 01 A o

ÁA
no caso desses outros três mintermos, não importa se 11 /

colocamos 1 ou 0 na saída. Essas combinações de en­ 0 0

trada don't care podem ser incluídas na forma de Xs


no mapa K, como mostrado na Fig. 6.26. Se, na linha
superior, cobrirm os os ls da direita, poderemos dese­
1 0
y
Figura 6.26 Com os casos don 7 care.
nhar um círculo maior, resultando o termo y. Se, na li­
nha inferior, cobrirmos os ls da esquerda, poderemos
desenhar um círculo maior, resultando o termo z 1. Embora terminamos cobrindo todos os Xs deste
exemplo, lembre-se de que não temos que cobri-los-eles serão usados apenas se nos ajudarem a
cobrir os ls com círculos maiores. A equação minimizada resultante é: G = y + z '.
Essa equação minim izada com os casos don 7 care é bem diferente da equação minimizada
sem os casos don 7 care. No entanto. Iembre-se que o circuito ainda funciona da mesma forma. Por
exemplo, se a chave estiver na posição 1, então xyz será 001 e o valor calculado de G = y + z ' será
0. como desejado. ◄

Os casos don 7 care devem ser usados com cuidado. Q uando estam os decidindo se usare­
m os os casos don 7 care, devem os estabelecer um equilíbrio entre tam anho e os outros crité­
rios, com o circuitos confiáveis, seguros e tolerantes a falhas. D evem os nos p erg u n tar-é real­
mente possível que com binações de entrada don 7 care possam ocorrer, m esm o em situações
de erro? E ntão, no caso afirmativo , não nos im porta realmente quais serão as saídas do nosso
circuito nessa situação? Frequentem ente, nós nos im portam os sim e querem os assegurar que
a saída apresente um valor em particular. P or exem plo, no caso da chave deslizante, é possível
que valores tem porários apareçam nas saídas xyz, à m edida que a chave é m ovim entada. Por­
tanto, nesses casos don 7 care, é possível que queiram os assegurar um 0 na saída.
D iversas situações com uns levam a casos don 7 care. A lgum as vezes, as saídas don 7 care
vêm das lim itações físicas das entradas - um a chave não pode e sta r em duas posições ao
m esm o tem po, por exem plo. Se você leu o C apítulo 3, então poderá perceber que um a outra
situação com um em que podem aparecer casos don 7 care é no projeto de um bloco de co n ­
trole. Ele pode estar representando m ais estados do que o necessário. P or exem plo, um bloco
de controle com 17 estados pode usar um registrador de estado de cinco bits. Isso significa
que não seriam utilizados 15 dos 32 estados possíveis do registrador de estado. Esses 15 esta­
dos poderiam ser tratados com o don 7 care (para ficarm os seguros, eles poderiam na realidade
fazer um a transição indo ao estado inicial, caso venham os realm ente a entrar em um desses
estados não usados, devido a ruídos ou outros erros). Se você leu o C apítulo 5, então poderá
perceber que um a outra situação com um em que ocorrem saídas don 7 care é em um bloco
de controle que está controlando o bloco operacional. Se, durante um dado estado, não esti­
verm os lendo ou escrevendo em um a m em ória ou banco de registradores em particular, então
será irrelevante qual endereço será enviado à m em ó ria ou ao banco de registradores nesse
estado. De m odo sem elhante, durante um estado, se um m ultiplexador alim entar um registra­
dor e não estiverm os fazendo um a carga nesse registrador, então será realm ente irrelevante
quais dados de entrada passarão pelo m ultiplexador nesse estado. Se, durante um estado, não
form os carregar a saída de um a A LU em um registrador, então será realm ente irrelevante qual
função a A LU com putará nesse estado.

Automatização da otimização do tamanho de uma lógica de dois níveis

0 uso de mapas K é bastante limitado


E m bora o m étodo visual do m apa K seja útil na otim ização de funções de dois níveis e três
e quatro variáveis, esse m étodo não pode ser usado para lidar com funções com m uito m ais
variáveis. Um problem a é que não podem os visualizar efetivam ente funções além de cinco ou
326 Sistemas Digitais

seis variáveis. Um outro problem a é que as pessoas com etem erros e podem acidentalm ente
deixar de desenhar o m aior círculo possível em um m apa K. A lém disso, a ordem pela qual
um projetista com eça a cobrir com l s pode levar a um a função com m ais term os do que seria
possível obter, caso fosse usada um a ordem diferente. Por exem plo, considere a função m os­
trada no m apa K da Fig. 6.27(a). C om eçando da esquerda, um p ro jetista poderia desenhar
prim eiro o círculo que fornece o term o y ' z 1, então o círculo que fornece x ' y ', depois o que
fornece yz e, finalm ente, o círculo que fornece xy, to talizan d o q u atro term os. O m apa K
da Fig. 6.27(b) m ostra um a cobertura alternativa. D epois de d esen h ar o círculo que fornece
y 1z 1, o p rojetista desenha o círculo que fornece x 1z e então o que fornece xy. A cobertura
alternativa usa apenas três term os ao invés de quatro.

Figura 6.27 Uma cobertura não é necessariamente ótima: (a) uma cobertura com quatro termos e
(b) uma cobertura com três termos para a mesma função.

Conceitos que fundamentam a otimização automatizada de tamanho em dois níveis


D evido aos problem as m encionados anteriorm ente, a otim ização d o tam anho de um a lógica
de dois níveis é feita prim ariam ente usando ferram entas autom atizadas, baseadas em co m ­
putador, que fazem heurística ou executam algoritm os exatos. U m a heurística é um m étodo
de resolução de problem as que usualmente fornece um a boa solução, idealm ente próxim a
da ótim a, m as que não é necessariamente a ótim a. Um algoritmo exato , ou sim plesm ente
algoritm o, é um m étodo de resolução de problem as que fornece a solução ótim a. Do ponto de
vista dos critérios que nos interessam , um a solução ótima é um a solução tão boa ou m elhor
do que qualquer outra possível.
Prim eiro, vam os definir alguns conceitos que fundam entam a h eurística e os algoritm os
exatos que são usados na otim ização do tam anho da lógica de dois níveis. Ilustrarem os g ra­
ficam ente esses conceitos com m apas K, m as o propósito dessas ilustrações é sim plesm ente
d ar ao leitor um a visão intuitiva dos co n ceito s - as ferram en tas au to m atizad as não usam
m apas K.
L em bre-se que um a função pode ser escrita com o
sendo um a equação na form a de um a som a de m intcr- xyz
m os. Um mintermo é um term o de produto que inclui ' x 00 01/ / li 10

todas as variáveis da função exatam ente um a vez, na 0 0 Gi 0 0 xyz
xyz'
form a afirm ativa ou na com plem entada. O cham ado on-
set de um a função é o conjunto de m interm os que defi­ 1 0 0 ( © - '<3 xy
nem quando o valor da função deve ser 1 (isto é, quando
a função está “o /f \ ligada). Para a função da Fig. 6.28, o Figura 6.28 Implicantes.
on-set é: {x ' y 1z. xyz, x y z '} . O cham ado off-set de uma
função é o conjunto de todos os dem ais m interm os. Para a função da Fig. 6.28, o off-set* é:
{x ' y ' z ', x 1y z 1, x 'y z , x y ' z ', x y ' z }. U sando a representação com pacta de m interm os (veja a
Seção 2.6), o on-set é {1,6,7} e o off-set é {0,2,3,4,5}.

* N. de T: Corresponde ao conjunto de mintermos que define quando o valor da função deve ser 0 (isto é. quando a função está
“off*, desligada). Daí vêm off. desligado, e set. conjunto, em inglês.
Otimizações e Tradeoffs 327

U m implicante é um term o de p ro d u to q u e p ode c o n te r m enos d o q u e to d as as variá­


veis da função, m as q ue será 1 so m en te se o v alo r da fu n ção for 1 - em o u tras palav ras,
um im p lican te d e fu n ção é um term o q u e se rá 1, para um d a d o c o n ju n to d e v alo res de
v ariáv eis, so m en te se, para esses v alo res d e variáveis, ao m enos um dos m in term o s p er­
ten cen tes ao on-set da função fo r I . P or exem plo, a fu n ção F = x ' y ' z + x y z ' + xyz tem
q u atro im plicantes: x 'y 'z . x y z ', xyz e xy. G raficam en te, um im p lican te é q u a lq u e r círculo
válido (m as n ão n ecessariam en te o m aio r possível) em um m apa K, co m o m ostrado na Fig.
6.28. O b v iam en te, to d o s os m in term o s são im p lican tes, m as nem lodos os im p lican tes são
m interm os.
D izem os q ue o term o xy cobre os m in term o s x y z ' e xyz d a fu n ção G. G raficam en te, o
círculo de um im p lican te envolve os l s d o s m in term o s co b erto s. In tuitivam ente, sabem os
q ue podem os substituir os m interm os coberto s pelo im plicante, q u e co b re esses m interm os,
e ain d a o b te r a m esm a função. Em ou tras palavras, po d em o s su b stitu ir x y z ' + xyz p o r xy.
U m co n ju n to de im plicantes q ue co b re o on-set de um a função (e não co b re nenhum outro
m in term o ) é co n h ecid o co m o cobertura da função. P ara a função acim a, um a co b ertu ra
da função é x 'y ' z + xyz + x y z '; um a o u tra é x 'y 'z + xy e ainda o u tra e x 'y 'z + xyz +
x y z '+ xy.
E m um term o , a rem o ção d e u m a variável 6 c o n h e c id a co m o expansão d o term o , que
(5 o m esm o q u e e x p a n d ir o tam an h o de um c írc u lo em um m a p a K. P o r e x e m p lo , para
a fu n ção da Fig. 6.2 8 , a ex p a n sã o d o term o xyz p a ra xy (p ela e lim in a ç ã o de z) resu lta
em um im p lican te da função. A e x p an são d o te rm o x y z 1 para xy tam b ém resu lta em um
im p lican te (o m esm o ). E n tretan to , a e x p a n sã o d e xyz para xz (p ela e lim in a ç ão de y) não
resu lta em um im p lican te - xz co b re o m in term o x y 'z , o qual não p erten ce ao on-set da
função.
Um implicante primo de um a função é um im plicante com a propriedade de que, se uma
variável qualquer for elim inada do im plicante, o resultado será um term o que cobre um m in­
term o não pertencente ao on-set da função. G raficam ente, um im plicante prim o corresponde
a círculos que são os m aiores possíveis - um aum ento a m ais no círculo acabaria cobrindo
Os e m odificando a função. N a Fig. 6.28, x ' y ' z e xy são im plicantes prim os. A rem oção de
qualquer variável do im plicante x 'y 'z , digam os z, produzirá um term o ( x ' y 1) que cobre um
m interm o não pertencente ao on-set —x 1y ' cobre x ' y 1z 1, por exem plo, o qual não pertence
ao on-set da função. De m odo sem elhante, a rem oção de x ' ou y 1 desse term o cobrirá um
m interm o que não pertence ao on-set da função. A rem oção de q ualquer variável do im pli­
cante xy, digam os y, produzirá um term o (x) que cobre m interm os não pertencentes ao on-set.
P or outro lado, xyz não é um im plicante prim o, porque z pode ser rem ovido desse im plicante
sem que a função seja alterada, porque xy cobre os m interm os xyz e x y z ', am bos não per­
tencentes ao on-set. De m odo sem elhante, x y z 1 não é um im plicante prim o, porque z ' pode
ser rem ovida. N ão há razão para co b rir um a função com q u alq u er coisa que não sejam im ­
plicantes prim os, porque os im plicantes prim os perm item obter a m esm a função com m enos
variáveis do que os im plicantes que não são prim os (essa é a razão de sem pre desenharm os os
m aiores círculos possíveis em m apas K).
Um implicante primo essencial 6 o único im plicante prim o que cobre um dado m interm o
pertencente ao on-set da função. G raficam ente, um im plicante prim o essencial é o único cír­
culo (naturalm ente, o m aior possível, já que o círculo deve representar um im plicante prim o)
que cobre um 1 em particular. N a Fig. 6.28, x 'y 'z é u m im plicante prim o essencial, assim
com o xy, porque cada um deles é o único im plicante prim o que cobre um 1 particular. Um
im plicante prim o não essencial é um im plicante prim o cujos m interm os cobertos são tam bém
cobertos por um ou m ais im plicantes prim os diferentes. A Fig. 6.29 m ostra um a função d i­
ferente que tem quatro im plicantes, m as dos quais apenas dois são essenciais. O term o x ' y 1
é um im plicante prim o essencial porque ele é o único im plicante prim o que cobre x ' y 1z '.
O term o xy é um im plicante prim o essencial porque é o único im plicante prim o que cobre
o m interm o x y z 1. O term o y 1z é um im plicante prim o não essencial porque am bos os seus
328 Sistemas Digitais

m interm os co b erto s são tam bém co b erto s por outros im ­ não essencial
G yz Y'z
plicantes (esses outros im plicantes prim os podem ou não
ser im plicante prim os essenciais). De m odo sem elhante, xz ■ \ 00
01 // „ 10
não é essencial. A im portância dos im plicantes prim os e s­ s —
0 1 1 0 0
senciais é a seguinte: sabem os que devemos incluir todos os
im plicantes prim os essenciais em um a cobertura de função, 0 1
senão haveria alguns m interm os que poderiam não estar c o ­ / <>) .0
xV ------- H — 1
bertos. Para co b rir com pletam ente a função, podem os ou essencial XZ xy
não precisar incluir im plicantes prim os não essenciais, m as não essencial essencial
devem os incluir todos os im plicantes prim os. Figura 6.29 Im plicantes pri­
D adas as noções de im plicantes prim os e im plicantes mos essenciais.
prim os essenciais, um a abordagem sim ples para a otim iza­
ção de um a lógica de dois níveis está dada na Tabela 6.1.

TABELA 6.1 Abordagem para a otimização automatizada do tamanho de uma lógica de dois níveis
Passo D e scriçã o

1 Determine os implicantes primos Para cada mintermo do on-setós função, expanda esse termo ao máximo
(ou seja, elimine variáveis no termo) de modo que o termo ainda cubra
mintermos do on-set da função (é como desenhar em um mapa K o maior
círculo possível ao redor de cada 1). Repita para cada mintermo. Se houver
casos don't care, use-os para expandir mintermos ao máximo, obtendo im­
plicantes primos (é como usar Xs para criar os maiores círculos possíveis
para um dado 1 em um mapa K).

2 Acrescente implicantes primos à co­ Encontre todos os mintermos cobertos por apenas um implicante primo
bertura da função (isto é, por um implicante primo essencial). Acrescente esses implicantes
primos à cobertura e marque os mintermos cobertos por esses implicantes
como já estando cobertos.

3 Cubra os demais mintermos com im­ Cubra os demais mintermos usando o número mínimo de implicantes pri­
plicantes primos não essenciais mos restantes.

Os prim eiros dois passos são exatos. O últim o passo é bastante engenhoso. C om o esco ­
lher os im plicantes prim os que serão usados para cobrir os dem ais m interm os? L em bre-se do
exem plo da Fig. 6.27 no qual, após o acréscim o de im plicantes prim os essenciais, a cobertura
da Fig. 6.27(a) usava dois im plicantes prim os para cobrir os dois ls que sobravam , ao passo
que a cobertura da Fig. 6.27(b) usava apenas um im plicante prim o para cobrir esses dois
l s restantes. Q uando há apenas duas possibilidades, podem os tentar cada um a e escolher a
que tem m enos im plicantes prim os na cobertura final. N o entanto, com o seria se houvesse
m ilhões, ou bilhões, de possibilidades? Poderíam os não dispor de tem po de com putação sufi­
ciente para tentar todas essas possibilidades. Na verdade, para funções m aiores com centenas
de m interm os e m ilhares de im plicantes prim os, pode haver m ilhões de coberturas a serem
consideradas no últim o passo.
Se um a abordagem tentar todas as possibilidades, essa abordagem será um algoritm o
exato. Se uma abordagem testar apenas algum as poucas dessas possibilidades, poderá ser
heurística a abordagem com pleta para a otim ização do tam anho de um a lógica de dois níveis
(a m enos que a abordagem garanta que as possibilidades ignoradas não fazem realm ente parte
de um a solução ótim a).
D em onstrarem os essa abordagem para otim izar o tam anho de um a lógica de dois níveis
com o exem plo seguinte.
Otimizações e Tradeoffs 329

► EXEMPLO 6.9 Otimização do tamanho de uma lógica de dois níveis por meio da abordagem da
Tabela 6.1 e ilustrada com um mapa K
A Fig. 6.30 mostra o mapa K para a função da Fig. 6.27, na
K yz xz
qual vimos que coberturas diferentes produziram números
diferentes de termos. O primeiro passo é determinar todos os
X
00 01 11 / 10

implicantes primos, mostrados na parte superior da Figura. 0 1 ' 0


‘ 1 >
Para cada 1, desenhamos todos os círculos possíveis, envol­ (a)
vendo ls adjacentes e assegurando que cada círculo seja o
maior possível.
■■
1

yV x v
0
C 1
\
xz/
O segundo passo é acrescentar implicantes prim os es­
senciais à cobertura da função. Observe que o 1 correspon­
dente ao mintermo x 'y z (o 1 à direita em cima) está coberto
apenas por um implicante primo, isto é, x 'z . Assim, sabe­
mos que precisaremos usá-lo e, portanto, incluiremos o im­
plicante primo x 'z na cobertura. Observe também que o 1
correspondente ao mintermo x y z 1 (o 1 à direita em baixo)
está coberto apenas por um implicante primo, a saber, x z '.
Assim, incluirem os também esse implicante primo x z' na
cobertura. M arcamos todos os ls cobertos por esses impli­
cantes primos essenciais, indicando-os por ls em itálico na
figura.
O último passo é cobrir os ls restantes com o menor nú­
mero possível de im plicantes primos. Há apenas um 1 não
coberto e esse 1 está coberto por dois im plicante primos.
Podemos escolher qualquer um para a cobertura - escolhe­ xz'
yv
remos y ' z 1. Assim, a cobertura final é:
Figura 6.30 Ilustração de uma
I = x 'z + x z' + y 1z 1
otim ização de dois níveis: (a)
Nesse exemplo, um mapa K é usado m eram ente para todos os im plicantes primos, (b)
ilustrar o leitor a respeito dos passos que ocorrem em uma inclusão dos im plicantes primos
ferramenta automatizada - internamente tal ferramenta não essenciais na cobertura e (c) co­
usa mapas K, usa outras formas para representar os lermos bertura dos ls restantes.
de uma função. *4

Otimização automatizada do tamanho de uma lógica de dois níveis usando o


método de Quine-McCIuskey
A abordagem m ais conhecida, e de fato a original, para a otim ização autom atizada do tam a­
nho de um a lógica de dois níveis é o m étodo dc Quine-McCIuskey , cham ado algum as vezes
de método tabular.
N esse m étodo, o prim eiro passo encontra lodos os im plicantes prim os. O passo com eça
com os m interm os da função-se estiverm os m inim izando um a função de ires variáveis, então
poderem os cham á-los de term os de três variáveis. Para encontrar todos os im plicantes prim os,
o m étodo com para prim eiro cada term o de três variáveis com todos os dem ais term os de três
variáveis c, se forem encontrados dois term os que diferem entre si em apenas um a variável, o
m étodo acrescentará um novo term o (sem a variável que é diferente) a um novo conjunto de
term os de duas variáveis. P or exem plo, x y z 1 e xyz diferem em um a variável, z. D isso resulta
um novo term o xy que é acrescentado ao conjunto de term os de duas variáveis. U m a vez ter­
m inada a com paração de todos os term os de três variáveis, o m étodo com para todos os pares
de term os de duas variáveis, procurando term os que diferem entre si em apenas uma variável,
resultando um conjunto de term os de um a variável. Term os de um a variável podem então ser
com parados, procurando-se os term os que diferem entre si em um a variável. No entanto, se
330 Sistemas Digitais

tais term os forem encontrados, o valor da função será sim plesm ente 1. N a realidade, nem
todos os term os de um co njunto precisam ser co m p arad o s - apenas aqu eles cu jo número
de literais não com plem entadas, diferentes entre si, seja um . Por exem plo, x 'y z ' c xyz não
precisam ser com parados, porque o núm ero de literais não com plem entadas, diferentes entre
si, é dois, não um. Portanto, eles não poderão ser sim plificados para produzir um novo term o
pela elim inação de um a variável. D urante esse passo, no m om ento em que um term o não
puder m ais ser com binado com algum outro, irem os m arcá-lo com o sendo um im plicante
prim o. A ssim , após esse passo, todos os term os marcados representarão todos os im plicantes
prim os. Portanto, o m étodo propicia um a abordagem para sc en co n trar im plicantes prim os,
de form a m ais eficiente do que pela sim ples expansão ao m áxim o de cada termo.
O segundo passo é acrescentar à cobertura todos os im plicantes prim os essenciais e m ar­
car com o estando ‘‘cobertos” todos os m interinos cobertos por esses im plicantes prim os.
O passo final é cobrir todos os dem ais m interm os não cobertos, escolhendo-se o m enor
núm ero possível de im plicantes prim os restantes para cobri-los. Se todas as possibilidades
forem testadas, resultará um a versão do m étodo de Q uinc-M cC luskey que é um algoritm o
exato. Se apenas um subconjunto for testado, resultará um a heurística.

Os métodos que enumeram todos os mintermos ou que computam todos os implicantes


primos podem ser ineficientes
O m étodo de Q uine-M cC luskey funciona razoavelm ente bem com as funções que tem até
possivelm ente dezenas de variáveis. E ntretanto, com funções m aiores, apenas a listagem de
todos os m interm os pode resultar em um a quantidade enorm e de dados. Um a fu n ção de 10
variáveis pode ter até 2 m m interm os - ou seja, 1024 m interm os, o que é bem razoável. En-
tretanto, um a função de 32 variáveis pode ter até 2 " m interm os, ou seja, até cerca de quatro
bilhões de m interm os. A representação desses m interm os em um a tabela requer um a q u an ti­
dade proibitiva de m em ória de com putador. A lém disso, a com paração desses m interm os com
outros poderia requerer com putações na ordem de quatro bilhões ao quadrado, ou seja, qua-
trilhões de com putações (um quatrilhão é mil vezes um trilhão). M esm o um com putador que
executasse dez bilhões de com putações por segundo iria necessitar de 100.000 segundos para
executar todas essas com putações, ou seja, 27 horas. No caso de 64 variáveis, os núm eros
chegam a 2( l m interm os possíveis, ou quatrilhões de m interm os, e quatrilhões ao quadrado de
com putações, o que poderia exigir um m ês de com putação. Funções com cem entradas, o que
não é tão incom um , iria requerer um a quantidade absurda de m em ória e m uitos anos de co m ­
putação. M esm o a com putação de todos os im plicantes prim os, sem listar prim eiro todos os
m interm os, é com putacionalm ente proibitiva para m uitas funções com os tam anhos atuais.

Heurística iterativa para a otimização do tamanho de uma lógica de dois níveis


No caso de funções com m uitas variáveis, a enum eração de todos os m interm os de um a fun­
ção, ou m esm o de apenas todos os im plicantes prim os, é proibitiva em term os de m em ória
de com putador e tem po de com putação. A ssim , a m aioria das ferram entas autom atizadas
usa m étodos que, ao invés, sim plesm ente transform am iterativam ente a equação da função
original, tentando encontrar m elhoram entos para a equação. O melhoramento iterativo signi­
fica fazer repetidam ente pequenas alterações em um a solução existente até decidirm os parar,
talvez porque não conseguim os encontrar um a solução m elhor, ou talvez porque a ferram enta
trabalhou por tem po suficiente. C om o exem plo da realização de pequenas alterações em um a
solução já existente, considere a equação:

F = abcdefgh + a b c d e fg h '+ jk lm n o p

C laram ente, podem os reduzir essa equação sim plesm ente com binando os dois prim eiros ter­
m os e rem ovendo a variável h, resultando F = a b e d e f g + jklm nop. N o entanto, a en u m e­
ração dos m interm os, com o é requerido nos m étodos anteriores da otim ização de tam anho,
Otimizações e Tradeoffs 331

teria resultado em cerca de 1000 m interm os e, em seguida, em m ilhões de com putações para
encontrar os im plicantes prim os - m as obviam ente não há necessidade dessa enum eração e
dessa com putação para m inim izar a equação.
P ortanto, as m odernas ferram entas auto m atizad as de o tim ização lógica não tentam en u ­
m erar todos os m in term o s d as fu n çõ es d e m uitas variáveis. E ssas ferram en tas co m eçam
com um a d ad a equação da função, na form a d e um a som a de produtos, com o a d escrição de
F anterior. E ntão, essas ferram en tas tentam tran sfo rm ar a eq u ação pouco a pouco em um a
eq u ação m elhor, sig n ifican d o um a equação com m enos term o s e/ou m en o s literais. E ssas
ferram entas ficam em repetição, ou iteração , ate q u e não con sig am novos m elh o ram en to s
ou até que tenha ex p irad o algum tem po m áx im o atrib u íd o p ara que a ferram en ta fique em
execução.
N as ferram en tas m o d ern as, a h eu rística p ara essa
o tim ização de um a lógica de dois níveis p ode ser bem
com plexa. No entanto, um a heurística sim ples e bastante xz
efetiva usa a aplicação repetida da operação de expansão.
A operação de expansão significa rem over um a literal de
um term o e então verificar se o novo term o é válido. A
rem oção de um a literal faz com que o term o cubra m ais
m interm os, é co m o d esenhar um círcu lo m aior em um xy'z xyz
m apa K -d a í o nom e “expansão” . Por exem plo, considere
a função F = x 'z + x y 'z + xyz. Podem os tentar expan­ xz
dir o term o x 1z rem ovendo x 1, ou z. N ote que a expansão
de um term o reduz o núm ero de literais - pode ser neces­ (1 1)
sário um pouco de tem po para você se acostum ar com o (b)

conceito de que expandir um term o reduz o seu núm ero 0 0


0 Q
de literais. Pode ser útil pensar em círculos em um m apa xy z xyz
K. com o m ostrado na Fig. 6.31 - quanto m aior o círculo,
Figura 6.31 E x p a n s õ e s do
m en o r o núm ero resultante de literais. U m a expansão
term o x ' z na função F = x ' z +
será válida se o novo term o cobrir apenas m interm os per­
x y 1z + xyz: (a) válida e (b) não
tencentes ao on-set da função, ou de fo rm a equivalente
válida (porque o term o expan­
não cobrir um m interm o do off-set da f u n ç ã o - e m outras
dido cobre Os).
palavras, um a expansão será válida se o novo term o ainda
for um im plicante da função. A Fig. 6.31 (a) m ostra que,
para a função dada, é valida a expansão do term o x 1z para z, já que o term o expandido cobre
apenas ls. Por outro lado, a expansão de x 1z para x 1 não é válida, pois o term o expandido co ­
bre um 0 no m ínim o. Se um a expansão for válida, irem os substituir o term o original pelo ex­
pandido e, em seguida, iremos procurar e remover qualquer outro termo coberto pelo termo
expandido. N a Fig. 6.31 (a), o term o expandido z cobre os term os x y 'z e xyz. A ssim , esses
dois últim os podem ser rem ovidos.
O bserve que ilustram os a operação de expansão usando um m apa K, sim plesm ente para
ajudar a com preender intuitivam ente a operação - os m apas K não são encontrados em ne­
nhum lugar das ferram entas heurísticas para m in im izar o tam anho de um a lógica de dois
níveis.
C om o outro exem plo, usarem os a função apresentada antes:

F = abcdefgh + a b c d e fg h '+ jklm nop

Poderíam os com eçar tentando expandir o prim eiro term o, abcdefgh. Um a das expansões
desse term o é b cd efg h (isto é, rem ovem os a literal a). E ntretanto, esse term o cobre o term o
a 'b c d e fg h , o qual co b re m interm os que não pertencem ao on-set da função. D esse m odo,
essa expansão não é válida. P oderem os tentar outras expansões, descobrindo que elas tam ­
bém não são válidas, até que chegam os à expansão ab cd efg (isto é, rem ovem os a literal h).
332 Sistemas Digitais

E sse term o cobre exatam ente abcdefgh e abcdefgh 1, am bos são claram ente im plicantes por­
que eles aparecem na função original e, assim , o novo term o deve ser tam bém um im plicante.
Portanto, substituím os o prim eiro term o pelo expandido:

F = abcdefgh + abcdefgh'+ jklmnop


e rem ovem os tam bém o segundo term o, porque esse está coberto pelo term o expandido:
F = abcdefgh + abcdefgh-" + jklmnop
F = abcdefg + jklmnop
D esse m odo, usando apenas a operação de expansão, m elhoram os a equação.

► EXEMPLO 6.10 Heurística iterativa para otimizar o tamanho de uma lógica de dois níveis usando expansão
M inimize a seguinte equação, que também foi minim izada no Exemplo 6.4, usando a aplicação
repetida da operação de expansão:
F = xyz + xyz' + x ' y ' z ' + x 'y 'z
Em outras palavras, o on-set consiste nos mintermos: {7, 6, 0, l } e o ojf-set, nos mintermos:
{2, 3 ,4 ,5 } .
Vamos expandir os termos indo da esquerda para a direita, de modo que com eçarem os com
xyz. Podemos tentar expandir xyz para obter xy. Essa expansão é válida? O termo xy cobre os min­
termos x yz' (mintermo 6) e xyz (mintermo 7), ambos pertencentes ao on-set. Portanto, a expansão
é válida, de modo que substituímos xyz por xy, obtendo a nova equação:
F = xy? + xyz' + x ' y ' z 1 + x 'y 'z
Procuramos também implicantes que estejam cobertos pelo novo implicante xy. O termo x y z'
está coberto por xy. de modo que eliminamos x y z ', obtendo:
F = xy + xy-z J- ■» x 'y 'z ' + x 'y 'z
Vamos continuar tentando expandir esse primeiro termo. Podem os tentar expandir xy para
obter x. O termo x cobre os mintermos x y 1z 1 (mintermo 4), x y 1z (mintermo 5), x y z' (mintermo 6)
e xyz (mintermo 7). O termo x cobre assim os mintermos 4 e 5, os quais não estão no on-set, mas
em vez disso, no ojf-set. Portanto, essa expansão não é válida. Podemos também tentar expandir
xy e obter y, mas verificaremos novamente que essa expansão não é válida.
A seguir, poderemos considerar o termo seguinte, x 'y ' z 1. Vamos tentar expandi-lo para ob­
ter x 'y '. Esse termo cobre os mintermos x 'y ' z ' (m intermo 0) e x 'y 'z (m intermo 1), ambos
pertencentes ao on-set, de modo que a expansão é válida. Assim, substituím os esse termo pelo
expandido:
F = xy + x ,y ,? ± + x 'y 'z
Verificamos se há outros termos cobertos pelo termo expandido e encontram os que x ' y ' z está
coberto por x ' y 1, de modo que removemos x 1y 1z, ficando:
F = xy + x'y* ■» x ‘y {z
Podemos tentar expandir novamente o termo x 'y \ mas verificaremos que as duas expansões
possíveis (x 1 ou y 1) não são válidas. Desse modo, a equação anterior é a equação minimizada. Ob­
serve que aconteceu desse resultado ser o mesmo que obtivemos quando minimizamos a mesma
equação inicial no Exemplo 6.4. ◄

M esm o que tenha acontecido da heurística baseada em expansão ler gerado a equação otim a­
mente m inim izada, não há garantia de que os resultados heurísticos serão sem pre os ótimos.
Otimizações e Tradeoffs 333

Um a heurística m ais avançada utiliza operações adicionais além do sim ples uso da o p e­
ração de expansão. U m a dessas operações é a de redução, a qual pode ser en tendida com o
sendo o oposto da expansão. A operação de redução tom a um term o e tenta acrescentar-lhe
um a literal, verificando se a equação com o novo term o ainda cobre a função. A crescentar
um a literal a um term o é com o red u zir o tam anho de um círculo em um m apa K. Esse acrés­
cim o reduz o núm ero de m interm os coberto s pelo term o, d a í o nom e redução . Um a outra
operação é a cham ada irredundância que tenta rem over inteiram ente um term o, verificando
se a nova equação ainda cobre a função. Se afirm ativo, o term o rem ovido era “redundante” ,
daí o nom e irredundância. Um a heurística pode iterativam ente realizar operações de expan­
são, redução e irredundância. O utras realizam operações com o as da heurística seguinte: tente
dez operações aleatórias de expansão, então, cinco operações aleatórias de redução, a seguir,
duas operações de irredundância e, então, repita (iteração) a seqüência com pleta até que não
ocorram m ais m elhoram entos de um a iteração para a seguinte. A s ferram entas m odernas de
otim ização de tam anho em dois níveis diferem grandem ente quanto à ordem das operações e
ao núm ero de iterações.
L em bre-se de que dissem os que as heurísticas m odernas não enum eram todos os m in­
term os de um a função, m esm o que tenham os en u m erad o todos os m interm os no exem plo
anterior - n a realidade, os m interm os nos foram fornecidos na equação inieial. Q uando ini­
cialm ente não conhecem os os m interm os, existem m uitos m étodos avançados que represen­
tam eficientem ente o on-set e o off-set de um a função, sem en u m erar os m interm os desses
conjuntos. A lém disso, verificam rapidam ente se um term o cobre term os do off-seí. E sses
m étodos estão além dos objetivos deste livro, sendo o tem a de livros de síntese de projetos
digitais. N o entanto, esperam os que agora você já tenha apreendido a idéia básica da m inirni-
zação heurística de dois níveis.
U m a d a s fe rra m e n ta s o rig in a is q u e e x e c u ta v a m h e u rís tic a s a u to m a tiz a d a s , assim
co m o o tim ização exata de d o is níveis, era c h a m a d a de Espresso , ten d o sid o d esen v o lv id a
na U n iv ersid ad e da C a lifó rn ia , em B erkeley. O s a lg o ritm o s e as h e u rístic a s u sad as no
E sp re sso fo rm aram a base d e m u ita s fe rra m e n ta s c o m e rc ia is m o d e rn a s de o tim iz a ç ã o
lógica.

Otimização lógica de múltiplos níveis - tradeoffs de desempenho e tamanho


A té agora, d iscu tim o s a o tim ização d o tam an h o de ló g icas d e d o is níveis. E n tretan to , na
prática, poderem os não n ecessitar da velocidade co rresp o n d en te a dois níveis lógicos. P o ­
d erem o s e sta r d isp o sto s a usar três, q u atro ou m ais níveis d e lógica, se esses níveis a d i­
cionais reduzirem a q u an tid ad e de lógica n ecessária. C o m o ex em p lo sim ples, co n sid ere a
equação:

F1 = ab + aed + ace

Essa equação não pode ser m inim izada. O circuito resultante de dois níveis está m ostrado
na Fig. 6.32(a).
N o entanto, podem os m anipular algebricam ente a equação com o segue:

F2 = ab + a c (d + e) = a(b + c (d + e ) )

E ssa equação pode ser im plem entada com o circuito m ostrado na Fig. 6.32(b). E ssa im ­
plem entação lógica de m últiplos níveis usa m enos transistores às custas de m ais atrasos de
porta, com o ilustrado na Fig. 6.32(c). Portanto, essa im plem entação de m últiplos níveis re­
presenta um tradeoffs quando com parada com a im plem entação de dois níveis.
334 Sistemas Digitais

F2
F1
20 -

<
/>
O F2

c ,v*
2
- 5 h
J___I__ I__ L
1 2 3 4
atraso (atrasos de portas)
F1 = ab + acd + ace F2 = a(b+c(d+e))
(a) (b) (c)

Figura 6.32 Uso de lógica de múltiplos níveis para realizar tradeoff entre desempenho e tamanho:
(a) circuito de dois níveis, (b) circuito de múltiplos níveis com menos transistores e (c) ilustração
do tradeoff de tam anho versus atraso. Os números dentro das portas representam números de
transistores.

De form a sem elhante à otim ização lógica de dois níveis, na o tim ização lógica de m úl­
tiplos níveis, as heurísticas autom atizadas transform am iterativam ente a equação inicial da
função, otim izando um dos critérios às custas de algum outro.

► EXEMPLO 6.11 Otimização lógica de múltiplos níveis


U sando m anipulação algébrica, minim ize o tam anho do circuito da seguinte função, possivel­
mente às custas de menor desempenho. Faça o gráfico do tradeoff do circuito inicial e do de tama­
nho otimizado em relação ao tamanho e ao atraso.
F1 = abcd + abcef
O circuito correspondente a essa equação está mostrado na Fig. 6.33(a). O circuito requer 22
transistores e tem um atraso correspondente a dois atrasos de porta.

22 transistores 18 transistores
2 atrasos de porta 3 atrasos de porta F1
-
n 20
< -
F2
o £
f 2 15 H
F2 (0 w
Ü 1oU
"" 5 -
J__ I__ I__ L
1 2 3 4
atraso (atrasos de portas)

(a) (O
Figura 6.33 Lógica de m últiplos níveis para realizar tradeoffs ntre desem penho e tam anho:
(a) circuito de dois níveis, (b) circuito de m últiplos níveis com m enos transistores e (c) tra­
deoff de tam anho versus atraso. Os núm eros dentro das portas representam núm eros de tran­
sistores.

Podemos manipular algebricamente a equação fatorando os dois termos e colocando em evi­


dência o termo abc, como segue:
F2 = abcd + abcef = abc(d + ef)
O circuito dessa equação está mostrado na Fig. 6.33(b). O circuito requer apenas 18 transisto­
res, mas tem um atraso maior do três atrasos de porta. O gráfico na Fig. 6.33(c) mostra o tamanho
e o desempenho de cada projeto. ◄
Otimizações e Tradeoffs 335

► EXEMPLO 6.12 Redução do comprimento de um caminho não crítico com lógica de múltiplos níveis
Use lógica de múltiplos níveis para reduzir o tamanho do circuito da Fig. 6.34(a), sem aumentar o
atraso do circuito. Note que o circuito inicialmente tinha 26 transistores. Além disso, desde uma
entrada qualquer até a saída, o maior atraso corresponde a um atraso de três portas. Esse atraso
ocorre conform e mostrado pela linha tracejada na Figura. O cam inho mais longo através de um
circuito é o cam inho crítico desse circuito.

26 transistores 22 transistores
3 atrasos de porta

25 - F1
F2
<A 20
~ -

OP
■=o15h
F1 <5
E í 10 -
(O
3 5 -
J___I___L
1 2 3 4
atraso (atrasos de portas)

(a) (b) (O
Figura 6.34 Otim ização de m últiplos níveis obtida pela alteração de um cam inho não crítico
reduzindo o tamanho sem aum entar o atraso: (a) circuito original, (b) novo circuito com menos
transistores mas de mesmo atraso (c) ilustração da otimização de tamanho sem tradeojf de atraso.

Os outros caminhos presentes no circuito apresentam atrasos correspondentes a duas portas.


Assim, se reduzirmos o tamanho da lógica nos caminhos não críticos e aumentarmos o atraso desses
caminhos para três portas, o atraso total do circuito não será aumentado. Vamos nos concentrar nas
partes não críticas da equação de F1 na Fig. 6.34(a); as partes não críticas estão em itálico. Podemos
modificar algebricamente as partes não críticas, colocando em evidência o termo fg. resultando a
equação e o circuito novos mostrados na Fig. 6.34(b). Um dos caminhos modificados tem agora
também um atraso correspondente a três portas, de modo que agora temos dois caminhos de compri­
mentos iguais, ambos tendo um atraso correspondente a três portas. Comparando, o circuito original
tem 26 transistores e o circuito resultante tem apenas 22 transistores e. não obstante, o atraso de três
portas ainda permanece sendo o mesmo, como mostrado na Fig. 6.34(c). Assim, no total, realizamos
uma otimização de tamanho sem penalizar o desempenho. A

Em geral, a otim ização de lógicas de m últiplos níveis usa a fatoração, colocando em evi­
dência algum term o (por exem plo, abc + abd = a b (c + d )) para reduzir o núm ero de portas.
A tualm ente, a otim ização de lógicas de m últiplos níveis é usada provavelm ente com m ais
freqüência do que a de dois níveis. A otim ização de lógicas de m últiplos níveis é am plam ente
usada tam bém por ferram entas autom áticas que m apeiam os circu ito s para FPG A s. Essas
ferram entas serão discutidas no C apítulo 7.

► 6.3 OTIMIZAÇÕES E TRADEOFFS EM LÓGICA SEQÜENCIAL


No C apítulo 3, descrevem os o projeto de lógica seqüencial dos cham ados blocos de controle.
Q uando criam os um a FvSM e a convertem os em um registrador de estado e um a lógica, p ode­
m os aplicar algum as otim izações e tradeoffs.

Redução de estados
Redução de estados , tam bém conhecida com o minimização de estados , é um a otim ização
que reduz o núm ero de estados de um a FSM sem alterar o seu com portam ento. R eduzindo
o núm ero de estados, poderem os reduzir o tam anho do reg istrad o r de estado necessário à
336 Sistemas Digitais

im plem entação da FSM , reduzindo E n tra d a s-, x; S a id a s : y

assim o tam anho do circuito. A redu­


ção do núm ero de estados é possível
quando a FSM contém estados que
são equivalentes entre si. Por exem ­
plo, considere a FSM da Fig. 6.35(a),
que tem a entrada x e a saída y. Um
exam e revela que os estados 52 e 55
parecem ser os m esm os que os esta­
dos SO e SI. Independentem ente de
com eçarm os em SO ou S2 , as saídas
serão idênticas. Por exem plo, se c o ­
m eçarm os em SO e a seqüencia de Figura 6.35 Elim inação de estados redundantes: (a)
entrada para quatro bordas de relógio FSM original, (b) FSM equivalente com menos esta­
for 1, 1, 0, 0, a seqüencia de estados dos, (c) desde o lado externo, não é possível distinguir
será SO, 5 / , 5 / , 52, 52, de m odo que as FSM s, que produzem com portam entos de saída
a seqüencia de saída será 0, 1, 1, 0, 0. idênticos para qualquer seqüência de entrada.
Se, ao invés, com eçarm os em 52, a
m esm a seqüencia de entradas resultará na seqüencia de estados 52, 55, 55, SO, SO, de m odo
que a seqüencia de saída será novam ente 0 ,1 ,1 ,0 , 0. De fato, se tentássem os todas as seqüên-
cias possíveis de entrada, encontraríam os que a seqüencia de saída que com eça no estado SO
seria idêntica à que com eça no estado 52. P ortanto, os estados SO e 52 são equivalentes. De
m odo idêntico, os estados 5 / e 55 são equivalentes pela m esm a razão. A ssim , podem os rede­
senhar a FSM com o na Fig. 6.35(b). N a Fig. 6.35(a) e (b), as FSM s têm exatam ente o m esm o
com portam ento - para a m esm a seqüência de entradas, as duas FSM s fornecem exatam ente a
m esm a seqüência de saídas. Se encapsularm os a FSM em um a caixa, com o na Fig. 6.35(c), o
m undo exterior não poderá distinguir entre as duas FSM s baseando-se nas saídas.
Dois estados serão equivalentes se:
• eles atribuírem os m esm os valores às saídas E;

• para todas as seqüências possíveis de entradas, as saídas d a FSM serão as m esm as quando
se inicia em qualquer um desses dois estados.

Para FSM s grandes, uma inspeção visual é incapaz de garantir que rem ovem os todos os es­
tados redudantes - é necessário uma abordagem m ais sistem ática, que passam os a apresentar.

Tabelas de implicação
Intuitivam ente, sabem os que dois estados não poderão E n tra d a s -, x; S a íd a s : y
ser equivalentes se eles produzirem saídas d iferen ­ x'
tes para a m esm a seqüência de entradas. C onsidere a
FSM da Fig. 6.36, que é quase idêntica à FSM da Fig.
6.35 com um a pequena m odificação-agora, no estado
52, a saída produz y= l no lugar de y=0. Portanto, cla­
ram ente os estados S0 e 52 não são equivalentes, por­
que eles têm valores d iferentes de saída. O s estados Figura 6.36 Uma variante da FSM
5 / e 55 produzem a m esm a saída, m as quando reali­ da Fig. 6.35 - os estados S0 e 52 não
zam os um a transição para o correspondente próxim o podem ser equivalentes porque dão
estado a partir de q ualquer um desses dois estados, a valores diferentes de saída e, para os
saída é diferente. P or exem plo, se a FSM com eçar no mesmos valores de entrada, os esta­
estado SI e x tornar-se 0, o próxim o estado (52) dará dos SI e 55 não podem ser equiva­
y = l na saída, m as se a FSM tivesse com eçado em 55, lentes porque seus próximos estados
o próxim o estado (50) daria y=0 na saída. A ssim , 57 não são equivalentes.
Otimizações e Tradeoffs 337

e S3 não podem ser equivalentes, porque a m esm a seqüência de en trad a produz seqüências
diferentes de saída.
Se as saídas de dois estados não forem iguais, é claro que os d o is estados não serão eq u i­
valentes. A lem disso, para um dado valor de entrada, se os próximos estados dos dois estados
não forem equivalentes, então os dois estados tam bém não serão equivalentes. U sando esses
conceitos de estados não equivalentes, a T abela 6.2 descreve um algoritm o para reduzir o
núm ero de estados de um a FSM .

TABELA 6.2 Algoritmo para redução de estados

Passo Descrição

1 Marque como sendo não equivalentes os Obviamente, os estados que têm saídas diferentes não
pares de estados que têm saídas diferentes, podem ser equivalentes.

2 Para cada par de estados não marcado,


escreva os pares de próximos estados que
correspondem aos mesmos valores de
entrada.

3 Para cada par de estados não marcado, assi- Para os mesmos valores de entrada, os estados cujos
nale como sendo não equivalentes os pares próximos estados não são equivalentes não podem ser
de estados cujos pares de próximos estados equivalentes. Cada execução desse passo é chamada
não são equivalentes. Repita esse passo até de uma passada.
que não ocorram mais alterações, ou até que
todos os estados estejam marcados.

4 Combine os pares restantes de estados. Os pares de estados restantes devem ser equivalentes.

Q uando todos os pares possíveis são com parados m anualm ente, o uso de um a tabela g rá­
fica assegura que não deixarem os de exam inar nenhum par. C onsidere a FSM da Fig. 6.35(a).
A FSM tem quatro estados, portanto, há 4" = 16 pares de estados possíveis. A Fig. 6.37(a)
m ostra graficam ente em uma tabela os pares possíveis, com os estados listados ao longo dos
cabeçalhos das linhas e colunas. C ada célula corresponde a um par de estados. Podem os sim ­
plificar o tam anho da tabela se rem overm os as células redundantes (por exem plo, a linha SO
com a coluna SI é o m esm o que a linha SI com a coluna SO) e as células sem sentido ao longo
da diagonal da tabela (o estado SO é obviam ente equivalente ao estado SO). A tabela reduzida
está m ostrada na Fig. 6.37(b).

Figura 6.37 Tabela de pares de estados: (a) tabela original para com parar todos os pares, (b)
tabela mais simples para com parar uma única vez os pares relevantes, (e) após o preenchimento
inicial com as informações de estado da FSM.

A Fig. 6.47(e) m ostra a execução do algoritm o de redução d a Tabela 6.2, passando por
todos os seus passos, para o caso da FSM da Fig. 6.35(a).
338 Sistemas Digitais

No passo 1, cada célula da tabela é exam inada, sendo m arcada com um grande “X ” se os seus
estados tiverem saídas diferentes. Vamos nos referir a essas células com o estando marcadas.
O s estados do prim eiro par (SI, 50) não são equivalentes, porque a saída de 5 0 é y=0, ao passo
que a saída de 5 / é y = l. A seguir, exam inam os os pares de estados ( S2.S0 ), (52,57) e assim
por diante até finalm ente (55.52), m arcando os pares que têm saídas diferentes e resultando
os X s m ostrados na Fig. 6.37(c).
No passo2. para cada célula não m arcada restante, são escritos os pares de próxim os estados.
Há duas células que não foram m arcadas;

• (52.50) (dentro do círculo na Fig. 6.37(c)): quando x = l, o próxim o estado de 52 é 55, ao


passo que o próxim o estado de SO é 5 / (vem os isso exam inando a FSM da Fig. 6.35(a)).
A ssim , escrevem os “(55,57)’' nessa célula (não im porta a ordem ), significando que, para
os estados 52 e 5 0 serem equivalentes, 55 e 5 / devem ser equivalentes. A seguir, co n si­
deram os o caso da entrada x=0, caso em que os próxim os estados são 52 e 50. A ssim ,
escrevem os tam bém “(52,50)’* nessa célula.

• (5 5 ,5 /): quando x=0, os próxim os estados são 5 0 e 52, assim , escrevem os “ (50,52)" na
célula. Q uando x= l, escrevem os “(55,57)” na célula.

No passo 3, são m arcad as c o m o n ão eq u iv a le n te s to d as as c é lu la s n ão m a rc a d a s cu jo s


pares d e p ró x im o s estad o s j á tin h am sid o m arcad o s co m o se n d o não eq u iv alen tes. E x am i­
nan d o a célu la (5 2 ,5 0 ), o p ar d e p ró x im o s e sta d o s (5 5 ,5 /) n ão e stá m a rc ad o nem o p ar de
p ró x im o s esta d o s (52,50) (que p o r acaso é a célu la co rren te), de m o d o q u e não po d em o s
m a rc ar e ss a célu la. D e fo rm a sem elh an te , no c a so d a c é lu la ( 5 5 ,5 /) , o p a r d e p ró x im o s
esta d o s (5 0 ,5 2 ) não e stá m a rc ad o n em o p ar (5 5 ,5 /). A ssim , não p o d e m o s m a rc a r essa
célula.
C om o dem os um a passada no passo 3 sem que houvesse qualquer alteração, não irem os
repeti-lo. Irem os diretam ente para o passo 4.
No passo 4, são declarados equivalentes os pares não m arcados de estados. D esse m odo, 52
e 5 0 são declarados equivalentes e tam bém 55 e SI. Para finalizar esse passo, com binam os os
estados equivalentes da FSM . A pós com binar os estados 52 e 50 e tam bém 55 e 57, obtem os
a FSM da Fig. 6.35(b).
O m étodo que acabam os de em pregar é conhecido com o m étodo da tabela de implicação
para redução de estados.
N atu ra lm e n te , nem to d a F S M p o d e te r o seu n ú m e ro d e e sta d o s re d u z id o . C o m o
exem plo, vam os u sar o m éto d o d a tabela de im p licação na FSM d a Fig. 6.36. C om q u atro
estad o s, a tab ela de im p licação da FSM terá o m esm o tam an h o q u e a d o ex em p lo anterior,
co m o m o strad o na Fig. 6 .38(a). Opasso 1 m arca os p ares d e estad o s co m saíd as d ife re n ­
tes, m o strad o s na Fig. 6 .38(a). Opasso 2 lista, p ara c ad a c é lu la não m arcad a, os p ares de
p ró x im o s esta d o s co m valores d e e n tra d a id ên tico s, co m o tam b ém e stá m o strad o na Fig.
6.38(a).
Na primeira passada do passo 3, e x a m in a m o s p rim e iro a c é lu la d o p ar de estad o s
( 5 2 ,5 /) . N atu ra lm e n te , o p ar de p ró x im o s e sta d o s (5 2 ,5 2 ) é eq u iv a le n te . O p ar de p ró ­
xim o s e sta d o s ( 5 5 .5 /) não está m arcad o , de m odo q u e não p o d e m o s m a rc a r ( 5 2 ,5 /) . A
seguir, ex am in am o s a célu la do p ar d e estad o s ( 5 5 ,5 /) e v erificam o s q u e o p a r de p ró x i­
m os esta d o s (50,52) tem m arcad a a su a célu la. Isso nos d iz q u e 5 5 e SI n ão p o d em ser
eq u iv alen tes (p o rq u e, p ara os m esm o s v alo res de e n tra d a, e le s p o d eriam re a liz a r tra n si­
ções para estad o s não eq u iv alen tes). D esse m odo, m arcam o s a célu la de (5 5 ,5 /). D e m odo
se m e lh a n te , m arcam o s (5 5 ,5 2 ) já q u e o seu p rim e iro p ar de p ró x im o s e sta d o s, (5 0 ,5 2 ),
tem m arcad a a sua célu la. Q uando a prim eira p assad a d o p asso 3 está co m p leta, resu lta a
tab ela da F ig. 6.38(b).
Otimizações e Tradeoffs 339

(b) (
S1 S1

(S2,S2) (S2,S2) S2 (V s 2 )
S2
(53.51) (S3,S1) [S tfS V

(50.52) (50.52) [& ks /


S3 S3
(S3,S1) [5 3 .5 3 ) <S3&n [S & S 3 ) 1 Ä (S3&*)

S1 S2 SO S1 S2 SO S1 S2

Figura 6.38 Tabela cie implicação da FSM da Fig. 6.36: (a) a tabela após a preparação inicial e os
passos l e 2, (b) após a primeira passada do passo 3 por toda a tabela, (c) após a segunda e última
passada por toda a tabela.

C om o a tabela sofreu alterações durante a p rim eira p assad a (m arcam os d o is pares de


estados), deverem os realizar um a s e g u n d a p a ss a d a , porque m odificações na tabela podem
afetar pares de estados que já exam inam os e deixam os desm arcados. N a segunda passada,
exam inam os novam ente o par de estados (5 2 ,5 /). N atural m ente, o par de próxim os estados
(52,52) 6 equivalente. O par de próxim os estados (5 5 ,5 /), entretanto, agora está m arcado e,
portanto, m arcam os (5 2 ,5 /).
C om o todos os pares da tabela estão m arcados, com o se pode ver na Fig. 6 .3 8(c), podem os
concluir que não há estados equivalentes na FSM e. portanto, deixam os a FSM inalterada.
A gora, darem os m ais um exem plo de redução de estados.

► EXEMPLO 6.13 Minimização dos estados de uma FSM usando uma tabela de implicação
Considere a FSM da Fig. 6.39(a). Diferentemente dos exemplos anteriores, essa FSM tem cinco
estados, resultando em mais pares de estados possíveis do que nos exemplos anteriores. A primeira
tarefa a realizar na minimização de estados da FSM e construir uma tabela de implicação de modo
que possamos comparar cada estado com todos os demais, formando pares de estados.

S1
E n tra d a s -, x; S a id a s : y

(S3fS4)
S2 (S2,S1)

S3 (S3.S2)
(S0,S1)

(S4,S2) (S4.S3)
S4
y=1 V=1 (S0,S1) (S0,S0)
(a)
SO S1 S2 S3

(b)
Figura 6.39 Uma FSM que necessita de uma redução de estados: (a) FSM original, (b) a tabela de
implicação após os passos l e 2.

No passo 1 do nosso algoritmo de redução de estados, marcamos com um X os pares de esta­


dos que facilmente podemos ver que não são equivalentes, porque suas saídas são diferentes, como
mostrado na Fig. 6.39(b).
340 Sistemas Digitais

No passo 2, escrevemos todos os pares de próximos estados nas células não marcadas da ta­
bela de implicação, com o mostrado na Fig. 6.39(b). Como há apenas duas combinações possíveis
de entradas (x=0 ou x=l), cada célula não marcada terá dois pares de próximos estados.
Na p rim eira passada do passo 3, marcamos todo par de estados, em que está marcado um dos
pares de próximos estados. Durante a nossa primeira passada pela tabela, examinaremos quatro
pares de estados. Começando com (52,5/), vemos que ambos os pares de próximos estados não
estão marcados. Olhando (55,50), vemos que um dos pares de próximos estados, (55,52), está
marcado, de modo que marcamos a célula de (55,50). Também marcamos (54,50) porque seu par
de próximo estado (54,52) está marcado. Deixamos (54.55) desm arcado já que ambos os seus
pares de próximos estados não estão marcados. Assim, com pletam os a primeira passada. A Fig.
6.40(a) reflete os resultados dessa nossa passada após percorrer toda a tabela de implicação.
Com o tínham os marcado novos pares de estados na primeira passada, realizarem os uma se­
g u n d a p assad a no passo 3. Durante essa passada, não encontram os novas células para serem
marcadas, deixando a tabela inalterada. Assim, vamos para o passo 4.
No passo 4. declaram os com o equivalentes os estados dos pares não m arcados (5 2 .5 /) e
(54,55). Combinamos os estados 52 e 57, e os estados 54 e 55, resultando a nova FSM mostrada
na Fig. 6.40(b). Observe que as duas transições com as condições x ' e x partindo de SO poderiam
ser substituídas por uma única transição sem nenhuma condição.

S1

(S3.S4)
S2 (S2.S1) E n tra d a s : x; S aídas-, y

S3
(S V & U

(S4,S3)
S4
(S0,S0)

SO S1 S2 S3

(a) (b)

Figura 6.40 Tabela de implicação e FSM minimizada: (a) tabela de implicação após a primeira pas­
sada, (b) máquina de estados minimizada com a combinação dos estados 5 / com 52, e 55 com 54.

Neste exemplo, ao reduzir o número de estados de 5 para 3, reduzimos o tamanho mínimo do


registrador de estado de 3 para 2 bits, possivelmente reduzindo o tamanho do circuito. ◄

A lgum as vezes, os estados equivalentes podem se sobrepor. P or exem plo, em um a FSM


com estados {70, 7 / , T2, 7 5 ,7 4 } , assum a que você verificou que os pares de estados (7 0 ,7 /),
( 7 /.7 2 ) e (77,70) são equivalentes. C om o você lida com as equivalências sobrepostas? A res­
posta é sim ples: os três estados 70, 7 / e 72 podem ser com binados em um único estado.
O método da tabela de im plicação é adequado para otim izar m anualm ente pequenas FSMs,
com o as introduzidas nos exem plos anteriores, m as que rapidam ente pode se tornar de difícil
m anejo para FSM s de m ais estados. Considere a FSM de 15 estados da Fig. 6.41. Sua tabela de
im plicação reduzida iria requerer 14 linhas, 14 colunas e 105 pares de estados. Com duas com bi­
nações de entradas (a saber, a=0 e a= l). cada par de estados teria dois pares de próxim os estados
e, no pior caso, precisaríam os verificar 105*2=210 pares de próxim os estados apenas durante a
nossa prim eira passada. O que aconteceria se a m esm a FSM tivesse quatro entradas (digam os,
a, b, c e d) em vez de um a? Com quatro entradas, haveria 4 “=16 com binações de entradas (isto
é, a ' b ' c 1d 1, a ' b 1c ' d, a ' b ' c d ' , . . . , abcd) e até 16 pares de próxim os estados em cada uma das
células da tabela de implicação. Se, em vez disso, a FSM tivesse, digam os, 100 estados (um nú­
mero razoável), a tabela de im plicação teria na ordem de 100* 100 = 10.000 pares de estados.
Otimizações e Tradeoffs 341

E n tr a d a s : x; S a id a s : z

Figura 6.41
15 estados.

Portanto, a redução de estados é realizada geralm cnte usando-se ferram entas autom atiza­
das. No caso de F SM s m enores, as ferram entas podem im plem entar o m étodo da tabela de
im plicação. No caso de FSM s m aiores, pode ser necessário que as ferram entas recorram a
heurísticas para evitar tam anhos de tabela ou núm eros de pares de próxim os estados excessi­
vam ente grandes.
M esm o quando reduzim os o núm ero de estados, não tem os garantia de que tal redução
irá realm ente dim inuir o tam anho da lógica resultante. U m a razão é que a redução de estados
poderá não dim inuir o núm ero de bits necessários ao registrador de estado - a redução de es­
tados de 15 para 12 não dim inui o tam anho m ínim o do registrador de estado, que é quatro em
qualquer um dos casos. M esm o que a redução de estados venha a dim inuir o tam anho do re­
gistrador de estado, um a outra razão é que, se for usado um registrador m enor, o tam anho da
lógica com binacional possivelm ente venha a aumentar, já que a lógica necessita decodificar
os bits de estados. N a realidade, portanto, pode ser necessário que as ferram entas au tom ati­
zadas de redução de estados im plem entem a lógiea com binacional antes e após a redução de
estados, para determ inar se, em últim a análise, a redução de estados produz m elhoram entos
em um a FSM em particular.

Codificação de estados
A codificação de estados é a tarefa de atribuir um a representação única de bits para cada
um dos estados de um a FSM . A lgum as codificações de estados podem otim izar o circuito
resultante do bloco de controle reduzindo o tam anho do circuito, ou perm itindo tradeoff entre
tam anho e desem penho. D iscutirem os agora diversos m étodos de codificação de estados.

Codificações binárias alternativas com largura de bits mínima


A nteriorm ente, atribuím os um a codificação binária única para cad a um dos estados de um a
FSM usando o m enor núm ero possível de bits. Isso constitui um a codificação binária com
largura de bits mínima. Se houvesse quatro estados, usaríam os dois bits. Se houvesse cinco,
seis, sele ou oito bits, usaríam os três bits. O estado era representado por essa codificação no
registrador de estado do bloco de controle. Há m uitas m aneiras de se m apear as codificações
binárias com largura m ínim a de bits para um conjunto de estados. D igam os que nos sejam
fornecidos quatro estados. A, C e D. Um a codificação é A :0 0 ,5:01, C: 10 e D: 11. U m a outra
é A:01, B: 10. C : l l e D:00. De fato, h á 4*3*2*! = 4! = 24 codificações possíveis com dois bits
(4 escolhas de codificação para o prim eiro estado, 3 para o seguinte, 2 para o próxim o e I para
o últim o estado). Para oito estados, há 8!, ou seja, acim a de 40.000 codificações possíveis com
ires bits. Para N estados, há /V! (fatorial de N) codificações possíveis - um núm ero enorm e para
qualquer N m aior ou igual a 10. U m a codificação pode resultar em uma lógica com binacional
m enor do que outra. A s ferram entas autom atizadas podem tentar diversas codificações dife­
rentes (m as não todas as N\) para reduzir a lógica com binacional do bloco de controle.
342 Sistemas Digitais

► EXEMPLO 6.14 Codificação binária alternativa para um temporizador que liga um laser durante três ciclos
No Exemplo 3.7, codificamos os estados usando E n tra d a s-, b; S a íd a s : x
uma codificação binária direta, começando com
00, então 01, a seguir 10 e finalmente 11. O projeto
resultante tinha 15 entradas de portas (ignorando
os inversores). Podemos tentar a codificação biná­
ria alternativa mostrada na Fig. 6.42.
A Tabela 6.3 fornece os estados tabulados
com a nova codificação, mostrando as diferenças
da codificação original.
Da tabela de estados, obtem os as seguintes tem porizador de laser com uma codificação
equações para as saídas da lógica combinacional
binária alternativa de estados.
de um bloco de controle:
x = s l + s0 (observe na tabela que x = l TABELA 6.3 Tabela de estados, com
se s 1=1 ou s 0 = l) codificação alternativa, para o bloco
n l = s 1 ' sOb' + s l's O b + s ls O b ' + slsOb de controle do sistema que liga um
n l = s l ' s0 + s l s O laser

n l = s0 Entradas Saídas
n0 = s 1 ‘ s 0 ' b + s l ' sOb + s T s O b ' sl sO b X nl n0
n0 = s 1' s 0 ' b + s l's 0 b + s l's 0 b +
Des 0 0 0 0 0 0
sTsO b1
0 0 1 0 0 1
n0 = s 1 ' b ( s 0 ' + s0) + s l ' s0 (b + b')
n0 = s l ' b + s l ' sO Ligl 0 1 0 1 1 1

0 1 1 1 1 1
O circuito resultante terá apenas 8 entradas de por­
tas: 2 para x, O para n l (n l está ligado diretamente a sO Lig2 1 1 0 1 1 0
por uma conexão) e 4+2 para n0. Oito entradas de porta 0
1 1 1 1 1
é significativamente menos do que as quinze que foram
necessárias na codificação binária do Exemplo 3.7. Essa Lig3 1 0 0 1 0 0
codificação reduz o tamanho sem aumentar o atraso, re­ 1 0 1 1 0 0
presentando assim uma otimização. ◄

Codificação usando um bit por estado


N ão há exigência de que a codificação de um conjunto de estados deva ser feita usando-se o
m enor núm ero possível de bits. P or exem plo, poderíam os codificar quatro estados A, 5 . C c
D , usando três bits ao invés de apenas dois bits, com o A:000, 5:011, C:110 e D: 111. O uso de
m ais bits irá requerer um registrador de estado m ais largo, m as possivelm ente m enos lógica.
Um esquem a popular de codificação é cham ado de um bit por estado (one-hot encoding), no
qual o núm ero de bits usado na codificação é o m esm o que o de estados, sendo que cada bit
corresponde exatam ente a um estado. Por exem plo, um a codificação com um bit por estado
para os quatro estados A, 5 , C e D usará quatro bits, com o A:0001, 5:0010, C:0100 e D:1000.
A principal vantagem dessa codificação que usa um bit por estado está na velocidade - com o
o estado pode ser detectado a partir de um bit apenas e, portanto, com o não é necessário d e­
codificá-lo usando um a porta A N D , o próxim o estado do bloco de controle e a lógica de saída
podem envolver m enos portas e/ou portas com m enos entradas, resultando um atraso menor.

► EXEMPLO 6.15 Exemplo de codificação que usa um bit por estado


Considere a FSM simples da Fig. 6.43, que repetidamente gera a sequência de saída: 0 ,1 ,1 ,1 , 0,1,
1,1, etc. Uma codificação binária mínima direta está mostrada. A seguir, ela é riscada e substituída
por uma codificação que usa um bit por estado.
Otimizações e Tradeoffs 343

A codificação binária produz a tabela de E n tra d a s-, nenhuma; S a íd a s : x


estados mostrada na Tabela 6.4. As equações x=0 x=1
resultantes são:
nl = s l ' sO + s 1sO'
nO = sO'
x = s l + sO
A codificação que usa um bit por estado
produz a tabela m ostrada na Tabela 6.5. As
equações resultantes são:
n3 = s2
n2 = sl
TABELA 6.4 Tabela de estados
nl = sO
que usa codificação binária
nO = s3
x = s3 + s2 + s l Entradas Saídas

A Fig. 6.44 m ostra os circu ito s resu l­ sl sO nl nO X


tantes de cada codificação. A codificação
A 0 0 0 1 0
binária produz m ais portas, mas requer dois
níveis de lógica, o que c m ais im portante. B 0 1 1 0 1
A codificação usada neste exem plo, com
C 1 0 1 1 1
um bit por estado, requer apenas um nível
de lógica. O bserve que neste exem plo a ló­ D 1 1 0 0 1
gica necessária para gerar o próxim o estado
consiste sim plesm ente em conexões (outros TABELA 6.5 Tabela de estados que usa
exem plos poderão ex ig ir algum a lógica). codificação com um bit por estado
A Fig. 6.4 4 (c) ilustra que na codificação
de um bit por estado o atraso é menor. Isso Entradas Saídas
significa que neste circuito poderíam os usar s3 s2 sl sO n3 n2 nl nO X
um relógio mais veloz, com uma freqüencia
mais elevada. M A 0 0 0 1 0 0 1 0 0

B 0 0 1 0 0 1 0 0 1

C 0 1 0 0 1 0 0 0 1

D 1 0 0 0 0 0 0 1 1

eCO
o
o.

■8 8 H
<s> binária
~0o5 oß l—
c
_a> 4 W i bit por estado
o
Slc 2 -

co
E J___I__ I___L
CO 1 2 3 4
atraso (atrasos de portas)

(O

Figura 6.44 A codificação com um bit por estado pode reduzir o atraso: (a) codificação binária mínima, (b)
codificação usando um bit por estado e (c) em bora os tamanhos totais possam ser aproximadamente iguais (a
codificação de um bit por estado usa menos portas, mas mais flip-flops), a codificação de um bit por estado
produz um caminho crítico mais curto.
344 Sistemas Digitais

► EXEMPLO 6.16 Temporizador para ligar um laser durante três ciclos, usando codificação
de um bit por estado
No Exem plo 3.7, codificam os os es­ E n tra d a s-, b; Saidas-, x
tados usando uma codificação binária
direta, começando com 00, então 01, a
seguir 10 e finalm ente 11. Aqui, reali­
zaremos uma codificação de um bit por
estado para os quatro estados, reque­
rendo quatro bits, com o m ostrado na
Fig. 6.45.
A Tabela 6.6 mostra os estados da
FSM da Fig. 6.45. usando a codificação Figura 6.45 D iagram a de estados para um
de um bit por estado. Não mostram os tem porizador de laser, usando codificação de
todas as linhas possíveis, já que a tabela um bit por estado.
seria grande demais.
O últim o passo é projetar a lógica
combi nacional. A dedução das equa­
TABELA 6.6 Tabela de estados para o controlador
ções de cada saída diretamente da tabela
ativador de laser, usando codificação de um bit por estado
(assumindo que todas as outras com bi­
nações de entrada são don’t care) e a Entradas Saídas
minimização algébrica dessas equações
s3 s2 sl sO b x n3 n2 nl n0
produzem o seguinte:
0 0 0 1 0 0 0 0 0 1
x = s3 + s2 + s l Des
n3 = s2 0 0 0 1 1 0 0 0 1 0
n2 = s l
0 0 1 0 0 1 0 1 0 0
n l = s0*b Ligl
n0 = s 0 *b ' + s3 0 0 1 0 1 1 0 1 0 0

E s s e c ir c u ito irá r e q u e r e r 0 1 0 0 0 1 1 0 0 0
3+0+0+2+(2+2) = 9 entradas de porta. Lig2
0 1 0 0 1 1 1 0 0 0
A ssim , o circuito tem m enos entradas
de porta do que as 15 da codificação 1 0 0 0 0 1 0 0 0 1
binária original - m as deve-se tam ­ Lig3
1 0 0 0 1 1 0 0 0 1
bém levar em conta que a codificação
de um bit por estad o usa m ais flip-
flops.
Mais importante, o circuito com codificação de um bit por estado é ligeiramente mais rápido.
O caminho crítico desse circuito é n0 = s0 * b 1 + $3. O caminho crítico do circuito com codifica­
ção binária regular é n0 = s l 's O 'b + s ls O '. Esse último circuito requer uma porta AND de três
entradas que alimenta uma porta OR de duas entradas, ao passo que o circuito com codificação
de um bit por estado tem uma porta AND de duas entradas que alimenta uma porta OR de duas
entradas. Como uma porta AND de duas entradas tem na realidade um atraso ligeiramente menor
do que uma porta AND de três entradas, o circuito que usa a codificação de um bit por estado tem
um caminho crítico menor. M

N o caso d c ex em p lo s com m ais estad o s, as red u çõ es no cam in h o crítico , o b tid a s com


a c o d ific a ç ã o de um bit p o r estad o , podem ser ain d a m aio res e as re d u ç õ e s no tam an h o
da ló g ica tam bém podem ser m ais p ro n u n ciad as. E m alg u m ponto, n atu ralm en te, a c o d i­
ficação de um bit p o r e sta d o re su lta rá em um re g istra d o r de estad o g ran d e d e m a is - p o r
exem plo, na co d ificação b in ária, um a F S M com lü ü ü estad o s irá re q u e re r um re g istra d o r
de e sta d o com 10 bits, ao p a sso q ue na c o d ific a ç ã o de um bit p o r e sta d o se rá n ecessário
um reg istrad o r de estad o de 1000 bits, o q u e p ro v av elm en te seria g ran d e d e m a is p ara ser
levado em co n sid eração . N esses caso s, p o d eríam o s c o n sid e ra r co d ificaçõ es q u e usam um
Otimizações e Tradeoffs 345

n ú m ero d e bits in te rm ed iá rio en tre os de um a c o d ific a ç ã o b in á ria e de um a c o d ific a ç ã o


q ue usa um bit p o r estado.

Codificação de saída
A lgum as descrições de problem as podem exigir que um a dada seqüência de valores seja g e­
rada em um conjunto de saídas. P or exem plo, um problem a poderia requerer que a seqüência
a seguir fosse produzida de form a repetida em duas
saídas, x e y: 00, 11, 10 e 01. Poderem os descrever o E n tr a d a s : nenhuma; Saidas-, x , y

seu com portam ento usando a FSM de quatro estados xy=00 xy=01

A. B, C c D. m ostrada na Fig. 6.46. U m a codificação


binária im ediata para esses estados seria: A:00. B:01,
C:10 e D: 11, com o m ostrado na Fig. 6.46. Q uando
projetarm os um bloco de controle para esse sistem a,
terem os um registrador de estado de dois bits, uma
lógica para d eterm in ar o próxim o estad o e um a ló ­
xy=11 xy=10
gica para produzir a saída a partir do estado atual. No
entanto, se usássem os um a codificação na qual os es­ Figura 6.46 FSM para um a dada
tados fossem idênticos aos valores de saída de cada seqüência.
estad o , faria sen tid o ? Se u sarm os tal co d ificação ,
continuarem os a ter um registrador de estado de dois bits e um a lógica para gerar o próxim o
estado. E ntretanto, não terem os m ais a lógica que gera a saída a partir do estado atual. A s saí­
das sim plesm ente estarão ligadas por conexões diretam ente aos bits do registrador de estado,
reduzindo assim o núm ero necessário de portas lógicas.
Se um a FSM tiver no m ínim o tantas saídas q u an tas as necessárias para a codificação
binária dos estados e se cada estado tiver um a com binação única de saída, então poderem os
considerar o uso dessa com binação de saída para um estado com o sendo o código do próprio
estado. Tal form a de codificação pode reduzir a quantidade de lógica requerida. D essa form a,
elim ina-se a necessidade de um a lógica para gerar saídas a partir do código do estado atual -
essa lógica ficará reduzida apenas a conexões.
O uso da codificação de saída requer que o sistem a tenha no m ínim o tantas saídas quantos
os bits de um a codificação binária m ínim a de estados. C aso contrário, as saídas não p ode­
rão representar códigos suficientes para identificar de form a única todos os estados. A lêm
disso, não poderem os usar a codificação de saída se a seqüência de saída desejada contiver
os m esm os valores de saída em dois estados diferentes, j á que cada código de estado deve ser
único. P or exem plo, se quiserm os gerar de form a repetida a seqüência 00, 11,01 e 11, não
poderem os usar a codificação de saída, porque, se o fizéssem os, então dois estados teriam os
m esm os códigos. M esm o em um a situação com o essa, no entanto, poderem os tentar usar a
codificação de saída em tantos estados quanto fo r possível.

► EXEMPLO 6.17 Gerador de seqüência, usando codificação de saída


O Exemplo 3.10 envolvia o projeto de um gerador
de seqüência, no qual tínhamos de gerar a seqüência
0001. 0011,1100 e 1000 usando um conjunto de qua­
tro saídas, com o m ostrado na Fig. 6.47. Naquele
exemplo, codificamos os estados usando codificação
binária, na qual A era 00, B era 01, C era 10 e D era
11. No presente exemplo, usarem os codificação de
saída. As saídas têm bits suficientes, quatro, ao passo
que precisamos de no mínimo dois bits para codificar
os quatro estados. Assim, neste exemplo, poderemos
considerar o uso de codificação de saída. Figura 6.47 FSM para um gerador de
seqüência.
346 Sistemas Digitais

A Tabela 6.7 mostra uma tabela de es­ TABELA 6.7 Tabela de estados parcial do bloco
tados parcial para o gerador de seqüência, de controle de um gerador de seqüência que usa
usando-se codificação de saída. Observe codificação de saída
que as saídas w, x, y e z não precisam apa­
Entradas Saídas
recer na tabela, já que elas serão as mesmas
que s3, s2, s l e sO. Usamos uma tabela s3 s2 sl sO n3 n2 nl nO
parcial para evitar de mostrar todas as 16
A 0 0 0 1 0 0 1 1
linhas e assumimos que todas as linhas que
não estão m ostradas representam casos B 0 0 1 1 1 1 0 0
don 7 care. C 1 1 0 0 1 0 0 0
Da tabela, deduzim os as equações de
cada saída como segue: D 1 0 0 0 0 0 0 1

n3 = s l + s2
n2 = sl
nl = s 1 ' sO
nO = s 1 'sO + s3s2'

Obtivemos essas equações examinando


todos os ls para uma saída em particular
e determ inando por inspeção visual uma
equação mínima com as entradas tal que
gerasse esses ls e também os Os das outras
casas mostradas da coluna (todos os outros
valores de saída, não mostrados, são don 7
care).
A Fig. 6.48 mostra o circuito final. Ob­
serve que não há lógica de saída, as saídas
w. x, y e z estão conectadas diretam ente ao
registrador de estado.
Na realidade, em com paração com o
circuito obtido no Exemplo 3.10, que usa
codificação binária, o circuito com codi­
ficação de saída da Fig. 6.48 parece usar
mais transistores. Em outros exemplos, um
circuito com codificação de saída pode usar
Figura 6.48 Bloco de controle de um gerador de
menos transistores. M
seqüência que usa codificação de saída.
D ependerá do próprio exem plo se as
codificações, de um bit por estado, binária, de saída ou que usa algum a variante, resultarão
em m enos transistores ou em cam inho crítico menor. A ssim , as ferram entas m odernas podem
tentar diversas codificações em um dado problem a para ver qual delas funciona melhor.

FSMs Moore versus Mealy

Arquitetura Básica Mealy


A té agora, todas as FSM s descritas neste livro têm sido de um tipo conhecido com o FSM
M oore. U m a FSM Moore é um a FSM cujas saídas são um a função do estado da FSM . Um
tipo alternativo dc FSM é a FSM M ealy. U m a FSM Mealy é um a FSM cujas saídas são um a
função dos estados da FSM e das entradas. A lgum as vezes, um a FSM M ealy produz m enos
estados do q ue um a FSM M oore, representando portanto um a otim ização. O casionalm ente,
esses estados em m enor núm ero são obtidos às custas de com plexidades de tem po que devem
ser tratadas, representando um tradeoff.
Otimizações e Tradeoffs 347

L e m b re -s e d a a rq u ite tu r a p a d rã o d e um
b lo c o de c o n tro le , q u e foi m o s tra d a n a F ig .
3.48 e re p ro d u z id a na F ig. 6 .4 9 . A a rq u ite tu ra
m o stra um b lo c o d e ló g ica c o m b in a c io n a l q u e
é resp o n sáv el p ela c o n v ersão d o e sta d o atual e
d as e n tra d a s e x te rn a s no p ró x im o e sta d o e nas Registrador
clk de estado
saíd as ex tern as. >
C om o as saídas de um a FSM M oore são fun­ tu
ções som ente do estado atual (e não das entradas
ex tern as), então p o d em o s re fin ar a arq u ite tu ra Figura 6.49 Arquitetura padrão de um
bloco de controle.
dividindo-a em dois blocos de lógica com binacio-
nal: o bloco da lógica de próximo estado converte
o estado atual e as entradas externas em um próxim o estado e o bloco da lógica de saída
converte o estado atual (m as não as entradas externas) em saídas externas, com o m ostrado na
Fig. 6.50(a).
Em com paração, as saídas de um a FSM M ealy são funções de am bos o estado atual e as
entradas externas. A ssim , o bloco de lógica de saída de um a FSM M ealy usa com o entrada o
estado atual e as entradas externas da FSM , ao invcs de som ente o estado atual, com o m os­
trado na Fig. 6.50(b). A lógica de próxim o estado 6 a m esm a de um a M oore, usando com o
entrada am bos o estado atual e as entradas externas da FSM .

Na FSM Mealy, acrescenta-se esta conexão

Cú c0n) 5? g
no 0
C/> Q>
? c/> c/>
V)

2 U_ m
2V 5I
u_ 1
c m c
§ -o o -o

(a) (b)

Figura 6.50 Arquiteturas de blocos de controle para: (a) FSM Moore e (b) FSM Mealy.

G raficam ente, as atribuições de saída de um a FSM


M ealy são listadas com cada transição, e não com cada
estado, porque cad a transição representa um estado E n tra d a s : b; S a íd a s : x
atual e um valor de entrada em particular. A Fig. 6.51 /x=0
m ostra um a FSM M ealy de dois estados, com um a en ­
trada b e um a saída x. Q uando está no estado S0 e b=0,
a FSM coloca x=0 na saída e perm anece no estado S0,
com o está indicado pela transição rotulada com “ b 1/
x= (T . Q uando está no estado S0 e b = l, a FSM coloca
x = l na saída e passa para o estado SI. U sam os o “/ ” Figura 6.51 Uma FSM Mealy asso­
sim plesm ente para separar as condições de entrada das cia as saídas às transições, não aos
atribuições de s a íd a - aqui, o *7” não significa “divi- estados.
348 Sistemas Digitais

d ir” . C om o a transição de S I para SO sem pre ocorrerá, independentem ente de qual seja o
valor de entrada, listam os a transição com o i4/x s 0” , significando que não há co n d ição de
entrada, m as há um a atribuição de saída.

As FSMs Mealy podem ter menos estados


N o caso de alg u n s c o m p o rtam en to s, a d ife re n ç a a p a re n te m e n te p eq u en a e n tre um a FSM
M ealy e um a M o o re, ou seja, q ue a saíd a d e um a FSM M ealy é fu n ção d o e sta d o e d as
en trad as atu ais, p o d erá levar a m en o s estad o s q u an d o esses co m p o rta m e n to s forem im p le­
m en tad o s na fo rm a de m áq u in as M ealy. P o r ex em p lo , c o n sid ere a F SM sim p les d o bloco
dc c o n tro le d a m áq u in a d e fo rn ecer refrig e ra n te d a Fig. 6 .5 2 (a). Q u an d o se faz f = l, um
re frig e ra n te c forn ecid o . A m áq u in a in icia no e sta d o Iníc (Início), o q ual faz f=0 e ativa
um a saída z e r a r = l , a qual su p o stam en te zera um d isp o sitiv o usad o p a ra c o n ta r o v alo r d e­
p o sitad o em m o ed as na m áq u in a de fo rn ecer refrig eran te. A F SM faz um a tran sição para
o e sta d o Esp (Esperar), no qual a FSM e sp e ra para se r in fo rm ad a, p o r m eio da e n tra d a
s u f i ci e n te , q ue um a q u an tia su ficien te foi d e p o sita d a em m oedas. L o g o q u e um a q u an tia
su ficien te tiv er sid o d ep o sitad a, a F S M fará um a tra n siç ã o para o e sta d o For (Fornecer),
o qual fo rn ecerá um a g arrafa de re frig e ra n te fazen d o d = l na saíd a. E m seg u id a, a F SM
fará um a tran sição reto rn an d o ao estad o Iníc. (O s leito res q u e leram o C a p ítu lo 5 p o d e ­
rão n o ta r q u e este ex e m p lo e um a versão sim p lific a d a d o E x em p lo 5 . 1; no e n ta n to , para
a c o m p a n h a r a p resen te d iscu ssão , não há n ecessid ad e de e sta r fam iliarizad o com aq uele
exem plo.)

E n tra d a s : suficiente (bit) E n tra d a s :suficiente (bit)


S a íd a s : f, zerar (bit) S aídas-, f, zerar (bit)

/ f=0, zerar=1

cik—n_n_n_n_p_n cik — -TT— n — r i — Ti— n _ n

________ r h _ _ _ suncierue
_ _ r h
E n tra d a s : suficiente I 'I c n ir d a a s :

E s ta d o : I |E | | I |

_ I

(b)

Figura 6.52 FSM s para blocos de controle de uma máquina de fornecer refrigerante: (a) a FSM
Moore tem as ações nos estados e (b) a FSM Mealy têm as ações nas transições, resultando em
menos estados neste caso.

A Fig. 6.52(b) m ostra um a FSM M ealy para o m esm o bloco de controle.


N o diagram a de e s­ O estado inicial Iníc não realiza nenhum a ação em si. m as faz um a transição
tados de uma F S M incondicional para o estado Esp , o qual realiza as ações de inicialização f=0 e
M ealy, com o no das z e r a r = l. No estado Esp, um a transição com a condição s u f i c i e n t e ') retorna
F S M s M oore, seguim os ao estad o Esp sem realizar nenhum a ação. O u tra transição, com a condição
a convenção de que Os s u f i ci e n te , executa a ação f= l e leva a FSM de volta ao estado Iníc. O bserve
são a trib u íd o s im p lic i­ que a FSM M ealy não precisa do estado For para fazer f = l; essa ação é rea­
tamente às sa íd a s sem
lizada durante um a transição. D esse m odo, fom os capazes de criar um a FSM
a tribuição.
M ealy contendo m enos estados do que um a FSM M oore.
Otimizações e Tradeoffs 349

O diagram a de estados da Fig. 6.52(b) usa um a convenção sim ilar à que usam os com as
FSM s do lipo M oore (Seção 3.4), ou seja, um 0 e atribuído im plicitam ente a q ualquer saída
que explicitam ente não tenha nenhum a atribuição. C om o no caso de m uitas FSM s do tipo
M oore, continuarem os a fazer atribuições explícitas com Os se essas atribuições forem funda­
m entais para o com portam ento da FSM (com o na atribuição f =0 da Fig. 6.52(b)).

► EXEMPLO 6.18 FSM para um relógio de pulso com bipe, usando uma máquina Mealy
Crie uma FSM para um relógio de pulso que pode mostrar um de quatro registradores ajustando
duas saídas s l e s2, as quais controlam um multiplexador 4x 1 que deixa passar o conteúdo de um
dos quatro registradores. Os quatro registradores correspondem à hora atual do relógio (sls0=00),
ao horário de alarme (01), à data (10) e ao tem po de um cronôm etro (11). A FSM deve percorrer
uma seqüência indo para o próximo registrador, na ordem listada acima, a cada vez que um botão
b é pressionado (assum a que b está sincronizado com o relógio, permanecendo alto por apenas 1
ciclo de relógio toda vez que o botão é apertado). A cada vez que o botão é pressionado, a FSM
deve colocar uma saída p em 1, fazendo com que um bipe seja ouvido.

E n tra d a s -, b; S aídas-. s1,s0, p E n tra d a s : b; S a íd a s : s1,s0, p

Hora ) ) b7s1s0=00, p=0

b/s1s0=00, p=1

Alarme j )b7s1s0=01, p=0

b/s1s0=01, p=1
(a)
Data ) ) b7s1s0=10, p=0

b/s1s0=10, p=1

C rnm tro) ) b7s1s0=11, p=0

b/s1s0=11, p=1

Figura 6.53 A FSM de um relógio de pulso que em ite


um bipe (p = l) quando o botão 6 pressionado (b= l): (a)
Mealy e (b) Moore.

A Fig. 6.53(a) mostra uma FSM Mealy que descreve o com portam ento desejado. Observe
que a FSM Mealy descreve facilmente o comportamento do bipe, simplesmente fazendo p=l nas
transições correspondentes aos apertos de botão. Na FSM Moore da Fig. 6.53(b). tivemos que
acrescentar um estado extra a cada par de estados da Fig. 6.53(a). Cada um desses estados extras
realiza a ação p=l e faz uma transição incondicional para o próximo estado.
Observe que a FSM Mealy tem menos estados do que a máquina Moore. Uma desvantagem 6
que não temos garantia de que o bipe irá durar no mínimo um ciclo de relógio devido a questões
envolvendo o tempo, conforme iremos descrever. ◄

Questões envolvendo o tempo nas FSMs do tipo Mealy


A s saídas de um a FSM M ealy não estão sincronizadas com as bordas de relógio, m as pelo
contrário podem se m odificar entre as bordas de relógio quando um a entrada apresenta alte­
rações. Por exem plo, considere o diagram a de tem po m ostrado na Fig. 6.52(a) para a FSM
M oore de um a m áquina de fornecer refrigerante. O bserve que a saída f torna-se 1 não ime-
350 Sistemas Digitais

dicitamente após a entrada s u f i ci e n te ter se tornado 1, m as na primeira borda de relógio


após s u f i c i e n t e ler se tornado 1. Em com paração, o diagram a de tem po da FSM M ealy da
Fig. 6.52(b) m ostra que a saída f torna-se 1 imediatamente após a entrada s u f i c i e n t e ter
se tornado 1. A s saídas do tipo M oore estão sincronizadas com o relógio; particularm ente,
elas som ente se alteram quando se entra em um novo estado. Isso significa que as saídas do
tipo M oore m odificam -se som ente um pouco após a borda de subida do relógio carregar um
novo estado no registrador de estado. Em com paração, as saídas do tipo M ealy poderão se
m odificar não apenas quando se entra em um novo estado, m as tam bém a q ualquer instante
em que as entradas apresentarem alterações, porque as saídas do tipo M ealy são funções tanto
do estado com o das entradas. T iram os vantagem desse fato para elim in ar o estado For da
FvSM M ealy da m áquina de fornecer refrigerante da Fig. 6.52(b). O bserve, entretanto, que no
diagram a de tem po a saída f da FSM M ealy não permanece 1 durante um ciclo completo de
relógio. Se estiverm os inseguros sobre o intervalo de tem po em que f perm anece alto ser su­
ficientem ente longo, poderem os incluir um estado For na FSM M ealy. Esse estado lerá um a
única transição, sem nenhum a condição e com ação d = l, apontando de volta ao estado Iníc.
N esse caso, d seria 1 durante m ais de um ciclo de relógio (m as m enos de dois ciclos).
E sta característica da m áquina do tipo M ealy das saídas serem funções do estado e das en­
tradas, perm itindo que em alguns casos o núm ero de estados seja reduzido, tam bém tem um a
propriedade indesejável: se as entradas apresentarem glitches durante os ciclos de relógio,
então o m esm o poderá ocorrer com as saídas. A o usar um a FSM M ealy, um projetista deve
determ inar se esses glitches representam um problem a para um dado circuito em particular.
U m a solução para os glitches é inserir flip-flops entre as entradas assíncronas e a lógica de
um a FSM M ealy, ou entre a lógica e as saídas da FSM . Tais flip-flops tornarão síncrona a
FSM M ealy e as saídas irão se m odificar a intervalos previsíveis. N aturalm ente, esses flip-
flops introduzem um atraso correspondente a um ciclo de relógio.

Implementação de uma FSM Mealy TABELA 6.8 Tabela de estados Mealy


U sando o m étodo da Tabela 3.2, criam os um bloco para a máquina de fornecer refrigerante
de controle que im plem enta um a FSM M ealy de
Entradas Saídas
m odo aproxim adam ente idêntico ao que usam os
para criar os blocos de controle das FSM s do tipo s0 suficiente n0 d zerar
M oore da S eção 3.4. A única d iferen ça é que, 0 0 1 0 1
quando criam os um a tabela de estado, os valores In íc
0 1 1 0 1
de saída de todas as linhas de um estado em par­
ticular da FSM não serão necessariam ente idênti­ 1 0 1 0 0
Esp
cos. Por exem plo, a Tabela 6.8 m ostra um a tabela
1 1 0 1 0
de estados para a FSM M ealy da Fig. 6.52(b). O b­
serve q ue a saída f poderia ser 0 no estado Esp
(s 0 = l) se s u f ic ie n te = 0 , m as deveria ser 1 se s u f i c i e n t e = l . Em com paração, na tabela de
estados do tipo M oore, os valores de saída eram todos idênticos em um dado estado. D ada a
tabela de estados da Tabela 6.8, prosseguiríam os im plem entando a lógica com binacional da
m esm a m aneira que foi descrito na Seção 3.4.

Combinação de FSMs dos tipos Moore e Mealy


V e ro s d o is “o o ” da Freqüentem ente, os projetistas utilizam FSM s que são um a com binação dos ti­
p a la vra M oore com o pos M oore e Mealy. Tal com binação permite que o projetista especifique algum as
sendo estados pode ações nos estados e outras nas transições. Essa com binação oferece a vantagem do
a ju d á -lo a lem b ra r que núm ero reduzido de estados de um a FSM Mealy e, além disso, evita que as ações
as ações de uma F S M de um estado apareçam repetidas em todas as transições que saem desse estado.
M oore ocorrem nos Essa sim plificação é realm ente apenas uma conveniência para um projetista des­
estados, a o p a sso que crever a FSM. Provavelm ente, a im plem entação subjacente será igual à de uma
as de uma M ea ly estão
FSM M ealy que tem as ações repetidas nas transições que saem de um estado.
n as transições.
Otimizações e Tradeoffs 351

► EXEMPLO 6.19 FSM para um relógio de pulso com bipe, usando uma máquina M oore/M ealy combinada
A Fig. 6.54 mostra o diagrama de estados de E n tra d a s : b; S a íd a s : s1,s0, p
uma FSM Moore/Mealy combinada que des­
creve o relógio de pulso com bipe do Exem ­
plo 6.18. A FSM tem o mesmo número de es­
tados que a FSM Mealy da Fig. 6.53(a), por­
que a FSM ainda está associando o compor­
tamento do bipe p=l às transições, evitando a
necessidade de estados extras para descrever
o bipe. No entanto, o diagrama de estados da
Figura 6.54 A com­
FSM combinada é de mais fácil compreensão
do que o da FSM Mealy, porque as atribui­ bi nação de FSM s
ções feitas a slsO estão associadas aos esta­ dos tipos M oore e
dos e não duplicadas em todas as transições M ealy produz uma
que saem de cada estado. ◄ FSM m ais sim ples
para um relógio de
pulso.

6.4 TRADEOFFS DE COMPONENTES DE BLOCO OPERACIONAL


No Capítulo 4, criam os diversos com ponentes que são úteis em blocos operacionais. Naquele
capítulo, criam os as versões mais básicas e fáceis de com preender desses com ponentes. Nesta
seção, descreverem os m étodos para construir versões mais rápidas ou m enores de alguns deles.

Somadores mais rápidos


A adição de dois núm eros é um a operação ex trem am ente com um em circu ito digitais, de
m odo que faz sentido para nós tentar criar um som ador que seja m ais rápido do que um so-
m ador com propagação de “vai um ” . L em bre-se de que um som ador com propagação do bit
de transporte de “vai um ” requer que os bits de “vai um " propaguem -se através de todos os
som adores com pletos antes que todas as saídas fiquem corretas. O cam inho m ais longo atra­
vés do circuito, m ostrado na Fig. 6.55, é conhecido com o caminho crítico do circuito. C om o
cada som ador com pleto tem um atraso correspondente ao atraso de duas portas, então um
som ador com propagação de “ vai um ” de 4 bits terá um atraso de 4 * 2 = 8 atrasos de porta.
O atraso de um som ador com propagação de “ vai um ” de 32 bits será 32 * 2 = 64 atrasos de
porta. Isso é bastante lento, m as a coisa boa a respeito do som ador com propagação de “ vai
um ” é que ele não requer m uitas portas. Se um som ador com pleto usar 5 portas, então um
som ador com propagação de “vai um ” de 4 bits necessitará de apenas 4 * 5 = 20 portas, e um
som ador com propagação de “vai um ” de 32 bits necessitará de apenas 32 * 5 = I60 portas.

Figura 6.55 Um som ador com propagação de “vai um” de quatro bits, no qual está mostrado o
caminho mais longo (o caminho crítico).
352 Sistemas Digitais

G ostaríam os de projetar um so m ad o r cujo atraso estivesse bastante próxim o de apenas


um as poucas portas, talvez em torno de cinco ou seis atrasos de porta, ao possível custo de
m ais portas.

Somador com lógica de dois níveis


U m a m aneira óbvia de se criar um so m ad o r m ais rápido às cu stas de m ais portas é usar
o nosso processo de projeto de lógica com binacional definido anteriorm ente. Um som ador
projetado com o uso de um a lógica de dois níveis tem um atraso de apenas duas portas. Isso
certam ente é bastante rápido, m as lem bre-se da Fig. 4.25 que a construção de um som ador de
N bits usando dois níveis de lógica resulta em circuitos excessivam ente grandes à m edida que
N cresce acim a de oito ou tanto. Para term os certeza de que você entendeu esse ponto, vam os
repetir de leve a írase anterior:

A construção dc um somador dc /V bits usando dois níveis de lógica resulta em circuitos chocante-
mente grandes à medida que N cresce acima de oito ou tanto.
Por exem plo, estim am os (no C apítulo 4) que um som ador de 16 bits com lógica de dois
níveis iria requerer cerca de dois m ilhões de transistores e um som ador de 32 bits com lógica
de dois níveis, cerca de cem bilhões de transistores.
P o r outro lado, a co n stru ção a7 a6 a5 a4 b7 b6 b5 b4 a3 a2 a1 a0 b3 b2 bi bo
de um so m ad o r de q u atro bits,
usando dois níveis de lógica, re­ a3 a2 a1 aO b7 b6 b5 b4 a3 a2 a1 a0 b3 b2 b1 b0
su lta em um so m a d o r g ran d e,
somador de 4 bits ci somador de 4 bits ci
m as de tam anho razoável - cerca
de 100 portas, com o foi m ostrado co s3 s2 s1 sO co s3 s2 s1 sO

na Fig. 4.25. Poderem os construir


CO s7 s6 s5 s4 s3 s2 s1 sO
um so m ad o r m aior, se cascatcar-
m os esses som adores rápidos de Figura 6.56 Somador de oito bits construído com dois so­
q u atro bits. D ig am o s que q u e ­ madores rápidos de quatro bits.
rem os um som ador de oito bits.
P oderem os construí-lo cascateando dois som adores rápidos de quatro bits, com o m ostrado
na Fig. 6.56. Se cada som ador de quatro bits for construído com dois níveis de lógica, então
cada som ador de quatro bits terá um atraso de duas portas. O som ador de quatro bits da d i­
reita necessitará de dois atrasos de porta para gerar os bits de som a e “ vai um ” , após o que o
som ador de quatro bits da esquerda tam bém necessitará de dois atrasos de porta para gerar as
suas saídas, resultando um atraso total de 2 + 2 = 4 atrasos de porta. Para um som ador de 32
bits, construído com oito som adores de quatro bits, o atraso será de 8 * 2 = 16 atrasos de porta
e o tam anho será em torno de 8 * 100 portas = 800 portas. Isso é m uito m elhor do que os 32
* 2 = 64 atrasos de porta de um som ador com propagação de “vai um ” , em bora o aum ento de
velocidade seja obtido às custas de m ais portas do que as 32 * 5 = 160 portas do som ador com
propagação de “ vai um ” . Q ual deles é m elhor? A resposta depende de nossas necessidades:
o projeto que usa som adores dc quatro bits com lógica de dois níveis será m elhor se você
precisar de m ais velocidade e puder arcar com as portas extras, ao passo que o projeto que
usa som adores de quatro bits com propagação do bit de transporte de “ vai um ” será m elhor se
você não precisar de velocidade ou não puder arcar com as partes extras. É um tradeoff.

Somador com antecipação de transporte


E m um som ador com antecipação do transporte (carry-lookahead adder), a velocidade do so­
m ador com propagação de “vai um ” é aum entada, m as não são usadas tantas portas com o em
um som ador com dois níveis de lógica. A idéia básica é olhar antecipadam ente (lookahead)
os estágios inferiores para determ inar se um bit de transporte será criado no estágio em co n ­
sideração. E sse conceito de olhar antecipadam ente é m uito elegante e pode ser generalizado
para outros problem as. Portanto, gastarem os algum tem po apresentando intuitivam ente os
Otimizações e Tradeoffs 353

fundam entos da antecipação do bit de transporte. C onsidere a som a de dois núm eros de q u a­
tro bits, m ostrada na Fig. 6.57(b), com os bits de transporte em cad a coluna sendo rotulados
com cO, c l, c2, c3 e c4.

."vem um "
a3 b3 a2 b2 a1 b1 aO bO "vem transportes: c4 c3 c2 cl cO
um "
somador de 4 bits b3 b2 b1 bO
"vai um " s3 s2 s1 sO B
A- J + a3 a2 31 30

"v a i u m " s3 s2 s1 sO
(a) (b)

a3 b3 a2 b2 a1 b1 aO bO "vem um'

(O
Figura 6.57 Adição de dois números binários usando um esquema simples e ineficiente de ante­
cipação do bit de transporte - cada estágio olha para todos os bits precedentes e computa se o bit
de “vem um” daquele estágio será um 1 . 0 maior atraso está no estágio 3, o qual tem dois níveis
lógicos no antecipador de “ vem um” e dois no somador completo, totalizando um atraso de apenas
quatro portas.

Um Esquema Simples e Ineficiente de Antecipação do Bit de Transporte. U m a m aneira


sim ples m as não m uito eficiente de se olh ar antecipadam ente o bit de “vai um ” é exposta a
seguir. L em bre-se de que as equações de saída de um som ador com pleto, com entradas a, b,
c e saídas co (carry out, “ vai um ") e s, são:
s = a xor b xor c
co = bc + ac + ab
D esse m odo, podem os saber que as equações para os bits de transporte de “vai um ” c l, c2
e c3 em um som ador de quatro bits serão:
c l = coO = bOcO + aOcO + aObO
c2 = c o l = b l c l + a l c l + a l b l
c3 = co2 = b2c2 + a2c2 + a2b2
Em ou tras palavras, a eq u ação do bit de “ vem u m ” em um estág io em p articu lar <5 a
m esm a que a equação do bit de “vai um ” do estágio anterior.
Podem os substituir a equação de c l na equação de c2, resultando:
c2 = b l c l + a l c l + a l b l
c2 = bl(bOcO + aOcO + aObO) + al(bOcO + aOcO + aObO) + a lb l
c2 = blbOcO + blaOcO + blaObO + albOcO + alaOcO + alaObO + a lb l
A seguir, poderem os substituir a equação de c2 na equação de c3, resultando:
354 Sistemas Digitais

c3 = b2c2 + aZcZ + àZbZ


c3 = b 2 (b lb 0 c0 + blaOcO + blaObO + albOcO + alaOcO +
alaObO + a l b l ) + a 2 (b lb 0 c 0 + blaOcO + blaObO
+ albOcO + alaOcO + alaObO + a l b l ) + a2b2
c3 = b2blb0c0 + b2bla0c0 + b2bla0b0 + b 2alb0c0 +
b 2 ala0 c0 + b2ala0b0 + b 2 a lb l + a2blb0c0
+ a2 b la0 c0 + a2b la0 b 0 + a2albOcO + a2alaOcO
+ a2 ala0 b 0 + a 2 a lb l + a2b2

O m itirem os a equação de c4 para econom izarm os algum as folhas cie papel.


Poderem os criar cada estágio com as entradas necessárias e incluir um com ponente lógico
de antecipação para im plem entar essas equações, com o m ostrado na Fig. 6.57(c). O bserve
que não há propagação de bits de transporte de estágio para estágio - cada estágio com puta
o seu próprio bit de “ vem um ” , exam inando antecipadam ente os valores dos estágios prece­
dentes.
E m bora o acim a apresentado dem onstre a idéia básica d a antecipação de transporte, o
esquem a não é m uito eficiente. O bit c l req u er 4 portas, c2 requer 8 portas e c3, 16 portas,
sendo que cada porta necessita de m ais entradas a cada estágio. Q uando contam os as entradas
das portas, vem os que c l requer 9 entradas de porta, c2 requer 27 entradas c c3, 71 entradas.
U sando esse esquem a de antecipação de transporte, a construção de um som ador m aior, d i­
gam os um de oito bits, resultará provavelm ente em um som ador de tam anho excessivam ente
grande. Portanto, em bora o esquem a apresentado não seja prático, ele serviu para introduzir
a idéia básica da antecipação do bit de transporte: quando fazem os com que cada estágio olhe
antecipadam ente as entradas dos estágios precedentes e com pute por conta própria se o bit
de transporte de “vem um ” será 1, cm vez de esp erar que ele se propague desde os estágios
anteriores, obtem os um som ador de quatro bits com atraso de apenas quatro portas.

Um Esquema Eficiente de Antecipação do Bit de Transporte . Um esquem a m ais eficiente


de antecipação d o bit de transporte é o que segue. C onsidere novam ente a ad ição de dois
núm eros de quatro bits A e B, m ostrada na Fig. 6.58(a). S uponha que vam os so m ar os dois
bits dos operandos de cada coluna (por exem plo, aO + bO) usando um m eio som ador c igno­
rando o bit de “ vem um ” daquela coluna. A s saídas resultantes do m eio som ador (“vai um ”
e som a) d ão algum as inform ações úteis a respeito do transporte para o próxim o estágio. Em
particular:

• Se a adição de aO com bO resultar em um “ vai um ” de 1, então saberem os com segurança


que c l será 1, independentem ente de cO ser 1 ou 0. P or quê? P orque se considerarm os a
som a a0+b0+c0, então 1+1+0=10 e 1+1+1=11 (aqui, o “+ ” representa um a som a e não um a
O R ) - am bos os casos geram um “ vai u m ” de 1. L em bre-se de que um m eio som ador
com puta o seu “vai um ” com o ab.

• Se a adição de aO com bO resultar em um a som a de 1, então c l será 1 apenas se cO for 1.


Em particular, se considerarm os a0+b0+c0, então 1+0+1=10 e 0+1+1=10. Lem bre-se de que
um m eio som ador com puta a sua som a com o a x o r b.

Em outras palavras, c l será 1 se a0b0=l O R se aO x o r bO = 1 A N D c0= l. A ssim , obtem os


as seguintes equações para os bits de transporte:
cl = a0b0 + (aO x o r b0)c0
c2 = a lb l + (a l xor b l)c l
c3 = a2b2 + (a2 x o r b2)c2
c4 = a3b3 + (a3 x o r b3)c3
Otimizações e Tradeoffs 355

/ 'n "vem um" r\


transportes: c4 c3 c2 d / cO \ d - -w 1 0 \ 1 \
\ 1-+
ih 1 \
'
1*+if\
B: / b3 b2 b1» bO |-
( i__ - b O
1 - ^
m+11 - i i 1 i í • !
' aO
A: + a3 a2 a ll aO b n\ b
ii
1 j í
LI l L +í L s - f
\ i ); \ t
"vai um " s3 s2 s1 \ sO j \ 0 / \ 1 / \ 0 / 1 0 /
KJ V- J V J v J V. J
^ se aObO = 1 se aO xor bO = 1
então d = 1 então d = 1 if cO = 1
(c h a m e is s o d e G : G e ra r) ( c h a m e is s o d e P : P ro p a g a r)

a3 b3 a2 b2 a1 b1 aO bO "vem um "

Figura 6.58 Adição de dois números binários usando um esquem a rápido de antecipação do bit
de transporte: (a) idéia do uso de termos de propagação e geração, (b) com putação dos termos
de propagação e geração, e envio para a lógica de antecipação do bit de transporte e (c) uso dos
term os de propagação e geração para rapidam ente com putar os transportes de cada coluna. A
correspondência entre c l nas figuras (c) e (b) está mostrada por dois círculos conectados por uma
linha; correspondências similares existem para c2 e c3.

Vamos incluir um meio som ador em cada estágio para adicionar os dois bits dos operandos
daquela coluna, com o m ostrado na Fig. 6.58(b). C ada m eio som ador produz na saída um bit de
“ vai um ” (que é ab) e um bit de som a (que é a xor b). O bserve na figura que, em um a dada
coluna, para com putar o bit de som a dessa coluna, precisam os fazer sim plesm ente um a opera­
356 Sistemas Digitais

ção x o r da saída da som a do m eio som ador com o bit de “ vem um " da coluna, porque o bit de
som a de um a coluna é sim plesm ente a x o r b xor c (veja a Seção 4.3, página 165).
P o r que esses nom es? Vam os m udar para gerar o nom e da saída de “vai um " do m eio som ador,
Q uando aObO= 1, sab e­ sim bolizando-o por G - assim , GO significa aObO, G1 significa a l b l , G2 significa
m os que devem os gerar a2b2 e G3 significa a3b3. Vamos m udar tam bém o nom e da saída de som a do
um 1 em c l . Q uando m eio som ador para propagar - assim , PO significa aO x o r bO, PI significa a l
aO x o r bO = 1, sabem os x o r b l, P2 significa a2 x o r b2 e P3 significa a3 x o r b3. Em resum o:
que devem os propagar
o v a lo r de cO p a ra Gi = ai bi (gerar)
que seja o v a lo r de c l . Pi = ai x o r bi (propagar)
sig n ifica n d o que c l d e­ Q uando executarm os a antecipação do bit de transporte, ao invés de olhar­
verá s e r ig u a l a cO. m os diretam ente os bits dos operandos dos estágios anteriores, com o fizem os
no esquem a sim ples de antecipação do transporte (por exem plo, o estágio 1 olhando aO e bO),
vam os olhar as saídas do m eio som ador do estágio anterior (por exem plo, o estágio 1 olha GO
e PO). Por quê? Porque a lógica de antecipação do bit de transporte torna-se m enos com plexa
do que no esquem a sim ples visto anteriorm ente.
Portanto, podem os reescrever nossas equações para cada bit de transporte com o:
cl = GO + POcO
c2 = G1 + P lc l
c3 = G2 + P2c2
c4 = G3 + P3c3
Substituindo, com o fizem os no esquem a sim ples, obtem os as seguintes equações de an ­
tecipação de transporte:
cl = GO + POcO
c2 = G1 + P lc l = G1 + PI(GO + POcO)
c2 = G1 + P1G0 + PIPOcO
c3 = G2 + P2c2 =G2 + P2(G1 + P1G0 + PIPOcO)
c3 = G2 + P2G1 + P2P1G0 + P2PlP0c0
c4 = G3 + P3G2 + P3P2G1 + P3P2P1G0 + P3P2PlP0c0
Lem bre-se, os sím bolos P e G representam term os simples: Gi = a i * b i e P i = ai xor b i.
A Fig. 6.58(c) m ostra os circuitos que im plem entam as equações de antecipação de trans­
porte para com putar o bit de transporte de cada estágio.
A Fig. 6.59 dá um a visão de alto nível do projeto de som ador com antecipação de trans­
porte da Fig. 6.58(b) e (c). Na parte de cim a, os quatro blocos são responsáveis pela d eter­
m inação da som a e pela propagação e geração de bits - vam os cham á-los de “ Blocos SPG'\
Você poderá se lem brar da Fig. 6.58(b) que cada bloco SPG consiste em apenas três portas. A
lógica de quatro bits de antecipação dos bits de transporte usa os bits de propagação e geração

Figura 6.59 Visão de alto nível de um somador de quatro bits com antecipação de transporte.
Otimizações e Tradeoffs 357

para pré-com putar os bits de transporte dos estágios de ordens m ais elevadas, usando apenas
dois níveis de portas.
O som ador de quatro bits com antecipação de transporte requer apenas 26 portas (4*3=12
portas para a lógica que não lá/, antecipação de transporte e, então, 2+3+4+5=14 portas para
a lógica que faz antecipação de transporte).
O atraso desse som ador de 4 bits é de apenas 4 portas - 1 porta no m eio som ador, 2 portas
na lógica de antecipação de transporte e 1 para finalm ente gerar o bit de som a (podem os ver
essas portas na Fig. 6.58(b) e (c)). Um som ador de 8 bits construído com o m esm o esquem a de
antecipação de transporte ainda terá um atraso de apenas 4 portas, m as necessitará de 64 portas
(8*3=24 portas para a lógica que não faz antecipação de transporte e 2+3+4+5+6+7+8+9=44
portas para a lógica que faz antecipação de transporte). Um som ador de 16 bits com antecipa­
ção de transporte ainda terá um atraso de 4 portas, m as necessitará de 200 portas (16*3=48
portas para a lógica q ue não faz antecip ação de tran sp o rte e 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 1 0 +
11 + 12+13+14+15+16+17=152 portas para a lógica que faz antecipação de transporte). Um
som ador de 32 bits com antecipação de transporte terá um atraso de 4 portas, m as necessitará
de 656 portas (32*3= 96 po rtas para a lógica que não faz antecipação de transporte mais
152+18+19+20+21 +22+23+24+25+ 26+27+28+29+30+31 + 32+33=560 portas).
Infelizm ente, há problem as que tornam m enos
atrativos o tam anho e o atraso dos som adores com
antecip ação de transporte de grande tam anho. P ri­
m eiro, a análise anterior contou as portas e não as
entradas de porta. N o entanto, as entradas de porta
dizem m elh o r do núm ero n ecessário de tra n sisto ­
res. O bserve na Fig. 6.58 q ue as po rtas continuam
tornando-se m ais largas nos estágios de ordens mais A s p o r ta s to r n a m - s e
elevadas. P or exem plo, o estág io 3 tem um a porta m a io r e s a c a d a e s tá g io

O R de 4 entradas e um a porta A N D de 4 entradas, ao


Estágio 4
passo que o estágio 4 tem um a porta OR de 5 en tra­
das e um a porta A N D de 5 entradas, com o está des­ Figura 6.60 Problem a do tam anho
tacado na Fig. 6.60. O estágio 32 de um som ador de das portas.
32 bits com antecipação de transporte terá portas OR
e A N D de 33 entradas, juntam ente com outras portas
de grande tam anho. C om o as portas com m ais entradas precisam de m ais transistores, então,
em term os de transistores, o projeto com antecipação de transporte é na realidade de tam anho
bastante grande. A lém disso, essas portas de tam anho enorm e não teriam o m esm o atraso
que um a porta A N D ou O R de 2 entradas. Essas portas grandes são construídas tipicam ente
usando um a árvore de portas m enores, de m odo que teríam os atrasos de porta m aiores.

Somadores Hierárquicos com Antecipação do Bit de Transporte. A construção de um


som ador de 4 ou m esm o 8 bits com antecipação de transporte, usando o m étodo da seção
anterior, pode ser razoável em relação aos tam anhos das portas, m as som adores m aiores com
antecipação de transporte com eçam a usar portas com dem asiadas entradas.
Podem os construir um som ador m aior conectando som adores m enores, com o quando se usa
propagação do bit de transporte de “vai u ir r ( ripple carry). Por exem plo, suponha que tenha­
mos à disposição som adores de 4 bits com antecipação de transporte ( look ahead). Poderem os
construir um som ador de 16 bits, se conectarm os quatro som adores de 4 bits com antecipação
de transporte, conform e está m ostrado na Fig. 6.61. Se cada som ador de 4 bits com antecipação
de transporte tiver um atraso de 4 portas, então o atraso total do som ador de 16 bits será de
4+4+4+4+4=16 portas. C om pare isso com o atraso de um som ador de 16 bits com propagação
do bit de transporte-se cada som ador com pleto tiver duas portas de atraso, então um som ador
de 16 bits com propagação de transporte terá um atraso de 16*2 = 32 portas. Assim , o som ador
de 16 bits, construído a partir de quatro som adores com antecipação de transporte e conecta-
358 Sistemas Digitais

dos no m odo de propagação do bit transporte (ripple carry), é duas vezes mais rápido do que
um som ador de 16 bits que usa propagação do bit de transporte. (N a realidade, um exam e
cuidadoso da Fig. 6.55 revela que o “vai um ” de um som ador de quatro bits com antecipação
de transporte é gerado com um atraso de três portas e não de quatro, resultando uma operação
ainda mais rápida do som ador de 16 bits construído a partir de quatro som adores com anteci­
pação de transporte; por sim plicidade, não iremos exam inar o interior desses com ponentes do
ponto de vista de uma análise detalhada de tem po.) Um atraso de dezesseis portas é bom , mas
poderem os fazer m elhor? Há com o evitar a espera de que os bits de transporte propaguem -se
desde os som adores de 4 bits de ordem m ais baixa ate os de ordem m ais elevada?

a15-a12 b15-b12 a11-a8 b11-b8 a7a6a5a4 b7b6b5b4 a3a2a1a0 b3b2b1b0

vai um S15-S12 s11-s8 s7 s6 s5 s4 s3 s2 s1 sO

Figura 6.61 Um somador de 16 bits implementado com o uso de somadores de 4 bits e conecta­
dos no modo de propagação do bit de transporte.

De fato, evitar a propagação dos bits 6 exatam ente o que fizem os quando desenvolvem os
o próprio som ador de quatro bits com antecipação do transporte. D esse m odo, podem os re­
petir o mesmo processo de olhar antecipadamente para fora dos som adores de quatro bits
e fornecer rapidam ente os valores de “ vem u m ” para os som adores de quatro bits de ordem
elevada. Para conseguir isso, acrescentam os um outro bloco, com a lógica de antecipação de
transporte de quatro bits, fora dos quatro som adores de quatro bits, com o m ostrado na Fig.
6.62. O bloco da lógica de antecipação de transporte tem exatam ente o m esm o projeto interno
que foi m ostrado na Fig. 6.58(c). O bserve que a lógica de antecipação p recisa propagar (P)
e gerar (G) sinais em cada bloco som ador. A nteriorm ente, cada bloco de entrada fornecia os
sinais P e G sim plesm ente fazendo operações A N D e X O R com os bits de entrada a i e b i.
No entanto, cada bloco da Fig. 6.62 e um som ador com antecipação de transporte. Portanto,
deverem os m odificar o projeto interno do som ador de quatro bits, com antecipação de trans­
porte, para que forneça os sinais P e G, de m odo tal que esses som adores possam ser usados
ju n tam en te com um gerador de transporte antecipado de segundo nível.

a15-a12 b15-b12 a11-a8 b11-b8 a7 a6 a5 a4 b7 b6 b5 b4 a3 a2 a1 aO b3 b2 b1 bO

a3 a2 a1 aO b3 b2 bl bO
I N I
a3 a2 a1 aO b3 b2 b1 bO a3 a2 a1 aO b3 b2 b1 bO
I N I__b3I b2Nb1 bOI
a3 a2 a1 aO
somador de 4 bits ve™ «i somador de 4 bits 4i somador de 4 bits ven? 4, somador de 4 bits ven?
um um um um
P G "vai um"s3 s2 s1 sO P G"vai um"s3 s2 s1 sO P G"vai um"s3 s2 s1 sO P G"vai um"s3 s2 s1 $0

ti
P3 G3
r tí
c3 P2 G2
r u
J c2 P1 G1
r d PO GO
Lógica de antetfipação de transporte de 4 bits
P G cout

ÍTT S15-S12 S11-S18 s7-s4 s3-s0

Figura 6.62 Um somador de 16 bits implementado com o uso de quatro somadores AT* de 4 bits e um
segundo nível de antecipação de transporte.

N. de T: A sigla AT vem de “antecipação de transporte”, conforme o autor definirá mais adiante. No original, é CAT. carry look
ahead.
Otimizações e Tradeoffs 359

A gora, vam os estender a lógica de antecipação de transporte de quatro bits da Fig. 6.58
para fornecer os sinais P e G. A s equações das saídas P e G de um som ador de quatro bits com
antecipação de transporte podem ser escritas com o:
P = P3P2P1P0
G = G3 + P3G2 + P3P2G1 + P3P2P1G0
Para com preender essas equações, lem bre-se de que o sinal “p ropagar" significa que a
saída de transporte (“vai um ") de um a coluna deve ser igual à entrada de transporte (“ vem
um ” ) dessa m esm a coluna (daí a propagação do bit de transporte através da coluna). Para que
isso seja o caso com o “vem u n í' e o “vai um " de um som ador de quatro bits, o prim eiro está­
gio do som ador de quatro bits deve propagar o seu “vem um " de entrada até a sua saída “vai
um ", o segundo estágio deve propagar o seu “ vem um " de entrada até a sua saída “ vai um ",
e assim por diante para o terceiro e quarto estágios. Em outras palavras, cada sinal interno de
propagação deve ser 1, daí a equação P = P3P2P1P0.
De m odo sim ilar, lem bre-se que o sinal de g erar significa que a saíd a “ vai um " de um a
coluna deve ser 1 (daí a geração do bit de transporte com valor 1). O sinal de g erar deverá ser
1 se o p rim eiro estágio gerar um “ vai um " (GO) c todos os estágios superiores propagarem o
bit de transporte (P3P2P1), produzindo o term o P3P2P1G0. O sinal de g erar tam bém deverá
ser 1 se o segundo estágio gerar um “ vai um " e todos os estágios superiores p ro p ag arem o
bit de transporte produzindo o term o P3P2G1. De m odo sim ilar, no terceiro estág io o term o
é P3G2. F inalm ente, o sinal de g erar deverá ser 1 se o q u arto estág io g erar um “ vai um ",
representado por G3. F azendo um a operação O R de todos esses q u atro term os, obtém -se a
equação G = G3 + P3G2 + P3P2G1 + P3P2P1G0.
C om isso, deverem os en tão revisar a lógica de q u atro bits, com antecipação de trans­
porte, da Fig. 6.58(c) para incluir duas portas adicionais no estágio q uatro, um a porta A ND
para com putar P = P3P2P1P0 e um a porta OR para co m p u tar G = G3 + P3G2 + P3P2G1 +
P3P2P1G0 (observe que o estágio quatro já tem portas A ND para cada term o, de m odo que só
necessitam os acrescentar um a porta O R para realizar a operação O R dos term os). Por brevi­
dade, om itim os a figura que m ostraria essas duas novas portas.

B lo c o SPG

ÏIX ÏT

IL A
ó gn iirc- aa Lógica
AT d e AT d e
4 bits 4 bits

c'G >P

Uma visão da lógica de múltiplos níveis para antecipação dos bits de transporte,
F ig u r a 6.63
permitindo adição rápida e usando números e tamanhos razoáveis de portas. Cada nível acrescenta
atrasos de apenas duas portas.
360 Sistemas Digitais

U sando geradores de antecipação de transporte de quatro bits, podem os introduzir níveis


adicionais para criar som adores ainda m aiores. A Fig. 6.63 fornece um a visão de alto nível de
um som ador de 32 bits, que foi construído usando 32 blocos SPG e três níveis de um a lógica
de quatro bits para antecipação dos bits de transporte. O bserve que essa lógica de quatro bits
form a um a árvore. O atraso total do som ador de 32 bits é de apenas duas portas lógicas nos
blocos SPG e de duas portas lógicas em cada nível de antecipação de transporte (AT), tota­
lizando um atraso de 2+2+2+2 = 8 portas. (N a realidade, um exam e m ais de perto dentro de
cada com ponente iria m ostrar que o atraso total do som ador de 32 bits 6 na verdade inferior
a 8 portas.) S om adores com antecipação de transporte, construídos com m últiplos níveis de
lógica de antecipação de transporte, são conhecidos com o somadores com antecipação de
transporte de múltiplos níveis ou hierárquicos.
Em resum o, na abordagem por antecipação de transporte (carry-lookahead), a adição dos
núm eros binários grandes (m ais de oito bits ou tanto) resulta em adições m ais rápidas do que
na abordagem por propagação de transporte (carry-ripple), às custas de m ais portas. N ão obs­
tante, na abordagem por antecipação de transporte, o tam anho das portas e m antido razoável
por m eio de um projeto engenhoso.

Somadores com seleção do bit de transporte


O utra m aneira de se construir um som ador m aior a partir de som adores m enores e conhecido
com o seleção do bit de transporte. C onsidere a construção de um som ador de oito bits usando
som adores de quatro bits. Um a abordagem por seleção do bit de transporte usa dois som ado­
res de quatro bits para os quatro bits de ordem m ais alta, que cham am os de AL4_1 e AL4_0
na Fig. 6.64. O som ador AL4_Í assum e que o bit de “vem um " será 1. ao passo que AL4_0
assum e que o “vem um ” será 0, de m odo que am bos geram saídas estáveis ao m esm o tem po
que o som ador BA4* gera saídas estáv eis-ap ó s um atraso de quatro portas (assum indo que o
som ador de quatro bits tem um atraso de quatro portas). U sam os o valor de “vai um " de BA4
para selecionar entre AL4_I ou AL4_0 , usando um m ultiplexador 2x 1 de cinco bits de largura
- d aí vem o term o somador com seleção (do bit) de transporte (carry-select adder).

a7 a6 a5 a4 1)7 b6 b5 b4

"vem um "

F ig u ra 6.64Um som ador de 8 bits implementado usando seleção do bit de transporte e somado­
res de quatro bits.

O atraso de um m ultiplexador 2x 1 é de 2 portas, de m odo que o atraso total do som ador de


oito bits 6 de 4 portas em AL4_1 e AL4_0 para que gerem os bits corretos da som a (BA4 opera

* N. de T: Somador de ordem mais baixa.


Otimizações e Tradeoffs 361

em paralelo), m ais um atraso de 2 portas para o m ultiplexador (cuja linha de seleção está pronta
depois de apenas 3 portas de atraso), totalizando um atraso de 6 portas. Em com paração com uma
im plem entação com antecipação de transporte que usa dois som adores de quatro bits, reduzimos
o atraso total de 7 para 6 portas. O custo é um som ador extra de quatro bits. Se um som ador de
quatro bits com antecipação de transporte requerer 26 portas, então o projeto que usa dois som a­
dores de quatro bits necessitará de 2*26=52 portas, ao passo que o som ador com seleção do bit de
transporte irá requerer 3*26=78 portas, mais as portas para o multiplexador 2x1 de cinco bits.
Poderíam os construir tam bém um som ador de 16 bits, com seleção do bit de transporte,
utilizando som adores de quatro bits com antecipação de transporte, e m últiplos níveis de rnul-
tiplexação. C ada nibble (quatro bits) teria dois som adores de quatro bits, um assum indo um
“vem um ” de 1 e o outro assum indo um 0. O bit de “vai um ” de NibbleO iria selecionar, usando
um m ultiplexador, o som ador apropriado para N ibble I. O “vai um ” de N ibble I iria então sele­
cionar o som ador apropriado para N ibble2. Finalm ente, o “vai um ” de N ibble2 iria selecionar
o som ador apropriado para N ibble3. O atraso desse som ador seria de 6 portas para N ibble 1,
m ais um atraso de 2 portas para a seleção de N ibble2, e m ais um atraso de 2 portas para a se­
leção de N ibble3 - totalizando um atraso de apenas 10 portas. Se tivéssem os cascateado qua­
tro som adores de quatro bits, teríam os um atraso de 4+4+4+4 = 16 portas. O increm ento de
velocidade da versão com seleção do bit de transporte em relação à versão cascateada seria 16
/1 0 = 1 ,6 .0 tam anho total seria 7*26 = 182 portas, m ais as portas para os três m ultiplexadores
2x 1 de cinco bits. Trata-se de um tam anho bem eficiente para um a velocidade bem boa.
A Fig. 6.65 ilustra os tradeoffs entre os pro­
je to s de som adores. O projeto com p ro p ag ação
do bit de transporte (carry-ripple) é o m enor m as an tecip ação de transporte

tem o m aior atraso. O projeto com antecipação o 9 an tecip ação d e transporte


de transporte (carry-lookahead ) é o m ais rápido c
CO e m m ú ltip lo s n íveis
m as tem o m aior tam anho. F inalm ente, o projeto E
CO
# s e l e ç ã o d o bit d e t r a n s p o r t e
com seleção do bit de transporte (car ry-select) é
# propagação do
um m eio-term o entre os dois, envolvendo algum a bit d e t r a n s p o r t e
antecipação e algum a propagação do bit de trans­
porte. A escolha d o som ador m ais apropriado para atraso
um projeto dependerá das restrições de velocidade
F ig u ra 6.65 Tradeoffs de somadores.
e tam anho que lhe forem im postas.

Multiplicadores menores - estilo seqüencial (deslocar e somar)


Um m ultiplicador do estilo array pode ser rápido, m as pode requerer m uitas portas no caso
de m ultiplicadores com grandes larguras de bits, com o nos m ultiplicadores de 32 bits. N esta
seção, desenvolverem os um m ultiplicador seqüencial, não com binacional, para reduzir o ta­
m anho do m ultiplicador. A idéia de um m ultiplicador seqüencial é ter a som a corrente dos
produtos parciais e com putar um produto parcial de cada vez, ao invés de com putá-los todos
ao m esm o tem po, som ando-os em seguida.
A Fig. 6.66 fornece um exem plo de m ultiplicação de quatro bits. A ssum a que com eçam os
com um a som a corrente de 0000. C ada passo corresponde a um bit no m ultiplicador (o se­
gundo núm ero). N o passo 1, com putam os o produto parcial obtendo 0110, que adicionam os
à som a corrente 0000 para obter 00110. N o passo 2, com putam os o produto parcial obtendo
0110. que é som ado às colunas apropriadas da som a corrente 00110, totalizando 010010. No
passo 3, com putam os o produto parcial obtendo 0000, que adicionam os às colunas apropria­
das da som a corrente. O m esm o ocorre no passo 4. A som a corrente final é 00010010, que é
o produto correto de 0110 e 0011.
O cálculo de cada produto parcial é fácil - sim plesm ente fazem os um a operação A N D do
bit corrente do m ultiplicando com cada bit do m ultiplicador para obter o produto parcial. A s­
sim , se o bit corrente do m ultiplicando for 1, então a A N D criará um a cópia do m ultiplicador
362 Sistemas Digitais

Passo 1 Passo 2 Passo 3 P asso 4


0 110 0110 0 110 0 110
x 0 0 17 x 00 7 1 x 0 011 x 0 0 11

0000 00110 r-^010010 «-► 00 1 00 1 0 (som a corrente)


+ 0110 +0110 + 0000 + 0000 (prod u to parcial)
00110 — 010010 — 0010010 — 0 0 0 1 00 1 0 (nova soma corrente)

Figura 6.66 Multiplicação realizada pela geração de um produto parcial para cada bit do multipli­
cador (o número de baixo), acumulando os produtos parciais em uma som a corrente.

que será o produto parcial. Se o bit corrente do m ultiplicando for 0, então a A N D produzirá 0
com o sendo o produto parcial.
P recisam os d eterm in ar com o ad icio n ar cada produto parcial às colunas adequadas da
som a corrente. O bserve que o produto parcial deve ser deslocado à esquerda de um bit d e­
pois de cada passo, em relação à som a corrente. P odem os ver isso de outro m odo - a som a
corrente deve ser deslocada à direita de um bit depois de cada passo. O bserve a ilustração da
m ultiplicação na Fig. 6.66 até que você “veja" com o a so m a corrente m ove-se de um bit à
direita relativam ente a cada produto parcial.
Portanto, podem os com putar a som a corrente inicializando um registrador de oito bits
com 0. A cada passo, o produto parcial, que correspondente ao bit corrente do m ultiplicando,
é adicionado aos quatro bits m ais à esquerda da som a corrente. A seguir, deslocam os a som a
corrente de um bit à direita, colocando um 0 no bit m ais à esquerda. D esse m odo, o registrador
de som a corrente deverá ler as funções de zerar (ciear ), carga paralela (load) e deslocam ento à
direita (shift right - shr). Um circuito, m ostrando o registrador de som a corrente c o som ador
necessário para adicionar cada produto parcial ao registrador, está m ostrado na Fig. 6.67.

m u ltip lica d o r m ultip lica nd o

produto

Figura 6.67 Projeto interno de um multiplicador sequencial de 4 bits por 4 bits.


Otimizações e Tradeoffs 363

A últim a coisa que precisam os determ inar é com o co n tro lar o circuito de m odo que ele
faça a coisa certa a cada passo - isso é exatam ente o que os blocos de controle fazem. A Fig.
6.68 m ostra a FSM que descreve o com portam ento desejado do bloco de controle do nosso
m ultiplicador seqiiencial.

Figura 6.68 Uma FSM para descrever o bloco de controle do multiplicador de quatro bits.

Em term os de desem penho, o m ultiplicador seqiiencial requer 2 ciclos por bit, m ais 1 c i­
clo para a inicialização. A ssim , um m ultiplicador de 4 bits irá requerer 9 ciclos, ao passo que
um m ultiplicador de 32 bits precisará de 65 ciclos. O atraso m ais longo entre registradores é
o que inicia em um registrador, passa por um som ador e chega a um registrador. Se construir­
m os o som ador do tipo de transporte antecipado, tendo um atraso de apenas 4 portas, então
o atraso total para um a m ultiplicação de 4 bits será 9 ciclos * 4 portas de atraso / ciclo = 36
portas de atraso. O atraso total para um a m ultiplicação de 32 bits será 65 ciclos * 4 portas de
atraso / ciclo = 260 portas d e atraso. M esm o lento, observe que o tam anho desse m ultiplica­
dor é bastante bom . requerendo apenas um som ador, uns poucos registradores, um registrador
de estado e algum a lógica para o bloco de controle. Para um m ultiplicador de 32 bits, o tam a­
nho seria bem m enor que o de um m ultiplicador em estilo a r r a y , requerendo 3 1 som adores.
O projeto do m ultiplicador pode ser m elhorado ainda m ais usando um d eslo cad o r no
bloco operacional, m as om itirem os os detalhes desse projeto.

► 6.5 OTIMIZAÇÕES ETRADEOFFS EM PROJETO RTL


No C apítulo 5, descrevem os o processo de projeto RTL. E nquanto criam os o bloco operacio­
nal durante o processo de projeto RTL. há várias otim izações e tradeoffs que poderem os fazer
para desenvolver projetos m enores ou m ais rápidos.

Pipelining Sem pipelining:

O s m icro p ro cessad o res continuam a tornar-se LI S7 L2 S2 L3 S3

m enores, m ais rápidos e de m enor custo. Por


isso, sem pre que possível, os p ro jetistas usam Com pi oelining:
m icroprocessadores para im plem entar os com ­
L1 12 L3 “ Estágio 1
p o rtam en to s d esejad o s dos sistem as d ig itais.
Por outro lado, em m uitos sistem as digitais, os S1 S2 S3 "Estágio 2
projetistas seguem optando por construir os seus
próprios circuitos digitais na im plem entação dos Figura 6.69 Aplicando pipelining à lava­
com portam entos desejados. N esse caso. a razão gem de pratos - a lavagem e a secagem dos
principal da escolha é a velocidade. Um m étodo pratos podem ser feitas concorrentemente.
364 Sistemas Digitais

para se obter velocidade em circuitos digitais é por m eio do uso de pipelining*. N a técnica de
pipelining , isso significa dividir um a tarefa grande em estágios sucessivos, de tal m odo que
os dados passam por eles com o as partes que se deslocam através de uma linha de m ontagem
de um a fábrica. C ada estágio produz um a saída que será usada pelo estágio seguinte e todos
os estágios trabalham concorrentem ente (isto é, ao m esm o tem po). Desse m odo, obtém -se um
desem penho m elhor do que se os dados da tarefa tivessem de ser com pletam ente processados
antes que novos dados pudessem com eçar a ser processados. L avar pratos com um am igo é
um exem plo de pipelining , você lavando e o seu am igo secando (Fig. 6.69). Você (o prim eiro
estágio) pega um prato (prato 1) e o lava. A seguir, você passa o prato para o seu am igo (o
segundo estágio), pega o prato seguinte (prato 2) e o lava concorrentemente enquanto o seu
am igo seca o prato 1. Em seguida, você lava o prato 3 enquanto o seu am igo seca o prato 2.
A lavagem de pratos feita dessa m aneira é quase duas vezes m ais ráp id a do que quando a
lavagem e a secagem não são feitas concorrentem ente.
C onsidere um sistem a com entradas de dados W, X, Y e Z que repetidam ente deve fornecer
na saída a som a S = W + X + Y + Z. Podem os im plem entar o sistem a usando um a árvore de
adição, com o m ostrado na Fig. 6.70(a). O relógio m ais veloz para este projeto não deve ser
m ais rápido do que o cam inho m ais dem orado entre qualquer par de registradores, conhecido
com o cam inho crítico. Há quatro cam inhos possíveis, desde a saída de q ualquer registrador
até a entrada de qualquer registrador, e todos os cam inhos passam através de dois som adores.
Se cada som ador tiver um atraso de 2 ns, então cada um terá um com prim ento correspondente
a 2+2 = 4 ns. A ssim , o cam inho crítico é de 4 ns, de m odo que o relógio m ais rápido terá um
período m ínim o de 4 ns, significando uma freqüência não superior a 1 / 4 ns = 250 M Hz.

(a) (b)

Figura 6.70 Bloco operacionais sem e com pipeline: (a) quatro caminhos de registrador a regis­
trador, de 4 ns cada um, de modo que o caminho mais longo é de 4 ns, significando um período de
relógio mínimo de 4 ns, ou 1/4 ns = 250 MHz e (b) seis caminhos de registrador a registrador, de
2 ns cada um, de modo que o caminho mais longo é de 2 ns, significando um período de relógio
mínimo de 2 ns, ou 1/2 ns = 500 MHz

A Fig. 6.70(b) m ostra um a versão com pipeline desse projeto. Sim plesm ente, acrescenta­
m os registradores entre a prim eira e a segunda linhas de som adores. C om o o propósito desses

* N. d c T: E sse te r m o d e riv a d e pipeline. q u e e u m a tu b u la ç ã o d e g r a n d e c o m p r im e n to u s a d a p a ra o tra n s p o rte d e líq u id o s , g a s e s


e s ó lid o s , e s te s n a f o rm a d e p a rtíc u la s . C o m o e x e m p lo s , te m o s o o le o d u to (oil pipeline) e o g a s o d u to (geis pipeline). C o n f o r m e
o c o m p r im e n to e a to p o g ra f ia d o te r r e n o p o r o n d e p a s s a a tu b u la ç ã o , s ã o in s e rid a s e s ta ç õ e s d e b o m b e a m e n to ( e s tá g io s ) p a ra
m a n te r o m a te ria l e m m o v im e n to .
Otimizações e Tradeoffs 365

registradores está relacionado som ente com o p ip e lin in g , eles são conhecidos com o registra­
dores de pipeline , em bora o seu projeto interno seja igual ao de qualquer outro registrador. As
com putações feitas entre os registradores de p ip e lin e são conhecidas com o estágios. Inserindo
esses registradores e criando assim um p ip e lin e de dois estágios, reduzirem os o cam inho crí­
tico de 4 ns para apenas 2 ns. Desse modo, o relógio mais rápido tem um período de no m ínim o
2 ns, significando um a freqüência não superior a 1/2 ns = 500 M Hz. Em outras palavras, pela
sim ples inserção desses registradores de p ip e lin e ,d o b ra m o s o d e s e m p e n h o do nosso projeto.

Latência versus Throughput


O term o “desem penho" precisa ser refinado tendo em vista o conceito de p ip e lin in g . Na Fig.
6.70(b), observe que o prim eiro resultado S (0) não aparece senão após dois ciclos. P or outro
lado, no projeto da Fig. 6.70(a), o prim eiro resultado aparece na saída após um ciclo apenas.
Isso ocorre porque agora os dados devem passar por um a linha extra de registradores. O term o
latência refere-se ao atraso necessário para que os novos dados de en trad a transform em -se
em novos dados de saída. L atência é um tipo de desem penho. A m bos os p rojetos da figura
têm um a latência de 4 ns. A Fig. 6.70(b) m ostra tam bém que um novo valor de $ aparece a
cada 2 ns, v e r s u s os 4 ns do projeto da Fig. 6.70(a). O term o throughput* refere-se à taxa
com a qual novos dados podem entrar no sistem a e, de m odo sem elhante, a taxa com a qual
novas saídas aparecem no sistem a. O th ro u g h p u t do projeto da Fig. 6.7ü(a) é de 1 am ostra a
cada 4 ns, ao passo que no projeto da Fig. 6.70(b) é de 1 am ostra a cada 2 ns. A ssim , podem os
descrever m ais precisam ente a m elhoria de desem penho do nosso projeto com p ip e lin e com o
tendo sido d o b r a d o o seu th ro u g h p u t.

► EXEMPLO 6.20 Filtro FIR com pipeline


Lembre-se do filtro FIR de 100 ta p s do Exem plo 5.8.
Estimamos que a implem entação em microprocessador
exigiria 4000 ns, ao passo que uma implementação com
um circuito digital custom izado iria requerer apenas 34
ns. Aquele circuito digital custom izado utilizava uma
árvore de somadores, com sete níveis de som adores-50
adições, a seguir 25, 13 (aproximadamente), 7, 4, 2 e fi­
nalmente 1. O atraso total era 20 ns (para o m ultiplica­
dor) mais o atraso dos sete som adores (7*2 ns=14 ns),
totalizando um atraso de 34 ns. Podemos melhorar ainda
mais o th ro u g h p u t daquele filtro usando p ip e lin in g . Ob­
servando que o atraso de 20 ns dos m ultiplicadores é
aproximadamente igual ao atraso de 14 ns da árvore de
somadores, podemos decidir inserir registradores de p i ­
p e lin e (50 deles, porque no topo da árvore de somadores
há 50 multiplicadores alimentando 50 somadores) entre
os multiplicadores e a árvore de somadores, resultando
na divisão em dois estágios da tarefa, como mostrado na
Fig. 6.71. Esses registradores de p ip e lin e dim inuem o
caminho crítico de 34 ns para apenas 20 ns. significando
que o relógio poderá acionar o circuito mais rapidamente lin e .
e consequentem ente melhorar o th ro u g h p u t. O aumento
da velocidade de th ro u g h p u t da versão sem p ip e lin e , em relação à im plem entação com micro­
processador. foi 4000/34 = 1 1 7 , ao passo que o aumento da velocidade de th ro u g h p u t da versão
com p ip e lin e foi 4000/20 = 200. Um aumento adicional de velocidade bastante bom pela simples
inserção de alguns registradores!

*N. de T: Traduzido às vezes por "fluxo”.


366 Sistemas Digitais

Embora pudéssemos usar também p ip e lin in g na árvore de somadores, isso não nos daria um
th ro u g h p u t mais elevado, porque o estágio do multiplicador ainda representaria o caminho crítico.
Um relógio não pode acionar um sistema, com p ip e lin e , mais rapidamente do que o estágio mais
lento, porque senão esse estágio apresentaria falhas quando os valores corretos fossem carregados
nos registradores de p ip e lin e de suas saídas.
A lalêneia do projeto sem p ip e lin e é um ciclo de 34 ns, ou 34 ns no total. A latência do projeto
com p ip e lin e é 20 ns, ou 40 ns no total. Assim, vemos que o uso de p ip e lin in g melhora o th ro u ­
g h p u t às custas da latência. ◄

Concorrência
U m a razão chave para sc projetar um circuito digital custom izado, ao invés dc escrever soft­
ware para ser executado em um m icroprocessador, é conseguir um m elhor desem penho. Um
m étodo com um de se obter desem penho é através de concorrência. Em projeto digital, con­
corrência significa div id ir um a tarefa em diversas su b p artes independentes e, então, exe­
cutá-las sim ultaneam ente. C om o analogia, se tiverm os um a pilha de 200 pratos para lavar,
poderem os dividi-la em 10 pilhas m enores de 20 pratos cada e, então, dar essas pilhas para
dez vizinhos nossos. S im ultaneam ente, esses vizinhos vão para casa, lavam e secam as suas
respectivas pilhas e depois nos devolvem os pratos lavados e secos. O bteríam os um aum ento
de velocidade na lavagem dos pratos de dez vezes (ignorando o tem po necessário para dividir
a pilha e levar as pilhas de casa em casa).
Já usam os co n corrência em diversos exem plos. P o r exem plo, no bloco operacional do
filtro FIR da Fig. 5.38, havia três m ultiplicadores trabalhando concorrentem ente.
Vamos usar concorrência para criar um a versão m ais rápida de um exem plo anterior.

► EXEMPLO 6.21 Componente com concorrência para soma de diferenças absolutas


No Exemplo 5.7, projetamos um circuito customizado para um componente de soma de diferenças
absolutas (SAD) e estimamos que esse componente era três vezes mais rápido do que uma solução
baseada em microprocessador. Podemos fazer ainda melhor. Observe que a comparação de um par
de pixels correspondentes de dois quadros é independente da comparação de um outro par. Assim,
essas comparações são candidatos ideais para concorrência.
Primeiro, precisamos estar capacitados para ler concorrentem ente os pixels. Podem os fazer
isso reprojetando os bancos de memória A e que anteriormente foram projetados como memó­
rias de 256 bytes. Em vez disso, vamos projetá-los como memórias de 16 palavras, de 16 bytes
cada uma (o total ainda é 256 bytes). Assim, cada leitura de memória corresponde a ler uma linha
inteira de pixels de um bloco 16x16. A seguir, poderemos determ inar concorrentem ente as dife­
renças entre todos os 16 pares de pixels de A c B. A Fig. 6.72 mostra um novo bloco operacional e
uma FvSM para o bloco de controle de um componente SAD com maior concorrência.
O bloco operacional consiste em 16 subtralores, operando concorrentemente sobre os 16 pixels de
uma linha, seguidos de 16 componentes para determinar os valores absolutos. As 16 diferenças resul­
tantes alimentam uma árvore de somadores, cujo resultado é adicionado à soma corrente e escrito de
volta no registrador de soma. O bloco operacional compara o seu contador / com o valor 16, pois há
16 linhas em um bloco e, desse modo, devemos computar a diferença entre as linhas 16 vezes. O laço
de controle da FSM é repetido 16 vezes para acumular as diferenças de cada linha e, em seguida, car­
regar o resultado final no registrador sa d _ reg , que está conectado à saída sad do componente SAD.
No Exemplo 5.7, estimamos que uma solução de so ftw a re iria exigir cerca de seis ciclos por
pixel para cada comparação de par de pixels. Como há 256 pixels em um bloco 16x16, o softw are
iria requerer 256*6=1536 ciclos para comparar um par de blocos. Ao invés disso, o nosso circuito
SAD. usando concorrência, requer apenas 1 ciclo para comparar cada linha de 16 pixels, o que deve
ser feito 16 vezes para cada bloco, resultando apenas 16*1 = 16 ciclos. Assim, o aumento de velo­
cidade do circuito SAD em relação ao softw a re é 1536/16 = 96. Em outras palavras, esse circuito
SAD relativamente simples, usando concorrência, opera 100 vezes mais rapidamente do que uma
solução em softw are. Consequentemente, em qualquer aparelho de vídeo que estejamos projetando,
esse aumento de velocidade irá se traduzir em um vídeo digitalizado de melhor qualidade. ◄
Otimizações e Tradeoffs 367

sad

Figura 6.72 Bloco operacional dc um componente SAD que usa concorrência para obter maior
velocidade, juntam ente com a FSM do bloco de controle.

Pipelining e concorrência podem scr com binados para se obter m elhorias de desem penho
ainda m aiores.

Alocação de componentes
Q uando a m esm a operação é usada em dois estados diferentes de um a m áquina de estados de
alto nível, podem os optar por incluir duas unidades funcionais, um a para cada estado, ou por
um a unidade funcional, que será com partilhada pelos dois estados. P or exem plo, a Fig. 6.73
m ostra um a porção de um a m áquina de estados com dois estados, A e B, sendo que cada um
realiza um a operação de m ultiplicação. Podem os optar por usar dois m ultiplicadores d istin ­
tos, com o m ostrado na Fig. 6.73(a) (na qual assum im os que as variáveis t representam regis­
tradores). A figura tam bém m ostra os sinais de controle que são ativados em cada estado da
FSM , a qual controla o bloco operacional, sendo que o registrador t l é carregado no prim eiro
estado ( t i l d = l) e o registrador t4 é carregado no segundo estado (t4 1 d = l).

A: (se=0; sd=0; t1ld=1)


B: (se=1;sd=1;t4ld=1)

m
t2| t5| |t3 |t6

t2

Li JJ
t3 t5 t6


se -l 2x1 2x1 -s d

I
V . tl{ }t4
(a) (b)

Figura 6.73 Duas alocações diferentes de componentes: (a) dois multiplicadores, (b) um multi­
plicador e (c) a alocação de um multiplicador representa um tradeojf de tamanho às custas de um
atraso ligeiramente maior.

E ntretanto, com o um a m áquina de estad o s não pode estar em d o is estad o s ao m esm o


tem po, sabem os que a FSM irá realizar apenas um a m ultiplicação de cada vez. D esse m odo,
368 Sistemas Digitais

poderem os fazer com que um m ultiplexador seja co m partilhado pelos dois estados. C om o
m ultiplicadores rápidos são grandes, esse com partilham ento pode eco n o m izar um a grande
quantidade de portas. Um bloco operacional com apenas um m ultiplicador ap arece na Fig.
6.73(b). Em cada estado da m áquina de estados, a FSM de controle configura as linhas de
seleção dos m ultiplexadores, para que os operandos apropriados passem através deles indo
para o m ultiplicador, assim com o carrega os registradores apropriados de destino com o foi
feito antes. A ssim , no prim eiro estado A, a FSM colocará em 0 a linha de seleção d o m ulti­
plexador esquerdo para perm itir que t2 passe (se=0), e tam bém em 0 a linha de seleção do
m ultiplexador direito para perm itir que t3 passe (sd=0), além de fazer 111 d=l para carregar
o resultado da m ultiplicação no registrador t l . Do m esm o m odo, a FSM no estado B ativa os
m ultiplexadores para que t5 e t6 passem através deles, além de carregar t4 .
A Fig. 6.73(c) ilustra que o projeto com um m ultiplicador teria um tam anho m enor, às
custas possivelm ente de um atraso ligeiram ente m aior devido aos m ultiplexadores.
U m a biblioteca de com ponentes pode co n sistir em num erosas unidades funcionais d i­
ferentes que potencialm ente poderiam im plem entar um a operação desejada - para a m ul­
tiplicação. pode haver diversos com ponentes m ultiplicadores: MUL1 poderá
O s term os “o p e ra d o r" ser m uito rápido, m as grande, ao passo que M U L2 poderá ser m uito pequeno,
e " operação " referem-
m as lento, e M U L3 poderá estar em um a posição interm ediária. Poderá haver
se a com portam ento,
tam bém som adores rápidos, m as grandes, som adores pequenos, m as lentos, e
com o a d içã o ou m u l­
diversas opções interm ediárias. A lém disso, alguns com ponentes poderão su ­
tiplicação. O termo
“com ponente" (tam­ portar m últiplas operações, com o um com ponente som ador/subtrator, ou um a
bém con hecido com o A LU . A escolha de um conjunto particular de unidades funcionais para im ple­
“un idade fu n c io n a l'’) m entar um conjunto de operações é conhecida com o alocação de componen­
refere-se ao hardware, tes. F erram entas autom atizadas de projeto RTL exam inam dúzias ou centenas
com o um so m a d o r ou de possíveis alocações de com ponentes para en co n trar as que m elhor represen­
um m ultiplicador. tam um tradeoff entre tam anho e desem penho.

Mapeamento de operadores
Dada uma alocação de com ponentes, ainda terem os de escolher quais operações serão associa­
das a quais com ponentes. Por exemplo, a Fig. 6.74 m ostra três operações de m ultiplicação, uma
no estado A, um a no estado B e uma no estado C. A Fig. 6.74(a) m ostra um possível m apea­
mento de com ponentes a dois m ultiplicadores, do qual resultam dois m ultiplexadores. A Fig.
6.74(b) m ostra um m apeam ento alternativo para dois m ultiplicadores, do qual resulta apenas
um multiplexador, porque o m esm o operando (t3 ) alim enta o m esmo m ultiplicador MULA em

— • mapeamento 1
_ • mapeamento 2

_ J ___I___I___l _
atraso
(O

Figura 6.74 Dois mapeamentos diferentes de operadores: (a) o mapeamento l usa dois multiple­
xadores, (b) o mapeamento 2 usa apenas um multiplexador e (c) o mapeamento 2 representa uma
otimização em relação ao mapeamento 1.
Otimizações e Tradeoffs 369

dois estados diferentes e, portanto, essa entrada do m ultiplicador não necessita de m ultiplexa-
dor. A ssim , o segundo m apeam ento produz m enos portas, sem perda de desem penho - uma
otim ização, com o m ostrado na Fig. 6.74(c). O bserve que esse m apeam ento não apenas mapeia
operadores a com ponentes, mas tam bém faz a escolha de qual operando será associado a qual
entrada de com ponente. Se tivéssem os associado t3 ao operando esquerdo de MULA na Fig.
6.74(b), então MULA teria requerido dois m ultiplexadores ao invés de apenas um.
O m apeam ento de um conjunto dado de operações a um a alocação de com ponentes em
particular é conhecido com o mapeamento de operadores ( operator bimling). T ipicam ente,
as ferram entas autom atizadas exploram centenas de diferentes m apeam entos para um a dada
alocação de com ponentes.
N aturalm ente, as tarefas de alocação de com ponentes e m apeam ento de operadores são in­
terdependentes. Se alocarm os apenas um com ponente, então todos os operadores deverão ser as­
sociados a esse com ponente. Se alocarm os dois com ponentes, então terem os algum as opções de
m apeam ento. Se alocarm os muitos com ponentes, então terem os m uito mais opções de m apea­
mento. Assim, algum as ferram entas executarão sim ultaneam ente a alocação e o mapeam ento, ou
então farão iteração entre as duas tarefas. Em conjunto, a alocação de com ponentes c o m apea­
mento de operadores são referidos algum as vezes com o compartilhamento de recursos.

Escalonamento de operadores
D ada um a m áquina de estados de alto nível, podem os introduzir estados adicionais para nos
habilitar a criar um bloco operacional menor. Por exem plo, considere a m áquina de estados
de alto nível da Fig. 6.75(a). A m áquina de estados tem três estados, tendo o estado B duas
m ultiplicações. C om o essas duas m ultiplicações ocorrem no m esm o estado e sabendo que
cada estado tem um único ciclo de relógio, então precisarem os de dois m ultiplicadores (no
m ínim o) no bloco operacional para suportar as duas m ultiplicações sim ultâneas no estado B.
No entanto, o que aconteceria se tivéssem os portas suficientes para apenas um m ultiplicador?

(algumas t 1 = t 2 t3 (algumas
operações) t4 = t5 * t6 operações)

t2 j |t3 t5 | |t6
o
sz
c
«3
E
<0

£ (a)
V .

(O (b)

Figura 6.75 Escalonamento: (a) o escalonamento inicial com três estados requer dois multiplica­
dores, (b) um novo escalonamento de quatro estados requer apenas um multiplicador e (c) o novo
escalonamento faz um tradeoffc ntre tamanho e atraso (estado extra).

N esse caso, deveríam os fazer um novo escalo n am en to (scheduling) para as operações, de


m odo que seja necessário, no m áxim o, apenas um a m ultiplicação em q ualquer estado, com o
na Fig. 6.75(b). A ssim , quando alocarm os os com ponentes, será necessário alocar apenas um
m ultiplicador, com o está m ostrado e tam bém com o foi feito na Fig. 6.73(b). O resultado é um
projeto m enor m as m ais lento, m ostrado na Fig. 6.75(c). Esse exem plo de escalonam ento as­
sum iu que a com putação de t4 não poderia ser deslocada para o estado A ou C, talvez porque
esses estados já usassem um m ultiplicador ou porque t5 e t6 ainda não estivessem prontos no
estado A e o novo resultado de t4 fosse necessário no estado C.
370 Sistemas Digitais

A conversão de um a com putação, que é realizada concorrentem ente em um estado, para


ser realizada ocupando diversos estados é conhecida com o serialização de um a com putação.
N aturalm ente, é possível fazer um novo escalonam ento ao inverso. Suponha que co m e­
cem os com a m áquina de estados de alto nível da Fig. 6.75(b). Se tiverm os abundância de
portas à disposição e quiserm os m elhorar o desem penho do nosso projeto, poderem os fazer
um novo escalonam ento para as operações de m odo que com binarem os as operações do es­
tado B 2 o B em um estado B , com o na Fig. 6.75(a). O resultado é um projeto m ais rápido, m as
maior, requerendo dois m ultiplicadores ao invés de um.
G eralm ente, a introdução ou com binação de estados e a atribuição de operações a esses
estados é um a tarefa conhecida com o escalonamento de operadores (operator scheduling).
Você pode ter notado que o escalonam ento de operadores é interdependente da alocação
de com ponentes, a qual, você pode lem brar, era interdependente do m apeam ento de operado­
res. A ssim , as tarefas de escalonam ento, alocação e m apeam ento são todas interdependentes.
As ferram entas m odernas podem com binar um pouco as tarefas e/ou podem realizar iteração
entre as tarefas diversas vezes, à procura de bons projetos.

► EXEMPLO 6.22 Um filtro FIR menor usando escalonamento de operadores


Considere o filtro FIR de 3 taps do Exem plo 5.8. Aquele projeto não tinha bloco de controle,
significando que na realidade a máquina de estados de alto nível possuía apenas um estado que
continha todas as ações do bloco operacional, como mostrado na Fig. 6.76(a). Poderíamos reduzir
o tamanho do bloco operacional distribuindo as operações por diversos estados, de modo que no
máximo ocorresse uma multiplicação e uma adição por estado, como mostrado na Fig. 6. 76(b). O
primeiro estado carrega os registradores x com as amostras. Note que a ordem dessas ações, que
estão indicadas próximo do estado, não é importante, porque todas as ações ocorrem simultanea­
mente. Esse estado também zera um novo registrador de nome “soma”, que tivemos de incluir para
guardar as somas dos taps intermediários, as quais participarão de cômputos em estados posterio­
res. O segundo estado computa o primeiro tap do resultado do filtro, o próximo estado computa
o segundo tap e o próximo estado computa o terceiro tap. O último estado coloca o resultado na
saída e, então, a máquina retorna novamente ao primeiro estado.

E n tra d a s-. X (N bits} E n tr a d a s : X


(N bits)
S a íd a s : Y (N bits) S a íd a s : Y(N bits)
R e g is tr a d o r e s to c a is : R e g is tr a d o r e s lo c a is :
xtO, xt1, xt2 (N bits) xtO, xt1, xt2, soma (N bits)
soma = 0
xtO = X
xtO = X
xt1 = xtO
xt1 = xtO
xt2 = xt1
xt2 = xt1
Y = xtO*cO
+ x t1 *d
+ xt2*c2
soma = soma + xtO*cO

soma = soma + x t1 *d

Figura 6.76 M áquina de estados de


alto nível para um filtro FIR de 3 taps:
(a) máquina de um estado original, (b) soma = soma + xt2' c2
máquina de cinco estados com no m á­
ximo uma adição e uma m ultiplicação
por estado. Por simplicidade, ignoramos Y = soma
a escrita de constantes nos registradores
(cO, c l , c2) no exemplo. (b)
Otimizações e Tradeoffs 371

Um bloco operacional para essa máquina de estados está mostrado na Fig. 6.77. O bloco ope­
racional requer apenas um multiplicador e um somador, porque há no máximo uma multiplicação
e uma som a em qualquer estado dado da Fig. 6.76. A configuração particular de multiplicador,
som ador e registrador da Fig. 6.77 é extremamente comum em circuitos simples de processamento
e é conhecida geralmente como unidade de multiplicar e acumular (MAC). O bloco operacional
multiplexa as entradas da unidade MAC.

Figura 6.77 Bloco operacional de um filtro FIR serial. Os componentes que estão dentro do retân­
gulo tracejado compreende o que é conhecido como componente de multiplicar e acumular (MAC).

Uma diferença a mais entre esse bloco operacional e o bloco operacional concorrente do
Exemplo 5.8 é que esse tem linhas de carga nos registradores x e em yreg. O projeto com concor­
rência carregava esses registradores a cada ciclo de relógio, ao passo que no projeto serial esses
registradores são carregados apenas durante estados particulares; os outros estados produzem re­
sultados intermediários.
No projeto concorrente do Exem plo 5.8, para estim ar o desem penho, assum im os 1 ns por
porta, 2 ns por som ador e 20 ns por multiplicador. O projeto tinha um caminho crítico de 20 ns
para o multiplicador e em seguida 4 ns para dois somadores em série, totalizando 24 ns. Esse era
também o tempo entre novos dados serem apresentados nas entradas e resultados serem gerados
na saída: 24 ns. Usando as medidas de desem penho mais precisas de latência e throughput, defi­
nidas na Seção 6.5, o projeto concorrente tem uma latência de 24 ns (atraso desde a entrada até a
saída) e um throughput de 1 amostra a cada 24 ns. O projeto serial tem caminho crítico igual ao
atraso de um multiplexador, um multiplicador e um somador. Assumindo um atraso de duas portas
para o multiplexador, obtem os um atraso de 2 ns + 20 ns + 2 ns, ou 24 ns. A latência da entrada até
a saída é de cinco estados, significando 5*24 ns = 120 ns. O throughput é de 1 amostra a cada 120
ns. Assim, o filtro FIR concorrente de 3 taps tem uma latência 120/25 = 5 vezes mais rápida, assim
como um throughput 5 vezes mais rápido, em comparação com o filtro FIR serial. Lembre-se do
Exemplo 6.20 que um filtro FIR concorrente com pipeline tem um throughput ainda mais rápido.
A diferença de desem penho entre as im plem entações serial e concorrente se tornará ainda
mais pronunciada se olharm os um filtro FIR com mais taps. Na Seção 5.3, após o Exemplo 5.8,
estimamos a latência de um filtro FIR concorrente de 100 taps com o sendo de 34 ns (o atraso é
maior do que no filtro concorrente de 3 taps, porque o filtro de 100 taps precisa de uma árvore de
somadores). O projeto serial ainda teria um caminho crítico de 24 ns, mas iria requerer 102 esta­
dos (1 para inicialização, 100 para realizar os cômputos nos taps e 1 para fornecer o resultado na
saída), com uma latência de 102*24 ns = 2448 ns. Assim, o aumento da velocidade de latência do
projeto concorrente seria 2448/34 = 72.
372 Sistemas Digitais

Deveríamos considerar também a diferença de tamanho entre os projetos serial e concorrente.


Com propósitos ilustrativos, vamos assumir que um som ador requer aproximadamente 500 portas
e um multiplicador, 5000 portas. Assim, o único multiplicador e o único som ador do projeto serial
iriam requerer apenas 5500 portas. Em um filtro FIR de 3 taps, os 3 multiplicadores e os 2 soma-
dores do projeto concorrente iriam requerer 5000*3 + 500*2 = 16.000 portas. Em um filtro FIR de
100 taps, só os 100 m ultiplicadores do projeto concorrente apenas iriam requerer 100*5000 =
500.000 portas -1 0 0 vezes mais portas do que no projeto serial.
Intuitivamente, esse números fazem sentido. Em com pa­
ração com um projeto serial, um projeto concorrente de 100 — • FIR concorrente
taps usa cerca de 100 vezes mais portas (devido ao uso de
O
100 multiplicadores em vez de apenas 1), atingindo ainda um -C
c
CO compromissos
desempenho cerca de 100 vezes melhor (devido à computação E
concorrente nos 100 multiplicadores em vez de computar uma
multiplicação de cada vez).
Dependendo de nossas necessidades de desempenho e res­
CO

i FIR
serial
trições de tamanho, poderíamos considerar projetos interme­ J____ L
diários entre os dois extremos, serial c concorrente, tais como atraso
um projeto com dois multiplicadores, que grosseiram ente se­ Figura 6.78 Tradeoffs do pro­
ria duas vezes maior e duas vezes mais rápido do que o projeto jeto FIR.
serial, ou com dez multiplicadores, que seria grosseiram ente
dez vezes maior e dez vezes mais rápido do que o projeto se­
rial. A Fig. 6.78 ilustra os tradeoffs entre os projetos serial e
concorrente de um filtro FIR. M

A s seções anteriores devem ter d eix ad o claro q u e o p rojeto RTL apresenta um a faixa
enorm e de soluções possíveis para o projetista. Um a m áquina de estados de alto nível sim ples
pode ser im plem entada com o q ualquer um a de um a enorm e variedade de im plem entações
possíveis, que se diferenciam trem endam ente em tam anho e desem penho.

Máquinas de estados de alto nível Moore versus Mealy


D a m esm a form a q ue p o d em o s c ria r um a F SM M oore ou M ealy (veja a S eção 6.3), p o d e ­
rem os c ria r m áq u in as d c esta d o s d e alto nível M o o re ou M ealy. N o c a so d c m áq u in as de
estad o s d e alto nível, um a do tipo M oore p ode ter as açõ es asso ciad as ap en as ao s estados,
ao passo q ue um a d o tipo M ealy pode te r as açõ es a sso ciad as às tran siçõ es. C o m o foi o
caso com as F S M s, o u so de um a m áquina d o tipo M ealy p ode re su lta r em m enos estados.
A co m b in ação d o s tipos M oore e M ealy é feita c o m u m e n te em m á q u in a s de estad o s de
alto nível.

► 6.6 MAIS SOBRE OTIMIZAÇÕES E TRADEOFFS


Computação serial versus concorrente
A pós ter visto num erosos exem plos de técnicas de tradeojf cm vários níveis dc projeto, p o ­
dem os detectar um tem a com um fundam entando alguns desses tradeoffs. Esse tem a é a co m ­
putação serial versus a concorrente. Serial significa realizar um a tarefa de cada vez. Concor­
rente significa realizar tarefas sim ultaneam ente.
Por exem plo, no projeto lógico com bin acio n al, podem os reduzir o tam anho da lógica
fatorando e colocando term os em evidência. Ao fazer isso, estam os basicam ente serializando
a com putação, com putando prim eiro os term os colocados em evidência e então com binando
os resultados com outros term os. N o projeto de com ponentes de bloco operacional, podem os
m elhorar a velocidade de um som ador com putando os bits de transporte concorrentem ente,
ao invés de esperar que o bit dc transporte propague-se serialm ente. No projeto RTL. p ode­
Otimizações e Tradeoffs 373

m os distribuir as operações por diversos estados, serializando-as para reduzir o tam anho, ao
invés de realizá-las concorrentem ente em um único estado. O s E xem plos 6.21 e 6.22 ilustram
am bos os tradeoffs da com putação serial versus a concorrente, para um circuito SA D e um
FIR, respectivam ente.
A realização de tradeoffs entre a com putação serial e a concorrente é um con ceito que
abrange todos os níveis do projeto digital. C om o regra geral, um projeto concorrente é m ais
rápido, m as m aior, ao passo q ue um projeto serial é m enor, m as m ais lento.
T ipicam ente, há num erosas opções de projeto que abrangem a faixa interm ediária entre os
projetos que são total m ente serial ou concorrente.

Otimizações e tradeoffs em níveis alto versus baixo de projeto


C om o regra geral, as otim izações e tradeoffs feitos nos níveis altos de projeto podem ter um
im pacto m uito m aior sobre os critérios de projeto do que as otim izações e os tradeoffs feitos
nos níveis inferiores de projeto. P or exem plo, im agine que você queira ir de carro a um a c i­
dade no outro lado do país no m enor tem po possível. Poderíam os reduzir o tem po dim inuindo
o núm ero de paradas para realizar as refeições, significando que carreg aríam o s os nossos
próprios alim entos no carro. P oderíam os reduzir tam bém o tem po dim inuindo o núm ero de
paradas para abastecer, significando que usaríam os um carro com um tanque de com bustível
que perm itisse o m áxim o de deslocam ento. A lgum as pessoas (não você, naturalm ente) pode­
riam pensar em viajar a velocidades acim a do lim ite legal. N o entanto, tipicam ente, essas não
são as prim eiras coisas em que você pensa quando tenta reduzir o tem po de deslocam ento de
um a viagem através d o país. A decisão m ais im portante é sobre qual itinerário seguir. Um
itinerário pode ter 7000 quilôm etros e outro, apenas 4000 quilôm etros de com prim ento. A
decisão em alto nível sobre qual itinerário seguir tem m uito m ais im pacto do que todas as
dem ais decisões de baixo nível m encionadas anteriorm ente. R ealm ente, estas últim as nos
serão úteis apenas se tom arm os a decisão correta em alto nível e, então, quiserm os reduzir
ainda m ais o tempo.
N o projeto digital, as decisões de
o tim ização e tradeoff to m ad as cm alteraçòes de alto nível

alto nível (com o as d ecisõ es RTL)


podem ter um im pacto m uito m aior X
do q ue aq u elas tom adas cm baixo // \\
nível (com o decisões sobre os co m ­
p onentes d o b lo co o p eracio n al ou
sobre a lógica de m últiplos níveis).
P or exem plo, na co nstrução de um
filtro FIR , a decisão RTL sobre ele (b)
ser concorrente ou serial (E xem plo Figura 6.79 Decisões de alto nível versus baixo nível:
6.22) terá um im pacto m uito m aior
(a) decisões de alto nível (indicadas pelos dois círculos
sobre o tam anho e o desem penho do maiores) focalizam o projeto em uma região, ao passo
circuito do que as decisões tom adas que as decisões de baixo nível atuam dentro da região e
em nível de co m p o n en te sobre um (b) analogia com uma luminária refletora.
som ador ser de bit propagado ou an-
tecipado {carry-ripple ou carry-lookahead ), ou a decisão em nível de lógica com bi nacional
sobre um a lógica ser de dois ou m últiplos níveis. E ssas decisões em níveis inferiores fazem
sim plesm ente um ajuste fino nas decisões de alto nível sobre tam anho e desem penho. A Fig.
6.79(a) ilustra esse conceito. U m a analogia poderia ser um a lum inária com refleto r ilum i­
nando um terreno, com o m ostrado na Fig. 6.79(b) - o d eslocam ento da lum inária à direita
ou à esquerda desde um a altura elevada (decisões de alto nível) terá um im pacto m aior sobre
qual região do terreno será ilum inada (soluções possíveis) do que os m ovim entos de baixa
altura (decisões de baixo nível).
374 Sistemas Digitais

Seleção de algoritmo
Q uando se tenta im plem entar um sistem a com o um circuito digital, talvez a decisão de pro­
je to de nível m ais elevado, tendo portanto o im pacto m ais significativo sobre os critérios de
projeto, co m o tam anho, desem penho, consum o, etc, seja a esco lh a de um algoritm o. Um
algoritmo é um conjunto de passos que resolve o problem a. O m esm o problem a pode ser
resolvido por diferentes algoritm os. A lgoritm os para o m esm o problem a, quando im plem en­
tados na form a de circu ito s digitais, podem resu ltar em d esem p en h o s e/ou tam anhos tre ­
m endam ente diferentes. A lguns algoritm os podem sim plesm ente ser m elhores do que outros
(otim ização sem m uito tradeoff), ao passo que outros podem representar um tradeoff entre
desem penho, tam anho e outros critérios. A seleção de um algoritm o para um problem a de
projeto digital talvez esteja no nível m ais elevado e pode ter o m áxim o de im pacto sobre os
critérios de projeto. Por exem plo, os exem plos anteriores m ostraram várias im plem entações
de um filtro FIR. N o entanto, existem m uitos outros algoritm os de filtragem que são bem
diferentes do algoritm o usado naqueles filtros FIR. A lguns algoritm os podem fornecer um a
filtragem de qualidade m ais elevada às custas de um a necessidade m aior de com putação, ou-
tros podem fornecer um a qualidade inferior m as precisam de m enos com putação.
Ilustrarem os a seleção de algoritm o por m eio de um exem plo.

► EXEMPLO 6.23 Compressão de dados usando diferentes algoritmos de pesquisa em tabela


Queremos comprimir dados que serão enviados através de uma rede de computadores de longa dis­
tância para conseguir uma comunicação mais rápida enviando menos bits. Um método para essa com­
pressão é usando códigos curtos para os valores que aparecem mais freqüentemente. Por exemplo, su­
ponha que cada item de dado tenha 32 bits de tamanho. Poderíamos analisar os dados que esperamos
enviar e descobrir os 256 valores de dados que aparecem mais freqüentemente. Então, poderíamos
atribuir um código único de 8 bits para cada um desses 256 valores. Ao enviar os dados pela rede,
enviamos primeiro um bit que indica se enviaremos em seguida um item de dado codificado com 8
bits, ou um item de dado bruto de 32 bits - se o primeiro bit fosse 1, isso poderia significar codificado,
e se fosse 0, significaria dado bruto. Se ocorrer de todos os itens de dados que estão sendo enviados
estarem no topo entre os 256 mais freqüentes, então estaremos enviando 9 bits por item de dado (1
bit para indicar se é codificado mais os 8 bits de dados codificados) ao invés de 32 bits por item de
dado - uma compressão de aproximadamente 4 vezes, o que poderia se traduzirem uma comunicação
cerca de 4 vezes mais veloz.
Há um algoritm o usado para pesquisar uma lista de
valores em uma memória que é conhecido como pesquisa 0: 0x00000000
linear. Com eçando no endereço 0, com param os os con­ 1: 0x00000001 d
teúdos de cada palavra de memória com o item de dado que 2: 0x0000000F
$
estamos procurando (conhecido como chave), incrementa­ 3: 0x000000FF
mos o endereço e repelim os o processo até encontrarm os • •• • •• -^64
uma igualdade. Nesse ponto, tratamos o valor do endereço
onde se deu a igualdade como sendo o valor codificado. Se 96: OxOOOOOFOA ^ 3 ) 96
128: OxOOOOFFAA
chegarmos ao endereço 256 e não tiver ocorrido uma igual­ C O ^128
CD
dade, transmitiremos o dado bruto. O algoritmo de pesquisa c
*— ço
C 'C
linear é um modo lento de se pesquisar uma lista ordenada CO O •Cc
O
’d
em uma memória. Para os itens de dados que não estão na cr
c0n) CO
ço
memória, o algoritmo necessitará de 256 leituras e com pa­ CL ‘5
255: OxFFFFOOOO cr
rações, o que se traduzirá em 256 ciclos. Para os dados que cCD
o
CL
estão na memória, precisaremos de 128 leituras, em média. m em ória 256x32
Um algoritm o mais rápido para pesquisar uma lista de Figura 6.80 Pesquisa em uma
itens em uma memória é conhecido com o pesquisa biná­ memória ordenada usando a chave
ria. Primeiro ordenam os a lista e então a armazenamos na OxOOOOOFOA - a pesquisa linear
memória (precisamos ordená-la apenas uma vez). Para pro­ requer 97 leituras e comparações,
curar um item, com eçam os no meio da memória, ou seja,
a pesquisa binária, apenas 3.
Otimizações e Tradeoffs 375

no endereço 128, e comparam os o conteúdo dessa palavra com a chave. Se o valor do conteúdo
for maior que a chave, então saberemos que a chave, se ela existir na memória, deverá estar em
algum lugar entre 0 e 127. Desse modo, vamos para o meio desse intervalo, ou seja, no endereço
64, e comparamos novamente. Se o valor ali for maior que a chave, iremos procurar entre 0 e 63;
se menor, entre 65 e 127. Assim, após cada comparação reduzimos à metade o intervalo restante
de endereços no qual a chave poderá estar. A divisão repetida de 256 à metade só pode ser feita 8
vezes: 256, 128,64, 32, 16, 8, 4 ,2 e 1. Em outras palavras, após um máximo de 8 comparações, le­
remos encontrado a chave ou, então, reduzido o intervalo a 1, significado que a chave não pôde ser
encontrada na memória. Quando a chave não se encontra na memória, a pesquisa binária é 256/8
= 32 vezes mais rápida do que a pesquisa linear e também aproximadamente esse valor quando a
chave se encontra na memória. Além disso, a pesquisa binária requer apenas um bloco de controle
ligeiramente mais inteligente.
Vemos que a escolha do algoritmo correto faz uma grande diferença no desem penho deste
exemplo, diferença muito maior do que a determinada, digamos, pela velocidade do comparador
que está sendo usado. ◄

Otimização do consumo de energia


O consum o de energia está se tornando um im portante critério de projeto, tanto na com puta­
ção avançada com o na em barcada*. A unidade de potência é o watt, que representa a energia
por segundo (isto é, jo u le s por segundo). N a com putação avançada, com o em PCs de m esa,
servidores, ou consoles de videogames, os chips no interior do com putador dissipam m uita
potência, fazendo com que se tornem m uito quentes. Por exem plo, um chip típico no interior
de um PC pode consum ir 60 w alts-p en se em tocar um a lâm pada incandescente de 60 watts
(sem de fato tocá-la) para perceber quão quente é isso. N a com putação avançada, o projeto de
chips de baixo consum o reduz a necessidade de outros m étodos de resfriam ento que não sejam
sim ples ventiladores, reduzindo tam bém os custos com eletricidade, que podem se tornar bem
significativos no caso de com panhias que trabalham com grandes núm eros de com putadores.
N a com putação em barcada, freqüentem ente, m esm o os m étodos sim ples de resfriam ento,
com o os ventiladores, não estão disponíveis - p o r exem plo, o seu telefone celu lar não tem
ventilador (se o tivesse, as gravatas e os lenços das pessoas poderiam ficar presos nele). Os
dispositivos portáteis em barcados podem ter chips que operam com apenas 1 w att ou m enos.
A lém disso, os dispositivos portáteis obtêm tipicam ente a sua energia de baterias e, por­
tanto, são n ecessário s chips de baixo co n su m o
para prolongar a vida das baterias - especial m ente 8
considerando o fato de que as baterias não estão se
O
O
tornando m elhores com velocidade suficiente para demanda
<N
de energia
m antê-las acom panhando o consum o crescente de E
o
energia. Segundo algum as m edidas, a dem anda de
co
energia p o r chip está dobrando aproxim adam ente >
II
a cada três anos (seguindo a lei de M oore). A Fig. co
6.81 m ostra um gráfico dessas dem andas de ener­ ’õ>
O 2
gia, com paradas com as m elhorias de densidade de c
<D
1
energia das baterias, as quais crescem a um a taxa
atual de apenas 8% ao ano. E ssa d iferen ça cres­ J__ I
cente que está ilu strad a traduz-se em vidas úteis 2001 03 05 07 09
m enores para as baterias de um dispositivo, com o Figura 6.81 A densidade de energia
um telefone celular, ou em baterias m aiores. das baterias está aum entando mais len­
A tualm ente, a m ais popular das tecnologias de tamente do que as dem andas crescentes
IC s está usando os transistores C M O S, sendo que de energia dos chips digitais.

* N. de T.: E m b e d d e d c o m p u tin g s em inglês.


376 Sistemas Digitais

o consum o de potência, em sua m aior parte, vem do chaveam ento ou transição de valores de
0 para 1. A razão ê que as conexões não são perfeitas, apresentando capacitância (não co lo ­
cam os um capacitor de propósito nas conexões - isso resulta sim plesm ente do fato de que as
conexões não são condutores perfeitos de eletricidade). Para chavear um a conexão de 0 para
1 é necessário carregar esse capacitor. O chaveam ento de volta dessa conexão de 1 para 0 faz
essa carga ser d escarregada para a terra. O resultado desse chaveam ento é um consum o de
energia. Esse consum o é conhecido com o potência dinâmica , porque vem das m udanças nos
sinais (dinâm ico significa m udança). O consum o devido à potência dinâm ica em um a co n e­
xão CMOvS ê proporcional ao valor da capacitância (C) da conexão, m ultiplicado pela tensão
(V) ao quadrado e a frequência na qual a conexão está sendo chaveada, ou seja:
P = k * CV2f (equação do consum o C M O S devido à potência dinâm ica)
em que k é algum a constante. Para com putar a potência dinâm ica de um circuito, deverem os
som ar as potências calculadas em todas as conexões segundo a equação acim a.
O lhando a equação acim a, pode-se ver claram ente que a m aior redução na potência d inâ­
m ica será causada pela dim inuição da tensão, porque a tensão entra com uma contribuição qua­
drática (ao quadrado) à potência. O s projetistas de circuitos de baixa tensão procuram reduzir
o consum o criando transistores que operam na m enor tensão possível, reduzindo assim o term o
V, e que tenham conexões com a m enor capacitância possível, reduzindo o term o C. Portanto, os
projetistas digitais podem optar por utilizar portas que trabalham com baixas tensões.
Infelizm ente, as portas de tensões m ais baixas tem um atraso m aior do que as portas de
tensões m ais elevadas, resultando um tradeoffs ntre potência e desem penho.
U m a outra m aneira de se reduzir a potência dinâm ica consum ida por um circuito ê b ai­
xando a freqiiência do relógio do circuito, o que obviam ente leva à dim inuição do term o f em
todas as conexões de relógio, assim com o em m uitas outras conexões que sofrem m odifica­
ções a cada borda de relógio (com o as conexões de registradores e as lógicas conectadas às
suas saídas). N ovam ente, no entanto, a redução da freqiiência do relógio deixa o desem penho
m ais lento, resultando um tradeoff c ntre potência e desem penho.
O direto r técnico de um a das m aiores em presas de projeto de chips disse-m e em 2004
que, na em presa dele, ”A potência consum ida é o inim igo núm ero um.” A razão é que eles
dim inuíram a tensão até o m ínim o possível e, além disso, a cad a ano vêm colocando m ais
transistores nos ICs, devido ao m enor tam anho deles, significando m ais chaveam ento nas co ­
nexões. E ntretanto, por outro lado, a capacitância não vêm dim inuindo na m esm a velocidade
que o tam anho dos transistores. A m edida q u e acrescentam os transistores ao IC, esse passa
a consum ir cada vez m ais energia, podendo surgir problem as devido ao calor excessivo e ao
consum o acelerado da energia das baterias.

Clock gating (técnica avançada)


A ssum indo que os term os Ve C tenham sido reduzidos ao m áxim o possível, por m eio de téc­
nicas de projeto em nível de transistor, a potência poderá ser reduzida ainda m ais dim inuindo-
se f, a freqiiência na qual as conexões sofrem chaveam ento. Um m étodo para se reduzir esse
consum o de energia é conhecido com o clock gating. O clock gating* 6 a d esab ilitação do
sinal de relógio em regiões do chip nas quais sabem os que não há com putações sendo rea­
lizadas em um dado m om ento. O clock gating econom iza energia porque um a porcentagem
significativa das conexões que estão sofrendo transições em um chip são as que distribuem o
sinal relógio para todos os registradores e flip-flops - possivelm ente, 2 0 a 30% do consum o
de energia é devido ao chaveam ento do sinal de relógio presente em todo o chip. O clock ga­
ting reduz f sem baixar a freqiiência do próprio relógio.
N o clock gating , o sinal de relógio é desabilitado subm etendo-o a um a porta A N D ju n ta ­
m ente com um sinal de habilitação, o qual é ativado pela m áquina de estados. L em bre-se de
que, a cada borda de subida do relógio, um registrador com carga paralela volta a carregar

* N. de T: Aparece traduzido algumas vezes por "habilitação de relógio”.


Otimizações e Tradeoffs 377

nele próprio os m esm os valores presentes nos flip-flops do registrador. Q uando se im pede
que a borda de relógio apareça, os m esm os valores são m antidos nos flip-flops, o que leva ao
m esm o resultado final; os conteúdos do registrador não se alteram .
O clock gating não é algo q ue os projetistas digitais fazem eles próprios. Pelo contrário,
as m odernas ferram entas de síntese perm item que possam os especificar a habilitação c desa-
bilitação do relógio, por m eio de com andos especiais que são usados em cada estado. Essas
ferram entas devem se valer de cautela extrem a, porque o acréscim o de um a porta a um sinal
de relógio retarda-o. D isso resultam ligeiras diferenças entre os sinais de relógio que estão
presentes cm diferentes partes do circuito, um efeito conhecido com o clock skew*. A s ferra­
m entas devem realizar um a cuidadosa análise de tem po para assegurar que o clock skew não
irá alterar o com portam ento global do circuito. A lém disso, a inserção de portas no cam inho
de um sinal de relógio poderá d im in u ir a agudeza das bordas desse relógio. P ortanto, isso
deve ser feito com cuidado devendo-se, algum as vezes, usar portas especiais. Na prática, en ­
tretanto, essa técnica é am plam ente usada pelas ferram entas de baixa potência.
Irem os dem onstrar o clock gating através de um exem plo.

► EXEMPLO 6.24 Filtro FIR serial com clock gating para reduzir a potência
Projetam os um filtro FIR serial no
Exemplo 6.22. Uma máquina de esta­
dos de cinco estados controlava o bloco
operacional. A máquina de estados car­
regava os três registradores x t apenas
no prim eiro estado, estado 57, e o re­
gistrador yreg apenas no último estado,
estado S5. Ainda, o projeto distribuía o
sinal de relógio a todos os quatro regis­
tradores utilizando quatro conexões, in­
dicadas por n l - n 4 na Fig. 6.82(a). Ob­
^jinnnnnnnnnnjrnjuui serve com base no diagrama de tempo,

m." .n3_n_n_n_n_n_n_n_n_n_n_n_n_n_ri_ri_n
2
na parle superior da figura, que os si­
nais n l - n 4 mudam acom panhando as
(a, n 4 ju ijin n n jir in jin jijin j^ transições do relógio e lembre-se que
cada uma dessas transições consom e
potência dinâmica.

Figura 6.82 Clock gating : (a) a cada


ciclo, o sinal de relógio sofre chave-
am ento em todas as conexões dese­
nhadas com traço bem cheio, mas os
registradores x t são carregados apenas
no estado SI e o y re g , no estado 55-de
modo que a m aior parte dos cliavea-
clk liijw u iíiim jw u m n ji mentos de relógio é desperdiçada; (b)

n1, n2, n3
___ n____ n passando o sinal de relógio por uma
porta reduz o chaveam ento nas cone­
ib) "4 n n xões de relógio.

* N. de T: Literal mente, é “inclinação de relógio". É uma alusão à forma inclinada em escada que, devido aos diferentes atrasos,
pode assumir o conjunto dos sinais de relógio presentes em diversos pontos do circuito quando são dispostos de forma adequa­
da em um gráfico.
378 Sistemas Digitais

A Fig. 6.82(b) mostra um projeto com clock gating. O bloco de controle habilita o relógio por
meio de uma porta enviando-o aos registradores x t, fazendo s l ser 0 em lodos os estados, exceto
SI. De modo similar, o bloco de controle encaminha o relógio ao registrador y r e g , fazendo s5 ser
0 em todos os estados, exceto 55. Note a redução significativa de chaveamento de sinal nas cone­
xões de relógio n l - n 4 , mostrados na parte inferior da Fig. 6.82. ◄

Portas de baixa potência em caminhos críticos


Nem todas as portas são igualm ente rápidas. O s engenheiros que constroem as portas a partir
de transistores podem tornar uma porta mais rápida aum entando o tam anho dos transistores da
porta, ou operando-a com uma tensão mais elevada, ou por diversos outros meios. A ssim , uma
porta A ND de duas entradas pode ter um atraso de 1 ns, ao passo que uma outra pode ler um
atraso de 2 ns. Esta últim a AND poderá consum ir m enos
potência, devido a seu tam anho ou tensão menores.
Se q u iserm o s red u zir a p o tên cia co n su m id a por portas de potência elevada

um circuito, poderem os co n stru ir o circuito com pleto .5


'o
c p o rtas d e baixa potência
usando portas de baixa potência para co n seg u ir um <0 em cam inho nâo crítico
o
baixo co n su m o , às cu stas de um d esem p en h o m ais a
lento, com o m ostrado na Fig. 6.83. portas de
A lternativam ente, podem os co lo c a r as portas de baixa potência
baixa potência som ente nos cam inhos não críticos, de J____I____L
atraso
m odo que tornarem os m ais com pridos esses cam inhos,
mas m antendo os seus atrasos não superiores ao do ca­ Figura 6.83 Usando portas de baixa
m inho crítico, com o se m ostra no exem plo seguinte. potência.

► EXEMPLO 6.25 Redução da potência de caminhos não críticos pelo uso de uma lógica de múltiplos níveis
No Exemplo 6.12, reduzimos o com prim ento de um caminho não crítico pelo uso de uma lógica
de múltiplos níveis. Neste exemplo, ao invós disso, reduziremos a potência consum ida em cam i­
nhos não críticos usando portas de baixa potência. Assuma que portas normais têm um atraso de
1 ns e consomem 1 nanowatt de potência e que portas de baixa potência têm um atraso de 2 ns e
consomem 0,5 nanowatt de potência.
O lado esquerdo da Fig. 6.84 mostra o mesmo circuito do Exemplo 6.12, lendo um caminho
crítico com um atraso de 3 portas. Assuma que todas as portas são normais, significando que o
atraso do caminho crítico é 3 ns e que o consumo total de potência é 5 nanowatts.

26 tran sisto res 26 tran sisto res

Figura 6.84 Uso de portas de baixa potência em cam inhos não críticos. Os números dentro de
cada porta representam o atraso da porta em nanossegundos e o consumo em nanowatts.

As duas portas AND inferiores estão em dois caminhos não críticos, lendo atrasos de apenas 2
ns. Assim, podemos substituir essas portas AND por portas AND de baixa potência. O resultado ê
que os atrasos dos dois caminhos aumentam para 3 ns, de modo que se tomam iguais, mas não su­
periores, ao atraso do caminho crítico. O resultado é que também a potência total torna-se apenas
4 nanowatts ao invés de 5 nanowatts (uma redução de 20%). ◄
Otimizações e Tradeoffs 379

► 6.7 PERFIL DE PRODUTO - GRAVADOR E TOCADOR DIGITAL DE VIDEO


Visão geral de vídeo digital
N a década de 1990, a digitalização de vídeo tornou-se p rática devido aos circuitos digitais
m ais rápidos, m enores e de potência m ais baixa. A nteriorm ente, o vídeo era capturado, arm a­
zenado e exibido na m aior parte por m eio de m étodos analógicos. O vídeo digitalizado opera
am ostrando o sinal de vídeo analógico e convertendo as am ostras em valores digitais. Essa
digitalização é sim ilar ao exem plo de digitalização de áudio da Fig. 1.1, m as com um trabalho
adicional.
N a realid ad e, um vídeo é um a série de
im agens estáticas exibidas rapidam ente, c o ­
nhecidas co m o quadros (fratnes), m ostrado
na Fig. ó.85(a). Um segundo de vídeo pode
co n sistir em cerca de 30 q u a d ro s-o s olhos e
cérebros das pessoas vêem essa seqüência rá­
pida de quadros com o sendo um vídeo contí­
nuo e suave.
U m display digital pode ser dividido cm
algum as centenas de m ilhares de m inúsculos
“e le m e n to s de im ag em ” (picture elements)
ou pixels. U m de tam anho típico tem cerca
de 720 lin h as p o r 4 8 0 co lu n as. P ara c a d a
quadro, a d ig italização de um a am ostra c a p ­
tura d iv erso s v alores em cad a pixel, co m o
as in ten sid ad es das co m p o n en tes verm elha, Figura 6.85 Vídeo: (a) é uma série de ima­
azul e verde da lum inosidade daquele pixel, gens ou quadros, com muita redundância en­
convertendo as m edidas analógicas dessas in ­ tre os quadros, (b) ele pode ser construído a
tensidades em núm eros dieitais. O resultado partir de quadros I (intra) e P (previsto), mos­
é a rep resen tação de um quadro digitalizado trados com os tam anhos relativos das codifi­
com o sendo um a série (grande) de Os e l s e a cações em bits.
representação de um vídeo digitalizado com o
sendo um a série grande de quadros digitalizados. O vídeo d igitalizado pode ser transm itido,
arm azenado, exibido e copiado com um a qualidade m uito su p erio r à de um vídeo analógico.
A lém disso, o vídeo d igitalizado pode ser co m prim ido, resultando um vídeo de qualidade
possivelm ente superior à de um vídeo analógico que é transm itido ou arm azenado usando a
m esm a m ídia.

DVD - uma forma de armazenamento de vídeo digital


Um disco de vídeo digital (tam bém conhecido por disco versátil digital), ou DVD, arm azena
vídeo em form ato digital. Vendidos inicialm ente em 1997, os DVDs substituíram a tecnologia
analógica de vídeo conhecida com o fita V H S. O s locadores de DVD apareceram em centros
de entretenim ento dom ésticos, com putadores pessoais, autom óveis (especialm ente em veí­
culos orientados à fam ília) e m esm o com o unidades portáteis autônom as. Em 2001, as co m ­
panhias de eletrônica voltadas ao consum o introduziram no m ercado o prim eiro gravador
de DVD, perm itindo que as pessoas gravassem program as de televisão em D VD s graváveis
especiais. A popularidade dos D V D s, em com paração com a tecnologia analógica anterior-
m ente popular de V H S, provém de diversas vantagens, incluindo m elhor qualidade de vídeo,
ausência de deterioração na qualidade de vídeo ao longo do tem po e a capacidade de saltar
direlam enle para partes particulares de um vídeo sem necessidade de enrolar a fita para frente
ou para trás.
380 Sistemas Digitais

O s D VD s arm azenam grandes q u antid ad es de dados em um a fina cam ada refleti va de


m etal. E m bora essa cam ada m etálica no interior de um DVD pareça plana desde a nossa pers­
pectiva, há na realidade bilhões de m icroscópicas cavidades sobre a superfície m etálica que
arm azenam os dados. Essas cavidades (pits), ou ausência delas (lands), arm azenam os dados
binários no DVD. A Fig. 6.86 m ostra com o um tocador de DVD extrai a inform ação do disco.
U sando um laser m uito preciso, a luz é focada sobre a cam ada m etálica no interior do DVD.
E ssa cam ada reflete a luz até um sensor ótico que pode detectar se a luz está sendo refletida
de um a cavidade ou da superfície plana. D etectando as diferentes regiões, o sensor ótico cria
um fluxo de valores binários á m edida que lê o DVD.

Detector
ótico Decodificador de vídeo
Monitor

Cabeçote de rotação

V is ta e m c o r t e d o ...010100101100
D e te c t o r ó tic o
Sensor
ótico

Figura 6.86 Leitura de um DVD em um tocador de DVDs. O elemento de detecção ótica do toca­
dor de DVD emite um feixe laser para a superfície do DVD. Esse reflete o laser de volta ao sensor
ótico o qual usa a intensidade da luz refletida para produzir a sequência de Os e l s armazenados
no DVD. Um circuito decodificador de DVD converte os dados binários em uma seqüência de
quadros que as pessoas interpretam como uma imagem em movimento.

O s dados binários do DVD são organizados de form a serial em um a espiral que se afasta
do centro do DVD. Q uando o DVD está lendo os dados, o laser e o sensor ótico devem se
deslocar lentam ente do centro até a borda externa do DVD. Se o DVD for de cam ada dupla,
os dados na segunda cam ada do disco estarão arm azenados em um a espiral que se desloca da
periferia do disco para o seu centro. A razão para a espiral da segunda cam ada estar ao co n trá­
rio é para evitar que o laser e o sensor ótico tenham necessidade de se reposicionar no centro
do disco, após a localização da segunda cam ada durante um a m udança de cam ada. (Você
pode ter notado um a pausa m om entânea em um certo ponto de um film e, qu an d o ocorre a
m udança de cam ada em um DVD.)
Um DVD de um lado e cam ada sim ples pode arm azenar 4.7 gigabytes de dados (ou seja,
37.6 gigabits), m as essa quantia não é suficiente para um film e a m enos que os dados sejam
com prim idos. C onsidere um vídeo com um a resolução de 720 pixels por 480 pixels, usando
24 bits de inform ação por pixel e exibido a 30 quadros por segundo. Um quadro irá requerer
720*480*24 = 8.294.400 bits, ou cerca de 8 M bits. Um segundo de vídeo, ou 30 quadros,
irá necessitar 30*8.294.400 = 248.832.00 bits, ou cerca de 250 M bits. Portanto, um film e de
100 m inutos irá requerer cerca de 250 M bits/segundo * 100 m inutos * 60 segundos/m inuto
= 1500 G bits. E ntretanto, um DVD pode arm azenar apenas 37,6 G bits. Para arm azenar um
vídeo, um DVD deve arm azená-lo em form ato com prim ido.
Otimizações e Tradeoffs 381

U m D V D é apenas um de m uitos m eios d iferen tes de arm azen am en to digital de vídeo.


U m vídeo digitalizado pode ser arm azenado e m q u alq u er m ídia cap az de arm azenar Os e ls
de algum a form a, lais com o um a fita (usada em m uitas câm eras digitais de vídeo), em um a
m em ória flash (usada em câm eras digitais e telefones celulares com capacidade de gravação
de vídeo), em um C D , ou em um a unidad e de disco rígido de com putador. T ip icam ente,
todos esses processos são ainda bastante lim itados e, portanto, n ecessitam de m étodos de
com pressão.

Codificação de vídeo MPEG-2 - enviando as diferenças entre quadros usando quadros l#P e B
A com pressão de vídeo M PE G -2 foi definida e p ad ro n izad a pelo M otion P ictu re E xpert
G roup em 1994 (com o um a m elhoria do padrão M PEG-1 de 1992) e é usada em D V D s, tele­
visão digital e num erosos outros dispositivos de vídeo. A s taxas de com pressão M PE G -2 vão
de 30:1 até 100:1 ou mais. A taxa de com pressão é determ inada pela divisão do núm ero de
bits do vídeo digitalizado antes da com pressão pelo núm ero de bits após a com pressão. A s­
sim , se um vídeo digitalizado requerer 400 gigabytes sem com pressão e apenas 4 gigabytes
com com pressão, a taxa de com pressão será 400/4 = 100:1. N ote que a colocação dos 1500
G bits de um film e em 37,6 G bits iria requerer um a taxa de com pressão de 1500 G bits/37,6
G bits = 40,1.
A observação chave que levou ao m étodo de com pressão M P E G -2 é que tipicam ente
existe pouca diferença entres dois quadros sucessivos de um vídeo; em outras palavras, um
vídeo tem tipicam ente m uita redundância entre quadros. Por exem plo, um quadro pode co n ­
sistir em um a pessoa parada à frente de um a m ontanha, co m o na Fig. 6.85(a). O próxim o
quadro (que representa talvez 1/30 de um segundo após) pode ser quase idêntico ao quadro
anterior, exceto que a boca da pessoa abriu-se ligeiram ente. O próxim o quadro ainda pode ser
quase idêntico, com a boca da pessoa aberta m ais um pouco, e assim por diante.
Portanto, o M PE G -2 não codifica sim plesm ente cada quadro com o sendo um a im agem
distinta. Em vez disso, para tirar vantagem da redundância entre os quadros, o M PEG -2 pode
optar por codificar cada quadro em um a das seguintes form as:

• Um quadro / , ou assim cham ado “quadro intracodificado”, é a im agem com pleta.

• Um quadro P , ou “quadro previsto” , é um quadro que sim plesm ente descreve a diferença
entre o quadro corrente e o anterior. A ssim , para obter a im agem desse quadro, deve-se
com binar o quadro P com o quadro anterior.

Por exem plo, a Fig. 6.85(b) m ostra quadros P que contêm apenas a diferença em relação
ao anterior. O bviam ente, um quadro P irá requerer m enos bits do que um q u adro I. A lguns
exem plos de tam anhos de quadros poderiam ser cerca de 8 M bits para um quadro I e apenas
2 M bits para um quadro P. A ssim , ao invés de representar 30 quadros com o 30 im agens com ­
pletas (30 quadros I), um m étodo de com pressão poderia representar esses quadros usando
a seguinte seqüência de quadros I P P P P P P P P P P P P P I P P P P P P P P P P P P P P . A
taxa de com pressão neste exem plo seria assim 8 M bits * 30 / (2 * 8 M bits + 28 * 2 M bits) =
240 / 72 = 3,3 : 1. O bviam ente, um a im agem criada por quadros preditos (P) com binados com
um quadro anterior não será um a representação p erfeita da im agem original, especialm ente
se há m uita m ovim entação no vídeo. A ssim , o M PE G -2 faz um tradeoff perdendo algum a
qualidade e obtendo com pressão.
Para conseguir reduções ainda m aiores, o M PE G -2 usa um terceiro tipo de quadro:

• Um quadro # , ou “quadro previsto bidirecional”, é um quadro que pode arm azenar d ife­
renças entre quadros futuros e anteriores.

D esse m odo, os quadros B podem ser ainda m enores do que os quadros P. Um exem plo de
quadro B poderia conter apenas 1 M bits.
382 Sistemas Digitais

► EXEMPLO 6.26 Computando as taxas de compressão envolvendo quadros I, P e B


Assuma que uma seqüência M PEG-2 de 30 quadros tem a seguinte sequência de quadros: I B B
P B B P B B P B B P B B I B B P B B P B B P B B P B B . Assuma os seguintes tamanhos médios
de 8 Mbits para os quadros I. 2 Mbits para os quadros P e 1 Mbits para os quadros B. Compute a
taxa de compressão.
A taxa de compressão neste exemplo será 8 Mbits * 30 / (2 * 8 Mbits + 2 Mbits + 20 * 1 Mbits)
= 2 4 0 /5 2 = 4 ,6 : 1.
O exemplo de seqüência de quadros é de fato bem típico de um vídeo MPEG-2, com os qua­
dros I ocorrendo a cada 12-15 quadros. ◄

É possível que os codificadores de vídeo M PE G -2 procurem criar cerca de 30 quadros por


segundo. C om centenas de m ilhares de pixels por quadro que devem ser com parados com os
de outro quadro, a codificação M PEG -2 requer um a grande quantidade de com putações para
determ inar quais quadros deverão ser I, P ou B. e quais deverão ser os valores para os quadros
P e B. A lém disso, a m aio ria dessas com putações co n sistirá na mesma com putação, reali­
zada entre regiões correspondentes de dois quadros. A ssim , m uitos codificadores M PEG -2
utilizam circuitos digitais custom izados para paralelizar essas com putações, às custas de um
tam anho m aior de hardw are. Por exem plo, o circu ito para calcu lar a so m a das diferenças
absolutas, construído no E xem plo 6.21, usava m ais paralelism o do que o do E xem plo 5.9, às
custas de um tam anho m aior de circuito. E sse circuito seria útil em um codificador de vídeo
que necessitasse determ inar rapidam ente se um quadro deveria ser codificado com o um q u a­
dro P ou B. ou com o um quadro I. C ircuitos adicionais poderiam co m p u tar os valores reais
dos quadros P e B.
De m odo sem elhante, a partir dos quadros I, P e B, um decodificador M PE G -2 de vídeo
poderia usar circuitos para reconstruir rapidam ente os quadros com pletos das im ag en s-além
do que, em M PE G -2, é m ais fácil fazer a decodificação de vídeo do que a codificação, porque
os conteúdos dos quadros P e B são determ inados efetivam ente apenas durante a codificação;
na decodificação, é necessário apenas que os quadros P e B sejam com binados com os q u a ­
dros q ue lhe são vizinhos.

Passando para o domínio de freqüência para obter uma compressão maior

DCT-transformada co-seno discreta


V im os na seção anterior que a transm issão de um quadro (P ou B), que é sim plesm ente um a
diferença em relação a um quadro anterio r ou futuro, pode p ro d u zir alg u m a com pressão.
E ntretanto, as laxas de com pressão obtidas eram de apenas 4:1. Vimos antes que, para arm a­
zenar um film e com pleto, um DVD necessita de um a taxa de com pressão em torno de 40:1.
A ssim , torna-se necessário realizar um a com pressão maior.
Portanto, o M PE G -2 com prim e individualm ente cada quadro I, P e B ainda mais. O m é­
todo de com pressão envolve a aplicação do q u e é co n h ecid o com o tran sfo rm ad a co -sen o
discreta a blocos constituídos de 8x8 valores de pixels em cada quadro. A transform ada co-
seno discreta é usada tam bém no bem conhecido padrão JPE G para co m p rim ir im agens es­
táticas, com o as de um a câm era digital. A transformada co-seno discreta (Discrete Cosine
Transform), ou DCT, transform a inform ações do dom ínio do espaço para o dom ínio da fre­
qüência. (A D C T é sim ilar a outra técnica popular, conhecida com o transform ada rápida de
F ourier ( Fast Fourier Transform), ou FFT, usada tam bém na conversão para o dom ínio da
freqüência.)
A passagem para o dom ínio da freqüência é um conceito poderoso, am plam ente usado no
processam ento digital de sinais. Para com preender esse conceito, vam os considerar que q u e ­
rem os arm azenar disitalm en te os sinais analógicos m ostrados na Fi«. 6.87, usando o m enor
núm ero de bits possível. O sinal é um a onda co-seno de I Hz, com um a am plitude de 10 uni­
dades. Para arm azenar o sinal digitalm ente, poderíam os arm azená-lo a intervalos freqüentes,
Otimizações e Tradeoffs 383

talvez a cada m ilissegundo, e gravar o valor m edido do


sinal na form a de um núm ero binário, talvez de 8 bits
de largura. Para um segundo, seriam necessários 1000
* 8 = 8000 bits. Por outro lado, poderíam os arm azenar freq: 1 Hz
amp: 10
o fato de que o sinal é um a onda co-seno, com um a
freqüência de 1 H z e um a am plitude de 10. Se arm a­
zenarm os cada um desses núm eros com o um valor de tempo (s)
8 bits, então precisarem os arm azenar 8 + 8 = 16 bits.
D ezesseis bits é bem m enos do que 8000 bits. Figura 6.87 D igitalizando sinais
N aturalm ente, nem todos os sinais que querem os pela conversão para o dom ínio da
digitalizar são ondas co-senos sim ples. N o entanto - e frequência.
essa é a idéia-chave que fundam enta a representação no
dom ínio da freqüência - podemos realizar uma aproximação de qualquer sinal original na
forma de uma soma de ondas co-senos de diferentes frequências e amplitudes. Se partirm os
o sinal original em pequenas regiões, poderem os obter um a aproxim ação ainda melhor. Por
exem plo, poderíam os aproxim ar um a região com o sendo a som a de um a onda co-seno de 1
Hz e am plitude 5, m ais um a onda co-seno de 2 Hz e am plitude 3. Poderíam os aproxim ar um a
outra região com o sendo a som a de 50 ondas co-senos de diferentes frcqüências e am plitudes.
Q uanto m enor a região e m ais frcqüências dc ondas co-senos diferentes que considerarm os,
m ais exata será a nossa aproxim ação em relação ao sinal real.
A o invés de arm azenar apenas as frcqüências reais, ju n tam en te com as am plitudes das
ondas co-senos, poderem os decidir considerar o uso de apenas determ inadas freqüências, tais
com o: 1 Hz, 2 Hz, 4 Hz, 8 Hz, 16 Hz e assim por diante. E ntão, poderem os sim plesm ente
enviar as am plitudes dessas freqüências particulares: (5, 3, 0, 0, 0, ...). Vam os nos referir a
essas am plitudes com o sendo coeficientes.
Em M PE G -2, a D CT transform a um bloco 8x8 de entrada, cujos valores são as intensida­
des dos pixels, em um bloco 8x8, o qual representa os coeficientes das “ freqüências” prede­
term inadas. No dom ínio de vídeo, cada freqüência representa um padrão de bloco diferente,
em que as baixas freqüências são padrões quase constantes e as altas freqüências, padrões
m utáveis (com o um tabuleiro de xadrez). A D CT determ ina um conjunto tal de coeficientes
que será produzido um padrão resultante m uito sim ilar ao bloco de entrada original, quando
os padrões predeterm inados são m ultiplicados pelos seus coeficientes e som ados.
A equação de um a D CT bidim ensional que é aplicada a um bloco de 8x8 núm eros é:

F ( m, v) = j C ( w ) C ( v ) ^ ^ D[x, y l c o s ^ ^ .^ ^ cos^ 2 ^ ^ 1 )v )
x = 0y = 0

1, em caso contrário

A entrada é um bloco 8x8 Dfx, yj. A saída é outro bloco 8x8, sendo que F(u, vjeom puta o
coeficiente da linha u e coluna v do bloco de saída.
Um codificador M PE G -2 pode utilizar circuitos digitais custom izados para realizar rapi­
dam ente o cálculo da DCT. O bserve que a co m p u tação de cada coeficiente requer que seja
realizado 64 vezes o cálculo do term o m ais à d ireita (vam os cham á-lo de term o interno), e
isso deverá ser feito com cada um dos 64 coeficientes, significando avaliar esse term o 64*64
= 4096 vezes. A lém disso, a D C T opera em blocos 8x8, havendo 5400 desses blocos em um
quadro do tipo 1 de tam anho 720x480. A ssim , a D C T de um quadro I poderá requerer que
o term o interno seja com putado 5400*4096 = 22 m ilhões de vezes. C ada um a dessas co d i­
384 Sistemas Digitais

ficações ocorre a 30 quadros por segundo. Você pode co m eçar a ver porque um codificador
M PE G -2 poderá p recisar usar circuitos digitais custom izados para com putar rapidam ente a
DCT, usando extensivam ente paralelism o e pipelining para obter o desem penho necessário.
A com putação da D CT pode ser acelerada ainda m ais com putando-se previam ente os co-
senos dos term os internos. O bserve que a D C T calcula dois co-senos com base nos valores
de entrada de u e a\ e de v e y. N o entanto, com o a D C T opera em blocos 8x8, as variáveis
« , V , x e y variam em valor apenas dentro do intervalo de 0 a 7. Portanto, podem os com putar

previam ente os 64 valores de co-seno possíveis, necessários para a com putação da DCT, e
arm azená-los em um a tabela 8x8, a qual pode ser program ada em um a ROM . A ssim , p ode­
m os reescrever a transform ada D C T com o segue:
8 8
F ( u ,v ) = Í C ( M)C (V ) IX D[x, y ] cos [jc, ii] cos [y , v]
* = 0>- = 0

O uso de um a ROM , para arm azenar os valores de co-seno calculados previam ente, ace­
lera a com putação dos term os internos da D C T

Q uantização
U sando-se a DCT, a conversão para o dom ínio da freqüência não produz um a com pressão d i­
retam ente -sim p le sm e n te convertem os um bloco 8x8 de entrada em um bloco 8x8 de saída.
E sse bloco 8x8 de saída representa as am plitudes das ondas co -sen o s das freqüências p ar­
ticulares. P oderem os conseguir um a com pressão arredondando essas am plitudes, de m odo
que usem os m enos bits para representá-las. Por exem plo, su p o n h a que usem os 8 bits para
representar um a am plitude. Isso sig n ifica q u e poderem os rep resen tar as am plitudes dentro
do intervalo de 0 a 255. Suponha que representem os apenas am plitudes pares, isto é, 2 ,4 ,...,
254. N esse caso, na representação d a am plitude, poderem os d escartar o bit m enos significa­
tivo, resultando apenas 7 bits. O decodificador irá sim plesm ente acrescentar um 0 ao núm ero
de 7 bits para obterm os novam ente um núm ero de 8 bits. P o r exem plo, o núm ero 0 0 0 0 1 1 1 1
de 8 bits será com prim ido no núm ero 0000111 de 7 bits, com um 0 im plícito no oitavo bit.
O decodificador irá expandir esse núm ero de 7 bits de volta para o núm ero 00001 110 de 8
bits - observe q ue o núm ero decodificado é ligeiram ente diferente do original, sendo 14 ao
invés d o 15 original (um exem plo de por que na co m p ressão M P E G -2 há alg u m a perda de
qualidade na im agem ). P odem os levar m ais adiante esse conceito de arredondam ento, repre­
sentando apenas as am plitudes que são m últiplos de 4 (descartando assim os dois bits m enos
significativos c produzindo um a representação dc 6 bits), ou m últiplos de 8 (descartando os
três bits m enos significativos e dando um a representação com 5 bits). O núm ero 00001111
poderá ser representado por 00001 com três 0s im plícitos, o qual será decodificado de volta
com o 00001000. D evido ao arredondam en to , o núm ero 8 d eco d ificad o é d iferen te do nú­
m ero original 15.
O arredondam ento descrito para se obter um a com pressão, resultante do d escarte dos
bits m enos significativos, é conhecido com o quantização. O bserve o tradeoff: um arred o n ­
dam ento m aior produz m ais com pressão, às custas da exatidão. F elizm ente, as pessoas não
se dão conta desse arredondamento nas componentes de alta frequência da imagem , a nossa
visão sim plesm ente não é tão precisa. Tam bém não notam os pequenas diferenças nas com po­
nentes de alta freqüência do som porque a nossa audição tam bém não é tão precisa. Im agine
um som de freqüência m uito alta, tão agudo que poderia q uebrar um a taça. Provavelm ente,
você não conseguiria diferenciar dois sons tão agudos com freqüências ligeiram ente d iferen­
tes - am bos são sim plesm ente agudos. De m esm o m odo, em um a cena altam ente com plexa.
Otimizações e Tradeoffs 385

os nossos olhos não podem detectar ligeiros arredondam entos nos valores das cores. A ssim ,
o M PE G -2 aplica m ais agressivam ente a quantização aos coeficientes de alta freqüência do
bloco de saída da D C T do que aos de baixa freqüencia.
A pós a q u a n tiz a ç ão , os 64 v alo res d o b lo c o 8x8 são tra ta d o s co m o um a lista d e 64
núm eros. A seguir, esses 6 4 núm eros são su b m etid o s à ch am ad a co d ificação run-length . A
codificação run-length * é um m étodo d e c o m p ressão q u e red u z as o co rrên cias de zeros
co nsecutivos usando um núm ero p ara in d icar o n ú m ero d e zero s co n secu tiv o s, ao invés de
rep resen tar os p ró p rio s zeros. P or exem plo, vam os c o n sid erar que q u erem o s rep resen tar os
seg u in tes cin co núm eros: 0, 0, 0, 0, 24. Se o v alo r de cada um fo r de 6 bits, os cin co núm e­
ros n ecessitarão d e 5*6 = 30 bits. Por outro lado, p o d erem o s sim p lesm en te en v iar um p ar
de n úm eros, o p rim eiro in d ican d o o n ú m ero d e zero s in iciais e o seg u n d o , o núm ero que
é d iferen te de zero. A ssim , 0, 0, 0, 0, 24 seria co d ificad o co m o (4, 24) - 4 zero s iniciais,
seg u id o s pelo n ú m ero 24. S e cad a v a lo r for d e 6 bits, a v ersão c o d ific a d a u san d o run-
length req u er apenas 2*6 = 12 bits. D e m odo sem elh an te, q u alq u er seq ü ên cia d e núm eros
p o d eria se r su b stitu íd a p o r um a seq ü ên cia de p ares de núm eros, cad a p ar su b stitu in d o um a
seq ü ên cia de zero s e um núm ero. A ssim , a se q ü ê n c ia 0, 0, 0, 0, 24, 0, 0. 8, 0, 0. 0, 0, 0.
0, 16 p o d eria sc r su b stitu íd a p o r três pares: (4, 24), (2, 8) e (6, 16), red u zin d o o núm ero
dc bits de 15*6 = 90 p ara 6*6 = 36 bits. O b se rv e q u e o n ú m ero d e zero s no c o m eço da
seq ü ên cia, ou en tre nú m ero s d iferen tes d e zero, p ode se r zero e o ú ltim o núm ero p ode ser
zero. P o r exem plo, a seq ü ên cia 2, 0, 0, 63, 2, 0, 0, 0, 0, 0 p o d eria ser co d ificad a co m o (0,
2), (2, 63), (0, 2), (4, 0).
A codificação run-length produzirá um a boa com pressão apenas se houver m uitos 0s na
seqüência de núm eros. Felizm ente, a natureza da D C T leva a m uitos núm eros 0 (nem todas
as freqüências de co-senos são necessárias para fazer um a aproxim ação em um a dada região
do sinal, de m odo que essas freqüências terão coeficientes 0s), esp ecialm ente após a q u an ­
tização (m uitos coeficientes são exatam ente núm eros pequenos que se tornam 0 durante a
quantização). D esse m odo, a aplicação da codificação run-length após a quantização leva a
m ais com pressão.

► EXEMPLO 6.27 Cálculo das taxas de compressão envolvendo a quantização e a codificação run-length
Continuando o Exemplo 6.26, assuma que a seqüência M PEG-2 de 30 quadros por segundo tem
a mesma seqüência e tam anhos médios daquele exemplo, mas cada quadro é com prim ido ainda
mais pela conversão DCT para o domínio da freqüencia, seguido por quantização e codificação
run-length. Assuma que o bloco de saída DCT consiste em 64 números de 8 bits, a quantização
reduz o tamanho médio do número para números de 5 bits e a codificação run-length reduz o ta­
manho da seqüência de números resultante a 30% de seu tamanho.
A taxa de compressão será 8 Mbits * 30 / 5 / 8 * 0,30 * (2 * 8 Mbits + 8 * 2 Mbits + 20 * 1
M bits) = 240 7 9,7 = 25:1. ◄

Código de Huffman
A pós a codificação run-length, cada bloco consistirá em uma seqüência de núm eros. A lguns
desses núm eros irão aparecer na seqüência m ais freqüentem ente do que outros. A codifica­
ção de H uffm an é um m étodo de se red u zir o núm ero de bits requeridos para representar
um conjunto de valores, criando códigos m ais curtos para os valores que ocorrem com mais
freqüência e códigos m ais longos para os valores m enos freqüentes.

* N . dc T: Run-length encoding (RLE) s i g n i f i c a litc ra lm c n tc “ c o d ific a ç ã o p o r c o m p rim e n to d c s e q ü ê n c ia ” .


386 Sistemas Digitais

A codificação de H uffm an, um a form a de codificação conh ecid a com o codificação en-
trópica, é um outro conceito fundam ental na com pressão digital de dados. Suponha que você
deseje representar um a seqüência original de 16 núm eros: 0, 3, 3 ,3 1 ,0 , 3, 5, 8, 9, 7, 15, 14,
3 ,0 , 3 e 0. A ssum indo 5 bits por núm ero, um a codificação binária im ediata poderia ser 00000
00011 00011 11111 00000 00011 00101 e assim por diante, totalizando 16 * 5 = 80 bits. Po­
dem os reduzir esse total, observando prim eiro que há apenas 9 sím bolos diferentes: 0, 3, 5,
7, 8, 9, 14, 15 e 31. Na realidade, precisam os apenas de 4 bits para identificar de form a única
cada sím bolo. D esse m odo, poderíam os atribuir os nove sím bolos únicos a códigos de 4 bits,
usando as seguintes definições: 0=0000, 3=0001, 5=0010, 7=0011, ..., 31=1001 (observe que
os códigos não são m ais as representações em num eração binária dos núm eros originais).
A ssim , a seqüência original de núm eros (0, 3, 3, 3 1 ,0 , 3, 5, ...) seria codificada com o 0000
0001 0001 1001 0000 0001 0010 etc., totalizando 16 * 4 = 64 b its. A observação chave aqui
é que podem os codificar os núm eros usando q u aisquer padrões arbitrários de bits que dese­
jarm o s, desde que o codificador e o decod ificad o r estejam am bos cientes das definições da
codificação.
P od em o s levar essa definição do co n ceito um p asso ad ian te, usando co d ificaçõ es de
com prim entos diferentes. O bservando q u e 3 c 0 ocorrem co m m ais frcq ü ên cia d o q u e os
outros núm eros, poderíam os d ar códigos m ais curtos ao 3 e ao 0. A ssim , poderíam os criar
as seguintes definições de códigos: 0=00, 3=10. 5=010, 7=0110, 8=0111, 9=1100, 14=1101,
15=1110, 31=1111. C om o essas definições foram criad as <5 um assu n to que está além do
escopo desta discussão, em b o ra não seja real m ente m uito difícil de se aprender. O bserve
que os códigos são tais que os códigos m ais curtos não aparecem à esquerda de q ualquer um
dos códigos m ais longos. Por exem plo, 00 não aparece à esq u erd a de nenhum dos códigos
m ais longos com o 010,0110, 0111, etc. E ssa característica perm ite que o decodificador saiba
quando chegou ao final da palavra de código: qu an d o o d eco d ificad o r vê 00, ele sabe que
encontrou um 0 codificado (porque nenhum outro có d ig o inicia com 00); quando ele vê 10,
sabe q ue encontrou um 3 (porque nenhum outro código inicia com 10). N o entanto, quando
0 decodificador vê 01, ele deve olh ar o próxim o bit e, se ele ver 010, sab erá que encontrou
um 5 (porque nenhum outro código inicia com 010). U sando esse esquem a de codificação de
com prim ento variável, a seqüência original (0, 3, 3, 3 1 ,0 , 3, 5 ,...) seria codificada com o 00
10 10 1111 00 10 010 etc. Inserim os os espaços sim plesm ente pela legibilidade; a codificação
real seria apenas 00101011110010010 etc. O núm ero total de bits seria 4 * 2 (para os quatro
Os codificados com dois bits 00) + 5 * 2 (para os cinco 3s, codificados com os dois bits 10) +
1 * 3 (para o único 5, codificado com três bits 010) m ais 6 * 4 (para os seis núm eros restantes
3 1 ,8 , 9, 7, 15 e 14, cada um codificado com 4 bits) totalizando 45 b its - um total bastante
reduzido quando com parado com os 80 bits o rig in ais req u erid o s pela co d ificação binária
direta.
A codificação de H uffm an consegue um a boa com pressão quando há alguns núm eros que
ocorrem m uito m ais frcqücntem cnte do que outros na seqüência de núm eros que deve ser co ­
dificada. Felizm ente, cm um bloco de um quadro, esse é o caso depois de estarem concluídas
as tarefas de DCT, quantização e codificação run-length. Por exem plo, pode haver m uitos Os,
ls, 2s, etc. e poucas ocorrências de núm eros m aiores.

► EXEMPLO 6.28 Cálculo das taxas de compressão envolvendo a codificação de Huffman


Continuando o Exemplo 6.27, assuma que, após a quantização e a codificação run-length, pares
de números são subm etidos à codificação de Huffman e que essa codificação reduz o número de
bits em 50%.
A taxa de compressão será assim 240 / 0,50 * 9,7 = 50:1. ◄
Otimizações e Tradeoffs 387

Resumo
R esum indo a codificação M PE G -2 de vídeo:

• O uso de quadros I. P e B consegue com pressão não reenviando a inform ação redundante
de quadros sucessivos, m as em lugar disso enviando apenas as diferenças.

• A D C T transform a blocos 8x8 de quadros para o dom ínio da freqüencia, o que em si não
representa uma com pressão, m as ao contrário perm itirá com pressão nos passos seguintes.

• A codificação nm-length consegue m ais com pressão substituindo sequências de co efi­


cientes zeros por um num ero que indica o núm ero de tais zeros.

com m enos freqüencia.

A seqüência de passos está m ostrada graficam ente na Fig. 6.88.

...010100101100101010
10101111010101001001
10010010001010111101
10101000100010111011...

Video d ig ita l
não co m p rim id o
Video MPEG-2
(co m p rim id o )
...010100101100...

Figura 6.88 Visão geral da codificação e compressão M PEG-2 de vídeo.

O nosso exem plo de cálculos de taxas de co m p ressão produziu um a laxa em torno de


50:1. De fato, a taxa de com pressão pode ser variada alterando-se cada um dos passos an te­
riores. Podem os usar m enos quadros do tipo I para conseguir um a com pressão ainda m aior às
custas de um a degradação na qualidade de vídeo, ou m ais quadros I para obter um a qualidade
m elhor às custas de m ais bits. De m odo sem elhante, podem os variar o grau de quantização
para realizar um tradeoff entre qualidade e taxa de com pressão. C om o um film e típico terá
algum as cenas com m odificações lentas e outras com cenas que se alteram rapidam ente, e
alguns quadros com cores com plexas e outros quadros m ais sim ples, a taxa de com pressão
para d iferentes partes de um vídeo podem na realidade variar. O bserve com o os tradeoffs
(basicam ente entre a qualidade e a taxa de com pressão) estão presentes em todas as partes da
codificação M PEG -2.

... 010100101100 ...

Video MPEG-2 Video digital


(comprimido) não comprimido
...010100101100101010
10101111010101001001
10010010001010111101
10101000100010111011..

Figura 6.89 Visão geral da decodificação MPEG-2 de vídeo.


388 Sistemas Digitais

Para converter de volta um a sequência M P E G -2 de bits em um a série de im agens ou


vídeos, um decodificador M PEG -2 precisa sim plesm ente aplicar os passos anteriores ao co n ­
trário, com o m ostrado na Fig. 6.89.
C laram ente, a codificação e decodificação M PE G -2 requerem m uita com putação, que
deve ser realizada em velocidade suficientem ente elevada para criar um vídeo contínuo, sem
interrupções e de boa qualidade.

► 6.8 RESUMO DO CAPÍTULO


N este capítulo, introduzim os (Seção 6.1) a idéia de que algum as vezes podem os m elhorar
um dos critérios de projeto em p articu lar sem preju d icar outros (otim ização), m as u su al­
m ente podem os m elhorar um critério às custas de outro (tradeoff). D escrevem os (Seção 6.2)
o problem a da m inim ização do tam anho da lógica de dois níveis, in troduzindo m apas K
com o m étodo gráfico e então descrevendo heurísticas autom atizadas para otim izar o tam a­
nho de lógicas de dois e tam bém de m últiplos níveis. D iscutim os (Seção 6.3) m étodos para
realizar otim izações e tradeoffs durante o projeto da lógica seqüencial, incluindo a m inim i­
zação de estados, a codificação de estados e as m áquinas FSM s M oore versus Mealy. D esta­
cam os (Seção 6.4) diversos m étodos alternativos para im plem entar alguns com ponentes do
bloco operacional, incluindo um som ador m ais rápido usando antecipação do bit de “vai um ”
(carry-lookahead) e um m ultiplicador m enor usando m ultiplicação seqüencial. D escrevem os
(S eção 6.5) m étodos para otim izações e tradeoffs RTL, incluindo os pod ero so s conceitos
de pipelining e concorrência com o m eios de se conseguir execução paralela - um objetivo-
chave do projeto digital custom izado. Tam bém descrevem os os m étodos RTL de alocação de
com ponentes e de m apeam ento e escalonam ento de operadores. M encionam os brevem ente
(Seção 6.6) alguns m étodos de nível m ais elevado, incluindo a idéia geral das com putação
serial versus a concorrente e a seleção de algoritm os eficientes. Introduzim os tam bém alguns
conceitos básicos de redução do consum o elétrico, incluindo clock gating e o uso de portas
de baixa potência.
C om o você pôde ver neste capítulo, há m uitos m étodos para m elhorar os nossos projetos.
P o r outro lado, este capítulo mal arranhou a superfície desses m étodos. U m a indústria de
m uitos bilhões de dólares anuais especializou-se em desenvolver ferram entas autom atizadas
para converter as descrições com portam enlais da funcionalidade de sistem a desejada em im ­
plem entações de circuito altam ente otim izadas. E ssa indústria é conhecida com o E lectronic
D esign A utom ation (ED A ) ou com o C om p u ter A ided D esign (C A D ). C om este capítulo, a
intenção é que seja abrangente o suficiente para que você com p reen d a no m ínim o a idéia
básica da otim ização de circuitos, em vários níveis de abstração de projeto, indo desde o nível
de porta até o de RTL e além.

► 6.9 EXERCÍCIOS
SEÇÃO 6.1: INTRODUÇÃO

6.1 Defina os termos “otimização” c “tra d e o ff c dê exemplos do dia-a-dia para cada u m deles.

SEÇÃO 6.2: OTIMIZAÇÕES E TRADEOFFS EM LÓGICA CO M BINACIO NAL

6.2 Otimize o tamanho da lógica de dois níveis para a equação F(a,b,c) = ab'c + abc + a'bc +
abc' usando (a) métodos algébricos e (b) um mapa K. Expresse as respostas como somas de pro­
dutos.
Otimizações e Tradeoffs 389

6.3 Otimize o tamanho da lógica de dois níveis para a equação F (a,b ,c) = a + a 'b 'c + a 'c usando
um mapa K. Expresse a resposta como uma soma de produtos.
6.4 Otimize o tamanho da lógica de dois níveis para a equação F (a ,b ,c ,d ) = a 'b c ' + a b c 'd ' + abd
usando um mapa K. Expresse a resposta como uma soma de produtos.
6.5 Otimize o tamanho da lógica de dois níveis para a equação F (a ,b ,c ,d ) = ab + a 1b ' d ' usando um
mapa K. Expresse a resposta como uma soma de produtos.
6.6 Otimize o tamanho da lógica de dois níveis para a equação F (a,b ,c) = a 'b 'c + abc assumindo
que as combinações de entrada a 1bc e a b 1c nunca podem ocorrem (esses dois termos representam
casos don 7 core). Expresse a resposta como uma soma de produtos.
6.7 Otimize o tamanho da lógica de dois níveis para a equação F (a ,b ,c ,d ) = a 'b c 'd + ab ' cd ' assu­
mindo que a e b nunca podem ambos ser 1 ao mesmo tempo e que c e d nunca podem ambos ser 1
ao mesmo tempo (isto é, há casos don 7 care).
6.8 Considere a equação F (a,b ,c) = a ' c + ac + a 1b. Usando um mapa K. determine quais dos ter­
mos seguintes são implicantes (mas não necessariamente implicantes primos) da equação: a ' b 1c ',
a 'b ', a'b c , a 'c , c, b c ,a 'b c ‘ e a'b.
6.9 Repita o problema anterior, mas desta vez determine quais termos são os implicantes primos da
função.
6.10 Na equação F (a,b ,c) = a 'c + ac + a'b , determine todos os implicantes primos e lodos os im­
plicantes primos essenciais da função.
6.11 Na equação F (a ,b ,c ,d ) = a b 'c ' + abc'd + abcd + a'bcd + a 'b c d '. determine todos os impli­
cantes primos e todos os implicantes primos essenciais da função.
6.12 Na equação anterior, use o método heurístico da Tabela 6 .1 para obter uma equação de dois níveis
de tamanho otimizado e expressa na forma de uma soma de produtos.
6.13 Use a aplicação repetida da operação de expansão para minimizar heuristicamente a equação
F (a, b, c) = a 'b 'c + a 'b c + abc. Tente expandir cada termo segundo cada variável. Forneça a
equação minimizada na forma de uma soma de produtos.
6.14 Use a aplicação repetida da operação de expansão para minimizar heuristicamente a equação
F ( a ,b ,c ,d ,e ) = abede + abede' + ab cd ' e '. Tente expandir cada termo segundo cada va­
riável.
6.15 Usando métodos algébricos, reduza o número de entradas de porta para a seguinte equação, criando
um circuito de múltiplos níveis: F (a ,b ,c , d, e ,f ,g ) = abede + a b c d 'e 'fg + a b c d V f g '. As­
suma que serão usadas apenas portas AND, OR e NOT. Desenhe os circuitos da equação original
e da equação de múltiplos níveis. Liste claramente o atraso e o número de entradas de porta para
cada circuito.

S E Ç Ã O 6 .3 : O T IM IZ A Ç Õ E S E T R A D E O F F S E M L Ó G IC A S E Q Ü E N C IA L

6.16 Reduza o número de estados da máquina FSM


da Fig. 6.90 eliminando os estados redundan­
tes por meio de uma tabela de implicações.
390 Sistemas Digitais

6.17 Reduza o número de estados


da máquina FSM da Fig. 6 .9 1
usando uma tabela de implica­
ções.
6 .1 8 Reduza o número de estados
da máquina FSM da Fig. 6.92
usando uma tabela de implica­
ções.
6.19 Compare o tamanho da lógica
(número de entradas de portas)
c o atraso (número de atrasos de
F ig u ra 6.91 Detector de sequência para os padrões de
porta) da FSM da Fig. 6.93, que
usa codificação binária direta de bits “01” e “ 10”.
2 bits, com uma codificação de
saída de 3 bits e uma de um bit E n t r a d a s : i; S a í d a s : h
por estado para a mesma FSM.
6.20 Compare o tamanho da lógica
(número de entradas de portas)
e o atraso (número de atrasos de
porta) entre uma codificação de
estados com largura mínima de
bits e uma codificação de saída
para a FSM do medidor de dis­
tância a laser mostrado na Fig.
5.20.
6 .21 Compare o tamanho da lógica
(número de entradas de portas)
e o atraso (número de atrasos
de porta) entre uma codifica­
ção binária mínima (se não for
possível, diga a razão) e uma wxy=100 wxy=010 wxy=001 wxy=000
codificação de saída, e uma de
um bit por estado para a FSM F ig u ra 6.93 Exemplo de FSM.
da Fig. 3.39.
6.22 Converta a FSM Moore do circuito detector de código mostrado na Fig. 3.46 na FSM Mealy equi­
valente mais próxima.
6.23 Converta a seguinte FSM Moore na FSM Mealy equivalente mais próxima.
Otimizações e Tradeoffs 391

S E Ç Ã O 6 .4 : T R A D E O F F S D E C O M P O N E N T E S D E B L O C O O P E R A C IO N A L

6.26 Analise passo a passo a execução do somador de quatro bits com antecipação de “vai um” mos­
trado na Fig. 6.59 quando a = 11 e b = 7.
6.27 Analise passo a passo a execução do somador dc quatro bits com antecipação de “vai um” mos­
trado na Fig. 6.59 quando a = 5 e b = 4.
6.28 Analise passo a passo a execução do somador de 16 bits com antecipação de “vai um” mostrado na
Fig. 6.59 quando a = 43690 e b = 21845. Não analise passo a passo o comportamento interno dos
somadores de quatro bits com antecipação de “vai um”.
6.29 Projete um somador hierárquico de 64 bits com antecipação de “vai um” usando somadores de
quatro bits com antecipação de “vai um”. Qual <5o atraso total do somador de 64 bits? Quantas vez
mais rápido é somador com antecipação de “vai um” em relação somador de 64 bits com propaga­
ção de “vai um” (calcule a razão “tempo mais demorado” / “tempo mais curto”).
6.30 Projete um somador hierárquico de 24 bits com antecipação de “vai um” usando somadores de
quatro bits com antecipação de “vai um”.
6.31 Projete um somador de 16 bits com seleção de “vai um” usando somadores de quatro bits com
antecipação de “vai um”.

S E Ç Ã O 6 .5 : O T IM IZ A Ç Õ E S E T R A D E O F F S E M P R O J E T O R T L

6.32 A árvore de somadores mostrada na Fig. 6.94 é usada para computar a soma de oito entradas a
cada ciclo de relógio, em que a soma é $ = R + T + U + V + W + X + Y+Z.
392 Sistemas Digitais

(a) Projete uma versão pipeline da


árvore de somadores para ma­
ximizar a velocidade com a qual
podemos operar a entrada clk de
relógio.
(b) Crie um diagrama de tempo.
6.33 Assuma que o atraso de um somador
é 3 ns. Com que rapidez podemos
operar a árvore de somadores mos­
trada na Fie. 6.94 e a do Exercício
6.32 que usa pipeline1?
throughput da
6.34 Qual e a latencia e o
árvore de somadores com pipeline
projetada por você no Exercício Árvore de somadores usada para compu­
F ig u ra 6.94
6.32?
tar a soma de oito entradas a cada ciclo de relógio.
6.35 (a) Converta o seguinte código se­
melhante a C em uma máquina de estados de alto nível.
(b) Use o processo de projeto RTL mostrado na Tabela 5.1 para converter a máquina de estados
de alto nível correspondente ao código C em blocos operacional e de controle. Projete um
circuito para o bloco operacional, mas vá até o ponto de FSM para o bloco de controle.
(c) Reprojete o seu bloco operacional para permitir concorrência na qual quatro multiplicações e
duas adições podem ser executadas de forma concorrente.
Entradas: byte a [256], b [256]
Saídas: byte soma, byte c [256]
MULT:
int i=0;
int soma = 0;
whi1e ( i < 256 ) {
c[i] = a[i] * b[i];
soma = soma + c [i];
i++;
}

6.36 Reprojete os blocos operacional e de controle projetados no Exercício 6.35. Permita até quatro
adições concorrentes e insira registradores de pipeline no bloco operacional. Se for necessário,
atualize o bloco de controle. Assumindo que um somador tem um atraso de 3 ns e um multiplica­
dor. 20 ns, quanto tempo será necessário para terminar a computação.
6.37 (a) Converta o seguinte código semelhante a C em uma máquina de estados de alto nível.
(b) Use o processo de projeto RTL mostrado na Tabela 5.1 para converter a máquina de estados
de alto nível, correspondente ao código C. em blocos operacional e de controle. Projete um
circuito para o bloco operacional, mas vá até o ponto de uma FSM para o bloco de controle.
(c) Reprojete o seu bloco operacional para permitir concorrência na qual três comparações, três
adições e três multiplicações podem ser executadas de forma concorrente.
Otimizações e Tradeoffs 393

Entradas: byte a [256], byte b[256], byte cy


Saídas: byte somax, byte somay, byte c [256]
MULT_OU_$OMAR:
int i=0 ;
int somax = 0;
int somay = 0;
while( i < 256 ) {
if( a[i] > 128 ) {
c[i] = a[i] * b[i];
somax = somax + c[i];
) else {
c[1] = a[i] * (b[i] + cy);
somay = somay + c[i];
)
i++;
}

6.38 Reprojete os blocos operacional e de controle projetados no Exercício 6.37. Permita ate* nove adi­
ções concorrentes e insira registradores depipeline no bloco operacional. Se for necessário, atua­
lize o bloco de controle. Assumindo que um comparador tem um atraso de 4 ns. um somador. 3 ns,
e um multiplicador. 20 ns, quanto tempo será necessário para terminar a computação.
6.39 Dada a máquina de estados
de alto nível da Fig. 6.95,
crie dois projetos diferentes:
um otimizado para apresen­
tar um atraso mínimo e o
outro, para um tamanho mí­
nimo de circuito. Assegure-
se de claramente indicar a Figura 6.95 Máquina de estados de alto nível para o Exercí­
alocação dos componentes e cio 6.39.
o mapeamento e o escalona­
mento dos operadores que forem usados para projetar os dois circuitos.

S E Ç Ã O 6 .6 : M A I S S O B R E O T IM IZ A Ç Õ E S E T R A D E O F F S

6.40 Analise passo a passo a execução do algoritmo de pesquisa binária quando está pesquisando o
número 86 na seguinte lista ordenada de 15 números: 1. 10 .2 5 ,6 2 ,7 4 , 75, 80,84, 85, 86. 87, 100,
106. 111. 121. Quantas comparações foram necessárias para encontrar o número usando pesquisa
binária e quantas seriam necessárias se fosse usada pesquisa linear?
6.41 Analise passo a passo a execução do algoritmo de pesquisa binária quando está pesquisando o
número 99 na seguinte lista ordenada de 15 números: l , 10. 25,62,74, 75, 80,84, 85, 87.99, 100,
106, III, 121. Quantas comparações foram necessárias para encontrar o número usando pesquisa
binária e quantas seriam necessárias se fosse usada pesquisa linear?
6.42 Analise passo a passo a execução do algoritmo de pesquisa binária quando está pesquisando o nú­
mero 121 na lista de números do exemplo anterior. Quantas comparações foram necessárias para
encontrar o número usando pesquisa binária e quantas seriam necessárias se fosse usada pesquisa
linear?
6.43 Usando a lista de 15 números do Exercício 6.41. quantos números poderíamos encontrar mais ra­
pidamente usando um algoritmo de pesquisa linear do que se usássemos um de pesquisa linear?
394 Sistemas Digitais

SEÇÃO 6.7: OTIMIZAÇÃO DO CONSUMO DE ENERGIA

6.44 Dadas as portas lógicas mostradas na Fig. 6.96. otimize o seguinte circuito reduzindo o consumo
de energia sem aumentar o atraso do circuito.

n - \
1/1 )— 1,5/1,5 }—
J
- L
1/1 y --------
y - J - /

- T x - \ -
2 / 0 , 5 -------- 2/1
\
}—
- £ y - J ~ J
Figura 6.96 Biblioteca de porias lógicas.
A expressão 2/0,5 significa “atraso de 2
ns’7“potência de 0.5 nW”.

6.45 Dadas as portas lógicas mostradas na Fig. 6.96. otimize o seguinte circuito reduzindo o consumo
de energia sem aumentar o atraso do circuito.

6.46 Dadas as portas lógicas mostradas na Fig. 6.96. otimize o seguinte circuito reduzindo o consumo
dc energia sem aumentar o atraso do circuito.

6.47 Dadas as portas lógicas mostradas na Fig. 6.96. otimize o seguinte circuito reduzindo o consumo
de energia sem aumentar o atraso do circuito.
Otimizações e Tradeoffs 395

► PERFIL DE PROJETISTA
Smita se graduou Smita (na foto, fazendo alpinismo) adora o seu
em engenharia trabalho. “O meu trabalho é intelectualmente estimu­
e le tr ô n ic a e lante e tenho a oportunidade de inovar, criar e construir
ciência da com­ algo real mente útil.” Ela também aprecia os aspectos
putação e vem pessoais de seu trabalho. “Trabalho com equipes de
trabalhando no pessoas dinâmicas porque atualmente a maioria dos
campo de projeto projetos, de hardware ou software, são realizados por
digital por quase equipes de três a oito pessoas. As pessoas da minha
uma década. Ela equipe são também meus amigos e é bem divertido tra­
g asto u m uito balhar com elas.”
tempo pensando Nesses seus dez anos de trabalho, Smita assumiu
nas opções. “Em algumas responsabilidades de gerenciamento. “Como
que curso eu de­ gerente de um dos quatro produtos que minha com­
veria investir mi­ panhia desenvolve, eu desempenho diferentes papéis.
nha atenção, energia, coração e alma durante os anos Trabalho com minha equipe de sete desenvolvedores
que seriam alguns dos mais produtivos de minha vida?” de software para determinar que características devem
Ela optou pela engenharia, por diversas razões. “Pri­ ser incorporadas ao produto c qual é a melhor forma de
meiro, a engenharia é uma carreira em si - diferente­ construí-las. Eu trabalho com a equipe de marketing e
mente de alguns outros cursos, empregos específicos vendas para compreender as necessidades dos clientes e
para formados em engenharia estão por aí. Na engenha­ como anunciar e posicionar da melhor forma possível o
ria, eu viria a aprender a mais valiosa e universal das nosso produto. Finalmente, trabalho com outros grupos
habilidades: a resolução de problemas. Segundo, devido que estão envolvidos com o lançamento de um produto,
a sua capacidade de resolver problemas, os engenheiros como publicações técnicas, engenharia de aplicação
têm muitas opções sendo altamente valorizados por ou­ e de produto. A diversidade do meu trabalho torna-o
tras profissões, como consultoria em administração, muito interessante.”
marketing e atividades bancárias de investimento. Além Smita preza o respeito que os engenheiros rece­
disso, os engenheiros eletricistas e de computação po­ bem. “Como engenheira, sou muito respeitada por
dem escolher entre diversas indústrias para trabalhar: clientes, empresas parceiras e nossas organizações de
telecomunicações, processamento de imagem, apare­ marketing e vendas, porque compreendo profunda­
lhos médicos, fabricação de ICs e mesmo atividades mente nossos produtos. Eu realmente entendo do meu
bancárias. Essa foi uma descoberta fenomenal para produto pois eu o construí e sou reconhecida por isso.”
mim!” Em relação ao salário: “Sou muito bem compensada
Smita prosseguiu com a sua educação fazendo por minhas capacidades”. Ela também gosta do seu
pós-graduação em ciência da computação, em que pes­ estilo de vida. “Chego no trabalho pelas 10 horas da
quisou métodos para o projeto automatizado de circui­ manhã e saio pelas 19 horas. Eu não tenho reuniões
tos integrados (CIs) ou chips - “um campo fascinante bem no início da manhã, diferentemente do pessoal
porque envolve uma mistura de habilidades e conheci­ de marketing e de vendas, c posso trabalhar cm casa
mentos de hardware e software. Após a universidade, eu uma vez por semana ou mais se quiser. Essa também é
permaneci nessa profissão e trabalhei em uma empresa uma grande carreira para as mulheres - se tiver filhos,
que desenvolve software para projeto auxiliado por posso me ausentar e retornar ao trabalho sem muitos
computador (CAD) usado por projetistas de hardware inconvenientes. À medida que eles forem crescendo,
que trabalham com um tipo de chip chamado FPGA eu posso ir adequando o meu horário de trabalho. Fi-
(Field Programmable Gate Array). Os FPGAs podem nalmcntc. dou-me conta de que posso mudar da enge­
ser usados em uma variedade surpreendente de aplica­ nharia para outras funções, como marketing e vendas,
ções, abrangendo completamente desde chips usados mas não ao contrário! Essa é uma grande vantagem de
em telecomunicações de alta velocidade até chips de ve­ ser engenheira: mais opções”.
locidade e custo baixos, que são usados em brinquedos Smita aconselha os estudantes de engenharia e
e jogos eletrônicos. O nosso software permite que os ciência de computação a se concentrarem em certas coi­
projetistas economizem muitos meses ou mesmo anos sas enquanto estiverem na graduação.
de tempo. De fato, sem nosso software, seria absoluta- “Primeiro, consiga um bom entendimento de
mente impossível que as pessoas projetassem a maioria hardware e de software. Os sistemas são altamente inte­
dos chips, mesmo se dispusessem de uma década ou grados hoje em dia e poucas companhias desenvolvem
mais para fazê-lo.” um sem prestar muita atenção ao outro. Por exemplo,
396 Sistemas Digitais

► PERFIL DE PROJETISTA (continuação)


embora eu escreva software, eu preciso compreender mente não tenha medo de jogá-lo fora e reescrevê-lo se
completamente o hardware em que será usado. Meu você descobrir um jeito melhor.”
marido, por outro lado. projeta chips para telecomuni­ “Em hardware, compreender o básico de projeto
cações, mas trabalha muito de perto com a sua equipe lógico e então assegurar-se de que você entende as
de software, especial mente durante os estágios iniciais propriedades capacitivas, indutivas e resistivas dos cir­
de um projeto quando decidem o que implementar em cuitos, já que elas desempenham um enorme papel no
hardware e em software e como projetar a interface de projeto dos circuitos de alta velocidade de hoje.”
hardware para que os algoritmos de software funcionem “Além dessas habilidades em hardware e software,
de forma eficiente.” torne-se competente em matemática e cálculo diferen­
“Bem, o que entendo eu por um bom entendimento cial e integral. Aprenda a enquadrar os problemas e a
de hardware e software? Em software, penso que é desmontá-los até que você possa resolvê-los. Use a ex­
muito importante desenvolver bons “hábitos" de pro­ perimentação e tente diferentes ferramentas e métodos.
gramação. Trate o seu programa como um jardim bem Faça uma hipótese e então vá cm frente para provar se
cuidado - você o quer bonito e livre de ervas daninhas. ela é verdadeira ou falsa. Se você ainda não descobriu,
Compreenda bem as estruturas de dados e perceba em breve descobrirá que a engenharia não é apenas di­
quando uma é mais apropriada do que outra. Organize o vertida, mas também lhe proporciona muitas oportuni­
seu programa, seja disciplinado, coloque o traço nos Ts dades de realização - assim, prenda-se a ela e faça o
e o ponto nos Is. documente cuidadosamente, faça com máximo dela!"
que o seu programa seja revisado pelos amigos e final­
Implementação Física

► 7.1 INTRODUÇÃO
Um projeto de circuito digital criado por nós, m as talvez sim plesm ente desenhado com lápis
e papel, ou na form a de um a figura deste livro, é apenas um desenho. No fim, de algum m odo,
deverem os im plem entar esse projeto de circuito digital em um dispositivo físico real, de m a­
neira que po ssa então ser colocado em algum
produto eletrônico onde realizará a função d e­
sejada. H oje cm dia, usualm ente, esse disposi­
tivo é algum tipo de circuito integrado, ou IC,
tam bém conhecido com o chip de com putador,
ou sim plesm ente chip . Em outras palavras, o b ­
servando a Fig. 7.1, com o poderem os ir de (a),
o circuito de luz de alerta para cinto de seg u ­
rança, que projetam os no C ap ítu lo 2, até (b),
Projeto de Implementação
um a im plem entação física que usa um IC? circuito digital física
N este c a p ítu lo , d escrev erem o s d iv ersas (a) (b)
tecnologias populares para a im plem entação
Figura 7.1 Como passamos de (a) para (/;)?)
física de circuitos digitais.

► 7.2 TECNOLOGIAS DE ICS MANUFATURADOS


Se estiverm os determ inados a esperar sem anas ou m eses pela im plem entação física do nosso
projeto de circuito digital e a gastar entre dezenas de m ilhares a m ilhões de dólares por essa
im plem entação, então poderem os considerar a im plem entação do nosso circuito usando uma
das diversas técnicas que envolvem a fabricação de um IC custom izado ou sem icustom izado.

Circuitos integrados totalmente customizados


U m a das tecnologias de im plem entação física é conh ecid a com o IC custom izado. Um IC
totalmente customizado (full-custom /C) é um chip criado esp ecificam ente para im plem entar
as portas (na realidade, os transistores) do projeto de circuito digital desejado (Fig. 7.2). N ós,
os projetistas digitais, usualm ente não construím os nós m esm os ICs totalm ente cu sto m iza­
dos, m as em lugar disso enviam os o projeto do circuito digital desejado para um grupo ou
um a com panhia especializada em transform ar projetos digitais em ICs custom izados. E nge­
nheiros, assistidos por ferram entas de projeto auxiliado p o r co m putador (C A D - Computer
Aided Design ), transform am o projeto de circu ito digital d esejad o por nós em um circuito
398 Sistemas Digitais

constituído de transistores. A seguir, decidem


onde co lo car cad a tran sisto r sobre a su p er­
fície d o chip , co m o o rientar cad a um deles
(por exem plo, da esquerda para a direita, da ^ Leiaute
direita para a esquerda, de cim a para baixo, customizado

etc.), de que tam anho será cada transistor, etc.


Toda essa inform ação sobre com o os transis­
tores deverão ser d ispostos na superfície de
um chip é conhecida com o leiaute. A seguir,
os engenheiros desses ICs total m ente cu sto ­ ▼
m izados enviam essa inform ação de leiaute Fab
meses
a um a fáb ric a em particu lar, esp ecializad a
na fabricação de ICs, sendo conhecida com o
planta de fabricação ou sim plesm ente fab. A
fabricação de um ÍC é freqüentem ente ch a ­ Figura 7.2 Projeto de IC total mente custom i­
m ada de Silicon spin *. zado.
A fabricação de um IC é um processo ex ­
trem am ente dispendioso, delicado e sujeito a erros, que utiliza equipam entos de ponta envol­
vendo laser e processos fotográficos e quím icos, custando centenas de m ilhões de dólares. O
processo de fabricação pode durar m uitas sem anas, ou m esm o m eses, porque os transistores e
as conexões são form adas por cam adas na superfície de um chip e cada cam ada pode necessi­
tar de horas ou m esm o dias para ser form ada por m eio de processos quím icos.
A im plem entação de um circuito digital na form a de um IC totalm ente custom izado é um a
tarefa com plexa e dispendiosa. O s custos necessários para preparar e co lo car em funciona­
m ento o processo de fabricação de um IC, conhecidos com o custos não recorrentes de enge­
nharia, ou custos NRE (nonrecurring enginering ), podem ultrapassar facilm ente m uitos m i­
lhões de dólares no caso de um IC totalm ente custom izado. A lém disso, essa preparação do
processo de fabricação leva tem po, talvez m eses, e esse tem po pode sair caro para nós - o
produto para o qual estam os fabricando o chip pode estar perdendo a fatia de m ercado para
um produto concorrente, já acabado e posto à venda, enquanto esperam os que o nosso chip
seja fabricado. U m a vez que tenham os preparado os detalhes necessários à fabricação, o pro­
cesso de fabricação em si é m enos dispendioso. E ntretanto, com o fizem os um projeto cu sto ­
m izado em tudo, é alta a probabilidade de term os com etido um erro com os transistores ou a
fiação em algum lugar. Portanto, após a fabricação de um IC totalm ente custom izado, pode­
rem os encontrar erros que exigirão que o IC seja fabricado novam ente, processo conhecido
com o respin. A rcfabricação de um IC pode ocorrer duas ou três vezes, cada um a delas ex i­
gindo sem anas ou m eses, representando m ais custos para nós. Para am o rtizar os elevados
custos N RE, deverem os fabricar m ilhões de chips ou atribuir preços elevados a cada chip.
E desnecessário dizer que a fabricação de ICs totalm ente custom izados não
De acordo com um é extrem am ente com um . O s projetistas optam p o r im p lem en tar um circuito
levantamento, apenas digital na form a de um IC totalm ente custom izado quando sabem que produ­
cerca de 10% dos cir­ zirão o chip em volum es extrem am ente elevados, com o na produção em m assa
cuitos digitais de 2002 de chips encontrado em calculadoras ou relógios de pulso, ou de um chip de
foram implementados
m icroprocessador produzido em m assa, com o um Pentium . Volumes elevados,
na forma de ICs custo­
na ordem de dezenas de m ilhões ou m ais unidades, são necessários para co m ­
mizados.
pensar o custo e o tem po necessários para produzir um IC custom izado. A lter­
nativam ente, os projetistas podem optar por im plem entar um circuito digital na form a de um
IC custom izado quando o custo não é um a restrição apertada, m as o m áxim o de desem penho
é im prescindível, com o poderá ser o caso em aplicações m ilitares ou espaciais.

* N. de T: As expressõesfab e Silicon spin. além de outras, próprias do campo de fabricação de ICs, serão mantidas no original,
pois ainda não têm traduções consolidadas.
Implementação Física 399

Circuitos integrados semicustomizados (específicos para aplicação) - ASICs


C om o a im plem entação física em ICs totalm ente custom izados é tão dispendiosa e dem orada,
tecnologias sem icustom izadas evoluíram durante as décadas de 1980 e 1990, reduzindo os
custos e o tem po de fabricação de um chip , sendo co n h ecid as com o Circuitos Integrados
Específicos para Aplicação, ou ASICs (Application-Specific Integrated Circuits). D uas tec­
nologias A SIC são as de gate array e standard cell.

Gate arrays
A parte m ais trabalhosa do projeto de um IC custom izado é o projeto e a fabricação d o s tran­
sistores que estarão sobre a superfície do chip. Por outro lado, o projeto e a fabricação das
conexões que ligam esses transistores é m ais sim ples. A tecnologia A SIC de gate array (ar­
ranjo ou m atriz de portas) utiliza um chip cujos transistores foram pré-projetados form ando
filas (arranjos) de portas lógicas no chip , com o m ostrado na Fig. 7.3. O s gate arrays são
referidos às vezes com o sea-of-gates (m ar de portas). Para que um circuito digital desejado
por nós seja im plem entado em um chip do tipo gate array , precisam os sim plesm ente criar as
conexões que ligam essas portas. A criação dessas conexões corresponde a apenas os últim os
passos da fabricação. D esse m odo, a tecnologia de gate array elim ina m uito do tem po e custo
necessários à fabricação do chip de um projeto em particular. U m a em presa de gate arrays
pré-projeta e produz em m assa o chip de gate array. A seguir, custom iza uma porção desses
chips de acordo com as especificações do circuito de cada cliente - o chip é parcialm ente
custom izado, d aí o term o seniicustomizado , e a custom ização é feita para um a aplicação de
circuito em particular, daí o term o específico para aplicação. A Fig. 7.3 ilustra com o podere­
m os im plem entar a nossa luz de alerta para cinto de segurança (Fig. 7.3(a)) usando um chip
de gate array (Fig. 7.3(b)). A Fig. 7.3(c) m ostra com o poderem os m apear a porta A N D dese­
ja d a de três entradas em portas A N D de duas entradas de um gate array e tam bém m apear o
inversor em um dos inversores do gate array. A figura m ostra tam bém com o poderem os im ­
plem entar no gate array as conexões desejadas entre pinos, porta A ND e inversor. A s portas
e pinos restantes do chip do gate array serão inutilizados. A fabricação dessas conexões fará
com que o IC seja particularizado para a nossa aplicação de cinto de segurança (Fig. 7.3(d)).

Figura 7.3 Tecnologia de gate array:


(a) circuito desejado, (b) gate array
antes do acréscim o das conexões, (c)
gate array depois do acréscim o das
conexões, im plem entando assim o
circuito desejado, (d) a fabricação das
conexões completa o IC. Observação:
os gate arrays reais contêm muitos
IC ----- Fab
m ilhares ou m ilhões de portas, não semanas
apenas alguns. (conexões apenas)

D estacam os que na realid ad e o m apeam ento do circu ito dig ital d esejad o cm um gate
array é realizado tipicam ente por m eio de um a ferram enta autom atizada. O s projetistas ra­
ram ente, para não d izer nunca, realizam à m ão esse m apeam ento e, de fato, usualm cnle nem
m esm o chegam a vê-lo de form a nenhum a; o m apeam ento é todo feito por ferram entas, re­
sultando enorm es arquivos de dados, os quais poderão ser processados cm um a fábrica por
400 Sistemas Digitais

outras ferram entas para controlar o processo de fabricação. D estacam os tam bém que um chip
típico de gate array pode conter muitos milhares ou milhões de portas. N a Fig. 7.3, o gate
array m ostrado tem m enos de dez portas, sendo trivialm ente pequeno e servindo apenas para
propósitos ilustrativos - gate arrays com apenas dez. portas não existem. A lém disso, tipica­
m ente não usarem os gate arrays a não ser que o nosso projeto contenha m ilhares de portas ou
mais. N o seu lugar, em projetos com apenas algum as poucas portas, usarem os ICs de portas
lógicas; veja a Seção 7.4.
A tecnologia de gate array é m uito m ais barata do que a de ICs totalm ente custom izados,
custando possivelm ente algum as dezenas ou centenas de m ilhares de dólares para serem ins­
taladas e postas em funcionam ento (custos N R E ), ao invés de m ilhões de dólares. A lém disso,
o tem po de fabricação é tipicam ente de apenas sem anas ou possivelm ente um ou dois m eses,
ao invés de m uitos m eses. A refabricação de ICs é tam bém m enos com um . A desvantagem
está em que a im plem entação é m enos otim izada, tendo d esem p en h o m ais lento, tam anho
m aior e um consum o m aior de energia do que é possível quando se usa a tecnologia de ICs to­
talm ente custom izados. Por exem plo, observe que a im plem entação de gate array da Fig. 7.3
utiliza um nível a m ais de portas lógicas do que o circuito original, tem conexões m ais longas
e desperdiça superfície devido a portas e pinos não utilizados. E ntretanto, essas desvantagens
são contrabalanccadas pela econom ia de custo e tem po de fabricação cm relação à tecnologia
de ICs custom izados.

► EXEMPLO 7.1 Im plem entação de um meio-som ador em um gate array


Vamos implementar um componente meio soma- co = ab
dor no chip de gate array da Fig. 7.3. Lembre-se s = a'b + ab'
de que as equações de um meio som ador são: co
= a b e s = a ' b + a b '. Assim, precisaremos de
uma porta AND para co e dois inversores. duas
portas AND e uma porta GR para s. O chip de
gate array da Fig. 7.3 tem três portas AND, três
portas OR e três inversores, de modo que o chip
tem portas suficientes para im plem entar o cir­
cuito desejado por nós. Podemos im plem entar o
circuito de meio somador no chip de gate array,
como mostrado na Fig. 7.4. M
Figura 7.4 Meio somador em um gate array.
S tandard cells
A tecnologia de standard cell (célula padronizada, ou célula padrão) é outra tecnologia A SIC
que reduz os custos de im plem entação física e tem po de projeto em relação á tecnologia
de ICs totalm ente custom izados. A tecnologia A SIC standard cell usa bibliotecas de portas
ou de pequenos circuitos lógicos, para os quais já foram feitos leiautes prévios, conhecidos
com o células, que devem ser escolhidas e conectadas com fios pelo projetista para im plem en­
tar um circuito digital. A s portas de um gate array foram escolhidas previam ente, o projetista
apenas liga essas portas fazendo as conexões.
U m a célula pode conter um a porta A N D de duas entradas, ou um m ultiplexador 2x1, ou
um a com binação m uito usada de portas, com o duas portas A N D de duas entradas conectadas
a um a porta OR, à qual se conecta um inversor (conhecida com o célula A N D -O R -IN V ER T,
ou AOÍ). Todas as células têm tipicam ente a m esm a altura padrão (daí o term o standard cells,
ou células padrão), de m odo que essas células podem ser d ispostas em um chip form ando
filas ou faixas de altura padrão. U m a com p an h ia de standard cells p ré-projeta o leiaute de
cada célula. Podem os converter o nosso circuito digital, de luz de alerta para cinto de segu­
rança (Fig. 7.5(a)), em um a im plem entação física. Para isso, deverem os esco lh er as células
apropriadas dc um a biblioteca de células (Fig. 7.5(b)), posicioná-las, fazer a fiação entre elas
(Fig. 7.5(c)) c finalm ente fabricar o IC (Fig. 7.5(d)).
Implementação Física 401

T ipicam ente, co m o no caso de


gate arrays, os p ro jetistas não e s­
colhem eles próprios as células pa­
dronizadas, m apeando os seus cir­
cuitos nessas células. Ao invés, fer­
ram entas autom atizadas convertem
os circu ito s dig itais d esejad o s em
célu las p ad ro n izad as, p ro d u zin d o
resultados na form a de grandes ar­
quivos de dados que serão p ro ces­
sados pelas fábricas para controlar o
processo de fabricação. D estacam os
tam bém que um a b ib lio teca típica
(0
de célu las poderá c o n ter cen ten as
Fab
ou m ilhares de células. A biblioteca 1 a 3 meses
dc células m ostrada na Fig. 7.5(b), (células e fiação)
com apenas cinco células, é trivial­
Figura 7.5 Tecnologia de standard cell: (a) circuito de­
mente pequena e serve apenas para
sejado, (b) biblioteca de células, (c) leiaute das células
propósitos ilustrativos. A lém disso,
padronizadas e (d) a fabricação dos transistores e das
norm alm ente não usaríam os células
conexões cria o IC.
p ad ro n izad as a m enos q ue nosso
projeto requeresse m ilhares de células ou mais.
Em com paração com a tecnologia de gate array , a tecnologia de standard cell pode ser
m elhor otim izada, já que decidim os que células incluir e onde co lo cá-las em cada fila. A
com paração da Fig. 7.5(c) com a Fig. 7.3(c) ilustra que a flexibilidade da tecnologia standard
cell de escolher e posicionar células resulta em um projeto m ais com pacto, com m enos portas
e m enos conexões, do que na tecnologia de gate array. E ntretanto, a tecnologia de standard
cell pode requerer m ais tem po de projeto do que a de gate array , porque os transistores não
podem ser pré-fabricados.
Em com paração com a tecnologia de ICs totalm ente custom izados, a de standard cell é
m enos otim izada porque as células estão lim itadas em term os de tam anho e variedade e o seu
posicionam ento é restrito a filas predeterm inadas. N o entanto, a tecnologia de standard cell
requer m enores custos N R E e m enos tem po, porque não necessitam os realizar nenhum dos
projetos em nível de transistor nem de leiaute, yd que foram feitos previam ente pela em presa
de standard cells. Além disso, as refabricações, em bora ainda com uns, são m enos frequentes.
Em com paração com a tecnologia de gate array , a de standard cell é m ais otim izada, m as é
m ais dispendiosa e exige m ais tem po.

Cell array e ASICs estru tu rad o s


U m a outra tecnologia que se tornou popular é um cruzam ento entre as tecnologias de gate ar­
ray e standard cell, conhecida com o cell array. Em um cell array, as células padronizadas são
posicionadas previam ente no IC (exatam ente com o as portas são posicionadas de antem ão em
um gate array), ficando apenas a fiação para ser com pletada para que um circuito em particu­
lar seja criado. O s cell arrays são referidos algum as vezes com o mar de células. A diferença
entre um gate array e um cell array está apenas na com plexidade da célula - as células de um
cell array podem ser m ais com plexas d o que sim ples portas lógicas. N aturalm ente, os fabri­
cantes de gate arrays tam bém usam itens que são m ais com plexos do que sim ples portas e os
de cell arrays usam células que são sim plesm ente portas, de que m odo que essas expressões
tornam -se confusas em parte. Em geral, o term o A SIC estruturado tornou-se popular para
descrever A SIC s cujas portas ou células foram previam ente posicionadas, significando que
é necessário apenas com pletar a fiação para que um circuito seja im plem entado no IC (além
disso, a expressão gate array parece estar entrando cm desuso).
402 Sistemas Digitais

► EXEMPLO 7.2 Implementação de um meio somador usando standard cells


U sando a biblioteca de células padronizadas da co = ab
Fig. 7.5, vamos im plem entar um meio som ador s = a'b + ab'
em um ASIC do tipo standard cell. Lembre-se
de que as equações de um meio som ador são:
co = a b e s = a 1b + a b 1. Assim, usaremos duas
células de inversores, três células de ANDs de
a --------
b ------ <
-T - a *: y co
s

l>JrP

1------------
duas entradas e uma célula OR de duas entradas,
da biblioteca. Implementaremos o meio somador

i1

usando células, como mostrado na Fig. 7.6, e as­ f ila «i e c é lu la s

sumiremos que cada fila de células pode conter


três células no máximo. —
f ila d e c é lu la s
Observe que a nossa implementação usando
standard cells posiciona as células de modo que Figura 7.6 M eio som ador usando standard
a fiação é minimizada, ao passo que a implemen­ cells.
tação usando gate arrays da Fig. 7.4 requereu
que colocássemos os fios entre as posições prexistentes das portas, resultando em uma Ilação mais
longa. Assim, a implementação com standard cells pode ser mais rápida do que com gate arrays,
já que fios mais curtos têm tipicamente atrasos menores. M

Implementação de circuitos usando apenas portas NAND


Você talvez se lem bre do C apítulo 2 que os transistores CM OS prestam -se m elhor para criar
portas NAND c NOR do que portas AND e OR. A razão expressa para fundam entar isso foi que
os transistores pM O S conduzem bem os ls, m as não os Os, ao passo que os transistores nM OS
conduzem bem os Os, m as não os ls. Em qualquer caso, os gate arrays contêm tipicam ente
m uitas portas NAND e/ou NOR, em vez de portas A ND e OR, e os projetos com standard cells
tam bém serão mais eficientes se forem im plem entados usando portas NAND ou NOR. A cria­
ção de um gate array é m uito m ais fácil quando se usa som ente um tipo de porta, com o apenas
NANDs ou apenas N O Rs, em vez de ter de decidir quantas portas AND, OR e NOT deverão
ser colocados previam ente nos gate arrays. Portanto, dada a pronta disponibilidade de portas
NAND ou N O R nas tecnologias ASIC que usam CM OS, querem os um m étodo para converter
circuitos A N D /O R em circuitos NAND ou NOR.
F elizm ente, a conversão de qualquer circuito A N D /O R em um circuito que usa apenas
portas N A N D é possível porque a porta N A N D é universal, com o foi m encionado na Seção
2.8. U m a porta universal é um tipo de porta lógica que perm ite im plem entar q ualquer função
booleana usando unicam ente portas desse tipo. U m a form a de se com preender a universali­
dade d a porta N A N D é perceber que podem os im plem entar as portas NOT, A ND e O R subs­
tituindo cada um a dessas por um circuito equivalente, constituído apenas de portas NAND.
Portanto, qualquer circuito constituído de portas NOT, A N D e O R pode ser im plem entado
usando-se apenas portas NAND.
Para im plem entar uma porta NOT usando
portas NAND, podem os substituir a porta NOT
por um a porta N AN D de duas entradas com as F=x' F=x'

suas duas entradas ligadas juntas, com o m os­


trado na Fie. 7.7. A tabela-verdade da figura
Entradas Saída
m ostra que a porta NAND, com suas entradas
X a b F
ligadas ju n ta s, funciona com o um inversor.
0 0 0 1
Q uando a entrada x é 0, am bas as entradas da
1 1 1 0
porta NAND são 0, obrigando a porta NAND a
fornecer um 1 na saída. Q uando a entrada x é 1,
Figura 7.7 Im plem entação de uma porta
am bas as entradas da porta NAND são 1, obri­
NOT usando uma porta NAND.
gando a porta NAND a produzir um 0 na saída.
Implementação Física 403

A lternativam ente, poderíam os sim plesm ente ligar x a uma das entradas da porta N A N D e
um 1 à outra entrada N A N D . E ntão, se x for 0, a porta N A N D produzirá um 1 de saída e, se x
for 1, a N A N D fornecerá um 0 de saída, conseguindo-se assim o com portam ento desejado de
porta NOT.
Para im plem entar um a porta A ND usando-se portas NAND, podem os substituir a porta
A N D por um a porta NAND seguida de uma porta N O T (que sabem os ser um a porta NAND de
duas entradas com suas entradas ligadas ju n tas), com o m ostrado na Fig. 7.8. Isso funciona
porque, se forem dadas as entradas a e
b, então a prim eira NAND com putará _a_

( a b ) 1 e em seguida a porta N O T com ­ b


F=ab
F=ab
putará ( a b ) 1'=ab, ou seja, um a AND. (ab)'

Para im p lem en tar um a p o rta OR Figura 7.8 Im plem entação de um a porta AND
usando portas NAND, podem os subs­ usando-se portas NAND.
tituir a porta O R por um a porta NAND
com as entradas invertida, com o m os­
trado na Fig. 7.8. Isso funciona por­
F=a+b
que, se forem dadas as entradas a e b.
então o circu ito de portas N A N D da F=(a'b7=a"+b'
Fig. 7.9 co m p u tará ( a 1b ') 1, o que =a+b
pela lei de D eM organ é a ' ' + b ' 1,
Figura 7.9 Implementação de uma porta OR usando
podendo ser sim plificado obtendo-se
portas NAND.
a + b - ou seja, uma OR.
Q uando substituím os um circuito originalm ente constituído de portas A N D , O R s e NOTs
por um circuito com apenas portas NAND, usando as substituições anteriores, descobrim os que
certos sinais são invertidos duas vezes - o sinal alim enta um inversor e, então, im ediatam ente
alim enta um outro inversor. Inversões duplas de um sinal produzem o sinal original, de modo
que inversões duplas podem ser substi­
tuídas sim plesm ente por um a conexão,
com o m ostrado na Fig. 7.10. Essa eli­
m inação reduz os transistores necessá­
x >
Figura 7.10 Inversões duplas podem ser eliminadas.
rios sem alterar a função do circuito.

► EXEMPLO 7.3 Implementação do circuito que realiza a soma em um meio somador usando portas NAND
A Fig. 7 .11 (a) mostra o circuito que realiza a soma em um meio somador (veja a Seção 4.3), usando
portas AND, ORs e NOTs. Podem os im plem entar esse circuito usando apenas portas NAND,
substituindo cada porta por um circuito NAND equivalente, como mostrado na Fig. 7.11 (b). Após
as substituições, notamos que há dois sinais com inversões duplas. A eliminação dessas inversões
duplas resulta no circuito mostrado na Fig. 7.1 l(c).

in v e r s õ e s d u p la s

in v e r s õ e s d u p la s
(a) (b) (c)
Figura 7.11 Implementação do circuito que realiza a soma em um meio somador, usando apenas
portas NAND: (a) circuito original com ANDs, ORs e NOTs, (b) circuito obtido após a substituição
de cada porta por um circuito NAND equivalente e (c) circuito após a elim inação das inversões
duplas. M
404 Sistemas Digitais

Q u an d o convertem à m ão circu ito s de A N D s, in v e r s õ e s d u p la s

O R s e N O Ts em circu ito s constituídos de N A N D s,


algum as pessoas acham m ais fácil sim plesm ente d e­
senhar “bolhas” de inversão no lugar dos inversores
baseados em N A N D s, com o m ostrado na Fig. 7.12.
E ntão, bolhas duplas de inversão presentes em um
sinal cancelam -se. C ada bolha de inversão isolada
restante torna-se um a porta N O T baseada em NAND.
A ssim , o circuito da Fig. 7.12 term inaria idêntico ao
circuito da Fig. 7.1 1(c). Figura 7.12 Inversores desenhados
Se estiv erem d isp o n ív e is p o rta s N A N D com com o bolhas de inversão durante a
um núm ero fixo de en trad as, co m o apen as portas conversão para NAND.
N A N D de duas en trad as, p o d erem o s p rim eiro m o ­
d ificar o circu ito de portas A N D e O R usando a p e ­
nas po rtas A N D e O R de du as en trad as (com pondo
p o rtas m aio res a p artir de po rtas m enores - veja a
Seção 5.8), antes de convertê-lo em um circuito com
portas N A N D .

Implementação de circuitos usando portas NOR


A conversão d e circu ito s com por­
tas A N D , O R s e N O T s em circuitos
de portas N O R é sim ila r à conver­
são para N A N D s, já q ue um a porta
N O R tam bém ê um a p o rta univer­
sal. O p ro cesso de tran sfo rm ação
de um c irc u ito em um o u tro com
p o rta s N O R su b stitu iu as p o rtas
A N D , N O R s e N O T s p o r circuitos
e q u iv a le n te s b a se a d o s em p o rtas
N O R , com o m ostrado na Fig. 7.13.
P odem os substituir um a p orta N O T
Figura 7.13 Equivalências com portas NOR.
p o r um a porta N O R de du as en tra­
das com as en trad as ligadas ju n ta s
(ou alternativam ente, p o r um a p orta N O R de d u as en trad as com um a das en trad as ligada
a um 0). P od em o s su b stitu ir um a p o rta O R por um a porta N O R seg u id a de um inversor,
resultando ( a + b ) 11 = a+b. P odem os su b stitu ir um a porta A N D p o r um a porta N O R cujas
en trad as foram invertidas, resu ltan d o ( a ' + b 1) ' = a ' ' * b 1 ' = ab (observe o uso da lei de
D eM organ).

► EXEMPLO 7.4 Implementação do circuito que realiza a soma em um


meio somador usando portas NOR
Anteriorm ente, dem onstram os com o representar a saída da som a de um meio som ador usando
portas NAND. De forma igualmente fácil, poderemos implementar a saída da soma usando portas
NOR. O circuito da soma de um meio som ador está mostrado novamente na Fig. 7 .14(a). Na Fig.
7.14(b), substituímos cada porta NOT. AND e OR por seu circuito equivalente NOR, usando bo­
lhas de inversão em vez de portas NOT baseadas em NORs, por conveniência. Eliminamos as in­
versões duplas e substituímos as bolhas de inversão isoladas por portas NOT baseadas em NORs,
como mostrado na Fig. 7 .14(c).
Implementação Física 405

in v e r s õ e s d u p la s

(b) (0
Figura 7.14 Implementação de um circuito com portas AND. ORs e NOTs usando apenas NORs:
(a) circuito original, (b) circuito obtido após a substituição das portas AND, ORs e NOTs por
circuitos NORs equivalentes, usando bolhas de inversão para facilitar o desenho do circuito e (c)
circuito final após a eliminação das inversões duplas e a substituição das bolhas de inversão isola­
das por portas NOT baseadas em NORs. A

O circuito da som a do m eio som ador foi im plem entado com m enos portas N A N D do que
com portas NOR. D ependendo do circuito original, o inverso poderia ser verdadeiro. Vimos
que as portas N AN D eram bem adequadas a circuitos, na form a de so m a de produtos. As por­
tas NOR são m elhor usadas quando um circuito está na form a de um produto de som as (um
nível de portas O R alim entando um a única porta AND).
As bibliotecas de gate cirrays e standard cells incluem tipicam ente, além de portas NAND
e NORs apenas, outros com ponentes que apresentam im plem entações CM OS eficientes. Por
exemplo, um desses com ponentes muito com um é conhecido como AND-OR-INVERT, ou AOL
abreviadam ente. Esse com ponente tem duas portas AND de duas entradas (totalizando assim
quatro portas) as quais alimentam uma porta NOR de duas entradas. Esse circuito pode ser proje­
tado eficientem entc usando transistores CM OS. Assim, tanto quanto possível, poderem os utilizar
com ponentes AOI e outros com ponentes compactos, que estão disponíveis em uma biblioteca.
A tarefa de converter um circu ito lógico g enérico em um circu ito que usa so m en te os
com ponentes da biblioteca de um a tecnologia em particular (isto é, um a dada biblioteca de
gate array ou de standard cell) é conhecid a com o mapeamento de tecnologia. A tarefa de
determ inar onde colocar esses com ponentes em um chip é conhecida com o posicionamento
e a tarefa de conectar esses com ponentes por fios é conhecida com o roteamento. A tualm ente,
todas as três tarefas, conhecidas coletivam ente com o projeto físico , são feitas tipicam ente por
ferram entas autom atizadas.

► EXEMPLO 7.5 Implementação da luz de alerta para cinto de segurança


usando um gate array baseado em NORs
Im plem ente o circuito AlertaParaCinto da Fig. 7.1 (a), usando o gate array baseado em NORs
da Fig. 7 .15(a). Após observar que o gate array contém apenas portas NOR de duas entradas,
transform am os primeiro o circuito AlertaParaCinto de modo que sejam usadas somente portas
AND e OR de duas entradas, como mostrado na Fig. 7.15(b). A seguir, o circuito de ANDs e ORs
é convertido no circuito da Fig. 7.15(c) que usa somente portas NOR. São usadas as equivalências
da Fig. 7.13 e bolhas de inversão no lugar de inversores baseados em NORs. A seguir, vemos que
há inversões duplas no fio da entrada s. Consequentem ente, elim inam os essas duas inversões.
Observe que não elim inam os as inversões duplas entre os pontos 3 e 4 da Fig. 7.15(c), porque a
primeira inversão é parte de uma porta NOR - a eliminação dessa primeira inversão converteria a
porta NOR em uma OR, frustrando o nosso objetivo de ter apenas portas NOR. Após converter­
mos as dem ais inversões isoladas em inversores baseados em portas NOR, mapeamos o circuito
em portas NOR de duas entradas do gate array, como mostrado na Fig. 7.15(d) - numeramos as
portas NOR da Fig. 7.15(c) e (d) para mostrar a correspondência entre os dois circuitos.
406 Sistemas Digitais

Figura 7.15 Implementação do circuito AlertaParaCinto usando um IC de gate array baseado em


NORs: (a) gate array original, (b) - (c) conversão do circuito desejado em um que usa somente por­
tas NCR de duas entradas e (d) gate array final com os fios de conexão.

7.3 TECNOLOGIA DE ICS PROGRAMÁVEIS - FPGA


P ara converter o projeto de um circuito digital desejado em um IC concreto, as tecnologias
de IC s m anufatu rad o s requerem algum as sem anas, no m ínim o, sen d o q u e tip icam en te o
m ais provável é necessitarem em torno de diversos m eses. O que fazer se q u iserm o s para
hoje a im plem entação de um circu ito que estam os desenvolvendo? N esse caso, poderem os
usar um a das diversas tecnologias de ICs program áveis. Em um a tecnologia de IC progra­
mável , im plem entam os o circu ito d esejado sim p lesm en te escrevendo um a seq ü ên cia parti­
cular de bits em um a m em ória (ou um a série delas) co n tid a no IC. O uso de um a tecnologia
de IC program ável tem as desvantagens de desem penho, tam anho e consum o piores, se co m ­
parado com o uso de tecnologias cu sto m izad as ou sem icu sto m izad as de IC. N o entanto,
com o é para hoje que terem os a nossa im plem entação, os benefícios desse fato poderão su­
perar as desvantagens.
A form a m ais popular de tecnologia de IC progra­
m ável é co n h ecid a com o Field-Programmable Gate 3uX\\.\NX
xcAOioc1*
Array (arranjo ou matriz de portas programável em PCQ4CK M W *
A10047Ô3A
3C
campo), ou FPGA. U m a em presa q ue trabalha com
FPG A s pré-fabrica o chip de FPG A , significando que
o chip contém todos os transistores e todos os fios que
o chip final poderá vir a ter. C om pram os esses chips
FPG A e, então, os programamos para im plem entar o
circu ito que d esejam o s. N esse contexto, programar
significa sim plesm ente escrever um a série de bits nas
m em órias do chip - isso não deve ser confundido com Figura 7.16 Chips de FPGA.
escrever program as de so ftw are em alto nível com o
códigos em C ou C ++. E ssa program ação ocorre no campo , significando no nosso laborató­
rio, local de trabalho ou casa, em oposição a um a planta de fabricação. D aí vem a expressão
programável em campo no nom e FPG A . A lém disso, tipicam ente a program ação necessita de
segundos apenas, ou possivelm ente m inutos, no m áxim o. A Fig. 7.16 m ostra alguns chips do
tipo FPG A . O chip no topo, com as partes anterior e posterior m ostradas, tem cerca de 2 cm
de lado. O chip inferior m ede um pouco m ais de 2,5 cm de lado.
Implementação Física 407

Gate arrays progra­ A expressão gafe array aparece no nom e porque, quando os FPG A s com e­
máveis em campo çaram a se tornar populares em m eados da década de 1980, eles eram co m er­
(FPGAs) não contêm cializados com o um a alternativa à tecnologia dos gate arrays, que era m uito
gate arrays em seu popular na época. A ssim , um FPG A era um ÍC sem icustom izado (quase sin ô ­
interior - o nome está ni mo de gafe array naquela época) que podia se r p ro g ram ad o no cam po ao
ali devido a razões his­
invés de um a planta de fabricação. E ntretanto, esteja prevenido que o projeto
tóricas.
interno de um chip FPG A não se parece em nada com um gate array - o nom e
é um tanto infeliz.
Dentro de um FPGA, os dois tipos básicos de com ponentes são tabelas de consulta c matrizes
de chaveam ento. Esses com ponentes são repetidos centenas de vezes segundo padrões regulares
no interior de um FPGA. Agora, descreverem os cada um dos tipos desses com ponentes.

Tabelas de consulta (lookup)


U m a idéia básica que fundam enta os FPG A s é que uma memória pode implementar lógica
combinacional. M ais especificam ente, um a m em ória com 1 bit de largura, N linhas de en d e­
reço, e portanto 2 a palavras, configurada para ler a palavra correspondente ao endereço atual,
pode im plem entar qualquer função com binacional de N variáveis.
Lembre-se de que uma memória configurada para leitura fornecerá em sua saída os conteúdos
da palavra correspondente ao endereço presente nas linhas de endereço da memória. Assim, se as
linhas de endereço alaO de uma m em ória 4x1 forem 00, a m em ória fornecerá os conteúdos da
palavra 0. Se as linhas de endereço forem 01, a memória fornecerá os conteúdos da palavra 1. De
modo sem elhante, a leitura do endereço 10 fornecerá a palavra 2 e 11, a palavra 3.
A idéia chave que fun­ Portanto, a im plem entação em um a m em ória de um a função booleana pode
damenta os FPGAs é ser feita conectando-se sim plesm ente as entradas da função às linhas de en d e­
que uma memória com reço da m em ória e arm azenando um 0 ou um 1 em cad a palavra de m em ória
N linhas de endereço de m odo que, para cada com binação de valores de entrada, corresponda à saída
pode implementar desejada de m em ória. Por exem plo, considere a função F (x ,y ) = x ' y ' + xy.
qualquerfunção A tabela-verdade da função está m ostrada na Fig. 7 .17(a). Para im plem entar a
combinacional de N função desse exem plo, poderem os co n ectar x e y respectivam ente às linhas de
entradas.
endereço a l e a0 da m em ória 4x 1. A seguir, com base na tabela-verdade, arm a­
zenam os um 1 na palavra 0, um 0 na palavra 1, um 0 na palavra 2 e um 1 na palavra 3 - em
outras palavras, arm azenam os na m em ória as saídas da tabela-verdade. D esse m odo, a m e­
m ória im plem enta a função desejada, com o m ostrado na Fig. 7.17(b). Por exem plo, quando
xy=00, querem os que a saída seja 1. A Fig. 7.17(c) m ostra que quando xy=00, as linhas de
endereço da m em ória serão 00 e, assim , a m em ória fornecerá na saída o conteúdo da palavra
0. que é o valor 1, com o desejado.

F G
(a) (b) (O (d) (e)

Figura 7.17 Implementação de funções lógicas usando uma memória: (a) tabela-verdade de uma
função de duas entradas, (b) conteúdos e conexões correspondentes da memória, (c) a saída apro­
priada aparece para os valores dados de entrada, (d) duas funções que tem as mesmas duas entra­
das e (e) conteúdos da memória para as duas funções.
408 Sistemas Digitais

U m a m em ória com M bits por palavra, em vez de apenas 1 bit por palavra, pode im ple­
m entar M funções, desde que todas essas M funções tenham as m esm as entradas. Por exem ­
plo, considere as duas funções F (x ,y ) = x ' y ' + x y e G ( x , y ) = x y 1. A tabela-verdade dessas
duas funções está m ostrada na Fig. 7 .l7 (d ). U m a m em ória 4x2, que tem 2 bits por palavra,
pode im plem entar essas duas funções, com o está m ostrado na Fig. 7 . 17(e).
Um a m em ória usada para im plem entar um circuito com binacional é conhecida (na term i­
nologia FPG A ) com o um a lookup table (tabela de consulta, ou tabela lookup). Q uando usada
com o tabela lookup , nós nos referim os tipicam ente à m em ória pelo núm ero de entradas (li­
nhas de endereço) e o núm ero de saídas (bits por palavra), em vez do núm ero de palavras e o
núm ero de saídas. Por exem plo, irem os nos referir a um a m em ória 8x2, que está sendo usada
com o tabela lookup , com o sendo um a “tabela lookup de 3 entradas e 2 saíd as’', ao invés de
um a tabela lookup 8x2.
A partir deste ponto, irem os assum ir que a m em ória está configurada para leitura e, por­
tanto, não m ostrarem os que a linha de leitura está em 1.

► EXEMPLO 7.6 Implementação da luz de alerta para cinto de segurança usando uma tabela lookup
Use uma tabela lookup para im plem entar a luz
de alerta para cinto de segurança da Fig. 7.1, k P s w

cujo circuito aparece na Fig. 7.18(a), e cuja 0 0 0 í1 0 \


1
equação é: 0 0 1 :1 o :
1
0 1 0 :1 o :
w = kps' I
0 1 1 :1 o :
1
G eram os a tabela-verdade da função, com o 1 0 :1 o !
0 I
m ostrado na Fig. 7 .1 8(b). C om o o circu ito
1 0 1 !1 o !
I
tem três entradas, sabem os que precisarem os
1 1 0 !1 1 !
de um a tabela lookup (m em ória) de 3 entradas Mem. 8x1 I

e 1 saída. C onectam os as entradas às linhas 1 1 1 V 0 )


0 0
de en d ereço da m em ória e arm azen am o s a 1 0
tabela-verdade na m em ória, com o m ostrado 2 0
Programação
na Fig. 7.18(c). D esse m odo, im plem entam os 3 0 (segundos)
a função desejada. .Se a m em ória de 3 entradas
e 1 saída for um ÍC , então a im plem entação
zS
ki
pi
si—
4
aO 5
0
0
estará term inada e poderem os inserir o IC no 6 1
sistem a eletrônico com o qual ele deverá inte- 7 0
ragir. IC D
:)

Você acabou de ver um ex em p lo mui t o


w
1
sim p les de tecn o lo g ia de IC program ável -
um a m em ória. Podem os usar um chip de m e­ Figura 7.18 Im plem entação com tabela
m ória, com N linhas de endereço, ou seja, 2,v lookup.
palavras, e com M bits por palavra, para im­
plem entar M funções booleanas diferentes das m esm as N entradas. P oderem os adquirir um
chip de m em ória antes de precisarm os dele em nosso projeto e então poderem os “program á-
lo” em nosso laboratório para im plem entar um a função booleana desejada.

Partição de um circuito entre tabelas lookup


Intelizm ente, o uso de um a m em ória para im plem entar uma função booleana não funciona
bem com funções de num erosas entradas. Por exem plo, ao passo que um a função de quatro
entradas precisa apenas de um a m em ória de 16 palavras, um a função de 16 entradas irá re-
Implementação Física 409

querer um a m em ória de 64 K palavras (em que 1 K = 1024) e um a função de 32 entradas iria


requerer um a m em ória de 4 bilhões de palavras. O tam anho da m em ória necessária cresce da
m esm a form a que o tam anho da tabela-verdade da função, que sabem os crescer segundo 2‘\
em que N é o núm ero de entradas da função. Em resum o, um a tabela-verdade não é um a re­
presentação eficiente de um a função booleana de m uitas entradas e, conseqüentem ente, um a
tabela lookup não será um a im plem entação eficiente para funções de num erosas entradas.
A partição do circuito d e um a função entre m últiplas tabelas lookup pode pro d u zir um a
im plem entação m ais eficiente no caso de funções m aiores. C onsidere o circuito expandido
de alerta para cinto de segurança do E xem plo 2.8. Vamos expandir esse circuito ainda mais,
acrescentando um a terceira entrada de “d iag n ó stico ” ch am ad a d que forçará a lâm pada de
alerta a se acender quando d=l - talvez um m ecânico, que esteja exam inando um a lâm pada
de alerta defeituosa, possa querer forçar a lâm pada a acender e verificar se ela queim ou, ou
para ajudar a determ inar se o sensor do cin to está com defeito. O circuito ex p an d id o está
m ostrado na Fig. 7.19(a). Esse circuito não poderá ser m apeado para um a tabela lookup de
3 entradas e 1 saída porque o circuito tem cinco entradas. E ntretanto, o circuito poderia ser
m apeado para um a tabela lookup de 5 entradas c 1 saída. A lternativam ente, poderíam os im ­
plem entar o circuito usando um a tabela lookup de 3 entradas e 1 saída que esteja conectada a
um a outra tabela lookup de 3 entradas c 1 saída, com o m ostrado na Fig. 7.19(c). C onseguim os
isso fazendo a partição do circuito original em dois grupos, de m odo que o prim eiro grupo
tenha 3 entradas e 1 saída e o segundo grupo tenha 3 entradas e 1 saída, com o está assinalado
por círculos na Fig. 7.19(b). A saída do prim eiro grupo, que indicam os por x, tem a equação
x = k p s '. A saída do segundo grupo tem a equação w = x + t + d. Para im plem entar essas
funções, irem os program ar as tabelas lookup com o m ostrado na Fig. 7.19(c). D essa form a,
im plem entam os o circuito desejado usando duas tabelas lookup.

w
(O
Figura 7.19 Fazendo a partição de um circuito em duas tabelas lookup: (a) circuito desejado, (b) partição
do circuito em grupos de 3 entradas e 1 saída, no máximo e (c) grupos mapeados para tabelas lookup de 3
entradas e 1 saída.

O bserve que a im plem entação com duas tabelas lookup tem um total de 8 + 8 = 16 pa­
lavras, em com paração com as 32 palavras que estariam presentes em um a tabela lookup de
5 entradas. A ssim , a partição de um circuito entre tabelas lookup pequenas pode resultar em
m elhor eficiência do que o uso de um a tabela lookup maior.
E ssa eficiência pode ser vista ainda m ais dram aticam ente em exem plos com m ais en tra­
das. Por exem plo, a função F = abc + d e f + ghi , m ostrada na Fig. 7.20(a), tem 9 entradas.
A im plem entação da função com um a única tabela lookup iria req u erer um a tabela com 29
410 Sistemas Digitais

= 512 palavras. E ntretanto, poderem os fazer a partição d o circuito em grupos, de m odo que
cada grupo tenha 3 entradas e 1 saída - o prim eiro grupo com putará abc, o segundo, d e f , o
terceiro, ghi e o quarto fará a O R das saídas d o s três prim eiros grupos, g erando a saída F.
C ada grupo poderia ser im plem entado usando-se um a tabela lo o k iip de 3 entradas e 1 saída,
ou seja, um a m em ória 8x1. A im plem entação resultante teria q u atro dessas tabelas lo o k u p ,
com o m ostrado na Fig. 7.20(b). O total de palavras dessa im plem entação com quatro tabelas
seria de apenas 8 + 8 + 8 + 8 = 32 palavras - bem m enos do que as 512 palavras que são re­
queridas com um a única tabela lo o k u p de 9 entradas. A Fig. 7.20(c) m ostra um a com paração
entre os tam anhos relativos de um a m em ória de 512 palavras e quatro de 8 palavras.

Figura 7.20 A divisão de um circuito, com muitas entradas, entre tabelas lo o k u p menores reduz o
tamanho total da tabela lo o k u p : (a) circuito de 9 entradas, (b) circuito mapeado para tabelas lo o ku p
de 3 entradas e 1 saída, (c) economia de tamanho em relação a uma tabela lo o k u p de 9 entradas e
1 saída.

A partição de um a função entre pequenas tabelas lo o k u p é m ais eficiente do que a im ple­


m entação de um a função em um a tabela lo o k u p de grande porte. N o entanto, o que c um a ta­
bela lo o k u p “ pequena” - um a tabela de 2 entradas, 3 entradas, 4 entradas, 7 entradas ou talvez
m esm o 10 entradas? Os pesquisadores realizaram num erosos estudos em um a grande q uan­
tidade de circuitos típicos e descobriram que, na m aioria dos circuitos, as tabelas lo o k u p de 3
ou 4 entradas parecem trabalhar melhor. A lém disso, eles descobriram que tabelas lo o k u p de
2 saídas tam bém parecem trabalhar bem na m aioria dos exem plos. A ssim , a partir deste ponto
em diante, usarem os tabelas lo o k u p de 3 entradas e 2 saídas.

► EXEMPLO 7.7 Partição de um circuito entre tabelas lookup com 3 entradas e 2 saídas
Im plem ente o circuito m ostrado na Fig. 7.21 (a) usando tabelas lo o k u p de 3 entradas e 2 saídas.
C om eçam os tentando fazer a partição do circuito em grupos, de m odo que cada grupo tenha no
m áxim o 3 entradas e 2 saídas. Entretanto, a porta AND de quatro entradas im pede-nos de ser­
mos bem -sucedidos nessa partição porque, qualquer que seja a porta em que esse grupo esteja,
ele lerá no mínim o quatro entradas. Para rem ediar esse problem a, decom pom os essa porta em
duas portas m enores, m antendo sim ultaneam ente a mesma funcionalidade, com o m ostrado na
Fig. 7.2 l(b). A seguir, poderem os fazer a partição do circuito em dois grupos, cada um com
3 entradas e 1 saída, com o está m ostrado na figura - num eram os as entradas de cada grupo
para tornar claro que cada grupo tem três entradas. Então, m apeam os esses grupos para duas
tabelas lo o k u p de 3 entradas e 2 saídas, com o m ostrado na Fig. 7.21 (c). O bserve que a saída
Dl da prim eira tabela lo o k u p não é usada e a saída DO da segunda tabela tam bém não é usada.
A coluna DO da prim eira tabela im plem enta t=abc e a coluna Dl da segunda tabela im plem enta
F = td + e.
Implementação Física 411

Figura 7.21 Fazendo a partição de um circuito em duas tabelas lookup: (a) circuito original, (b)
circuito transformado que divide a porta AND de quatro entradas em duas portas menores e então
mostra os agrupamentos de 3 entradas e l saída e (c) mapeamento de cada grupo para uma tabela
lookup, sendo que a função do grupo foi convertida em bits programados na tabela lookup. Os bits
em itálico não são usados. 4

N o exem plo anterior, observe que não usam os um a das colunas da prim eira tabela lookup
nem um a das colunas da segunda tabela. A lgum as vezes, o uso das tabelas lookup resulta em
células de m em ória não usadas. O utras vezes, o uso das tabelas lookup pode resultar tam bém
em palavras da tabela não sendo usadas, com o está ilustrado no exem plo a seguir.

► EXEMPLO 7.8 Mapeando um decodificador 2x4 para tabelas lookup de 3 entradas e 2 saídas
Vamos implementar um decodificador 2x4, sem habilitação, usando tabelas lookup de 3 entradas
e 2 saídas. Um decodificador 2x4 tem duas entradas, i 1 e i 0, e quatro saídas, d0, d l, d2 e d3. Um
mapeamento está mostrado na Fig. 7.22. As equações de cada saída são d0 = i 1' i 0 ', dl=i l 1i 0,
d2=i 1i 0 ' e d3=i liO. As tabelas lookup implementam essas equações usando as metades superio­
res das palavras das tabelas, as metades inferiores não são usadas.

(a)

Figura 7.22 M apeamento de um decodificador 2x4 para duas tabelas lookup de 3 entradas e 2
saídas: (a) circuito desejado e (b) mapeamento para as duas tabelas lookup. Os bits em itálico não
são usados. 4
412 Sistemas Digitais

Um FPG A pode vir com dezenas, centenas ou m esm o m ilhares de tabelas lo o k n p , p o ­


dendo assim im plem entar grandes quantidades de lógica com binacional.

Interconexões programáveis (matrizes de chaveamento)


N o s e x e m p lo s a n te rio re s, e stiv e m o s c ria n d o c o n e x õ e s c u sto m iz a d a s e n tre as tab elas
lo o k n p . N o en tan to , o essen cial em relação aos F P G A s e q u e o chip in teiro é p ré-fab ricad o
- in clu in d o os fios. P o rtan to , os F P G A s vêm com interconexões programáveis (p r o g r a m ­
m a b le interconnects), alg u m as vezes ch am ad as de matrizes de chaveamento ( switch m a ­
t r i c e s ) , q u e n o s p erm item p r o g r a m a r as c o n e x õ e s en tre as ta b e la s lo o k n p . A F ig . 7.23
m o stra um chip de FPG A sim ples, q ue tem seis en trad as ( P0-P5 ), d u as tabelas lo o k n p de
3 en trad as e 2 saídas, um a m atriz de ch av eam en to d e 4 en trad as e 2 saíd as, e q u atro saíd as
( P6-P9). A s três en trad as da tabela lo o k n p da esq u erd a vêm d as en trad as ex tern as P L P2
e P 3 - as en trad as d essa tab ela lo o k n p não podem se r alterad as. E n tretan to , d u as das en tra­
das d a tabela lo o k n p d a d ireita podem v ir ou das saíd as da tab ela lo o k n p da esq u erd a, ou
das en trad as ex tern as P4 e P5. A m atriz d e ch av eam en to d eterm in a quai s d essas conexões
serão feitas.

Memória
de 2 bits

T T
s1 sO
iO
i1 Mux . oO
i2 4x1 d
i3

Memória
de 2 bits

□l H
o1

(b)

Figura 7.23 Uma arquitetura simples de FPGA: (a) um FPGA que contém uma matriz de chaveamento e (b)
a parte interna da matriz de chaveamento mostrando dois multiplexadores (mux) 4x l controlados por dois
registradores de dois bits. Nota: FPGAs reais têm centenas de tabelas lo o k n p e matrizes de chaveamento, não
apenas algumas.

A parte interna da m atriz de chaveam ento aparece à direita na Fig. 7.23. C onsiste em dois
m ultiplexadores (mux) 4x l . O m ultiplexador de cim a co necta a saída oO da m atriz de chave­
am ento a um a das quatro entradas da m atriz. O m ultiplexador de baixo co necta a saída o l a
uma das quatro entradas da m atriz. U m a m em ória de dois bits (que é na realidade um registra­
dor de dois bits, m as que é cham ado de m em ória por consistência com a m em ória presente no
interior de um a tabela lo o k n p ) m antém os dois bits que determ inam os valores das duas linhas
de seleção de cada m ultiplexador. Desse m odo, poderem os program ar as conexões desejadas
sim plesm ente escrevendo os bits apropriados nessas duas m em órias de d o is bits. O bserve
que a saída de cada m atriz de chaveam ento pode ser configurada independentem ente um a
da outra. D e fato, poderíam os inclusive fazer a m esm a entrada aparecer em am bas as saídas,
em bora isso não fosse útil neste projeto de FPG A .
ilustrarem os o uso da m atriz de chaveam ento com um exem plo.
Implementação Física 413

► EXEMPLO 7.9 Um decodificador 2x4 em um FPGA com uma matriz de chaveamento


Repetiremos aqui o Exemplo 7.8, usando o FPGA mostrado na Fig. 7.23(a). Podemos obter facil­
mente as entradas apropriadas da primeira tabela lookup fazendo-as iguais às do Exemplo 7.8, ou
seja, conectando um 0, a entrada externa il e a entrada externa iO às entradas apropriadas do FPGA,
como está mostrado na Fig. 7.24(a). Para obter as entradas adequadas para a segunda tabela lookup,
primeiro conectamos as entradas externas / / e iO às entradas do FPGA, as quais alimentam a matriz
de chaveamento. A seguir, configuramos a matriz de chaveamento, de modo que a sua entrada m2
passe ate a sua saída oO, significando que a entrada externa il passa ate a saída oO da matriz de cha­
veamento. Conseguimos essa configuração programando 10 no registrador superior de dois bits da
matriz de chaveamento, como mostrado na Fig. 7.24(b). De modo similar, configuramos a matriz
de chaveamento de modo que a sua entrada m3 passe até a sua saída oL ou seja, a entrada externa
10 passa até a saída ol da matriz de chaveamento. Conseguimos essa configuração programando
11 no registrador inferior de dois bits da matriz de chaveamento. Como as saídas da matriz de cha­
veamento conectam-se às entradas da tabela lookup da direita, conseguimos ligar com sucesso as
entradas externas il e iO às entradas da segunda tabela lookup, como era desejado. Programamos
as duas tabelas lookup como fizemos no Exemplo 7.8. Assim, as saídas externas d0-d3 podem ser
encontradas nos pinos externos do FPGA, como mostrado na Fig. 7.24(a). M

(a) (b)

Figura 7.24 Im plementação de um decodificador 2x4 no interior de um FPGA que contém uma matriz
de chaveamento: (a) conexões externas e bits program ados nas tabelas lookup e na matriz de chavea­
mento e (b) uma vista interna da matriz de chaveamento, mostrando as conexões programadas entre as
saídas e as entradas. Os bits em itálico nas tabelas lookup não são usados.

► EXEMPLO 7.10 Luz de alerta para cinto de segurança com expansão em um FPGA
Estamos prestes a im plem entar o sistem a expandido de luz de alerta para cinto de segurança do
Exemplo 2.8, usando o FPGA mostrado na Fig. 7.23. (A Fig. 7.19 mostrou com o fazer a parti­
ção de um circuito sim ilar em dois grupos, com as equações x = k p s ' e w = x + t + d. Neste
exemplo, w = x + t.) Conectamos k, p e s aos pinos do FPGA que vão para a tabela lookup da
esquerda e então program amos essa tabela para im plem entar a função kps' , como mostrado na
Fig. 7.25. Ligamos uma saída da tabela lookup da esquerda, representada por x, à tabela lookup
da direita, programando a matriz de chaveamento para conectar m0 com oO. Ligamos também t
à tabela lookup da direita, conectando t ao pino externo que está ligado à entrada m2 da matriz
de chaveamento e, em seguida, configurando a matriz de chaveamento para conectar m2 com o l.
Então, programamos a tabela lookup da direita para implementar a função x + t. como mostrado
na Fie. 7.25.
414 Sistemas Digitais

Figura 7.25 Im plementação do circuito expandido de luz de alerta para cinto de segurança em
um FPGA que contem uma matriz de chaveamento: (a) conexões externas e bits program ados c
(b) uma vista interna da matriz de chaveamento, mostrando as conexões programadas. Os bits em
itálico nas tabelas lookup não são usados.

O bserve que, nos dois exem plos anterio res, im plem entam os dois circuitos diferentes
usando o mesmo chip de FPGA. Para im plem entar os dois circuitos diferentes, sim plesm ente
tivem os q ue program ar bits diferentes nas tabelas lookup e na m atriz de chaveam ento. Esse é
o apelo dos FPG A s - eles im plem entam o nosso circuito sim plesm ente sendo program ados.

Bloco lógico programável


N as seções anteriores, os F P G A s ilustrados não dispunham de um elem en to crítico que e
necessário à im plem entação de circuitos genéricos, a saber, os flip-flops. Sem os flip-flops, os
FPG A s não poderiam im plem entar circuitos sequenciais.
O s FPG A s podem incluir um flip-flop para cad a um a das saídas da tabela lookup - dois
flip-flops, no caso de um a tabela lookup de duas saídas. U m a tabela lookup ju n tam en lc com
os seus flip-flops são conhecidos com o bloco lógico configurável , ou CLB (Configurabie
Logic Black). Um CLB sim ples está m ostrado na Fig. 7.26. C ada bloco lógico configurável
tem um a tabela lookup de 3 entradas e 2 saídas, duas saídas e dois flip-flops. A cada ciclo
de relógio, cada flip-flop é carregado com a saída co rresp o n d en te da tabela lookup. C ada
saída do CLB pode ser configurada para vir ou do flip-flop de saída, ou diretam ente da saída
correspondente da tabela lookup. Um a m em ória de um bit (ela própria um flip-flop, m as que
cham arem os de m em ória para evitar confusão) é program ada para realizar essa configuração,
conform e m ostrado na Fig. 7.26. Essa m em ória controla um m ultiplexador 2x l em cada saída
do CLB.
O s flip-flops de saída capacitam -nos a im plem entar circuitos seqüenciais no FPG A , isto
é, circuitos com registradores.
Implementação Física 415

•P6
P7
P8
P9

Figura 7.26Uni FPGA com blocos lógicos configuráveis, os quais contêm flip-flops juntam ente
com uma tabela lookup. Colocamos Os em todas as células de bits de configuração da figura.

► EXEMPLO 7.11 Implementação de um circuito seqüencial em um FPGA


Queremos que o circuito mostrado na Fig. 7.27(a) seja implementado no FPGA da Fig. 7.26. Pri­
meiro conectamos a e b à tabela lookup da esquerda e c e d à tabela lookup da direita, por meio da
matriz de chaveamento, como mostrado na Fig. 7.27(c). Programamos a tabela lookup da esquerda
para gerar na sua saída as funções a 1 e b ', como mostrado na Fig. 7.27(b). De modo similar, pro­
gramamos a tabela lookup da direita para gerar na sua saída as funções c e d. Programamos todas
as saídas do bloco lógico configurável para serem conectadas a seus flip-flops, escrevendo ls nas
memórias de configuração das saídas do CLB, como mostrado na Fig. 7.27(c). ◄
416 Sistemas Digitais

FPGA
a b e d
CLB
Mem. 8xiL Mem. 8x2
0 00
1 01
> > > >

TTTl
2 10
3 11

1 4
a1
00

aO 5 00

6 00

3 7 00
Tabela lo o k u p esquerda
M a tr iz d e D1 DO
a2 a1 aO D1 DO c h a v e a m c n to

0 a b w=a' x=b'
0 0 0 7/ 0 V )
1
II 1
0 0 1 1
2x1 2x1
0 1 0 \ O
0 1 1

a parte de baixo não é usada


Ü •2
•y
■X
■w
(b) c-

(0
Figura 7.27 Implementação de um circuito scqücncial cm um FPGA: (a) circuito scqücncial dese­
jado, (b) bits de programa da tabela lookup esquerda do CLB e (c) FPGA programado. Os bits não
utilizados estão em itálico.

D evem os tom ar cuidado para evitar confusão entre os flip-flops de saída eles próprios e
as “m em órias” de configuração da saída do C LB - as m em órias de configuração arm azenam
os bits que program am o FPG A para im plem entar o circuito desejado, antes da operação do
circuito, ao passo que os flip-flops de saída arm azenam os bits carregados pelo circuito d u ­
rante o seu funcionam ento.
O s elem entos de arm azenam ento da tabela lookup, a configuração das saídas do C LB e
as m atrizes de chaveam ento são conhecidos coletivam ente com o memória de configuração
do FPG A , em bora a “ m em ória” seja constituída por num erosas m em órias m enores e m esm o
registradores ou flip-flops.

Arquitetura completa de um FPGA

Grade de CLBs e matrizes de chaveamento


Um FPG A com ercializado contém centenas ou m esm o
m ilhares de C LB s e m atrizes de chaveam ento, dispos­
tos segundo um padrão regular no chip. Um exem plo
de d isp o sição está m ostrado na Fig. 7.28. O s C L B s
estão conectados a canais de roteam ento horizontais
e verticais, os quais se conectam às m atrizes de ch a­
veam ento. Um exem plo de conexão en tre um C LB
e os canais de roteam ento está m ostrado para o C LB
central no topo. O s canais de roteam ento consistem
em dezenas de fios, representados na figura p o r fios
sim ples em linha cheia. Figura 7.28 A rq u itetu ra de um
FPGA.
Implementação Física 417

O s C L B s e as m atrizes de chaveam ento dos FP G A s com ercializados são m ais com plexos
do que os descritos neste capítulo. Por exem plo, os C L B s podem co n ter duas tabelas lookup
ou conexões diretas para os C L B s adjacentes, perm itin d o en cadeam entos de bits de tran s­
porte. A s m atrizes de chaveam ento podem co n ter opções m ais flexíveis de chaveam ento e
m ais entradas e saídas. Além disso, internam ente os FPG A s com ercializados tam bém podem
conter m ultiplicadores e grandes m em órias R A M para o arm azenam ento de dados, ou unida­
des para m ultiplicar e acum ular, que são usadas em m ultiplicações rápidas.

Programando um FPGA
A inda não dissem os nada sobre com o na realidade as tabelas lookup , as m em órias de confi­
guração das m atrizes de chaveam ento e as m em órias de configuração das saídas dos C LB s
são program adas; particularm ente, com o os bits de program a serão colocados nas m em órias
de configuração? A s m em órias de configuração com preendem todas as m em órias de tabelas
lookup , as de m atrizes de chaveam ento e as de configuração das saídas dos CLB s. C onceitu­
ai m ente, a program ação é habilitada fazendo-se com que todas as células de arm azenam ento
de bits das m em órias de configuração do FPG A sejam conectadas na form a de um grande re­
gistrador deslocador. N esse registrador, as células de arm azenam ento de bits estão espalhadas
pelo chip. Portanto, não constituem um registrador tradicional cujos bits estão usualm ente
em um único lugar, m as p en sar nelas com o se fossem um reg istrad o r d eslo cad o r aju d a a
com preender a sua conectividade. Na realidade, quando as células de arm azenam ento estão
encadeadas com o em um registrador deslocador, elas são referidas tipicam ente com o sendo
um a scan chain*. O FPG A terá um pino extra para a entrada da program ação, servindo com o
entrada de deslocam ento para o registrador deslocador. Um outro pino extra de entrada serve
para indicar que um a program ação está ocorrendo. D urante a program ação, nós deslocam os
para dentro os bits necessários para im plem entar o circuito desejado por nós. L em bre-se de
que as células das m em órias de configuração são escritas so m en te durante a program ação
do FPG A - durante a operação norm al do FPG A , as células dessa m em ória de configuração
tornam -se apenas de leitura. A ssim , pode-se co n ceb er FPG A s cujas m em órias de co n fig u ­
ração são construídas usando-se a tecnologia das m em órias program áveis do tipo som ente
leitura (PR O M , EPR O M , ou E E PR O M ), em bora atualm ente, na m aioria das m em órias de
configuração, os com ponentes RAM e flip-fiops sejam usados pelos FPG A s. Provavelm ente
as R A M s e os flip-fiops são usados porque esses com ponentes (FPG A s) precisam ser progra­
m ados rapidam ente por m eio do m étodo scan chain , o que é conseguido facilm ente usando-
se os com ponentes RAM e fiip-fiop, m as não tão facilm ente se forem usados os com ponentes
EPR O M ou EEPRO M .
F erram entas autom atizadas que fazem a program ação de FPG A s com eçam usual m ente
com um arquivo que contém os bits que deverão ser deslocados para dentro das células en ­
cadeadas de arm azenam ento do FPG A - esse arquivo é conhecido com o arquivo de bits. A
ferram enta que cria o arquivo de bits deve obviam ente conhecer o núm ero e as finalidades de
todas as células de bits da scan chain do FPG A . A ssim , essas ferram entas irão g erar arquivo
de bits diferentes para dispositivos FPG A s diferentes.

► EXEMPLO 7.12 Programação de um FPGA


Esse exemplo demonstra a programação de um FPGA usando o FPGA e o circuito desejado mos­
trado no Exemplo 7 .11. A Fig. 7.27 do Exemplo 7 .11 mostra os conteúdos necessários à memória
de configuração do FPGA para que o circuito desejado seja implementado. Repetimos os con­
teúdos na Fig. 7.29(a), desta vez ilustrando o modo pelo qual o FPGA tem os bits da memória de
configuração encadeados formando uma scan chain. A Fig. 7.29(b) mostra como essa scan chain
forma conceitualmente um registrador deslocador de 40 bits. A Fig. 7.29(c) mostra os conteúdos

* N. de T: Literalmenie. corrente ou cadeia de varredura.


418 Sistemas Digitais

de um arquivo de bits que poderia ser usado para program ar o FPGA, implementando o circuito
desejado. Criamos o arquivo de bits simplesmente seguindo a linha tracejada que representa a scan
chain, colocando ls c Os no arquivo de bits como os vemos na figura. A

(c) Conteúdos do arquivo de bits para o circuito desejado:'

Figura 7.29 Programação de um FPGA: (a) todas as células dos bits de configuração existem
encadeadas formando uma scan chain, (b) conceitualmente, uma scan chain é um grande regis­
trador deslocador e (c) os conteúdos de um arquivo de bits é deslocado para dentro durante a pro­
gramação - algumas relações entre os bits do arquivo e as células dos bits de configuração estão
mostradas.

Quantas portas são implementadas por um FPGA?


Pensam os usualm cnte no tam anho de um circu ito digital usando a noção de “portas” para
representar o tam anho do projeto. Um projeto com 3000 portas é provavelm ente m aior do que
um projeto com 2000 portas. N atural m ente, se essa afirm ação é verdadeira dependerá dos ti­
pos de portas usadas em cada projeto (por exem plo, com o as portas X O R s são m aiores do que
as portas N A N D , um circuito de 2000 portas X O R s pode na realidade ser m aior do que um
de 3000 portas N A N D ), assim com o do núm ero de entradas de cada porta (um a porta de 20
entradas é m aior do que um a porta de duas entradas). A ssim , um m étodo com um para indicar
o tam anho do projeto de um circuito é fazendo um a estimativa do número de portas NAND
de duas entradas que seriam necessárias para im plem entar o circuito. D esse m odo, quando
dizem os que um circuito consiste em 3000 portas ou 2000 portas, estam os entendem os que
se esses circuitos fossem im plem entados usando portas N A N D de duas entradas, eles iriam
requerer 3000 portas N A N D de duas entradas ou 2000 portas N AN D de duas entradas, res­
pectivam ente.
Implementação Física 419

O s FPG A s tem tabelas lookup e m atrizes de chaveam ento em seu interior, não portas.
Portanto, os tam anhos dos FPG A s são indicados tipicam ente co nsiderando com que tam a­
nho um circuito constituído por portas N A N D de d u as en trad as poderia ser im plem entado
usando a arquitetura de um FPG A . O s vendedores de FPG A s inform am os tam anhos dizendo
que um dado FPG A tem um a “densidade de 100.000 portas de sistem a” ou “ 100.000 portas
típicas” . E sses núm eros são estimativas e m uitas pessoas vêem de form a m uito cética esses
núm eros que são inform ados (porque algum as vezes as com panhias gostam de exagerar). Os
vendedores de FPG A s podem tam bém indicar o tam anho dos FPG A s em term os de núm ero
de “blocos lógicos” ou “tabelas lookup'', o que é útil quando são com parados os tam anhos de
FPG A s que têm os m esm os tipos de blocos lógicos ou tabelas lookup.

FPGA versus ASICs e microprocessadores


O s FPG A s são m enos eficientes do que os A SIC s em term os de atraso, tam anho e consum o.
Por exem plo, o circuito da Fig. 7.22(a) poderia ser im plem entado com um atraso de apenas
um a porta em um IC de tecnologia custom izada ou sem icustom izada. No entanto, quando
m apeado para o FPG A da Fig. 7.26, esse circuito lerá um atraso m aio r-as entradas deverão
passar através da tabela lookup do C LB esquerdo (a qual pode ter um atraso de duas portas),
em seguida através dos m ultiplexadores de saída do CLB esquerdo (m ais um atraso de duas
portas), depois através da m atriz de chaveam ento (m ais outro atraso de duas portas), em se­
guida através da tabela lookup do C LB direito (m ais um atraso de duas portas) e IIn alm ente
através dos m ultiplexadores de saída do CLB direito, resultando em um atraso total de dez
portas. Em term os de tam anho, um a im plem entação com A SIC do circuito da Fig. 7.22(a) iria
requerer cerca de 20 transistores, ao passo que a im plem entação com FPG A usando C L B s e
um a m atriz de chaveam ento iria requerer diversas centenas de transistores.
A ssim , um a im plem entação em FPG A de um circuito será m ais lenta e m aior do que um a
em A SIC do m esm o circuito. A lguns estu d o s m ostraram que os FPG A s são ap ro x im ad a­
m ente 10 vezes m ais lentos, e de 10 a 30 vezes m aiores, do que as im plem entações com ASIC
do m esm o circuito. De m odo sim ilar, um circuito im plem entado em um FPG A pode co n su ­
m ir cerca de 10 vezes m ais energia do que quando im plem entado em um A SIC. N o entanto,
a vantagem de se poder program ar os FPG A s im edialam ente e a cu sto quase nulo, ao invés
de ter de esperar sem anas ou m eses, enquanto são gastos dezenas de m ilhares de dólares,
freqüentem ente supera essas desvantagens.
A p esar da sobrecarga (overhead) em term os de desem penho, tam anho e co n su m o em
com paração com os A SIC s, em m uitas tarefas os FPG A s são m esm o assim m uito m ais rá­
pidos do que um softw are em um m icroprocessador, em parte porque os FPG A s podem e fe ­
tivam ente im plem entar operações em pipelining , em nível de bit e concorrentes. A ssim , os
FPG A s possuem a flexibilidade de program ação de um softw are em um m icroprocessador e
por outro lado estão próxim os do desem penho de um A SIC , o que representa um a excelente
opção de im plem entação por m uitas razões.

► 7.4 OUTRAS TECNOLOGIAS


N esta seção, descreverem os outras tecnologias para im plem entar fisicam ente os circuitos d i­
gitais. A lgum as dessas tecnologias são antigas, m as ainda são úteis em situações particulares.
O utras são tecnologias m ais novas que estão com eçando a ganhar popularidade.

ICs standard de lógica combinacional (SSI)


A lgum as vezes, sim plesm ente necessitam os im plem entar um circuito que tem apenas umas
poucas portas. N esses casos, o uso de um FPG A pode ser um exagero, já que os FP G A s ti­
picam ente contêm m ilhares ou m ilhões de portas. De m odo sem elhante, o uso de um ASIC
tam bém seria um exagero. N os casos em que precisam os de apenas um as poucas portas, po-
420 Sistemas Digitais

derem os em seu lugar usar um ou m ais ICs standard*. Um VCC


114 113 112 111 110 19 18
IC de lógica combinacional contém um as poucas, talvez
dez ou m enos, portas co nectadas diretam en te aos pinos
do IC, com o m ostrado na Fig. 7.30. O IC m ostrado tem
quatro portas A N D e 14 pinos. Um pino é para a alim enta­
ção elétrica d o IC (conhecido com o VCC) e um outro é o
de terra (GND de ground). O s dem ais pinos conectam -se
às quatro portas A N D do IC, com o m ostrado na figura.
D iferentes IC s de lógica com binacional contêm tipos de
portas q ue são d iferen tes da A N D , co m o O R . N A N D ,
N O R ou NOT. Para construir um pequeno circuito a partir
desses ICs standard , sim plesm ente colocam os os ICs em
um a placa de m ontagem e interligam os os pinos apropria­
dos. ICs que contêm apenas um as poucas portas são c o ­
nhecidos com o chips com integração em pequena escala Figura 7.30 Exem plo de IC de
(Stnall Scale Integration), ou chips SSI. lógica combinacional.

ICs 7400
O s ICS SSI standard m ais populares são
conh ecid o s g en ericam en te co m o ICs da
série 7400. Um IC 7400 contém tip ica­
m ente quatro a seis portas lógicas e cerca
de 14 pinos. Um IC 7400 em p articu lar
está m o strad o na Fig. 7.31. O IC m ede Figura 7.31 IC da série 7400.
transversal m ente cerca de m eia polegada.
TABELA 7.1 ICs comumente usados da série 7400
O e n cap su lam en to d o IC m o strad o tem
duas filas, ou linhas, de pinos e é assim c o ­ Parte Descrição Pinos
nhecido com o dual-inlinepackage (encap­
74LS00 Quatro NANDs de 2 entradas 14
sulam ento de fila ou linha dupla) ou DIP.
O s ICs da série 7400 tornaram -se ini­ 74LS02 Quatro NORs de 2 entradas 14
cialm ente disponíveis no co m eço da d é­ 74LS04 Seis inversores 14
cada de 1960. O chip 7400 original tinha
q u atro po rtas N A N D e cu stav a cerca de 74LS08 Quatro ANDs de 2 entradas 14
1000 dólares cada em 1962. É isso m esm o 74LS10 Três NANDs de 3 entradas 14
- 1000 dólares. Isso era em dólares da d é­
74LS11 Três ANDs de 3 entradas 14
cada de 1960, quando um engenheiro am e­
ricano g anhava cerca de 10.000 d ólares 74LS14 Seis inversores (Schmitt trigger) 14
por ano. O custo caiu significativam ente 74LS20 Duas NANDs de 4 entradas 14
durante aq u ela década, graças em grande
parte à utilização de enorm es quantidades 74LS27 Três NORs de 3 entradas 14

desses dispositivos pelo m íssil am ericano 74LS30 Uma NAND de 8 entradas 14


M inutem an e pelos p ro g ram as esp aciais
74LS32 Quatro ORs de 2 entradas 14
envolvendo o foguete A pollo, e continuou
a c a ir desde en tão devido a tran sisto res 74LS74 Dois flip-flops D, disparado pela 14
m ais b aratos e en o rm es volum es. H oje, borda positiva, com preset e reset
você pode com prar IC s da série 7400 por 74LS83 somador completo binário de 4 bits 16
apenas dezenas de centavos de dólar cada.
74LS85 comparador de magnitude de 4 bits 16
Partes com portas diferentes têm núm e­
ros diferentes. A Tabela 7.1 m ostra algum as Fonte: www.digikey.com

* N. dc T: Os assim chamados componentes standard, ou de prateleira, são produzidos em grandes quantidades e estão disponí­
veis para entrega imediata em lojas especializadas e distribuidores de componentes eletrônicos.
Implementação Física 421

partes com um ente usadas da série 7400, pertencentes à subfam ília 74LS00 da série 7400 da Fair-
child. A lém das portas básicas, a tabela mostra um IC com flip-flops D, um som ador completo e
um com parador de magnitude. Partes tam bém existem para XORs, X NORs, buffers, decodifica-
dores, multiplexadores, contadores incrementadores, contadores decrem entadores e mais.
Na série 7400, há várias e diferentes subfam ílias de partes - partes de um a subfam ília
podem ser usadas com outras partes da m esm a subfam ília, m as em geral não podem ser
usadas com partes de outras subfam ílias. A razão é que o conjunto de tensões e correntes de
um a subfam ília é projetado de tal m odo que os ICs podem ser ligados sem precisarm os nos
preocupar sobre ajustes de tensão c corren te entre os ICs. A série 74 (por exem plo, 7400,
7402, etc) é a subfam ília básica, fundam entando-se em um tipo de transistor conhecido com o
T T L - os projetistas que usam ICs de lógica com binacional utilizam ICs da série 74 apenas
quando devem fazer integrações com projetos antigos e geral m ente não usam a série em
novos projetos. A subfam ília 74LS (por exem plo, 74LS00, 74L S02) usa um tipo especial de
tecnologia TTL conhecido com o Schottky, que resulta em consum o m ais baixo e um a veloci­
dade ligeiram ente m aior do que na série 74 - o tkL” no nom e significa baixo (Low) consum o
c o “S” significa Schottky. A subfam ília 74HC usa transistores C M O S (indicado pelo “C ” ) de
alta velocidade (indicado pelo “H ” de High). A subfam ília 74F foi introduzido pela Fairchild,
consistindo em lógica T T L Schottky, avançada e rápida (daí o “F ’\ de fast). E xistem num ero­
sas outras subfam ílias 7400, com novas subfam ílias ainda sendo introduzidas.
A lém disso, séries adicionais de ICs SSI standard tam bém existem em acréscim o à série
7400. O utra série popular é a série 4000 de ICs. É um a série C M O S q u e evoluiu na década
de 1970 com o alternativa de baixo consum o à série 7400 baseada em TTL. Existem tam bém
outras séries.

► EXEMPLO 7.13 Implementação de alerta para cinto de segurança usando ICs standard 7400
Usando ICs da série 74LS, mostrados na Tabela 7.1, implemente fisicamente o circuito de luz de
alerta para cinto de segurança da Fig. 7.1, mostrado novamente na Fig. 7.32(a). Poderemos imple­
mentar o inversor usando um 74LS04. O 74LS08 tem portas AND de duas entradas e precisamos
dc uma porta AND de trés entradas. Uma solução simples é decompor a porta AND de trés entra­
das em duas portas AND de duas entradas, como mostrado na Fig. 7.32(b). A implementação final
está mostrada na Fig. 7.32(c).

Figura 7.32 Im p lem en ­


tação do circuito de alerta
para cinto de segurança,
usando ICs da série 74LS:
(a) circuito desejado, (b)
circuito transform ado que
usa portas AND de duas
entradas e (c) circuito m a­
peado em dois ICs 74LS.
C onexões adicionais que
não estão m ostradas são
alim entação para o pino
114 e terra para o pino 17 de (b)
cada IC.
422 Sistemas Digitais

De preferência, implem entaríamos o circuito usando apenas um IC, permitindo reduzir o ta­
manho de placa, o custo e o consumo. A conversão do circuito para que use apenas um tipo de
porta, como somente portas NAND ou NOR, pode resultar em um único IC. Por exemplo, se
pudéssemos convertê-lo para portas NOR de ires entradas, poderíamos usar o chip 74LS27. C o­
meçamos convertendo o circuito para somente portas NOR, como na Fig. 7.33(a). Removemos as
inversões duplas e substituímos a inversão simples por portas NOR de três entradas. A implemen­
tação usando um IC 74LS27 está mostrada na Fig. 7.33(c).

Figura 7.33 Im p lem en ­


tação do circuito de alerta
para cinto de segurança com
um IC 74LS, o 74LS27. que
consiste em três portas NOR
de três entradas: (a) o cir­
cuito desejado que foi trans­
formado para portas NOR
com bolhas de inversão, (b)
circuito com as inversões du­
plas eliminadas e as simples
substituídas por portas NOR
de uma entrada e (c) cir­
cuito mapeado em um chip
75LS27. Conexões adicio­
nais que não estão mostradas (c)
são a alimentação para o pino
114 e terra para o pino 17.

Dispositivo lógico programável simples (SPLD)


Um dispositivo lógico programável , ou PLD (Programmable Logic Device ), é um IC que
pode ser configurado para im plem entar um a variedade de funções lógicas, com dezenas a m i­
lhares de portas. O s PLD s tornaram -se populares na década de 1970 (antecipando os FPG A s)
já que podiam im plem entar bem m ais funcionalidade em um único IC do que seria possível
usando ICs SSL
Um dispositivo PLD contém um circuito pré-fabricado com um conjunto de entradas ex­
ternas que alim entam um a grande estrutura A N D -O R . A presenta a característica especial de
que o usuário pode configurar (via “pro g ram ação '0 quais entradas externas são conectadas às
portas AND. Por exem plo, a Fig. 7.34 m ostra um PLD básico com três entradas que alim en­
tam três portas A N D seguidas de um a porta OR. As entradas alim entam as portas A N D nas
form as com plem entada e não com plem entada. C ada fio que alim enta cada porta A N D passa
por um nó. E sse nó pode ser program ado para perm itir que o valor presente na sua entrada
passe até a sua saída, ou para desconectar a entrada do nó de sua saída. A ssim , program ando
os nós, poderem os program ar o PLD para im plem entar qualquer função de três term os das
três entradas.
A estrutura de um nó program ável varia entre os diversos tipos de PLDs. A Fig. 7.35 m os­
tra dois tipos. O tipo m ostrado na Fig. 7.35(a) baseia-se em um fusível. Um fusível conduz
com o um fio, a m enos que nós o “queim em os” , significando que um a corrente m aior do que
o norm al será passada através dele, literalm ente fazendo o fusível ser queim ado e rom per-se.
O bviam ente, um fusível queim ado não conduz a eletricidade. O tipo m ostrado na Fig. 7.35(b)
baseia-se em um a m em ória e um transistor-program am os um 1 na m em ória para fazer o tran­
sistor conduzir, ou um 0, para não conduzir. O m itim os os detalhes de com o program ar os
fusíveis ou as próprias m em órias. O s PL D s baseados em m em ória usualm ente podem ser rc-
Implementação Física 423

11 12 13

Figura 7.34 Um exemplo básico de um dispo­


sitivo lógico programável. (As portas AND são
vWrc<7-ANDs.)

nó programável

Figura 7.35 Dois tipos de nós programá­


veis: (a) baseado em fusível e (b) baseado
em memória.

program ados, diferentem ente dos PLD s baseados em fusíveis, os quais podem ser program a­
dos um a única vez, sendo conhecidos com o dispositivos programáveis uma vez (OTP> one-
timeprogrammable). Os PLD s baseados em fusíveis são populares nas aplicações eletrica­
m ente ruidosas, com o nas aplicações espaciais, porque as m em órias podem ter os seus co n ­
teúdos alterados por causa da radiação presente no espaço. São tam bém m uitos populares em
aplicações q ue dem andam alta segurança, porque os indivíduos m al-intencionados não p o ­
dem repro gram ar o dispositivo. No entanto, dispositivos baseados em m em órias são m ais
com uns, já que eles podem ser reprogram ados e desse m odo podem reduzir custos quando
fazem os alterações nos projetos. A s m em órias usadas são quase sem pre não voláteis, signifi­
cando que elas não precisam de energia para conservar os bits arm azenados. (Veja a Seção
5.6 para m ais inform ações sobre m em órias não voláteis.)
Você pode estar se perguntando com o essas portas A N D funcionam q u an d o o nó p ro ­
gram ável está program ado para desconeetar um a entrada - com o a porta A N D tratará uma
entrada desconectada? C om o 0, ou 1, ou com o algum a coisa m ais? Na realidade, os PLDs
não usam portas A N D norm ais. A o invés, usam tipicam ente o que é conhecido com o porta
wired-A N D . A ex p licação de com o um a wired-
12 13
A N D * funciona está além do escopo deste livro,
sendo tem a de disciplinas sobre circuitos em nível
de transistor. Para os nossos propósitos, p o d ere­
mos pensar em um a porta wired-AND com o sendo
um a porta A N D que sim plesm ente ignora as entra­
das desconectadas.
O s PL D s reais têm m ais do que sim plesm ente
três entradas, três portas A N D e um a saída. D esse
m odo, os desenhos das estruturas dos PLD s preci­
sam de um m odo m ais conciso de serem desenha­
dos em circuitos. Um desses m étodos está m o s­
trado na Fig. 7.36. Esse desenho não m ostra os nós Figura 7.36 D esenho sim plificado de
program áveis e sim plesm ente utiliza um “x ” para um PLD.

* N. de T: De fio (wire. em inglês), usado para fazer conexões, obiendo-se a porta AND simplesmente pela fiação elétrica .
424 Sistemas Digitais

indicar um a conexão. N o desenho, os fios que se cruzam não estão conectados, a m enos que
exista um “x ” no cruzam ento. A lem disso, esse desenho usa um único fio para rep resen ­
tar todas as entradas da porta A N D , represen tad o um a wired-A N D . A figura m ostra com o
usaríam os esse desenho para indicar as conexões necessárias para g erar o term o 1 3 * 1 2 '. O
“x” à esquerda representa o 12' que alim enta a porta A N D superior. O “x” à direita indica o
13 que alim enta a m esm a porta.

► EXEMPLO 7.14 Luz de alerta para cinto de segurança usando um PLD simples
Estam os prestes a im plem entar o sistem a de luz de k p s
alerta para cinto de segurança da Fig. 7.1, usando o
PLD da Fig. 7.36. Podemos fazer isso programando-o
como mostrado na Fig. 7.37. Geram os o termo k p s'
desejado, program ando as conexões da porta AND
de cima, com o está mostrado. Querem os que os dois
ANDs de baixo gerem saídas Os, de modo que a saída
da porta OR seja igual à saída da porta AND de cima.
Podemos obter Os fazendo uma operação AND de uma
entrada e seu complemento - o resultado de a * a 1 sem ­
pre será 0. A figura mostra dois modos de se obter Os,
com a porta do meio usando apenas uma das entradas
e a porta de baixo usando todas as três entradas - o Figura 7.37 Sistema de alerta para cinto
resultado é o mesmo. ◄ de segurança em um PLD simples.

T ipicam ente, os PLD s tem m ais do que apenas um a saída. A Fig. 7.38(a) m ostra um PLD
com duas saídas ao invés de apenas um a. C ada saída 6 um a O R dc ate três term os.
M uitos PL D s têm um fiip-fiop D para arm azenar cada bit de saída. O pino de saíd a do
PLD pode ser program ado para ser conectado à saída da porta O R ou à do fiip-fiop, sendo co­
nhecidas com o saídas com binacional c dc registrador, rcspcctivam enlc. Um PLD que perm ite
saídas com binacionais ou de registrador está m ostrado na Fig. 7.38(b).

11 I2 13 11 I2 I3

Figura 7.38 (a) PLD com duas saídas e (b) PLD com saídas programáveis de registrador.

U m a outra extensão é perm itir que a saída do PLD seja o valor afirm ado ou com plem en­
tado da saída da porta OR, ou do fiip-fiop, usando um m ultiplexador 2x l que é controlado por
um bit program ável. A inda um a outra extensão é fazer a saída alim entar de volta à m atriz de
entrada. Um uso dessa realim entação é na im plem entação de funções com m ais term os. Isso é
conseguido enviando o valor da saída com binacional de volta à entrada. O utro uso com um da
Implementação Física 425

realim entação, q ue se consegue enviando o valor da saída com registrador de volta à entrada,
é a im plem entação de um registrador de estado e de um a lógica de controle (isto é, um bloco
de controle) - a m atriz de A N D s recebe suas entradas das saídas com registrador e de en tra­
das externas e as portas O R geram então as saídas externas e os valores de próxim o estado do
registrador de estado.
A lguns PL D s têm não só um a m atriz program ável de A N D s com o tam bém um a m atriz
program ável de ORs. Isso significa que a porta O R pode receber as suas entradas de qualquer
um a das portas AND.

SPLD versus PAL versus GAL versus PLA


C om o tantos outros nom es do cam po rapidam ente crescen te d a alta tecnologia, os nom es
de PLD s são um tanto vagos e confusos. O riginalm ente (década de 1970), os PL D s co n sis­
tiam em arranjos (m atrizes) program áveis de portas A N D e arranjos program áveis de portas
O R, sendo conhecidos com o arranjos lógicos programáveis (Programmable Logic Arrays),
ou PLAs . Em m eados da década de 1970, um a co m p an h ia cham ada A M D (A pplied M icro
D evices, Inc.) desenvolveu PL D s que, ao invés, tinham portas O R com entradas fixas e não
program áveis, com o na Fig. 7.38 e outras figuras de PL D s que m ostram os antes, d en o m i­
nando esses dispositivos de lógica programável com arranjo (.Programmable Array Logic),
ou PALs (“PAL” é um a m arca registrada da A M D ). A s PALs baseavam -se originalm ente em
fusíveis e portanto eram program áveis som ente um a vez. U m a com panhia cham ada Lattice
S em icondutor C orporation desenvolveu um PLD que usava um a abordagem de program ação
baseada em m em ória, no lugar de fusíveis, resultando em reprogram abilidade, e denom inou
esses dispositivos de lógica genérica com arranjos (Generic Array Logic) ou GAL (que são
V

m arcas registradas da L attice Sem iconductor C orporation). A m edida que os PLD s tornaram -
se m ais com plexos (com o discutirem os na próxim a seção), os PLD s baseados em arquitetu­
ras PAL ou G A L (arquiteturas PLA parecem ser bem raras) tornaram -se conhecidos com o
Simple PLDs , ou SPLDs , para diferenciá-los das variedades m ais com plexas de PLDs. Hoje,
num erosas com panhias fabricam SPL D s e freqüentem ente afirm am que a sua arq u itetu ra
SPLD é baseada nas arquiteturas “ PAL” ou “ PA L/G A L” , sendo que a distinção en tre PAL e
G A L não é aparentem ente relevante nesse contexto.
T ipicam ente, os SPL D s contêm dezenas ou centenas de portas lógicas.

Dispositivo lógico programável complexo (CPLD)


À m edida que as densidades de transistores aum entavam nos ICs, as com panhias com eçaram a
construir PLD s que perm itiam m ilhares de portas. Entretanto, a arquitetura de PLD descrita na
seção anterior não se presta bem para ser expandida até m ilhares de portas - quem precisa de
um enorm e circuito com lógica de dois níveis? Em lugar disso, arquiteturas evoluíram passando
a consistir em num erosos SPLD s em um único dispositivo, interligados por m atrizes de chavea-
m ento (também conhecidas com o interconexões program áveis) - veja a Seção 7.3 para detalhes
sobre m atrizes de chaveam ento. Esses dispositivos são conhecidos hoje com o Complex PLDs ,
ou CPLDs. Tipicam ente, os C PLD s podem im plem entar projetos com m ilhares de portas.

SPLDs versus CPLDs versus FPGAs


Q ual é a d iferença entre SPL D s, C PL D s e FPG A s? Em geral, o term o SPL D é usado para
dispositivos que contêm de dezenas a centenas de portas, C PL D para dispositivos que co n sis­
tem em m ilhares de portas e FPG A s para dispositivos que suportam de dezenas de m ilhares
a m ilhões de portas.
A lém disso, atualm ente, os SPL D s e os C P L D s são quase sem pre não voláteis, sig n ifi­
cando que eles podem m anter arm azenados seus program as m esm o depois que a alim entação
elétrica é rem ovida, ao passo que um FPG A é quase sem pre volátil, significando que perde o
seu program a quando a alim entação elétrica é rem ovida - e portanto deve ter circuitos exter­
nos que arm azenam o program a em m em ória não volátil e que program am o FPG A a partir
426 Sistemas Digitais

dessa m em ória quando o FPG A é energizado. Provavelm ente, os FPG A s de hoje em dia são
voláteis por causa do m odo que é usado para program á-los. E sse m étodo usa um a scan chain
e é de fácil execução quando são usados flip-flops e células de R A M , m as que se torna de
difícil execução quando são usados bits de m em ória não volátil. E ntretanto, conceituai m ente,
q ualquer dispositivo SPL D , C P L D ou FPG A pode ser construído para ser ou não volátil.
Pode-se antecipar que os futuros FPG A s irão incluir FP G A s não voláteis.

Novas migrações de FPGA para ASIC


Um nova e interessante tecnologia que evoluiu no início da década de 2000 é um a que cria
um A SIC a partir de um projeto baseado em FPG A . M uitos projetistas usam FPG A s para a
construção de protótipos A SIC . Eles usam ferram entas autom atizadas para im plem entar seus
circuitos em FPG A s e, em seguida, fazem extensos lestes com o circuito no am biente onde
ele será instalado, por exem plo, em um protótipo de tocador de DVD. A im plem entação do
protótipo baseada em FPG A poderá ser de m aior porte, m ais cara e m ais ávida de energia do
que um a im plem entação baseada em A SIC , m as pode ser m uito útil para se detectar e corrigir
erros no circuito, assim com o para dem onstrar o produto final. Um a vez satisfeitos com o cir­
cuito, os projetistas podem então usar ferram entas autom atizadas para reim plantar o circuito
em um A SIC . T radicionalm ente, um a im plem entação A SIC não usa nenhum a inform ação a
respeito da im plem entação FPGA.
A im plem entação de circuitos de grande porte em A SICs é um a tarefa difícil, m esm o com
ferram entas autom atizadas. O s custos não recorrentes de engenharia podem ultrapassar centenas
de m ilhares ou m esm o milhões de dólares e a fabricação do IC pode levar sem anas ou meses.
Além disso, qualquer problem a com o ASIC fabricado pode requerer um segundo ciclo de fa­
bricação, necessitando de sem anas ou m eses adicionais. No ASIC, podem surgir problem as que
não apareceram no FPGA, por se tratar de um a im plem entação totalm ente nova do circuito-tal-
vez possam surgir problem as de tempo, por exemplo, porque os com ponentes do circuito foram
colocados e roteados de um modo com pletam ente diferente do que fora o caso no FPGA.
Para facilitar a m igração de um circuito de FPG A para ASIC, alguns vendedores de tecno­
logia FPG A oferecem uma abordagem A SIC estruturada. Em uma abordagem de ASIC estru­
turado . uma ferram enta autom atizada converte a implementação FPGA cm uma ASIC, o que é
diferente de se converter o circuito original em uma im plem entação ASIC. Em outras palavras,
um ASIC estruturado irá refletir as estruturas da tabela lookup e da m atriz de chaveam ento do
FPG A original. Entretanto, o A SIC estruturado não será program ável e, portanto, terá tabelas
lookup e m atrizes de chaveam ento mais rápidas, porque seus conteúdos estarão “ hardwired”*
no ASIC. As células do ASIC estruturado podem ser colocadas antecipadam ente, ficando apenas
as conexões por com pletar para que um circuito particular seja im plem entado. O resultado é um
custo N RE m enor (dezenas de m ilhares de dólares ao invés de centenas de milhares ou milhões)
e m enor tem po até o silício (sem anas ao invés de meses), assim com o m enor probabilidade de
problem as im previstos. A desvantagem é que o ASIC será maior, m ais lento e m ais ávido de
energia do que um ASIC tradicional, mas m esmo assim ainda m elhor do que um FPGA.

SOCs
O surgim ento de IC s com um bilhão de transistores levou a ICs, que continham o que co s­
tum ava existir distribuído cm m últiplos ICs. A ssim , um único IC pode conter dúzias ou cen ­
tenas de m icroprocessadores, circu ito s digitais custom izados, m em órias, barram entos, etc.
Um IC com num erosos processadores, circuitos custom izados e m em órias é conhecido com o
sistema em um chip (System-on-a-Chip , ou SoC).

* N . d e T: T e rm o q u e se re fe re a e le m e n to s q u e n ã o p o d e m se r a lte ra d o s, d e sc re v e n d o fu n c io n a lid a d e s q u e e s tã o c o n stru íd a s


d e n tr o d o s p r ó p r i o s c ir c u ito s ( is to é , n o s fio s, wires) d e u m d isp o sitiv o .
Implementação Física 427

A o passo que m uitos SoC s são criados por projetistas para um a dada aplicação (por exem ­
plo, para um tocador de D VD em particular), outros SoC s são criados para serem usados em
um a variedade de aplicações diferentes. Tais plataformas SoCs podem conter processadores
e circu ito s custom izados especificam ente para um a área de aplicação. Por exem plo, um a
plataform a SO C para processam ento de vídeo pode co n ter circuitos digitais custom izados,
com hardw are otim izado para com pressão e decom pressão (conhecido com o codecs) de alta
velocidade e baixo c o n su m o - freqüentem ente tais plataform as contêm codecs para uma larga
variedade de protocolos (por exem plo, M PEG 2, M PEG 4, H .264, etc.), já que a plataform a
poderá ser usada em produtos diversos que suportam padrões diferentes. Um exem plo é a pla­
taform a N experia da Philips. A lém disso, algum as plataform as SoC s contêm FPG A s no TC,
além de um ou m ais m icroprocessadores e circuitos digitais custom izados. E xem plos incluem
a plataform a Virtex II Pro da X ilinx e a plataform a E xcalibur da A ltera. O s projetistas pode­
rão utilizar um a plataform a SoC para fazer um protótipo em um A SIC , ou para fisicam ente
im plem entar um sistem a em um produto final.

► 7.5 COMPARAÇÕES ENTRE TECNOLOGIAS DE ICS


Popularidade relativa das tecnologias de ICs
D escrevem os num erosas tecnologias neste capítulo. TABELA 7.2 P e rce n tu a l de a m ostra s
N esta seção, irem os lhe dar um a idéia da populari­ de novas im p le m e n ta çõ e s em v á ria s
dade relativa de algum as dessas tecnologias. A Ta­ te c n o lo g ia s . 0 to ta l é s u p e rio r a 100%
bela 7.2 fornece a porcentagem relativa de projetos devid o à s o b re p o s içã o e n tre c a te g o ria s
que foram im p lem en tad o s fisicam ente em várias
tecnologias em 2001, com base em um estudo par­ Tecnologia %
ticular. A tabela considera cad a novo projeto um a Células padrão 55%
única vez, significando que não im porta q u an tas
Gate array 5%
cópias do m esm o projeto foram fabricadas. E ssa ta­
bela não inclui ICs SSI ou SPL D s standard (am bos Sistema em um chip 30%
representam apenas um a pequena fração do m er­ Customização total 10%
cado de ICs desde uma perspectiva de dólares totais
e, assim , freqüentem ente são excluídos de tais le­ CPLD/FPGA 10%
vantam entos). Um estu d o diferente descreve as re­ Outras 5%
ceitas de ICs em 2002 (diferentem ente de projetos
Fonte: Synopsys, DAC 2002, painel
únicos) totalizando 11 bilhões de dólares com o se­
gue: célula padrão 54 %, custom ização total 20 %,
g a te a r r a y 10 %, PLD /FPG A 17 % e
Som ente em 2002, f o ­ outras 5 % (fonte: W STS, IC Insights). Um outro estudo lista ainda receitas de
ram p ro d u zid o s cerca A S IC s em 2002 de 10,9 bilhões de dólares, receitas de P L D s/FPG A s de 2,5
de 8 0 b ilh õ e s de I C s de bilhões de dólares e receitas de SoC s de 7,6 bilhões de dólares (fonte: B usiness
todos os tipos. (Fonte: C om m unications C om pany, 2003). O s núm eros de diferentes estudos variam ;
I C In sig h ts M cC le a n
fornecem os esses núm eros apenas para lhe dar um sentim ento geral d a popula­
Report, 2003.)
ridade das várias tecnologias.
A lg u m as ten d ên cias g erais p arecem se r a c re sc e n te p o p u larid ad e d o s F P G A s, o c re s­
cen te uso de ab o rd ag en s de A S IC estru tu ra d o s e o crescen te su rg im e n to d e sistem a s em
um c h ip .
A s ferram entas usadas para m apear os projetos digitais em im p lem entações físicas, co ­
letivam ente conhecidas co m o ferram entas de Electronic Design Automation, ou ED A , for­
m am elas próprias um m ercado com receitas de 3 bilhões de dólares em 2002, 3,6 bilhões
de dólares em 2003 e receitas previstas de 6 b ilh õ es de d ó lares cm 2006 (fonte: G artn er
D ataquest, 2004).
428 Sistemas Digitais

Tradeoffs entre as tecnologias de ICs


A Fig. 7.39 ilustra os tradeoffs gerais entre as tecnologias chaves de ICs descritas neste cap í­
tulo. A s tecnologias m ais à direita podem ter os circuitos particulares desejados m ais cu sto ­
m izados e, assim , podem ter desem penho m ais rápido, densidade m ais elevada (chips m eno­
res para um dado circuito), m enos consum o e m aior capacidade nos chips (m ais circuitos em
um único chip). E ntretanto, essas tecnologias custom izadas terão m aior custo e levarão mais
tem po para serem projetadas. A s tecnologias m ais à esquerda têm os circuitos particulares
desejados m enos custom izados e, assim , poderão estar disponíveis m ais rapidam ente e ter
m enores custo de projeto, m as às custas de um desem penho inferior, m enor densidade, m enor
consum o e m enor capacidade no chip (um núm ero m enor dos nossos circuitos em um chip
sim ples). De form a m ais genérica, as tecnologias em d ireção m ais para a direita perm item
m ais otim ização. As tecnologias m ais para a esquerda perm item m enos otim ização, m as per­
m item um projeto m ais fácil.

• Custom ização total


• Células padrão (sem icustom izado)
s
'CO
Gate array (sem icustom izado)
s
2
FPGA o>
PLD
5
6

D isponibilidade m ais rápida Desem penho m ais rápido


Custo de projeto m enor Densidade m aior
F ig u r a 7 .3 9 T r a d e o ffs C onsum o m enor
entre diversas tecnologias Capacidade de chip m aior
de ICs. P r o je to m a is fá c il M a is o t im iz a d o

A lém disso, os FPG A s e os PLD s não só perm item um projeto m ais fácil, m as tam bém
podem ser reprogram ados, um a característica que perm ite alterar o circuito no final do ciclo
de projeto, ou m esm o após o IC do circuito ter sido utilizado em um produto final.
A escolha de um a tecnologia de IC para um projeto em particular dependerá, portanto, das
restrições im postas a esse projeto. Q uando um projeto deve estar rapidam ente no m ercado,
essa restrição favorece as tecnologias PLD e FPG A . Q uando um projeto deve ser ex trem a­
m ente rápido, essa restrição favorece as tecnologias sem icustom izada ou totalm ente custom i­
zada. Q uando um projeto deve consum ir m uito pouca energia ou ocupar m uito pouco espaço,
essas restrições favorecem as tecnologias sem icustom izada ou totalm ente custom izada. Se
alterações de circuito forem prováveis, então essa restrição favorecerá as tecnologias PLD ou
FPG A . A escolha da m elhor tecnologia é um problem a difícil, exigindo o exam e cuidadoso
de num erosas restrições concorrentes.

Tecnologias de ICs versus tipos de processadores


A s tecnologias de IC e os tipos de processadores são características ortogonais de im ple­
m entação. D uas características serão ortogonais se puderm os esco lh er independentem ente
cada um a delas (em m atem ática, ortogonal significa fo rm ar um ângulo reto). S abem os que
há diversos tipos de processadores que podem im plem entar um a função desejada para o sis­
tem a, incluindo um p rocessador custom izad o e um p ro cessad o r program ável. A Fig. 7.40
ilustra q ue a esco lh a do tipo de p rocessad o r não d ep en d e da escolha d a tecnologia de IC.
O ponto / ilustra um a escolha feita para im plem entar um a funcionalidade desejada para o
sistem a, usando um circuito custom izado de processador, com tecnologia de IC totalm ente
custom izada. Essa escolha resulta em um projeto altam ente otim izado. O ponto 2 ilustra um a
escolha feita para im plem entar um circuito de processador, usando um FPG A . E m bora o cir-
Implementação Física 429

cu ito possa ser otim izado, a tecno­


logia FPG A de IC resulta em um a .Processador
( 2) (D
im p lem en tação m enos o tim izad a custom izado M a is o t im iz a d o

(em com paração à im plem entação


to talm en te cu sto m izad a), m as de
m ais fácil projeto. O ponto 3 ilustra P r o je to m a is fá c il

uma escolha feita para im plem entar


um a funcionalidade desejada para o
Processador
sistem a, usando um softw are que e program ável (4 ) (3 )
executado em um processador pro­
gram ável, im plem entado em células
padrão. O ponto 4 ilustra um a esco­ I I I I
lha feita para im plem entar um soft­ PLD FPGA Gate Células Customização
w are em um processador program á­ array padrão total

vel, im plem entado na realidade em F ig u ra 7.40 As tecnologias de IC e os tipos de proces­


FPG A . E m bora esse conceito possa sadores são características ortogonais de implementação.
p arecer estran h o , um p ro cessad o r Quatro das dez escolhas possíveis estão mostradas.
p ro g ram áv el é sim p lesm en te um
outro circuito, de m odo que aquele circuito pode ser m apeado em um FPG A , com o qualquer
outro circuito. P rocessadores program áveis m apeados em FP G A s estão de fato tornando-se
cada vez m ais populares, porque um projetista pode esco lh er quantos processadores irá co ­
locar em um único IC (talvez o projetista queira nove processadores program áveis em um
IC ) e porque um projetista pode colocar processadores de propósito único, ju n tam en te com
processadores program áveis - tudo isso sem precisar fabricar um novo IC.
N atural m ente, os p ro cessad o res program áveis podem ser co m p rad o s freq ü en tem en te
com o ICs standard , de m odo que um projetista que esteja usando um processador program á­
vel não precisa se preocupar com a tecnologia de IC do processador.
No entanto, cada vez m ais, os projetistas devem colocar um processador program ável den­
tro de seu próprio IC, coexistindo com outros processadores. Q uando um processador progra­
mável coexiste em um IC juntam ente com outros processadores (program áveis ou custom iza­
dos), esse processador program ável é referido frequentem ente com o um core (núcleo).
Até agora, a nossa discussão de tecnologias de IC e tipos de processadores assum iu ape­
nas um tipo de cada item (por exem plo, um tipo de FPG A ). N a realidade, cad a tipo em si
tem m uitas variedades. Por exem plo, dúzias de tipos diferentes de FPG A s estão disponíveis,
variando em seu tam anho, velocidade, consum o, custo, etc. De m odo sem elhante, dúzias de
tipos diferentes de processadores program áveis estão disponíveis, variando tam bém nessas
características. S abem os tam bém que podem os criar diferentes tipos de processadores cu s­
tom izados, variando tam bém em seu tam anho, velocidade, consum o, etc. A ssim , cada ponto
da Fig. 7.39 e da Fig. 7.40 é na realidade um a grande coleção de pontos que se espalham em
diferentes direções nos gráficos, podendo m esm o sobreporem -se a outros tipos. A lém disso,
outras tecnologias de IC, assim com o tipos de processadores, existem e continuam a evoluir.
D estacam os tam bém que um único IC pode na realidade incorporar diversas tecnologias
de IC. A ssim , em um único IC, alguns circuitos podem ser criados usando-se tecnologia to­
talm ente custom izada e outros, usando-se tecnologia A SIC ou FPG A . De m odo sim ilar, um
único processador pode ter partes diferentes im plem entadas em tecnologias de IC diferentes.
Por exem plo, um a situação com um é um p ro cessad o r program ável ter o seu bloco o p era­
cional im plem entado em tecnologia totalm ente custom izada, tendo no entanto o seu bloco
de controle im plem entado em tecnologia A SIC - a razão é que o bloco operacional é m uito
regular, ao passo que o bloco de controle é lógica com binacional desestrulurada na m aioria
das vezes.
Em resum o, os projetistas têm um núm ero enorme de opções ao escolher os tipos de pro­
cessadores e as tecnologias de IC para im plem entar seus sistem as.
430 Sistemas Digitais

Tendência da tecnologia de IC - lei de Moore


Para co m p reen d er as ten d ên cias das
tecn o lo g ias de IC , é n ecessário c o ­
nhecer a lei de M oore. A lei de Moore
afirm a que a capacidade dos ICs dobra
ap ro x im ad am en te a cad a 18 m eses.
A Fig. 7.41 m ostra um gráfico dessa
duplicação, com eçando com cerca de
10 m ilhões de transistores por 1C em
1997. O gráfico usa um a escala loga­
rítm ica no eixo Y - cada m arca rep re­
senta 10 vezes m ais do que a anterior.
A taxa de crescim ento é espantosa - os
ICs crescem de 10 m ilhões em 1997
Figura 7.41 A tendência do aumento de transistores
até m ais de 10 bilhões em 2015. Isso
por IC.
significa que o IC de 2015 poderá alo ­
ja r 1000 vezes m ais transistores do que
o IC de 1997. Em outras palavras, o IC de 2015 será tão potente com o cerca de 1000 ICs de
1997. E ssa tendência crescente de capacidade tam bém resultou na q ueda do
Em um discurso de custo dos transistores, em aproxim adam ente a m esm a taxa espantosa.
2004, um vice-presi­ A tendência de capacidade dos ICs tem m uitas im plicações. Um a delas é que
dente da Intel sugeriu
será possível criar projetos m assivam ente paralelos, usando núm eros enorm es de
que já poderíamos con­
registradores e unidades funcionais, para criar sistem as de alto desem penho que
siderar os transistores
como sendo essencial- não eram práticos anteriorm ente. O núm ero de transistores necessários a esses
mente grátis. projetos poderia ter sido considerado absurdo há apenas um a década. Um a outra
im plicação é que, devido ao tam anho dos FPO A s, a sobrecarga ( overhead ), em
relação aos A SIC s (cerca de lüx), torna-se m enos relevante, tornando os FPG A s um a escolha
cada vez m ais popular em m ais sistem as. Uma outra im plicação é que os projetistas precisam
cada vez m ais de ferram entas autom atizadas para ajudar a construir esses circuitos contendo
m uitos m ilhões de circuitos transistorizados. C ada vez m ais, eles podem desejar usar o nível
RTL e m esm o níveis m ais elevados de projeto (por exem plo, projeto baseado em C) com o
m étodo para descrever os circuitos, deixando o restante do projeto às ferram entas.
Em algum ponto, a lei de M oore deverá chegar a um ponto final, porque os transistores
não podem encolher até um tam anho infinitam ente pequeno. Q uando se dará esse ponto final
tem sido tem a de debate há m uitos anos. A lguns previram que a lei de M oore se adentrará no
século 21 por duas décadas.

► 7.6 PERFIL DE PRODUTO - DISPLAY DE VIDEO GIGANTE


No final da década de 1990 e no início da de 2000, displays gigantes de vídeo a cores torna­
ram -se populares em estádios esportivos, revendas de carros, cassinos, painéis de auto-estra­
das e em outros locais. A m aioria desses displays usa um a enorm e grade de diodos em issores
de luz (LED s), acionados por circuitos digitais.
Um diodo emissor de luz (LED) é um dispositivo sem icondutor que em ite luz quando
uma corrente passa através dele. Em com paração, um a lâm pada “ incandescente" tradicional
em ite luz quando um a corrente passa através do filam ento interno da lâm pada, que é um fio
de alta resistência que se aquece e brilha quando a corrente circula pelo fio -o fio, entretanto,
ele não se queim a porque está contido em vácuo ou gás inerte dentro do bulbo. C om o a luz
dos L E D s origina-se em um m aterial sem icondutor e não em um filam ento aquecido bri­
lhando dentro de um bulbo, os LED s consom em m enos, duram m ais e podem m esm o supor­
tar vibrações que rom periam um a lâm pada com um .
Implementação Física 431

H á m u ito tem po, os L E D s têm sido


u sad o s para e x ib ir os estad o s sim p les
de um dispositivo (por exem plo, ligado
ou d eslig ad o ), m en sag en s de texto, ou
m esm o gráficos sim ples. E ntretanto, até
recen tem en te, os L ED s estavam d isp o ­
níveis apenas nas cores branco, am arelo,
verm elho e verde, e não eram m uito bri­ Sinal de semáforo que usa Sinal feito de diversas centenas
lh an tes. A ssim , os p rim eiro s displays lâmpada incandescente e de LEDs vermelhos
de v íd eo com L E D s eram geral m ente uma cobertura de plástico
vermelho
p e q u e n o s, usavam ap en as u m a única
co r e eram p ro jetad o s p ara uso interior. Figura 7.42 Os LEDs estão substituindo as lâm­
E n tretan to , com o d esen v o lv im en to do padas incandescentes em sem áforos, assim como
L ED azul em 1993 c de L E D s m ais b ri­ em outras áreas.
lhantes, os displays de L E D s total m ente
coloridos evoluíram , podendo exibir vídeo de form a m uito sem elhante á de um m o n ito r de
com putador ou de um a televisão, m esm o em am bientes exteriores ensolarados. De fato, os
L ED s, sendo de tecnologia de sem icondutor, vêm m elhorando a um a taxa sem elhante à dos
transistores (que tam bém usam tecnologia de sem icondutor). O m elhoram ento tem seguido
o que é co n h ecid o co m o lei de Haitz (o eq u iv alen te L ED da lei de M oore), a qual afirm a
que o “fluxo p o r invólucro” duplica a cad a 18 a 24 m eses, o q u e tem sido o caso há diversas
décadas. D evido a essa m elhoria, m uitos preveem que os L E D s irão su b stitu ir as lâm padas
in can d escen tes nas casas e nos locais de trabalho. O s L E D s já co m eçaram a su b stitu ir as
lâm padas incandescentes em sem áforos, com o m ostrado na Fig. 7.42.
A Fig. 7.43(a) m ostra um grande display de vídeo com LED s, sendo capaz de exibir um ví­
deo totalm ente a cores em um a tela de 13,7 x 7,3 m etros quadrados. C ada LED é relativam ente
grande (largura de l/8 de polegada, aproxim adam ente 3 m m ) em relação aos pixels de um m o­
nitor de com putador. A ssim , para ver a im agem sem notar os LEDs individuais, deve-se estar
a alguns m elros do display de LED s. Se observarm os o display de LED s mais de perto, com o
se vê na Fig. 7.43(b), poderem os ver as linhas individuais dos displays. Se olharm os ainda
m ais de perto, poderem os ver finalm ente os L ED s individuais dentro do display , com o está
m ostrado na Fig. 7.43(c). E ssa figura m ostra que os LED s estão reunidos em grupos de LEDs
verm elhos, verdes e a/.uis - cada agrupam ento representa um pixel. Para o display de vídeo de
LED s m ostrado na Fig. 7.43, cada agrupam ento de LED s consiste em cinco LED s: dois ver­
m elhos, dois verdes e um azul. Na realidade, os displays gigantes de vídeo são planejados para
serem vistos à distância, de m odo que a m aioria das pessoas não veem os LEDs individuais.

;« ? y

ff *
ft t9
t

W > ? > • ! .!

t f t f t f t f
T
um pixel

Figura 7.43 Display de vídeo com LEDs: (a) um grande display de LEDs (cerca de 9 metros
de largura e 4,5 metros de altura), (b) uma vista mais de perto, mostrando um pouco menos de
um metro quadrado, (c) uma vista bem próxima, mostrando cerca de uma polegada quadrada
(aproximadamente seis centímetros quadrados): podem ser vistos 16 “pixels”, tendo cada pixel 2
LEDs vermelhos (à esquerda, em cima, e à direita, em baixo), dois verdes (à direita, em cima, e à
esquerda, em baixo) e um azul (no centro do pixel).
432 Sistemas Digitais

A ssum a que querem os criar um display de vídeo com L E D s, cap az de m ostrar 720x480
pixels de vídeo, em que cada pixel consiste sim plesm ente em um L ED verm elho, um verde
e um azul. Se cada agrupam ento de L ED s tiver um a largura de apenas um pouco m ais de 3/8
de polegada (10 m ilím etros) e um a altura de 3/8 de polegada, o nosso display terá aproxim a­
dam ente um a largura de 7,3 m etros e um a altura de 4,8 m etros. A lém disso, o nosso display
conterá cerca de um m ilhão de L E D s individuais, porque 720*480 = 345.600 pixels e os
L E D s por pixel resultam em 1.036.800 pixels.
Para controlar cada LED usando um circuito digital sim ples, seriam necessários m ilhões
de pinos de saída e quilôm etros de fio para ligar todos os LED s. A o invés disso, com o está
m ostrado na Fig. 7.44, um display de vídeo com L ED s é construído com com ponentes cada
vez m enores. O display de LED s consiste em um a m atriz de com ponentes m enores cham ados
painéis , m ostrados na Fig. 7.44(a). O s painéis são com ponentes de exibição de grande tam a­
nho, geralm ente projetados de form a m odular, tais que os fabricantes podem facilm ente criar
displays de vídeo feitos sob m edida e co n sertar os co m p o n en tes estrag ad o s d entro de um
display sim plesm ente substituindo painéis. O s painéis de exibição de L E D s são novam ente
subdivididos em módulos de L ED s, os quais controlam os L ED s propriam ente ditos, m ostra­
dos na Fig. 7.44(b). Um m ódulo dc L ED s é o com ponente básico de exibição c, dependendo
do projeto do m ódulo, pode controlar desde centenas até alguns m ilhares de LED s. Por exem ­
plo, ao projetar um display de 720x480 pixels, é possível que queiram os usar um arranjo de
6x6 painéis, em que cada painel consistirá em um conjunto de 5x5 m ódulos de LED s. C ada
m ódulo de L E D s precisaria então controlar um a m atriz de 24x16 pixels, em que cada pixel é
com posto por três LED s.
O display de vídeo de L ED s funciona dividindo o fluxo dos dados de vídeo que chegam
em fluxos separados para cada painel. O s painéis fazem um novo processam ento do fluxo de
dados de vídeo, dividindo-o em fluxos ainda m enores para os m ódulos de LED s. Finalm ente,
os m ódulos dc LED s exibem os quadros de vídeo, controlando os L ED s para que acendam
com as cores corretas em cada pixel, ou aglom erado de LEDs.

Módulo de LEDs
O m ód u lo de L E D s c o n tro la os L E D s in d iv id u ais d en tro d o display d e vídeo, ligando e
desligando os L E D s nos m o m en to s ap ro p ria d o s para c ria r as im agens c o lo rid a s finais.
C om o cad a m ód u lo de L E D s pode co n sistir em m ilhares de L E D s, seriam n ecessário s fios
d em asiad o s para co n tro lar d irctam cn lc cad a L E D . Em vez d isso , co m o e stá m o strad o na
Fig. 7.45, os L E D s dentro dc um m ód u lo dc L E D s estão co n ectad o s na form a dc um a m a­
triz, c o m um único lio de controle para cad a linha c três fios d c co n tro le para cad a co lu n a
(um fio para cad a L E D de c o r d en tro dos ag ru p am en to s de L E D s). N a figura, o co n tro lad o r
do m ód u lo d e L E D s co n tro la um a m atriz de 2x3 p ixels, em q u e c ad a pixel co n siste em
três L E D s in d iv id u ais, to talizan d o 18 L E D s. N o en tan to , co m o está m o strad o , o c o n tro ­
lad o r usa apenas 9 fios para c o n tro la r esses 18 L E D s. A eco n o m ia de fio obtid a, usando
essa ab o rd ag em de linha e coluna, torna-se ainda m ais sig n ificativ a com m ais pixels. Um
m ódulo de L E D s de 24x16 pixels e três L E D s por pixel teria 24*16*3 = 1 1 5 2 L E D s, m as
o co n tro lad o r p recisaria de apenas 16 lios (um por linha) m ais 24*3 fios (três p o r co lu n a),
to talizan d o apenas 88 fios.
Implementação Física 433

^ Módulo

Painel Painel Painel ooo o Vermelho


ooo
... Módulo • ••

Painel Painel Painel Painel


ooo o
Painel Painel Painel Painel (b)

(a)

Figura 7.44 Os displays de vídeo com LEDs são projetados de forma hierárquica: (a) O display
de LEDs consiste em diversos painéis de grande tamanho, que podem ser combinados para criar
displays de diversos tamanhos e ser substituídos individualmente para consertar os estragados, (b)
cada painel consiste em diversos módulos menores de LEDs, responsáveis por controlar os pixels
individuais e (c) cada pixel consiste em um agrupamento de LEDs vermelho, verde e azul.

C) c o n tro la d o r do m ód u lo de
L ED s exibe um a im agem de vídeo
varrendo, ou habilitando, seq u en ­
cialm en te cad a linha e ex ibindo
os valores de pixel para cad a c o ­ Controlador do
luna d en tro da im agem de vídeo. Módulo de LEDs
U san d o essa técnica, apenas um a
linha de LED s é ilum inada em um
dado instante. C ontudo, o m ódulo
de L E D s varre as linhas com ra ­
pidez su ficien te p ara q ue o olho Figura 7.45 M ódulo de LEDs consistindo em uma ma­
hum ano p erceb a as linhas com o triz de LEDs vermelhos (R), verdes (G) e azuis (B)* que
estando todas ilum inadas. são controlados pelo controlador do módulo de LEDs.
O m ódulo de L E D s deve co n ­ L I , L2 e L3 são as linhas de 1 a 3 c C 1 e C2 são as colu­
trolar os L E D s para criar a co r de­ nas 1 e 2; assim, a matriz mostrada tem 2x3 pixels, totali­
sejad a de cad a pixel. Para rep re­ zando 6 pixels e 18 LEDs (3 LEDs por pixel).
sentar cada um deles dentro de um
quadro de vídeo, usa-se tipicam ente um espaço de cores RGB. Um espaço RGB ( red/green/
hlue ) é um m étodo de se criar qualquer intensidade de co r adicionando-se intensidades esp e­
cíficas, ou lum inosidades, das cores verm elho, verde e azul. C ada pixel dentro de um quadro
de vídeo pode ser representado com o ires núm eros binários de oito bits, os quais especificam
as intensidades das cores verm elho, verde ou azul. A ssim , para cada cor, o m ódulo de LED s
deve ser capaz de fornecer 256 níveis distintos de lum inosidade. E ntretanto,
Em 2004, o maior um LED em si adm ite apenas dois valores: ligado e desligado , ou m áxim o de
display cie LEDs linha brilho e nenhum brilho.
cerca de 41 metros de Para su p o rtar 256 níveis de lu m in o sid ad e, o co n tro lad o r d o m ódulo de
largara e 8 metros de L ED s usa m odulação por largura de pulso. N a modulação por largura de pulso
altura, construído com (tam bém conhecido com o PW M , de pulse width modulation ), um controlador
10 FPGAs de grande aciona um fio com 1, durante um a porcentagem esp ecífica de um período de
porte, 323 FPGAs de tem po - quando o sinal é 1, ele é conhecido com o pulso, a d u ração do 1 é
tamanho médio, 333
conhecida com o largura de pulso e a porcentagem do período em que ele fica
memórias flash e 3800
PLDs. (Fonte: Xcell em 1 é conhecida com o ciclo de trabalho. Q uando esse pulso aciona um LED,
Journal, Inverno de um pulso m ais largo faz o LED parecer m ais lum inoso para o olho hum ano.
2004) A Fig. 7.46 ilustra com o o co n tro lad o r do m ódulo de L ED s usa a m odulação

* N. de T: Relembrando: RGB ou R e d, G re e n . B lu e , isto é. vermelho, verde e azul.


434 Sistemas Digitais

por largura de pulso para possibilitar vários níveis de brilho para os LED s. Para que um LED
ilum ine-se com brilho m áxim o, o controlad o r sim p lesm en te aciona o L ED com 1 durante
todo o período, com o m ostrado na Fig. 7.46(a). Para que o LED ilum ine-se com a m etade do
brilho, o controlador usa um pulso com um ciclo de trabalho de 50% , com o m ostrado na Fig.
7.46(b). Para 25% de lum inosidade, o con tro lad o r ativa o pulso com 1 durante 25%’ do pe­
ríodo, ou seja, um ciclo de trabalho de 25% , com o m ostrado na Fig. 7.46(c). Em um display
de vídeo, o controlador do m ódulo de LED s divide o intervalo de tem po, em que cada linha
é varrida, em 255 segm entos de tem po e controla a lum inosidade dos LED s acendendo cada
LED durante 0 a 255 segm entos de tem po, perm itindo assim 256 níveis de intensidade.

Período 1 Período 2 Período 3 Período 4


^ ^ 1
1
(a)
L
1
1
1
(b) 1
1
i
<c> JH____ ~ 1
1
1
1
l

Figura 7.46 A modulação por largura de pulso pode ser usada para criar diversos níveis de brilho
para os LEDs: (a) para o máximo de brilho, o LED perm anece sempre ligado, (b) para metade
de brilho, o LED é ligado durante 50% do tempo e (c) para um quarto de brilho, o LED é ligado
durante 25% do tempo.

C om o um co n tro lad o r de m ódulo de L E D s p recisa fornecer sinais precisam ente defin i­


dos no tem po, a um a taxa elevada, os processadores cu stom izados são com um cntc usados
ao invés de sim ples m icroprocessadores. Para im plem entar esses circuitos custom izados de
processadores, nos displays de vídeo com LED s, os FPG A s são um a opção com um , devido
a diversas razões. Prim eiro, os FPG A s são suficien tem en te velozes para su p o rtar as taxas
de varredura necessárias. Segundo, os circuitos nos FPG A s podem ser facilm ente alterados,
tornando possível que o fabricante de displays conserte bugs do circuito e faça inclusive atu ­
alizações no circuito, sem a necessidade do alto custo de criação de um novo A SIC . Terceiro,
os displays em si são bastante grandes, dispendiosos e consom em m uita energia. Portanto, o
m aior tam anho, o custo m ais elevado e o m aior consum o de energia dos FPG A s, em relação
aos A SIC s, não têm um im pacto significativo dem ais sobre o tam anho, o custo e o consum o
totais do display.

► 7.7 RESUMO DO CAPITULO


N este capítulo, discutim os (Seção 7.1) a idéia de que devem os m apear nossos circuitos em
um a im plem entação física de m odo que esses circuitos possam ser inseridos em um sistem a
real. Introduzim os (S eção 7.2) algum as tecn o lo g ias que requerem que um novo chip seja
fabricado para im plem entar o nosso circuito. A tecnologia totalm ente custom izada propicia a
im plem entação m ais otim izada, m as é cara e necessita de tem po para o projeto. T ecnologias
sem i-custom izadas dão im plem entações m uito boas e custam m enos, exigindo m enos tem po
para o projeto, por m eio do projeto prévio das portas ou células que serão usados no IC. D es­
crevem os (Seção 7.3) a tecnologia cada vez m ais popular dos FPG A s e m ostram os com o um
circuito poderia ser m apeado em um conjunto de tabelas lookup e m atrizes de chaveam ento.
D estacam os (Seção 7.4) diversas outras tecnologias, incluindo ICs SSI/M SI standard e d is­
positivos lógicos program áveis. Fornecem os alguns dados (Seção 7.5), m ostrando a relativa
popularidade das tecnologias descritas no capítulo.
Implementação Física 435

U m a te n d ê n c ia in te re ss a n te d a im p le m e n ta ç ã o físic a é a te n d ê n c ia em d ire ç ã o aos


IC s p ro g ra m á v e is (F P G A s em p a rtic u la r). A im p le m e n ta ç ã o d a fu n c io n a lid a d e e m um
F P G A en v o lv e a ta re fa d e g ra v a r u m a se q ü ê n c ia de b its no IC d o F P G A . P o d e r-se -ia
n o ta r a se m e lh a n ç a e n tre e ssa tarefa e a im p le m e n ta ç ã o de u m a fu n c io n a lid a d e em m i­
cro p ro cessad o r, a qual en v o lv e tam b ém a g rav ação de b its em um d isp o sitiv o IC. A ssim ,
a d ife re n ç a e n tre so ftw a re em um m ic ro p ro c e ss a d o r e c irc u ito s d ig ita is c u sto m iz a d o s
c o n tin u a a e sta r c o n fu s a -e s p e c ia lm e n te q u a n d o se c o n sid e ra q u e os F P G A s m o d e rn o s
tam b ém p o d em c o n te r um ou d iv e rso s m ic ro p ro c e ssa d o re s d e n tro do m e sm o IC . P ara
m ais in fo rm ação so b re essa c o n fu sã o , v eja “T h e S o fte n in g o f H ard w are,“ F. V ahid, IEEE
Computer , A p ril, 2003.

► 7.8 EXERCÍCIOS

► SEÇÃO 7.2: TECNOLOGIAS DE ICS MANUFATURADOS

7.1 Explique por que a tecnologia gate a rra y de ICs tem u m tempo de produção menor do que o da
tecnologia totalmente customizada de ICs.
7.2 Explique por que o uso de portas N A N D ou N O R em uma implementação de circuito, usando gate
a rra y C M O S , é geralmente preferida a uma implementação A N D / O R / N O T de um circuito.
7.3 Desenhe u m IC de gate a rra y que tem três filas. A primeira fila tem quatro portas A N D de duas
entradas, a segunda filatem quatro portas O R de duas entradas e a terceira tem quatro portas NOT.
Mostre como colocar os fios de conexão no gate a rra y para implementar a função F (a,b,c) = abc
+ a'b'c'.
7.4 Assuma que uma biblioteca de células padrão tem uma porta A N D de duas entradas, uma porta O R
de duas entradas e uma porta NOT. Faça um desenho para mostrar como instanciar e posicionar
células padrão em um IC, fazendo as conexões entre elas para implementar a função do Exercício
7.3. Desenhe as suas células com o mesmo tamanho das portas do Exercício 7.3 e assegure-se de
que as suas filas são do mesmo tamanho.
7.5 Desenhe u m IC de gate a rra y que tem três filas. A primeira fila tem quatro portas A N D de duas
entradas, a segunda fila tem quatro portas O R de duas entradas e a terceira tem quatro portas NOT.
Mostre como colocar os fios de conexão no gate a rra y para implementar a função F(a,b,c,d) =
a'b + cd + c'.
7.6 Assuma que uma biblioteca de células padrão tem uma porta A N D de duas entradas, uma porta
O R de duas entradas e uma porta NOT. Faça um desenho para mostrar como instanciar e posicio­
nar células padrão em u m IC, fazendo as conexões entre elas para implementar a função do Exer­
cício 7.3. Desenhe as suas células com o mesmo tamanho das portas do Exercício 7.5. Assegure-se
de que as suas filas são do mesmo tamanho.
7.7 Considere as implementações de um meio-somador com o gate a rra y da Fig. 7.4 e com as células
padrão da Fig. 7.6. Assuma que cada porta ou célula (incluindo inversores) tem um atraso de l ns.
Assuma também que cada centímetro de fio (para cada centímetro no seu desenho, não em um IC
real) tem u m atraso de l.2 ns (os fios são relativamente lentos nessa era de transistores minúsculos
e rápidos). Estime os atrasos dos circuitos com gate a rra y c com células padrão.
7.8 Nas soluções dos Exercícios 7.3 e 7.4, assuma que cada porta ou célula tem um atraso de I ns e
cada centímetro de fio (cada centímetro no seu desenho, não em um IC real) corresponde a um
atraso de l.2. Estime os atrasos dos circuitos com gate a rra y e com células padrão.
7.9 Desenhe um circuito usando portas AND, O R e N O T para a seguinte equação: F(a,b,c) = a1bc
+ abc'. Coloque bolhas de inversão para converter o circuito usando:
(a) portas N A N D apenas,
(b) portas N O R apenas.
436 Sistemas Digitais

7.10 Desenhe u m circuito usando portas AND, O R e N O T para a seguinte equação: F(a,b, c) = abc +
a ' + b ' + c '. Coloque bolhas de inversão para converter o circuito usando:
(a) portas N A N D apenas,
(b) portas N C R apenas.
7.11 Desenhe um circuito usando portas AND, O R e N O T para a seguinte equação: F(a,b,c) = (ab +
c) (a ' + d) + c '.Converta o circuito e m u m outro usando:
(a) portas N A N D apenas,
(b) portas N O R apenas.
7.12 Desenhe um circuito usando portas AND, O R e N O T para a seguinte equação: F(w,x,y,z) = (w
+ x) (y + z) + wy + xz. Converta o circuito em um outro usando:
(a) portas N A N D apenas,
(b) portas N O R apenas.
7.13 Desenhe um circuito usando portas AND, O R e N O T para a seguinte equação: F(a,b,c,d) = (ab)
(b' + c) + (a 'd + c'). Converta o circuito em um outro usando:
(a) portas N A N D apenas,
(b) portas N O R apenas.
7.14 Construa u m gabarito que sirva de modelo para converter uma porta A N D de três entradas em u m
circuito que usa apenas portas N A N D de três entradas.
7.15 Construa u m gabarito que sirva de modelo para converter uma porta O R de três entradas em u m
circuito que usa apenas portas N A N D de três entradas.
7.16 Construa u m gabarito que sirva de modelo para converter uma porta N O T em um circuito que usa
apenas portas N A N D de três entradas.
7.17 Assuma que uma biblioteca de células padrão consiste em portas N A N D com u m atraso de l ns
cada uma, portas A N D e O R de duas e três entradas com um atraso de 1,8 ns cada e uma porta
N O T com um atraso de I ns. Compare o número de transistores e o atraso de uma implementação
que usa apenas portas AND, O R e N O T com uma implementação que usa apenas portas N A N D
para a função F(a,b, c) =ab 'c + a 'b. Para calcular o tamanho de uma implementação, assuma que
cada entrada de porta requer dois transistores.
7.18 Assuma que uma biblioteca de células padrão consiste em portas A N D e O R de duas entradas
com u m atraso de l ns cada uma, portas A N D e O R de três entradas com u m atraso de l,5 ns
cada e uma porta N O T com u m atraso de l ns. Compare o número de transistores e o atraso de
uma implementação, que usa apenas portas A N D e O R de duas entradas e portas NOT, com uma
implementação que usa apenas portas A N D e O R de três entradas e portas N O T para a função
F(a,b,c)= abc + a'b'c + a' b'c '. Para calcular o tamanho de uma implementação, assuma que
cada entrada de porta requer dois transistores.
7.19 Assuma que uma biblioteca de células padrão consiste em portas N A N D e N O R de duas entradas,
com um atraso de I ns cada uma. e portas N A N D e N O R de três entradas com u m atraso de l.5 ns
cada. Compare o número de transistores c o atraso de uma implementação, que usa apenas portas
N A N D e N O R de duas entradas, com uma implementação que usa apenas portas N A N D e N O R
de três entradas para a função F(a, b,c)= a'bc + ab'c + abc1.Para calcular o tamanho de uma
implementação, assuma que cada entrada de porta requer dois transistores.

SEÇÃO 7.3: TECNOLOGIA DE ICs PROGRAMÁVEIS - FPGA

7.20 Mostre como implementar em uma tabela lookup, de três entradas e duas saídas, a função F(a, b, c)
~ a + bc.
7.21 Mostre como implementar em duas tabelas lookup, de três entradas e duas saídas, a função
F (a , b, c , d) = ab + cd. Assuma que você pode conectar as tabelas lookup de forma customizada
(isto é. não use uma matriz de chaveamcnto, simplesmente ligue diretamente os seus fios).
7.22 Mostre como implementar em duas tabelas lookup. de três entradas e duas saídas, a seguinte
função: F (a ,b ,c ,d ) = a ' bd + b 'c d A s s u m a que as duas tabelas lookup estão conectadas do
Implementação Física 437

modo mostrado na Fig. 7.47. É possível


que você não precise usar todas as saídas
das tabelas lookup.
7.23 Mostre como implementar em duas ta­
belas lo o k u p , de três entradas e duas
saídas, as seguintes funções: F(x,y,z)
= x'y + xyz' e G(w,x,y,z) = w'x'y
+ w 'xyz'. Assuma que as duas tabelas
lo o ku p estão conectadas do modo mos­
trado na Fig. 7.47.
7.24 Mostre como implementar em duas
tabelas lo o k u p , de três entradas e
duas saídas, as seguintes funções:
Figura 7.47 Duas tabelas lo o k u p ,de 3 entradas e 2
F(a,b,c,d) = abc + d e G = a 1.Você
saídas, implementadas usando memórias 8x2.
deve implementar F e G com apenas duas
tabelas lookup conectadas do modo mos­
trado na Fig. 7.47.
725 Implemente u m comparador de dois bits, que compara dois números de dois bits, e tem 1res saí­
das. indicando “maior do que”,“menor do que" e “igual a". Podem ser usados um número qual­
quer de tabelas lo o ku p ,de três entradas e duas saídas, e conexões customizadas entre as tabelas
lookup.

7.26 Mostre como implementar u m somador de quatro bits, com propagação de “vai u m ”,usando u m
número qualquer de tabelas lo o ku p .de três entradas e duas saídas, e conexões customizadas entre
as tabelas lookup. Sugestão: mapeie um somador completo para cada tabela lookup.
7.27 Mostre como implementar um somador de quatro bits, com propagação de “vai u m ”,usando um
número qualquer de tabelas lo o k u p ,de quatro entradas e uma saída, e conexões customizadas
entre as tabelas lookup.
7.28 Mostre como implementar u m comparador. que compara dois números de oito bits, e tem uma
única saída “igual a". Podem ser usados u m número qualquer de tabelas lo o ku p ,de quatro entra­
das e uma saída, e conexões customizadas entre as tabelas lookup.
7.29 Mostre qual 6 o arquivo de bits necessário para programar a estrutura do FPGA da Fig. 7.29 para
que seja implementada a função F (a ,b ,c ,d ) = ab + cd. em que a. b. c e d são entradas externas.
7.30 Mostre qual é o arquivo de bits necessário para programar a estrutura do F P G A da Fig. 7.29 para
que seja implementada a função F(a,b,c,d) = abcd, em que a. b, c e d são entradas externas.
7.31 Mostre qual é o arquivo de bits necessário para programar a estrutura do FPGA da Fig. 7.29 para que
seja implementada a função F(a,b,c,d) = a1b' + c'd, em que a. b, c e d são entradas externas.

SEÇÃO 7.4: OUTRAS TECNOLOGIAS

7.32 Use qualquer combinação de ICs 7400 listados na Tabela 7.1 para implementar a função
F(a,b,c,d) = ab + cd.
7.33 Use qualquer combinação de ICs 7400 listados na Tabela 7.1 para implementar a função
F(a,b,c,d) = abc + ab1c1 + a'bd + a 1b'd '.
734 Desenhando Xs no circuito, programe o PLD da Fig. 7.38(a) para implementar u m somador com­
pleto.
735 Desenhando Xs no circuito, programe o P L D da Fig. 7.38(a) para implementar um comparador de
igualdade de dois bits. Assuma que o P L D tem uma entrada 14 adicional.
7.36 *(a) Projete u m dispositivo P L D capaz de implementar um somador de dois bits com propagação
de “vai u m ”.Desenhando Xs no circuito do seu PLD. programe-o para implementar o soma­
dor de dois bits com propagação de “vai u m ”.
438 Sistemas Digitais

(b) Usando um dispositivo CPU), que consiste em diversos PLDs da Fig. 7.38, e assumindo que
você pode conectar os PLDs de forma customizada, implemente o somador de dois bits com
propagação de “vai u m ” desenhando Xs nos PLDs.
(c) Compare os tamanhos do seu P L D e do C P L D determinando as portas necessárias para ambos
os projetos (assegure-se de comparar o número de portas dentro do PLD e do C P L D e não o
número de portas usadas na sua implementação).

SEÇÃO 7.5: COMPARAÇÕES ENTRE TECNOLOGIAS DE ICS

7.37 Para cada uma das restrições de sistema abaixo, escolha a tecnologia mais apropriada, entre as
tecnologias FPGA, célula padrão e totalmente customizada de IC. para implementar u m dado
circuito. Justifique as suas respostas.
(a) O sistema deve existir como protótipo físico na próxima semana.
(b) O sistema deve ser tão pequeno e tão pouco consumidor de energia quanto possível. Tempos
curtos de projeto e baixo custo não são prioridades.
(c) O sistema deve ser reprogramável mesmo depois que o produto final tenha sido fabricado.
(d) O sistema deve ser tão rápido e deve consumir tão pouca energia quanto possível, sujeito a
estar completamente implementado cm apenas alguns meses.
(e) Apenas cinco cópias do sistema serão produzidas e temos até 1000 dólares para gastar com
lodos os ICs.
738 Quais das seguintes implementações não são possíveis? (1) U m processador customizado em um
FPGA. (2) U m processador customizado em u m ASIC. (3) U m processador customizado em um
IC totalmente customizado. (4) U m processador programável em u m FPGA. (5) U m processador
programável e m u m ASIC. (6) U m processador programável em um IC totalmente customizado.
Explique as suas respostas.
Processadores Programáveis

► 8.1 INTRODUÇÃO
Os circuitos digitais projetados para executar u m a única tarefa de processamento, c o m o u m a
luz de alerta para cinto de segurança, u m marca-passo, ou u m filtro FIR, são na realidade u m a
classe muito c o m u m de circuitos digitais. Poderemos nos referir a u m circuito que executa
u m a única tarefa de processamento c o m o sendo u m processador de propósito único. Esses
processadores representam u m a classe de circuitos digitais que permite u m a computação
tremendamente rápida ou eficiente e m termos de consumo energético. Entretanto, u m a outra
classe de circuitos digitais, conhecida c o m o processadores programáveis, também é extre­
mamente popular, além de ser mais amplamente conhecida. O processador programável é
largamente responsável pela revolução da computação que vem ocorrendo há várias déca­
das, levando ao que muitos c h a m a m de idade da informação. U m processador programável,
também conhecido c o m o processador de propósitos gerais,é u m circuito digital cuja tarefa
de processamento e m particular, ao invés de ser construída no próprio circuito, fica armaze­
nada e m u m a memória. A representação dessa tarefa de processamento é conhecida c o m o
programa. A Fig. 8.1 ilustra processadores de propósito único v e r s u s propósitos gerais. Po­
deríamos criar u m circuito digital customizado para u m a luz de alerta de cinto de segurança
(Capítulo 2) ou para u m sistema de filtro FIR (Capítulo 5). E m lugar disso, poderíamos pro­
gramar o circuito de u m processador de propósitos gerais para implementar esses sistemas.

Processador de propósitos gerais

Figura 8.1 Processadores de propósito único versus de propósitos gerais.


440 Sistemas Digitais

A lguns processadores program áveis, com o o bem conhecido processador Pentium da In ­


tel ou o processador Sparc da Sun, foram planejados para serem usados em com putadores de
m esa (desktop). O utros processadores program áveis, com o os processadores A R M , M IPS,
8051 e PIC (que são am plam ente conhecidos na com u n id ad e de projeto, m as são m enos
conhecidos pelo público em geral), foram planejados para serem usados em sistem as em ­
barcados, com o telefones celulares, autom óveis, jo g o s de vídeo, ou m esm o tênis com luzes
piscantes. A lguns processadores program áveis, com o o Pow erPC , foram projetados para as
áreas de com putadores de m esa e em barcados.
Um dos benefícios de um processador program ável é que o seu circuito pode ser co n stru ­
ído em m assa e então program ado para fazer quase que qualquer coisa. A ssim , o m esm o pro­
cessador program ável de m esa pode executar program as W indow s 98. W indow s XP. L inux ou
qualquer sistem a operacional novo que surgir. De m odo sem elhante, esse m esm o processador
pode executar program as aplicativos com o editores de texto, planilhas eletrônicas, jo g o s de
vídeo, navegadores de web, etc. A lém disso, o m esm o p rocessador program ável em barcado
pode ser usado em telefones celulares, autom óveis, jo g o s de vídeo ou tênis, program ando o
processador para realizar a tarefa desejada de processam ento. A fabricação em m assa resulta
em preços baixos devido à am ortização dos custos de projeto (veja “ Por que essas calculado­
ras de baixo custo?" no C apítulo 4 para um a discussão sobre am ortização.
N aturalm ente, com o os processadores program áveis são produzidos em m assa e usados
então cm um a am pla variedade de aplicações, não há tantos processadores program áveis in-
com uns quanto há projetos de processadores de pro p ó sito único. C onclui-se assim que há
m uito m enos projetistas de processadores program áveis do que há de processadores p rogra­
m áveis de propósito único. N o entanto, m esm o que seja possível que você nunca venha a
projetar um processador program ável com o parte do seu trabalho, é interessante e instrutivo
com preender com o funciona tal processador program ável. A lguns afirm am inclusive q u e as
pessoas que com preendem com o um processador funciona são m elhores program adores de
softw are. Por outro lado, as tendências da tecnologia levaram a uma situação em que os proje­
tistas são capazes de criar processadores sem i-custom izados (processadores “específicos para
aplicação“ ), os quais têm exatam ente a arquitetura certa para um a aplicação ou um pequeno
núm ero delas, tornando im portante o conhecim ento do projeto de processadores program á­
veis. Final m ente, na realidade, há pessoas que de fato projetam arquiteturas de processadores
program áveis e nunca se sabe se você não acabará se deparando com um a delas.
N este capítulo, usando os nossos m étodos de projeto digital que foram descritos anterior­
m ente, m ostrarem os com o projetar um processador program ável sim ples. O nosso propósito
principal é dcsm islificar esses dispositivos e d ar um visão intuitiva de com o os processadores
program áveis funcionam . D estacam os que os processadores reais produzidos em m assa são
projetados usando-se diferentes m étodos e seus projetos podem ser m uito m ais com plexos do
que os descritos neste capítulo - o aprendizado desses projetos de processador é o assunto de
m uitos livros-texto sobre arquitetura de com putador.

8.2 ARQUITETURA BÁSICA


Um processador program ável consiste cm duas partes principais: um bloco operacional (da­
tapath) e um a unidade de controle. D arem os um a introdução geral a essas duas parles nesta
seção e, então, darem os um a visão m ais detalhada dessas partes em um a seção subseqüenle.

Bloco operacional básico


Podem os ver um processam ento com o sendo:
• a carga de dados, significando ler os dados, com os quais querem os trabalhar, de alguns
locais de entrada;
• a transformação desses dados, significando realizar algum as com putações com esses d a­
dos, resultando novos dados; e
Processadores Programáveis 441

• o armazenamento dos novos dados, significando escrever os novos dados em alguns lo­
cais de saída.
P or exem plo, um sistem a de alerta para cinto de segurança lê bits de dados de sensores, os
quais indicam se um cinto de segurança está engatado e se um a pessoa está sentada no as­
sento. A seguir, transform a esses dados com putando um novo bit dc dados, o qual indicará sc
um a luz de alerta deve ser acesa. Finalm ente, escreverá esse novo dado enviando-o a um a luz
de alerta. Um filtro FIR lê dados, que representam o conjunto m ais recente de am ostras dos
sinais de entrada, transform a esses dados, executando m ultiplicações e som as, e escreve esses
novos dados em um a saída, que representa o sinal filtrado.
Um a memória de dados guarda todos os dados que um C o n e c ta d o
processador program ável poderá acessar, com o os dados d e a lg u m

de entrada e saída - por enquanto, assum a que as palavras m o d o ao


m undo
dessa m em ória de dados estão conectadas de algum m odo
e x t e r io r
ao m undo exterior (por exem plo, aos sensores do cinto de
segurança ou aos sinais FIR de entrada e saída). Para pro­
cessar esses dados, um processador program ável precisa ser
capaz de carregar os dados da m em ória em um de diver­
sos registradores (tipicam ente, um banco de registradores)
que estão dentro do processador. Ele precisa ser capaz de
Banco de
alim entar unidades funcionais que, a partir de um subcon­ > registradores RF
ju n to de registradores, podem executar todas as operações
de transformação que poderem os vir a cogitar (tipicam ente,
em um a unidade de lógica e aritm ética - A LU ). O s resulta­
dos devem ser carregados de volta em um dos registradores. ALU

É preciso que o processador seja capaz de armazenar os i_____


dados de qualquer registrador colocando-os de volta na m e­ Figura 8.2 Bloco operacional
m ória. Portanto, vem os a necessidade de um processador básico de um processador pro­
program ável conter o circuito básico ilustrado na Fig. 8.2, o gramável.
qual m ostra um a m em ória de dados, um banco de registra­
dores e uma A LU. Esse circuito é conhecido com o o bloco
operacional (datapath) do processador. Em um dado ciclo de relógio, o bloco operacional
básico m ostrado na Fig. 8.2 pode executar as seguintes operações de bloco operacional:

• Operação de carga: E ssa operação carrega (lê) dados, que estão em q u alq u er local da
m em ória de dados, colocando-os em qualquer um dos registradores do banco de registra­
dores (Register file - RF). Um a operação de carga está ilustrada na Fig. 8.3(a).

• Operação de ALU: Essa operação transform a dados de dois registradores, p assando os


seus conteúdos através da A LU , que está co nfigurada para q u alq u er um a das operações
suportadas p o r ela, e colocando o resultado de volta em q u alq u er um dos registradores
do banco de registradores. U m a operação A LU está ilustrada na Fig. 8.3(b). O perações
típicas de A LU são adição, subtração, A N D lógico, OR lógico, etc.

• Operação de armazenamento: E ssa operação arm azena (escreve) dados, que estão em
qualquer um dos registradores do banco de registradores, em qualquer local da m em ória
de dados. U m a operação de arm azenam ento está ilustrada na Fig. 8.3(c).

E ssas operações possíveis do bloco operacional estão ilustradas na Fig. 8.3. C ada um a
delas requer a ativação de entradas de con tro le apropriadas na m em ória de dados, no mul-
tiplexador, no banco de registradores e na A L U -essas entradas de controle serão m ostradas
em breve. Por enquanto, sim plesm ente fam iliarize-sc com as capacidades básicas do bloco
operacional. O bserve que, usando um único ciclo de relógio, o bloco operacional da Fig. 8.2
não pode usar a A LU para operar diretam ente com as posições de m em ória, porque prim eiro
442 Sistemas Digitais

os dados devem ser carregados no banco de registradores, requerendo ele próprio um ciclo de
relógio, antes que os dados possam ser tratados pela A LU . Um bloco operacional, que requer
que todos os dados passem pelo banco de registradores antes que possam ser transform ados
pela A LU , é conhecido com o arquitetura de carga e armazenamento .

(a) (b) (c)

Figura 8.3 Operações básicas do bloco operacional: (a) carga (leitura), (b) operações (transfor­
mações) de ALU e (c) armazenamento (escrita).

► EXEMPLO 8.1 Compreendendo as operações do bloco operacional


No bloco operacional da Fig. 8.2, quais das seguintes são operações válidas de bloco operacional,
usando urn único ciclo de relógio?
1. Copiar dados de uma posição de memória, colocando-os em uma posição de um banco de
registradores.
2. Ler dados de duas posições de uma memória de dados, colocando-os em duas posições de
um banco de registradores.
3. vSomar dados de duas posições de uma memória de dados e armazenar o resultado em uma
posição de um banco dc registradores.
4 . Copiar dados de uma posição de um banco de registradores, colocando-os em outra posi­
ção do banco de registradores.
5. Subtrair os dados, que em uma posição de um banco de registradores, de uma posição de uma
memória de dados. O resultado será armazenado em uma posição do banco de registradores.
A operação ( l ) é válida, sendo conhecida como operação dc carga. A (2) não 6 uma operação
válida. Durante uma operação de bloco operacional (esse bloco em particular), podemos ler apenas
uma posição da memória de dados e escrever em apenas uma posição do banco de registradores. A
(3) não ó uma operação válida. Durante um operação, não só não podemos ler de duas posições da
memória de dados como também não podemos alimentar diretamente a ALU com os valores lidos
para efetuar a som a-prim eiro deveremos realizar operações que leiam os itens de dados e os colo­
quem em posições do banco de registradores. A (4) é uma operação válida. Poderemos configurar
a ALU com uma operação que simplesmente deixa uma de suas entradas passar até a saída (talvez
somando 0), armazenando o resultado no banco de registradores. A (5) não é uma operação válida.
Não podemos alimentar diretamente a ALU com dados que estejam sendo lidos de uma posição da
memória de dados-não existe tal conexão no bloco operacional. Os valores lidos da memória de
dados devem ser carregados primeiro no banco de registradores. M
Processadores Programáveis 443

Unidade de controle básica


Suponha que queiram os usar o bloco operacional básico da Fig. 8.2 para realizar um a tarefa
de processam ento sim ples que consiste em som ar os conteúdos das posições 0 e 1 da m em ó­
ria de dados e escrever o resultado na posição 9 da m em ória de dados - em outras palavras,
querem os co m p u tar D[9] = D[0] + D / / / . Podem os realizar essa tarefa de processam ento
“ instruindo” o bloco operacional a realizar as seguintes operações:
• carregue o con teú d o da posição 0 da m em ória de dados no registrador RO do banco de
registradores ( Register File) (isto é, RF[0] = D[0])y
• carregue o con teú d o da posição 1 da m em ória de dados no registrador RI do banco de
registradores (isto d, RF[ 1] = D[1 /),
• realize um a operação de ALU que som a RO e RI e escreva o resultado de volta em R2 (isto
ó, RF[2J = RF[0] + RF[I]9e
• armazene R2 na posição 9 da m em ória de dados (isto d. D l9] = RF/2j).
O bserve que poderíam os ter usado quaisquer registradores do banco de registradores, ao
invés de R0y RI e R2.
Se D[0] contivesse o valor 99 (em binário, naturalm ente) e D[l ] contivesse o valor 102,
então D[9] conteria 201 após realizar as operações acim a.
Você pode pensar que ter de instruir o bloco operacional, para realizar quatro operações
distintas, d uma m aneira com plicada de som ar dois itens de dados. Se você pudesse construir
seu próprio circuito digital custom izado para im plem entar D[9] = D[0] + D [I /, provavelm ente
você iria sim plesm ente enviar DjO] e D [l] a um som ador cuja saída você conectaria a D[9]y
evitando assim as quatro operações que envolvem o banco de registradores e a ALU. Vemos o
tradeoff básico dos processadores de propósito único versus os program áveis - os processado­
res program áveis têm a desvantagem de um a sobrecarga de com putação, porque devem ser
gendricos, m as propiciam os benefícios de um processador fabricado em m assa, que pode ser
program ado para fazer quase que qualquer coisa.
De algum m odo, p recisam o s
descrever a seqüência de operações-
RFI0]=D[0], então RFI!]=D[1],
a seg u ir RF[2]=RFI0 / + RFHU
e final m en te D [9]= RFl2]-quc
desejam os executar no bloco o pe­
racional. Essa descrição das opera­
ções desejadas de processador são
conhecidas com o instruções e uma
coleção de instruções d conhecida
co m o programa. Irem o s a rm a ­
zen ar o program a d esejado com o
palavras em um a o utra m em ória,
cham ada memória de instruções*.
M ais a d ian te, irem o s d esc re v e r
com o representar essas instruções.
P o r enquanto, assum a q ue as q ua­
tro instruções estão arm azenadas
de algum m odo nas posições 0, 1,
2, e 3 da m em ória de instruções /, Figura 8.4 A unidade de controle de um processador
com o está m ostrado na Fig. 8.4. programável.

* N. de T: Também conhecida como memória de programa.


444 Sistemas Digitais

A gora é o m om ento em que a unidade de controle desem penha um papel. A unidade de


controle lê cada instrução da m em ória de instruções e então executa essa instrução no bloco
operacional. Para executar o nosso program a sim ples, a unidade de controle com eçaria fa­
zendo as seguintes tarefas, conhecidas com o estágios , para executar a prim eira instrução:

1. Busca : A unidade de controle com eça lendo o conteúdo de I[0] que e colocado em
um registrador local, um a tarefa conhecida com o busca. Esse estágio requer um ciclo
de relógio.

2 . Decodijicação : A seguir, a unidade de controle determ ina qual é a operação que está
sendo solicitada pela instrução, um a tarefa conhecida como decodijicação. Esse es­
tágio tam bém requer um ciclo de relógio.

3 . Execução: Q uando vê que essa instrução está solicitando que bloco operacional exe­
cute a operação RF[0] = D /0 /, a unidade de controle ativa as linhas do bloco opera­
cional para ler D[0J passar os dados lidos pelo m ultiplexador 2x l à frente do banco
de registradores e escrever esses dad o s em RIO]. A tarefa de efetu ar a operação é
conhecida com o execução. A m aioria das operações são de bloco operacional (com o
as operações de carga, A LU e arm azenam ento), m as nem todas as operações reque­
rem o bloco operacional (um exem plo é a instrução de salto que será discutida m ais
adiante). Esse estágio requer um ciclo de relógio.

A ssim , os estágios básicos que são efetuados pela unidade de controle nesta prim eira ins­
trução são: busca , decodijicação c execução , requerendo três ciclos de relógio som ente para
com pletar a prim eira instrução.
A unidade de controle arm azena a instrução buscada cm um registrador local que é co ­
nhecido com o registrador de instrução , ou IR (Jnstraction Registe r), com o está m ostrado na
Fig. 8.4. O bserve que a unidade de contro le precisa saber qual é a posição onde a próxim a
instrução deverá ser buscada na m em ória de instruções. C om o as posições das instruções
estão usualm ente em seqüência, podem os usar um sim ples contador crescente para guardar
a instrução corrente de p ro g ram a-tal contador é conhecido com o contador de programa , ou
PC (Program Counter), abreviadam ente. O processador com eça com PC=0 , de m odo que a
instrução em 1(0] representa a prim eira instrução do program a.
A Fig. 8.5 ilustra os três estágios da execução da instrução RF[0] = D /0 /, que foi arm a­
zenada em I[0J. A ssum indo que PC tinha sido inicializado anteriorm ente com 0, a Fig. 8.5(a)
m ostra o prim eiro estágio buscando os conteúdos de //O /, ou seja, a instrução RF[0 / = D[0 /,
e colocando-os em //?. A Fig. 8.5(b) m ostra o segundo estágio decodificando a instrução e
determ inando assim que a instrução é um a de “carreg ar” . A Fig. 8.5(c) m ostra o bloco de
controle executando a instrução. Para isso, o bloco operacional é configurado para ler o valor
de D[0] e arm azenar esse valor em RF[0]. Se D[0] contiver 99, então R[0] conterá 99 após o
térm ino do estágio de execução.
D epois de processar a instrução que está em I[0], a unidade de controle irá buscar, deco­
dificar e executar a instrução que está em / / / / , requerendo m ais três ciclos (e efetuando assim
RFI/] = D]I ]). A seguir, a unidade de controle irá buscar, decodificar e executar a instrução
que está em / / 2 / , requerendo m ais três ciclo s (e efetuando assim RF[2I=RF[0I + RF[J /).
Finalm ente, a unidade de controle irá buscar, decodificar c executar a instrução que está em
I[3]. requerendo m ais três ciclos (e efetuando assim D/9j=RFf2J). A s quatro instruções irão
requerer 4*3 = 12 ciclos para a sua execução com pleta no processador program ável.
A unidade de controle irá necessitar de um bloco de controle, tal com o foi d escrito no
C apítulo 3. N este caso, efetuará repetidam ente os passos de busca, decodificação e execução
(após o registrador PC ter sido inicializado com 0 )-o b serv e que um bloco de controle aparece
dentro da unidade de controle da Fig. 8.4. A FSM desse bloco de controle aparece na Fig. 8.6.
A pós a obtenção de cada instrução no estado Busca , o bloco de controle increm enta o conta­
dor de program a para que a próxim a instrução seja obtida no próxim o estado de busca (ob-
Processadores Programáveis 445

serve na Fig. 8.5(a) que o PC é increm entado no final do estágio de busca). Irem os descrever
posteriorm ente as ações dos estados Decodificação e Execução.
Assim, as partes básicas da unidade de controle são
o contador de program a PC, o registrador de instrução
IR e um bloco de controle, com o está mostrado na Fig. "N IR=I
=||PC]
Busca
8.4. N os capítulos anteriores, os nossos processado­
J PC= PC+1

res não program áveis consistiam apenas em um bloco


de controle c um bloco operacional. Observe que, em
I
(Pecodmcaçào)
lugar disso, o processador program ável contém uma
unidade de controle, a qual ela própria consiste em al­
guns registradores e um bloco de controle.
Execução ^
R esum indo, a unidade de controle processa cada
instrução em três estágios:
Bloco de controle
1. P rim eiro busca-se a instrução. Para isso,
Figura 8.6 Estados básicos do bloco
carrega-se a instrução corrente em IR e in­
de controle.
crem enta-se o PC para a próxim a busca.

2 . A seguir, decodifica-se a instrução para determ inar qual é a operação.

3 . Finalm ente, executa-se a operação. Para isso, se for o caso, são ativadas as linhas de
controle apropriadas para o bloco operacional. Se a operação for de bloco operacio­
nal. a operação poderá ser um a de três tipos possíveis:
(a) carregar o conteúdo de um a posição da m em ória de dados em um a posição do
banco de registradores;
(b) transformar dados fazendo um a operação de A LU , com os conteú d o s das po­
sições do banco de registradores, e escrevendo os resultados de volta em um a
posição do banco de registradores; ou
446 Sistemas Digitais

(c) armazenar o conteúdo de um a posição do banco de registradores em um a posi­


ção da m em ória de dados.

► EXEMPLO 8.2 Criando uma seqüência simples de instruções


Para o processador da Fig. 8.4, crie um conjunto de instruções para com putar D[3] = D[0J + D /1]
+ D[2]. Cada instrução deve representar uma operação válida de bloco operacional, usando um
único ciclo de relógio.
Poderíamos começar com três operações para ler as posições na memória de dados e colocar
os seus conteúdos em posições do banco de registradores:
0. R[3] = D[01
1- Rf4] = D[l]
2. R[2] = Dl2]
Para deixar claro que podemos usar quaisquer registradores, observe que intencionalm ente
escolhemos posições de registrador arbitrárias.
Em seguida, precisam os som ar os três valores e arm azenar o resultado em uma posição do
banco de registradores, digamos /? ///. Em outras palavras, querem os executar a seguinte opera­
ção: /? /// = R[2I + R[3] + Rf4/. Entretanto, o bloco operacional da Fig. 8.4 não pode som ar os
conteúdos das três posições do banco de registradores em uma única operação, mas apenas duas
posições. Desse modo, para descrever a computação da som a desejada, poderemos dividi-la em
duas operações de bloco operacional:
3. R[I] = R[2) + R[3J
4. Rf /] = R[I] + R[4]
Final mente, escrevemos o resultado em Df3 /:
5. Dl3] - D[1I
Assim, o nosso programa consistirá nas seis instmções que aparecem acima, que poderíamos
armazenar nas posições de memória 0 a 5. <4

► EXEMPLO 8.3 Calculando o tempo de execução de um programa


Determine o número necessário de ciclos de relógio para que o processador da Fig. 8.4 execute o
programa de seis instruções do Exemplo 8.2.
O processador requer três ciclos para processar cada instrução: um ciclo para buscar a instrução,
um ciclo para decodificar a instrução buscada e um ciclo para executá-la. Usando 3 ciclos por instru­
ção, o total de ciclos para 6 instruções será: 6 instruções * 3 ciclos/instrução = 18 ciclos. ◄

► 8.3 UM PROCESSADOR PROGRAMÁVEL DE TRÊS INSTRUÇÕES


Um primeiro conjunto de instruções com três instruções
A lista das instruções possíveis e a m aneira de se rep resen tar essas instruções na m em ória
de instruções são conhecidas com o conjunto de instruções do processador program ável. Va­
m os assum ir que um processador usa instruções de 16 bits e que a m em ória de instruções I
tem 16 bits de largura. T ipicam ente, um certo núm ero de bits da instrução é reservado pelos
conjuntos de instruções para indicar qual é a operação que deverá ser realizada. O s bits res­
tantes especificam inform ações adicionais que são necessárias à execução da operação, com o
registradores de origem ou de destino. D efinirem os um conjunto de instruções sim ples que
tem três instruções. O s quatro bits m ais significativos (significando esquerda) identificam a
operação apropriada e os 12 bits m enos significativos indicam endereços no banco de regis­
tradores e na m em ória de dados, com o segue:
Processadores Programáveis 447

Instrução C arregar - 0000 r3r2r,r0d7d6d5cl4d3d2d,d0: Essa instrução especifica um a m o­


vim entação de dados que vai desde um a posição da m em ória de dados, cujo endereço é
especificado pelo bits d7d6d 5d4d 3d 2d ,d 0, até um registrador do banco de registradores, cuja
posição é especificada pelo bits r3r2r,r0. Por exem plo, a instrução “0000 0000 00000000”
especifica um a m ovim entação de dados desde a posição 0 da m em ória de dados, ou D [0 ],
até a posição 0 do banco de registradores, ou RF[0]\ em outras palavras, essa instrução
representa a operação RF[0]=D[0J. De m odo sim ilar, “0000 0001 00101010” especifica
RF[J]=D[42]. Inserim os espaços em branco entre alguns bits para facilitar a leitura do
le ito r-e sse s espaços não têm nenhum outro significado e não existem na m em ória de
instruções.

• 0001 r3r2r,r0d7d6d5d4d3d2d,du:
Instrução A r m a z e n a r - E ssa instrução esp ecifica um a
m ovim entação de dados no sentido oposto ao da instrução anterior, ou seja, um a m ovi­
m entação que vai do banco de registradores até a m em ória de dados. A ssim . “0001 0000
00001001” especifica D[9I=RF[0I.

• Instrução S o m a r -0010 ra3ra2ra,ra0rb^rb^rbjrb,, rc3rc2rc,rc0: Essa instrução especifica


som ar os conteúdos de dois registradores do banco de registradores, especificados por
rb3rb2rb ,rb 0 e rc3rc2rc,rc0. O resultado é arm azenado em um banco de registradores, no
registrador especificado por ra3ra2ra,ra0. Por exem plo, “0010 0010 0000 0001" especifica
a instrução RF[2]=RF[0]+RF[ 1]. O bserve que somará um a operação de A LU.

N enhum a dessas instruções m odifica os conteúdos dos operandos de origem . Em outras


palavras, a instrução carregar faz com que os conteúdos de um a posição da m em ória de dados
sejam copiados no registrador especificado. Os conteúdos dessa posição da m em ória de dados
perm anecem inalterados. De m odo sim ilar, a instrução arm azenar copia na m em ória de dados
os conteúdos do reg istrad o r e s­
pecificado, deixando inalterados Programa desejado
os conteúdos desse registrador. A 0: RF[01=D|0|
instrução som ar lô seus registra­ 1: RF[11=D[1)
2: RF[2)=RF[0]+RF[1]
dores b e c sem alterá-los. 3: D[9)=RF[2>
U sando esse conjunto de ins­
truções, irem os descrever o pro­
gram a an terio r q ue com putava
D / 9 / = D / 0 / + D / / / , co m o m o s­
trado na Fig. 8.7.
O b serv e q ue os p rim e iro s
quatro bits de cada instrução são
um código binário que indica a
operação da instrução. Esses bits
são conhecidos com o código de
operação da in stru ção , ou op-
co d e, abreviadam ente. Com base
no co n ju n to de instruções d efi­
nido na lista anterior, o nibble
“0000” significa um a m ovim en­
tação desde a m em ória de dados
até o b an co de re g istra d o re s,
“0001” significa um a m ovim en­
tação desde o banco de registra-
dores até a m em ória de dados e F ig u ra 8.7 Um programa que computa D /9 /= £ > /0 /+ D ///,
“ 0010” sig n ifica um a so m a de usando um dado conjunto de instruções. Inserimos espaços
dois reg istrad o res. O s bits re s­ em branco entre os bits da m em ória de instruções apenas
tantes da instrução representam por legibilidade - esses espaços não existem na memória.
448 Sistemas Digitais

os operandos , indicando com quais dados


0:0000 0000 00000101 //RF[0] = Dl5]
dcvc-se operar.
1: 0000 0001 00000110 // RF[1) = D[6]
U sando o m esm o co n ju n to de instru­
2:0000 0010 00000111 / / RF[2) = D(7)
ções de três instruções, poderíam os escre­
3: 0010 0000 0000 0001 // RF[0] = RF[0l + RF(1 ]
ver um program a diferente. Por exem plo,
// que é Dl5)+D(6)
p o d eríam o s escrev er um p ro g ram a que
4: 0010 0000 0000 0010 // RF[0l = RF(0) + RF(2]
c alcu la D[5J=D[5j+D[6]+D[7l. D eve­
// agora D|5l+D[6l+D[7]
m os executar essa com putação usando ins­
5: 0001 0000 00000101 // D(5] = RF[0]
truções escolhidas do co njunto de instru­
ções de três instruções. Poderíam os escre­
ver o program a conform e está m ostrado na Figura 8.8 Um p ro g ram a para co m p u ta r
Fig. 8.8. O núm ero antes do sinal de dois DI5]=DI5]+DI6J+DI7J usando o conjunto de
pontos representa o endereço d a instrução instruções de três instruções.
na m em ória de instruções /. O texto após o
travessão duplo (//) representa algum com entário e não faz parte da instrução.
O bserve que o program a term ina efetuando a som a desejada. Essa talvez seja a prim eira
vez que você está pensando a respeito de com putações usando instruções de baixo nível de
um processador program ável. No início, pode ser difícil pensar em term os dessas operações
em nível de registradores, m as vai se tornando m ais fácil à m edida que você vê e desenvolve
program as nesse nível.

Código de máquina versus código assembly


C om o você viu, cm um a m em ória dc instruções, as instruções dc um program a existem com o
Os c ls . Um program a representado por Os e ls 6 conhecido com o código de m áquina . As
pessoas não são particularm ente boas nas tarefas de escrever e ler program as representados
por Os e ls . N ós hum anos não conseguim os co m p reen d er facilm ente esses Os e l s c, assim ,
farem os provavelm ente m uitos erros quando escreverm os tais program as. P or essa razão,
para ajudar as pessoas a escrever outros program as, os prim eiros program adores de co m p u ­
tador desenvolveram um a ferram enta conhecida por assembler* (que em si é sim plesm ente
um outro program a). Um assembler perm ite-nos escrever instruções usando mnemónicos, ou
sím bolos, que o assembler traduz autom aticam ente para código de m áquina. A ssim , a partir
d o nosso conjunto de instruções de três instruções, um assembler pode nos d izer que p ode­
m os escrever essas instruções, usando os seguintes m nem ónicos:

► COMPUTADORES COM LUZES PISCANTES

Os grandes computadores mostrados no cinema ficavam Os. Atualmente, ninguém em juízo perfeito
têm freqüentemente muitas fileiras de pequenas tentaria escrever ou depurar um programa usando
lâmpadas piscantes. No início da computação, os código de máquina. Desse modo, os computado­
programadores faziam a programação usando có­ res de hoje parecem-se com grandes caixas - sem
digo de máquina e, para dar entrada a esse código fileira de lâmpadas. No entanto, caixas grandes e
na memória de instruções, acionavam chaves para singelas não servem como fundo interessante nos
cima e para baixo para representar Os e ls. Para filmes. Assim, para representar os computadores
perm itir a depuração (debugging) do programa, nas cenas filmadas, os realizadores de filmes conti­
assim como para mostrar os dados computados, nuam usando objetos acessórios com muitas luzes
esses primeiros computadores usavam llleiras de piscantes - luzes que não têm uso algum, mas que
lâmpadas: acesas significavam ls e apagadas signi­ são interessantes.

* N. de T: Lileralmenie. significa “montador”.


Processadores Programáveis 449

► FAZENDO ' BOOTING" EM UM COMPUTADOR

Quando um computador pessoal é ligado, o sistema estado na área de computação há muito tempo, dá
operacional é carregado. Esse processo é conhecido um origem diferente. Nos primeiros computadores,
como dar booting ou boot* no computador. O com­ uma maneira de se carregar um programa na memó­
putador executa as instruções a partir do endereço ria de instruções era criando uma fita de papel com
0, no qual usual mente há uma instrução que faz um fileiras de perfurações. Cada fila podia ter espaço su­
salto para um pequeno programa interno que é usado ficiente para, digamos, 16 perfurações. Assim, cada
para carregar o sistema operacional (o pequeno pro­ fileira representava uma instrução de máquina de 16
grama é frequentemente chamado de sistema básico bits-um furo significava um 0 e sua ausência, um 1
de entrada e saída, ou BIOS, de B a s ic Input/O utput (ou vice-versa). Um programador fazia as perfura­
System ). A maioria dos dicionários de computação ções para armazenar o programa na fita (usando uma
afirma que o termo boot origina-se na expressão po­ máquina especial de perfurar fita) e então colocava
pular “puxar-se para cima pelas alças (bootstraps) a fita na leitora de fita do computador, a qual lia as
das próprias botas", o que significa erguer-se sem fileiras de Os e ls e carregava esses Os e ls na memó­
nenhuma ajuda, embora, obviamente, você não possa ria de instruções do computador. Essas fitas podiam
lazer isso segurando as alças de suas próprias bolas e ter alguns metros de comprimento e pareciam-se
puxando-se para cima - daí a perspicácia da expres­ muito com as alças de uma bota. vindo daí o termo
são. Como o computador carrega o seu próprio sis­ bootstrap , abreviado para boot. Independentemente
tema operacional, ele está de cena forma erguendo- de qual seja a verdadeira origem, podemos estar bas­
se sem nenhuma ajuda. O termo bootstrap acabou tante certos de que o termo boot veio das alças das
sendo abreviado para boot. Um colega meu, que tem botas (bootstraps ) que usamos em nossos pés.

• Instrução Carregar- MOV Ra, d: especifica a operação RF[al=D[d]. C) valor de a deve


ser 0, 1 ,..., ou 15-assim RO significa RF[0J, RJ significa R F [I /. etc. O valor de cl deve
ser 0. I , 255.

• Instrução Arm azenar- M O V d, Ra : especi fica a operação D[(lj=RFlaJ.

• Instrução Som ar- ADD Ra, Rb, Rc: especifica a operação RF[aJ=RFIb]+RF[cJ.

U sando esses m nem ónicos, poderíam os reescrever o program a D[9J=DI0I+D[ I / com o


segue:

0: M OV RO. 0
1: M OV R l , I
2: A D D R2, RO, R l
3: M OV 9, R2

Esse program a é m uito m ais fácil de ser entendido do que os Os e ls da Fig. 8.7. Um pro­
gram a escrito com m nem ónicos é conhecido com o código a sse m b ly . o qual será traduzido
para código de m áquina por um assembler. N os dias atuais, dificilm ente alguém escreveria
diretam ente em código de m áquina. O program a assentbly anterior seria traduzido au tom ati­
cam ente por um assembler para o código de m áquina m ostrado na Fig. 8.7.
Você p o d e e sta r se p e rg u n ta n d o c o m o o assembler p o d e d is tin g u ir e n tre as in stru ­
çõ es a n te rio re s d e c a rre g a r e arm azen ar, j á q u e os m n e m ó n ico s p a ra as d u as in stru çõ es
são o m esm o - “ M O V ". O assembler faz a d istin ção en tre esses d o is tipos de in stru çõ es
o lh an d o o p rim eiro c a ra c te re ap ó s o m n em ó n ico “ M O V " - se o p rim eiro c a ra c te re fo r um
“ R ", esse o p eran d o será um reg istra d o r e, p o rtan to , a in stru ção d ev erá se r um a in stru ção
de carresar.

* N. de T: Esse termo inglês vem de bootstraps, ou seja. são as alças que. quando presentes, são colocadas no topo e nas laterais
dos canos das botas, servindo para puxá-las quando são colocadas nos pés.
450 Sistemas Digitais

Unidade de controle e bloco operacional


para o processador de três instruções
A pós d e fin ir o c o n ju n to dc in s­
truções de três instruções e co m ­
preender a arq u itetu ra básica dos
blocos de controle e operacional de
um processador program ável, com o
m ostrado na Fig. 8.4. poderem os
projetar o circuito digital com pleto
de um p ro c e ssa d o r program ável
de três instruções. N a realidade, o
p rocesso de projeto ê m uito sim i­
lar ao processo de projeto RTL do
C apítulo 5.
F ig u ra 8.9 Descrição de um processador programável
Por m eio de um a m áq u in a de de três instruções por meio de uma máquina de estados
estados de alto nível, com eçam os de alto nível.
com a d escrição m ostrada na Fig.
8.9. A ssum a que op é um a form a abreviada de IR[ 15..12], significando os quatro bits m ais à
esquerda do registrador de instrução. De m odo sim ilar, assum a que ra é um a form a abreviada
dc IR[]]..8], rb, dc IR[7.A /, rc, de IR/3..0 / e d. de IR/7..0].
L em bre-se que o próxim o passo d o processo de p rojeto RTL 6 criar o bloco o p eracio ­
nal. N ós já criam os um bloco operacional na Fig. 8.4, o qual será d etalhado para m ostrar
todos os sinais de controle do bloco de controle, com o m ostrado na Fig. 8.10. E sse bloco
operacional detalhado tem sinais de controle para cada porta de leitura e escrita do banco de
registradores (veja o C apítulo 4 para obter inform ações sobre os bancos de registradores). O

Figura 8.10 Bloco operacional refinado e unidade de controle para o processador de três instruções.
Processadores Programáveis 451

banco de registradores tem 16 registradores porque as instruções dispõem de quatro bits para
endereçá-los. O bloco operacional tem um sinal de co n tro le para a A LU cham ado a lu sO -
assum irem os que, quando alu _ sO = l. essa A LU elem en tar som a as suas entradas e, quando
alu _ s0 = 0 . sim plesm ente deixa passar a en trad a A. O bloco operacional tem um a linha de
seleção para o m ultiplexador 2x I que se encontra na frente da porta de escrita de dados do
banco de registradores. Finalm ente, incluím os tam bém sinais de controle para a m em ória de
dados, a qual assum im os ter um a única porta de endereço, podendo assim suportar apenas ou
leitura ou escrita, m as não am bas sim ultaneam ente. A m em ória de dados tem 256 palavras, já
que a instrução tem apenas oito bits para endereçar a m em ória de dados.
A gora, o bloco operacional está capacitado a efetuar todas as operações de carga, arm aze­
nam ento e aritm éticas de que precisam os na m áquina de estad o s de alto nível da Fig. 8.9.
A ssim , podem os prosseguir indo para o terceiro passo do processo de projeto RTL, fazendo a
conexão do bloco operacional a um bloco de controle. A Fig. 8.10 m ostra essas conexões,
assim com o as conexões do bloco de controle aos registradores PC e IR da unidade de co n ­
trole e à m em ória de instruções /.
O últim o passo d o p ro ­
cesso de projeto RTL é obter A tR~=ifP€ )-P6 -P€ rV
a FSM do bloco de controle. Busca
J I rd=1 PC inc=1
De im ediato, podem os fazer
isso su b stitu in d o as ações
de alto nível d a m áq u in a
PC_ clr=1
JT
Decodificação)
lR_ld=1

de estados da Fig. 8.9 por


o p eraçõ es b o o lean as a p li­ op=0000 op=0001 op=0010
cadas às linhas de entrada e
saída do bloco de controle,
com o está m ostrado na Fig.
-G ic
°tj
§ 2 f - Ç Carregar ^
i
Armazenar Somar
_
r C )
8.11. (L e m b re -se de q ue CO Q)
Q> •— BfcH-RF-jrat- -RFfraj---ftFfitfr
op. d , ra, rb e rc são form as D_addr=d D_addr=d ■Rffrci—
abreviadas para // ? // 5 ../2 / , D_rd=1 D_wr=1 RF_Rp_addr=rb
IRf7..01,IR[11..8],IR[7..4] RF_s=1 RF_s=X RF_Rp_rd=1
e IR I3 ..0 / , r e s p e c tiv a ­ RF_W_addr=ra RF_Rp_addr=ra RF_s=0
RF W wr=1 RF_Rp_rd=1 RF_Rq_addr=rc
m ente.). U san d o os m éto ­
dos do C apítulo 3, podere­ jL A RF_Rq _rd=1
RF_W_addr=ra
m os en tão term in ar o pro­ RF_W_wr=1
je to do bloco de controle, alu_s0=1
convertendo a FSM em um F ig u ra 8.11 FSM para o bloco de controle do processador de
registrador de estado e um a ires instruções.
ló sica com binacional.
Terem os assim projetado um processador program ável.
Vamos analisar passo a passo o com portam ento da FSM do bloco de controle, para ver com o
um program a seria executado no processador de trés instruções. Com o lembrete, tenha em mente
que estam os seguindo as convenções FSM de que todas as transições estão im plicitam ente fa­
zendo uma operação AND com a borda de subida do relógio e que, em um estado, um sinal terá
im plicitam ente o valor 0, a não ser que explicitam ente lhe tenha sido atribuído um valor.

• Inicialm ente, a FSM com eça no estado Início , o qual faz PC_cl r = 1. Isso lim pa o registra­
dor PC deixando-o com 0.

• No próxim o ciclo de relógio, a FSM entra no estado de Busca, no qual ela lê a memória de
instruções no endereço 0 (porque PC é 0) e carrega o valor lido em IR - esse valor lido será a
instrução que foi arm azenada em //O/. Ao m esmo tem po, a FSM increm enta o valor de PC.

• N o próxim o ciclo de relógio, a FSM entra no estado de Decodificação , no qual não há


ações, m as haverá na próxim a borda de relógio um salto para um dos três estados Car-
452 Sistemas Digitais

regar, Armazenar ou Somar, dependendo dos valores dos quatro bits m ais à esquerda do
registrador IR (o código de operação da instrução corrente).

N o estado de Carregar, a FSM prepara as linhas de endereço da m em ória de dados usando


os oito bits m ais à direita de IR e colocando em 1 a habilitação de leitura da m em ória de
dados. A tiva tam bém a linha de seleção do m ultiplexador 2x I para que o valor da saída da
m em ória de dados passe para o banco de registradores e prepara o endereço de escrita do
banco de registradores, usando IR[11..8] e colocando a habilitação de escrita em 1. Isso
faz com que qualquer conteúdo que esteja na m em ória de dados seja carregado no regis­
trador apropriado do banco de registradores.

• De m odo sem elhante, os estados Armazenar e Somar preparam as linhas de controle co n ­


form e a necessidade das operações de arm azenam ento e som a.

• Finalm ente, a FSM retorna ao estado de Busca e com eça a buscar a próxim a instrução.

O bserve que, com o o estado Armazenar não escreve no banco de registradores, então o va­
lor do bit da linha de seleção do m ultiplexador não é im portante. A ssim , nesse estado, fazem os
a atribuição de sinal RF_s=X, significando que o valor do sinal é irrelevante. O uso desse valor
d o n t core (veja a Seção 6.2) pode nos ajudar a m inim izar a lógica do bloco de controle.
Você pode estar se perguntando por que é necessário o estado Decodificação , já que esse
estado não contém ações - no lugar disso, não poderíam os fazer as transições de Decodifica­
ção originarem -se no estado Buscai L em bre-se da Seção 5.3 de que as atualizações de regis­
trador atribuídas a um estado só ocorrem de fato na próxim a borda de relógio. Isso significa
que as transições originárias de um estado irão usar os valores anteriores dos registradores.
A ssim , não poderíam os realizar as transições de Decodificação a partir do estado Busca , por­
que essas transições estariam usando o código de operação antigo do registrador de instrução
IR, não o novo valor que é lido durante o estado Busca.

► 8.4 UM PROCESSADOR PROGRAMÁVEL DE SEIS INSTRUÇÕES


Estendendo o conjunto de instruções
A
F claro que dispor de um conjunto de instruções que contém apenas três instruções torna lim i­
tado o com portam ento dos program as que poderem os escrever. Tudo o que poderem os fazer
com essas instruções é som ar núm eros. Um processador program ável real su p o rtará m uito
m ais instruções, talvez 100 ou m ais, de m odo que um a variedade m ais am pla de program as
poderá ser escrita.
V am os estender o conjunto de instruções do nosso p rocessador program ável acrescen ­
tando m ais algum as poucas instruções. Isso lhe dará um a idéia ligeiram ente m elhor de com o
seria um processador program ável se ele tivesse um conjunto com pleto de instruções.
C om eçarem os introduzindo um a instrução que é capaz de carregar o valor de um a cons­
tante em um dos registradores de um banco de registradores. Por exem plo, suponha que quisés­
sem os com putar RF[0J = RFII j + 5. O 5 é um a constante. U m a constante 6 um valor que faz
parte do nosso program a, não algo que se encontra na m em ória de dados. Precisam os de uma
instrução que nos perm ita carregar um a constante em um registrador. D epois disso, poderem os
som ar o conteúdo desse registrador a RF[ / / usando a instrução ADD. A ssim , introduzim os
um a nova instrução com as seguintes representações em códigos de m áquina e assembly :

• Instrução Carregar constante- 0011 r3r2r,r0 c7c6c 5c4c 3c 2c ,c0: especifica que o núm ero
binário representado pelos bits c7c 6c 5c4c 3c 2c ,c 0 deve ser carreg ad o no registrador e sp e ­
cificado por r3r2r,r0. O núm ero binário q u e está sendo carregado é conhecido com o um a
constante. O m nem ónico dessa instrução é:
M O V R a , # c-esp ecifica a operação RFIaj = c
Processadores Programáveis 453

a pode ser O, 1 ,..., ou 15. A ssum indo a representação em com plem ento de dois (veja a
Seção 4.8), c pode s e r -1 2 8 , - 1 2 7 ,.... 0 ,..., 126, 127. O “# ” perm ite que o assembler distinga
essa instrução de um a instrução regular de arm azenam ento.
C ontinuam os introduzindo um a instrução para realizar a subtração de dois registradores,
sem elhante à som a de dois registradores, tendo as seguintes representações em códigos de
m áquina e assembly :

• Instrução S u b tr a ir - 0100 ra3ra2ra,ra0rb3rb2rb,rb0rc3rc2rc,rc0:


esp ecifica a su b tra­
ção dos conteúdos de dois registradores do b anco de reg istrad o res, esp ecificad o s por
rb3rb2rb ,rb 0 e rc3rc2rc,rc0. O resultado é arm azenado no registrador do banco de registra­
dores especificado por ra3ra2ra lra(>. P or exem plo, “0100 0010 0000 0001” especifica a
instrução RFf2]=RFI0l - RF[ / / . O m nem ónico dessa instrução é:

SU B Ra, Rb, R c-esp ecifica a operação RF[a] = RF[b] - RF[cJ


Vamos introduzir tam bém um a instrução que nos perm itirá saltar para outras partes de um
program a:

• Instrução S a lta r se z e r o - 0101 ra3ra2ra,ra0o7o6o5o4o3o2o1o0:


esp ecifica que se o co n ­
teúdo do registrador especificado por ra3ra2ra,ra(J fo r 0, en tão nós deverem os carregar o
PC com o valor corrente de PC m ais o7o6o5o4o3o 2o ,o 0, que é um núm ero de oito bits, na
form a de com plem ento de dois, representando um valor positivo ou negativo de offset*. O
m nem ónico dessa instrução é:

J M P Z ** Ra, o ffset-esp ecifica a operação PC = PC[b] + offset se RF[a] for 0.


Sc usarm os com plem ento de dois no offset do salto, perm itindo a representação de núm e­
ros positivos e negativos, o program a poderá saltar para frente e para trás dentro do program a,
im plem entando assim um laço. C om um offset de oito bits, a instrução poderá especificar um
salto para frente de até 127 endereços, ou para trás de até 128 endereços (-128 até +127).
A Tabela 8.1 resum e o conjunto de ins­
T a b e la 8.1 Conjunto de instruções de seis
truções de seis instruções. Um processador
instruções
program ável vem acom panhado de um m a­
nual de especificações que lista as instru­ In stru çã o S ig n ific a d o
ções do p rocessador e dá o significado de
MOV Ra, d Rf[a]=D[d]
cada instrução, usando um form ato sim ilar
ao da Tabela 8.1. P rocessadores program á­ MOV d, Ra D[d]=RF[a]
veis típicos têm dúzias, e m esm o centenas, ADD Ra, Rb, Rc RF[a]=RF[b]+RF[c]
de instruções.
MOV Ra, #C RF[a]=C

Estendendo a unidade de controle SUB Ra, Rb, Rc RF[a]=RF[b]-RF[c]


e o bloco operacional JM P Z Ra, offset PC=PC+offsetse RF[a)=0
C om o se m ostra na Fig. 8.12, as três novas
instruções requerem algum as extensões na u n id ad e de co n tro le e no bloco operacional da
Fig. 8.10. P rim eiro , a in stru ção carregar constante re q u e r q u e o b an co de reg istrad o res
seja c a p a z de c a rre g a r d ad o s d e IR17..0J, além da m em ó ria de d a d o s e da saíd a da A LU .
A ssim , aum entam os o m u ltip lex ad o r d o b anco d e registradores de 2x1 para 3x1, ad icio n a­
m os m ais um sinal de controle ao m u ltip lex ad o r e criam o s tam bém um novo sinal, de nom e
RF_\V_data , q ue vem do b lo co d e co n tro le lig an d o -se à IR[7..0] - essas alteraçõ es estão
destacad as na Fig. 8.12 pelo círcu lo tracejad o de nom e S egundo, a instrução subtrair

* N . d e T: T e rm o u s a d o p a ra se re fe rir a u m v a lo r q u e é a c re s c e n ta d o a a lg u m a o u tra q u a n tid a d e , re p re s e n ta n d o u m in c re m e n to


e m re la ç ã o a e s ta ú ltim a .

** N. de T: D e jump ifzero, e m in g lê s, o u s e ja . s a lta r se z e ro .


454 Sistemas Digitais

s1 sO Operação da ALU
0 0 A passa pela ALU
0 1 A+B
1 0 A -B

D_addr 8
D

256x16

• ' >' ViTcfãfã " ‘

/
1
■' T I

2 1 0 #
S1 16 bits ,
sO 3x1 .X '
a+b-1
16

RF W _addr W data
W _addr
RF W w r
Bloco de controle W _w r
RF_Rp_addr
Rp_addr
RF_Rp_rd RF
Rp_rd
RF_Rq_addr 16x16
Rq_addr
RF_Rq_rd
Rq_rd

Rp_data Rq_data

I
3a v ___ 1 1
RF_Rp_zero
=0 16
^ 7 16 \

alu s1
>
alu_sO I
ã

Unidade de controle Bloco operacional

Figura 8.12 Blocos de controle e operacional para o processador de seis instruções.

req u er q u e usem os um a A L U c ap az d e la z e r su b tração . A ssim , acrescen tam o s um outro


sinal de co n tro le à A L U , d estacad o pelo círcu lo tracejado de nom e "2" na figura. T erceiro,
a instrução saltar se zero req u er q ue sejam o s cap azes de d etectar se um reg istrad o r e zero
e so m ar IR/7..0I ao PC. D esse m odo, inserim o s um com p o n en te de bloco operacional para
d eterm in ar se a porta de leitura Rp do banco de reg istrad o res está com todos os bits em zero
(esse co m p o n en te seria apenas um a p orta N O R ). E le está in d icad o pelo círcu lo tracejado
de n o m e "3a" na figura. M odificam os tam bém o registrador PC d e m odo q u e ele p o ssa ser
carregado com o valor de PC m ais o d e IR[7..0U in d icad o p o r "3b" na figura. O so m ad o r
usado para isso tam bém subtrai l da som a, para co m p en sar o fato de q u e o estado Busca já
acrescentou l ao PC.
Tam bém precisam os estender a FSM do bloco de controle que está dentro da unidade de
controle para que seja capaz de lidar com as três instruções adicionais. A Fig. 8.13 m ostra a
FSM estendida. O s estados Início e Busca perm anecem os m esm os. Partindo do estado Deco-
dificação , acrescentam os três novas transições para os três novos códigos de operação de ins­
truções. Fizem os um a pequena revisão das ações dos estados Carregar, Armazenar e Somar
(as novas ações estão em itálico), j á que o m ultiplcxador do banco de registradores tem um
Processadores Programáveis 455

I_rd=1
Busca j PC_inc=1
PC_clr=1 A IR ld=1

D_addr=d D_addr=d RF_Rp_addr=rb RF_s1=1 RF_Rp_addr=rb RF_Rp_addr=ra


D_rd=1 D_wr=1 RF_Rp_rd=1 RF_s0=0 RF_Rp_rd=1 cr RF_Rp_rd=1
R F_s1=0 R F_s1=X R F _ s l= 0 RF_W_addr=ra RF_s1=0
RF_sO=1 R F _sO =X R F _$ 0= 0 RF W wr=1 RF_s0=0
RF_W_addr=ra RF_Rp_addr=ra RF_Rq_add=rc RF_Rq_addr=rc
RF W wr=1 RF_Rp_rd=1 RR_Rq_rd=1 RF_Rq_rd=1 S a lta r ^

RF_W_addr_ra RF_W_addr=ra <u


PC ld=1 NI
I
RF_W_wr=1 RF_W_wr=1 Q.
a lu _ s 1 = 0 alu_s1=1 cr
a lu s 0 = 7 alu s0=0 cr
A A A A A

Figura 8.13 FvSM para o bloco de controle do processador de seis instruções.

m ultiplexador com duas linhas de seleção ao invés de um a. De m odo sem elhante, revisam os
as ações do estado Somar para que a A LU seja configurada com duas linhas de controle ao
invés de um a. A dicionam os quatro novos estados, Carregar constante , Subtrair , Saltar se
zero e Saltar , para as três novas instruções. O s novos estados dessas instrução realizam as
seguintes funções no bloco operacional:

• N o estado Carregar constante , configuram os o m ultiplexador do banco de registradores


para deixar passar o sinal RF_W_data e o banco de registradores para escrever no endereço
especificado por ra (que é //? / 11..8J).

• N o estado Subtrair , executam os as m esm as ações do estado Somar , exceto que a ALU é
configurada para subtração ao invés de adição.

• No estado Saltar se zero , configuram os o banco de registradores p ara que o registrador


especificado por ra seja lido e seu conteúdo colocado na porta de leitura Rp. Se o valor Rp
do registrador lido contiver apenas Os, então RF_Rp_zero irá se tornar 1 (e 0, em caso co n ­
trario). A ssim , incluím os duas transições partindo do estado Saltar se zero. U m a transição
será tom ada se RF_Rp_zero for 0. significando que o registrador lido não contem som ente
O s-essa transição leva a FSM de volta ao estado Busca , significando que não ocorre ne­
nhum salto de fato. A outra transição será tom ada se RF_Rp_zero for 1, significando que
o registrador lido é todo só de Os. E ssa transição vai para um outro estado, Saltar , o qual
deverá efetivam ente realizar o salto. Esse estado efetua a transição sim plesm ente ativando
a linha de carga do PC.

O bserve que, com o acréscim o da instrução Saltar se zero , o processador poderá precisar
de até quatro ciclos para com pletar um a instrução. E specificam ente, quando o registrador ra
de um a instrução Saltar se zero for todo de Os, então um estado extra será necessário para
carregar o PC com o endereço da instrução para a qual se deve saltar.
456 Sistemas Digitais

> 8.5 PROGRAMAS EXEMPLOS EM LINGUAGEM ASSEMBLY


E EM CÓDIGO DE MÁQUINA
U sando o conjunto de instruções de seis instruções da se­ TABELA 8.2 C ódigos de
ção anterior e usando o processador de seis instruções para o p e ra çã o de in s tru ç õ e s
realizar um a tarefa em particular, darem os agora um exem ­
plo de program ação em linguagem assembly e m ostrarem os Código de
com o esse código seria convertido em código de m áquina Instrução operação
por um assembler. A T abela 8.2, que m apeia as instruções MOV Ra, d 0000
em códigos de operação, seria usada pelo assembler.
MOV d, Ra 0001

ADD Ra, Rb, Rc 0010


► EXEMPLO 8.4 Códigos de máquina e assembly de
um programa simples MOV Ra, #C 0011
Escreva um programa que conta o número de palavras que são SUB Ra, Rb, Rc 0100
diferentes de zero nas posições 4 e 5 da memória de dados e
JM P Z Ra, offset 0101
que arm azena o resultado na posição 9 da memória de dados.
Assim, os resultados que poderiam ser armazenados na posição
9 são zero, um e dois.
Usando o conjunto de instruções da Tabela 8.2, poderemos escrever o programa assembly que
está mostrado na Fig. 8 .14(a). O program a guarda o valor da contagem no registrador RO, o qual
d inicializado com 0. Mais tarde, o programa poderá precisar som ar 1 a esse registrador, de modo
que ele carrega o valor 1 no registrador RI. A seguir, o programa carrega o conteúdo da posição 4
da memória de dados no registrador R2. Então, se o valor de R2 for zero. o programa saltará para
a instrução de rótulo “rot 1 Se R2 não for zero, o programa executará uma instrução de soma que
adicionará 1 ao registrador RO e, então, irá prosseguir com a instrução de rótulo “rot 1”, já que essa
instrução é a próxima instrução. A instrução de rótulo “r o tl” carrega o conteúdo da posição 5 da
memória de dados no registrador R2. Se R2 for zero, o programa saltará para a instrução de rótulo
“rot2”. Se R2 não for zero, o programa executará uma instrução de somar que adicionará 1 ao re­
gistrador RO e, então, seguirá para a próxima instrução, que é a instrução com rótulo *‘rot2”. Essa
instrução armazena os conteúdos do registrador RO na posição 9 da memória de dados.

M O V RO, # 0 ; / / in ic ia liz e o r e s u lt a d o c o m 0 0011 0000 0 0000000

M O V R 1 , # 1 ; / / c o n s ta n te 1 p a ra in c r e m e n t a r o r e s u lt a d o 0011 0001 00000001

M O V R 2, 4 ; / / p e g u e a p o s iç ã o 4 d a m e m ó r ia d e d a d o s 0000 0010 00000100

J M P Z R 2. r o t l ; / / se z e ro , s a lte a p r ó x im a in s tr u ç ã o 0101 0010 00000010

A D D RO, RO, R 1 ; / / n ã o z e ro , r e s u lt a n d o p o r t a n t o u m in c r e m e n to 0010 0000 0 000 0001

r o t l :M O V R 2 , 5 ; / / p e g u e a p o s iç ã o 5 d a m e m ó r ia d e d a d o s 0000 0010 00000101

J M P Z R 2. r o t2 ; / / se z e ro , s a lte a p r ó x im a in s tr u ç ã o 0101 0010 00000010

A D D RO, RO, R 1 ; //n ã o z e ro , r e s u lt a n d o p o r t a n t o u m in c r e m e n to 0010 0000 0000 0001

r o t2 :M O V 9 , RO; // a r m a z e n e o r e s u lt a d o n a p o s iç ã o 9 d a m e m ó r ia d e d a d o s 0001 0000 00001001

(a) (b)
Figura 8.14 Um program a que conta o número de palavras diferentes de zero em 0 / 4 / e 0 / 5 /
c arm azena o resultado em 0 /9 /: (a) código assembly e (b) código de máquina correspondente,
gerado por um assembler. Nas instruções de 16 bits do código de máquina, os espaços em branco
estão ali para a conveniência do leitor durante a leitura deste livro; nos códigos de máquina reais,
não há esses espaços.

Quando escrevemos o programa assembly, os registradores que usamos para arm azenar o re­
sultado, a constante l e a cópia dos conteúdos da posição da memória de dados são escolhidos ar­
bitrariamente. Com esse propósito, poderíamos ter usado qualquer registrador. Por exemplo, pode-
Processadores Programáveis 457

ríamos ter usado o registrador R7 para guardar o resultado. Isso significa que, no código, todas as
ocorrências de RO poderiam ser substituídas por R7. Além disso, ao escrever o programa assembly,
escolhemos arbitrariamente os rótulos “r o tl” e “rot2” . Poderíamos ter usado outros nomes para
esses rótulos, tais como “sa lta i” e “pronto”, ou “Fred” e “George” . O melhor, no entanto, é usar
rótulos descritivos que ajudem as pessoas a ler o código assembly e a entender o programa.
Um assembler converteria autom aticam ente o código assembly no código de máquina mos­
trado na Fig. 8.14(b). Para cada instrução assembly, o assembler determina o tipo específico de
instrução olhando o mnemónico e, se necessário, os operandos. Então, fornece os bits apropriados
para o código de operação (quatro bits) daquele tipo de instrução, como está definido na Tabela
8.2. Por exemplo, o assembler olhará a primeira instrução “MOV RO, #0” e saberá assim, com
base nas três primeiras letras “MOV”, que essa é uma das instruções de movimentação de dados; o
assembler olhará os operandos e vendo “RO” saberá que se trata de uma instrução comum de carga
ou uma que carrega uma constante. Finalmente, o assembler verá o “# ” e concluirá que se trata de
uma instrução de carga de uma constante, produzindo assim o código de operação “0011” de uma
instrução de carga de constante, como está mostrado na primeira instrução de máquina da figura.
O assembler também converte os operandos em bits, convertendo o “RO” da primeira instrução em
“0000” e “#0” em “00000000”, como mostrado na primeira instrução de máquina da figura.
A instrução JM PZ requer algumas manipulações a mais. O assembler reconhece que se trata
de uma instrução Saltar se zero, fornecendo assim o código de operação “0101” . O assembler
converte o primeiro operando “R2” em “0010”. A seguir, ele chega ao segundo operando, “r o tl,”
e não sabe quais bits produzir, pois ele não sabe ainda qual é o endereço da instrução cujo rótulo
é “ rot I ” , porque o assembler ainda não chegou até essa instrução do programa. Para resolver esse
problema, muitos assembfers dão duas passadas no código assembly: durante a primeira passada,
o assembler cria uma tabela com todos os rótulos e seus endereços e. então, na segunda passada,
o assembler fornece o código de máquina. Portanto, durante a segunda passada, tal assembler
saberá que a instrução de rótulo “r o tl” está em um endereço localizado dois endereços após a
primeira instrução JM PZ - especificamente, que a instrução de rótulo “ro tl” está no endereço 5,
ao passo que a instrução JM PZ está no endereço 3 (assumindo que a primeira instrução está no
endereço 0, não I ). Desse modo, o assembler dá um offset de 2 para que seja efetuado um salto
de 2 endereços para a frente. Observe que os rótulos “ro tl” e “rot2” não aparecem no código de
m áquina, são meramente elem entos construtivos que o assembler oferece ao program ador de
limuiasem
W W assembly.
m' M

8.6 OUTRAS EXTENSÕES D0 PROCESSADOR PROGRAMÁVEL


Extensões do conjunto de instruções
A extensão com mais instruções do conjunto de instruções iria requerer tipos sem elhantes de ex­
tensões e m odificações da unidade de controle, do bloco operacional e da FSM . Um processador
programável pode conter dúzias de instruções de movimentação de dados para transferir dados
entre a m em ória de dados e o banco de registradores, ou entre registradores. Por exem plo, um
processador pode ter instruções que copiam os conteúdos de um registrador em um outro (como
MOV RO, R l, que copia os conteúdos de Rl em RO). O processador executa essas instruções
usando um estado que lê o registrador de origem , faz passar inalterado o valor lido através da
ALU e escreve o valor da saída da ALU no registrador destino. Com o outro exemplo, um proces­
sador pode ter instruções que usam os conteúdos de um registrador para indicar o endereço na
m em ória de dados onde será feita a leitura. Isso é conhecido com o endereçam ento indireto.
Um p rocessador program ável tam bém pode co n ter dúzias de instruções aritméticas e
lógicas , as quais efetuam operações aritm éticas e lógicas com os registradores do banco de
registradores. Por exem plo, um p rocessad o r pode incluir não apenas instruções de som a e
subtração, m as tam bém instruções de increm ento, com plem ento, decrem ento, A N D , O R,
X O R. deslocam ento à esquerda, deslocam ento à direita e outras, que poderiam ser realizadas
em um a A LU.
458 Sistemas Digitais

Um processador program ável pode co n ter tam bém diversas instruções de controle de
flu x o , as quais determ inam o próxim o valor do PC. Por exem plo, um processador pode in­
cluir não só um a instrução de saltar se zero, m as tam bém instruções de saltar se não zero, um
salto incondicional, um salto indireto e talvez m esm o instruções com o saltar se negativo e
outras sim ilares. Além disso, um processador pode incluir instruções que fazem saltos m aio­
res do que um pequeno offset em relação ao valor corrente do PC e talvez m esm o saltos para
endereços absolutos ao invés de endereços relativos {offset).

Extensões de entrada e saída


A S eção 1.3 in troduziu um m icro p ro cessad o r
D 256x16
básico que continha oito entradas 10, II, ..., 17 e
addr 0
oito saíd as PO, PI, ..., P7. P od em o s esten d er o
rd
processador program ável básico da Fig. 8 .12 para 1
wr
im plem entar essas entradas e saídas externas. Um 2:

•••
m étodo para essa fazer essa extensão utiliza uma
m em ória de dados especialm ente projetada. N essa 239:

m em ória, podem os su b stitu ir as últim as 16 pala­


t -f
240: 00..0 •IO
vras da m em ória por conexões diretas com os pi­ 241:>I______
00..0 •11
• • •
nos de entrada e saída, com o está ilustrado na Fig.
8.15. Para fazer arm azenam entos nas posições 0 a 248:!
t
i______
•••
PO
239, a m em ória de dados usa um a RAM norm al.
255:i P7
E ntretanto, a posição 240 é na realidade um a pala­ I______ I
vra especial, cujos 15 bits m ais significativos são > W_data Rdata

todos Os e cujo bit m enos significativo vem de um


flip-flop, que é carregado a cada ciclo com o valor
que está no pino externo 10. A ssim , a leitura da
Figura 8.15 Conexão de pinos externos.
posição 240 dará 0 0 .. .01 (inteiro I), ou 0 0 .. .00
(inteiro 0), dependendo do valor que aparecer em
10. De m odo sim ilar, a posição 241 está conectada ao pino II, a posição 242 a 12, e assim por
diante, com a posição 247 estando conectada a 17. As posições 248 até 255 estão conectadas
aos pinos P0 a P7. exceto que os pinos estão ligados às saídas, e não às entradas, dos flip-
flops dessas posições. Por exem plo, quando se escreve na posição 255, o flip-flop é carregado
com 0 ou 1 (apenas interessa o bit m enos significativo durante a escrita), sendo que esse flip-
flop aciona o pino externo P7 de saída.

► EXEMPLO 8.5 Detector de movimento no escuro usando linguagem assembly


A Seção 1.3 continha um exemplo, ilustrado na Fig. 1.13, que utilizava um microprocessador para
implementar um detector de movimento no escuro. Aquela seção utilizou código C para computar
a expressão P0 = 10 && !II. Neste exemplo, mostramos o código a ss e m b ly subjacente que im­
plementa essa expressão em C. Assumindo que os pinos externos 10.. 17 e P0..P7 estão mapeados
nas posições da memória de dados como se ilustra na Fig. 8.15, poderemos programar a expressão
em a sse m b ly como segue:

0: MOV RO, 240 // mova D[240/, que é o valor no pino 10, para RO
1: MOV R l. 241 // mova D[241 /, que é o valor no pino II, para RI
2: NOT R I . Rl II compute !//, assumindo que há instrução para complementar
3: AND R0. R0.R1 // compute 10 && !//, assumindo que há instrução AND
4: MOV 248, RO // mova o resultado para D/24H], que é o pino PO ◄
Processadores Programáveis 459

Extensões de desempenho
U m a diferença entre processadores reais e o processador com arquitetura básica deste cap í­
tulo é que m uitos processadores reais usam pipelining (veja a Seção 6.5 para uma introdução
ao pipelining). A arquitetura básica, de três instruções, utilizava um bloco de controle com
três estágios: busca , decodificação e execução. Se inserirm os registradores apropriados de
pipeline no projeto e m odificarm os o bloco de controle apropriadam ente, poderem os fazer
pipelining nos estágios de busca, decodificação e execução. Em outras palavras, quando a
unidade de controle decodifica a instrução 1, ela pode buscar sim ultaneam ente a instrução 2.
A seguir, enquanto a unidade de controle executa a instrução 1, ela pode decodificar a ins­
trução 2 e buscar a instrução 3. A ssim , ao invés de processar apenas um a instrução a cada 3
ciclos, a unidade de controle pode processar um a instrução a cada ciclo. C ada instrução ainda
necessita de 3 ciclos para o processam ento (um a latência de 3 ciclos), m as com o pipelining
obtém -se um throughput de um único ciclo. O resultado líquido será que os program as serão
executados com um a rapidez três vezes maior.
U m a outra extensão envolve a criação de pipelines com m aio r profundidade. A ssim , ao
invés de apenas três estág io s (busca, d eco d ificação , execução), p o d erem o s d esm o n tar os
estágios obtendo um a gran u larid ad e m ais fina (p o r exem plo, busca, decodificação, leitura
de o perandos, execução, arm azen am en to de resu ltad o s). A c ria çã o de estág io s m ais refi­
nados pode en cu rtar o atraso m ais longo entre um reg istrad o r c outro, o q u e p erm ite um a
freqüência de relógio m ais rápida. O resultado líquido será novam ente um a execução m ais
rápida de program as.
U m a outra extensão envolve o bloco op eracio n al disp o r de m últiplas A L U s. A ssim , si­
m ultaneam ente a unidade de co n tro le pode realizar m últiplas operações de A L U no bloco
operacional. U m a form a dessa ex tensão consiste em um p ro cessad o r cujo conjunto de ins­
truções usa instruções tais que um a única instrução contém m últiplos códigos de operação
além dos respectivos operandos, sendo co n h ecid o co m o p ro cessad o r de palavra de instru­
ção muito larga ( V LIW de Very Large Instruction Word). U m a o u tra form a usa um p ro ­
cessador cuja unidade de controle lê sim ultan eam en te m últiplas instruções e, então,✓ atribui
essas instruções às A L U s disponíveis para que sejam executadas sim ultaneam ente. E conhe­
cido com o processador superescalar. Um p rocessador desktop m ais avançado pode suportar
possivelm ente 5 instruções sim ultâneas, com talvez 10 estágios de pipelining. A ssim , a q u al­
q u er instante, esse processador pode estar no m eio do processam ento de 5*10= 50 instruções
diferentes. D esnecessário dizer, m as as arq u itetu ras m odernas de p ro cessad o res podem se
tornar bem com plexas.
E ste capítulo descreveu a idéia básica de com o o projeto de um processador program ável
funciona e com o o projeto pode ser estendido para suportar um conjunto m ais com pleto de
instruções. D eixam os para os livros-textos sobre arquitetura de com putadores a tarefa de des­
crever um processador com pleto e tam bém as técnicas atuais (com o pipelining , caching , etc.)
que são usadas para m elhorar o desem penho dos processadores m odernos

► 8.7 RESUMO DO CAPITULO


N este capítulo, afirm am os (S eção 8.1) que os processadores p rogram áveis são am p lam en te
u sados para im p lem en tar a fu n cio n alid a d e d e se ja d a d o sistem a, d ev id o em p arte à sua
pronta d isp o n ib ilid ad e e ao curto tem po de p rojeto (especificam ente, escrita do softw are).
F orn ecem o s (S eção 8.2) a arq u itetu ra b ásica de um p ro cessad o r program ável, co n sistin d o
em um bloco operacional de p ro p ó sito s g erais com um b anco de registradores e um a A LU ;
u m a u n id ad e d e co n tro le com um b lo co de co n tro le, um PC e um /R ; e m em ó rias para
arm a ze n a r o p ro g ram a e o s d ad o s. A u n id ad e d e co n tro le busca a p ró x im a in stru ção na
460 Sistemas Digitais

m em ória d e program a, d ecodifica essa instrução e, então, ex ecuta a instrução, co n figurando


o bloco operacional para efetu ar a o p eração esp ecificad a pela instrução. E m seguida, pro­
je ta m o s (S eção 8.3) um p ro cessad o r program ável sim p les de três instru çõ es e m ostram os
com o um program a podia ser representado p o r Os e 1s (código d e m áquina) na m em ória de
program a do processador. F om os ainda m ais além p rojetando (S eção 8.4) um p ro cessad o r
de seis instruções e discutindo com o poderiam ser feitas outras ex ten sõ es para acrescen tar
m ais in stru çõ es e, portanto, c o n seg u ir um a arq u itetu ra de p ro c e ssa d o r m ais razoável. D e­
m os (S eção 8.5) um exem plo d e códigos assembly e de m áquina para o p ro cessad o r d e seis
instruções. D iscutim os algum as extensões p ara a arq u itetu ra do p ro cessad o r program ável
(S eção 8.6).
O s p ro cessad o res p ro g ram áv eis são p ro d u zid o s tip icam en te em e n o rm e s q u an tid ad e
(com num eros na ordem de d ezen as d e m ilhões, ou m esm o bilhões) e, portanto, um a aten ­
ção trem en d a é d a d a a seu projeto. O s leitores devem p erc e b e r q u e os p ro jeto s d o s p ro ­
cessad o res p ro g ram áv eis d este cap ítu lo são ex trem am en te sim p listas e são usados apenas
com p ro p ó sito s ilustrativos. C o n tu d o , m esm o ten d o v isto p ro jeto s sim p listas, esp eram o s
que você tenha agora um a co m p reen são do p rin cíp io de fu ncionam ento dc um p ro cessad o r
program ável. O s m odernos processadores com erciais b aseiam -se nos m esm os prin cíp io s -
as instruções são arm azenadas na m em ória de p ro g ram a na form a de có d ig o s de m áquina,
as unidades de co n tro le buscam , decodificam e executam as instruções, e os b locos o p era­
cionais suportam as operações d as instruções, usando b ancos de registradores e A L U s. O s
processadores m odernos fazem um trabalho m uito m elhor, usando concorrência, pipelining
e m uitas ou tras técnicas para o b te r freqü ên cias elevadas d e reló g io e ex ecu ção ráp id a de
program as.

8.8 EXERCÍCIOS
SEÇÃO 8.2: ARQUITETURA BÁSICA

8.1 Sc o contador de programa dc um processador tiver 20 bits dc largura, ate quantas palavras a
memória de instruções do processador poderá conter (ignore quaisquer artifícios especiais para
expandir o tamanho da memória de instruções)?
8.2 Quais das seguintes são operações de bloco operacional, válidas e de um único ciclo, para o bloco
operacional da Fig. 8.2? Explique a sua resposta.
(a) Copiar os dados de uma posição da memória em uma outra posição da memória.
(b) Copiar os conteúdos de duas posições de registrador em duas posições da memória.
(c) Somar os dados de uma posição do banco de registradores com os de uma posição da memó­
ria. O resultado é armazenado em uma posição da memória.
8.3 Quais das seguintes são operações de bloco operacional, válidas e de um único ciclo, para o bloco
operacional da Fig. 8.2? Explique a sua resposta.
(a) Copiar os dados de uma posição do banco de registradores em uma posição da memória.
(b) Subtrair os dados de duas posições da memória e armazenar o resultado em uma outra posição
da memória.
(e) Somar os dados de uma posição do banco de registradores e de uma posição da memória,
armazenando o resultado na mesma posição da memória.
8.4 Assuma que estamos usando uma memória de porta dupla, a qual nos permite ler duas posições
simultaneamente. Modifique o bloco operacional do processador programável da Fig. 8.8 para
suportar uma instrução que executa uma operação de ALU, usando os dados de duas posições
quaisquer de memória e armazenando o resultado em uma posição do banco de registradores.
Analise passo a passo a execução dessa operação, como está ilustrado na Fig. 8.3.
8.5 Determine as operações requeridas para instruir o bloco operacional da Fig. 8.2 para realizar a
operação: D[8] = (D[4] + D[5]) - D[7], em que D representa a memória de dados.
Processadores Programáveis 461

SEÇÃO 8.3: U M PROCESSADOR PROGRAMÁVEL DE TRÊS INSTRUÇÕES

8.6 Se uma instrução de processador tiver um código de operação de 4 bits. quantas instruções possí­
veis poderão ser efetuadas pelo processador?
8.7 Usando o conjunto de instruções de três instruções deste capítulo, o que computa o seguinte pro­
grama assembly? MOV R5, 19: ADD R5, R5, R5; MOV 20. R5.
8.8 O que computa o seguinte programa assembly,? MOV R4, 20; MOV R9, 18; ADD R4, R4, R9;
MOV R5, 30; ADD R9, R4. R5; MOV 20, R9.
8.9 Usando o conjunto de instruções de três instruções deste capítulo, escreva um programa assembly
que atualiza a memória de dados D como segue: D[0] = D[0] + D[ 1].
8.10 Usando o conjunto de instruções de três instruções deste capítulo, escreva um programa assembly
que atualiza a memória de dados D como segue: D[4] = D| l ]*2 + D|2].
8.11 Com base no conjunto de instruções de três instruções deste capítulo, converta o seguinte pro­
grama assembly em código de máquina: MOV R5. 19: ADD R5. R5, R5: MOV 20. R5.
8.12 Com base no conjunto de instruções de três instruções deste capítulo, liste as transferências bá­
sicas entre os registradores e a memória c as operações que ocorrem a cada ciclo de relógio no
seguinte programa,: MOV R0, I : MOV R l , 9; ADD R0. R0, R l .

SEÇÃO 8.4: U M PROCESSADOR PROGRAMÁVEL DE SEIS INSTRUÇÕES

seguinte programa, assumindo que o conteúdo de D[9] é 0: MOV R6. # l ; MOV R5, 9; JMPZ R5,
rótulol; ADD R5. R5, R6; rótulol: ADD R5, R5. R6. Qual é o valor de R5 após o término do
programa?
8.14 Ao conjunto de instruções de seis instruções deste capítulo, acrescente uma nova instrução que
realiza uma operação AND bit a bit entre dois registradores e armazena o resultado em um terceiro
registrador. Estenda o bloco operacional, a unidade de controle e a FSM do bloco de controle,
conforme for necessário.
8.15 Ao conjunto de instruções de seis instruções deste capítulo, acrescente uma nova instrução que
realiza um salto incondicional (sempre salta) para uma posição especificada por um ojfset de 12
bits. Estenda o bloco operacional, a unidade de controle e a FSM do bloco de controle, conforme
for necessário.
8.16 Ao conjunto de instruções de seis instruções deste capítulo, acrescente uma nova instrução que,
se dois registradores forem iguais, realizará um salto para uma posição especificada por um ojfset
de 12 bits. Estenda o bloco operacional, a unidade de controle e a FSM do bloco de controle, con­
forme for necessário.
8.17 Usando o conjunto de instruções de seis instruções deste capítulo, escreva um programa assembly
para o seguinte código em C, o qual computa a soma dos primeiros N números, em que N é um
outro nome para D[9]. Sugestão: Use um registrador para primeiro armazenar N.
i =l;
soma=0;
while (i!=N) {
soma = soma + i;
i = i + 1;

8.18 Usando o conjunto de instruções estendido que você projetou no Exercício 8.16. escreva um pro­
grama assembly para o código em C do Exercício 8 .17.
462 Sistemas Digitais

SEÇÃO 8.5: PROGRAMAS EXEMPLOS EM LINGUAGEM ASSEMBLY E EM CÓDIGO DE MÁQUINA


8.19 Defina duas novas instruções de movimentação de dados para o conjunto de instruções de seis
instruções deste capítulo. Estenda o bloco operacional, a unidade de controle e a FSM do bloco de
controle,conforme for necessário.
8.20 Defina duas novas instruções aritméticas e lógicas para o conjunto de instruções de seis instru­
ções deste capítulo. Estenda o bloco operacional, a unidade de controle e a FSM do bloco de
controle,conforme for necessário.
8.21 Defina duas novas instruções de controle de fluxo para o conjunto de instruções de seis instru­
ções deste capítulo. Estenda o bloco operacional, a unidade de controle e a FSM do bloco de
controle,conforme for necessário.
8.22 Assumindo que os pinos externos 10..17 e P0..P7 do microprocessador estão mapeados nas posi­
ções da memória de dados, conforme a Fig. 8.15, e uma instrução AND foi acrescentada ao con­
junto de instruções de seis instruções deste capítulo, crie um programa assembly que produz uma
saída 0 em P4 quando todas as oito entradas 10..17 são ls.

► PERFIL DE PROJETISTA

Carole cresceu em um local mente. esse foi um projeto muito desafiante e trabalhar
onde os melhores estudantes com tantos arquitetos excelentes foi muito enriquece-
iam para a escola de engenha­ dor. Entretanto, eu também aprendi o que é construir al­
ria, pois a engenharia era alta­ guma coisa grande, com o envolvimento de uma equipe
mente respeitada. “Eu era boa muito grande e de duas empresas de grande porte. As
aluna na escola, de modo que duas empresas tinham culturas diferentes e metodolo­
a engenharia parecia ser uma gias diferentes. Algumas vezes, reconciliar essas dife­
opção natural. Eu também es­ renças era mais desafiador do que resolver os problemas
tava muito interessada em técnicos. No entanto, tudo isso faz parte de ‘se construir
construir coisas e muito coisas' e foi uma grande lição de liderança.”
curiosa a respeito de como novas coisas são construídas O que Carole mais gosta a respeito de sua carreira
- por isso muito cedo fui atraída para a engenharia, em é “a mudança constante. Após 22 anos como arquiteta
tomo dos 10 anos de idade.” de computadores, eu ainda estou fazendo coisas novas
Carole trabalhou na Intel por 15 anos. Ela foi uma das todos os dias. A ciência da computação é um trabalho
arquitetas originais de uma parte popular do processador em andamento, oferecendo novas oportunidades às
Pentium, conhecida por MMX (Multimedia Extension of quais temos de nos agarrar e sair correndo com elas. É
the Intel Architecture). “Era fascinante aprender os algo­ aqui que está a parte divertida.”
ritmos usados para comprimir vídeo e áudio e inventar Solicitada a dar alguns conselhos aos estudantes,
novas instruções para que a arquitetura Intel executasse Carole sugere duas coisas:
eficientemente essas aplicações. Nem sempre é fácil para
• “Permaneçam na escola enquanto for possível. Con­
os arquitetos de processadores quantificar os benefícios
siga um doutorado, se você puder. Seja capaz de se
de novas características e justificar o custo das respecti­
adaptar às constantes mudanças, você precisará de
vas áreas no silício (ou o tamanho de um chip die) para
fundamentos muito robustos e teóricos. Simples­
novas instruções. No caso de aplicações de multimídia,
mente aprender como fazer coisas não é suficiente:
os benefícios eram bem compreendidos: exibir um clip de
vai lhe dar emprego por dois anos, mas então suas
vídeo a uns poucos quadros por segundo, ou exibi-lo em
tempo real (cerca de 30 quadros por segundo), fazia uma habilidades estarão obsoletas.”
enorme diferença, visível para qualquer um.” Como é o • “Esteja aberto para as mudanças. É importante cons­
caso com muitos engenheiros, ela está muito orgulhosa truir um conhecimento aprofundado de uma área. No
do que conseguiu: “Quando apareceu o primeiro proces­ meu caso, é arquitetura de computadores. No entanto,
sador Pentium com MMX, era real mente compensador deve-se estar pronto para usar esse conhecimento em
pensar que um pequeno pedaço da minha mente estava muitos projetos diferentes, com pessoas diferentes c
em todas essas máquinas, exibindo vídeos em tempo real cada vez mais em diversas partes do mundo. Há quinze
e surgindo em todos os lugares.” anos, as aplicações de multimídia eram o foco de mui­
Carole foi também um dos arquitetos da equipe tos arquitetos de computador. Hoje, é a bioinformática
da Intel e Hewlett-Packard que definiu a arquitetura do e a mineração de dados. As mudanças requerem muito
computador Itanium. “Essa foi uma oportunidade única trabalho para se aprender novos domínios, mas não se
para definir um processador, a partir do zero’. Tecnica- adaptar às mudanças não é uma opção ”
Linguagens de Descrição
de Hardware

► 9.1 INTRODUÇÃO
N este livro, estivem os desenhando os circuitos projetados
por nós. Por exem plo, no C apítulo 2. projetam os um cir­
cuito abridor de porta autom ático e desenham os o circuito
m ostrado na Fig. 9.1. Um desenho tem m ais inform ação
do que é real m ente necessário para se descrev er um cir­
cuito. Em particular, o desenho inform a as posições das
entradas e saídas: no desenho da Fig. 9.1, as entradas estão
Figura 9.1 Circuito desenhado.
à esquerda, a saída está à direita, a entrada c está em cim a,
a entrada h está no m eio e a entrada p está em baixo. O de­
senho tam bém dá inform ações sobre o tam anho e a localização dos com ponentes no circuito:
o inversor está em cim a, a porta O R está abaixo do inversor, a porta A N D está à direita c cada
com ponente tem cerca de m eia polegada por m eia polegada. O desenho tam bém dá inform a­
ções a respeito dos fios: por exem plo, o fio que sai do inversor segue para a direita, então para
baixo e em seguida novam ente para a direita. Na realidade, entretanto, toda essa inform ação
sobre o desenho é irrelevante, não tendo nada a ver sobre com o o projeto será im plem entado
fisicam ente. E ra necessário que o circuito fosse desenhado de algum m odo. A ssim , optam os
por descnhá-lo com o está m ostrado na figura. N o entanto, tam bém poderíam os ler desenhado
o circuito dc m uitos outros m odos. O desenho dc um circuito é referido com um cntc com o o
esquemático d o circuito.
Q uando lidam os com circuitos m aiores, surge um problem a com o desenho de todos os
nossos circuitos. O esquem ático da Fig. 9.2 significa algum a coisa para você? Esse esq u e­
m ático tem apenas algum as poucas dúzias de com ponentes; com o seria se houvesse alguns
m ilhares de com ponentes, co m o é bem com um ? Para d esen h ar um circu ito grande, seria
necessário um esfo rço trem endo de nossa parte para im aginar com o co lo car cada co m p o ­
nente no desenho e co m o passar os fios entre os com ponentes. Se um a ferram enta gerasse
o circuito, ela teria de usar tem po de com putação para que o desenho desse circuito fosse
produzisse de m odo visual m ente atraente (ao invés de algo confuso parecido com espaguete).
Essa com putação precisaria de m uito tem po e assim m esm o poderia não pro d u zir um bom
desenho. A lém disso, os arquivos usados para arm azen ar esses esquem áticos seriam m uito
grandes, já que conteriam toda um a inform ação extra sobre a localização e tam anho precisos

1Uma parte substancial do conteúdo deste capítulo é uma contribuição de Roman Lysecky.
464 Sistemas Digitais

::
H D itwH"**"
nr?r^
m n:
m ^
mtp
ms imn I Í• 4>— — W
** —

•-*~;trr=

|UJ

í f

t-f \
Figura 9.2 Os esquem áticos tom am -se difíceis de serem lidos quando há mais de uma dúzia ou tanto de
componentes - a informação gráfica toma-se incômoda ao invés de servir de auxílio.

de todos os com ponente. Todo esse esforço, tam anho de arquivo e tem po extras seriam neces­
sários para algo que não seria realm ente m uito útil - as pessoas não conseguem com preender
os desenhos de circuitos que contenham m ais de um a centena de portas. P ortanto, qual é o
objetivo de se desenhar tais circuitos? O que realm ente desejam os é sim plesm ente um a m a­
neira para descrever o circuito em si: quais são as entradas e as saídas, q u ais com ponentes
estão presentes e quais são as conexões? Idealm enle, faríam os essa d escrição usando um a
linguagem textual. A ssim , as pessoas poderiam escrever essas descrições usando um teclado
de com putador, do m esm o m odo que escrevem os m ensagens e program as em C.
P oderíam os, portanto, descrever o circuito da Fig. 9.3(a) usando um a linguagem textual
em português, com o m ostrado na Fig. 9.3(b). D em os nom es a cada porta do circuito e aos fios
internos da Fig. 9.3(a).

Descreverem os agora u m circuito cujo n o m e é AbridorDePorta.


As entradas externas s ã o c, h e p, q u e são bits.
A saída externa é f, q u e é um bit.

A ssu m im o s q u e você conhece o co m p o rtam en to d e s s e s com ponentes:


Um inversor, que te m u m bit x de entrada e um bit F d e saída.
Uma porta OR d e 2 entradas, q u e tem os bits d e entrada x e y, e o bit F
de saída.
Uma porta AND de 2 entradas, q u e tem o s bits de en trad a x e y, e o bit F
de saída.

O circuito tem o s fios internos n1 e n2, a m b o s bits.


O circuito AbridorDePorta consiste internam ente em:
Figura 9.3 Descrição de um circuito Um inversor d e n o m e lnv_1, cuja entrada x conecta-se à
entrada externa c e cuja saída conecta-se a n1.
usando uma linguagem textual ao in­ Uma porta OR de n o m e OR2_1, cujas en tra d as conectam -se às entradas
vés de um desenho: (a) esquemático, externas h e p , e cuja saída conecta-se a n2.
(b) descrição textual em português. Uma porta AND de n o m e AND2_1, cujas entradas conectam -se a n1 e
n2, e cuja saída conecta-se à saída externa f.
Isso é tudo.

N aturalm ente, o português não seria um a boa lín g u a se você q u isesse usar um a ferra­
m enta de com putador que lesse essa descrição, um a ferram enta de co m putador requer um a
linguagem com sintaxe exata e um significado preciso para cad a elem ento construtivo da
linguagem . D esse m odo, as linguagens que podem ser entendidas por com putadores evolu­
íram nas décadas de 1970 e 1980 para descrever os circuitos de hardw are. Tais linguagens
Linguagens de Descrição de Hardware 465

tornaram -se conhecidas corno linguagens de descrição de hardware , ou HDLs (Hardware


Description Languages). A s linguagens de d escrição dc hardw are capacitam -n o s não só a
descrever as inlerconexões estruturais entre os com ponentes, m as tam bém a incluir m étodos
que nos perm item descrever o com portam ento dos próprios com ponentes. C) projeto digital
m oderno baseia-se pesadam ente no uso de linguagens de descrição de hardw are em todos os
estágios do projeto.
N este capítulo, darem os um a breve introdução às linguagens de descrição de hardw are
m ais populares: V H D L, Verilog e System C . No entanto, para realm ente aprender cada um a
dessas linguagens, deve-se consultar livros-textos dedicados especificam ente a cada lingua­
gem . C ada seção deste capítulo pode ser coberto im ediatam ente após os capítulos anteriores
correspondentes (Seção 9.2 após o C apítulo 2, Seção 9.3 após o C apítulo 3, Seção 9.4 após
o C apítulo 4 e Seção 9.5 após o C apítulo 5) ou essas seções podem ser cobertas de um a vez,
após term os com pletado esses capítulos anteriores. A lém disso, cada seção tem três partes,
um a para V H D L, um a para Verilog e um a para System C . C ada um a dessas partes é indepen­
dente das outras da seção. A ssim , um leitor que esteja m ais interessado em um a das lingua­
gens de descrição de hardw are, digam os Verilog. poderá ler apenas as parles sobre Verilog de
cada seção, pulando as partes sobre V H D L e System C .
Um leitor interessado em fazer um a co m p aração entre as três linguagens dc descrição
de hardw are poderá ler as seções sobre cada um a dessas três linguagens. A o fazer isso, você
poderá notar que as linguagens de descrição de hardw are têm capacidades sem elhantes, d ife­
rindo basicam ente em sua sintaxe. A ssim , depois de aprender com pletam ente um a H DL, um
projetista poderá tam bém fazer um aprendizado rápido de outras HDLs.

► 9.2 DESCRIÇÃO DE LÓGICA COMBINACIONAL USANDO LINGUAGENS DE


DESCRIÇÃO DE HARDWARE
Estrutura
A introdução deste cap ítu lo procurou descrev er um circu ito por m eio de um a linguagem
textual. M ostrarem os agora com o um circuito é descrito por algum as H D Ls diferentes entre
si. A lgum as vezes, o term o estrutura é usado para se referir a um circuito, significando um a
interconexão dc com ponentes.

VHDL
A Fig. 9.4(c) m ostra um a descrição em V H D L do circuito AbridorDePorta da Fig. 9.4(a). Por
conveniência, m ostram os tam bém na Fig. 9.4(b) a descrição em português e a correspondên­
cia entre as descrições em português e VHD L.
A d escrição co m eça com um a declaração entity * (entidade), a qual define o nom e do
projeto e a lista de suas entradas e saídas, conhecida com o port (porta). Um a declaração de
entidade nada diz sobre as partes internas do projeto, apenas o nom e e a interface do projeto.
A descrição lista os nom es das portas e define os seus tipos, o qual é s td _ l ogi c, neste caso.
B asicam ente, esse tipo significa um bit, m as que internam ente não faz parte da V H D L (o tipo
bit predetinido em V H D L é lim itado dem ais, devido a razões que estão além dos nossos o bje­
tivos aqui). Na realidade, para usar s td _ l ogi c, devem os incluir o com ando: “ 1 i b ra ry i eee;
use ie e e .s td _ lo g ic _ 1 1 6 4 .a l 1 no início do arquivo.
A descrição continua com um a definição d a architecture (arquitetura ), a qual descreve
as partes internas do projeto. D em os o nom e Circuito à arquitetura, m as po d eríam o s tê-la
denom inado de q ualquer coisa que quiséssem os: CircuitoAbridorDePorta, EstruturaDoA-
bridorDePorta, Estrutura , ou m esm o Fred, em bora queiram os um nom e que seja útil à com -

* N. dc T: Kste (ermo e outros que virão a seguir serão mantidos em inglês, pois são próprios das linguagens de descrição de
hardware.
466 Sistemas Digitais

library ieee;
use ieee.std_logic_1164.all;
entity AbridorDePorta is
port (^c, h, p: in std_logic;
f : out std_logic
Descreveremos agora um circuito cujo nome é AbridorDePorta.
As entradas externas são c, h e p, que são bits.--------------------- .-eííd AbridorDePorta;
A saída externa é f, que é um bit. ------------------------------------
architecture Circuito of AbridorDePorta is
Assumimos que você conhece o comportamento desses componentes:^--' component I n v
Uminversor, que tem um bit x de entrada e um bit Fde saída.
VIII ll lt u i JU I, ^VIV IV/III Ví l l l Ull A U O UIIUUUU port ( x : in std_logic;
V/ V4III Ull I OUI VI U.

Uma porta OR de 2 entradas, que tem os bits de F: out std_logic);


entrada x e y, e o bit F de saída. ^ end component;
AM n
Uma porta AND de 2 entradas, que tem os bits de ^
I IrWA /Ja O A AtrAAA A A l IA
component OR2
• r \ »>*> A A Ul«A /Ía ** **•

entrada x e y, e o bit F de saída. port ( x , y : in std_logic;


F: out std_logic);
0 circuito tem os fios internos n1 e n2, ambos bits. end component;
" component AND2
0 circuito AbridorDePorta consiste internamente em: port ( x , y : in std_logic;
Uminversor de nome lnv_1, cuja entrada x conecta-se às f : out std_logic);
entrada externa c e cuja saída conecta-se a n1. \ \ s end component;
Uma porta OR de 2 entradas e de nome 0R2_1, cujas \ N\ " signal nl,n2: std_logic; --fios internos
entradas conectam-se às entradas externas h e p, e cu jà "^
saida conecta-se a n2. sN ç eg i n
^ *Inv_l: Inv port map (x=>c, F=>nl) ;
Uma porta AND de 2 entradas e de nome AND2J, cujas e n tra d a s '"-^ " ‘ O R 2 _ l: OR2 port map (x = > h ,y = > p ,F = > n 2 ) ;
conectam-se a n1 e n2, e cuja saida conecta-se à saída externa f. ^"AND2 1 : AND2 port map ( x = > n l/ y = > n 2 ,F = > f) ;
e n d circuito;
Isso é tudo.
(b) (c)

Figura 9.4 Descrição de um circuito usando uma linguagem textual, ao invés de desenhos: (a) esquemático,
(b) descrição textual em língua portuguesa e (c) descrição textual em linguagem.

prccnsão da arquitetura. A arquitetura com eça d eclarando quais com ponentes serão usados
no projeto. Esses com ponentes devem ser definidos em algum outro lugar, possivelm ente no
início do arquivo de descrição, ou talvez em algum outro arquivo. D iscutirem os m ais tarde
as definições desses com ponentes; por enquanto, assum a que de algum m odo elas já estejam
definidas. C ada declaração de com ponente deve co n ter a definição de suas entradas e saídas,
sendo que essas entradas e saídas devem estar exatam ente de acordo com a declaração de
entidade do com ponente (encontrada em algum outro lugar).
E ntão, a descrição incluirá um a declaração signal (sinal) dos sinais internos do projeto, os
quais essencialm ente são fios internos. Juntam ente com essa declaração, a descrição m ostra
um exem plo de com entário em V H D L: f i os i n te r n o s ”. O s com entários com eçam com
seguindo-se no resto da linha um texto q ualquer que queiram os. A s ferram entas V H D L
ignoram esse texto, m as é útil às pessoas que devem ler as descrições.
Finalm ente, a descrição faz o distanciam ento dos com ponentes do circuito e define as suas
conexões. Por exem plo, a descrição faz o instanciam ento de um com ponente denom inado
Inv_I, que é um com ponente do tipo Inv (o qual foi declarado anteriorm ente na descrição
em V H D L) e indica que a entrada x de Inv_J está conectada a c, que é um a entrada externa.
U m a notação alternativa, m ais concisa, om ite os nom es das portas. U sando essa notação,
poderíam os instanciar o nosso inversor escrevendo “ In v _ l: Inv p o r t map ( c , n l ) ; ” . A
ordem dos sinais no m apeam ento de porta (port map) de Inv corresponde à ordem das portas
Linguagens de Descrição de Hardware 467

que foi adotada na definição de com ponente de Inv. N os exem plos subseqüentes, usarem os
essa notação alternativa.
N a descrição, as palavras em negrito representam palavras reservadas, tam bém co n h e­
cidas com o palavras-chaves em V H D L. N ão podem os usar palavras reservadas para nom es
de entidades, arquiteturas, sinais, com ponentes instanciados, etc., já que essas palavras têm
significados especiais que orientam as ferram entas V H D L na com preensão das nossas d es­
crições.
R esum indo, a descrição estrutural em V H D L contém um a entidade que descreve o nom e,
as entradas c as saídas do projeto; um a declaração de quais com ponentes serão usados; um a
declaração dos sinais internos e, finalm ente, o instanciam ento de todos os com ponentes, jun­
tam ente com as suas interconexões.
Então, a entidade q ue acabam os de definir poderá ser usada com o com ponente em um a
outra entidade.

Verilog
A Fig. 9.5(c) m ostra um a descrição em V erilog do circu ito AbridorDePorta da Fig. 9.5(a).
Por conveniência, na Fig. 9.5(b) m ostram os tam bém a descrição em português e a correspon­
dência entre as descrições em português e Verilog.

.module Inv(x, F ) ;
Descreveremos agora um circuito cujo nome é AbridorDePorta. ! input x;
As entradas externas são c, h e p, que são bits. v \ output F;
A saída externa é f, que é um bit. \ // detalhes não mostrados
\
Assumimos que você conhece o compòctamento dessbç
componentes: \ \
l
/
y
Um inversor, que tem um bit x de entrada è^m bit F de à a id § ^ \
\
X endmodule
^ m o d u l e OR2(x, y, F) ;
input x, y;
output F;
Uma porta OR de 2 entradas, que tem os bits d&entrada A ^ \ // detalhes não mostrados
x e y, e o bit F de saída. \ \ \\ endmodule
Uma porta AND de 2 entradas, que tem os bits de entrada — \ ------m o d u le AND2 { x , y , F) ;
x e y, e o bit F de saída. \ \ \ i n Pu t ^ x l
\ \ \ o u tp u t F;
0 circuito tem os fios internos n1 e n2, ambos bits. \ \ \ / / d e ta ils not show n

0 circuito AbridorDePorta consiste internamente em: :\ W


s\

Um inversor de nome lnv_1, cuja entrada x conecta-se à


\

s\ v
\e n d m o d u le

\m ò .d u le A b r id o r D e P o r t a ( c , h, p, f ) ,
entrada externa ce cuja saida conecta-se a n1. \ \ in p u t c ' h ' P ;
v o u tp u t f ;
Uma porta OR de 2 entradas e de nome 0R2_1, cujas entradas
. . ^ x wire n l , n2 ;
conectam-se as entradas externas h e p, e cuja saida conecta-se \ ln v In v ^c nl^.
Uma porta AND de 2 entradas e de nome AND2J, cujas ^-O R 2 O R 2 ~ l(h , p , n 2 ) ;
entradas conectam-se a n1 e n2, e cuja saída conecta-se à saída e x te rn ^ AND2 AND2_1 { n l , n 2 , f ) ;
Isso é tudo.------------------------------------------------------------------------- e n d m o d u le

(b) (c)

Figura 9.5 Descrição de um circuito usando uma linguagem textual, ao invés de desenhos: (a) esquemático,
(b) descrição textual em língua portuguesa e (c) descrição textual em linguagem VHDL. As palavras em ne­
grito são palavras reservadas de Verilog.
468 Sistemas Digitais

A descrição co m eça definindo m ódulos para um inversor Inv, um a porta O R de duas


entradas OR2 e um a porta A N D de duas entradas AND2. Passarem os por cim a da discussão
desses m ódulos e com eçarem os a nossa discussão com a definição do quarto m ódulo Abri-
dorDe Porta.
A descrição declara um module (módulo) de nom e AbridorDePorta. A declaração de m ó­
dulo define um nom e para o projeto e os nom es de suas entradas e saídas» conhecidas com o
portas. A declaração de m ódulo não diz nada sobre as portas ou as partes internas do p ro je to -
apenas o nom e e a interface do projeto.
A seguir, a descrição define o tipo de cada porta, atribuindo os tipos input (entrada) e
output (saída), neste exem plo.
E ntão, a descrição inclui um a declaração para os wires (fios , ou conexões) internos, de
nom es /?/ e n2.
Finalm ente, a descrição faz o instanciam ento dos com ponentes do circuito e define as co ­
nexões desses com ponentes. No m ódulo AbridorDePorta , a descrição instancia um co m p o ­
nente de nom e Inv_I, que ó um com ponente do tipo Inv. A s conexões às entradas e saídas dos
com ponentes instanciados são especificadas na ordem em que os m ódulos dos com ponentes
declaram as entradas e saídas. N o instanciam ento de Inv_l. a entrada c 6 ligada à entrada x do
com ponente Inv. Em V erilog, o m ódulo que instancia um com ponente não precisa especifi­
car a interface desse com ponente. Por exem plo, o m ódulo AbridorDePorta não contem uma
declaração de quais com ponentes serão instanciados por ele ou qualquer inform ação relativa
a esses com ponentes. N aturalm ente, os com ponentes devem ser definidos em algum outro
lugar, possivelm ente no início desse m esm o arquivo, com o está m ostrado na Fig. 9.5(c), ou
talvez em algum outro arquivo. Com propósitos de referência, o exem plo m ostrado aqui dá
especificações incom pletas dos com ponentes Inv, AND2 e OR2 para que as portas e a inter­
face desses com ponentes sejam m ostradas claram ente. Em vez de esp ecificar o co m p o rta­
m ento interno desses com ponentes, sim plesm ente incluím os um exem plo de um com entário
em Verilog, os quais com eçam com “/ / e a seguir, no restante da linha, um texto qualquer
que queiram os.
N a descrição, as palavras em negrito representam palavras reservadas, tam bém c o n h e­
cid as co m o palavras-chaves em V erilog. N ão p o d em o s u sar palavras reserv ad as para n o ­
m es d e m ódulos, p o rtas, fios, co m p o n en tes in stan ciad o s, etc., já q u e essas p alav ras têm
sig n ificad o s esp eciais q ue orientam as ferram entas de V erilog na co m p reen são de nossas
descrições.
R esum indo, a descrição estrutural em Verilog inclui um m ódulo que descreve o nom e do
projeto, lista as entradas e as saídas do m ódulo e especifica o tipo de cada entrada e saída. A
seguir, inclui um a declaração dos fios internos e, finalm ente, o instanciam ento de todos os
com ponentes ju n tam en te com as suas interconexões.

SystemC
A Fig. 9.6(c) m ostra um a descrição em System C do circuito AbridorDePorta da Fig. 9.6(a).
Por conveniência, na Fig. 9.6(b) m ostram os tam bém a descrição em português e a correspon­
dência entre as descrições em português e System C . A linguagem System C é construída em
cim a da linguagem de program ação C ++, m as não é necessário ser um program ador esp ecia­
lista em C++ para usar System C . C om o resultado, no entanto, é im portante ter em m ente que
há certas restrições, com o não usar palavras chaves de C ++ para denom inar m ódulos, portas,
sinais, etc.
A ntes de defin ir o com portam ento do circuito, devem os incluir o com ando “ # in c lu d e
" s y s te m c .h " ” no início de cada arquivo de S ystem C . A descrição co m eça com um a d ecla­
ração SC_MODULE (módulo SC), a qual define o nom e do projeto, AbridorDePorta, neste
caso. U m a declaração de m ódulo nada diz sobre as partes internas do projeto, apenas o nom e
Linguagens de Descrição de Hardware 469

#include "système.h"
• #inclüde "inv.h"
// #include "or2.h"
/ / / # include "and2.h"
// /
// /
— SC MODULE (AbridorDePorta)
// /
Descreveremos agora um circuito cujo nome é AbridorDePorta^/ {
As entradas externas sào c, h e p, que são bits. ~ ~ $ c ------------------ sc_in<sc_logic> c , h , p;
A saída externa é f, que é um bit. ---------------- -*/y — sc_out<sc_logic> f;
//' // fios internos
/
Assumimos que você conhece o comportamento desses componentes: / sc_signal<sc_logic> nl, n2;
Um inversor, que tem um bit x de entrada e um bit F de saida. / // declarações de componente
Uma porta OR de 2 entradas, que tem os bits de entrada x e y, e o , Inv Invl;
bit F de saída. / OR2 OR2JL;
Uma porta AND de 2 entradas, que tem os bits de entrada x e / AND AND2_1;
y, e o bit F de saida. / // instanciamentos de componente
^ SCCTOR(AbridorDePor ta) :I n v _ l ("Inv_l"),
0 circuito tem os fios internos n1 e n2, ambos bits. ^ / - O R 2 _ l ("OR2_l"), A N D 2 _ 1 ("A N D 2 _ 1 ")

0 circuito AbridorDePorta consiste internamente em: y , s ------ I n v l . x ( c ) ;


Um inversor de nome lnv_1, cuja entrada x conecta-se à / In v _ l. F ( n l) ;
entrada externa ce cuja saída conecta-se a n1. / ___________ ;
Uma porta OR de 2 entradas e de nome 0R2_1, ------------‘ ~ s O R 2 _ l. y ( p ) ;
cujas entradas conectam-se às entradas externas / O R 2 _ l. F ( n 2 ) ;
h e p, e cuja saída conecta-se a n2. ______________________ x ( n l ) ;
Uma porta AND de 2 entradas e de nome AN D 2_V----------------- A N D 2 _ l. y ( n 2 ) ;
cujas entradas conectam-se a n1 e n2, e cuja saída AN D 2_1. F ( f ) ;
conecta-se à saída externa f. }
Isso é tudo.--------------------------------------------------------------------------------- } ;

(b) (o)

Figura 9.6 Descrição de um circuito usando uma linguagem textual ao invés de desenhos: (a) esquemático,
(b) descrição textual em língua portuguesa e (c) descrição textual na linguagem SystemC. As palavras em
negrito são palavras reservadas de SystemC.

do projeto. D entro da descrição de m ódulo, as portas de entrada e saída do projeto são esp eci­
ficadas usando os com andos s c j n o {entrada SC) e s c _ o u to ( saída SC ), respectivam ente.
A descrição lista os nom es das portas e define os seus tipos, que neste caso é o tipo s c _ lo g ic ,
o qual especifica um único bit.
A seguir, a descrição inclui um a declaração dos sinais internos do projeto, especificados
por scjsignal (sinal SC), que essencialm ente são fios internos. Junto à declaração, incluiu-se
na descrição um exem plo de com entário em System C : “/ / f i o s i n te r n o s " . O s com entários
com eçam com “/ / " e então, no resto da linha, coloca-se um texto q ualquer que queiram os.
Em seguida, o m ódulo declara que com ponentes serão usados no projeto. Um m ódulo de
System C não precisa especificar a interface dos com ponentes, m as ao invés apenas o tipo de
com ponente e um nom e exclusivo para cada com ponente dentro do projeto.
O m ó d u lo d efin e um a fu n ção c o n stru tiv a SC jC T O R q u e é resp o n sáv el p elo d ista n ­
c iam en to e p elas co n e x õ e s d o s c o m p o n e n te s no n o sso p ro je to em S y stem C . A fu n ção
co n stru tiv a ad o ta co m o arg u m en to o nom e d o m ó d u lo co rren te cm S y stem C , o qual neste
caso é AbridorDePorta. A p ó s o c o m a n d o SC _C TO R , d e p o is d o s d o is p o n to s, h á um a
lista de in stan ciam en to s d e co m p o n en tes. E m S y stem C , as in stân cias d e um m ó d u lo são
470 Sistemas Digitais

usad as p ara ch a m a r as funções co n stru tiv as de cad a co m p o n en te in stan ciad o . N o en tan to ,


e n fa tiz a m o s q ue as c o n e x õ e s e n tre o s c o m p o n e n te s in d iv id u a is n ão são e sp e c ific a d a s
neste ponto. A o invés, são os co m an d o s d e n tro da fu n ção co n stru tiv a q u e d efin em no final
q u ais são as co n ex õ es e n tre os co m p o n en tes. P o r ex em p lo , a e n tra d a a d o in v erso r fnv_l
é co n ectad a a c , a qual é u m a en tra d a ex tern a. E m S y stem C , o m ó d u lo não req u er q u e a
in terface de um co m p o n en te seja e sp ecific a d a d e n tro dele. N atu ralm en te, os c o m p o n e n ­
tes devem e sta r c o m p le ta m e n te d e fin id o s e m alg u m o u tro lugar, p o ssiv e lm e n te an tes no
m esm o arq u iv o , ou talv ez em algum o u tro arq u iv o . N a n o ssa d e sc riç ã o d o AbridorDe-
Porta em S y stem C , as d esc riç õ e s d o s c o m p o n e n te s Mv, AND2 e OR2 são e sp e c ific a d o s
em outros arq u iv o s tam bém em S ystem C . P ara u sar esses co m p o n en tes, d ev erem o s in clu ir
um co m an d o no in ício d o arq u iv o c o rre n te p a ra in d ic a r o n d e p o d e re m o s e n c o n tra r essa
d escrição . P o r ex em p lo , a nossa d e sc riç ã o de AbridorJDePorta c o n tém o c o m an d o “ #i n-
cl ude "i n v . h "’\ esp ecifican d o um arquivo d en tro d o qual a d e sc riç ã o d o co m p o n en te Mv
p o d erá se r en co n trad a.
Em um a descrição, as palavras em negrito representam palavras reservadas, tam bém co ­
nhecidas com o palavras-chaves em System C e C ++. N ão podem os usar palavras reservadas
com o nom es de m ódulos, portas, sinais e com ponentes instanciados, etc., já que essas p a­
lavras tem significados especiais que orientam as ferram entas de S ystem C e C ++ na co m ­
preensão de nossas descrições.
R esum indo, a descrição estrutural em System C contém : um m ódulo que define o nom e do
projeto, a lista das entradas e saídas do m ódulo especificando os seus tipos, um a declaração
dos sinais internos, um a declaração dos com ponentes dando o nom e de cada um ; a seguir,
uma função construtiva que instancia os com ponentes do m ódulo e, finalm ente, as intercone-
xões dos com ponentes.

Comportamento combinacional
T ipicam ente, as H D L s têm a capacidade de descrever as p artes internas de um p ro jeto na
form a de um com portam ento ao invés de um circuito. E ssa capacidade perm ite-nos descrever
os com ponentes construtivos de baixo nível que usam os em um projeto, com o o co m p o rta­
m ento de um a porta A N D ou um a OR.

VHDL
library ieee;
A Fig. 9.7 m ostra um a descrição com por- use i e e e .s t d _ l o gic_1164.all;
tam ental de um a porta O R de duas en tra­
das, que usam os com o com ponente na Fig. entity OR2 is
port (x, y: in std_logic;
9.4(c), com o você se recorda. A descrição
F: out std_logic
co m eça com as d e c la ra ç õ e s necessárias );
para usar s tc M o g ic . A seguir, ela declara end O R 2 ;
a en tid ad e d en o m in ad a OR2 com o tendo
architecture comportamento of OR2 is
duas portas x e y de entrada e um a porta begin
F de saída, todas do tipo s t d _ l o g i c , ou process (x, y)
seja, um bit cad a um a. E ntão, a descrição begin
F <= x or y;
define um a arquitetura deno m in ad a com­
end process;
portamento p ara OR2. E la co n siste em end comportamento;
um process (processo) que é o construto
de V H D L usado para descrever com porta­ Figura 9.7 Descrição comportamental de uma
m ento. A qui, a declaração para o processo porta OR em VHDL.
é “ p r o c e s s ( x ,y ) ’\ ou seja, ele deverá ser
executado do co m eço ao fim sem pre que
Linguagens de Descrição de Hardware 471

houver uma alteração em x ou y; em outras palavras, o processo é sensível a x e y. O corpo do


processo (a parte entre o com eço e o fim do processo) pode conter com andos em seqüência,
exatam ente com o os usados em C , m as com sintaxe diferente. O processo m ostrado contém
apenas um desses com andos, atribuindo o valor de “x o r y” a F. O corre que o “o r ” é um
operador interno de V H D L, o que torna sim ples a descrição interna da porta OR.
C o m o o u tro e x e m p lo d e um a d e sc riç ã o c o m p o rta m e n ta l, v am os re v isita r o nosso
ex em p lo AbridorDePorta da Fig. 9 .4 (c ), p ara o q ual c ria m o s u m a a rq u ite tu ra q u e tem
um a d e sc riç ã o estru tu ral. A g o ra, p o d erem o s alte rn a tiv a m e n te c ria r um a a rq u ite tu ra com
um a d e sc riç ã o co m p o rtam en tal - u m a e n tid a d e V H D L p ode te r m ú ltip la s d e sc riç õ e s de
arq u ite tu ra da m esm a en tid ad e. A ssu m in d o a m esm a d e sc riç ã o de en tid ad e da Fig. 9.4(c),
a Fig. 9.8 m o stra um a d efin ição altern ativ a de arq u itetu ra. O c o m p o rta m e n to co n siste em
um p ro cesso sensível às en trad as c, h e /;. Q u an d o o p ro cesso é ex ecu tad o (ou seja, sem p re
q ue c, h ou p sofrerem alg u m a alteração ), en tã o o seu ú n ico c o m an d o é ex ecu tad o , a tu a li­
zan d o o valo r d e /.
A o p ro je ta rm o s o c irc u ito AbridorDe-
architecture b of AbridorDePorta is
Portciy p o d eríam o s c o m e ç a r com a d e sc ri­
begin
ção co m p o rtam en tal e re a liz a r u m a sim u ­
p r o c e s s (c, h, p)
lação p a ra v e rific a r se o c o m p o rta m e n to begin
e stá c o rre to . A seg u ir, p o d e ría m o s c ria r f <= not(c) and (h or p) ;
um a d e sc riç ã o e stru tu ra l e re a liz a r nova­ end process;
m ente um a sim u la ç ã o p ara v e rific a r se o end b;
circu ito ap resen ta a m esm a fu n cio n alid ad e
da d e sc riç ã o c o m p o rta m e n ta l. N a re a li­ F ig u r a 9 .8 D escrição com portam ental em
dade, h á ferram en tas que au to m aticam en te VHDL do projeto AbridorDePorla.
convertem tal co m p o rtam en to em um circu ito .
Q uando se escreve um processo V H D L para descrever o com portam ento de um circuito
com binacional, deve-se tom ar cuidado para incluir todas as entradas do circuito na lista de
sensitividade (sensitivity list) do processo. A om issão de um a entrada não constitui um erro
em V H D L, m as essa om issão resultará em um co m portam ento que será diferente do co m ­
binacional: se um a entrada for om itida, a saída não irá se m odificar quando essa en trad a se
alterar, significando que deve haver algum arm azenam ento no circuito.

Verilog
A Fig. 9.9 co n tém um a d escrição co m p o rta m e n ta l de um a
module OR2(x,y,F);
porta O R de duas entradas, que nós usam os co m o com ponente input x, y;
na Fig. 9.5, com o você se recorda. A d escrição co m eça co m a output F;
declaração de um m ódulo d en o m in ad o OR2 e a especificação reg F;
de que esse m ódulo tem três portas d en o m in ad as x> y e F. A
always @ (x or y)
seguir, a d eclaração d efin e que am bas as portas a* e y são en ­ begin
tradas e a porta F é um a saída. E ntão, a descrição define que a F <= x | y;
saída F é do tipo reg. Em Verilog, a não ser que seja expresso end
endmodule
algo em co n trário , assu m e-se que todas as p o rtas são im plici­
tam ente do tipo wires (fios), as quais não arm azen am valores. F ig u r a 9 .9 D e s c riç ã o
Fios só podem criar co nexões entre co m p o n en tes. Se q u iser­ com portam ental de uma
m os atribuir um valor a um a porta de saída, deverem os definir porta OR em Verilog.
a porta com o sendo do tipo reg , indicando que a porta d e saída
arm azen ará os valores que lhe atribuirm os. O có d ig o do nosso projeto em V erilog co n tin u a
agora com um procedim ento always (sempre), o qual d efin e um bloco de có d ig o que deverá
ser ex ecu tad o rep etid am en te sem p re que o c o rre r um a alteração em um a das en trad as da
472 Sistemas Digitais

lista de en trad as do bloco. A d eclaração para o p ro ced im en to always é “ alw ay s @(x o r


y ) '\ sig n ifican d o que o p ro ced im en to dev erá ser ex ecu tad o do início ao fim sem p re q u e
houver um a alteração em x ou (or) y; em outras palavras, o p ro ced im en to c sensível a x e y.
O s com andos do p ro ced im en to always (a parte en tre os co m an d o s begin (começo) e end
(fim) do p rocedim ento) podem ser seqüenciais, ex atam en te co m o os com an d o s seqüenciais
em C , m as com sin tax e d iferen te. O bloco m o strad o tem ap en as um d esses co m an d o s, o
qual atribui o v a l o r 44 x | y" à saída F. A qui, | é um a op eração in eren te ao V erilog que
co m p u ta um a OR.
C om o outro exem plo de um a descrição com - module AbridorDePorta(c,h,p,f);
p o rtam en tal, vam os rev isitar o nosso exem plo input c, h, p;
AbridorDePorta da Fig. 9.5(c), para o qual cria­ output f ;
reg f;
m os um a descrição estrutural em Verilog. A lter­
nativam ente, podem os agora criar um a descrição always @ ( c or h or p)
com portam ental. A Fig. 9.10 apresenta um a des­ begin
crição co m p o rtam en tal em V erilog do circu ito f <= (~c) & (h I p) ;
end
AbridorDePorta. A declaração de m ódulo e sim i­ endmodule
lar à descrição estrutural da Fig. 9.5(c). m as na
d escrição com portam ental precisam o s d eclarar Figura 9.10 Descrição com portam ental
que a saída f é do tipo reg. O co m p o rtam en to do projeto AbridorDePorta em Verilog.
consiste em um procedim ento always, sensível às
entradas c, h e /;. Q uando o procedim ento é executado (ou seja, sem pre que c, h e /; sofrem
alterações), então o procedim ento executa um único com ando que atualiza o valor d e /, atri­
buindo o v a lo r44(~c) & (h | p) ’’.A q u i, &e | executam as operações de inversão, A N D e
O R. respectivam ente.
A o p ro je ta rm o s o c irc u ito AbridorDePorta , p o d e ría m o s c o m e ç a r co m a d e sc riç ã o
co m p o rtam en tal e re a liz a r um a sim u lação p ara v erificar se o co m p o rta m e n to está correto.
A seguir, p o d eríam o s criar um a d escrição estru tu ral e re a liz a r n o v am en te um a sim u lação
para v erificar se o circu ito ap resen ta a m esm a fu n cio n alid ad e da d e sc riç ã o c o m p o rta m e n ­
tal. D e fato, há ferram en tas q u e a u to m a tic a m e n te co n v ertem tal c o m p o rta m e n to em um
circuito.

SystemC
A Fig. 9 . 11 contém um a d escrição co m p o rta­ #include "systemc.h"
m ental em S ystem C de um a porta O R de duas SC_MODULE(OR2)
e n trad as q u e u sam o s c o m o co m p o n e n te na {
Fig. 9 .6 (c), co m o você se recorda. A d e sc ri­ sc in<sc l o g i o x, y;
ção em S ystem C declara um m ódulo d en o m i­ sc_out<sc l o g i o F;

nado O R 2 , o qual tem du as p o rtas a * e y de SC_CTOR(OR2)


entrada e um a porta F de saída, to d as d o tipo {
sc _ l ogi c, indicando q ue as en trad as e a saída SCMETHOD(logicacomb);
sensitive << x << y;
são bits individuais. O m ódulo d efin e a fun­
}
ção co n stru tiv a SCJCTO R q ue co n siste em
um único p ro cesso d en o m in ad o logicacomb void l o g i c a c o m b ()
e d efin id o com o um SC_M ETH O D (método {
F.write ( x . r e a d O | y.readO);
SC). Em S ystem C . um SC_M ETH OD é um
}
co n stru to que descreve um co m p o rtam en to . h
A qui, a d eclaração do p ro cesso é “ SC_METH0D
(lo g ic a c o m b ) ; s e n s i t i v e « x « y ; ” . Figura 9.11 D escrição com portam ental de
Isso sig n ific a q u e o p ro c e sso e x e c u ta rá o uma porta OR em SystcmC.
Linguagens de Descrição de Hardware 473

co m p o rtam en to d o circuito, descrito na função logicacomb , sem p re que h o uver um a altera­


ção em a* ou y . E m ou tras palavras, o p rocesso e sensível a a e y . O co rp o do processo está
definido na função logicacomb sendo declarad o com o “ voi d 1ogi caco m b ()’\ A fu n ção do
processo (a parte en tre a chave de abertura “ {’ e a d e fech am en to “ }”) pode co n ter co m an ­
dos seqiienciais, ex atam en te co m o os co m an d o s seq u en ciais em C ou C + +, m as alg u m as
vezes requer um a sintaxe diferente. O processo m ostrado tem apenas um d esses com andos
escrevendo o valo r d e " x . re a d ( ) | y . re a d ( ) " em F , em que | executa a op eração O R.
E m System C , p o d e-se ler o valor co rren te de um a porta de en trad a usando a fu n ção read()
(ler) e p od e-se escrever um valo r em um a p o rta de saíd a usando a fu n ção writef) (escrever).
E m bora possam os usar outros m étodos para ter acesso às portas d e en trad a e saída, as fun­
ções read() e writef) são as recom endadas.
C o m o o u tro ex em p lo de um a d e sc ri­
#include "système.h"
ção c o m p o rta m e n ta l, v am o s re v isita r o
n o sso ex em p lo AbriclorDePorta d a Fig. SC_MODULE(AbridorDePorta)
9 .6 (c), para o qual tín h am o s c ria d o um a {
d e s c riç ã o e stru tu ra l em S y ste m C . A l- sc _in<sc_logic> c, h, p;
sc out<sc l o g i o f;
te rn a tiv a m e n te , a g o ra p o d e re m o s c ria r
um a d e sc riç ã o c o m p o rta m e n ta l. A Fig. SC_CTOR(AbridorDeporta)
9 .1 2 a p re se n ta um a d e sc riç ã o co m p o r- {
SC_METHOD(logicacom b);
tam en tal em S y stem C d o c irc u ito Abri-
sensitive << c << h << p;
dorDePorta. A d e c la ra ç ã o de m ó d u lo é }
a m esm a da d e sc riç ã o estru tu ral da Fig.
9 .6 (c ). O c o m p o rta m e n to c o n s is te em void l o g i c a c o m b ()
um ú n ico p ro cesso d e n o m in a d o logica­ {
f .wr i t e ((~c.r e a d ()) & (h.readO
comb q ue 6 sen sív el às e n tra d a s c\ h e p .r e a d ()));
p. Q u an d o o p ro c e sso c e x e c u ta d o (ou }
seja, se m p re q ue c, h e p so frem a lte ra ­
ções), ele ex ecu ta o seu ú n ico co m an d o ,
o qual atu a liz a o valo r de / a t r i b u in d o o Figura 9.12 Descrição com portam ental do pro­
v a lo r “ ( ~ c .r e a d ( )) & ( h .r e a d ( ) | jeto AbridorDePorta em SystemC.
p .r e a d ( ) ) ” . A qui, ~ ex ecu ta um a o p e ­
ração de inversão, & ex ecu ta um a o p e ra ­
ção A N D e | , um a o p eração O R.
A o p ro je ta rm o s o c irc u ito AbridorDePorta , p o d e ría m o s c o m e ç a r co m a d e sc riç ã o
co m p o rtam en tal e realizar u m a sim u lação p ara v erificar se o co m p o rta m e n to e stá correto.
A seguir, p o d eríam o s c ria r um a d escrição estru tu ral e re a liz a r n o v am en te um a sim u lação
para v erificar se o circ u ito ap resen ta a m esm a fu n cio n alid ad e da d e sc riç ã o c o m p o rta m e n ­
tal. De fato, há ferram en tas q u e a u to m a tic a m e n te co n v ertem tal c o m p o rta m e n to em um
circuito.

Bancadas de teste
Um dos principais usos de um a H D L é a sim ulação de um novo projeto para assegurar que
ele está correto. Para sim ular um projeto, precisam os colocar certos valores nas entradas do
projeto e, em seguida, verificar se os valores de saída são os valores que esperávam os. Um
sistem a que prepara os valores de entrada e verifica os valores de saíd a 6 conhecido com o
bancada de testes ( testbench). M ostrarem os agora com o criar um a bancada de teste em HDL
para verificar o nosso circuito AbridorDePorta.
474 Sistemas Digitais

VHDL
library ieee;
A F ig . 9 .1 3 m o stra use i e e e .s t d _ l o gic_1164.a l l ;
um a bancada de teste
em V H D L para o pro­ entity BancadaDeTeste is
end BancadaDeTeste;
jeto AbridorDePorta
d a F ig . 9 .4 (c ). O b ­ architecture comportamento of BancadaDeTeste is
serve q ue a en tid a d e component AbridorDePorta
port ( c, h, p: in std_logic;
d en o m in ad a bancada
f : out std_logic
de teste não tem por­ );
ta s -a en tid ad e é co n ­ end component;
tida em si m esm a, não signal c, h, p, f: std_logic;
begin
n ecessita de en trad as
A b r i d o r D e P o r t a l : AbridorDePorta port ma p (c,h,p,f);
e n ão g e ra n en h u m a
sa íd a . A a rq u ite tu ra process
declara o com ponente begin
-- caso 0
q ue p la n e ja m o s te s ­ C <= ' O ' ; h <= ' O ' ; p <= ' O' ;
tar, e s p e c ific a m e n te wait for 1 ns;
o c o m p o n e n te A bri­ assert (f ='0') report "Caso 0 f a l h o u " ;
dorDePorta. A a r­
- - caso 1
q u ite tu ra in sta n c ia o C <= '0'; h <= '0'; p <= '1';
co m p o n en te Abridor­ wait for 1 ns;
DePorta p ro d u z in d o assert <f='1') report "Caso 1 falhou";
-- (casos 2-6 omitidos da figura)
um a instância que d e­ -- caso 7
n o m in am o s Abridor­ C <= '1'; h <= '1'; p <= '1';
DePortal. Um único wait for 1 ns;
p ro c e sso na a rq u ite ­ assert <f ='0') report "Caso 7 falhou";

tura ativa as en trad as wait; -- o processo não "acorda" novamente


do com ponente e veri­ end process;
fica se a saída é a cor­ end comportamento;
reta. E ssa bancada de
teste verifica todos os Figura 9.13 D escrição com portam ental em VHDL da bancada de
caso s p o ssív e is p ara teste para AbridorDePorta.
três entradas, havendo
o ito c a s o s . M u ito s
com ponen tes têm en trad as dem ais p ara que todos os casos possíveis sejam testados; nesta
situação, poderem os testar casos específico s (por exem plo, tudo 0, tudo 1) e então alguns
casos aleatórios.
Em cada caso, as três entradas do com p o n en te são preparadas com um a com binação de
valores de entrada em particular. A seguir, espera-se até que esses valores propaguem -se pelo
com ponente. A rbitrariam ente esperarem os 1 ns de tem po de sim ulação, m as poderíam os ter
escolhido qualquer tem po, porque na realidade nós não tínham os criado um atraso de tem po
para o com ponente. N o entanto, nós tem os que realm ente esperar algum tem po porque um a
sim ulação em V H D L é definida de m odo que nenhum sinal seja atualizado instantaneam ente,
mas som ente após um intervalo infinitam ente pequeno de tem po de sim ulação. Em cada caso,
após a espera, verifica-se a correção do valor na s a íd a / usando um co m an d o assert (afir­
mar). Se a condição do com ando assert for verdadeira, a sim ulação prosseguirá no próxim o
com ando, m as se a condição for falsa, a m ensagem de erro correspondente será relatada e a
sim ulação será encerrada.
Linguagens de Descrição de Hardware 475

Verilog
module B a n c a d aDeTeste;
A Fig. 9.14 m o stra um a b an ­ reg c, h, p;
cada de teste em V erilog para wire f ;
o p ro jeto AbridorDePorta da
AbridorDePorta AbridorDePortal(c, h, p, f );
Fig. 9.5(c). O bserve que o m ó­
dulo d en o m in ad o Bancada de initial
teste não tem portas - o m ódulo begin
// caso 0
está co n tid o em si m esm o, não
c <= 0; h <= 0; p <= 0;
req u er en trad as e não gera ne­ #1 $display("f = % b " , f );
nhum a saída. O m ódulo declara // caso 1
prim eiro três sinais c, h e p , do c <= 0; h <= 0; p <= 1;
#1 $display("f = % b " , f) ;
tipo registrador, e um único fio
// {casos 2-6 omitidos da figura)
/ . O s sinais c\ h e p são d ecla­ // caso 7
rados com o reg porque devere­ C <= 1; h <= 1; p <= 1;
m os atribuir valores aos sinais #1 $display("f = %b", f );
end
que serão c o n e c ta d o s às e n ­ endmodule
tradas do p ro jeto que estam os
testando. E ntretanto, com o não Figura 9.14 Descrição comportamental em Verilog da ban­
precisam os atribuir um valor à cada de teste para AbridorDePorta.
saída que estam os m onitorando,
o sinal f é declarado com o sendo do tipo wire (fio). A bancada de teste instancia prim eiro o
com ponente AbridorDePorta , produzindo um a instância de nom e AbridorDePortal , e c o ­
necta as entradas e saídas do com ponente aos nossos sinais internos. A seguir, a bancada de
teste inclui um procedim ento de nom e initial ( inicial) que define um bloco de código que
será executado apenas um a vez quando tiver início a execução da bancada de teste, ü pro­
cedim ento inicial prepara as entradas do com ponente AbridorDePorta c exibe o valor que é
gerado na saída do com ponente. Essa bancada de teste tenta todos os casos possíveis com as
tres entradas, havendo oito deles. M uitos com ponentes têm entradas d em ais para que todos
os casos possíveis sejam testados; nesta situação, poderem os ten tar casos específicos (por
exem plo, tudo 0, tudo 1) e então alguns casos aleatórios.
Em cada caso, as três entradas do com ponente são preparadas com um a com binação de
valores de entrada em particular. A seguir, espera-se ate que esses valores propaguem -se pelo
com ponente. A rbitrariam ente esperarem os 1 unidade de tem po de sim ulação usando o c o ­
m ando de controle dc atraso “ #1 ” , m as po d eríam o s ter esco lh id o q u alq u er intervalo de
tem po porque na realidade nós não tínham os criado um atraso dc tem po para o com ponente.
A linguagem Verilog não define unidades padronizadas de tem po, com o um nanossegundo,
m as ao invés define sim plesm ente o tem po em term os de unidades de tem po, as quais podem
ser usadas por um projetista dentro de um am biente de sim ulação. De fato, tem os que esperar
um certo tem po porque na bancada de teste as atribuições são com andos do tipo nonblocking ,
os quais não são atualizados até que a sim ulação corrente esteja com pletada. Em cada caso,
após o tem po de espera, o valor da s a íd a /s e r á gerado usando-se o com ando Sdisplay (exibir).
O com ando “$di sp l ay (" f = %b", f ) ” fornece o valor de saída d e /e m binário. Por exem plo,
se o valor d e/ for 1. então o com ando display produzirá “ f = 1". O com ando display consiste
em um a especificação de form ato seguida de um a lista de fios, registradores e portas, separa­
dos por vírgulas. D entro da especificação de form ato do nosso com ando display , o %b indica
que o valor do sinal especificado após o form ato será exibido em binário. A pós a sim ulação
estar com pleta, para determ inar se o nosso circuito está funcionando corretam ente, podere­
m os com parar os valores de saída da sim ulação com os valores esperados.
476 Sistemas Digitais

SystemC
#include "systemc.h"
A F ig . 9.15 m o stra u m a b a n c a d a
dc teste em S y stem C para o p ro jeto SC_MODULE(BancadaDeTeste)
AbridorDePorta da Fig. 9 .6 (c). O b ­ {
sc_out<sc_logic> c_t, h_t, p _ t ;
se rv e q ue o m ó d u lo d e n o m in a d o
sc_in<sc_logic> f_t;
BancadaDeTeste têm três p o rtas de
sa íd a c_t , h_t e p_t , e u m a p o rta de SC_CTOR(BancadaDeTeste)
en trad a f_t. Em S ystem C , projetam os {
SC_THREAD(bancada_de_teste_proc);
o circ u ito da b an cad a de teste com o
}
um m ód u lo sep arad o q ue se co n ecta
ao p ro je to q ue e stá sen d o testad o . void b a n c a d a _ d e _ t e s t e _ p r o c ()
P o rtan to , para cad a p orta de en trad a {
// caso 0
do c irc u ito q ue e sta m o s te sta n d o , c _ t .write(SC_LOGIC_0)
a n o ssa b a n c a d a d e teste le rá um a h _ t .write(SC_LOGIC_0)
p o rta de sa íd a c o rre sp o n d e n te . De p _ t .write(SC_LOGIC_0)
w a i t (1, S C _ N S ) ;
m odo se m e lh a n te , p ara c a d a p o rta a s s e r t ( f_t.read() == SC_LOGIC_0 );
de sa íd a d o c irc u ito q u e e sta m o s
te sta n d o , a no ssa b a n c a d a de teste // caso 1
c _ t .w r i t e (SC_LOGIC_0)
terá um a p orta de en tra d a c o rre sp o n ­
h _ t .w r i t e (SC_LOGIC_0)
dente. O m ódulo d a b an cad a de teste p _ t .write(SC_LOGIC_l)
d efin e um ú n ico p ro cesso de nom e w a i t (1, S C _ N S ) ;
bancadajdejeste_j?roc. E sse p ro ­ a s s e r t ( f_t.read() == SC_LOGIC_l );

cesso de b an cad a de teste é d efin id o // (casos 2-6 omitidos da figura)


co m o SC _T H R E A D , q ue é sim ila r // caso 7
a um p ro c e sso SC _M ETH O D , e x ­ C_t .w r i t e (SC_LOGIC_l);
ceto q u e SC_TH READ p erm ite-n o s h _ t .write(SC_LOGIC_l);
p _ t .write(SC_LOGIC_l);
usar a função wait() (esperar) dentro w a i t (1, S C _ N S ) ;
do co rp o d e um p ro c e sso SC_M E- assert ( f t . r e a d O == SC LOGIC 0 );
TH O D . O p ro c e sso de b a n c a d a de
SC_stop();
teste co n tro la as en trad as do circu ito
}
que estam o s testando e verifica se as
};
saíd as e stã o c o rre ta s. E ssa bancada
de teste ten ta lo d o s os caso s p o ssí­ Figura 9.15 Descrição comportamental em SystemC
veis p ara as três en trad as de Abridor - da bancada de leste para AbridorDe Porta.
DePorta , havendo oito deles. M uitos
com p o n en tes têm entradas dem ais p ara que todos os casos sejam testados; nesta situação,
p o d erem o s ten tar caso s esp ecífico s (p o r exem plo, tu d o 0, tudo 1) e alg u n s c a so s a le a tó ­
rios.
E m cad a caso , as três e n tra d a s d o circ u ito AbridorDePorta são p re p a ra d a s com um a
d ad a co m b in ação de valores d e e n trad a. A seguir, e sp e ra -se até q u e esses v alo res p ro p a ­
g u e m -se p elo c o m p o n e n te . A rb itra ria m e n te e sp e ra re m o s 1 ns d e te m p o d e sim u la ç ã o ,
m as p o d eríam o s te r e sc o lh id o q u a lq u e r tem p o , p o rq u e na re a lid a d e n ão tín h am o s criad o
um atraso de tem po p ara o co m p o n en te. N o en tan to , tem o s q u e real m ente e sp e ra r alg u m
tem p o p o rq u e um a sim u la ç ã o em S y stem C é d efin id a de tal m o d o q u e n en h u m sinal é
a tu a liz a d o in sta n ta n ea m e n te , m as so m en te a p ó s u m in terv alo in fin ita m e n te p eq u en o de
tem p o de sim u lação . E m cad a caso , v e rific a -se a c o rre ç ã o d o v alo r d e saíd a a p ó s a e s­
pera. P ara isso, fazem o s u m a leitu ra d a p o r t a / e u sam o s um c o m a n d o assert {afirmar).
Se a c o n d iç ã o d o c o m a n d o assert fo r v e rd a d e ira , a sim u la ç ã o p ro sse g u irá no p ró x im o
com ando. E n tretan to , se a co n d ição fo r falsa, a sim u la ç ão irá p arar e a m en sag em de erro
co rresp o n d en te será relatada.
Linguagens de Descrição de Hardware 477

Em System C , valores lais com o 0 e 1 são valores inteiros e não lógicos. Por outro lado,
os valores lógicos 0 e 1 são definidos na linguagem System C com o SC_LOGIC_0 e SC_LO-
GIC_Í , respectivam ente, os quais foram usados por nós na descrição.

► 9.3 DESCRIÇÃO DE LÓGICA SEQÜENCIAL USANDO LINGUAGENS DE


DESCRIÇÃO DE HARDWARE

Registrador
Em lógica seqüencial, o com ponente m ais básico é o registrador. M ostrarem os agora com o
m odelar um registrador básico em HDLs.

VHDL
A F is. 9.16 m ostra um reais-
library ieee;
trador básico de quatro bits use i e e e .std__logic_1164 .a l l ;
em V H D L . O reg istrad o r é
idêntico ao d escrito na Fig. entity Reg4 is
port { I : in std _ l o g i c _ v e c t o r {3 downto 0);
3.30. A entidade de Une a en­
Q: out s t d _ l o g i c _ v e c t o r (3 downto 0);
trada / e a saída Q, am bas de clk: in std_logic
dados, assim com o a entrada );
de re ló g io clk. A e n tra d a end R e g 4 ;
/ e a saída Q deste p ro jeto
architecture comportamento of Reg4 is
co rresp o n d em a valores de begin
quatro bits. A o invós de usar p r o c e s s (clk)
begin
oito en trad as e saíd as in d i­
if (elks'1* and c l k ’event) then
viduais do tipo std jo g ic, as Q < = I;
portas / e Q da entidade são end if;
definidas com o sendo do tipo end process;
end comportamento;
stdJogic_vector. Um s td jo -
gic_vector é um vetor, ou ar­ Figura 9.16 Descrição comportamental em VHDL de um re­
ranjo ( array ) com m últiplos gistrador de quatro bits.
elem entos do tipo stdjogic.
Por exem plo, a declaração de tipo “ s td _ lo g ic _ v e c to r ( 3 downto 0 )" define um vetor de 4
bits com elem entos do tipo std jo g ic , em que as posições dos bits d entro do vetor são num e­
radas de 3 a 0. O com ando downto {decrescendo até) define a ordem dos elem entos dentro
do vetor, indicando que o elem ento 3 está localizado na posição m ais à esquerda. A ssim , o
com ando “ I<="1000"” irá atribuir o valor ‘T à posição 3 do vetor I e o valor ‘0’ às três p o ­
sições restantes. Q uando se atribui um valor a um stdjogic_vector, o valor do vetor deve ser
especificado com aspas duplas. Por exem plo, o valor decim al 5 seria especificado com o um
stdJogic_vector de valor “0101” .
A arq u itetu ra descreve o reg istrad o r de form a co m p o rlam cn tal, usando um co m an d o
de processo. E sse p rocesso e sensível apenas à sua en trad a clk -c o m o o p ro cesso só deve
atu a liz a r a sua saíd a d u ran te um a b orda de su b id a do reló g io , não 6 n ecessário ex ecu tar
esse p rocesso quando a en trad a 1 6 alterada. Se clk for alterado, então o p ro cesso co m eçará
a ex ecu tar os seus com andos. O p rim eiro co m an d o v erifica se o p ro cesso co m eço u a ser
executado devido a um a b orda de subida d o reló g io (0 a 1), em o p o sição a um a borda de
descida (1 a 0). Para verificar se ocorreu um a borda de subida, o co m an d o testa se a entrada
clk acabou de se alterar (c l k ' e v e n t) e se essa alteração foi para 1 (c l k= 11 ') . Se o processo
co m eçar a ser executado devido a um a b o rd a de subida do relógio, en tão ele atu alizará os
478 Sistemas Digitais

conteúdos d o registrador usando o com ando “q <= I ” . N o caso de ter oco rrid o um a borda
de d escid a d o reló g io , o p ro cesso co m eçará a se r ex ecu tad o , v erifican d o a co n d iç ã o do
com an d o if (se) e chegando então ao seu final. A execução do p ro cesso é interrom pida sem
que a saída Q tenha sido atualizada. Idealm ente, a V H D L deveria ter um m odo para que a
execução de um processo fosse iniciada apenas na borda de subida do relógio, m as ela não
conta com esse recurso.
Em V H D L, portas de saída são um tipo de sinal e em um a sim ulação os sinais têm m em ó­
ria. A ssim , a atribuição do valor de / à saída Q faz com que Q retenha o novo valor, m esm o
quando o processo pára de ser executado. D esse m odo, im plem entam os a parte de arm azena­
m ento do registrador.

Verilog
A Fig. 9.17 m o stra um reg istrad o r básico de q u atro bits
module R e g 4 ( I , Q , c l k ) ;
em V erilog. O reg istrad o r é id ên tico ao d escrito na Fig. input [3:0] I;
3.30. O m ód u lo d efin e a e n tra d a / e a sa íd a Q, am b as input e l k ;
de d a d o s, assim co m o a en tra d a de re ló g io clk. A e n ­ output [3:0] Q;
reg [ 3 : 0 ] Q ;
trada / e a saída Q d este projeto co rresp o n d em a valores
de q u atro bits. A o invés d e usar oito en trad as e saídas always @ (posedge e l k )
in d iv id u ais, as p o rtas / e Q d o m ód u lo são d e fin id a s begin
com o vetores. P o r exem plo, a d eclaração de tipo “ i n p u t Q <= I ;
end
[3 :0 ] 1“ define um vetor de en trad a de 4 bits, em que endmodule
as p o siçõ es dos bits d en tro do veto r são n u m erad as de
3 a 0. O [3:0] d efin e a ordem dos e lem e n to s no vetor, Figura 9.17 D escrição compor-
in d ican d o q ue o elem en to 3 está lo calizad o na posição tamental em Verilog de um regis­
m ais à esq u erd a. A ssim , o co m an d o “ I< = 4 'b l0 0 C r iria trador de quatro bits.
atrib u ir o valor 1 à p o sição 3 do veto r / e o v alo r 0 às
três p o siçõ es restan tes. Q u an d o se atribui um v alo r a um vetor, d ev em o s e sp e c ific a r o
núm ero de bits que esse valo r terá, a base com a qual estam o s e sp e c ific a n d o o valor e o
próprio valor. P or exem plo, o valor decim al 5 seria esp ecificad o co m o 4 ’bOlOI, um valor
binário de 4 bits.
O m ódulo descreve o registrador de form a co m p o rtam en tal, usando um procedim ento
always. Esse procedim ento é sensível à borda positiva da entrada clk. Isso é especificado com
0 uso da palavra-chave posedge (borda positiva) - com o o processo só deve atualizar a sua
saída durante um a borda de subida do relógio, o procedim ento always não precisa ser execu­
tado quando a entrada 1 6 alterada. N a borda positiva do relógio, o procedim ento atualiza os
conteúdos do registrador usando o com ando “Q <= I ” . C om o a saída Q foi definida por nós
com o sendo do tipo reg , a atribuição do valor de I à saída Q faz com que Q retenha o novo
valor, m esm o quando o processo pára de ser executado. D esse m odo, im plem entam os a parte
de arm azenam ento do registrador.

SystemC
A Fig. 9.18 m ostra um registrador básico de quatro bits em System C . O registrador é idên­
tico ao descrito na Fig. 3.30. O m ódulo define a entrada / c a saída Q, am bas de dados, assim
com o a entrada de relógio clk. A entrada / e a saída Q deste projeto correspondem a valores
de quatro bits. A o invés de usar oito entradas e saídas individuais do tipo se jo g ie , as portas
1 e Q do m ódulo são definidas com o vetores lógicos do tipo s e j v (lv de logical vector). Um
vetor s c j v tem m últiplos elem en to s do tipo sc jo g ic . P or exem plo, a declaração de tipo
“ sc_ l v<4>" define um vetor com 4 bits de elem entos do tipo sc jo g ic , em que as posições dos
bits no vetor são num eradas de 3 a 0. Em System C , a ordem dos elem entos dentro do vetor
é definida de m odo que a posição m ais à esquerda é o bit m ais significativo. Por exem plo, o
com ando “ I<=" 1000"v atribui o valor 1 à posição 3 do vetor / e o valor 0 às três posições res­
tantes. Q uando se atribui um valor a um vetor do tipo s c j v f o valor deve ser especificado com
Linguagens de Descrição de Hardware 479

aspas duplas. P or exem plo, o valor decim al 5 seria e s­ #include "système.h"


pecificado com o sendo s c j v de 4 bits e valor “ 0101
O bserve que, quando definim os a porta de en trad a de SC_MODULE(Reg4)
/. incluím os um espaço em branco entre os dois sinais {
sc_in<sc_lv<4> > I;
finais “ m aior do q ue” , >. Em System C , esse espaço é sc_out<sc_lv<4> > Q;
necessário. sc_in<sc_logic> clk;
O m ódulo consiste em um único processo de nom e
SC_CTOR(Reg4)
logica_seqy que e sensível à borda positiva da entrada
{
clk. Isso foi especificado com o uso d o com ando sen- SC_METHOD(seq_logic);
sitive_j)os que c utilizado para definir a lista de sensi- sensitive_pos << clk;
tividade. C om o o m ódulo só deve atualizar a sua saída }
durante um a borda de subida do relógio, o processo lo- void logic_seq()
gica_seq não precisará ser “acordado“ se a entrada I for {
Q .write(I .read());
alterada. Na borda positiva do relógio, o registrador tem
os seus co n teú d o s atu alizad o s por m eio do com ando }
}:
“Q . w r i t e ( I . r e a d ( ) ) ”
Em System C , as portas de saída são um tipo de sinal Figura 9.18 Descrição com porta-
e sinais tem m em ória. A ssim , a atribuição do valor de / mental em SystemC de um registra­
à Q faz com que Q retenha o novo valor, m esm o quando dor de quatro bits.
o processo pára de ser executado. D esse m odo, im plem entam os a parte de arm azenam ento
do registrador.

Oscilador

VHDL
O re g istra d o r a p re se n ta d o na Fig. 9 .I 6 tem um a e n tra d a de reló g io . A ssim , p recisam o s
d e fin ir um co m p o n en te o scilad o r q ue g era um sinal de relógio. A Fig. 9.19 ilu stra um o s­
c ila d o r q u e está d escrito em V H D L . A en tid a d e d e fin e um a saíd a clk. A a rq u ite tu ra c o n ­
siste em um p ro cesso , m as o b serv e q u e o p ro cesso não possui um a lista de sensitividade.
Im p licitam en te, esse p ro cesso ex ecu ta os seu s c o m an d o s co m o se eles estiv e sse m c o n ti­
d o s em um laço in fin ito . A ssim , ele atribui 0 ao sinal de reló g io , fica “ a d o rm e c id o “ até
q ue ten h am se p assad o IO ns d o tem p o d e sim u lação , atribui 1 ao relógio, fica ad o rm ecid o
por m ais 10 ns d o tem p o d e sim u lação , reto rn a ao p rim eiro co m an d o d o p ro cesso , aq u ele
q ue atribui 0 ao relógio, e assim p o r d ian te. A fo rm a de o n d a d esse o sc ila d o r será id ên tica
à m o strad a na Fig. 3.17.
Em V H D L . o com an d o wait fo r {es­ library ieee;
pere por) diz ao sim ulador durante quanto use i e e e .s t d _ l o gic_1164.all;
tem po de sim u lação a ex ecução do pro­
entity Osc is
cesso deve ser interrom pida. Um processo port ( clk: out std_logic );
sem um a lista de sen sitiv id ad e deve ter end Osc;
ao m enos um com ando de espera, senão
architecture comportamento of Osc is
o sim u lad o r nunca irá p arar de sim u lar
begin
esse processo (porque o processo está em process
um laço infinito) e, portanto, o sim ulador begin
nunca terá a oportunidade de atu alizar as clk <= '01;
wait for 10 ns;
saíd as ou sim u lar outros processos. Por clk <= •11;
outro lado, um processo com um a lista de wait for 10 ns;
sensitividade não pode co n ter com andos end p r o c e s s ;
end comportamento;
de espera, porque por definição a lista de
sen sitiv id ad e define q u an d o o p rocesso Figura 9.19 D escrição de um oscilador em
deve ser executado. VHDL.
480 Sistemas Digitais

Verilog
O registrador apresentado na Fig. 9.17 tem um a entrada de relógio.
module O s c ( c l k ) ;
A ssim , precisam os definir um com ponente oscilador q u e gera um output clk;
sinal de relógio. A Fig. 9.20 ilustra um oscilad o r d escrito em Ve­ reg clk;
rilog. O m ódulo define um a saída, clk. O m ódulo consiste em um
always
procedim ento always 9m as observe que o procedim ento always não
begin
possui um a lista de sensitividade. Im plicitam en te, esse pro ced i­ clk <= 0;
m ento executa os seus com andos com o se eles estivessem contidos #10;
em um laço infinito. A ssum indo que estam os usando um a escala de clk <= 1;
#10;
tem po em nanossegundos, o procedim ento always atribui 0 ao sinal end
de relógio, espera 10 ns de tem po de sim ulação, atribui 1 ao reló­ endmodule
gio, atrasa-se por m ais 10 ns de tem po de sim ulação, retorna ao pri­
m eiro com ando do procedim ento, aquele que atribui 0 ao relógio, Figura 9.20 Descrição
e assim por diante. A form a de onda desse oscilador será idêntica à de um oscilador em Ve­
m ostrada na Fig. 3.17. rilog.
O com ando de controle de atraso, especificado com o caractere #, diz ao sim ulador d u ­
rante quanto tem po de sim ulação a execução do processo deve ser interrom pida. Um processo
sem um a lista de sensitividade deve ter ao m enos um com ando de controle de atraso, senão
o sim ulador nunca iria parar de sim ular esse procedim ento (já que este está em um laço infi­
nito) e, portanto, nunca teria a oportunidade de atualizar as saídas ou sim ular outros proce­
dim entos. Por outro lado, um procedim ento com um a lista de sensitividade não pode conter
com andos de controle de atraso, porque por definição a lista de sensitividade define quando o
procedim ento deve ser “acordado” .

SystemC #include "systemc.h"


O reg istrad o r ap resen tad o na Fig. 9.18 tem um a
entrada de relógio. A ssim , precisam os definir um SC_MODULE(Osc)
com ponente oscilador que gera um sinal de relógio. {
sc_out<sc_logic> clk;
A Fig. 9.21 ilustra um oscilad o r que está descrito
em System C . O m ódulo define um a saíd a clk. O SC_CTOR(Osc)
m ódulo consiste em um único processo denom inado {
SC_THREAD(logic_seq);
logica_seq e im plem entado com o SC_THREAD.
}
Im plicitam ente, um processo SC_THREAD é exe­
cutado apenas uma vez. Para assegurar que o pro­ void logic_seq()
cesso seja executado continuam ente, colocam os os {
w h i l e (true) {
com andos do processo em um laço infinito, o qual c l k .write(SC_LOGIC_0);
c im plem en tad o com o uso d o com an d o “w h i l e w a i t (10, SC_NS);
( t r u e ) " (enquanto (verdadeiro)). A ssim , os c o ­ c l k .write(SC_LOGIC_l);
w a i t (10, S C _ N S ) ;
m andos dentro das chaves serão executados para
}
sem pre pelo laço. D urante a execução, o processo
}
atribui 0 ao sinal de relógio, suspende a execução } <■
durante 10 ns do tem po de sim ulação, atribui 1 ao
relógio, fica “adorm ecido” por m ais 10 ns do tem po Figura 9.21 Descrição de um oscilador
de sim ulação, atribui 0 ao sinal de relógio, e assim em SystemC.
por diante. A form a d e onda desse oscilador será idêntica à m ostrada na Fig. 3 .17.
Em System C , a função wait() diz ao sim ulador durante quanto tem po de sim ulação a exe­
cução do processo deverá perm anecer interrom pida. Por exem plo, o com ando “wai t (1 0 , SC_
N S ) i r á suspender a execução do processo durante 10 ns. Um processo SCJTH READ , que
explicitam ente im plem enta um laço infinito, deve ter ao m enos um com ando de espera, senão
o sim ulador nunca irá parar de sim ular esse processo (porque o processo está em um laço infi­
nito) c, portanto, o sim ulador não poderá atualizar as saídas ou sim ular outros processos.
Linguagens de Descrição de Hardware 481

Blocos de controle
Lem bre-se de que um tipo
library ieee;
comum de circuito seqüen- use i e e e .std_logic_1164.all
cial 6 um bloco de co n ­
entity TemporizadorDeLaser is
trole, o qual im plem enta
port (b: in std_logic;
um a m áquina de estados x: out std_logic;
finitos. O bloco de co n ­ elk, r s t : in std_logic
trole consiste em um re­ );
end TemporizadorDeLaser;
gistrador de estado e uma
lógica com bi nacional. architecture comportamento of LaserTimer is
type tipoestado is
(S_Desligado, S_Ligadol, S_Ligado2, S_Ligado3);
VHDL signal estadoatual, proximoestado:
A Fig. 9.22 m o stra um tipoestado;
m odo de se m odelar um begin
registradordeestado: p r o c e s s (clk, rst)
b lo c o de c o n tro le em
begin
V H D L. O bloco de con­ if (rst='l') then -- estado inicial
trole m odelado c descrito estadoatual <= S_Desligado;
elsif {clk=,l l and elk'event) then
pela FSM m o strad a nas
estadoatual <= proximoestado;
Figs. 3.38 e 3.39. A enti­ end if;
dade V H D L denom inada end process;
Te m p o rizü d o rD e L a s e r
logicacomb: process (estadoatual, b)
define as entradas e saídas begin
do bloco de controle. case estadoatual is
A arq u itetu ra V H D L when S_Desligado =>
x <= 'O'; -- laser desligado
descreve o com portam ento if (b='0') then
da entidade. Ela consiste proximoestado <= S_Desligado;
em d o is p ro cesso s, um else
proximoestado <= S_Ligadol;
que m odela o registrador end if;
de estado e outro que m o­ when S_Ligadol =>
dela a lógica com binacio- x <= '1'; -- laser ligado
proximoestado <= S_Ligado2;
nal. O s dois form am a ar­ when S_Ligado2 =>
quitetura padrão do bloco x <= '1'; -- laser ainda ligado
de controle da Fig. 3.47. proximoestado <= S_Ligado3;
when S_Ligado3 =>
x <= '1'; -- laser ainda ligado
Figura 9.22 D e s c riç ã o proximoestado <= S_Desligado;
end case;
com portam ental em VHDL
end process;
do bloco de controle de end comportamento;
Temporízado rDeLaser.

O prim eiro processo descreve o registrador de estado do bloco de controle. Esse processo
denom inado registradordeestado 6 sensível às entradas clk e rst. Sc a entrada rst estiver ha­
bilitada, então o processo atribuirá assincronicam ente o estado inicial S_ Desligado da FSM
ao sinal estadoatual. Em caso contrário, se o relógio estiver subindo, o processo atualizará o
registrador de estado com o próxim o estado.
O s sin ais estadoatual e proximoestado são d efin id o s co m o sen d o de um tip o d efin id o
pelo u su ário , de n o m e tipoestado. E sse tipo 6 d efin id o p elo c o m a n d o type (tipo) e e sp e c i­
fica os v alores p o ssív eis q u e um sinal d esse tip o p ode assum ir. A o se e sp e c ific a r tipoes­
tado para re p re sen ta r os esta d o s de um a F SM . a d eclaração type lista rá os n om es de todos
os e sta d o s d o b lo co d e c o n tro le , e sp e c ific a m e n te S_ Desligado , S_LigadoL S_Ligado2
e S_Ligado3.
482 Sistemas Digitais

O seg u n d o p rocesso descreve a lógica co m b in acio n al do bloco d e co n tro le. E sse p ro ­


cesso d en o m in ad o logicacomb 6 sensível às en trad as da lógica co m b in acio n al da Fig. 3.47,
esp ecificam en te, às en trad as ex tern as (nesse caso , b) e às saídas do reg istrad o r de estado
(.estadoatual ). Q uando q u alq u er um desses itens sofre um a alteração , o p ro cesso co lo ca o
valor ap ro p riad o do estad o atual na saída x , neste caso, da F SM . O p ro cesso tam bém d e­
term in a qual deve ser o estad o seguinte, baseado no estado atual e nos valores das en trad as
(isto é, nas co n d içõ es das tran siçõ es da FSM ). N a p ró x im a b o rd a de su b id a do reló g io , o
p ró x im o estad o será carreg ad o no re g istra d o r de e stad o pelo p ro cesso do re g istra d o r de
estado.
O bserve que a arquitetura declara os dois sinais estadoatual e proximoestado. Sinais são
visíveis em todos os processos de um a arquitetura. O sinal estadoatual representa o valor
atual que está arm azenado no registrador de estado.O sinal proximoestado representa o va­
lor q ue vem d a ló g ica com -
binacional e que se d irig e ao module TemporizadorDeLaser(b# x ; clk, rst);
registrador de estado. O bserve input b, clk, rst;
output x;
tam bém que a arq u itetu ra d e­ reg x;
clara esses sinais com o sendo
do tipo tipoestado, o qual foi parameter S_Desligado = 2'bOO,
S_Ligadol = 2 ’b01,
definido na arq u itetu ra com o
S_Ligado2 = 2'blO,
um tipo cujo valor pode ser S_ S_Ligado3 = 2'bll;
Desligado , SJLigadol , S_Li-
gado2 ou S_Ligado3. reg [1:0] estadoatual;
reg [1:0] proximoestado;
// procedimento para o registrador de estado
Verilog always @ (posedge rst or posedge clk)
A Fig. 9.23 m ostra um m odo begin
de se m o d e la r um bloco de if (rst==l) // estado inicial
estadoatual <= S_Desligado;
controle em Verilog. O bloco else
de co n tro le m odelado é d e s­ estadoatual <= proximoestado;
crito pela FSM m o strad a nas end
Figs. 3.38 e 3.39. O m ódulo // procedimento para a lógica combinacional
always @ (estadoatual or b)
V erilog, de nom e Temporiza­ begin
dorDeLaser, define as entradas case (estadoatual)
c saídas do bloco de controle. S_Desligado: begin
x <= 0; // laser desligado
O m ódulo consiste em dois
if (b==0)
procedim entos, um que m odela proximoestado <= S_Desligado;
o registrador de estado e outro else
que m odela a lógica co m b in a­ proximoestado <= S_Ligadol;
end
cional, form ando a arquitetura S _ L i g a d o l : begin
padrão do bloco de controle da x <= 1; // laser ligado
Fig. 3.47. proximoestado <= S_Ligado2;
end
O pro ced im en to do regis­
S _ L i g a d o 2 : begin
trador de estado é sensível às x <= 1; // laser ainda ligado
bord as positivas das entradas proximoestado <= S_Ligado3;
clk e rst. O registrador de es­ end
S _ L i g a d o 3 : begin
tado tem um sinal assíncrono x <= 1; // laser ainda ligado
de reset e, p ara m odelar esse proximoestado <= S_Desligado;
reset a ssín c ro n o , o p ro c e d i­ end
endcase
m ento do re g istra d o r de e s ­
end
tado deve ser sensível à borda endmodule
positiva da entrada rst. N essa
b o rd a, o p ro c e d im e n to será Figura 9.23 Descrição comportamental em Verilog do bloco
“acordado’' assincronicam ente de controle de TemporizadorDeLaser.
Linguagens de Descrição de Hardware 483

e atribuirá o estado inicial S_Desligado da FSM ao sinal estadoatiial. Na borda de subida


da entrada de relógio clk , se a entrada de reset não estiver habilitada, então o procedim ento
atualizará o registrador de estado com o valor de proximoestado , o qual foi determ inado pelo
procedim ento da lógica com binacional.
E m Verilog, devem os especificar ex p licitam en te o tam anho dos registradores de estado,
assim com o d efin ir os valores associados a cad a estad o da FSM . D entro do m ódulo Tem-
porizadorDe Laser, d eclaram os q u atro valores de parâm etro s, a saber, S_ Desligado , S_Li-
g a d o l , S_Ligado2 e S_Ligado3 , os quais especificam os valores atrib u íd o s a cad a um dos
estados da FSM . P or exem plo, “ S_Desl ig ad o = 2 1bOO" d efin e o nom e de estad o S_Des-
ligado e atribui o valor de dois bits “ 00” a esse estado. E ntão, no m ódulo inteiro, ao invés
de usarm os valores específicos de bits, poderem os nos referir a esse estad o usando S_Des-
ligado. M esm o que não seja exigido na d efin ição de um a m áq u in a de e sta d o s, o uso de
parâm etros aum enta a legibilidade do projeto e to rn a as revisões da FSM m uito m ais fáceis.
C om o a FSM do TemporizadorDeLaser tem q u atro estados, p recisam o s de um reg istrad o r
de estad o de dois bits. P ortanto, d eclaram o s os sin ais estadoatual e proximoestado co m o
sendo registradores de dois bits.
O segundo procedim ento é o da lógica co m binacional que im plem enta a lógica de co n ­
trole d a FSM . E sse pro ced im en to é sensível às en trad as da lógica co m b in acio n al da Fig.
3.47, especificam en te, às en trad as extern as (nesse caso, b) e às saídas do reg istrad o r de
estado ( estadoatual). Q uando q ualquer um desses itens sofre um a alteração, o procedim ento
coloca o valor ap ropriado do estado atual na saída x , neste caso, da FSM . O procedim ento
d eterm in a tam bém qual deve ser o estado seguinte, baseado no estad o atual e nos valores
das entradas (isto é, nas co n d içõ es das tran siçõ es da FSM ). N a p ró x im a borda de subida
do relógio, o próxim o estado será carregado no reg istrad o r de estado pelo procedim ento de
registrador de estado.
O bserve que o m ódulo declara os dois sinais estadoatual e proximoestado. Sinais são vi­
síveis em todos os procedim entos de um m ódulo. O sinal estadoatual representa o valor atual
que está arm azenado no registrador de estado.O sinal proximoestado representa o valor que
vem da lógica com binacional e que é enviado ao registrador de estado.

SystemC
A Fig. 9.24 m ostra um m odo de se m odelar um bloco de controle em System C . O bloco de
controle m odelado é descrito pela FSM m ostrada nas Figs. 3.38 e 3.39. O m ódulo d en o m i­
nado TemporizadorDeLaser define as entradas e saídas do bloco de controle.
O m ó d u lo co n siste e m d o is p ro cesso s, um d e n o m in a d o registradordeestado q u e m o ­
d ela o reg istra d o r d e e sta d o e o u tro d e n o m in a d o logicacomb q u e m o d ela a ló g ica c o m b i­
nacional. O s d o is em co n ju n to form am a arq u ite tu ra p ad rão d o b lo co de co n tro le da Fig.
3.47.
O p ro cesso do reg istrad o r de estad o é sensível às b o rd as p o sitiv as das en trad as rst e
clk. O reg istrad o r de estado tem um sinal assín cro n o de reset. P ara se m o d elar o reset as­
síncrono, o p rocesso do reg istrad o r d e estad o deve ser sensível à b o rd a positiva da en trad a
rst. N essa borda, o p ro cesso será “aco rd ad o ” assin c ro n ic am e n te e atrib u irá o estad o in i­
cial S_Desligado da FvSM ao sinal estadoatual. Na b o rd a de su b id a da en trad a de relógio
clk, se a e n tra d a de reset não estiv er h ab ilitad a, en tão o p ro cesso a tu a liz a rá o re g istra d o r
de estad o com o valor de proximoestado , o qual foi d eterm in ad o p elo p ro cesso de lógica
com binacional.
O s sinais estadoatual e proximoestado são definidos com o sendo de um tipo definido pelo
usuário, de nom e tipoestado. Esse tipo é definido pelo com ando e n u m (de enumeração) e
especifica os valores possíveis que um sinal desse tipo pode assum ir. A o especificar tipoes­
tado , que representa os estados dc um a FvSM. a declaração e n u m lista os nom es de todos os
estados do nosso bloco dc controle, esp ec ificam ente S_ Desligado , S_LigadoL S_Ligado2
e S_Ligado3.
484 Sistemas Digitais

O s e g u n d o p ro c e s s o
#include "systemc.h"
d e n o m in a d o logicacomb é
sensível às e n tra d a s d a ló ­ enum tipoestado { S_Desligado, S_Ligadol,
S_Ligado2, S_Ligado3 };
g ica co m b in acio n al da Fig.
3 .4 7 , e s p e c ific a m e n te , às SC_MODULE(TemporizadorDeLaser)
e n tra d a s e x te rn a s e às s a ­ {
ídas d o re g istra d o r d e e s ­ sc_in<sc_logic> b, clk, rst;
sc_out<sc_logic> x;
tado. Q u an d o q u a lq u e r um sc_signal<tipoestado> estadoatual, proximoestado;
d e sses itens so fre u m a a l­
teração , o p ro c e sso co lo ca SC_CTOR(TemporizadorDeLaser) {
SC_METHOD(registradordeestado);
o v a lo r a p ro p ria d o d o e s ­ sensitive_pos << rst << clk;
tado atual na saíd a jc, neste SCMETHOD(logicacomb);
caso , d a F S M . O p ro cesso sensitive << estadoatual << b;
ta m b é m d e te r m in a q u al }
deve s e r o p ró x im o estad o , void registradordeestado() {
b a se a d o no e sta d o atu al e if( rst.r e a d () == SC_L0GIC_1 )
estadoatual = S_Deligado; // estado inicial
n o s v a lo re s d a s e n tra d a s else
(isto é, n as c o n d iç õ e s d as estadoatual = proximoestado;
tra n s iç õ e s d a F S M ). N a }
void logicacomb() {
p ró x im a b o rd a de su b id a
switch (estadoatual) {
d o re ló g io , o p ró x im o e s ­ case S_Desligado:
ta d o s e rá c a r r e g a d o no x.w r i t e (SC_LOGIC_0); // laser desligado
if( b . r e a d O == SC_LOGIC_0 )
re g istra d o r d e e sta d o pelo
proximoestado = S_Desligado;
p ro c e s s o d o r e g is tr a d o r else
d e e s ta d o . N o p rim e iro proximoestado = S_Ligadol;
break;
estad o , d ep en d en d o do va­
case S_Ligadol:
lo r d a e n tra d a /;, d e te rm i­ x.w r i t e (SC_LOGIC_l); // laser ligado
n a m o s o e s ta d o se g u in te proximoestado = S_Ligado2;
re a liz a n d o a c o m p a ra ç ã o break;
case S_Ligado2:
“ b .r e a d O == SC_L0- x.w r i t e (SC_L0GIC_1); // laser ainda ligado
G IC _0” . O b s e rv e q u e a proximoestado = S_Ligado3;
c o m p a ra ç ã o d e ig u a ld a d e break;
case S_Ligado3:
u sa a sin tax e “ ==". A o in ­ x .write(SC_LOGIC_l); // laser ainda ligado
vés, se acid en tal m en te ti­ proximoestado = S_Desligado;
v éssem o s u sad o a sin ta x e break;
“ =” , o q u e é um co m an d o }
válido, o nosso p ro jeto não
fu n cio n aria co rretam en te.
O bserve que o m ódulo F*9ura 9-24 Descrição com portam ental em SystemC do bloco
d eclara dois sinais do tipo dc controle de TemporizadorDeLaser.
scjsignal, a saber, estado -
atual e proximoestado. Sinais são visíveis em lodos os processos de um m ódulo. O sinal
estadoatual representa o valor atual que está arm azenado no registrador de estado.O sinal
proximoestado representa o valor que vem da lógica com bi nacional e que é enviado ao regis­
trador de estado. O bserve tam bém que a arquitetura declara esses sinais com o sendo do tipo
tipoestado , definido na arquitetura com o sendo um tipo cujo valor pode ser S_ Desligado ,
S_LigadoL S_Ligado2 ou S_Ligado3.
Linguagens de Descrição de Hardware 485

► 9.4 DESCRIÇÃO DE COMPONENTES DE BLOCO OPERACIONAL USANDO


LINGUAGENS DE DESCRIÇÃO DE HARDWARE
Somadores completos
L em bre-se de que um som ador com pleto 6 um circuito com binacional que adiciona três bits
(a, b e c i ) e gera um a som a (s) e um bit de transporte “vai um " (co). E sta seção m ostra com o
descrever hierarquicam ente um som ador com pleto em VHD L.

VHDL
A Fig. 9.25 m ostra um so­
library ieee;
m ador co m p leto que foi use ieee.std_logic_1164.all;
d escrito de fo rm a com -
p o rtam en tal em V H D L . entity SomadorCompleto is
port ( a, b, c i : in std_logic;
O p ro je to d o so m a d o r
s, co: out std_logic
com pleto corresponde ao );
so m a d o r c o m p le to d e s­ end SomadorCompleto;
crito na Fig. 4 .3 1. A en ti­
architecture comportamento of SomadorCompleto is
dade V H D L denom inada begin
SomadorCompleto defi ne process (a, b, ci)
as três entradas do som a­ begin
dor com pleto a ,b c ci e as s <= a xor b xor ci;
co <= (b and ci) or (a and ci) or (a and b ) ;
duas saídas s e co. end process;
A a rq u ite tu r a d e s ­ end comportamento;
creve o c o m p o rtam en to
desse som ador com pleto. Figura 9.25 Descrição comportamental de um som ador completo
A arquitetura consiste em em VHDL.
um único processo que descreve o com portam ento com binacional do som ador com pleto. O
processo 6 sensível a todas as três entradas ( ci, b e ci) do som ador com pleto. Q uando qualquer
um a das entradas sofre algum a alteração, o processo executa os seus dois com andos atuali­
zando os valores da som a (s) e d o “ vai um ” {co).

Verilog
A Fig. 9.26 m ostra um som ador com ­
module SomadorCompleto(a, b, ci, s, co) ;
pleto que foi descrito de form a com ­ input a, b, ci;
p o rtam en tal em V erilog. O p ro jeto output s, co;
desse som ador com pleto corresponde reg s , c o ;
ao som ador com pleto descrito na Fig. always @ (a or b or ci)
4.31. O m ódulo Verilog denom inado begin
SomadorCompleto define as três en ­ s <= a A b A ci;
tradas do som ador com pleto a , b e ci e co <= (b & ci) | (a & ci) | (a & b) ;
end
as duas saídas s e co. endmodule
O m ódulo descreve o co m p o rta­
m ento do som ador com pleto e consiste Figura 9.26 Descrição comportamental de um som a­
em um único p ro ced im en to always dor completo em Verilog.
que descreve o com portam ento com ­
binacional do som ador com pleto. O procedim ento ê sensível a todas as três entradas (a, b e ci)
do som ador com pleto. Q uando qualquer um a das entradas sofre algum a alteração, o procedi­
m ento executa os seus dois com andos atualizando os valores da som a (s) e do “ vai um " (co).
486 Sistemas Digitais

SystemC #include "systeme.h"


A Fig. 9.27 m ostra um som ador
c o m p leto q ue foi d e sc rito de SC_MODULE(SomadorCompleto)
form a com porlam cntal em Sys­ { sc_in<sc_logic> a, b, ci;
tem C. O projeto desse som ador sc_out<sc_logic> s, CO;
com pleto corresponde ao som a­
d o r co m p leto d escrito na Fig. SC_CTOR(SomadorCompleto)
4.31. O m ódulo em S ystem C {
S C _ M E T H O D (logicacomb);
de nom inado SomadorCompleto sensitive << a << b << ci;
define as 1res entradas do som a­ }
dor com pleto a , b e ci e as duas
void l o g i c a c o m b ()
saídas .9 e co. {
E sse m ó d u lo d e sc re v e o s.write ( a .readO A b . r e a d O A c i . r e a d O ) ;
c o m p o rta m e n to d o so m a d o r co.write ( ( b .readO & c i . r e a d O )
( a .readO & c i . r e a d O )
co m p le to e c o n siste em um (a .r e a d () & b .r e a d O ));
único processo denom inado lo- }
gicacomb que descreve o com ­ };
portam ento com binacional do
Figura 9.27 D escrição com porlam cntal de um som ador
som ador com pleto. O processo 6
completo em SystemC.
sensível às très entradas (a, b e
ci) do som ador com pleto. Q uando qualquer uma das entradas sofre algum a alteração, o processo
executa os seus dois com andos atualizando os valores da som a (,y) e do ‘‘vai um” (co).

Somadores com propagação de “vai um“ (carry-ripple adder)


Agora, mostraremos como descrever estrutural mente um som ador com propagação de bit de trans­
porte, ou “vai um”, de quatro bits usando o som ador completo que projetamos na seção anterior.
library ieee;
VHDL use ieee.std_logic_1164 .all
A Fig. 9.28 c um a descri­
entity SomadorDeVaiUmPropagado4 is
ção em V H D L de um so­
port ( a : in std_logic_vector(3 downto 0);
m ador de quatro bits com b: in std_logic_vector(3 downto 0);
propagação de “vai um ” ci: in std_logic;
e bit de “vem um ” , com o s: out std_logic_vector(3 downto 0) ;
co: out std_logic
foi m ostrado na Fig. 4.33. );
A en tid a d e V H D L d e ­ end SomadorDeVaiUmPropagado4;
n o m in ad a SomadorDe-
architecture estrutura of SomadorDeVaiUmPropagado4 is
Vail)niPropagado4 tem component SomadorCompleto
duas entradas de quatro port ( a, b, ci: in std_logic;
s, co: out std_logic
bits a e b e um a entrada de
“ vem um ” ci. O som ador
) Ml |j f j l
end component;
com propagação de “ vai signal col, co2, c o 3 : std_logic;
begin
um ” fornece um a som a
SomadorCompletol: SomadorCompleto
de quatro bits s e um bit port map (a{0), b(0), ci, s(0), col);
final de “ vai um ” co. SomadorCompleto2: SomadorCompleto
port map (a{l), b(l), col, s(l), c o 2 ) ;
A a rq u ite tu ra d e s ­
SomadorCompleto3: SomadorCompleto
creve estru tu ra lm e n te o port map (a(2), b(2), co2, s(2), co3);
so m a d o r com p ro p a g a ­ SomadorCompleto4: SomadorCompleto
port map (a(3), b(3), co3, s(3), co) ;
ção de “vai um ” , o qual end estrutura;
é c o m p o sto p o r q u atro
som adores com pletos. A Figura 9.28 Descrição estrutural em VHDL de um som ador de
arq u itetu ra co m eça pela quatro bits com propagação de “vai um”.
Linguagens de Descrição de Hardware 487

declaração do com ponente SomadorCompleto que foi descrito na seção anterior. O projeto
tem três sinais internos c o l , co2 e co3 que são usados nas conexões internas entre os som ado-
res com pletos. E ntão, a arquitetura instancia quatro com ponentes do tipo SomadorCompleto.
Em V H D L , cad a instância de com ponente deve ter um nom e exclusivo. N este projeto, os
quatro com ponentes do tipo SomadorCompleto serão identificados pelos nom es exclusivos
SomadorCompleto 1, SomadorCompleto2, SomadorCompleto3 e SomadorCompleto4.
Em V H D L, o tipo std_logic_vector propicia um m étodo conveniente para se especificar
portas ou sinais que são constituídos de m últiplos bits. Em um projeto, entretanto, pode ser
necessário o acesso aos bits individuais desses vetores. O s bits individuais de um vetor do tipo
stdjogic_vector podem ser acessados se a posição do bit desejado for especificada dentro de
parênteses após o nome do vetor. Por exem plo, para acessar o bit 0 da entrada de quatro bits a
deste projeto, usarem os a sintaxe “ a ( 0 ) ” . Q uando, no som ador com propagação de “vai um ” ,
são definidas as conexões dos com ponentes instanciados, os bits individuais das entradas a
e /; e da saída s são acessados usando essa sintaxe. O prim eiro som ador com pleto Somador­
Completo l conecta o bit 0 de cada entrada a c h e tam bém o bit de “vem um ” a , do som ador
com propagação de “ vai um ”, às três entradas do som ador com pleto. A saída s do Somador­
Completo 1 está conectada ao bit 0 da saída dc som a .v, representado com o s(0). do som ador dc
quatro bits. E ntão, o projeto conecta o bit dc “vai um” do SomadorCompleto 1 ao sinal interno
c o l , o qual é conectado subsequentem ente à entrada de “vem um” do próxim o som ador com ­
pleto, SomadorCompleto2. A s conexões entre os com ponentes dos três som adores com pletos
restantes são realizadas de form a sim ilar, com exceção do últim o som ador com pleto da cadeia
de propagação de “vai um ” . O “vai um ” desse últim o som ador com pleto, SomadorCompleto4y
6 conectado à saída de “vai um” (co) do som ador com propagação de “vai um ” .

Verilog
module S omadorDeVaiUmPropg ado4(a, b, ci, s, c o ) ;
A Fig. 9.29 é uma descrição input [3:0] a;
em Verilog de um som ador input [3:0] b;
de quatro bits com propa­ input c i ;
output [3:0] S;
gação de “vai um” e bit de
output CO;
“vem um ”, com o foi m os­
trado na Fig. 4.33. O mó­ wire col, co2, co3;
dulo Verilog denom inado
SomadorCompleto S o m a d o r C o m p l e t o l ( a [0] , b [0] , Ci,
SomadorDe Vai UmPropa - s [0] , col) ;
gado4 tem duas entradas SomadorCompleto SomadorCompleto2(a [1], b [1] , col,
de quatro bits a e b e uma s[l] , C02 ) ;
SomadorCompleto S o m a d o r C o m p l e t o 3 ( a [2], b [2] , co2,
entrada de “ vem um” ci. 0
S[2] , C03) ;
som ador com propagação SomadorCompleto S o m a d o r C o m p l e t o 4 ( a [3], b [3] , co3,
de “vai um ” fornece uma s [3] , CO) ;
som a de quatro bits 5 e um endmodule
bit final de “vai um ” co.
O m ódulo descreve es- F'9ura 9.29 Descrição estrutural em Verilog de um som ador de
tru tu ralm en te o so m ad o r cluatro bits com Pr°pagação de “vai um ”,
com propagação dc “vai um ” , o qual é com posto por quatro som adores com pletos. O projeto
tem três fios internos col, co2 e co3 que são usados nas conexões internas entre os som adores
com pletos. O m ódulo instancia quatro com ponentes do tipo SomadorCompleto. Em Verilog,
cada instância de com ponente deve ter um nom e exclusivo. N este projeto, os quatro com po­
nentes do tipo SomadorCompleto serão identificados pelos nom es exclusivos SomadorCom­
pleto / , SomadorCompleto2, SomadorCompleto3 e SomadorCompleto4.
Em Verilog, o uso de vetores propicia um m étodo conveniente para se especificar portas
ou sinais que são constituídos de m últiplos bits. Em um projeto, entretanto, poderá ser neces­
sário o acesso aos bits individuais desses vetores. Esses bits individuais poderão ser acessa­
dos se a posição do bit desejado for especifica dentro de colchetes após o nom e do vetor. Por
488 Sistemas Digitais

exem plo, para acessar o bit O cia entrada de quatro bits a deste projeto, usarem os a sintaxe
“ a [ 0 ] '\ Q uando, no som ador com propagação de “ vai um ” , são definidas as conexões dos
com ponentes instanciados, os bits individuais das entradas a e b e da saída s são acessados
usando essa sintaxe. O prim eiro som ador com pleto, SomadorCompletol , conecta o bit 0 de
cada entrada a e k tam bém o bit de “vem um ” d , do som ador com propagação de “vai um ” ,
às três entradas d o som ador com pleto. A saída s do SomadorCompletol está conectada ao bit
0 da saída de som a 5, representado com o s[0], do som ador de quatro bits. Então, o projeto co ­
necta o bit de “vai um ” do SomadorCompletol ao sinal interno col, o qual é conectado sub-
seqüentem ente à entrada de “vem um ” do próxim o som ador com pleto, SomadorCompletol .
As conexões entre os com ponentes dos três som adores com pletos restantes são realizadas de
form a sim ilar, com exceção do últim o som ador com pleto da cad eia de propagação de “ vai
um ” . O “vai um ” desse últim o som ador com pleto, SomadorCompletod , é conectado à saída
de “vai um ” (co) do som ador com propagação de “vai um ” .

SystemC
A Fig. 9.30 é um a descrição em System C de um som ador de quatro bits com bit de “ vem um ” ,
com o foi m ostrado na Fig. 4.33. O m ódulo em System C denom inado SomadorDeVaiUmPro-
pagadod tem duas entradas de quatro bits a t b t uma entrada de “ vem um” ci. O som ador com
propagação de “ vai um " fornece um a som a de quatro bits s e um bit final de “vai um " co.

#include "systemc.h"
#include "somadorcompleto.h"

SC MODULE(SomadorDeVaiUmpropagado4)
{
sc_in<sc_logic> a [4];
sc_in<sc_logic> b[4];
sc_in<sc_logic> ci;
sc_out<sc_logic> s [4];
sc_out<sc_logic> co;

sc_signal<sc_logic> col, co2, co3;

SomadorCompleto SomadorCompleto_l;
SomadorCompleto SomadorCompleto_2;
SomadorCompleto SomadorCompleto_3;
SomadorCompleto SomadorCompleto_4;

SC_CTOR(PropagaçãoDosBits4):
SomadorCompleto_l("SomadorCompleto_l"),
SomadorCompleto_2("SomadorCompleto_2"),
SomadorCompleto_3("SomadorCompleto_3"),
SomadorCompleto_4("SomadorCompleto_4")
{
SomadorCompleto_l.a ( a [0]); SomadorCompleto_l.b(b[0]);
SomadorCompleto_l.ci(ci); SomadorCompleto_l.s ( s [0]);
SomadorCompleto_l.co(col);

SomadorCompleto_2.a ( a [1]); SomadorCompleto_2.b(b[1]);


SomadorCompleto_2.ci(col); SomadorCompleto_2.s(s[1]);
SomadorCompleto_2.co(co2);

SomadorCompleto_3.a ( a [2]); SomadorCompleto_3.b(b[2]);


SomadorCompleto_3.ci(co2); SomadorCompleto_3.s ( s [2]);
Figura 9.30 D e s­ SomadorCompleto_3.co(co3);
crição estrutural em
SomadorCompleto_4.a(a [3]); SomadorCompleto_4.b(b[3]);
System C de um so­ SomadorCompleto_4.ci(co3); SomadorCompleto_4.s ( s [3]);
mador de quatro bits SomadorCompleto_4.co(co);
com propagação de }
“vai um”. };
Linguagens de Descrição de Hardware 489

O m ódulo descreve estruturalm ente o so m ad o r com propagação de “ vai u n f \ o qual é


com posto por quatro som adores com pletos. O projeto tem três sinais internos col, co2 e co3
que são usados nas conexões internas en tre os som adores com pletos. P rim eiro, o m ódulo
instancia quatro com ponentes do tipo SomadorCompleto. Em S ystem C , cada instância de
com ponente deve ter um nom e exclusivo. N este projeto, os quatro com ponentes do tipo So­
madorCompleto serão identificados pelos nom es exclusivos SomadorCompleto_I , Somador-
Completo_2, SomadorCompleto_3 e SomadorCompleto_4.
A nteriorm ente, as entradas que têm m últiplos bits foram definidas por nós com o sendo
vetores de entrada do tipo sc_lv. Em um a d escrição estru tu ral, entretan to , o S ystem C não
suporta bits individuais em sinais ou portas que sejam desse tipo sc_lv. N este projeto de
SomadorDeVaiUmPropagado4, ao invés de usar o tipo sc_lv, definim os as entradas e saídas
a , b e .9 com o sendo arranjos do tipo sc jo g ic com quatro elem entos cada um. O s bits indivi­
duais do arranjo poderão ser acessados se a posição do bit desejado for especificada dentro
de colchetes após o nom e do arranjo. Por exem plo, para acessar o bit 0 do arranjo de quatro
elem entos a deste projeto, usarem os a sintaxe “a [ 0 ] ” . Q uando, no som ador com propagação
de “vai um ”, são definidas as conexões dos com ponentes instanciados, os bits individuais das
entradas a c b e da saída s são acessados usando essa sintaxe. O prim eiro som ador com pleto
SomadorCompleto_l co n ecta o bit 0 de cada en trad a a e b e tam bém o bit de “ vem um ” cz,
do som ador com propagação de “vai um ” , às três entradas do som ador com pleto. A saída s
do SomadorCompleto__1 está conectada ao bit 0 da saída de som a s , representado com o s[0]f
do so m ad o r de quatro bits. E ntão, o projeto co n ecta o bit de “ vai u m ” do SomadorCom-
pleto_I ao sinal interno c o l , o qual é conectado subsequentem ente à entrada de “ vem um ” do
próxim o som ador com pleto, SomadorCompleto_2. A s conexões entre os com ponentes dos
três som adores com pletos restantes são realizadas de form a sim ilar, com exceção do últim o
som ador com pleto da cadeia de propagação de “ vai um ” . O “vai um ” desse últim o som ador
com pleto, SomadorCompleto_4, é conectado à saída de “ vai um ” (co) do som ador com pro­
pagação de “ vai um ” .

Contador crescente
VHDL
A Fig. 9.31 é um a descrição em V H D L de um co n tad o r crescente de quatro bits, co m o foi
m ostrado na Fig. 4.48. A entidade V H D L, de nom e ContadorCrescente, define as entradas e
saídas do contador, que consistem em um a en trad a de relógio clk9um a entrada de controle de
habilitação de contagem cnt, o valor de contagem C de quatro bits e um a saída de contagem
term inal tc.
A arquitetura do ContadorCrescente descreve de form a estrutural o projeto, o qual co n ­
siste em três com ponentes, especificam ente, Reg4 , Inc4 e AND4. O com ponente Reg4 é um
registrador de carga paralela de quatro bits com um a entrada de controle de carga ld. O com ­
ponente lnc4 é um increm entador de quatro bits. O com p o n en te AND4 6 um a porta A N D
de quatro entradas que irá gerar um a saída 1 se e apenas se todas as q u atro entradas forem
1. A lém disso, a arquitetura especifica dois sinais, Ctemp e Cinc, que são usados com o fios
internos na descrição estrutural.
490 Sistemas Digitais

library ieee;
use ieee.std_logic_1164.all;

entity ContadorCrescente is
port ( elk: in std_logic;
cnt: in std_logic;
C: out s t d _ logic_vector(3 downto 0) ;
tc: out std_logic
);
end ContadorCrescente;

architecture estrutura of ContadorCrescente is


component Reg4
port ( I : in std _ l o g i c _ v e c t o r (3 downto 0);
Q: out s t d _ logic_vector(3 downto 0);
elk, Id: in std_logic

end component;
component Inc4
port ( a: in std _ l o g i c _ v e c t o r (3 downto 0);
s: out std _ l o g i c _ v e c t o r (3 downto 0)
);
end component;
component AND4
port ( w,x,y,z: in std_logic;
F: out std_logic
);
end component;
signal Ctemp: s t d _ logic_vector(3 downto 0) ;
signal Cine: std _ l o g i c _ v e c t o r (3 downto 0) ;
begin
Reg4_l; Reg4 port map(Cine, Ctemp, elk, c n t ) ;
I n c 4 _ l : Inc4 port map(Ctemp, Cinc);
A N D 4 _ 1 : AND4 port m a p ( C t e m p (3), C t e m p (2),
C t e m p (1), C t e m p (0), t c ) ;

saidaC: process(Ctemp)
F ig u r a D escrição
9.31 begin
C <= tempC;
estrutural cm VHDL de
end process;
um contador crescente de end estrutura;
quatro bits.

A arq u ite tu ra in stan cia cad a um d o s três co m p o n en tes e e sp ecifica as co n ex õ es en tre


eles. O co m p o n en te Reg4 ê o ú n ico seqiiencial p resen te no c o n ta d o r crescen te e, po rtan to ,
ê n e c e ssá rio q u e a e n tra d a clk seja ligada a p en as à e n tra d a d e reló g io d e sse reg istrad o r.
N ó s c o n tro la m o s a c o n tag em no c o n ta d o r c re sc e n te lig an d o a e n tra d a de h a b ilita ç ã o de
c o n tag em cnt à h ab ilitação d e carg a ld do reg istrad o r. A saíd a Q d e Reg4_l é lig ad a ao
sinal in tern o Ctemp (C tem p o rário ), o qual faz a co n ex ão d a saíd a d o re g istra d o r a am bos
os c o m p o n e n te s Inc4_l e AND 4_1 . () c o m p o n e n te Inc4_J re c e b e o v alo r c o rre n te de
c o n tag em d a co n ex ão Ctemp e p ro d u z o v a lo r in c re m e n ta d o d e c o n ta g e m em su a saíd a
.v, a qual c c o n e c ta d a ao o u tro sinal in te rn o Cinc (C in c re m e n ta d o ). O sin al Cinc faz a
co n ex ão en tre o valor in crem en tad o d e co n tag em de Inc4_J e a en trad a I de carg a p aralela
de Reg4_l. A co n tag em co rren te tam bém é c o n e c ta d a às q u a tro e n tra d a s d o co m p o n en te
AND4_1. A seguir, a sa íd a F de AND4_1 é lig a d a à sa íd a d e c o n ta g e m te rm in al tc do
contador.
Linguagens de Descrição de Hardware 491

N o projeto ContadorCrescente, precisam os co n ectar a saída do registrador de quatro bits


ao increm entador, à porta A N D e à porta de saída C do contador. Em V H D L, não e possível
conectar m últiplos sinais ou portas dentro do com ando port map de um com ponente instan­
ciado. D esse m odo, a arquitetura usa o sinal Ctetnp para conectar a saída de Reg4_l a am bos
os com ponentes AND4_1 e Inc4_/ . Precisam os ainda ligar a saída do registrador à porta de
saída C. A arquitetura faz essa conexão especificando um processo denom inado saidaC que
6 usado para conectar a saída do registrador à porta de saída C. O processo saidaC 6 sensível
ao sinal Ctemp que foi usado antes com o fio de conexão interna entre os três com ponentes.
Sem pre que houver um a alteração em Ctemp , o que corresponderá a um a alteração no valor
arm azenado de contagem do contador crescente, o processo saidaC atribuirá o novo valor de
contagem à porta de saída C.

Verilog
A Fig. 9.32 é um a descrição em Ve­
rilog de um co n tad o r c re sc e n te de
q u atro b its, co m o foi m ostrado na
Fig. 4.48. O m ódulo Verilog, de nom e module Reg4(I, Q, clk, ld) ;
input [3:0] I;
ContadorCrescente , define as en tra­ input clk, ld;
das e saídas do contador, que consis­ output [3:0] Q;
tem em um a en trad a de relógio clk , // detalhes não mostrados
um a entrada de controle de habilita­ endmodule

ção de contagem cnt, o valor de con­ module Inc4(a, s ) ;


tagem C, de quatro bits, e um a saída input [3:0] a;
de contagem term inal tc. output [3:0] S;
// detalhes não mostrados
O m ó d u lo ContadorCrescente
endmodule
descreve de form a estrutural o projeto
que co n siste em três co m p o n en tes, module A N D 4 ( w , x , y ,z ,F ) ;
especificam ente, Reg4, Inc4 e AND4. input w, x, y, z;
output F;
O com ponente Reg4 é um registrador // detalhes não mostrados
de carg a paralela de quatro bits com endmodule
um a entrada de controle de carga ld.
O com ponente Ínc4 6 um increm en­ module ContadorCrescente(clk, cnt, C, tc) ;
input clk, cnt;
tador de quatro bits. O com ponente output [3:0] C;
AND4 c um a p orta A N D de quatro reg [3:0] C;
entradas que irá gerar um a saída 1 se output tc;
e apenas se todas as q u atro entradas
wire [3:0] Ctemp;
forem 1. A lém disso, o m ódulo esp e­ wire [3:0] Cine;
cifica dois fios de quatro bits, Ctemp
e Cinc, que são usados com o fios in­ Reg4 Reg4_l(Cinc, Ctemp, clk, cnt);
Inc4 Inc4_l(Ctemp, Cinc);
ternos na descrição estrutural. AND4 A N D 4 _ 1 ( C t e m p [3], C t e m p [2],
O m ódulo instancia cada um dos Ctemp [1], Ctemp[0], tc) ;
três com ponentes e especifica as cone­
always @ (Ctemp)
xões entre eles. O com ponente Reg4 6
begin
o único sequencial presente no conta­ C <= Ctemp;
dor crescente e, portanto, é necessário end
que a entrada clk seja ligada apenas à endmodule

en trad a de relógio desse registrador.


Figura 9.32 D escrição estrutural em Verilog de um
C ontrolam os a contagem no contador
contador crescente de quatro bits.
crescente ligando a entrada de habili-
492 Sistemas Digitais

tação de contagem cnt à habilitação de carga ld do registrador. A saída Q de Reg4_l 6 ligada


ao sinal interno Ctemp (C tem porário) o qual faz a conexão da saída do registrador a am bos os
com ponentes Inc4_l e AND4__1. O com ponente Inc4_l recebe o valor corrente da contagem
que vem da conexão Ctemp e produz o valor increm entado de contagem em sua saída s, a
qual é conectada ao outro sinal interno Cinc (C increm entado). O sinal Cinc faz a conexão en ­
tre o valor increm entado de contagem de Inc4_J e a entrada de carga paralela / de Reg4_J. A
contagem corrente tam bém é conectada às quatro entradas do com ponente AND4_1. A seguir,
a saída F d e AND4_I 6 ligada à saída de contagem term inal tc do contador.
No p ro jeto ContadorCrescente , p recisam o s c o n e c ta r a saída do re g istra d o r de q u atro
bits ao increm entador, à porta A N D e à porta de saíd a C do contador. D esse m odo, o m ó ­
dulo usa o sinal Ctemp para conectar a saída de Reg4_I a am bos os com ponentes AND4_1 e
Inc4_L P recisam os ainda ligar a saída do registrador à p o rta de saíd a C. O m ódulo faz essa
c o n e x ã o e s p e c ific a n d o um
p ro c e d im e n to q ue é u sad o
para c o n e c ta r a saíd a d o re ­ #include "s y s t e m e .h"
#include " r e g 4 .h"
g istrad o r à p o rta de saíd a C. #include "inc4.h"
O p ro c e d im e n to c sen sív el #include "and4.h"
ao sinal Ctemp que foi usado
SC_MODULE(ContadorCrescente)
a n te rio rm e n te c o m o fio de
{
conexão interna entre os três sc_in<sc_logic> clk, cnt;
c o m p o n e n te s. S e m p re q ue sc_out<sc_lv<4> > C;
h o u v e r um a a lte ra ç ã o em sc_out<sc_logic> tc;

Ctemp , o que c o rresp o n d erá sc_signal<sc_lv<4> > C t e m p , Cinc;


a um a alteração no valor a r­ sc_signal<sc_logic> Ctemp_b(4];
m a z e n a d o d e c o n ta g e m do
Reg4 R e g 4 _ l ;
c o n ta d o r c re s c e n te , o p ro ­
Inc4 Inc4_l;
c e d im e n to a trib u irá o novo AN D 4 AND4_1;
valo r de contagem à p o rta de
saída C. S C _ C T O R (ContadorCrescente) : R e g 4 _ l ("R e g 4 _ l ");
I n c 4 _ l ("Inc4_l"),
AND4_1("AND4_1")
SystemC
{
A Fig. 9.33 e um a d escrição R e g 4 _ l .I ( C i n c ) ; Reg4_l.Q(tempC);
cm System C de um contador R e g 4 _ l .c l k ( c l k ) ; R e g 4 _ l .ld( c n t );
crescente de quatro bits. com o
I n c 4 _ l .a ( C t e m p ) ; I n c 4 _ l .s ( C i n c ) ;
foi m ostrado na Fig. 4.48. O
m ó d u lo S y stem C , de nom e AND4__1 .w (Ctemp_b [0] ) ; A N D 4 _1 . x (C t e m p _ b [ 1 ) )
ContadorCrescente , d efi ne A N D 4 _ 1 . y ( C t e m p _ b [2]); A N D 4 _1 . z ( C t e m p _ b [ 3 ] )
A N D 4 _ 1 .F (t c ) ;
as en trad as e saíd as do co n ­
tador, que consistem em uma S C _ M E T H O D (logicacomb)
en trad a de reló g io clk, um a sensitive << Ctemp;
entrada de controle de habili­ }
tação de contagem cnt , o va­ void l o g i c a c o m b ()
lor de contagem C de quatro {
bits e um a saída de contagem Ctemp_b[0] = C t e m p . r e a d ( ) [0]
Ctemp_b[l] = C t e m p . r e a d ( ) [1]
term inal tc. Ctemp_b[2] = C t e m p . r e a d ( ) [2]
O m ó d u lo Contador- Ctemp_b[3] = C t e m p .r e a d ()[3]
Crescente descreve de form a C . w r i t e(Ctemp);
estrutural o p ro jeto que co n ­ }
siste em três co m p o n e n te s, };
especificam ente, Reg4. Inc4 e
Figura 9.33 Descrição estrutural em SystemC de um conta­
AND4. O com ponente Reg4 é
dor crescente de quatro bits.
Linguagens de Descrição de Hardware 493

um registrador de carga paralela de quatro bits com um a entrada de controle de carga ld. O
com ponente Inc4 é um increm enlador de quatro bits. O com ponente AND4 é um a porta A ND
de quatro entradas que irá gerar um a saída 1 se e apenas se todas as quatro entradas forem
1. A lem disso, o m ódulo especifica dois sinais de quatro bits, Ctemp e Cinc , que são usados
com o fios internos na descrição estrutural. O m ódulo define tam bém um arranjo (array) de
quatro elem entos com sinais do tipo s c jo g ic , de nom e CtempJb9 usado para acessar os bits
individuais dentro do vetor Ctemp de quatro bits.
O m ódulo instancia prim eiro cada um dos três com ponentes e então especifica as co n e­
xões entre eles. O com ponente Reg4 é o único seqüencial presente no co n tad o r crescente e,
portanto, é necessário que a entrada clk seja ligada apenas à entrada de relógio desse regis­
trador. Nós controlam os a contagem no co n tad o r crescente ligando a entrada de habilitação
de contagem , cnt, à h abilitação de carga, ld. do registrador. A saída Q de Reg4_J é ligada
ao sinal interno Ctemp (C tem porário), que faz a conexão da saíd a do registrador a ln c4 _ l .
O com ponente Inc4_l recebe o valor corrente de contagem da conexão Ctemp e produz o
valor increm entado de contagem em sua saída .v, a qual é co n ectad a ao sinal interno Cinc
(C increm entado). O sinal Cinc faz a conexão entre o valor increm entado de contagem de
I n c 4 J e a entrada I de carga paralela de Reg4_I. Para acessar os bits individuais, a co n ta­
gem corrente tam bém é conectada às quatro entradas do com ponente AND4_1 por m eio do
arranjo CtempJb. A seguir, a saída F d e A N D 4 J é ligada à saída de contagem term inal tc do
contador.
N o p ro jeto ContadorCrescente , p recisam o s c o n e c ta r a saíd a do re g istra d o r de q u atro
bits ao increm entador, à p orta A N D e à p o rta de saída C do contador. P ortanto, o m ódulo
usa o sinal Ctemp para co n ectar a saíd a de Reg4_l ao co m p o n en te lnc4_l e usa o arranjo
Ctemp J? para c o n e c ta r a saíd a d e Reg4_l ao co m p o n en te A N D 4_I. A ssim , p recisam o s
ainda ligar a saída do registrador à porta d e saíd a C e atrib u ir os bits individuais da saída do
reg istrad o r ao arran jo Ctemp Jb. O m ó d u lo faz essas co n ex õ es d efin in d o um p ro cesso , de
nom e logicacomb , q ue é sensível ao sinal Ctemp. S em p re q u e h o uver alteração em Ctemp ,
o q ue co rresp o n d erá a um a alteração no v alo r arm azen ad o de contagem do c o n tad o r c re s­
cente, o p rocesso logicacomb atribuirá o novo valor de contagem à porta de saída C. A lém
disso, o p rocesso atribui os bits d o veto r Ctemp aos sinais in d iv id u ais d e tipo s c jo g ic do
arran jo Ctemp Jb. Para ter acesso aos bits indiv id u ais d o sinal vetor Ctemp , usam os a sin ­
taxe “C te m p .re a d () [ 0 ] “ .

► 9.5 PROJETO RTL USANDO LINGUAGENS DE DESCRIÇÃO DE HARDWARE


M ostram os agora com o criar descrições RTL usando H D Ls. M ostrarem os algum as d escri­
ções para o ponto inicial do projeto RTL, ou seja, as m áquinas de estad o s de alto nível, e
para o ponto final do projeto RTL, ou seja, a conexão dos blocos de controle e operacionais.
É com um os projetistas RTL criarem um a bancada de teste para verificar as descrições das
m áquinas de estados de alto nível e, em seguida, usarem essa m esm a bancada de teste na des­
crição dos blocos operacional e de controle, ajudando assim a verificar se o projetista criou
um a im plem entação correta para os blocos de controle e operacional.

Máquina de estados de alto nível para o medidor de distância baseado em laser


VHDL
A s Figs. 9.34 e 9.35 apresentam um a descrição em V H D L de um a m áquina de estados de alto
nível para o m edidor de distância baseado em laser que foi m ostrado na Fig. 5.15. A entidade,
de nom e MedidorDistLaser, define as entradas e saídas, incluindo-se um botão B apertado
pelo usuário, uma entrada S para o sensor de laser, um a saída L de controle para o laser e um a
saída de 16 bits para a distância m edida D.
494 Sistemas Digitais

library ieee;
use i e e e .s t d _ l o g i c _ 1 1 6 4 .a l l ;
use i e e e .std_logic_arith.a l l ;

entity MedidorDistLaser is
port ( elk, r s t : in std_logic;
B, S: in std_logic;
L: out std_logic;
D: out u n s i g n e d (15 downto 0)
);
end MedidorDistLaser;

architecture comportamento of MedidorDistLaser is


type tipoestado is (SO, SI, S2, S3, S4) ;

signal estado : tipoestado;


signal Dctr : u n s i g n e d (15 downto 0);

constant U_ZERO :
unsigned (15 downto 0) := ”0 000000000000000” ;
constant U_UM : u n s i g n e d (0 downto 0) := ”1";
begin
maquinadeestado: process(elk, rst)
begin
if (rst='l') then
L <= ’O' ;
D <= U_ZERO;
Dctr <= U _ Z E R O ;
estado <= SO; -- estado inicial
elsif (clkss'l* and e l k ’event) then
case estado is
Figura 9.34 D e s c riç ã o when SO =>
comportamental em VHDL L <= 'O'; -- laser desligado
D <= U _ Z E R O ; -- zere D
para a máquina de estados
estado <= SI
de alto nível do medidor de (continua na Fig. 9.35)
distância baseado cm laser.

A o invés de usar um vclor do tipo std_logic_vector dc 16 bits. definim os a saída D com o


sendo unsigned. Em operações lógicas, um unsigned com porta-se da m esm a form a que um
stdjogic_vect()r. N o entanto, podem os realizar tam bém operações aritm éticas com valores
unsigned. Sem pre que usarm os unsigned, deverem os incluir o com ando “u se i e e e . s td _ l o-
g i c _ a r i t h . a l 1 no topo da nossa descrição em V H D L. () com ando u se (use) especifica
quais são os pacotes que usarem os em nosso projeto. () p acote ieee.std_logic_arith define
o tipo unsigned e tam bém um conjunto de operações e funções que poderem os realizar com
valores unsigned.
A entidade tam bém define um a entrada clk de relógio e um a en trad a rst de reset. A ssu ­
m im os que a entrada de relógio é de 300 M Hz, com o no projeto do m edidor de distância ba­
seado em laser m ostrado na Fig. 5.19. O m itim os detalhes da geração do relógio de 300 M H z
(veja a Seção 9.3 para um exem plo de descrição de um oscilador).
A arquitetura V H D L descreve o com po rtam en to da entidade. Ao invés de usar dois pro­
cessos, com o foi m ostrado na Fig. 9.22, a arq u itetu ra co n siste em um único processo que
descreve o co m p o rtam en to da nossa m áq u in a de estad o s de alto nível. O p ro cesso d a m á­
quina de estados de alto nível d en om inado maquinadeestado é sensível às entradas clk e rst.
Se rst for 1, en tão o processo assincronicam en te atribuirá o estado inicial S0 da m áquina de
estados ao sinal estado. O p rocesso tam bém carreg a as saíd as L e D e o sinal do co n tad o r
interno Dctr com seus valores iniciais. O s valores iniciais devem co rresp o n d er aos valores
Linguagens de Descrição de Hardware 495

(continuação da Fig. 9.34)


when Sl =>
Dctr <= U_ZERO; -- zera a contagem
if (B=11') then
estado <= S2;
else
estado <= Sl;
end if;
when S2 =>
L <= 11'; -- laser ligado
estado <= S3;
when S3 =>
L <= '0'; -- laser desligado
Dctr <= Dctr + 1;
if (S='1') then
estado <= S4;
else
estado <= S3;
end if;
Figura 9.35 D e s c r i­ when S4 = >
ção com portam ental em D <= SHR(Dctr, U _ U M ) ; -- calcule D
VHDL para a m áquina estado <= Sl;
end case;
de estados de alto nível
end if;
do m edidor de distância end process;
baseado em laser (conti­ end comportamento;
nuação).

que, no estado inicial da nossa m áquina de estad o s de alto nível, foram atribuídos aos sinais.
O bserve que definim os um a constante deno m in ad a UJZERO que co rresp o n d e ao valor zero
unsignedfo 16 bits. N a subida do relógio, quando o sinal rst não está habilitado, o processo
define o estado atual, atribui as saídas adequadas para o estado atual, determ in a o próxim o
estado e atu aliza o sinal estado de reg istra d o r de estad o . N a nossa d e sc riç ã o de um a m á­
quina de estad o s de alto nível, ao invés d o s d o is sin ais estadoatual e proximoestado que
usam os an terio rm en te no projeto de bloco de co n tro le m ostrado na Fig. 9.22. precisam os
apenas de um único sinal de registrador de estado para m odelar o co m p o rtam en to da nossa
m áquina de estados.
A m áq u in a de estados de alto nível do m ed id o r de d istân cia baseado em laser executa
duas operações aritm éticas, a saber, um a adição e um deslocam ento. C om o tipo unsigned ,
usam os a sintaxe “ D c tr <= D c tr + 1 para in crem en tar o sinal Dctr do co n tad o r no e s­
tado S3. Esse com an d o som ará um ao valo r co rren te de D ctre arm azen ará o resultado em
Dctr. N o estado S4 , calculam os a d istân cia D, dividindo o valor de Dctr por 2. N o entanto,
realizam o s essa d ivisão usan d o um a o p eração de d eslo cam en to de um bit à d ireita. Para
realizar o deslocam ento c atrib u ir o valor â saída Z), usarem os o com ando “ D <= SHR(Dctr,
U _ U M ) A função S H R ( ) , d efinida no pacote i e e e . s t d _ l o g i c _ a r it h . d eslo ca o prim eiro
parâm etro Dctr de um núm ero de bits esp ecificad o pelo segundo p arâm etro U_UM. Esse
parâm etro U_UM c um a constante que é d efin id a antes na arquitetura.

Verilog
A s Figs. 9.36 e 9.37 apresentam uma descrição em Verilog de uma m áquina de estados de alto
nível para o m edidor de distância baseado em laser que foi m ostrado na Fig. 5.15. O m ódulo
denom inado MedidorDistLaser define as entradas e saídas. Incluem -se um botão B apertado
pelo usuário, um a entrada S para o sensor de laser, um a saída L de controle para o laser e um a
saída de 16 bits para a distância m edida D.
496 Sistemas Digitais

O m ódulo tam bém define


module MedidorDistLaser(clk, rst, B, S, L, D) ;
um a e n tra d a clk de reló g io input clk, rst, B, S;
e um a e n tra d a rst d e reset. output L;
output [15:0] D;
A ssu m im o s q ue a e n tra d a
reg L;
de re ló g io c de 300 M H z, reg [15:0] D;
co m o no p ro je to d o m ed i­
d o r de d istân cia baseado em parameter SO 3'bOOO,
51 3'bOOl,
laser m o strad o na Fig. 5.19. 52 3'bOlO,
O m itim o s d etalh es d a g e ra ­ 53 3'b O l l ,
ção do reló g io de 300 M H z 54 3'blOO;

(v eja a S eção 9.3 p ara um reg [2:0] estado;


exem plo de d escrição de um reg [16:0] Dctr;
oscilador).
always @ ( p o s e d g e rst or posedge clk)
O m ó d u lo V erilog d e s­ begin
creve de fo rm a c o m p o rta - if (rst==l) begin
m ental a m áquina de estados L <= 0;
D <= 0;
de alto nível d o M edidor -
Dctr <= 0;
DistLaser. Em vez d e usar estado <= SO; // estado inicial
d o is p ro c e d im e n to s, co m o end
else begin
foi m o strad o na F ig. 9.23,
case (state)
o m ó d u lo c o n siste em um SO: begin
ú n ic o p ro c e d im e n to q u e L <= 0; // laser desligado
d escrev e o co m p o rtam en to D <= 0; // zere D
estado <= Sl;
da no ssa m aq u in a de e s ta ­ end
dos d e alto nível. O p ro c e ­ S l : begin
d im en to da m áq u in a de es­ Dctr <= 0; // zere o contador
if (B==l)
tados de alto nível é sensível estado <= S2;
à borda positiva das entradas else
rst e clk. Se rst estiver h ab i­ estado <= Sl;
end
litada, en tão o procedim ento S 2 : begin
atrib u irá a ssin c ro n ic am e n te L <= 1; // laser ligado
o e sta d o inicial S0 da m á­ estado <= S3;
end
q u in a de e sta d o s ao sinal
estado. O p ro c e d im e n to (continua na Figura 9.37)
tam bém carreg a as saíd as L
e D e o re g istra d o r c o n ta ­ Figura 9.36 Descrição comportamental em Verilog para a má­
d o r in tern o Dctr com seus quina de estados de alto nível do medidor de distância baseado
v alores in iciais. O s valores em laser.
iniciais devem co rresp o n d er
aos v alores que foram a tri­
buídos aos sinais no estado inicial da nossa m áquina de estados de alto nível. N a subida do
relógio, quando o sinal rst não está habilitado, o pro ced im en to define o estado atual, atribui
as saíd as ad equadas p ara o estado atual, d eterm in a o pró x im o estado e atu aliza o sinal de
registrador de estado. Na nossa d escrição de um a m áquina de estados de alto nível, ao invés
dos dois sinais estadoatual e proxim oestado, que usam os anteriorm ente no p rojeto de bloco
de co n tro le m ostrado na Fig. 9.23, precisam os apenas de um único sinal de reg istrad o r de
estado para m odelar o com portam ento da nossa m áquina de estados.
A m áquina de estados de alto nível do m edidor de d istân cia baseado em laser executa
duas operações aritm éticas, um a adição e um deslocam ento. U sam os a sintaxe “ D c tr <=
Linguagens de Descrição de Hardware 497

D c tr + 1 ; ” p ara in cre­ (continução da Figura 9.36)


m entar o contador Dctr no S3: begin
L <= 0; // laser desligado
estad o S3. E sse com an d o Dctr <= Dctr + 1;
a d ic io n a rá um ao v alo r if (S==l)
corrente de Dctr e arm aze­ estado <= S4;
else
nará o resultado em Dctr. estado <= S3;
N o estado S4 , calculam os end
a d istân cia D d iv id in d o o S 4 : begin
D <= Dctr >> 1; // calcule D
valor de Dctr por 2. No en ­ estado <= Sl;
tanto, realizam os essa divi­ end
endease
são usando um a operação
end
de d e slo c a m e n to de um end
bit à direita. Para realizar endmodule
o deslocam ento e atribuir o Figura 9.37 D escrição com portam cntal em Verilog para a má­
valor à saída D, usarem os quina de estados de alto nível do medidor de distância baseado em
o com ando “D <= D c tr » laser (continuação).
1 ; ” , em q ue » sig n ifica
realizar um a operação de
#include "systemc.h"
deslocam ento à direita.
enum tipoestado { S0, Sl, S2, S3, S4 };
System C
SC MODULE(MedidorDistLaser)
As Figs. 9.38 e 9.39 apre­
{ “
sentam um a d escrição em sc_in<sc_logic> clk, rst;
S ystem C de um a m áquina sc_in<sc_logic> B, S;
sc_out<sc_logic> L;
de esta d o s d e a lto nível sc_out<sc_lv<16> > D;
para o m edidor de distância
sc_signal<tipoestado> estado;
b asead o em laser que foi sc_signal<sc_uint<16> > Dctr;
m ostrado na Fig. 5.15. O
m ódulo denom inado Medi­ SC CTOR(MedidorDistLaser)

do rDistLaser define as en ­ { '

SC_METHOD(maquinadeestado);
tradas e saídas. Incluem -se sensitive_pos << rst << clk;
um botão B apertado pelo
u su á rio , um a e n tra d a S void maquinadeestado{)
para o sensor de laser, um a if( r s t . r e a d O == SC_LOGIC_l ) {
saída L de controle para o L.write(SC_LOGIC_0);
laser e um a saída de 16 bits D . w r i t e (0);
Dctr = 0;
para a distância m edida D. estado = S0; // estado inicial
O m ódulo tam bém d e­
else {
fine um a en tra d a clk de switch (estado) {
reló g io e um a en trad a rst case S 0 :
L.write(SC_LOGIC_0); // laser desligado
de reset. A ssum im os q ue a D.write(O); // zere D
entrada de relógio é de 300 estado = Sl;
break;
M H z, co m o foi assum ido
case Sl:
no projeto de um m edidor Dctr = 0 ; // zere o contador
de distância baseado em la­ if (B.readO == SC_LOGIC_l)
estado = S2;
ser, m ostrado na Fig. 5.19.
7 w-
(continua na Figura 9.39)
O m itim os detalhes da gera­
ção do relógio de 300 M Hz Figura 9.38 Descrição comportamental em SystemC para a má­
(veja a S eção 9.3 para um quina de estados de alto nível do medidor de distância baseado
ex em p lo de d e sc riç ã o de em laser.
um oscilador).
498 Sistemas Digitais

O m ód u lo em Sys-
tem C descreve de form a (continuação da Figura 9.38)
case S 2 :
co m p o rtam en tal a m á­ L .w r i t e (SC_LOGIC_l); // laser ligado
quina de estados de alto estado = S3;
nível d o MedidorDis- break;
case S3
tLaser. A o invés de usar L.write{SC_LOGIC_0); // laser desligado
d o is p ro c e sso s, co m o Dctr = D c t r . r e a d O + 1;
foi m o stra d o na Fig. if ( S .readO == SC_L0GIC_1)
9.24, o m ódulo consiste estado = S 4 ;
else
em um único p rocesso estado = S3;
que descreve o com por­ break;
tam en to da nossa m á­ case S 4 :
D.write{Dctr.read()>>1) ; // calcule D
quina de estados de alto
estado = Sl;
n ível. O p ro c e ss o da break;
m áquina de estad o s de }
alto nível d en o m in ad o )
maquinadeestado é sen­
};
sível à b o rd a p o sitiv a
das en trad as rst e clk.
Se rst estiver habilitada, Figura 9.39 D escrição com portam ental em System C para a má­
e n tã o o p ro cesso a tri­ quina de estados de alto nível do medidor de distância baseado em
buirá assincronicam ente laser (continuação).
o estado inicial SO da m áquina de estados ao sinal estado. O processo tam bém carrega as sa­
ídas L e D e o registrador contador interno Dctr com seus valores iniciais. O s valores iniciais
devem corresponder aos valores que foram atribuídos aos sinais no estado inicial da nossa
m áquina de estados de alto nível. Na subida do relógio, quando o sinal rst não está habilitado,
o processo define o estado atual, atribui as saídas adequadas para o estado atual, determ ina o
próxim o estado e atualiza o sinal estado de registrador de estado. Na nossa descrição de um a
m áquina de estados de alto nível, ao invés dos dois sinais estadoatual e proximoestado , que
usam os anteriorm ente no projeto do bloco de controle m ostrado na Fig. 9.23, precisarem os
som ente de um único sinal de registrador de estado para m odelar o com portam ento da nossa
m áquina de estados.
A m áquina de estados de alto nível do m edidor de distancia baseado em laser executa duas
operações aritm éticas, um a adição e um deslocam ento. U sam os a sintaxe “ D ctr = D c tr.
read() + 1 ; ” para increm entar o co n tad o r Dctr no estad o S3. Esse com ando adicionará
um ao valor corrente de Dctr e arm azenará o resultado em Dctr. N o estado S4 , calculam os
a distância D, dividindo o valor de Dctr p o r 2. No entanto, realizam os essa divisão usando
um a operação de deslocam ento de um bit à direita. Para realizar o deslocam ento e atribuir o
valor à saída D, usarem os o com ando “D. w ri te (D c tr. read () » 1 e m que » realiza um a
operação de deslocam ento à direita.

Blocos de controle e operacional para o medidor de distância baseado em laser


VHDL
A Fig. 9.40 é um a descrição em V H D L do m ed id o r de distância baseado em laser q u e foi
m ostrado na Fig. 5.19. A entidade denom inada MedidorDistLaser define as entradas e saídas,
incluindo-se um botão de entrada B apertado pelo usuário, um a en trad a S para o sensor de
laser, um a saída L de controle para o laser e um a saída D de 16 bits para a distância m edida.
A entidade tam bém define um a entrada de relógio clk de 300 M H z e um a entrada rst de reset
para o bloco de controle de projeto.
A arquitetura do MedidorDistLaser descreve estruturalm ente as conexões dos com ponen­
tes correspondentes ao blocos de controle e operacional. A arquitetura instancia dois com -
Linguagens de Descrição de Hardware 499

library ieee;
use ieee.std_logic_1164.all;

entity MedidorDistLaser is
port ( elk, rst: in std_logic;
B, S: in std_logic;
L: out std_logic;
D: out s t d _ logic_vector(15 downto 0)
);
end MedidorDistLaser;

architecture estrutura of MedidorDistLaser is


component BlocoDeControle_MDL
port ( elk, rst: in std_logic;
B, S: in std_logic;
L: out std_logic;
Dreg_clr, Dreg_ld: out std_logic;
Dctr_clr, Dctr_cnt: out std_logic

end component;
component BlocoOperacional_MDL
port ( elk: in std_logic;
Dreg_clr, Dreg_ld: in std_logic;
Dctr_clr, Dctr_cnt: in std_logic;
D: out std _ l o g i c _ v e c t o r (15 downto 0)
);
end component;
signal Dreg_clr, Dreg_ld: std_logic;
signal Dctr_clr, Dctr_cnt: std_logic;
begin
BlocoDeControle_MDL _l: BlocoDeControle_MDL
port ma p (elk, rst, B, S, L,
Dreg_clr, Dreg_ld, Dctr_clr,
Figura 9.40 D escrição es­ Dctr_cnt);
trutural para a descrição de BlocoOperacional_MD L_l: BlocoOperacional_MDL
alto nível em VHDL do me­ port ma p (elk, Dreg_clr, Dreg_ld,
didor de distância baseado Dctr_clr, Dctr_cnt, D ) ;
end estrutura;
em laser.

ponentes. O com ponente BlocoDeControle_MDLJ é o bloco de co n tro le do m edidor de


distância baseado em laser e BlocoOperacional_MDLJ é o bloco operacional desse projeto.
A arquitetura co n ecta as entradas clk> rst, B e S da en tid ad e às en trad as do BlocoDeCon-
trole_MDL_J e conecta a saída do bloco de controle para com andar o laser à porta de saída L
correspondente. A lém disso, os quatro sinais D r e g jlr , D re g jd , D c trjd r e D ctrjcnt fazem
a conexão entre os quatro sinais de controle do bloco de controle com as quatro entradas de
BlocoOperacional_MDL_l. O bloco operacional do MedidorDistLaser tem um a única saída
D que fornece a distância m edida e está conectada à porta de saída D da entidade.
A Fig. 9.41 é um a descrição em V H D L do com ponente correspondente ao bloco opera­
cional do MedidorDistLaser q ue foi m ostrado na Fig. 5.17. A entidade denom inada Bloco­
Ope racional_M DL define um a entrada de relógio clk, quatro entradas de controle D re g jlr,
D re g jd , D c trjd r e D c tr jn t , e um a saída de 16 bits para a distância D.
A arq u itetu ra define três co m p o n en tes, a saber, um c o n ta d o r crescen te de 16 bits, um
reg istra d o r de 16 bits e um d eslo cad o r à d ire ita de 16 bits, o qual faz d e slo c a m e n to s de
um a p o sição à d ireita. O co m p o n en te ContadorCrescente/6 é um c o n ta d o r c re sc e n te de
16 bits, tendo um a en trad a de co n tro le ent e um a en trad a clr ( clear) p a ra ze ra r o contador.
O co m p o n en te R e g lô c um reg istrad o r de carga p aralela de 16 bits, tendo um sinal de c o n ­
trole ld para carreg ar o reg istrad o r e um sinal clr para zerá-lo. O co m p o n en te Deslocador-
DireitaUmlô c um reg istrad o r d eslo cad o r à d ireita de 16 bits, o qual faz o d eslo cam en to
500 Sistemas Digitais

library ieee;
use i e e e .s t d _ l o g i c _ 1 1 6 4 .all;

entity BlocoOperacional_MDL is
port ( e l k : in std_logic;
D r e g _ c l r , Dreg_ld: in std_logic;
Dctr_clr, D c t r _ c n t : in std_logic;
D: out std _ l o g i c _ v e c t o r (15 d o w n to 0)
);
end BlocoOperacional_MDL;

architecture estrutura of BlocoOperacional_MDL is


component ContadorCrescentel6
port ( e l k : in stdlogic;
clr, cnt: in std_logic;
C: out std _ l o g i c _ v e c t o r (15 downto 0)
);
end component;
component Regl6
port ( I : in std _ l o g i c _ v e c t o r (15 downto 0);
Q: out std _ l o g i c _ v e c t o r (15 downto 0);
elk, clr, Id: in std_logic
);
end component;
component DeslocadorDireitaUml6
port ( I : in std _ l o g i c _ v e c t o r (15 downto 0);
S: out std _ l o g i c _ v e c t o r (15 downto 0)
);
end component;
signal Ctemp : std _ l o g i c _ v e c t o r (15 downto 0);
signal Cdeslocado : std _ l o g i c _ v e c t o r (15 downto 0);
begin
Dctr: ContadorCrescentelô
Figura 9.41 Descrição
port map (elk, Dctr_clr, Dctr_cnt, C t e m p ) ;
estrutural em VHDL D e s l o c a d orDireita: DeslocadorDireitaUml6
para o bloco opera­ port map (Ctemp, C d e s locado);
cional cio medidor de Dreg: Regl6
port map (Cdeslocado, D, elk, Dreg_clr, D r e g _ l d ) ;
distância baseado em end estrutura;
laser.

da en tra d a / de um a posição à d ireita e atribui esse v alo r d eslo cad o à saíd a S. A a rq u ite ­
tu ra in stan cia um co m p o n en te ContadorCrescentelô) d e n o m in ad o Dctr , um co m p o n en te
Reglô) d en o m in ad o Dreg e um co m p o n en te DeslocadorDireitaUml6) d e nom e Desloca­
dorDireita. () d istan ciam en to de Dctr faz a co n ex ão das en trad as Dctr_clr e Dctr_cnt do
bloco o p eracio n al co m as en trad as de co n tro le de clear e de c o n ta g e m de Dctr. A sa íd a
de con tag em C de Dctr e en tão co n ectad a ao sinal interno Ctemp da arq u itetu ra. A ssim , o
valo r da co n tag em 6 co n ectad o à en tra d a do d e slo c a d o r DeslocadorDireita. E m seguida,
a con tag em d eslo cad a 6 co n ectad a à en trad a do reg istrad o r Dreg por m eio d o sinal interno
Cdeslocado. O in stan ciam en to do reg istra d o r Dreg co n e c ta as en trad as de co n tro le, para
zerar e carreg ar o registrador, às portas de en trad a D re g jd r e D re g jd do bloco o p e ra c io ­
nal. F inalm ente, a saída de dados Q d o reg istrad o r c co n ectad a à saíd a da d istân cia m edida
D do BlocoOperacional_MDL.
A s Figs. 9.42 e 9.43 são a descrição em V H D L da FSM do bloco de controle do m edi­
dor de distância baseado em raio laser que foi descrita na Fig. 5 .2 1. A entidade denom inada
BlocoDeControle_MDL define um a entrada de relógio clk> um sinal rst de reset, um botão B
apertado pelo usuário, um a entrada S para o sensor de laser e cinco sinais de saída de controle,
a saber, L, Dregjclr , D re g jd , D c trjd r e Dctrjcnt. A saída L é usada para ligar e desligar
Linguagens de Descrição de Hardware 501

o laser, sendo que o laser


library ieee;
está ligado quando L é 1. use i e e e .std_logic_1164.all;
O s q u atro o u tro s sin ais
de saída são usados para entity BlocoDeControle_MDL is
port ( elk, rst: in std_logic;
controlar os com ponentes B, S: in std_logic;
do bloco operacional do L: out std_logic;
projeto RTL. Dreg_clr, Dreg_ld: out std_logic;
Dctr_clr, Dctr_cnt: out std_logic
A arq u itetu ra V H D L
);
d e sc re v e o c o m p o rta ­ end BlocoDeControle M D L ;
m ento da en tid a d e . De
fo rm a se m e lh a n te à do architecture comportamento of BlocoDeControle_MDL
is type tipoestado is (SO, SI, S 2 , S3, S4);
projeto do bloco de co n ­
signal estadoatual, p r o x i m o e s t a d o : tipoestado ;
tro le m o strad o na Fig. begin
9.22, a arq u ite tu ra c o n ­ regestado: process(elk, rst)
siste em d o is p ro c e s ­ begin
if (rst='l') then
so s, um q ue m o d ela o estadoatual <= SO; -- estado inicial
re g istra d o r de e sta d o e elsif (clk='l' and elk'event) then
o u tro q ue m o d ela a ló ­ estadoatual <= proximoestado;
end if;
g ic a c o m b in a c io n a l. O
end process;
p ro cesso do reg istra d o r
de e sta d o d e n o m in a d o logicacomb: p r o c e s s(estadoatual, B, S)
regestado 6 sensível às begin
L <= 'O';
entradas clk e rst. Se rst Dreg_clr <= ' O ' ;
estiv er h ab ilitad a, então Dreg_ld <= 'O';
o p ro cesso atrib u irá as- Dctr_clr <= ' O ' ;
Dctr_cnt <= 'O';
si ncronicam ente o estado
case estadoatual is
inicial SO da FSM ao si­ when SO =>
nal estadoatual. Em caso L <= 'O' ; -- laser desligado
contrário, se o relógio e s­ Dreg_clr <= '1'; -- zere Dreg
proximoestado <= SI;
tiver subindo, o processo
when SI =>
a tu a liz a rá o re g istra d o r Dctr_clr <= '1' -- zere o contador
de estado com o próxim o if (B='1') then
estado. proximoestado <= S2 ;
else
O seg u n d o p ro cesso proximoestado <= SI;
denom inado logicacomb end if;
i$ sensível às entradas da
(continua na Figura 9.43)
ló g ic a c o m b in a c io n a l
da Fig. 5.21, cspecifica-
m cnte, às entradas exter- Figura 9.42 Descrição comportamcntal em VHDL para o bloco de
nas B c S e à saída esta- conlr° le d ° medidor de distância baseado em laser.
doatual do registrador de estado. Q uando qualquer um desses itens é alterado, o processo
atribui valores próprios do estado atual às saídas da FSM . q u e neste caso são L, Dreg_clr,
D re g jd , Dctr_clr e Dctrjcnt. N o exem plo d o bloco de co n tro le da Fig. 9.22, a saída x da
FSM foi definida dentro do com ando case para todos os estados possíveis. Com cinco saídas
que devem ser definidas pelo BlocoDeControle_MDL e cinco estados possíveis, a atribuição
dos valores a todas as saídas de cada estado seria trabalhoso. A lém disso, a localização de
um erro e a realização de correções ou m odificações no bloco de controle iria se tornar m uito
difícil em m áquinas FSM m aiores que consistissem em m ais estad o s e que tivessem m uito
m ais saídas. O processo logicacomb usa uma abordagem diferente. P rim eiro, atribuem -se
valores iniciais às saídas e posteriorm ente atribuem -se som ente valores que forem diferentes
502 Sistemas Digitais

desses iniciais. O processo atri­


(continução da Figura 9.42)
bui prim eiro um valor inicial 0 a when S2 =>
todas as cin co saídas. A seguir, L <= ' 1 ' ; - - laser ligado
o p ro cesso d ete rm in a o estad o proximoestado <= S 3 ;
when S3 =>
atual e atribui valores às saídas

O
- - laser desligado

S■
II
A
f
som ente quando elas devem ser Dctr_cnt <= '1 ' / - - incremente
1. O processo tam bém atribui o if (S= ' 1 ' ) then
proximoestado <= S4 ;
valor 0 a diversos sinais dentro
else
do com ando when (quando). No proximoestado <= S 3 ;
entanto, essas atribuições foram end if;
in c lu íd a s ap e n a s p a ra in d ic a r when S4 =>
Dreg_ld <= * 1 ' ; - - carregue Dreg
claram ente o com portam ento do Dctr_cnt <= 'O'; - - pare a contagem
bloco de co n tro le (elas são re­ proximoestado <= S l ;
dundantes, m as ajudam a tornar end case;
end process;
a descrição m ais fácil de ser en ­
end comportamento;
tendida).
C om base no estad o atual e Figura 9.43 Descrição comportamental em VHDL para o
nos valores das entradas B e S, o bloco de controle do medidor de distância baseado em laser
processo tam bém determ ina qual (continuação).
deverá ser o próxim o estado. Na
próxim a borda de subida do relógio, o registrador de estado será carregado pelo processo do
registrador de estado com o valor d o próxim o estado.

Verilog
module MedidorDistLaser{elk, rst, B, S, L, D ) ;
A Fig. 9.44 é um a d e sc ri­ input elk, rst, B, S;
ção em V erilog do m ed i­ output L;
d o r de d istâ n c ia baseado output [15:0] D;

em laser que foi m ostrado wire Dreg_clr, Dreg_ld;


na Fig. 5.1 9 . O m ód u lo wire Dctr clr, Dctr ent;
denom inado Medido rDis-
tLaser define as entradas BlocoDeControle_MDL
BlocoDeControle_MDL_l(elk, rst, B, S, L,
e saíd as, in cluindo-se um Dreg_clr, Dreg_ld,
b o tão de en trad a B a p e r­ Dctr_clr, D c t r _ c n t ) ;
tad o p e lo u su á rio , um a BlocoOperacional_MDL
BlocoOperacional_MDL_l(elk, Dreg_clr, Dreg_ld,
entrada S para o sensor de
Dctr clr, Dctr ent, D ) ;
laser, um a saída L de co n ­ endmodule
tro le p ara o la se r e um a
saída D de 16 bits para a Figura 9.44 Descrição estaitural para a descrição de alto nível em
d istâ n c ia m edida. O m ó ­ Verilog para o medidor de distância baseado em laser.
d u lo tam bém define um a
entrada de reló g io clk de 300 M H z e um a en trad a rst de reset para o bloco de co n tro le do
projeto.
O MedidorDistLaser d escrev e e stru tu ra lm e n te as c o n e x õ e s d o s c o m p o n e n te s c o rre s­
po n d en tes aos b lo co s d e co n tro le e o p eracio n al. O m ó d u lo in stan cia d o is co m p o n en tes. O
co m p o n e n te BlocoDeControle_MDL_l é o b lo c o de c o n tro le do m e d id o r d e d istâ n c ia
b asead o em laser e BlocoOperacional _M D L_l é o b lo c o o p e ra c io n a l d e sse p ro jeto . A
a rq u ite tu ra c o n e c ta as e n tra d a s clk , rst , B e S d o m ó d u lo às e n tra d a s d o BlocoDeCon-
trole_MDL_l e c o n e c ta a sa íd a d e co m an d o p ara o laser d o bloco d e c o n tro le à p o rta de
saíd a L co rresp o n d en te. A lém d isso , os q u atro fios in tern o s Dreg_clr , D r e g jd , Dctr_clr e
Dctr_cnt fazem a co n ex ão e n tre os q u a tro sin a is de c o n tro le d o b lo co de c o n tro le e as
Linguagens de Descrição de Hardware 503

q u atro e n trad as d o BlocoOperacional_M DL_l. O b lo co o p e ra c io n a l de MedidorDistLa-


ser tem u m a ú n ica sa íd a D q u e fornece a d istâ n c ia m ed id a e e stá c o n e c ta d a à p o rta de
saíd a D da entidade.
A Fig. 9.45 é um a d es­
module ContadorCrescentel6(clk, clr, cnt, C ) ;
crição em V erilog do com ­ input clk, clr, cnt;
p o n e n te c o rre s p o n d e n te output [15:0] C;
ao b lo co o p e ra c io n a l de // detalhes não mostrados
endmodule
MedidorDistLaser , que foi
m o strad o na Fig. 5.17. O module Regl6(I, Q, clk, clr, ld) ;
m ódulo, d en o m in ad o Blo- input [15:0] I;
coOperacional__MDL, d e ­ input clk, clr, ld;
output [15:0] Q;
fine um a entrada de relógio // detalhes não mostrados
clk, quatro entradas de con­ endmodule
tro le, D regjclr , Dreg_ld ,
module DeslocadorDireitaUmlô(I, S) ;
D ctrjclr e D ctrjcnt , e uma
input [15:0] I;
saída para a distância D de output [15:0] S;
16 bits. // detalhes não mostrados
O b lo c o o p e ra c io n a l endmodule

c o n siste em três c o m p o ­ module BlocoOperacional_MDL(clk, Dreg_clr,


nentes, um c o n ta d o r c re s ­ Dreg_ld, Dctr_clr, Dctr_cnt, D);
c en te de 16 b its, um re ­ input clk;
g istra d o r de 16 bits e um input Dreg_clr, Dreg_ld;
input Dctr_clr, Dctr_cnt;
d eslo c a d o r à d ireita de 16 output [15:0] D;
bits que faz d eslo cam en to s
de um a p o sição à d ireita. wire [15:0] Ctemp, Cdeslocado;
O co m p o n e n te Contador-
ContadorCrescentel6 Dctr(clk, Dctr_clr,
Crescente 16 é um c o n ta ­ Dctr_cnt, Ctemp);
d o r c re sc e n te d e 16 bits, DeslocadorDireitaüml6 DeslocadorDireita(Ctemp,
ten d o um a en trad a de c o n ­ Cdeslocado);
Regl6 D r e g (Cdeslocado, D, clk, Dreg_clr, Dreg_ld);
trole cnt e um a en trad a clr endmodule
( clear ) para zerar o conta-
dor. O co m p o n en te R egi6 Figura 9.45 Descrição estrutural em Verilog para o bloco opera­
é um reg istra d o r de carg a cional do medidor de distância baseado em laser.
p a ra lela de 16 bits, tendo
um sinal de controle ld para carreg ar o reg istrad o r e um sinal clr para zerar o registrador.
() co m p o n en te DeslocadorDireitaUmlô 6 um reg istrad o r d e slo c a d o r â d ireita de 16 bits
que faz o deslo cam en to da entrada I de um a posição à d ireita e atribui o valor deslocado à
saída S. O m ódulo do bloco operacional in stan cia um co m p o n en te ContadorCrescente 16
d en o m in ad o Dcti\ um co m p o n en te R egi6 d en o m in ad o Dreg e um co m p o n en te Desloca­
dorDireitaUmlô de nom e DeslocadorDireita. O m ódulo co n e c ta as en trad as Dctr clr e
D ctrjcnt do bloco o p eracio n al às en trad as de co n tro le de clear e de co n tag em de Dctr,
respectivam ente. A saída de contagem C do c o n tad o r 6 en tão ligada ao fio in tern o Ctemp
de 16 bits A ssim , o valor da contagem ê co n ectad o à en trad a d o d eslo cad o r DeslocadorDi­
reita. Em seguida, a contagem d eslocada é co n ectad a à en trad a do reg istrad o r Dreg usando
o fio interno Cdeslocado de 16 bits. C) m ódulo co necta as en trad as de controle clear o Dreg
de carga do reg istrad o r às po rtas de entrad a D regjclr e D re g jd do bloco o p eracio n al. F i­
nalm ente, a saída de dados Q do registrad o r é co n ectad a à saíd a da distân cia m ed id a D do
BlocoOperacionalJADL.
As Figs. 9.46 e 9.47 são a descrição em Verilog da FSM do bloco de controle para o m e­
didor de distância baseado em raio laser, que foi descrita na Fig. 5.21. O m ódulo denom inado
504 Sistemas Digitais

BlocoDeControleJvlDL define um a entrada de relógio clk, um sinal rst de reset. um botão B


apertado pelo usuário, um a entrada S para o sensor de laser e cinco sinais de saída de controle,
a saber, L, Dreg_clry D regjd. Dctr_clr e Dctrjcnt. A saída L c usada para ligar e desligar o
laser, sendo que o laser está ligado quando L é 1. O s quatro outros sinais de saída são usados
para controlar os com ponentes do bloco operacional do projeto RTL.

module BlocoDeControle_MDL(elk, rst, B, S, L, Dreg_clk,


Dreg_ld, Dctr_clr,
Dctr_cnt);
input elk, rst, B, S;
output L;
output Dreg_clk, Dreg_ld;
output Dctr_clr, Dctr_cnt;
reg L;
reg Dreg_clr, Dreg_ld;
reg Dctr_clr, Dctr_cnt;

parameter SO = 3'bOOO,
51 = 3'bOOl,
52 = 3'b010,
53 = 3'b O l l ,
54 = 3'blOO;

reg [2:0] estadoatual;


reg [2:0] proximoestado;

always @ ( p o s e d g e rst or posedge elk)


begin
if (rst==l)
estadoatual <= SO; // estado inicial
else
estadoatual <= proximoestado;
end

always @ (estadoatual or B or S)
begin
L <= 0 ;
Dreg_clr <= 0;
Dreg_ld <= 0;
Dctr_clr <= 0;
Dctr_cnt <= 0;
case (estadoatual)
Figura 9.46 D escri­ S O : begin
ção com portam ental L <= 0; // laser desligado
em V erilog para o Dreg_clr <= 1; // zere Dreg
bloco de controle do proximoestado <= SI;
end
m edidor de distância
(continua na Figura 9.47)
baseado em laser.

O m ódulo em Verilog descreve o com portam ento da FSM do BlocoDeControleJvlDL. De


form a sem elhante à do projeto do bloco de controle m ostrado na Fig. 9.23, o m ódulo consiste
em dois procedim entos, um que m odela o registrador de estado e outro que m odela a lógica
de controle da FSM . O procedim ento do registrador de estado é sensível às bordas positivas
das entradas rst de reset e clk de relógio. Se a entrada rst estiver habilitada, então o procedi­
m ento atribuirá assincronicam ente o estado inicial S0 da FSM ao sinal estadoatual. Em caso
contrário, na borda positiva do relógio, o procedim ento atualizará o registrador de estado com
o próxim o estado.
Linguagens de Descrição de Hardware 505

O se g u n d o p ro c e d im e n to é
(continuação da Figura 9.46)
sen sív el às e n tra d a s d a ló g ica Sl: begin
co m b in acio n al d a Fig. 5.2 1 , e s ­ Dctr clr <= 1; // zere o contador
pecificam ente, às en trad as ex ter­ if (B==l)
proximoestado <= S 2 ;
nas B e S, e à saíd a estadoatual
else
do reg istrad o r de estado. Q uando proximoestado <= Sl;
q u alq u er um d esses itens é alte­ end
rado, o p ro ced im en to atribui va­ S 2 : begin
L < = 1; // laser ligado
lo res, p ró p rio s d o e sta d o atu al, proximoestado <= S3;
às saídas d a FSM , neste caso, L, end
D regjclr , Dreg_ld , D ctrjclr e S3: begin
L <= 0; // laser desligado
D ctrjcnt. N o exem plo de bloco
Dctr ent <= 1; // incremente
de co n tro le da Fig. 9.22, a saída if (S==l)
x da FSM é d e fin id a d e n tro do proximoestado <= S4 ;
com an d o case para cad a um dos else
proximoestado <= S 3 ;
e sta d o s p o ssív e is. C o m c in c o
end
saíd as q ue dev em se r d efin id as S 4 : begin
p elo BlocoDeControle_MDL e Dreg_ld <= 1; // carregue Dreg
cin co e sta d o s p o ssív eis, a a tri­ Dctr_cnt <= 0; // pare a contagem
proximoestado <=: Sl;
b u ição d o s v alo res a to d a s as end
saíd as d e cad a estad o se ria tra­ endease
balhoso. A lém d isso , a lo caliza­ end
endmodule
ção de um erro e a realização de
co rreçõ es ou m o d ificaçõ es d e n ­
Figura 9.47 Descrição comportarnental em Verilog para
tro d o bloco de c o n tro le iria se
o bloco de controle do medidor de distância baseado em
to rn ar m uito difícil e m m áquinas
laser (continuação).
FSM m aio res q ue c o n sistissem
em m ais estad o s e tivessem m uito m ais saíd as. A o invés d isso , o p ro ced im en to usa um a
ab o rd ag em d iferen te. P rim eiro, atribuem -se valores in iciais a to d as as saídas e p o sterio r­
m en te a trib u em -se so m en te os valores q u e forem d ife re n te s d esses in iciais. O p ro c e d i­
m ento atribui prim eiro um valor inicial 0 a todas as cin co saídas. A seguir, d eterm in a o e s­
tado atual e atribui valores às saíd as so m en te q u an d o elas devem ser 1. D entro do com ando
case (caso), o p ro ced im en to tam bém atribui o valor 0 a diversos sinais. No en tan to , essas
atrib u içõ es foram incluídas so m en te para p o d er in d icar c la ram e n te o co m p o rtam en to do
bloco de co n tro le (elas são red u n d an tes, m as ajudam a to rn ar a d escrição m ais fácil de ser
entendida).
C om base no estad o atual e nos valores das en trad as B e 5, o p ro ced im en to tam bém
d eterm in a qual deverá ser o p ró x im o estad o . N a p ró x im a b o rd a de subida do reló g io , o
reg istrad o r de estad o é carregado com o pró x im o estad o pelo p ro ced im en to do reg istrad o r
de estado.
506 Sistemas Digitais

SystemC #include "systemc.h"


A Fig. 9.48 é um a d e s­ #include "BlocoDeControle_MDL.h"
c riç ã o em S y ste m C do #include "BlocoOperacional_MDL.h"
m e d id o r d e d is tâ n c ia
SC_MODULE(MedidorDistLaser)
b a se a d o em la s e r q u e
{
fo i m o s tra d o na F ig . sc_in<sc_logic> clk, rst;
5 .1 9 . O m ó d u lo d en o - sc_in<sc_logic> B, S;
sc_out<sc_logic> L;
m i n a d o M ed i do rD is -
sc_out<sc_lv<16> > D;
tLaser d e fin e as e n tra ­
d as e sa íd a s, in c lu in d o sc_signal<sc_logic> Dreg_clr, Dreg_ld;
um b o tão de e n tra d a B sc_signal<sc_logic> Dctr_clr, Dctr_cnt;

a p e rta d o p e lo u su á rio , BlocoDeControle_MDL BlocoDeControle_MDL_l;


um a e n tra d a S do sen so r BlocoOperacional_MDL BlocoOperacional_MD L_l;
de laser, um a saída L de
SC_CTOR(MedidorDistLaser) :
co n tro le d o la se r e um a
BlocoDeCo n t r o l e _ M D L _ l ("BlocoDeControle_MDL_l"),
sa íd a D de 16 bits para BlocoOperacional_MDL_l (,,BlocoOperacional_MDL_l")
a d is tâ n c ia m e d id a . O {
m ó d u lo tam b ém d efin e B l o coDeControle_MDL _l.c l k ( c l k ) ;
BlocoDeControle_MDL_l.rst(rst);
um a e n tra d a d e reló g io
BlocoDeCo n t r o l e _ M D L _ l .B ( B ) ;
clk de 300 M H z e um a B l o coDeControle_MDL _l.S ( S ) ;
en trad a rst de reset para BlocoDeControle_MDL_l.Dreg_clr(Dreg_clr);
o b lo c o d e c o n tro le de B l o coDeControle_MDL _l.D r e g _ld(Dreg_ld);
BlocoDeControle_MDL_l.Dctr_clr(Dctr_clr);
projeto. BlocoDeControle_MDL_l.Dctr_cnt(Dctr_cnt);
O M edidorD istLa-
ser d escrev e estru tu ral- BlocoOperacional_MDL_l.clk(clk);
BlocoOperacional_MDL_l.Dreg_clr(Dreg_clr);
m en te as co n e x õ e s d o s
BlocoOperacional_MD L_l.D r e g _ld(Dreg_ld);
c o m p o n e n te s c o r r e s ­ BlocoOperacional_MD L_l.D c tr_clr(Dctr_clr);
p o n d en tes ao s blocos de BlocoOperacional_MDL_l.Dctr_cnt(Dctr_cnt);
c o n tro le e o p e ra c io n a l. BlocoOperacional_MDL_l.D(D);

A a rq u ite tu ra in sta n c ia
};
d o is c o m p o n e n te s . O
c o m p o n e n te BlocoDe- Figura 9.48 Descrição estrutural para a descrição de alto nível em
C o n tr o le J A D L J é o SystemC do medidor de distância baseado em laser.
b lo c o d e c o n tro le do
m ed id o r d e d istâ n c ia b asead o em la se r e BlocoOpercicional_MDL_J é o bloco o p e ra c io ­
nal d esse p rojeto. O m ó d u lo co n ecta as e n tra d as clk , rst , B e S d o m ó d u lo às e n tra d as do
BlocoDeConímle__MDL_l e c o n e c ta a saíd a de c o m an d o de laser d o b lo co de co n tro le à
p orta de sa íd a L c o rresp o n d en te. A lém d isso , os q u a tro fios in tern o s Dreg_clr, D r e g jd ,
Dctr_clr e Dctr_cnt fazem a co n ex ão en tre os q u a tro sin a is de co n tro le do b lo co de c o n ­
tro le e as q u atro e n trad as d o BlocoOperacional_M DL_l . O b lo co o p eracio n al do M edi -
dorDistLaser tem um a ú n ica saíd a D q ue fo rn e c e a d istâ n c ia m e d id a e e stá c o n e c ta d a à
p o rta de saíd a D da en tid ad e.
Linguagens de Descrição de Hardware 507

A Fig. 9.49 6 um a d escrição


#include "systemc.h"
em System C do com ponente co r­ #include "contadorcrescentel6.h"
respondente ao bloco operacional #include "reglô.h"
de MediclorDistLaser, com o foi #include "deslocadordireitauml6.h"

m ostrado na F is. 5.17. O m ódulo SC_MODULE(BlocoOperacional_MDL)


d en o m in ad o BlocoOperacional_ {
MDL define um a en trad a de re ­ sc_in<sc_logic> clk;
sc_in<sc_logic> D r e g _ c l r / Dreg_ld;
lógio clk, quatro entradas de co n ­
sc_in<sc_logic> Dctr_clr, Dctr_cnt;
trole Dreg_clr, D reg jd , Dctr_clr sc_out<sc_lv<16> > D;
e Dctr_cnt, e um a saída D de 16
bits da distância. sc_signal<sc_lv<16> > Ctemp;
sc_signal<sc_lv<16> > Cdeslocado;
O bloco operacional co n siste
em três com ponentes, a saber, um ContadorCrescentelô Dctr;
contador crescente de 16 bits, um Reglô Dreg;
registrador de 16 bits e um deslo­ DeslocadorDireitaUmlô.h DeslocadorDireita;

cad o r à d ireita de 16 bits o qual SC_CTOR(BlocoOperacional_MDL) :


e fe tu a d e slo c a m e n to s de um a D c t r ("Dctr"), D r e g ("Dreg"),
posição à direita. O com p o n en te D e s l o c a d o r D i r e i t a ("DeslocadorDireita")
Contador Crescente 16 6 um co n ­ {
D c t r .c l k ( c l k ) ;
tador crescen te de 16 bits, tendo D c t r .cl r ( D c t r _ c l r ) ;
um a entrada de controle cnt e um a D c tr.cnt(Dctr_cnt);
en trad a clr (clear) p ara z e ra r o Dc t r . C ( C t e m p ) ;

contador. O co m p o n en te Reglô D e s l o c a d o r D i r e i t a .I ( Ctemp);


é um reg istrad o r de carga p a ra ­ D e s l o c a d o r D i r e i t a .S ( Cdeslocado);
lela de 16 bits, tendo um sinal de
D r e g . I(Cdeslocado);
controle ld para carreg ar o regis­
Dreg.Q ( D ) ;
trador e um sinal clr para zerar o D r e g .c l k ( c l k ) ;
registrador. O co m p o n en te Des- D r e g .cl r ( D r e g _ c l r ) ;
locadorDireitaUmlô é um regis­ D r e g .l d ( D reg_ld);
trador d eslocador à direita de 16 }
};
bits q ue faz o d e slo cam en to de
um a posição à direita da entrada I
Figura 9.49 D escrição estrutural em System C para o
e atribui o valor deslocado à saída
bloco operacional do medidor de distância baseado em
S. O m ódulo do bloco operacional laser.
instancia um com ponente Conta­
dor Crescente 16 denom inado Dctr , um com ponente Reglô denom inado Dreg e um com po-
nenle DeslocadorDireitaUmlô de nom e DeslocadorDireita. C) m ódulo conecta as entradas
D ctrjclr e Dctrjcnt do bloco operacional às entradas de controle de clear e de contagem de
Dctr. respectivam ente. À saída de contagem C do contador 6 então conectada ao fio interno
Ctemp de 16 bits. A ssim , o valor da contagem 6 conectado à en trad a do d eslo cad o r Deslo­
cadorDireita. Em seguida, a contagem deslocada é conectada à entrada do registrador Dreg
por m eio do sinal interno Cdeslocado. O m ódulo co necta as entradas de controle de clear e
de carga do registrador Dreg às portas de entrada Dregjclr e D re g jd do bloco operacional.
Finalm ente, a saída de dados Q do registrador c conectada à saída da distância m edida D do
B locoOpe raciona IJAD L.
508 Sistemas Digitais

A s Figs. 9.50 e 9.51 são a descrição em System C da FSM do bloco de controle do m edi­
dor de distância baseado em raio laser, que foi descrita na Fig. 5.21. O m ódulo denom inado
BlocoDeControle_MDL tem um a entrada de relógio clk, um sinal rst de reset, um botão B
apertado pelo usuário, um a entrada S do sensor de laser e cinco sinais de saída de controle,
isto é, L , Dregjclr, D re g jd , D ctrjclr e Dctrjcnt. A saída L é usada para ligar e d eslig ar o
laser, sendo que o laser está ligado quando L é 1. O s quatro outros sinais de saída são usados
para controlar os com ponentes do bloco operacional do projeto RTL.

#include "system.h"

enum tipoestado { SO, Sl, S2, S3, S4 };

SC_MODULE(BlocoDeControle_MDL)
{
sc_in<sc_logic> clk, rst, B, S;
sc_out<sc_logic> L;
sc_out<sc_logic> Dreg_clr, Dreg_ld;
sc_out<sc_logic> Dctr_clr, Dctr_cnt;

sc_signal<tipoestado> estadoatual, proximoestado;

SC_CTOR(BlocoDeControle_MDL)
{
SC_METHOD{regestado);
sensitive_pos << rst << clk;
SC_METHOD(logicacomb);
sensitive << estadoatual << B << S;

void r e g e s t a d o () {
if { r s t . r e a d O == SC_LOGIC_l )
estadoatual = SO; // estado inicial
else
estadoatual = proximoestado;

void l o g i c a c o m b () {
L .w r i t e ( S C _ L O G I C _ 0 ) ;
D r e g _ c l r .w r i t e ( S C _LOGIC_0);
Dreg_ld.write(SC_LO GIC_0);
D c tr_clr.write(SC_LOGIC_0);
Dctr_cnt.write(SC_L OGIC_0);

switch (estadoatual) {
case S O :
Figura 9.50 D esc ri­ L.write(SC_LOGIC_0); // laser desligado
ção co m p o rtam en tal Dreg_clr.write(SC_L OGIC_0); // zere Dreg
em System C do bloco proximoestado = Sl;
break;
de controle do medidor
de distância baseado (continua na Figura 9.51)
em laser.

O m ódulo em System C descreve o com portam ento da FSM do BlocoDeControle_MDL.


De form a sem elhante à do projeto do bloco de controle m ostrado na Fig. 9.24, o m ódulo co n ­
siste em dois processos, um que m odela o registrador de estado e outro que m odela a lógica
de controle da FSM . O processo denom inado regestado do registrador de estado é .sensível às
bordas positivas das entradas de reset rst e de relógio clk. Se a entrada rst estiver habilitada,
então o processo atribuirá assincronicam ente o estado inicial SO da FSM ao sinal estadoatual.
Linguagens de Descrição de Hardware 509

Em caso contrário, na borda positiva do relógio, o processo atualizará o registrador de estado


com o proximoestado.
O seg u n d o p ro cesso , d e nom e logicacomb, e sensível às e n tra d as d a ló g ica c o m b in a ­
cional da Fig. 5.21, esp ecificam en te, às en trad as ex tern as B e 5 e à sa íd a estadoatual do
re g istra d o r de estad o . Q u an d o q u a lq u e r um d esses sin a is é a lte ra d o , o p ro c e sso atribui
valores, p ró p rio s d o e sta d o atu al, às saíd as d a F S M , n este caso , L, Dreg_clr , D r e g jd ,
D ctrjclr e D ctrjcnt. N o exem plo d o bloco d e c o n tro le da Fig. 9.24, a saíd a a*da F S M foi
d efin id a d en tro d o co m an d o case para todos os e sta d o s possíveis. C om cin c o saíd as q u e
devem ser d efin id as pelo BlocoDeControle_MDL e cin c o estad o s p o ssív eis, a atrib u ição
dos valores a todas as saíd as de cad a estad o seria trabalhoso. A lém disso, a lo calização de
um erro e a realização de co rre ç õ e s ou m o d ificaçõ es no b lo co d e c o n tro le iria se to rn a r
m uito difícil em m áq u in as FSM m aio res c o n sistin d o em m ais estad o s e tendo m u ito m ais
saídas. A o invés disso, o p ro cesso usa um a ab o rd ag em diferen te. P rim eiro atrib u em -se va­
lores iniciais a todas as saíd as e p o sterio rm en te atrib u em -se so m en te os valores q u e forem
d iferen tes d esses iniciais. O p ro cesso atribui p rim eiro um v alo r inicial 0 a to d as as cin co
saídas. A seguir, o p ro cesso d eterm in a o e sta d o atual e atribui valores às saíd as so m en te
q u an d o elas devem ser 1. O p rocesso tam bém atribui o valor 0 a d iv erso s sin ais d en tro do
co m an d o case. N o e n tan to , essas atrib u içõ es foram in c lu íd a s a p en as p ara in d ic a r clara-
m ente o co m p o rtam en to d o bloco de co n tro le (elas são red u n d an tes, m as aju d am a to rn ar
a d escrição m ais fácil de se r en ten d id a).

(continuação da Figura 9.50)

case SI
D c t r _ c l r .write(SC_LOGIC_l); // zere o contador
if {B.r e a d () == SC_LOGIC_l)
proximoestado = S2;
else
proximoestado = Sl;
break;
case S 2 :
L.w r i t e (SC_LOGIC_l); // laser ligado
proximoestado = S3;
break;
case S3 :
L .write(SC_LOGIC_0); // laser desligado
D c t r _ c n t .write(SC_LOGIC_l); // incremente
if ( S . r e a d O == SC_LOGIC_l)
proximoestado = S 4 ;
else
proximoestado = S3;
Figura 9.51 D escri­ break;
case S 4 :
ção co m p o rtam en - Dreg_ld.w r i t e (SC_LOGIC_l); // carregue Dreg
tal em System C do D c t r _ c n t .write(SC_LOGIC_0); // pare a contagem
bloco de controle do proximoestado = Sl;
break;}
m edidor de d istân ­
cia baseado em laser
(continuação).

O processo tam bém determ ina qual deverá ser o próxim o estado, com base no estado atual
e nos valores das entradas B e S. O próxim o estado será carregado no registrador de estado
pelo processo do registrador de estado na próxim a borda de subida do relógio.
510 Sistemas Digitais

9.6 RESUMO DO CAPÍTULO


N este capítulo, dissem os que as linguagens de descrição de hardw are (H D L s) são largam ente
usadas no projeto digital m oderno. D em os breves introduções a diversas H D Ls am plam ente
usadas, especificam ente, V H D L, Verilog e System C . B asicam ente, introduzim os essas HDLs
pelo uso de exem plos, ilustrando com o cada H D L pode ser usada para descrever lógica com -
binacional, lógica seqüencial, com ponentes de bloco operacional e tam bém o com portam ento
e a estrutura RTL. Para se tornar proficiente no uso de H D Ls, pode ser útil o estu d o m ais
com pleto de um a H D L cm particular. E ste capítulo ilustra tam bém o ponto de que H D Ls
diferentes tem diversos atributos em com um .

9.7 EXERCÍCIOS
Os seguintes exercícios podem feitos usando qualquer uma das HDLs descritas neste capítulo.

SEÇÃO 9.2: DESCRIÇÃO DE LÓGICA CO M BINACIO NAL USANDO LINGUAGENS DE


DESCRIÇÃO DE HARDWARE

9.1 Para o display descrito no Exemplo 2.23. crie a descrição estrutural em HDL do conversor de
número binário em sete segmentos, o qual consiste em portas lógicas simples, isto é. Inv. AND2 e
OR2. Assegure-se de incluir as descrições comporlamentais combinacionais para as portas lógicas
simples.
9.2 Em HDL, crie descrições comportamentais combinacionais para cada uma das portas lógicas de
duas entradas seguintes, em que cada uma tem duas entradas a e /;. e uma única saída F.
(a) NAND2
(b) NOR2
(c) XOR2
(d) XNOR2
9.3 (a) Crie uma descrição comportamental combinacional em HDL para o detector de um padrão
composto por três ls que foi descrito no Exemplo 2.24.
(b) Crie uma bancada de teste para verificar se a sua descrição funcionou apropriadamente.
9.4 (a) Crie uma descrição comportamental combinacional em HDL para o contador do número de ls
mostrado na Fig. 2.41, descrevendo o comportamento combinacional de ambas as saídas x e y
na forma de uma soma de mintermos.
(b) Crie uma bancada de teste para verificar se a sua descrição funcionou apropriadamente.
9.5 Crie uma descrição em HDL para o decodificador 2x4 mostrado na Fig. 2.50, na forma de:
(a) comportamento combinacional,
(b) estrutura.
(c) Crie uma bancada de teste para verificar as duas descrições (a mesma bancada de teste pode
testar qualquer uma das descrições).
9.6 Crie uma descrição em HDL para o multiplcxador 4x l descrito na Fig. 2.55, na forma de:
(a) comportamento combinacional.
(b) estrutura.
(c) Crie uma bancada de teste para verificar as duas descrições (a mesma bancada de teste pode
testar qualquer uma das descrições).
Linguagens de Descrição de Hardware 511

9.7 Crie uma descrição comportamental em I IDL para o


multiplexador 2xl descrito na Fig. 2.54. A seguir, crie
uma descrição estrutural em HDL que combina três
multiplexadores 2xl para criar um multiplexador 4xl
como está mostrado na Fig. 9.52.
9.8 Crie uma descrição comportamental combinacional
em HDL para um multiplexador 4xl de oito bits. As­
segure-se de especificar as portas de entrada e saída do
projeto usando um tipo de dados com múltiplos bits.
9.9 Explique claramente qual é a diferença entre uma des­
crição estrutural em HDL c uma descrição compor­
tamental em HDL. Explique os benefícios de se usar
ambos os tipos de descrição.
s0 s1
9.10 Explique por que a lista de sensitividade de uma des­
crição comportamental combinacional em HDL deve Figura 9.52 Multiplexador 4xl com­
incluir todas as entradas do circuito combinacional. posto por três multiplexadores 2x1.
Em particular, explique porque, na realidade, a omis­
são de uma entrada descreve um circuito seqiiencial.
9.11 Crie uma descrição comportamental em HDL para um codificador I6x4 com prioridade. Esse
codificador tem 16 entradas, dl 5. d 14 dl. d0. e quatro saídas. e3. e2, e l . e0. A saída do codifi­
cador com prioridade fornece um número binário de quatro bits indicando qual das 16 entradas é
um 1. Se houver mais de uma entrada em 1. o codificador com prioridade dará o número binário
correspondente á entrada numerada com o valor mais alto.

SEÇÃO 9.3: DESCRIÇÃO DE LÓGICA SEOÜENCIAL USANDO LINGUAGENS DE DESCRIÇÃO


DE HARDWARE

9.12 (a) Crie uma descrição comportamental em HDL de um registrador de carga paralela de 32 bits.
(b) Crie uma bancada de teste para testar a descrição.
9.13 (a) Crie uma descrição comportamental em HDL para a FSM do bloco de controle do detector
melhorado de código que foi descrito na Fig. 3.46.
(b) Crie uma bancada de teste para testar a descrição.
9.14 (a) Crie uma descrição comportamental em HDL para o sincronizador de aperto de botão que foi
descrito na Fig. 3.53.
(b) Crie uma bancada de teste para testar a descrição.
9.15 (a) Crie uma descrição comportamental em HDL para o bloco de controle da chave de carro se­
gura, como foi descrito nas Figs. 3.57 e 3.58.
(b) Crie uma bancada de teste para testar a descrição.

SEÇÃO 9.4: DESCRIÇÃO DE COMPONENTES DE BLOCO OPERACIONAL USANDO


LINGUAGENS DE DESCRIÇÃO DE HARDWARE

9.16 (a) Crie uma descrição comportamental em HDL de um registrador de carga paralela, com oito
bits e entrada clr para zerar o registrador.
(b) Crie uma bancada de teste para testar a descrição.
9.17 (a) Crie uma descrição comportamental em HDL de um registrador de carga paralela de oito bits.
Ele tem uma entrada de clear em nível baixo (low), de nome c lr j. e uma entrada de set em ní­
vel alto (high). de nome setji. Quando a entrada c l r j é 1. os conteúdos do registrador devem
ser zerados tornando-se “00000000". Quando a entrada se tji é 1, os conteúdos do registrador
devem se tornar “11111111". Se ambas as entradas forem 1, a entrada clear em nível baixo tem
a prioridade.
(b) Crie uma bancada de teste para testar a descrição.
512 Sistemas Digitais

9.18 Crie uma descrição comportamental em HDL para


um registrador de oito bits com duas entradas de con­ s1 s0 Operação
trole s0 e s l que tem o comportamento de controle 0 0 M antenha o va lo r atual
descrito na Fig. 9.53 0 1 Carga paralela
9.19 Crie uma descrição estrutural cm HDL para um meio 1 1 0 Deslocamento à direita
somador. 1 1 1 Rotação à direita

9.20 Crie uma descrição estrutural em HDL para um so­ Figura 9.53 Tabela de operação do re­
mador com propagação de “vai um" (carry-ripple gistrador de oito bits do Exercício 9.18.
adder) de quatro bits sem a entrada de “vem um”.
Primeiro, crie uma descrição comportamental de um somador completo e. então, use o compo­
nente somador completo na sua descrição do somador com propagação de “vai um”.
9.21 Crie uma descrição comportamental em HDL para o conversor aproximado de graus Celsius em
Fahrenheit, como descrito na Fig. 4.40.
9.22 Crie uma descrição comportamental em HDL para o conversor aproximado de graus Fahrenheit
em Celsius, usando a seguinte aproximação para a conversão: C = (F - 32)/2.
9.23 (a) Crie uma descrição comportamental em HDL para um comparador de um bit.
(b) Crie uma descrição estrutural em HDL para um comparador de quatro bits. usando compara-
dores de um bit.
9.24 Crie uma descrição comportamental em HDL para um comparador de igualdade de 32 bits com
três entradas de oito bits a. be c .
9.25 Crie uma descrição estrutural em HDL para o contador crescente/decrescente de quatro bits que
foi descrito na Fig. 4.55. Assegure-se de criar primeiro uma descrição comportamental cm HDL
para cada componente usado no seu projeto estrutural em HDL.
9.26 Crie uma descrição estrutural em HDL para um contador decrescente de quatro bits com carga
paralela. Assegure-se de criar primeiro uma descrição comportamental em HDL para cada com­
ponente usado no seu projeto estrutural em HDL.
9.27 Crie uma descrição estrutural cm HDL para o conversor de RGB para CMYK que foi descrito na
Fig. 4.68. Assegure-se de criar primeiro uma descrição comportamental em HDL para cada com­
ponente usado no seu projeto estrutural em HDL.
9.28 Crie uma descrição estrutural em HDL para um conversor de CMYK para RGB. Sugestão: Use a
informação apresentada no Exemplo 4.20. que descreve o conversor de RGB para CMYK, para
ajudá-lo no projeto do conversor de CMYK para RGB.
9.29 Crie uma descrição estrutural em HDL para um circuito somador/subtrator de quatro bits. Asse-
gure-se de criar primeiro uma descrição comportamental em HDL para cada componente usado
no seu projeto estrutural em HDL.

SEÇÃO 9.5: PROJETO RTL USANDO LINGUAGENS DE DESCRIÇÃO DE HARDWARE

9.30 Crie uma descrição comportamental em HDL para a máquina de estados de alto nível da interface
de barramento simples que foi mostrado na Fig. 5.24.
9.31 Crie uma descrição estrutural em HDL para os blocos de controle e operacional da interface de
barramento simples, como mostrado na Fig. 5.26.
9.32 Crie uma descrição comportamental em HDL da máquina de estados de alto nível do componente
para a soma de diferenças absolutas, como mostrado na Fig. 5.29.
9.33 Crie uma descrição estrutural em HDL para o projeto dos blocos de controle e operacional do
componente que fornece a soma de diferenças absolutas, como mostrado na Fig. 5.30.
9.34 Crie um projeto RTL para um circuito medidor de tempo de reação que mede o tempo decorrido
entre o acendimento de uma lâmpada e o pressionamento de um botão por uma pessoa. O medi­
dor do tempo de reação tem três entradas, uma entrada clk de relógio, uma entrada rst de reset e
um botão de entrada B. Também tem três saídas, uma saída len de habilitação da lâmpada, uma
Linguagens de Descrição de Hardware 513

saída rtempo de tempo de reação de de/, bits e uma saída lento para indicar que o usuário não foi
rápido o suficiente. O temporizador de reação trabalha da seguinte maneira. Durante o reset. o
medidor espera 2 segundos antes de acender a lâmpada fazendo len ser 1. A seguir, o medidor do
tempo de reação mede o intervalo de tempo decorrido em milissegundos até o usuário pressionar
o botão B, fornecendo o tempo na saída rtempo como um número binário de 10 bits. Se o usuário
não pressionar o botão dentro de 1 segundo (1000 milissegundos), o medidor irá ativar a saída
lento tornando-a 1 e colocando 1000 na saída rtempo. Assuma uma frequência de 1 kHz. (a)
Usando uma máquina de estados de alto nível, comece capturando o projeto em uma HDL. (b)
Converta a máquina de estados de alto nível em uma descrição em HDL dos blocos de controle
e operacional.
9.35 Começando com a descrição em C mostrada na Fig. 9.54, crie um projeto RTL para uma
calculadora de máximo divisor comum (MDC) que toma como entrada duas entradas a e b de
16 bits, uma entrada de habilitação comece e uma saída D de 16 bits. Quando comece c *1\ a
calculadora de MDC computa o máximo divisor comum e coloca o MDC na saída D. Usando
uma HDL, inicie com uma máquina de estados de alto nível e, então, crie uma implementação
com bloco operacional, bloco de controle e todos os seus componentes internos descritos em
HDL.

uint MDC(uint a, uint b) // não é bem sintaxe C


{
while ( a 1 = b ) {
if( a > b ) {
a = a - b;
} else {
b = b - a;
}
}
r e t u r n (a);
}

F ig u ra 9.54 Descrição de uma calculadora usando um programa em C.


Algebras Booleanas

Este apêndice é reproduzido com permissão do livro “Introduction to Digital Systems ”


de autoria de Ercegovac, Lang e Moreno , ISBN 0-471-52799-8 , John Wiley and Sons
Editores , 1999.

A s álgebras booleanas são um a classe im portante das álgebras, que tem sido estudadas e
usadas extensam ente para m uitos propósitos (veja a Seção A .5). A álgebra de chaveamento,
usada na descrição de expressões de chaveam ento, discutidas na Seção 2.4, é um caso da
classe de álgebras booleanas. C onseqüentem ente, os teorem as desenvolvidos para as álgebras
booleanas tam bém são aplicáveis à álgebra de chaveam ento; sen d o assim , elas podem ser
usadas para a transform ação de expressões de chaveam ento. A lém disso, certas identidades
da álgebra booleana são a base para as técnicas gráficas e tabulares usadas para a m inim iza-
ção de expressões de chaveam ento.
N este apêndice, apresentarem os a definição de álgebras booleanas, bem com o os teore­
m as que são úteis para a transform ação de expressões booleanas. M ostrarem os tam bém a
relação entre as álgebras booleanas e de chaveam ento; em especial, m ostrarem os que a álg e­
bra de chaveam ento satisfaz os postulados de um a álgebra booleana. E sboçarem os tam bém
outros exem plos das álgebras booleanas, os quais são úteis para um m elhor entendim ento das
propriedades desta classe de álgebras.

A.1 ÁLGEBRA BOOLEANA


U m a álgebra booleana é um a n-upla {B, +, x}, em que
• B 6 um conjunto de elem entos;

+ e x são operações binárias aplicadas sobre os elem entos de B%

que satisfazem os seguintes postulados:

P l : Sc a , h e B , então
i. a + h = h + a
ii. a x b = h x a
Ou seja, + e x são com utativos.

P 2 : Se tf, /?, c e /?, então

i. tf + (/; x c) = (tf + b) x (tf + c)


ii. tf x (/; + c) = (tf x b) + (tf x c)
516 Apêndice A

P 3 : O conjunto B tem dois elementos de identidade distintos, denotados com o 0 e 1, tal que
para cada elem ento de B

i. 0 + a = a + 0 = a
ii. 1 x a = a x 1 = a
O s elem entos 0 e 1 são cham ados elemento aditivo de identidade e elemento multipli­
cativo de identidade, respectivam ente (estes elem entos não devem ser confundidos com os
núm eros inteiros 0 e 1).

P4: Para todo elem ento de a € B existe um elem ento a ', ch am ad o com plem ento de a> tal
que

i. a + a ' = 1
ii. a x a ' = 0
O s sím bolos + e x não devem ser confundidos com os sím bolos de adição e m ultiplicação
aritm éticos. Porém , por conveniência, + e x freqüentem ente são cham ados “m ais” e “vezes,”
e a expressão a + b e a x b são cham ados “som a” e “produto,” respectivam ente. A lém disso,
+ e x tam bém são cham ados “O R " (O U ) e “A N D ” (E), respectivam ente.
O s elem entos do co njunto B são cham ados constantes. O s sím b o lo s q u e representam
elem entos arbitrários de B são variáveis. O s sím bolos a , b e c nos postulados acim a são va­
riáveis, enquanto que 0 e 1 são constantes.
U m a ordem de precedência é definida para os operadores: x tem precedência sobre +.
Portanto os parênteses podem se r elim inados do produto. A lém disso, sem pre que sím bolos
sim ples forem usados para variáveis, o sím bolo x poderá ser elim inado nos produtos. Por
exem plo,
a + (b x c) pode ser escrito com o a + bc

► A.2 ALGEBRA DE CHAVEAMENTO


A álgebra de chaveamcnto é um sistem a algébrico usado para descrever funções de chavea-
m ento por m eio de expressões de chaveam cnto. N este sentido, um a álgebra de chaveam cnto
cum pre o m esm o papel para com as funções de chaveam cnto que a álgebra com um para com
as funções aritm éticas.
A álgebra de chaveam cnto consiste no conjunto de dois elem entos B = {0. 1} e duas ope­
rações A N D e O R , definidas da seguinte m aneira:

AND 0 1 OR 0 1

0 0 0 0 0 1

1 0 1 1 1 1

E stas operações são usadas para avaliar expressões de chaveam cnto, conform e é indicado
na Seção 2.4.

Teorema 1
A álgebra de chaveam cnto é um a álgebra booleana
P ro v a M o stram o s q ue a álg eb ra de ch av eam cn to satisfaz os p o stu lad o s de um a álg eb ra
booleana.
Apêndice A 517

P l: Com utatividade de (+). (x). Isto é m ostrado pela inspeção das tabelas de operação. A
propriedade de com utatividade se sustenta se um a tabela for sim étrica em relação à d ia­
gonal principal.

P2: Distributividade de (+), (x). M ostrada por indução perfeita, ou seja, considerando to­
dos os valores possíveis para os elem entos a , b e c. C onsidere a seguinte tabela:

abc a + bc (<a + b)(a + c)


000 0 0
001 0 0
010 0 0
011 1 1
100 1 1
101 1 1
110 1 1
111 1 1

U m a vez que a + bc = (a + b)(a + c) para todos os casos, P2(i) é satisfeita. U m a prova


sim ilar m ostra que P2(ii) tam bém é satisfeita.

P3: Existência de elemento de identidade aditivo e multiplicativo. A partir das tabelas de


operação

0 + l = l + 0 = l

Portanto, 0 é o elem ento de identidade aditivo. Sim ilarm ente,

üxl = l x 0=0

de form a que l é o elem ento de identidade m ultiplicativo.

P4: Existência do complemento. Por indução perfeita:

a a ' Cl + Cl' a x a '


1 0 1 0
0 1 1 0

C onseqüentem ente, 1 é o com plem ento de 0 e 0 é o com plem ento de 1.


U m a vez que todos os postulados são satisfeitos, a álgebra de chaveam ento é um a álgebra
booleana. Em conseqüência, todos os teorem as verdadeiros para as álgebras booleanas tam ­
bém são verdadeiros para a álgebra de chaveam ento.

► A.3 TEOREMAS IMPORTANTES NA ALGEBRA BOOLEANA


A presentarem os, agora, alguns teorem as im portantes na álg eb ra booleana; estes teorem as
podem ser aplicados à transform ação de expressões de chaveam ento.
518 Apêndice A

Teorema 2 Princípio da Dualidade


Toda identidade algébrica dedutível dos postulados de um a álgebra booleana perm anece vá­
lida se
• as operações + e x são intercam biadas entre si em toda a expressão; e

os elem entos de identidade 0 e l tam bém são interçam biados entre si em toda a expres­
são.

P ro v a A prova decorre im ediatam ente do lato de que, para cada um dos postulados, há um
outro (o dual) que é obtido intercam biando-se + e x, bem com o 0 e I .
E ste teorem a é útil porque ele reduz o núm ero de diferentes teorem as que devem ser pro­
vados: todo teorem a tem seu dual.

Teorema 3
Todo elem ento de B tem um com plem ento único.
Prova A dm itam os que a e b: vam os supor que a \ e a 2 sejam am bos com plem entos de a.
E ntão, usando os postulados, podem os realizar as seguintes transform ações:

= a\ x I por P3(ii) (identidade)

= a \ x(a + a'2) por hipótese ( a 2 6 o com plem ento de a)


= d ]x a + a \ x a 2 p o r P2(ii) (distribu ti v idade)

= a x a\ + a\ x a 2 por P l(ii) (com utatividade)

= 0 + a\ x a 2 por hipótese {ci\ é o com plem ento de a)


- a\ x a 2 por P3(i) (identidade)

M udando o índice l por 2 e vice-versa, e repelindo todos os passos para d 2, obtem os

CL 2 — Q 2 ^ ^ |
= a \ x a '2 por P l(ii)

e, portanto, d 2= a \.
A unicidade do com plem ento de um elem ento perm ite c o n s id e ra r7 com o um a operação
binária cham ada complementação.

Teorema 4
Para qualquer a e B:

1. a+ l = l
2. « x 0 = 0

Prova U sando os postulados, podem os realizar as seguintes transform ações:


Apêndice A 519

C a s o ( l) : por

a+ I = l x ( a + I) P3(ii)

= (ci + a ') x ( a + 1) P4(i)

= a + ( a 'x 1) P2(i)

= a + a' P3(ii)

= 1 P4(i)

C aso (2) por

«X O = 0 + (« x 0 ) P3(i)

= (a x a') + (a xO) P4(ii)

= a x (a' + 0) P2(ii)

= a x ci P3(i)

= 0 P4(ii)

O C aso (2) tam bém pode ser provado por m eio do C aso (1) e o princípio da dualidade.

Teorema 5
O com plem ento do elem ento 1 é 0, c vice-versa. Ou seja,

1. 0'= 1
2. r= o

Prova Pelo T eorem a 4,


0+1=1e
0x 1=0

U m a vez que, pelo T eorem a 3, o com plem ento de um elem ento é único, o T eorem a 5 se
justifica.

Teorema 6 Lei da Idempotência


Para todo a e B

1. ci + a = a

2. a x c i- a

Prova por

( l) : por

ci + a = (a + a ) x l P3(ii)

= (a + a) x (a + a') P4(i)

= (a + (a x ci)) P2(i)

=a+0 P4(ii)

=a P3(i)
520 Apêndice A

(2): dualidade

T e o re m a 7 L e i d a I n v o lu ç ã o
Para todo a e B,

(a'Y = a
Prova A partir da definição de com plem ento, (a')' e a são am bos com plem entos de a \ M as,
pelo T eorem a 3, o com plem ento de um elem ento 6 único, o que prova o teorem a.

T e o re m a 8 Lei d a A b s o rç ã o
Para todo par de elem entos a , b e B.

1. a + a x b = a

2 . a x (a + b) = a

Prova por

( l ): a + ab = a x l + ab P3 (ii)

=a (\+ b ) P2 (ii)

= a (b + l) P l (i)

= íix I T e o re m a 4 ( l )

=a P3 (ii)

(2) dualidade

T e o re m a 9
Para todo par de elem entos cl be B.
1 . a + a'b = a + b

2 . a(a + b) = ab

Prova por

a + a'b = (a + a!) (a + b) P2 (i)

= 1 x (a + b) P4 (i)

= a +b P3 (ii)

(2): dualidade

T e o r e m a 10
Em um a álgebra booleana, cada uma das operações binárias ( + ) e ( x ) é associativa. Ou seja,
para todo a , b , c e Z?,

1. a + (Z? + c) = (rv + b) + c

2. íy(/;c ) = (ab)c
A prova deste teorem a 6 bastante extensa. O leitor interessado deve co n su ltar as leituras
adicionais sugeridas no final deste apêndice.
Apêndice A 521

C o r o lá r io 1
1. A ordem na aplicação do operador + entre n elem entos não im porta. Por exem plo,

a + {/; + [c + (d + e ) ] } = {[(a + /;) + c] + d) + e

- {a + í(b + c) + d]) +e
= a + b + c +d + e

2. A ordem na aplicação do operador x entre n elem entos não im porta.

T e o r e m a 11 L ei d e D e M o rg a n
Para todo par de elem entos a , b e B ,

1. (,a + b)' = a'b '

2. (abY = a' + / /
Prova Provam os prim eiro que (a + b) e o com plem ento de a b '. Pela definição de co m p le­
m ento (P4) e sua unicidade (Teorem a 3), isto corresponde a m ostrar que (a + b) + a b ' = 1 e
que (a + b)a'b' = 0. Fazem os esta prova pelas seguintes transform ações:

por

(a + b) + a'b' = \(a + b) + a'][(a + b) + b'] P2(i)

= [(b + a) + a'][(a + b) + //] P l(i)


= [b + (a + a')][a + (b + b')] associatividade

= ( b + \) ( a + \) P4(i)

= 1x1 Teorem a 3 (1 )

=1 idem potência

(a + b)(a'b') = (a'b')(a + b) com utatividade

= (a'b')a + (a'b')b distribui ividade

= (b'a')a + (a'b')b com utatividade

= b'(a'a) + a'(b'b) associatividade

= b \ a a ) + a'(bb') com utatividade

= / / x 0 + f l ' x0 P4(ii)

= 0+ 0 T eorem a 3(2)

= 0 T eorem a 5( 1)

Por dualidade (a x b)' = a' + / /


522 Apêndice A

Teorema 12 Lei de DeMorgan generalizada


A dm itam os que {a, /?,..., c, d) seja um conjunto de elem entos em um a álgebra booleana. E n­
tão as identidades seguintes se sustentam :

1. (a + b... + c + d )' = a'b'... c c í

2. (ab...c d )' = a + / / +... + c + d'


P ro v a Pelo m étodo da in d u ç ã o fin ita . A base é fo rn ecid a pelo Teorem a 11, o qual co rres­
ponde ao caso com dois elem entos.
E tapa indutiva: suponham os que a lei de D eM organ seja verdadeira para n elem entos e
que m ostrem os que ela é verdadeira para n + l elem entos. S uponham os que a , c sejam
os n elem entos, e que d seja o (// + l )-ésim o elem ento.
Então, por associaiividade e a base,
(í/ + è + ... + c + íí ) / = [( ü + /? + ... + c) + í/] /

= (a + b + ... + c ) yd'

Pela hipótese de indução


(a + b + . . . c ) ' = a 'b ' ...c '

D essa form a
(a + b + . ..c + d Y = a 'b '...c 'd '

O s teorem as de D eM organ são úteis para m anipular expressões de chaveam ento. Por exem ­
plo, a obtenção do com plem ento de um a expressão de chaveam ento que contém parênteses
é realizada aplicando-se a lei de D eM organ e a lei da Involução repetidam ente para colocar
todos os ( ' ) dentro dos parênteses. O u seja,
[(a + b')(c' + d') + ( / ' + g)']' = [(a + b’)(c' + < /')]'[(/'+ g Y Y
= [(a + b 'y + (c' + d 'y Y ( f '+ g )
= ( a'b + c d ) ( f '+ g )

O s sím bolos a , b , c,...que aparecem nos teorem as e postulados são v a riá v e is g e n é rica s.
Ou seja, podem ser substituídas por variáveis ou expressões (fórm ulas) com plem entadas sem
m udar o significado destes teorem as. Por exem plo, a lei de D eM orgam pode ser lida com o
(a ' + b 'Y = ab
ou
[(a + b Y + c 'Y = (a + b)c
D escrevem os um sistem a m atem ático geral, cham ado álgebra booleana, e estabelecem os
um conjunto básico de identidades algébricas, verdadeiras para q ualquer álgebra booleana,
sem de fato especificarm os a natureza das duas operações binárias, (+) e ( x ). N o capítulo 2,
apresentam os um a álgebra útil para a representação de funções de chaveam ento através de
expressões de chaveam ento.

► A.4 OUTROS EXEMPLOS DE ALGEBRAS BOOLEANAS


H á outras álgebras que tam bém são casos de álgebras booleanas. R esum irem os, agora, as
duas m ais com um ente usadas.
Apêndice A 523

*
Álgebra dos conjuntos. O s elem entos de B são todos subconjuntos de um conjunto S (o
conjunto de todos os subconjuntos de S 6 denotado por P(S)) e as operações são o conjunto
união (LJ) e o conjunto intersecção (Pi). Ou seja,
M = (P((S), ( u , n ) ) )

A identidade aditiva é um conjunto vazio, denotado por o , e a identidade m ultiplicativa é


o conjunto S. O conjunto P(S) tem 2|si é o núm ero de elem entos de S.
Pode-se dem onstrar que toda álgebra booleana é isom órfica com um a álgebra de conjun­
tos. C onseqüentem ente, toda álgebra booleana tem T elem entos para algum valor n > 0.
D iagram as de Venn são usados para rep resen tar conjuntos, bem com o as operações de
união e intersecção. C onseqüentem ente, desde que a álg eb ra dos conjuntos <5 um a álgebra
booleana, diagram as de Venn podem ser usados para ilustrar os teorem as de um a álgebra
booleana.

Álgebra de lógica (Cálculo Proposicional). N esta álgebra, os elem entos são T c F (Irue
e false - verdadeiro e falso), e as operações são L O G IC A L A N D (E L O G IC O ) e L O G IC A L
O R (O U L Ó G IC O ). E la é usada para avaliar proposições lógicas. E sta álgebra é isom órfica
com a álgebra de chaveam ento.

A.5 LEITURAS ADICIONAIS


O tópico das álgebras booleanas foi extensam ente estu d ad o e existem m uitos livros bons
sobre o assunto. O que expom os a seguir e um a lista parcial, na qual o leitor pode obter um
m aterial adicional que vai significativam ente alem do lim itado tratam ento deste apêndice:
Boolean Reasoning: The Logic o f Boolean Equations, de F. M . B row n, K luw er A cadem ie
P ublishers, B oston, M A , 1990; Introduction to Switching and Automata Theory, de M. A.
H arrison, M cG raw -H ill, New York, 1965; Switching and Automata Theory, de Z. Kohavi, 2;|
edição, M cG raw -H ill, N ew York, 1978; Switching Theory , de R. E. M iller, Vols. 1 e 2, W i­
ley, New York, 1965; Introduction to Discrete Structures, de F. Preparata e R. Yeh, A ddison-
W esley, R eading, M A , 1973; e Discrete Mathematical Structures , de H. S. Stone, Science
R esearch A ssociates, C hicago, IL, 1973.
Tópicos Adicionais de
Sistemas Binários de
Numeração

► B.1 INTRODUÇÃO
N o C apítulo 1, introduzim os o conceito de núm eros binários ou de base dois. M ostram os
com o pode-se converter um núm ero decim al para binário usando o método da subtração ou
o método da divisão por dois. E ntretanto, os núm eros que usam os em projeto digital nem
sem pre podem ser representados com o núm eros inteiros.
C onsidere um m édico que usa um term ôm etro auricular* que funciona em graus C elsius
para verificar se a tem peratura corporal de um paciente está norm al. Sabem os que a tem pera­
tura corporal norm al de um a pessoa é 37 graus C elsius (98,6 graus Fahrenheit). Se o sensor
de tem peratura do term ôm etro fornecer valores inteiros, então um a leitura de 37 graus C e l­
sius corresponderá a um a tem peratura real que pode ser qualquer um a entre 36,5 e 37,4 graus
C elsius, assum indo que o sensor de tem peratura faz um arredondam ento para o inteiro m ais
próxim o. E stá claro que um term ôm etro que trabalha desse m odo será de pouca utilidade para
um m édico, porque ele precisa de tem peraturas m ais precisas para poder afirm ar se a tem pe­
ratura de um paciente está fora do norm al. U m a leitura de 37 graus C elsius pode significar
que o paciente tem um a tem peratura corporal norm al ou que ele está perto de ter um a febre.
Para ser útil, precisam os que o term ôm etro fo rn eça a parte fracionária da tem peratura de
m odo que o m édico possa diferenciar entre 37,0 e 37,9 graus C elsius, por exem plo.
N este apêndice, discutirem os com o os núm eros reais são representados em binário e quais
são os m étodos usados pelos projetistas digitais m odernos para trabalhar com núm eros reais.

► B.2 REPRESENTAÇÃO DE NÚMEROS REAIS


A ssim com o, antes de lerm os passado para a num eração binária, tínham os olham os de perto
com o os núm eros inteiros são representados na base decim al, poderá ser esclareced o r com ­
preender com o os núm eros reais são representados na base decim al.
N o C apítulo 1, vim os que cada dígito de um núm ero tinha um certo peso que era um a
potência de dez. A casa das unidades tinha um peso igual a !()"= 1, a casa das dezenas, um

* N. dc T: Um tipo dc termômetro que é inserido no canal auditivo e usado para determinar a temperatura corporal. Bssa deter­
minação é feita medindo-se a temperatura do tímpano por meio de um sensor que capta a radiação infravermelha emitida por
ele sem tocá-lo.
526 Apêndice B

peso igual a 10 = 10, a casa das centenas, um peso igual a 10" = 100 e assim por diante. Se
um núm ero decim al tivesse um 8 na casa das centenas, um 6 na casa das dezenas e um 0 na
casa das unidades, poderíam os calcular o valor do núm ero m ultiplicando os dígitos pelos seus
pesos e som ando-os todos: 8*102 + 6* 101+ 0*10° = 860. C om o estam os m anipulando núm e­
ros decim ais a toda hora, esse cálculo nos é trivial.
O m esm o conceito de pesos para cada d í­
9 2 3 , 5 _ 0 _ J ________
gito pode ser estendido à parte fracionária de

T
o

o
103 102 101 1(T2 10"3 K T 4
um núm ero. C o n sid e re o n ú m ero d ecim al
“9 2 3 ,5 0 1 ” . R eferim o-nos à virgulas no m eio F ig u ra B.1 Representação de números reais
dos dígitos com o sendo a vírgula decimal. Ela na base dez.
separa a parte fracionária do núm ero da parte
inteira. Ao passo que os pesos dos dígitos da parte inteira do núm ero são potências crescentes
Geralmente a vir- de ^ os Pesos dos dígitos da parte fracionária são potências d ecrescentes de
gula , que é usada 10, constituindo assim os pesos dos d íg ito s fracionários (por exem plo, 10 1=
0,1 e 10 2= 0,01 ). Portanto, os dígitos “ 923,50 1” representam 9* 102 + 2* 10 ‘ +
para separar a parte
3*10° + 5 * 1 0 ’ + 0 * 1 0 2 + 1*10 com o m ostrado na Fig. B. 1.
inteira da parte fra ­
O s nú m ero s re a is p o d erão
cionária do número,
ser representados de m odo sim i­
é denominada vírgu­
lar em binário. N o lugar de um a
la fracionária (radix v írg u la d e c im a l, os n ú m ero s
point), um termo que F ig u ra B .2 Representação de números reais
re a is em b in á rio a p re se n ta m
é aplicável à qual­ na base dois.
um a vírgula binária . O s dígitos
quer base. à direita da vírgula binária recebem pesos que são potências negativas de 2. Por
exem plo, o núm ero binário 10,1101 é igual a 1*2' + 0*2° + 1*2 1+ 1*2 2 + 0*2 ' + 1*2 ‘ ou
2,8125 em num eração decim al, com o está m ostrado na Fig. B.2.
A gora você já deve estar à vontade com as potências crescen ­ T A B E LA B.1 Potências
tes de dois (1 ,2 , 4, 8, 16, 32, etc.). Por outro lado, pode ser difícil de dois
m em orizar as potências decrescentes de dois. No entanto, elas po­
P o tê n cia V a lo r
derão ser obtidas facilm ente se efetuarm os divisão por 2: 1,0 ,5 .
0,25, e assim por diante. A Tabela B. I ilustra essa seqüência. 22 4
O m étodo da subtração, que usam os no C apítulo 1 para co n ­
2' 2
verter núm eros inteiros decim ais para binário, tam bém é um m é­
todo adequado para se converter núm eros reais, sem necessitar de 2° 1
nenhum a m odificação a não ser trabalhar com potências negativas
2"1 0,5
de dois.
2"2 0.25
► E X E M P L O B.1 C o n v e rs ã o d e n ú m e r o s r e a is d e d e c im a l p a ra b in á r io
2“3 0.125
u s a n d o o m é to d o d a s u b tr a ç ã o

Converta o número 5,75 para binário usando o método da subtração. 2^ 0,0625


Para realizar essa conversão, seguiremos o processo de dois pas­ 2“5 0.03125
sos discutidos na Seção l .2. A conversão está detalhada na Fig. B.3.
Apêndice B 527

Decimal Binário
1. Coloque 1 na casa mais elevada 5,75
A casa 8 é grande demais, mas 1 0 0 ,0 0 (o valor corrente é: 4)
4 serve 5,75 4 2 1 0,5 0,25
2. Atualize o núm ero decimal - 4
Decimal diferente de zero, 1,75
retorne ao Passo 1

1. Coloque 1 na casa mais elevada 1 0 1 ,0 0 (o valor corrente é: 5)


A próxim a casa é 2, grande 4 2 1 0,5 0,25
dem ais (2>1,75) 1 serve (1<1,75) 1,75
2. Atualize o núm ero decimal - 1
O núm ero decim al não é zero, 0,75
retorne ao Passo 1

1. Coloque 1 na casa mais elevada 1 0 1 ,1 0 (o valor corrente é: 5,5)


A próxim a casa é 0,5, serve (0,5<0,75) 0,75 4 2 1 0,5 0,25
2. Atualize o núm ero decimal
Decimal diferente de zero, retorne 0,25
ao Passo 1

1. Coloque 1 na casa mais elevada 1 0 1 ,1 1 (o valor corrente é: 5,75)


A próxim a casa é 1, serve 0,25=0,25) 0,25 4 2 1 0,5 0,25
2. Atualize o núm ero decimal -0 .2 5
O núm ero decim al é zero, fim 0

F ig u ra B .3 Conversão do número decimal 5,75 para binário usando o método da subtração. ◄

O m étodo alternativo do C apítulo 1, o m étodo da divisão por dois, que é usado para se
converter um núm ero decim al em um núm ero binário, pode ser adaptado para m anipular os
núm eros decim ais. Prim eiro, separam os a parte inteira da parte fracionária do núm ero e cm
separado aplicam os o m étodo da divisão por dois à parte inteira. Segundo, tom am os a parte
fracionária do núm ero e a multiplicamos por dois. Em seguida, o dígito que aparece na casa
das unidades do produto é acrescentado à casa que se encontra logo após a vírgula do núm ero
convertido. C ontinuam os m ultiplicando a parte fracionária do produto e acrescentando d íg i­
tos da casa das unidades até que a parte fracionária do produto seja 0.
P or exem plo, vam os converter o núm ero decim al 9,8125 para binário usando um a va­
riante do m étodo da divisão por dois. Prim eiro, convertem os 9 para binário, que sabem os
ser 1001. A seguir, tom am os a parte fracionária do núm ero, 0.8125, e a m ultiplicam os por 2:
0.8125*2= 1,625. O dígito na casa das unidades é 1. P ortanto, escrevem os um 1 após a vírgula
binária do núm ero convertido: 1001,1. C om o a parte fracionária do núm ero não é 0, co n ti­
nuam os a m ultiplicar a parte fracionária do produto por 2: 0,625*2= 1,25. A crescentam os um
1 ao final do nosso núm ero convertido, resultando 1001,11 e continuam os a m ultiplicar por
2: 0,25*2= 0,5. A gora, acrescentam os um 0 ao final do nosso núm ero convertido, resultando
1001,110. M u ltip licam o s por 2 m ais um a vez: 0,5*2= 1,0. A pós acrescen tar o 1 ao nosso
núm ero convertido, ficam os com 1001,1101. C om o a parte fracionária deste últim o produto
é 0, term inam os a conversão do núm ero e podem os dizer q u e 9 ,8 1 2 5 10 = 1 0 0 1 ,1 1 0 12.
Freqüentem ente, um núm ero real decim al pode requerer um a longa seqüôncia de bits de­
pois da vírgula binária para se representar o núm ero em binário. Em projeto digital, estam os ti­
picam ente lim itados a um núm ero finito de bits disponíveis para arm azenar um núm ero. Com o
resultado, pode ser necessário truncar o núm ero binário, o qual se torna um a aproxim ação.
528 Apêndice B

► B.3 ARITMÉTICA DE PONTO FIXO*


Se fixarm os a vírgula binária de um núm ero real em um a dada 1 1 1 1 1
1 0 0 1 , o 0 1 0
posição (por exem plo, após o quarto bit), poderem os adicionar ou
+ 0 0 1 1 , 1 1 1 1
subtrair núm eros reais binários tratando-os com o inteiros e efetu ­
ando norm alm ente as som as ou subtrações. N a som a ou diferença 1 1 0 1 , 0 0 0 1
resultante, conservam os a posição da vírgula binária. Por exem ­
plo, assum a que estam os trabalhando com núm eros de oito bits F ig u r a B .4 A dição de
sendo que m etade dos bits são usados para rep resen tar a parte dois núm eros de ponto
fracionária do núm ero. Sc quiserm os som ar 1001,0010 (9,125) e f,xo-
0011,1111 (3,9375), poderem os sim plesm ente som ar os dois núm eros com o se fossem intei­
ros. A som a m ostrada na Fig. B.4 pode ser convertida de volta em um núm ero real se a posi­
ção da vírgula binária na som a fo r m antida. P oderem os verificar que o cálculo está correto
-4
convertendo a som a para decim al: 1*23 + 1*22 + 0 * 2 ' + 1*2" + 0 *2“' + 0*2~2 + 0*2"’ + 1*2
= 8 + 4 + 1 + 0 .0 6 2 5 = 13.0625.
A m ultiplicação de dois núm eros tam bém é im ediata e não re­
0 1,1 0
quer que a vírgula binária tenha posição fixa. Prim eiro, m ultiplica­
X 1 1,0 1
m os os dois núm eros com o se fossem inteiros. Segundo, colocam os
0 1 1 0
um a vírgula binária no produto de m odo que a precisão do produto 0 0 0 0

seja a som a das precisões do m ultiplicando e do m ultiplicador (os 0 1 1 0


+ 0 1 1 0
dois núm eros que estão sendo m ultiplicados), exatam ente com o fa­
zem os q u an d o m ultiplicam os dois núm eros decim ais. A Fig. B.5 0 1 0 0 , ,1 1 1 0
m ostra com o poderíam os m ultiplicar os núm eros 01,10 (1,5) e 11,01
F ig u ra B .5 M ultipli­
(3,25) usando o m étodo dos produtos parciais descrito na Seção 4.7.
cação de dois núm e­
A pós calcularm os o produto dos dois núm eros, colocam os um a vír­ ros de ponto fixo.
gula binária na posição apropriada. A m bos os m ultiplicador e o m ul­
tiplicador têm dois bits de precisão. Portanto, com o o produto deverá ter quatro bits de preci­
são, inserim os um a vírgula binária para refletir isso. P oderem os verificar que o cálculo está
correto convertendo o produto para decim al: 0 * 2 ' + 1*2“ + 0*2* + 0*2° + 1*2 1 + 1*2 2 +
1*2~} + 0*2~l = 4 + 0,5 + 0,25 + 0,125 = 4,875.
O exem plo anterior foi conveniente por­
que, quando som am os os produtos parciais, 1 1 1 0,1 multiplicando
X 0 1 1 1,1 m ultiplicador
nunca tivem os de so m ar quatro l s em um a
1110 1 produto parcial 1 (pp1)
coluna. A o invés disso, para tornar os cálcu ­ +11101 pp2
los m ais sim ples e para perm itir que as som as 1010111 spp1 = pp1 + pp2
de p rodutos parciais sejam im plem entad as +1 1 1 0 1 pp3
11001011 spp2= spp1 + pp3
por m eio de som adores com pletos, os quais
+11101 pp4
sim u ltan eam en te só podem so m ar três ls , 110110011 Spp3 = Spp2 + pp4
so m arem o s os p rodutos p arciais de form a +00000 pp5
increm ental e não todos de um a vez só. P or 0 1 1 0 1 1 0 0,1 1 produto = spp3 + pp5
exem plo, vam os m ultiplicar 1110,1 (14,5) por
(0 1 1 1 ,1 ) 7,5. C om o se vê na Fig. B.6, com e- *'9"™ B.6 M ultiplicação de dois números
çarem os gerando os produtos parciais com o já de Ponto fixo usando produtos parciais inter-
tínham os feito antes. N o entanto, os produtos mediários.
parciais serão som ados de im ediato resultando som as de produto parciais, denom inadas spp na
figura. No final, encontram os que o produto é 01101100,11, correspondendo à resposta correta
108,75. Em vez de usar as som as interm ediárias de produtos parciais, talvez você queira tentar
som ar os cinco produtos parciais de um a vez só para ver porque esse m étodo é útil.

* N. do T: Cabo alertar que o correto seria aritmética de vírgula fixa. No entanto, como a expressão “aritmética de ponto fixo’*já
está consagrada, ela será mantida. Deve-se ao fato de que há países nos quais, no lugar da vírgula, usa-se o ponto.
Apêndice B 529

A ntes de tratarm os da divisão dos núm eros reais binários, vam os introduzir a divisão dos
núm eros inteiros binários, a qual não foi discutida nos capítulos anteriores.
Para div id ir dois núm eros binários, podem os
usar o processo fam iliar de efetu ar divisões. Por dividendo
exem plo, co n sid ere a divisão binária de 101100 1 0 1 1 0 0 1 0 divisor
1 0 1 1 0 quociente
(44) por 10 (2). O cálculo com pleto está m ostrado -= i-° Í
na Fig. B .7. O bserve com o o procedim ento e exa­ 0 1
tam ente igual ao da divisão decim al, exceto que -0 0
agora os núm eros são binários. 0 1 1
A ssim com o a m ultiplicação, a divisão de nú­ -1 0
-------- T
m eros reais binários tam bém não requer que a vír­ 1 0
gula binária seja fixa. No entanto, para sim plificar
-= !± t
o cálculo, deslocam os as vírgulas binárias do divi­ 0 0
dendo e do divisor até que o divisor não lenha m ais -0 0
uma parle fracionária. Por exem plo, considere a d i­
0 resto
visão de 1 ,012 (1,25) por 0 , 12 (0,5). O divisor 0 ,1 2
tem um dígito na sua parte fracionária. Portanto, F ig u r a B .7 D ivisão de dois núm eros
deslocam os as vírgulas binárias do dividendo c do de ponto fixo usando o algoritm o da
divisor de um a casa, m udando o nosso problem a divisão.
para 1 0 ,12 dividido por 12. A gora, tratarem os os núm eros com o inteiros (ignorando a vírgula
binária) e poderem os dividi-los usando o procedim ento de divisão. T rivialm ente, 1012/ 1 2 é
1012. A seguir, colocam os a vírgula binária de volta onde ela estava no dividendo, dando-nos
a resposta 1 0 ,12 ou 2,5.
Por que o deslocam ento da vírgula binária não altera a resposta? E m geral, d eslo car a
vírgula um a casa é o m esm o que m ultiplicar o núm ero pela sua base. N o caso de núm eros
binários, o deslocam ento da vírgula binária é equivalente a m ultiplicar o núm ero por dois. A
divisão de dois núm eros dá a razão dos núm eros entre si. M ultiplicar os dois núm eros pelo
m esm o núm ero (deslocando a vírgula binária) não afetará essa razão, já que isso é equiva­
lente a m ultiplicar a razão por I .
O s núm eros de ponto fixo são sim ples de serem m anipulados, m as são lim itados pelo
intervalo de valores que eles podem representar. Para um núm ero fixo de bits, o aum ento da
precisão de um núm ero dá-se às custas do intervalo de núm eros inteiros que poderem os usar
e vice-versa. O s núm eros de ponto fixo são adequados a um a variedade de aplicações, tais
com o term ôm etros digitais. E ntretanto, as aplicações m ais exigentes precisam de m ais flexi­
bilidade e intervalo m aiores para representar os núm eros reais.

► B.4 REPRESENTAÇÃO EM PONTO FLUTUANTE*


Q uando trabalham os com núm eros decim ais, frequentem ente representam os núm eros m uito
pequenos ou m uito grandes usando a notação científica. Em vez de escrever um googol** com o
um I seguido de cem 0s, poderem os escrever 1,0*10 100. Em vez de 299.792.458 m/s, p ode­
ríam os escrever a velocidade da luz com o 3,0* 10 S m /s, ou 2,998* 10 \ ou m esm o 299,8* 106.
Se tal notação pudesse ser convertida em binário, poderíam os arm azenar um intervalo
m uito m aior de núm eros do que se a vírgula binária fosse fixa. Q uais características dessa
notação precisariam ser incluídas em um a representação binária ?

* N. dc T: Aplica-se aqui a mesma observação feita anteriormente cm relação à "aritmética de ponto fixo”.
** N. de T: O matemático fidward Kasner popularizou o termo googol em seu livro Maiheniütics and lmagination de 1940. Ori­
ginalmente essa palavra tinha sido cunhada pelo seu sobrinho de nove anos. fim 1968, na tradução brasileira do livro, o termo
googol aparece traduzido como gugol.
530 Apêndice B

P rim eiro, a com b in ação , ch am ad a de mantissa (ou


+ 3,0 * 108
significando ), das parles inteira e fracionária do núm ero
seria m u ltip licad a p o r um a p o tên cia de 10, co m o está
m ostrado na Fig. B.8. N ão p recisarem o s arm azen ar a
expoente
/ \ \ \
sinal mantissa base
parte inteira do núm ero se nos assegurarm os de que o nú­
Figura B.8 Partes de um número
m ero está em um determ inado form ato. D izem os que um
em notação científica.
núm ero escrito em notação científica está normalizado se
a parte inteira do núm ero for m aior do que zero e m enor do que a base. Nos exem plos anterio-
res envolvendo a velocidade da luz, 3.010' e 2,998*10' estão norm alizados porque 3 e 2 são
m aiores do que zero, respectivam ente, m as inferiores a 10. O núm ero 299,8*10 6, por outro
lado, não está norm alizado. Se um núm ero real binário estiver norm alizado, então a parte in­
teira da m antissa só pode ser um 1. Para econom izar bits, podem os assum ir que a parte inteira
da m antissa é 1 e arm azenar apenas a parte fracionária.
Segundo, a especificação da base (algum as vezes cham adas de raiz) c do expoente pelo
qual a m antissa seria m ultiplicada, com o está m ostrado na Fig. B.8. N ão 6 por acaso que a
base será 10 - esse núm ero c o m esm o da base do núm ero inteiro. Em binário, naturalm ente,
a base será 2. S abendo disso, não precisam os arm azenar o 2. Podem os sim plesm ente assum ir
que 2 é a base e arm azenar o expoente.
Terceiro, precisaríam os obter o sinal do número.

0 padrão IEEE 754-1985


O p ad rão 75 4 -1 9 8 5 d o Instituto o f E lectrical and E le c tro n ic E n g in e e rs (IE E E ) e sp e c ific a
um a fo rm a d e se re p re se n ta r os três v alo res d e sc rito s acim a na fo rm a de n ú m ero s b in á ­
rio s d e 32 ou 6 4 b its, re fe rid o s c o m o se n d o de p re c isã o sim p le s ou d u p la , re sp e c tiv a ­
m ente. E m b o ra h aja o u tras fo rm a s d e se re p re se n ta r n ú m e ro s reais, o p ad rão IE E E é de
lo n g e o m ais a m p la m e n te u sad o . R e fe rim o -n o s a e sse s n ú m e ro s c o m o se n d o d e ponto
flu tu a n te*.
O bit d e sinal será 0 se o n ú ­
bit 31 30 29 • • • 24 23 22 21 • • * 1 0
m e ro fo r p o sitiv o e se rá 1 se o
n ú m e ro fo r n e g ativ o . O s b its da sinal expoente mantissa
m a n tissa são os bits d a p a rte fra­ Figura B.9 Disposição dos bits em um número de ponto
c io n á ria d a m a n tis sa d o n ú m ero flutuante de 32 bits.
o rig in al. P o r ex em p lo , se a m an tissa fo r 1 ,1 0 1 1 , irem o s a rm a z e n a r 1011 seg u id o de 19
zeros nos bits 22 a 0. C o m o p arte d o padrão , so m am o s 127 ao ex p o en te q u e arm azen am o s
n o s bits d e ex p o en te. P o rta n to , se o e x p o e n te de um n ú m e ro d e p o n to flu tu a n te fo r 3,
irem os a rm a z e n a r 130 nos bits de expoente. Se o ex p o e n te fosse - 3 0 , iríam o s arm a ze n a r
97 nos bits d e ex p o en te. O núm ero assim a ju sta d o é c h a m a d o ex p o en te a ju stad o (biased
exponent). B its d e e x p o e n te c o n te n d o só Os ou só l s têm sig n ific a d o s e sp e c ia is e não
podem ser usados. S ob essas c o n d içõ es, o in terv alo d e ex p o en tes aju stad o s 6 de 1 a 254,
sig n ific a n d o q u e o in terv alo d e e x p o e n te s n ão a ju sta d o s é d e - 1 2 6 a 127. P o r q u e não
arm azen am o s sim p le sm e n te o e x p o e n te na form a de um n ú m ero com sinal, em c o m p le ­
m ento de d o is (d iscu tid o na S eção 4 .8 )? P orque, com o aju ste d e ex p o en tes, circu ito s m ais
sim p les resu ltam para c o m p a ra r as m ag n itu d es (v alo res a b so lu to s ou m ó d u lo s) d o s d o is
n ú m ero s d e p onto flutuante.
Q uando os conteúdos dos bits do expoente são uniform es, o padrão IEEE define certos
valores especiais. vSe os bits dos expoentes forem só Os, ocorrerão duas possibilidades:

* N . d e T : P e la s m e s m a s ra z õ e s v ista s a n te rio rm e n te p a ra se u s a r a e x p re s s ã o “ p o n to fix o ” , a q u i d iz e m o s “ p o n to flu tu a n te ” e n ão


“ v írg u la flu tu a n te ” .
Apêndice B 531

1. Q uando os bits da m antissa são só Os, então o núm ero todo é zero.
2. Q uando os bits da m antissa são diferentes de zero, então o núm ero não está norm ali­
zado. Isto é, a parte inteira da m antissa é o zero binário e não a unidade (por exem plo,
0 , 1011).
Se os bits dos expoentes forem só ls , ocorrerão duas possibilidades:

1. Q uando os bits da m antissa são só Os, então o núm ero com pleto é + ou - infinito,
dependendo do bit de sinal.

2. Q uando os bits da m antissa são diferentes de zero, então o “ núm ero” todo é classifi­
cado com o sendo um “ não núm ero” (N aN , not a number).

Tam bém há classes especificas de N aN s, que estão além dos objetivos deste apêndice e
que são usadas em com putações envolvendo NaNs.
C o m essas in fo rm açõ es, p o d em o s co n v erter n ú m ero s reais d e c im a is em n ú m ero s de
p o n to flutuante. A ssu m in d o -se q ue o núm ero d ecim al a se r co n v ertid o não é um d o s va­
lores esp eciais da notação de p onto flutuante, a T abela B.2 descrev e co m o realizar a c o n ­
versão.

T A B E LA B .2 Método de conversão de números reais decimais para ponto flutuante


Passo D e scriçã o

1 Converta o número da base 10 para a base 2. Use o método descrito na Seção B.2.

2 Converta o número para a notação científica Inicialmente multiplique o número por


normalizada. 2°. Ajuste a vírgula binária e o expoente
de modo que a parte inteira do número
seja 12.

3 Preencha os cam pos de bits. Preencha adequadamente usando os bits


de sinal, expoente ajustado e mantissa.

► E X E M P L O B .2 C o n v e rs ã o d e n ú m e r o s r e a is d e c im a is p a ra p o n to f lu t u a n t e

Converta os seguintes números da forma decimal para ponto flutuante de 32 bits, segundo o pa­
drão IEEE 754?9,5, infinito e -52406,25 * 10~2.
Vamos seguir o procedimento da Tabela B.2 para converter 9.5 para ponto flutuante. No passo
l , convertemos 9,5 para binário. Usando o método da subtração, encontramos que 9,5 é ÍOOI, l em
binário. De acordo com o passo 2, para converter o número para notação científica, multiplicamos
o número por 2° resultando 1001,1 * 2° (por questões de legibilidade, escrevemos a parte 2" na
base 10). Para norm alizar o número, devemos deslocar a vírgula binária de três casas. Para não
alterar o valor do número após o deslocamento da vírgula binária, mudamos o expoente da base 2
para 3. Depois do passo 2, o nosso número torna-se 1,0011 * 23.
No passo 3, colocamos tudo junto na sequência de bits com formato adequado. O bit de sinal
é 0, indicando um número positivo. Os bits de expoente são 3+127=130 (precisam os ajustar o
expoente) em binário e os bits da mantissas são 00112, que é a parte fracionária dela. Lembre-se de
que o 1 à esquerda da vírgula binária está implícito já que o número foi normalizado. O número
adequadamente codificado está mostrado na Fig. B. 10.
Agora, vamos converter infinito em um número de ponto flutuante. Como infinito é um valor
especial, não poderemos empregar o método que usamos na conversão de 9,5 para ponto flutuante.
Em vez disso, preencheremos os campos de bits com valores especiais para indicar que o número
é infinito. Da discussão anterior sobre valores especiais, sabem os que todos os bits do expoente
532 Apêndice B

devem ser ls e todos os da mantissa Passo 1: Converta para binário


devem ser 0s porque o infinito é po­ 9,5io <=> 1001,12
sitivo. Portanto, o número de ponto
flutuante equivalente <5 0 11111111 Passo 2: Converta para a notação científica normalizada
00000000000000000000000. 1001,1 <=> 1001,1 * 2^ <=> 1,0011 * 2^
U sando o m étodo da Tabela
B.2, a conversão de -524 0 6 .2 5 *
Para normalizar, m ova a vírgula
10 "para ponto flutuante é imediata.
binária 3 dígitos à esquerda e so m e 3 ao expoente
No passo 1, convertem os o número
para binário. L em bre-se de que, Passo 3: Preencha os cam pos de bits
para representar o sinal do número,
usam os um único bit e não usamos
a representação em com plem ento
de dois. Assim, precisam os apenas 10000010 00110000000000000000000
converter 52406,25 * 10 “ para biná­ sinal expoente mantissa
rio e determ inar o bit de sinal para (ajustado)
indicar que o número é negativo. O F ig u ra B .1 0 Representação de 9,5 como um número de
número 52406,25 * 10" é o mesmo ponto flutuante de 32 bits, tendo prim eiro os bits mais
que 524,0625. U sando os métodos significativos.
da subtração ou da divisão por dois,
,-4
sabemos que 524 é 1000001100 em binário. A parte fracionária, 0,0625 é 2 ‘ convenientemente.
Assim, 524,0625 é 1000001100,0001 em binário. No passo 2, escrevemos o número em notação
científica: 1000001100,0001 * 2°. Para também normalizar o número, devemos deslocar a vírgula
binária 9 posições à esquerda e com pensar esse deslocam ento no expoente: 1,0000011000001 *
29. Finalmente, com binam os o sinal (que é 1 porque o número original é negativo), o expoente
ajustado (9+27=136) e a parte fracionária da mantissa, formando o número de ponto flutuante: 1
10001000 00000110000010000000000.

► E X E M P L O B .3 C o n v e rs ã o d e n ú m e r o s d e p o n to f lu t u a n t e e m n ú m e r o s d e c im a is

Converta o número 11001011101010100000000000000000 da forma de ponto flutuante IEEE


754 de 32 bits para a decimal.
Para efetuar essa conversão, decompomos primeiro o número em suas parles de sinal, expo­
ente e mantissa: 1 10010111 01010100000000000000000. Imediatamente, podemos ver que o
bit de sinal do número é negativo.
A seguir, convertemos o expoente de 8 bits e a mantissa de 23 bits de binário para decimal. En­
contramos que 10010111 é 151. Para reverter o ajuste de expoente, subtraímos 127 de 151, dando
um expoente sem ajuste de 24. Lembre-se de que a mantissa é o padrão de bits que representa a sua
parte fracionária e está armazenada sem o 1 inicial da parte inteira da mantissa (assumindo que o
número original estava normalizado). Restaurando o I e acrescentando uma vírgula binária obtemos
o número 1,01010100000000000000000, que é o mesmo número 1,010101. Aplicando pesos aos
dígitos, vemos que 1,010101 = 1*2“ + 0*2"' + 1*2‘2 + 0*2~J + l*2‘4 + 0*2‘5+ 1*2* = 1,328125.
Com a obtenção do sinal, do expoente e da mantissa originais, poderemos com biná-los em
um único número: 1,327125 * 224. Realizando as multiplicações, obtem os -22.265.462,784 que é
equivalente a -2,2265462784 * 107. ◄
Apêndice B 533

O fo rm a to d o s n ú m e ro s de b it 63 62 61 • • • 53 52 51 50 • • • 1 0
p o n to flu tu a n te co m p re c isã o d u ­
sinal expoente mantissa
p la (6 4 b its) é se m e lh a n te , ten d o
três c a m p o s c o m n ú m e ro s d e fi­ F ig u ra B.11 Disposição de bits em um número de ponto
n id o s d e bits. O p rim e iro , o m ais flutuante de 64 bits.
sig n ificativ o , re p re sen ta o sinal d o núm ero. O s p ró x im o s 11 b its co n têm o ex p o e n te a ju s­
tado e o s d em ais 52 bits são a p a rte fra c io n á ria da m an tissa. A lém d isso , ao invés de 127,
so m a m o s 1023 ao e x p o e n te p a ra fo rm a r o e x p o e n te a ju sta d o . E ssa c o n fig u ra ç ã o e stá
ilu strad a na Fig. B. 1 1.

Aritmética de ponto flutuante


A aritm ética de ponto flutuante está além dos objetivos deste livro, m as darem os um a breve
visão do conceito.
A ad iç ã o e a su b tração em p onto flu tu an te d ev em se r e fe tu a d a s alinhando-se p rim eiro
os dois nú m ero s de p onto flu tu an te de m o d o q u e se u s e x p o e n te s sejam iguais. P o r ex e m ­
plo, c o n sid e re a som a d o s d o is n ú m ero s d e c im a is 2 .5 2 * 1 0 “ + 1 ,4 4 * IO4. C o m o os e x p o ­
en tes são d ife re n te s, p o d em o s m u d ar 2 ,5 2 * 1 0 2 para 0 ,0 2 5 2 * 1 04. S o m an d o 0.0252*10* e
1,44*104 o b tém -se a resp o sta 1,4652*104. D e m odo sem elh an te, p o d e ría m o s te r m udado
1,44*10 4 p a ra 144*10 2. S o m an d o 144*10“ e 2 ,5 2 * 1 0 “, o b te ría m o s a so m a 146,52*10 2,
q u e é o m esm o n ú m ero q u e o b tiv e m o s na p rim e ira vez. U m a situ a ç ã o a n á lo g a o c o rre
q u a n d o tra b a lh a m o s com n ú m ero s de p o n to flu tu a n te. T ip ic a m e n te , an tes de so m a r ou
su b tra ir as m a n tissa s (com os ls im p lícito s re c u p e ra d o s), o h a rd w a re q u e realiza a a rit­
m ética d e p o n to flu tu a n te, referid o fre q u e n te m e n te co m o unidade de ponto flu tu a n te .
aju sta rá a m a n tissa d o n ú m ero p ara o m en o r e x p o e n te e p re se rv a rá o e x p o e n te com um .
A n tes d e realizar a ad iç ã o ou a su b tra ç ã o , o b se rv e q u e os e x p o e n te s d o s d o is n ú m ero s
são co m p arad o s. E ssa co m p aração é facilitad a q u a n d o são u sad o s bit d e sin al e ex p o e n te
aju stad o . E ssa facilid ad e não o c o rre q u a n d o o e x p o e n te é re p re sen ta d o na fo rm a de c o m ­
p lem en to de 2.
A m u ltip lic a ç ão e a su b tração em p o n to flu tu a n te não req u erem esse alin h am en to .
C om o na m u ltip licação e d ivisão decim ais de núm eros em notação cien tífica, dep en d en d o
da o p eração , m u ltip licam o s ou d iv id im o s as m antissas e so m am o s ou su b traím o s os dois
expoentes. Q u an d o m u ltip licam o s, som am o s ex p o en tes. P o r ex em p lo , vam os m u ltip licar
6 .4 4 * 1 0 ' por 5 ,0 * 1 0 \ A o invés de fazer 6 4 .4 0 0 .0 0 0 vezes 0.005, m u ltip licarem o s as duas
m an tissas c so m arem o s os ex p o en tes. A ssim , 6 ,4 4 * 5 ,0 é 32,2 e 7 + (-3 ) é 4, resu ltan d o a
re sp o sta 32,2*10*. Q u an d o d iv id im o s, o ex p o e n te d o d iv iso r é su b traíd o do ex p o en te do
div id en d o . P or ex em p lo , vam os d iv id ir 3 1 ,5 * 1 0 4 (d iv id en d o ) por 2 ,0 * 1 0 12 (d iv iso r). A
d iv isão de 31,5 por 2,0 dá 15,75. Q uando o ex p o e n te d o d iv iso r é su b traíd o do ex p o en te
do d iv id en d o , o b tem o s - 4 - ( - 1 2 ) = 8 . A ssim , a re p o sta é 15.75* 10 S. A d iv isão em ponto
flutuante atribui resu ltad o s para d iversos caso s lim ites, com o o da d iv isão por 0. que c o r­
resp o n d e a infinito positivo ou negativo, d ep en d en d o do sinal do divid en d o . A d iv isão de
um núm ero d iferen te de zero p o r infinito é d efin id a com o sen d o 0. Em caso co n trário , essa
divisão será um N aN .
534 Apêndice B

B.5 EXERCÍCIOS

SEÇÃO B.2: REPRESENTAÇÃO DE NÚMEROS REAIS


1. Converta os seguintes números de decimal para binário:
(a) I,5
(b) 3,125
(C ) 8,25
(d) 7,75
2. Converta os seguintes números de decimal para binário:
(a) 9.375
(b) 2.4375
(c) 5,65625
(d) 15,5703125

SEÇÃO B.3: ARITMÉTICA DE PONTO FIXO


3. Some os seguintes dois números binários sem sinal usando a adição binária e convertendo o resul­
tado para decimal:
(a) 10111,001 + 1010,110
(b) 01101,100 + 10100,101
(c) 10110,1 + 110,011
(d) 1101,111 + 10011,0111

SEÇÃO B.4: REPRESENTAÇÃO EM PONTO FLUTUANTE


4. Converta os seguintes números decimais para ponto flutuante de 32 bits:
(a) -50.208
(b) 42.427523 * 10*
(c) -24.551.152* IO-1
(d) 0
5. Converta os seguintes números em ponto flutuante de 32 bits para decimal:
(a) 01001100010110110101100001011000
(b) 01001100010110110101001000000000
(c) 01111111111000110000000000000000
(d) 01001101000110101000101000000000
Exemplo Estendido de
Projeto RTL

► C.1 INTRODUÇÃO
N o C apítulo 5, realizam os o projeto R TL de um a m áquina para fo rn ecer refrigerantes. C o ­
m eçam os com um a m áquina d e estados de alto nível, criam os um a estru tu ra para o bloco
operacional e então descrevem os o bloco de co n tro le por m eio de um a m áquina de estados.
N ão aprofundam os o projeto do bloco de controle até o nível de estru tu ra p o rque isso seria
assunto do C apítulo 3. N ão queríam os esten d er a discussão sobre projeto R TL daquele cap í­
tulo com detalhes dem asiados do m aterial já estudado antes. N este apêndice, com pletarem os
0 projeto RTL com o desenvolvim ento da FSM do bloco de controle até o nível de portas e
reg istrad o r de estado, resultando assim a im p lem en tação de um p ro cessad o r cu sto m izad o
com pleto com bloco de controle e bloco operacional. Final m ente, analisarem os o com porta­
m ento da im plem entação com pleta. O propósito desta dem onstração de um projeto com pleto
é d ar ao leitor um en ten d im en to claro de co m o o bloco de controle e o bloco operacional
trabalham juntos.
O sím b o lo de d iag ram a de blocos para o p ro cessad o r da m áq u in a de fo rn ecer re frig e ­
rante aparece n a Fig. C. 1. L em bre-se de que a m áquina de fo rn ecer refrig eran te têm as três
entradas c, s e a. A en trad a de oito bits s rep resen ta o cu sto de cad a g arrafa de refrigerante.
Q uando um a m oeda é inserida, a entrada c de um bit torna-se
1 durante um ciclo de relógio. A lém disso, o valor na en trad a
de oito bits a indica qual é o valor da m oeda que foi inserida.
A m áquina de fornecer refrigerante tem um a saíd a d, a qual é Processador
usada para indicar quando se deve fo rn ecer um refrig eran te. da m áquina
D epois que o valor de m oedas inseridas na m áquina se torna de fornecer
m aior ou igual a s, a saída d de um bit torna-se 1 durante um refrigerante
ciclo. A m áquina não fornece troco. F ig u r a C.1 Sím bolo para
N o C ap ítu lo 5, d esenvolvem os a m áquina d e estad o s de diagrama de blocos de uma
alto nível v ista na F ig. C .2. D epois, d eco m p u sem o s a m á­ máquina de fornecer refri­
q u in a de estad o s de alto nível em um bloco de co n tro le (re­ gerante.
presentado co m p o rtam en talm en te co m o um a F S M ) e em um
bloco o p eracio n al, m ostrados na Fig. C .3. O bloco op eracio n al su p o rta as o p eraçõ es que
envolvem dados e q ue são necessárias à m áquina de estados de alto nível. E stão inclu íd as a
operação para zerar o valo r de tot ( tot=0 no estado Início ), a co m p aração para d eterm in ar se
tot é m en o r do que s (para as transições do estad o Esperar) e a op eração para so m ar tot com
536 Apêndice C

a (no estad o S o m a r ) . A FSM d o bloco d e c o n ­ Entradas: c (bits), a (8 bits), s (8 bits)


trole é sim ilar à m áquina de estados de alto nível. Saídas: d (bit)
E la foi m od ificad a p ara p o d er c o n tro la r o bloco Registradores locais: tot (8 bits)
o p eracio n al e a c e ita r um a en trad a d e co n d ição
vinda d o bloco operacional (isto é, t o t j t j s )* em
vez de realizar diretam en te as operações com os
dados. O s blocos d e controle e operacional estão
m ostrados na Fig. C.3.

Máquina de estado de alto nível


F ig u ra C.2
para a máquina de fornecer refrigerante.

Máquina de fornecer refrigerante: (a) bloco de controle (descrito de forma comportamental) e (b)
F ig u ra C.3
bloco operacional (estrutura).

► C.2 PROJETANDO 0 BLOCO DE CONTROLE DA MAQUINA DE FORNECER


REFRIGERANTES
U sando o processo de cinco passos para o projeto de blocos de controles, que foi introduzido
no C apítulo 3, poderem os com pletar o projeto do bloco de controle. O s cinco passos são:

Capture a FSM. A FSM do bloco de controle da


m áquina de fornecer refrigerante foi criada d u ­
rante o passo 4 do m étodo de projeto RTL. A FSM
do bloco de controle está m ostrada na Fig. C.3(a).

Capture a arquitetura. C om o foi indicado pela


FSM do bloco de controle, a arquitetura da m á­
quina de estados requer no mínim o duas entradas
(c e to t_ l t_ s ) e três saídas (d, to t_ l d e to t_ c l r).
Além disso, usaremos dois bits para representar os
estados do bloco de controle. Assim , acrescenta­
rem os mais duas entradas (o estado atual slsO ) e
mais duas saídas (o próximo estado nlnO) à arquite­
tura do bloco de controle. A arquitetura do bloco de F ig u r a C.4A rquitetura padrão para o
controle correspondente está mostrada na Fig. C.4. bloco de controle da máquina de fornecer
refrigerante.

* N. de T: Relembramos que o lt na expressão t o t _ l t _ s significa less than (menor do que).


Apêndice C 537

Codifique os estados. U m a codificação im ediata para os quatro estados da m áquina de forne­


cer refrigerantes d: Início : 00, Esperar. 01, Somar 10 e Fornecer. 11.

Crie a tabela de estados. Da arquitetura do bloco de controle, que projetam os em um passo


anterior, sabem os que a tabela de estados deve ter quatro entradas (c, t o t _ l t__s, s l e s0 ) e
cinco saídas (c, t o t _ l d , to t _ c l r , n l e n0). Com 4 entradas, a tabela de estad o s terá 2 =16
linhas (Fig. C.5).

Entradas Saídas
s1 sO c tot_lt_s d to t jd tot_clr n1 nO
0 0 0 0 0 0 1 0 1

.O 0 0 0 1 0 0 1 0 1
.O
c 0 0 1 0 0 0 1 0 1
0 0 1 1 0 0 1 0 1
c. 0 1 0 0 0 0 0 1 1
5 0 1 0 1 0 0 0 0 1
Q)
& 0 1 1 0 0 0 0 1 0
Uj
0 1 1 1 0 0 0 1 0
1 0 0 0 0 1 0 0 1
co 1 0 0 1 0 1 0 0 1
E
<2 1 0 1 0 0 1 0 0 1

1 0 1 1 0 1 0 0 1

1 1 0 0 1 0 0 0 0
Q>
O
Q)
1 1 0 1 1 0 0 0 0
S 1 1 1 0 1 0 0 0 0
,o
u.
1 1 1 1 1 0 0 0 0

Figura C.5 Tabela de estados do bloco de controle da máquina de fornecer refrigerantes.

E x am in an d o as saíd as que foram e sp ec ific a d a s na Entradas: c, tot_lt_s (bit)


FvSM do bloco de controle, a qual convenientem ente Saídas: d, to tjd , tot_clr (bit)
está repetida na Fig. C .6, preenchem os as colunas cor­ c
respondentes d, 1o t_ l d e to t_ c l r da tabela de estados.
Na Fig. C .6, por exem plo, quando a FvSM do bloco de d=0
controle está no estado Início , vem os que d=0 e t o t _ tot_ld=1
cl r= l ao passo que t o t _ l d é 0 im plicitam ente. A ssim , s
nas linhas da tabela de estad o s co rresp o n d en tes ao
estado Início - csp ccificam ente, nas quatro linhas em
que sls0 = 0 0 , j á que “00” foi esco lh id o por nós para
ser o código do estado Início - colocam os 0 em toda a
coluna d, 1 na coluna to t_ c l r e O n a coluna to t _ l d. Figura C.6 FSM do bloco de con­
C om base nas tran siçõ es especificad as na FSM trole da máquina de fornecer refrige­
do bloco de controle e nos códigos de estado, que e s­ rantes com os códigos dos estados.
colhem os em um passo anterior, irem os p reencher as
colunas n l e n0 de próxim o estado. P or exem plo, con sid ere o estado Esperar. C om o está
indicado na Fig. C .6, a FSM realizará um a transição para o estado Somar se c = l. A ssim ,
nas linhas em que sls0 c= 0 1 1 (sls0 = 0 1 corresponde ao estado Esperar ), farem os a coluna
n l ser 1 e a colu n a n0 ser 0 (nln0= 10 corresp o n d e ao estado Somar). Q uando c=0, a FSM
realizará um a transição para o estado Fornecer se t o t _ l t _ s = 0 ou perm anecerá no estado
Esperar se t o t _ l t_ s = l. N a tabela de estados, representam os a transição de Esperar para
538 Apêndice C

Fornecer fazendo n l ser 1 e nO ser 1 (Fornecer) na linha em que tem os sls0 = 0 1 (Esperar),
c=0 e to t _ lt _ s = 0 . De m odo sem elhante, para representar a transição que sai de Esperar e
retorna a Esperar, escreverem os nln0=01 na linha em q u e s ls 0 = 0 1 , c=0 c t o t _ l t_ s = l. A
seguir, de form a sem elhante, exam inam os as dem ais transições preenchendo as colunas com
valores apropriados para n l e nO até que todas as transições tenham sido exam inadas. A tabela
de estados com pleta está m ostrada na Fig. C.5.

Implemente a lógica combinacionaL Para cada um a das saíd as da tabela de estados, e s­


crevem os a correspondente equação booleana. Da tabela de estados, obtem os as seguintes
equações:
d = slsO
t o t _ l d = slsO'
to t_ c lr = s l's 0 ‘
n l = s l ' s O c ' t o t l t s ‘ + sl'sOc

nO = s l's O ' + s l ' sOc1 + slsO


nO = sO1 + sl ' sOc'
G slsO
Observe que as quatro prim eiras equações obtidas da tabela
0\ 00 01 11 10
de estados já estão m inim izadas. A quinta equação, correspon­
dente a nO, pode ser m inim izada para sO' + s 1' sOc' por meio 0 0
a
de m étodos algébricos ou usando um mapa K, com o m ostrado
1
na Fig. C.7. O s m apas K foram discutidos na Seção 6.2. j h _
U sando as técnicas discutidas no C apítulo 2, convertem os sVsOc' sO'
as equações booleanas anteriores em um circuito equivalente
F ig u r a C.7 M apa K para a
de dois níveis baseado em portas. Essa conversão é im ediata
equação inicial de nO.
porque as equações booleanas que estam os convertendo já se
encontram na form a de som a de produtos. O circuito sequencial final do bloco de controle e o
bloco operacional da m áquina de fornecer refrigerante estão m ostrados na Fig. C.8.

Lógica combinacional '8

1
ld
tot
clr <

8 bit
1 1 f
Som ador
< de 8 bits
'8
Bloco operacional

F ig u ra C.8Implementação final do bloco de controle da Fig. C.3(a) com o bloco operacional da máquina de
fornecer refrigerante.
Apêndice C 539

C.3 COMPREENDENDO O COMPORTAMENTO DOS BLOCOS DE CONTROLE E


OPERACIONAL DA MÁQUINA DE FORNECER REFRIGERANTES
N esta seção, olharem os de perto a interação entre o bloco de controle e o bloco operacional,
os quais tinham sido projetados p ara a m áquina de fornecer refrigerante, constituindo um a
im plem entação funcional da nossa m áquina de estados inicial de alto nível.
A Fig. C.9 ilustra o com portam ento dos blocos de controle e operacional da m áquina de
fornecer refrigerante e com o a m áquina com porta-se quando um a pessoa insere um a m oeda
de 25 centavos no sistem a. O s cinco ciclos de relógio m ostrados na figura são indicados por
1 a 5. Vamos assum ir que o custo de um refrigerante é 60 centavos e que, durante o prim eiro
ciclo de relógio, o bloco de controle da m áquina de fo rn ecer refrig eran te estará no estado
Início. Vamos exam inar o que ocorre em cada ciclo de relógio:
• Inicialm entc, durante o ciclo de relógio 1, o bloco de controle está no estado Início , com o
se m ostra na Fig. C .9(b). Q uando está nesse estado Início , o bloco de controle faz d ser
0, t o t _ l d ser 0 e to t _ c l r ser 1. A lem disso, o bloco de controle faz os sinais de próxim o
estado nlnO serem iguais a 01, correspondendo ao estado Esperar. No bloco operacional,
os valores de tot e tot+a são desconhecidos, estando indicados por O bserve que,
em bora o bloco de controle tenha feito t o t _ c l r ser 1 durante esse ciclo de relógio, o
registrador tot não é zerado im ediatam ente (assincronam ente). A o invés, tot será zerado
logo após o início do próxim o ciclo de relógio, um com portam ento síncrono. Finalm ente,
note que o preço do refrigerante s está ajustado para 60 centavos e, inicialm ente, os sinais
c c a de entrada de m oeda são 0 e 0, respectivam ente.

• A Fig. C.9(c) mostra a m áquina de fornecer refrigerante durante o ciclo 2. Agora, o bloco de
controle está no estado Esperar. Consequentem ente, o bloco de controle tom ará d, to t_ l d e
to t_ c l r iguais a 0. O valor de tot torna-se zero e um pouco depois os dois sinais to t_ l t_ s
e tot+a assumem um valor conhecido. O com parador do bloco operacional faz to t_ l t_ s ser
igual a 1 porque o total, 0, é m enor do que o preço do refrigerante, 60. Como agora tot e a são
conhecidos, o som ador do bloco operacional faz o sinal intermediário tot+a ser igual a 0. Os
sinais de próximo estado perm anecem sendo 01 (Esperar) porque c é 0 e to t_ l t_ s é 1.

• A Fig. C .9(d) m ostra a m áquina de fornecer refrigerante durante o ciclo 3. N esse terceiro
ciclo de relógio, o usuário insere um a m oeda de 25 centavos na m áquina. Isso será indi­
cado por c q ue se tornará 1, e por a que se tornará 25. Um pouco depois, a saída tot+a do
som ador m uda para 25, que é a som a de tot e a. C om o c é 1, o bloco de controle faz o pró­
xim o estado ser 10 (Somar). O s valores de d, t o t _ l d e to t _ c l r perm anecem os m esm os
porque o bloco de controle não m udou de estado desde o (segundo) ciclo anterior.

• D urante o ciclo 4 de relógio, m ostrado na Fig. C .9(e), o bloco de controle está no estado
Somar fazendo to t _ l d ser 1, ao passo que d e to t _ c l r são m antidos em 0. C om o já tinha
sido o caso com t o t _ c l r durante o estado Início , o registrador tot não será atualizado
senão no próxim o ciclo de relógio. F azendo nlnO ser 01 (Esperar), o bloco de controle
retornará incondicionalm cntc ao estado Esperar.

• No ciclo 5 de relógio, m ostrado na Fig. C. 10, o bloco de controle torna d, t o t _ l d e t o t _


cl r iguais a 0 porque ele está no estado Esperar. O registrador tot é carregado com o valor
de tot+a , arm azenando 25. Um pouco depois, tot+a m uda para 50 refletindo o novo valor
de tot. E ntretanto, 50 não é carregado em tot porque a carga em tot só ocorrerá de form a
síncrona na borda de subida do sinal de relógio.

O procedim ento de som a m ostrado nos ciclos 3 a 5 é repetido para cada m oeda inserida
até que m oedas suficientes tenham sido introduzidas para co b rir o custo de um refrigerante,
conform e está indicado pelo sinal de entrada s.
540 Apêndice C

Operação da máquina de fornecer refrigerante desde a inicialização até a inserção da moeda de


F ig u ra C.9
25 centavos: (a) diagrama de tempo, (b)-(e) valores dos sinais durante os ciclos 1-4 do relógio.
Apêndice C 541

Operação
F ig u r a C .10
dos blocos de controle
e operacional: ciclo 5 de
relógio da Fig. C.9(a).

A Fig. C. 11 detalha o com portam ento da m áquina de fornecer refrigerante quando o usuário
já inseriu m oedas suficientes para que ela esteja em condições de fornecer um refrigerante.
N o diagram a de tem po m ostrado na Fig. C .l l(a), repetim os o ciclo 5 de relógio da Fig.
C .9(a) para servir de referência. D urante os cem ciclos de relógio seguintes, assum im os que
o usuário insere um a m oeda de 5 centavos, seguida de outra de 25 centavos. C om o resultado,
o registrador tot contêm o valor 55 (25+5+25 centavos). Vamos exam inar o com portam ento
da m áquina de fornecer refrigerante quando o usuário insere um a m oeda de IO centavos na
m áquina:

• N a Fig. C. 11(b), correspondendo ao ciclo 100 de relógio, o bloco de controle da m áquina


de fornecer refrigerante está no estado Esperar. Se a pessoa introduzir um a m oeda de 10
centavos na m áquina, a entrada c assu m irá um nível alto durante um ciclo de relógio e
a entrada a irá se m odificar para 10, o valor da m oeda. Um pouco depois de a m udar de
valor, o sinal interm ediário tot+a m uda para 65 (55+10). C om c em nível alto, os sinais de
próxim o estado nlnO tornam -se 10 (Somar).

N o ciclo 101 de relógio, m ostrado na Fig. C .l l(c ), o bloco de controle está no estado
Somar e ativa t o t _ l d. O registrador tot não carregará o novo total senão na borda de su­
bida do próxim o ciclo de relógio. O bloco de controle incondicionalm ente faz o próxim o
estado ser 01 (Esperar).

A Fig. C. 11 (d) m ostra o status da m áquina de fornecer refrigerante no ciclo 102 de reló­
gio, no qual o bloco de controle encontra-se no estado Esperar. C om o está indicado pelas
setas na Fig. C .l l(a), o fato do sinal t o t _ l d estar ativado durante a borda de subida do
relógio fará com que o registrador tot seja carregado com o valor que está cm sua entrada,
que ê 65. Um pouco após tot ser carreg ad o com um novo valor, a saíd a t o t _ l t _ s do
com parador m uda de 1 para 0 refletindo o fato de que tot (65) não ê m enor do que s (60).
C om o o bloco de controle está no estado Esperar e com o c e t o t _ l t_ s são 0, o bloco de
controle torna os sinais de próxim o estado iguais a 11 (Fornecer). O bserve que, antes dos
sinais de próxim o estado apontarem para o estado Fornecer, o próxim o estado foi Esperar
por um breve intervalo de tem po. D ependendo do tem po necessário para que os sinais
propaguem -se através dos blocos operacional e de controle, certos sinais podem co n ter
inicialm ente valores não esperados, m as no final esses sinais acabarão se acom odando
542 Apêndice C

e assum indo os valores esperados. P oderem os evitar q u aisquer problem as associados a


esse período de incerteza se escolherm os um período de relógio que seja suficientem ente
longo. Isso perm itirá que os sinais interm ediários do nosso circuito acom odem -se em um
estado estável e perm aneçam estáveis durante tem po suficiente para atender a qualquer
tem po de setup , requerido pelos com ponentes do nosso circuito seqüencial.

• Na Fig. C. 11 (e), o bloco de controle está no estado Fornecer. Ele ativa d, indicando que
um refrigerante deve ser fornecido por algum com ponente externo. O bloco de controle
incondicional m ente fará um a transição para o estado Inicio , no qual o procedim ento de
inicialização m ostrado na Fig. C .9 é repetido (ilustrado parcialm ente no ciclo 104 de re­
lógio da Fig. C .ll( a ) ) .

Vemos que os blocos de controle e operacional trabalham ju n to s para im plem entar a m á­


quina de estados de alto nível original.
Apêndice C 543

C.11 Operação da máquina de fornecer refrigerante depois que moedas suficientes foram introduzi­
F ig u ra
das: (a) diagrama de tempo, (b)-(e) valores dos sinais durante os ciclos 100-103 do relógio.
Indice

=. 258-259 Arquitetura de carga e armazenamento. 441-442


Arquitetura padrão (para blocos de controle),
A 135
Arquivo de bits. 417-418
Abstração (em projeto RTL). 294 Arranjos (Arrays). Veja também Arranjos de portas
Adaptativo, controle de velocidade de automóvel, programáveis em campo (FPGAs)
254-255 célula, 401-402
Ajustado (biased),expoente, 530 lógico programáveis, 425-426
Álgebra(s): porta, 399-401,407
de chaveamento, 425-426.515-516 Arranjos de portas programáveis em campo (FPGAs),
de conjuntos, 522-523 395-396,406-419
de lógica, 522-523 arquitetura dos. 416-419
Álgebra booleana, 54-55,63-71,515-523 ASICs versus.419
avaliando expressões em, 64-65 blocos lógicos configuráveis com. 414-416
de chaveamento, 515-517 CPLDs versus, 425-427
literais em. 66 matrizes de chaveamento com, 412-414
operadores da. 54-55.64-65 microprocessadores versus,419
propriedades da, 66-71 programação de, 417-419
soma de produtos em. 66 SPLDs versus,425-427
teoremas em, 517-522 tabelas lookup com, 407-412
terminologia, 65-66 Arranjos lógicos programáveis (PLAs), 425-426
termos de produto e. 66 Arrays , veja Arranjos
variáveis em, 65 Árvore de somadores. 232
Algoritmos: ASCII, 27-28
exatos, 325-326 ASICs, veja Circuitos integrados específicos para
ferramenta Espresso em, 332-333 aplicação
para a redução de estados, 336-337 A S M s (máquinas algorítmicas de estado), 248-249
seleção de, 374-375 Assert (termo), 152-153
Alocação de componentes, 366-369 Atraso (em portas), 101
Alta impedância. 256-257 Atraso de saída, 230-232
Alto-falantes estereofônicos, 226-228 Atuador, 27-28
ALUs, veja Unidades de aritmética e lógica Áudio digitalizado, 22-24
Amostrador de peso (exemplo), 169-170 Aurículas (do coração), 154, 155
Amostragem. 22-23 Auto-estrada, sistema medidor de velocidade (exemplo).
Ampòres, 46-48 204-206
Amplificador sensor, 278-279 Automação
Análise de tempo. 271 -272 com o método Quine-McCIuskey, 328-330
Antecipação (em jogos de computador), 172-174 da otimização do tamanho de uma lógica de dois
Aplicação de detector de movimento no escuro, 33-37, níveis, 325-333
458
Aritmética:
B
de ponto fixo, 528-529
de ponto flutuante, 533 Balança, compensação de peso (exemplo), 189-190
Armazenamento de bits, 112. Veja também tipos espe­ Bancadas de teste, 473-477
cíficos, por exemplo: Latches SR Bancos de registradores, 221-226
Armazenamento de múltiplos bits, 125-127 de porta única. 225-226
Arquitetura, 465-466 de portas duplas. 225-226
546 índice

de portas múltiplas. 225-226 Borda de subida, flip-flops sensíveis à, 123


A/xM 221-222 Botão de chamada de aeromoça (exemplo), 124
Bardce, John, 49-50 Brattain. Walter, 49-50
Barramcnto (cm bancos de registradores), 223-224 Buffers, 223-224. 289-290
Base. 530
Base dez. 27-29
Bell, Alexander Graham. 24
c
Bell Laboratories. 49-50 C (linguagem de programação) 35-36. 271-276.406
B -fra m es ,veja Quadros previstos bidirecionais C++ (linguagem de programação), 271-272, 274-276,
BIOS (sistema básico de entra e saída), 449-450 406
Bit, 20-21 Calculadora baseada em chaves DÍP (exemplos):
Bit de sinal. 213-214 adição, 186-189
Bloco operacional. 440-442 adição/subtração, 208-210.215-216
conexão de u m bloco de controle com um, no pro­ funções múltiplas sem usar ALUs, 218
jeto RTL, 253-254 usando ALU, 220
criação de. no projeto RTL. 251 -254 Calculadoras, 217
em processadores programáveis de seis instruções, Cálculo proposicional, 522-523
453-455 Câmeras digitais, 37-39
em processadores programáveis de três instruções, Caminho crítico (em circuitos), 269-272, 335. 351
449-452 Caminhos não críticos, 378
em processadores programáveis, 440-442 C A N (co n tro lle r area n en vo rk ), 176-177
na máquina de fornecer refrigerante (exemplo). Canais (em transdutores), 226-228
538-543 Captura (passo do processo de projeto combinacional),
no medidor de distância baseado em laser (exem­ 83-85, 88
plo). 498-509 Características da implementação ortogonal, 428-429
Bloco(s) de controle, 127, 135-146, 151-156 Carga (de dados). 167
armadilhas comuns com, 144-145 ca rry-lo o ka h e a d ,veja Somador(es), com antecipação
arquitetura padrão para, 135 do bit de transporte
comportamento de. no exemplo da máquina de for­ c a rry -rip p le ,veja Somador(es). com propagação do bit
necer refrigerante. 538-543 de transporte
conexão do bloco operacional com o, no projeto ca rry -se le ct ,veja Somador(es), com seleção do bit de
RTL. 253-254 transporte
definição, 127 C e lf a rra y s .veja Arranjos, células
e implementação de FSMs, 138-139 Celsius, 191-192
em marca-passos, 154-156 Células (regiões de telefones celulares). 297-298
estado inicial de, 151-152 Células padrão (ASIC), 400-402
exemplos de projeto usando, 132-134. 136-137. Chave(s). 46-52
139-143 deslizantes (exemplo), 324-325
g liíc h e s de saída cm, 152 D u a l In lin e Package (DIP), 186-189, 420-421
lógica negativa em. 152-153 e circuitos integrados, 49-51
na descrição de lógica seqiiencial, 480-484 e transistores discretos. 49-50
no exemplo do medidor de distância baseado em e válvulas termiônicas. 48-50
laser, 498-509 reiés em, 48
no módulo de LEDs, 432-435 Chave de carro segura (exemplo). 132-134, 141-142
obtenção da F S M do, 254-256 C h ip s de silício, 49-52. Veja também Circuitos integra­
processo de projeto para, 136-137.142 dos (ICs)
projeto de. no exemplo da máquina de fornecer refri­ e economia de escala, 2 17
gerante. 536-538 fabricação de, 398-399
Blocos lógicos configuráveis (CLBs) Ciclo de relógio, 118-119
como ICs programáveis. 414-416 Circuito de alerta de cinto de segurança, 405-406
grade de, em FPGAs, 416-418 Circuitos:
memória de configuração de saída em, 417-418 amplificador sensor, 278-279
Blocos SPG, 356-357 analógico, 21-22
Boneca falante (exemplo), 286-289 assíncrono, 118-119
Boole, George. 54-55 caminho crítico em. 269-272
B ooting de computadores, 449-450 combinacionais, 46,81, 101, 111
índice 547

construção usando portas, 60-63 Codificação de estados:


definição, 37-38 binária alternativa com largura de bits mínima,
digitais, 20-22. 36-38, 54-56, 230-232 341-343
divisor de relógio, 204-205 de saída, 345-346
e funções booleanas, 72 na otimização de lógica sequencial. 341-346
e simplificação da notação, 85-88 u m bit por estado. 341-345
estado dos. 111 Codificadores, 101-102
formalismos matemáticos no projeto, 145-146 Codificadores com prioridade. 470-471
integrados, veja Circuitos integrados (ICS) Código assembly,449-450
partição entre tabelas lookup,408-412 Código de máquina, 448-449
sequenciais, veja Circuitos sequenciais Código de operação, 447-448
simplificação dos desenhos de. 145-146 Comando assert,474.476-477
síncronos, 118-119 Comando de laço vvhilc, 273-274
Circuitos combi nacionais, 46. 101 Comando Sdisplay, 475
de múltiplas saídas, 81 Comando display. 475
saída de, 111 Comando downto. 476-477
Circuitos de atraso, 230-232 Comando enum, 482-483
Circuitos de atraso de eco, 231 -232 Comando ifthen, 272-273
Circuitos de soma. 231 -232 Comando ifthen else, 272-274
Circuitos geradores de áudio, 230-232 Comando SC_CTOR, 469-472
Circuitos integrados (ICs). 49-52 Comando scjno, 469
semi-customizados (ASICs), 398-406 Comando sc_outo, 469
totalmente customizados, 397-399 Comando sc_signal, 469
Circuitos integrados específicos para aplicação Comando type, 480-481
(ASICs), 325-406 Comando use, 494
arranjos de células (cell arrays).401 -402 Comando wait for, 478-479
arranjos de portas (gene arrays), 399-401 Combinando termos para eliminar uma variável, 315
células padrão (standard cells), 400-402 Comparador(es), 193-198
estruturados. 401 -402.426-427 de igualdade, 193-195
FFG As versus, 419 de magnitude, 194-197
implementação, usando apenas portas NAN1), exemplo usando, 196-198
402-404 Compartilhamento de recursos, 369
implementação, usando portas NOR, 404-406 Compensação da escala de peso (exemplo). 189-190
Circuitos sequenciais. 46. 101-102, 111, 142-143. Veja Complcmcntação, 518
também Máquinas de estados finitos (FSMs) Complemento(s), 64, 210-215. 515-516
blocos de controle, 127. 135-146, 151-156 definição, 212-213
conversão para F S M (exemplo). 142-143 existência de, 518
flip-ílops, 112-127, 145-152 único. 518
CLBs. veja Blocos lógicos configuráveis Complemento de dois, 213-215
Clear síncrono, 180-181 construção de u m subtrator usando somadores e.
Clock gating, veja Habilitação de relógio 214-217
CMY, espaço de cores, 209-212 definição, 213-214
C M Y K , espaço de cores. 210-212 detecção de estouro usando. 216-217
Cobertura (termo), 327 Complemento de um, 213-214
Codecs, 427-428 Complexidade, lidando com a (projeto RTL), 293
Codificação. 27-30 component allocation , veja Alocação de componentes
binária com largura de bits mínima, 341-343 Componente abext (extensor AL). 220
de fenômenos analógicos, 27-28 Componente cinext (extensor AL, 220
de fenômenos digitais, 27-28 Componentes de bloco operacional, 167
de Huffman, 384-387 e multiplicadores menores, tradeojf entre,
de números. 27-30 36I-364
enlrópica, 386 e somadores mais rápidos, tradeojf entre, 351-362
MPEG-2,381-384,387-388 Componentes do nível de transferência entre registra­
na otimização de lógica sequencial, 341-346 dores (RTL), 167
nm-length.384-385, 387 Comportamento não ideal (em flip-flops). 147-151
usando u m bit por estado (one-hoi), 341-345 Compressão. 23
548 índice

e computação da taxa de compressão em vídeo, Conversor de espaços de cor-RGB para C M Y K


382-386 (exemplo), 209-212
e transformação para o domínio da frequência, 382-384 Conversor de varredura, 230-231
em vídeo digital, 381-387 Conversor para termômetro digital (exemplo). 191-192
quantização em, 383-385, 387 Conversor(es):
Compressão de vídeo (exemplos): de FSMs para circuitos, veja Bloco(s) de controle
usando código em C, 271 -274 digital-analógico, 27-28
usando um sistema de soma de diferenças absolutas R G B para C M Y K (exemplo). 209-212
(vSAD), 258-262 Coração humano, 154
Computação concorrente, 372-373 C o re ,veja Núcleo
Computação serial, 372-373 Corrente (termo), 46-48
Computadores, 20-21 CPLD, veja Dispositivo lógico programável complexo
b ooting ,449-450 Cristais piezoelétricos, 226-228
com lâmpadas piscantcs, 448-449 Cristal líquido em silício (LCoS), ch ip , 110
Comunicação:
de dados, 177-178 D
sem lio, 177-178
serial, 176-177 DCT, veja Transformada co-seno discreta
Concorrência (em projeto RTL). 366-368 Dctr. veja Registradores locais
Condição de corrida, 116 D e b u g g in g ,49-50
Condutores, 52 Declaração(ões):
Configuração (em projeto RTL), 262-263 enum, 482-483
Congestionamento, 221 -222 entity, 465-466
Conjunto de instruções: process, 470-471
em processadores programáveis de seis instruções, type, 480-481
452-453 Decodifícadores, 93-95,413
em processadores programáveis de três instruções, Decrementador, 199-200
446-450 Decremento (em contadores). 197-198
Constantes, 452, 515-516 Deep Blue (computador), 172-174
Contador de programa (PC), 444-445 Demultiplexadores, 101
Contadores, 197-206 Depuração, veja D eb u g g in g
como temporizadores, 204-205 D eq u eu e ,289-290
crescentes, 197-200,489-493 Descrição de componentes do bloco operacional:
crescentes/decrescentes, 201 contadores crescentes na, 489-493
de carga paralela, 202-205 e somadores com propagação do bit de transporte
de N bits, 197-198 (c a n y -r ip p le ),486-489
decrescentes, 197-200 e somadores completos, 485-487
exemplos usando, 199-201,203-206 usando linguagens de hardware na. 485-493
Contagem terminal (saída de contador), 197-198 Descrição de lógica combi nacional:
Controle de velocidade de automóvel adaptativo, 254-255 bancadas de teste, 473-477
C o n tro lle r area netw ork (CAN), 176-177 comportamento de portas na, 470-473
Conversão(ões), 74 estrutura na, 465-470
como passo do projeto lógico combinacional. usando linguagens de hardware, 465-477
83-85.88 Descrição de lógica sequencial:
de binário para decimal. 28-29 blocos de controle na, 480-484
de circuitos para equações. 74-75 osciladores na, 478-481
de circuitos para tabelas-verdade, 76 registradores na. 476-479
de decimal para binário, 29-32 usando lineuasens de hardware na. 476-484
de equações para tabelas-verdade. 75 Desempenho (em sistemas digitais). 312-313
de qualquer base para qualquer outra base. 31 -33, Deslocadores, 189-193
76 b a r r e i 192-193
de tabelas-verdade para circuitos, 76 exemplos de uso. 191-192
de tabelas-verdade para equações. 76 simples, 190-191
entre funções booleanas, 74-76 Detecção de estouro, 215-217
Conversão de decimal para binário: Detector de código (exemplo) 132-135, 145-146
método da divisão por dois, 30-32 Deterioração, 22-23
método da subtração, 29-31 Diagrama de estados, 130
índice 549

Diagramas de tempo, 36 Engenharia reversa, 142


Digitalizadas, imagens, 24 ENIAC (computador), 49-50
Diodo emissor de luz (LED). 186-! 89,430-435 En qu eue. 289-290
DIP, veja Chave(s) Entrada(s):
Direcionamento (de som), 228-230 assíncrona, 149-152
Discos de vídeo digitais (DVDs). 379-381 ativa e m nível alto, 152
D is p la y acima do espelho retrovisor (exemplo): ativa em nível baixo, 152-153
com 16 registradores de 32 bits, 221-225 condições de, 130
com banco de registradores 16x32, 225-226 de cle a r. 150-151
com contadores crescentes. 199-200 de controle, 46-48, 166-167. Veja também Porta(s)
com registradores de carga paralela, 170-173 de dados, 166-167
com registradores deslocadores, 175-177 de fonte, 46-48. 51 -52
D is p la y de vídeo gigante. 430-435 de habilitação (ena ble ), 117
D is p la y para contagem regressiva de véspera de Ano de reset. 150-152
Novo (exemplo), 203-204 na descrição de lógica combinacional, 468-469
Dispositivo lógico programável (PLD). 422-426 síncrona, 150-152
Dispositivo lógico programável complexo (CPLD), Entradas assíncronas de reset. 151-152
425-427 Entradas assíncronas de set , 151-152
FPGAs versus. 425-427 EPROM, veja P R O M apagável
SPLDs versus. 425-427 E P R O M s programáveis no sistema, 285-286
Dispositivo lógico programável simples (SPLD). Equações, 72
422-426 Escalonamento de operadores (operator sch e d u lin g ),
CPLDs versus. 425-427 369-373
FPGAs versus ,425-427 Espresso (ferramenta heurística), 332-333
Divisor de relógio, 204-205 Esquemático, 463-464
Dois níveis, implementações de lógica de, 83 Estações de base (telefones celulares). 297-299
Dois níveis, otimização do tamanho de lógicas de, Estado(s);
314-333 de circuitos, 101-102, III, 127
automação da, 325-333
equivalência entre, 336
e combinações de entrada don 7 care, 323-325
Estado Esperar. 348
e mapas K, 316-324
Estado Fornecer, 348
usando métodos algébricos, 314-316
Estado inicial (blocos de controle), 151-152
Dois níveis, somadores com lógica de, 352-353
Estado Início. 348
D o n 7 ca re ,combinações de entrada, 323-325
Estado metaestável. 148-149
D R A M , veja Memória de acesso aleatório dinâmica
Estados equivalentes, 336
Dreno (saída), 51-52
Estágio de busca, 444-446
D r iv e r de três estados, 223-224
Estágio de decodificação, 444-446
D riv e rs . 223-224
Estágio de execução, 444-446
DSP, veja Processamento/processadores digital de si­
Estágios:
nais (DSP)
processadores programáveis, 443-447
Dualidade, princípio da, 518
registradores de p ip e lin e . 364-365
DVDs, veja Discos de vídeo digitais
Estrutura (na descrição lógica combinacional),
465-470
E Existência:
Economia de escala, 217 do complemento, 518
E D A (electronic design automation), 427-428 do elemento de identidade aditivo, 517
EEPROM, veja P R O M eletricamente apagável do elemento de identidade multiplicativo, 515-516
Electronic design automation (EDA). 427-428 Expansão (termo). 327
Elemento de identidade aditivo, 515-516 Expoente ajustado (b ia se d ),530
Elemento de identidade multiplicativo, 515-516 Extensões de desempenho (processadores programá­
Elementos de identidade. 515-516 veis). 459-460
Elementos nulos. 68 Extensões de entrada/saída (processadores programá­
Eletromagnctismo, 21-22 veis), 458
Eletrônica, 46-48 Extensões do conjunto de instruções (processadores
Endereço (para registrador), 222 programáveis), 446-447.457-458
Engenharia não recorrente (NRE). 217. 398-399 Extensor arilmético/lógico (Extensor AL). 219-220
550 índice

F FSMsMealy, 346-351
com FSMs Moore, 350-351
Fahrenheit, 191-192 exemplo usando, 349-350
Fanouty 221 -222 máquinas de estados de alto nível. 372-373
Fenômenos analógicos, codificação de, 27-28 questões envolvendo o tempo em, 349-350
Fenômenos digitais, codificação de, 27-28 FSMs Moore. 346-351
Ferramenta de captura de esquemático (uso em circui­ com FSMs Mealy, 350-351
tos). 100-101 máquinas de estados de alto nível. 372-373
FFT (transformada rápida de Fourier), 382-383
Função SHR(), 494-495
FIFO (primeiro que entra, primeiro que sai), 289-290 Função wait(), 476,480
Filas, 288-290 Função \vritc(), 473
Filas “primeiro que entra, primeiro que sai" (FIFO),
Funções booleanas, 71-83
289-290
circuitos para representar, 72
Filtragem (em processamento digital de sinais),
conversão de, 74-76
299-300 definição, 71
Filtro digital, 265-266
e circuitos combinacionais. 81
Filtros de resposta finita ao impulso (FIR), 299-302
equações para representar, 72
com habilitação de relógio {clock gating). 377-378
forma canônica, 79-81
e pipelining,365-366 tabelas-verdade para representar, 72-74, 78-79
exemplo usando, 265-268
Funções construtivas, 469-470
usando escalonamento de operadores, 370-373
Fitas cassete, 21 -23
Flip-flops, 112-127, 145-152 G
comportamento não ideal em. 147-151 G A L (lógica genérica com arranjos). 425-426
D, veja Flip-flops D Gate arrays . veja Arranjos, portas
e latches D. 118-120 Gcrador(cs):
elatches SR. 113-117 de pulso de 1 kHz (exemplo), 199-200, 203-205
e realimentação no armazenamento de bit. 112-114 de sequência (exemplo), 140-141,345-346
e registradores no armazenamento de bit, 125-128 Gerar (em somadores com propagação de bit de trans­
entradas de reset em, 150-152 porte), 356,358-359-359-360
entradas de set em, 151-152 Gigahertz (GHz), 118-119
JK, 147-148 Gigante, display de vídeo (perfil de produto), 430-435
latches versus. 123 Glitches (sinais espúrios), 116, 152
sinais de relógio em, 118-119 Google, 27-28
SR, 124, 147-148 Gravação de áudio, 21-23
T. 147-148 Gravador digital de áudio (exemplo), 281-283
Flip-flops D. 118-125
de 4 bits, 125. Veja também Registrador(es)
e latch D sensível à nível, 118-120
H
sensíveis á borda, 120-123 Habilitação (decodiflcadores), 93
Flops, 124. Veja também Flip-flops Habilitação de relógio (clock gating). 376-378
Focagem eletrônica (de som). 228-230 Habilitação, entrada. 117
Forma canônica (funções booleanas). 79-81 HDLs, veja Linguagens de descrição de hardware
Forma de onda (de entradas), 100-101 H D T V (TV de alta definição), 110
Formadores de feixe. 226-231 Hertz (Hz), 118-119
em máquinas de ultra-som. 228-232 Heurística, 325-326, 331-333
princípio do, 226-229 ferramenta Espresso em. 332-333
Formato MP3, 23 iterativa, 330
FPGAs, veja Arranjos de portas programáveis em Hierarquia (no projeto RTL), 293-296
campo Hold time . veja Tempo de hold
FrameSy veja Quadros Hz (hertz). 118-119
Frequência:
de relógio. 118-119, 267-272
ondas sonoras. 226-228
I
FSiVl não determinística, 144 IC lógico. 420-421
FSMs, veja Máquinas de estados finitos IC lógico (SSI) standard , 419-423
índice 551

ICs, veja Circuitos integrados Isoladores, 52


ICs da série 4000,421 Iteração (termo), 331
ICs da série 7400.420-423 Iterativo, melhoramento, 330
ICs da subsérie 74F.421
ICs da subsérie 74HC, 421 j
ICs da subsérie 74LS, 421
ICs semi-customizados, veja Circuitos integrados espe­ Java (linguagem de programação), 271-272. 274-276
cíficos para aplicação (ASICs) Jogos de tabuleiro computadorizados (exemplo),
ICs totalmente customizados, 397-399 171-175
I-fra m es ,veja Quadros intracodificados
Imageamento por ultra-som. 226-228 L
Imagens digitalizadas. 24
Impedância, alta, 256-257 Laço indutivo. 205-206
Implementação física, 397-436 Lâmpadas piscantcs (em computadores) 448-449
comparação de tecnologias para. 427-430 Lan cis (em DVDs). 380
de d isp la y gigante de vídeo. 430-435 Laser(s):
e tecnologias de ICs manufaturados, 397-406 em cirurgia, 127-129
e tecnologias de ICs programáveis. 406-419 no temporizador de laser ativo durante três ciclos
tecnologias alternativas para, 419-428 (exemplo), 127-129, 131-132.136-139,341-345
Implementação(ões): Laser, medidor de distância baseado em (exemplo),
como passo do projeto de lógica combinacional, 245-256
83-85. 88 bloco de controle no, 498-509
física, veja Implementação física bloco operacional no, 251-254,498-509
lógica de dois níveis. 83 conectando o bloco operacional com o bloco de con­
Implicante (termo). 327 trole no, 253-254
Implicante primo. 327 máquina de estados de alto nível no, 246-249,
Implicante primo essencial, 327-328 493-498
Impressoras. 209-212 obtendo a F S M do bloco de controle da F S M no,
Incrementador, 198-200 254-256
Incremento (contadores), 197-198 Latch D, 118-122
Indução: mestre, 121-122
finita, 522 servo, 121-122
perfeita. 5 17 Latches. 113-117, 118-120. 123
Indulância, 205-206 D sensível ao nível, 118-120
Instanciamento (em projeto RTL), 251-252 flip-flops versus , 123
Instrução armazenar, 447-450, 452 SR básico, 113-115
Instrução carregar, 446-450.452 SR sensível ao nível. 115-117
Instrução carregar constante, 452-453,455 Latência (em registradores de p ip e lin in g ), 365-366
Instruçãoju n tp i f zero, 453-455 LCoS (Cristal líquido em silício), c/tip, 110
Instrução somar, 447-450.452 LED. veja Diodo emissor de luz
Instrução subtrair. 453-455 Lei da absorção, 520
Instruções, 443-447. Veja tam bém as instruções es­ Lei da idempotência, 69. 519-520
pecíficas Lei da involução, 69, 520
aritméticas/Iógicas, 457 Lei de DeMorgan, 69,521,522
de controle de fluxo, 458 Lei de Haitz, 431
de movimentação de dados. 457 Lei de Moore, 50-52,430
Instruções mnemónicas, 448-449 Lei de Ohm, 46-48
Integração de média escala (MSI), 50-51 gerador de pulsos de 1 Hz (exemplo), 199-200.
Integração em escala muito larga (VLSI). 50-51 203-205
Integração em pequena escala, veja SSI Leia u te (de transistores no ch ip ), 398-399
Intel. 36-37 Leitura (dados), 167
Interconexões programáveis, 412-414 Linguagens de descrição de hardware (HDLs), 464-466
Interface de barramento, 255-259 Linguagens de hardware:
Inverso. 64 na descrição de componentes do bloco operacional.
Inversores, 58 485-493
IR (registrador de instrução), 444-445 na descrição de lógica combinacional, 465-477
552 índice

na descrição de lógica seqüencial, 476-484 Máquinas de ultra-som, 226-234


no projeto em nível de transferência entre registrado­ circuitos digitais em. 230-232
res (RTL). 493-509 conversor de varredura em. 230-231
Linguagens de programação. 271-276 desafios futuros com as, 233-234
Listas de sensitividade. 478-480 formador de feixe em, 226-231
Literais, 66,314-316 monitor em, 230-231
Lógica: processador de sinal em, 230-231
de próximo estado. 347 transdutor em, 226-228
de saída, 347 Marca-passos. 152-156
Lógica de múltiplos níveis, 378 Mark II (computador), 49-50
Lógica genérica com arranjos (GAL). 425-426 Mars Cl imate Orbiter (nave espacial). 191-192
Lógica negativa, 152-153 Matrizes de chavcamento, 4 12-414, 4 16-418 . Veja tam­
Lógica programável com arranjo (PAL), 425-426 bém Interconexões programáveis
Ixtokup,tabelas, veja Tabelas lookup Maxtermo, 80
Luz de alerta para cinto de segurança (exemplo): Média de temperatura, sistema para determinar (exem­
com extensão, em um FPGA. 413-414 plo). 191-192
implementação, com uma tabela lookup.408 Megahertz (MHz), 118-119, 226-228
usando gate array baseado em NOR, 405-406 Meio-somadores. 183-185
usando ICs standard 7400.421 -423 em esquemas de antecipação do bit de transporte
usando PLD simples, 424 (ca rry-lo o ka h e a d ),355-357
Luzes sequenciais (exemplo). 201 implementação do circuito de soma usando portas
N A N D (exemplo), 403
M implementação do circuito de soma usando portas
N O R (exemplo), 404-405
M A G R A N ( R A M magnética), 288-289 implementação em um gate array (exemplo), 400-401
Mantissa,530 implementação usando células padrão (exemplo),
Mapas K: 401 -403 (exemplo), 401 -403
de quatro variáveis, 320-321 Melhoramento iterativo. 330
de três variáveis. 316-317 Memória. 127. Veja também Circuitos sequenciais
e otimização de tamanho de uma lógica de dois ní­ apenas de leitura, veja Memória apenas de leitura
veis, 316-324 (ROM)
Mapeamento de operadores (operator binding). de configuração, 416
368-369 de dados, 440-441
Mapeamento de tecnologia, 405 de instruções, 443-444
Máquina de fornecer refrigerante (exemplo), 244-247, flash. 286-287
535-543 MxN. 274-276
compreendendo o comportamento dos blocos de não volátil. 282-283
controle c operacional. 538-543 no projeto RTL, 274-289
projeto do bloco de controle, 536-538 volátil, 282-283
Máquina(s) de estados de alto nível. 246-249 Memória apenas de leitura (ROM):
e Moore versus Mealy, 372-373 em projeto RTL, 282-289
no medidor de distância baseado em laser (exemplo), exemplos usando, 286-289
493-498 tipos de, 284-287
Máquinas algorítmicas de estado (ASMs). 248-249 Memória de acesso aleatório (RAM):
Máquinas de escrever. 87 armazenamento de bit em, 277-279
Máquinas de estados finitos (FSMs), 129-135, 144-146 dinâmica (DRAM), 279-281
arquitetura do bloco de controle para, 135 em projeto RTL, 276-283, 288-289
com dados (FSMD), 245 estática, 278-280
comportamento nas. 134-135 exemplo usando, 281 -283
conversão de circuito para, 142-143 função read(), 473
definição, 130 Memória de acesso aleatório dinâmica (DRAM),
exemplos de projeto usando, 131-135, 145-146 279-281.288-289
não determinística, 144 Memória de acesso aleatório estática (SRAM),
notação simplificada para, 131-132, 145-146 278-280. 288-289
obtenção das, para blocos de controle, 254-256 Memória de programa, veja Memória de instruções
tipo Mealy, 346-351 Metaestabilidade, 147-151
tipo Moore, 346-351 Método da divisão por dois. 30-32. 525-526
índice 553

Método da divisão por /?,3 1-33 Notação(Ões):


Método da subtração, 29-31,525-526 em álgebra booleana, 64-65
Método Quine-McCluskey, 328-330 simplificação de circuitos. 85-86
Método tabular. 328-330 simplificação para FSMs, 131-132. 145-146
Métodos algébricos, na otimização do tamanho de uma NRE. veja Engenharia não recorrente
lógica de dois níveis, 314-316 ns (nanossegundo), 116
Meucci, Antonio. 24 Núcleo (co re), 429
M H z (megahertz), 118-119. 226-228 Números:
Microfones, 21-22, 226-228 binários, 27-34, 525-526
Microprocessadores, 36-37,440 cod ilicação de. 27-30
circuitos digitais cm, 20-22 hexadecimais, 32-34
definição. 34-35 octais, 33-34
FPGAs versus ,419 representação de números negativos, 210-215
software em, 34-37 subtratores para números positivos, 207-209
Minimização de estados. 335-341 Números de ponto flutuante, 530
Mintermo. 79. 325-326 Números normalizados, 530
Modulação por largura de pulso (PWM), 433-434 Números reais, 525-527
Módulo: N V R A M ( R A M não volátil), 288-289
em LEDs. 432-435
na descrição de lógica combinacional. 468-469 0
SC. 468-470
Monitor(es): O ff-set, 325-326
em máquinas de ultra-som. 230-231 Ondas co-seno, 382-384
RGB, 209-210 Ondas sonoras, 226-230
Monitores de computador, 209-210 O n -set ,325-326
Moorc, Gordon, 50-51 O p co d e, 447-448
M O S (termo), 53 Operação(ões):
Mostrador para exibir a história de temperaturas bit a bit, 218
(exemplo), 125-127, 170-171 expansão, 331
Motorola, 36-37 irredundãncia, 332-333
M P E G - 1,381 redução, 332-333
MSI (Integração de escala média). 50-51 Operações de armazenamento. 440-442
M T B F (tempo médio entre falhas), 150-151 Operações de bloco operacional, 440-442
Multiplexadores (muxes). 95-99 Operações de carga, 440-442
M x 1 de N bits, 97-99 Operações de transformação, 440-442
projeto interno de, 95-96 Operador(cs):
Multiplicadores: AND, 54-56
e m formadores de feixe, 232 em álgebra booleana, 54-55, 64-65
em números binários, 205-208 NOT, 54-56
seqiienciais, 361-364 OR, 54-56
Multiplicadores N x M , 205-207 Operandos, 447-448
Muxes, veja Multiplexadores O p e ra to r b in d in g ,veja Mapeamento de operadores
O p era to r scheduling, veja Escalonamento de operadores
Oscilação. 115-116
N
Osciladores:
N bits, comparadores de igualdade de, 193-195 a quartzo, 118-119
N bits, comparadores de magnitude de, 194-197 definição, 118-119
N bits. contadores de, 197-198 na descrição de lógica sequencial, 478-481
N bits. deslocadores b a rre i de. 192-193 Otimização de lógica combinacional. 314-335
N bits, deslocadores de, 190-191 otimização de lógica de múltiplos níveis. 332-335
N bits, registradores de, 167 otimização do tamanho de uma lógica de dois níveis,
N bits, somadores de, 181-183 314-333
N bits, subtratores de, 207-209 Otimização de lógica seqiicncial, 335-351
N bits, unidades de aritmética e lógica de, 218 codificação de estados como, 341 -346
Nanossegundo (ns), 116 e FSMs Moorc versus Mealy, 346-351
Nanowatts, 378 redução de estado como, 335-341
Negativa, flip-flops sensíveis à borda. 123 Otimização do consumo de energia, 374-378
554 índice

Otimização(Ões), 312-315. Veja também Tradeojffs) na descrição de lógica combinacional, 465-466


consumo dc energia. 374-378 NAND. 89-91,402-404
critérios para. 312-313 N O R 89-91.404-406
definição. 312-313 NOT. 58
e seleção de algoritmos, 374 número de portas possíveis. 92
em níveis de projeto elevado versus baixo, 373 OR. 58-59
em projeto RTL. 363-373 universal. 91.402-403
lógica combinacional, 314-335 XNOR, 90-91
lógica de múltiplos níveis, 332-335 XOR, 90-91
lógica sequencial, 335-351 Portas lógicas booleanas, veja Porta(s)
tamanho de uma lógica de dois níveis. 314-333 Portas lógicas, veja Porta(s)
OTP. ROM, veja R O M programável uma vez Posicionamento (em componentes de chips), 405
Overclocking (em PCs), 270-271 Potência consumida:
dinâmica, 376-377
P em sistemas digitais, 312-313
Pré-carga (armazenamento de bit em RAM). 278-279
PAL (lógica programável com arranjo), 425-426 Preset (set assíncrono), 151-152
Partição, 39 Primeiro que entra, primeiro que sai (FIFO), 289-290
Passada, primeira (redução de estados), 338. 340 Primo (termo), 64
Passada, segunda (redução de estados), 339-340 Procedimento always. 470-472
PC (contador de programa), 444-445 Processador(es):
PCI, veja Peripheral component interface de propósito único. 439
Perlis de produtos: definição, 242-243
display de vídeo gigante. 430-435 palavra de instrução muito larga (VLIW), 459-460
máquinas de ultra-som, 226-234 RS-6000 SP, 172-174
marca-passos, 152-234 sinal digital, 230-231
telefones celulares, 297-302 superescalar, 459-460
tocadores e gravadores de vídeo digitais. 379-388 Processadores programáveis, 439-460
Perfis de projetistas, 45, 110, 241, 311,395-396, bloco operacional para. 440-442
462 de seis instruções. 452-457
Periféricos, 255-256 de três instruções, 446-452
Período (sinal de relógio). 118-119 extensões do desempenho de, 459-460
Peripheral component interface (PCI), 257-259 extensões dos conjuntos de instruções de, 457-458
Pesquisa(s): Power Pc, 440
binária, 374-375 unidade de controle para, 441 -447
linear, 374 Processamento/processadores digitais de sinais (DSP).
P-frames, veja Quadros previstos 230-231.301-302
Pipelining,363-366 Processo de bancada de teste SC_THREAD. 476.
Pixels, 209-210.379 480-481
Planta de fabricação (fab), 398-399 Processo de projeto:
PLAs (arranjos lógicos programáveis), 425-426 de blocos de controle, 136-137. 142
Plataforma Excalibur (Altera), 427-428 para registradores, 179-180
Plataforma Nexperia (Philips), 427-428 Processo logicacomb, 473,481 -484
Plataforma Virtex II Pro (Xilinx), 427-428 Processos sensíveis. 470-471.473
PLD, veja Dispositivo lógico programável Produto. 64
Ponto binário, veja Vírgula binária Produto de maxtermos. forma, 80
Ponto decimal, veja Vírgula decimal Programa, 439, 443-444
Pop (em filas). 289-290 Programação de memórias apenas de leitura, 282-283
Porta(s), 51 -52, 57-60, 89-92 Programadores (de ROM), 285
AND, 59-60,422,426 Programas assembler,448-449
atrasos com, 101 Projeto com predomínio de controle, 264-265
construindo circuitos usando, 60-63 Projeto com predomínio de dados. 264-268
de baixa potência em caminhos críticos, 378 definição, 264-265
de escrita, 222 exemplo usando. 265-268
de leitura, 222 Projeto de lógica combinacional, 83-88
e comportamento combi nacional, 470-473 e notações de circuito, 85-88
e FPGAs. 418-419 passos no, 83-85.88
índice 555

Projeto em nível comporiamental, 271-276 Quadros previstos bidirecionais (B-frames), 381-383, 387
Projeto em nível de transferencia entre registradores Quantização (em compressão de vídeo). 383-385, 387
(RTL). 242-304 Quartzo, 118-119
abstração no. 294 Questões de tempo em FSMs Mealy, 349-350
alocação de componentes no, 366-369 Quilohertz, 226-228
armadilhas no, 262-263
bloco operacional, criação do, 251-254 R
com predomínio de dados. 264-266
componentes de memória no, 274-289 RAM magnética (MAGRAN), 288-289
concorrência no, 366-368 RAM não volátil (NVRAM), 288-289
conexão do bloco operacional com o bloco de con­ Realimentação. 112-114
trole, 253-254 Redução de estados:
e saídas de dados com registrador, 262-265 algoritmo para. 336-337
escalonamento de operadores no, 369-373 exemplo para, usando tabela de implicação. 339-340
escopo do, 242-244 na otimização de lógica sequencial, 335-341
exemplos de. 255-256-261-262. 265-268. 286-289. passos na, 338-339
297-302 tabelas de implicação, 336-338
freqiiência do relógio, determinação da. 267-272 Registrador de instrução (IR). 444-445
FSM do bloco de controle, obtenção da, 254-256 Registrador(es), 125-127, 167-182
hierarquia no. 293-296 atualização de, 262-263
lidando com a complexidade no. 293 circular. 175-177
mapeamento de componentes em, 368-369 de carga paralela e deslocamento, 176-180
máquina de estados de alto nível, criação da, 246-249 de carga paralela, 167-169, 176-179
método de. 243-256 de múltiplas funções, 176-180
nível comportamental, 271-276 de N bits, 167
otimizações e tradeoffs no, 363-373 deslocador. 173-176
pipelining no, 363-373 em armazenamento de múltiplos bits. 125-127
RAMs no, 276-283,288-289 exemplos usando, 167-177, 180-182
ROMs no projeto, 282-289 local (Dctr). 247-249
saída reg, 470-471,475,477-478 na descrição de lógica seqüencial, 476-479
uso de fila, 288-292 pipeline, 364-365
uso de linguagens de hardware no. 493-509 processo de projeto de, 179-180
uso de linguagens de programação no. 271-276 Reles. 48
Projeto físico. 405 Relógio de pulso, bipe de (exemplo):
Projeto lógico combinacional, 83-88, 184-186 usando uma máquina combinada Moore/Mealy, 351
PROM apagável (EPROM), 285-286 usando uma máquina Mealy, 349-350
PROM eletricamente apagável (EEPROM), 285-289 Relógio, habilitação de (clock gating), 376-378
PROM, veja ROM programável Representação de ponto flutuante, 528-533
Propagação, 120 Representação padrão, 78
Propagar (em somadores com antecipação do bit de Representações binárias, 20-21
transporte), 356,358-360 Resening, 114
Propósito gerais, processadores, 439. Veja também Pro­ Resistência, 46-48
cessadores programáveis Respin (na fabricação de ICs), 398-399
Propriedade associativa, 66,520 RGB, espaço de cores, 209-212
Propriedade comutativa. 66, 517 Rollingover, 197-198
Propriedade da identidade, 66 ROM de máscara programável, 284
Propriedade distributiva, 66,517 ROM programável, 285
Propriedade do complemento, 67 ROM programável uma vez (OTP), 285, 423-424
Protocolo de barramento. 256-257 ROMs. veja Memórias apenas de leitura
Push (em filas). 289-290 Roteador de rede. 108
PWM (modulação por largura de pulso), 433-434 Roteamento (em chips), 405

Q s
Quadros, 258-259, 379, 381-383,387 SAI), veja Soma de diferenças absolutas
Quadros intracodificados (l-frames), 381-383, 387 Saída(s), 46-48
Quadros previstos (P-frames), 381-383. 387 leitura de, 262-263
556 índice

na descrição de lógica combinacional, 468-469 Sistemas de numeração binária, 525-533


reg. 470-472,477-478 aritmética de ponto lixo em, 528-529
Saída de dados em registradores, 262-265 representação de números reais em. 525-527
Saída wire, 468-471 representação em ponto flutuante, 528-533
SC.METHOD, 4 7 1-473,476 Sistemas/aplicações de detector, 33-37
SC.modulc, 468-470 Skew de relógio, 377
Scan chain, 417-418 SOC. veja Sistema em um chip
Secretária eletrônica digital (exemplo), 287-289 SOCs como plataformas, 426-428
Seis instruções, processadores programáveis de, Software. 34-35
452-457 Solução ótima, 325-326
bloco operacional em, 453-455 Som, 226-230
conjunto de instruções em. 452-453 Som aditivo. 228-229
unidade de controle em. 453-455 Soma. 64
Seletores. 95. Veja também Multiplexadores (muxos) Soma de diferenças absolutas (SAD):
Semicondutores. 52 com concorrência (exemplo), 366-368
Sensíveis à borda de descida, flip-flops, 123 exemplo de projeto, 258-262
Sensíveis à borda, flip-flops I), 120-123 exemplos usando código em C. 2 7 1-276
definição, 121-122 Soma de mintermos, forma, 79-81
projeto mestre/servo, 121-122 Soma de produtos, 66
Sensível ao nível, latch D, 118-120 Somador(es), 181 -190. 214-215
Sensível ao nível. Iatch SR, 115-117 com lógica de dois níveis, 352-353
Sensor(cs), 27-28 completo, 184-186
botão, 27-28 construção de um sublrator usando, 214-217
de movimento. 27-28 criando somadores mais rápidos, 351-362
luminoso, 26 de 4 bits com propagação de bit de transporte,
semáforo, 205-206 185-I88
Sequência, gerador, veja Gerador de N bits, 181-183
Serialização (em computações). 370 exemplos de projeto usando. 186-190
Set síncrono. 180-181 meio, 183-185
Setting (em latches), 115 Somadores com antecipação de transporte de múltiplos
Setup time, veja Tempo de setup níveis, 360-361
Shannon. Claude. 56 Somadores com antecipação do bit de transporte
Shockley, William, 49-50 (icarry-lookahead), 352-361
Significando, 530 exemplo eficiente, 354-357
Silício (elemento), 53 exemplo ineficiente, 353-354
Silicon Valley (Califórnia), 53 hierárquicos, 356-361
Símbolo para diagrama de blocos, 167-169 meio-somadores em. 355-357
Simulação (em circuitos), 100-101 Somadores com propagação do bit de transporte
Simulador, 100-101 (carry-rippie), 182-190
Sinal(is), 466-467 de 8 bits, 189-190
digital, 20-23 de 4 bits, 185-189
estado atual, 480-484 e somadores hierárquicos com antecipação do bit de
estado, 494 transporte, 356-359
próximo estado, 480-484 meio-somadores. 183-185
Sinais analógicos. 20-21 na descrição de componentes de bloco operacional.
Sinais espúrios, veja Glitches 486-489
Sinal de relógio, 118-122 somadores completos, 184-186
Sinal e magnitude. 210-212 Somadores com seleção do bit de transporte (carry-
Sinal wire, 475 select), 360-362
Sincronizador de aperto de botão (exemplo), 139-141 Spin (na fabricação de ICs), 398-399
Sistema básico de entrada e saída (BIOS), 449-450 SPLD, veja Dispositivo lógico programável simples
Sistema em um chip (SOC), 426-428 SRAM, veja Memória de acesso aleatório estática
Sistema Opticom, 205-206 SSI (integração em pequena escala). 50-51,419-421
Sistemas: Standard cells, veja Células padrão (AS1C)
detector, 33-37 Subsetting (em linguagens de programação),
digitais, 20-21,33-35 274-276
embarcados, 20-21 Subtração (usando adição). 212-214
índice 557

Subtrator(es), 207-217 Tensão, 46-48


de números positivos, 207-212 Teorema da unificação, 315
detecção de estouro em, 215-217 Termiônicas, válvulas, 48-50
exemplos usando, 208-212. 215-216 Termos:
usando somador para construir um. 214-217 combinação de termos para eliminar uma variável,
SystemC. 468-473, 476-484, 486-489,492-493, 315
496-498, 506-509 de produto, 66
Throughput (em registradores de pipeline), 365-366
T Tipo estado, 480-484
Tocadores/gravadores de vídeo digitais, 379-388
Tabela(s)-verdade. 58 codificação MPEG-2 e, 381-384, 387-388
como representação padrão de funções booleanas, compressão em. 3 8 1-387
78-79 e codificação Huffman, 384-387
definição, 72 eDVDs, 379-381
e funções booleanas, 72-74 transformada co-seno discreta em, 382-385. 387
Tabelas de implicação, 336-341 Tradeoffis). Veja também Otimização(ões)
Tabelas lookup, 407-412 componente de bloco operacional. 351-364
exemplos usando, 409-412 definição, 312-313
partição de um circuito entre, 408-412 e seleção de algoritmo, 374
Tabuleiro de damas computadorizado (exemplo), 171-175 em níveis de projeto elevado versus baixo, 373
Tamanho (em sistemas digitais), 312-313 cm projeto RTL, 363-373
Tap (como termo matemático) de filtro digital, 299-300 entre computação serial e concorrente, 372-373
Teclados de computador, 87 entre tecnologias de ICs, 427-429
Tecnologia de circuito integrado (IC) programável, Transdutores, 27-28, 226-228
veja Arranjos de portas programáveis em campo Transformada co-seno discreta (DCT), 382-385, 387
Tecnologia(s) de circuito integrado (IC), 397-430 Transformada rápida de Fourier (FFF), 382-383
conversão de FPGA para ASIC como, 426-427 Transições, 130
CPLDs como, 425-427 Transistores:
e a lei de Moore, 430 CMOS. 51 -53. 57-58. 374-377
e tipos de processadores, 428-429 discretos, 49-50
fabricação, 397-406 nMOS, 51-52,58-60, 89
FPGAs como, 406-419 pMOS. 53.58-60. 89
ICs SSI standard (off lhe s/telj) como, 419-423 Transistores de estado sólido. 49-50
popularidade relativa dos, 427-428 Três instruções, processadores programáveis de.
programáveis, 406 446-452
SOCs como, 426-428 bloco operacional em. 449-452
SPLDs como, 422-426 primeiro conjunto de instruções em, 446-450
tradeoffs entre, 427-429 unidade de controle em, 450-452
Telefone Bell, 24 TV de alta definição (HDTV), 110
Telefones, 24
Telefones celulares, 23, 297-302
componentes de, 299-302
u
qualidade da voz em, 267-269 Ultra-som (termo), 226-228
Tempo de acesso (RAM). 280-281 Unidade de controle. 441-447
Tempo de hold (em entradas de flip-flops), 147-149 em processadores programáveis de seis instruções.
Tempo de leitura. 280-281 453-455
Tempo de setup (cm entradas de flip-flops), 147-149 em processadores programáveis de três instruções,
Tempo médio entre falhas (MTBF), 150-151 449-450-452
Temporizador, como um tipo de contador. 204-206 Unidade de multiplicar e acumular (MAC), 371-372
Temporizador para laser de três ciclos em nível alto Unidade de ponto flutuante, 533
(exemplo): Unidade MAC (multiplicar e acumular), 371-372
bloco de controle para. 136-139 Unidades de aritmética e lógica (ALUs), 2 18-220
codificação binária alternativa para, 341-343 calculadora de múltiplas funções usando, 220
FSMpara, 131-132 operação, 440-442
imagens 3 D (ultra-som), 233-234 USB (Universal serial bus), 177-178
primeiro projeto pobremente feito, 127-129 Uso de clear síncrono, 201
usando codificação de um bit por estado, 344-345 Uso de fila, 288-292
558 índice

V Vídeo digital, 261-262


Vídeo digitalizado, 24, 261-262
Valores espúrios, 186-188
Vírgula binária, 526
Válvulas termiônicas. 48-50
Vírgula decimal. 526
Variável (eis), 65,515-516
combinação de termos para eliminar uma, 315 VLIW, veja Processador(es)
genérica, 522 VLSI (integração em escala muito alta), 50-51
Ventilador (pulmonar) LTV 1160, 18-19
Verilog (linguagem de descrição de hardware), W
271 -272, 274-276.467-472, 475.477-478, 480-483.
485.487-488, 491 -492,494-497, 501-505 Watt (unidade), 374-375
VHDL (linguagem de descrição de hardware), Western Union, 24
2 7 1-272, 274-276,465-467, 470-471,474, 476-482, Word (item de dados), 274-276
485-495.498-502 Wrapping around (contadores), 197-198

Você também pode gostar