Escolar Documentos
Profissional Documentos
Cultura Documentos
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).
ISBN 978-85-7780-190-9
CDU 621.3
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.
SÃO PAULO
Av. Angélica, 1.091 - Higienópolis
01227-100 São Paulo SP
Fone (11) 3665-1100 Fax (11) 3667-1333
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
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.
• 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.
* 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.
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
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
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)
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.
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.•
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.
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
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
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
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
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
alto-falante
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.
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
Sensor lum inoso: produz um a saída de tensão positiva quando a luz é detectada 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.
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
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-
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
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?
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
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.
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.
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
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
Figura 1.10 Conversão do número decimal 23 para binário usando o método da subtração.
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
Decimal Binário
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)
Figura 1.11 Conversão do número decimal 12 em binário usando o método da divisão por 2.
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.
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.
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.
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)).
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.
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 ,
}
}
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. ◄
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
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.
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
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.
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
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
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
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
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.
► "DEBUGGING"
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.
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).
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
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.
(b)
pM O S
porta — o|
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.
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.
Figura 2.6 Ter os blocos construtivos certos pode fazer toda a diferença quando se constroem
coisas.
* 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:
F = (m 0R j ) AND N0T(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:
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:
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:
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
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.
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
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.
► 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. ◄
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 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.
while (1) {
PO = !I0 && 11;
}
62 Sistemas Digitais
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
► 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. ◄
• 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
w = ps'k + t
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 ".
• 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 .
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 )'
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.
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 ':
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.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.
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) ◄
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
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)
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.
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
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
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:
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).
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
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
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:
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
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)
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:
é 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.
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). ◄
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
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.
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.
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.
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.
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
TABELA 2.7 Tabela informal do conversor de teclado de 12 teclas para código de 4 bits
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
Usando essa tabela, podemos obter equações para cada uma das quatro saídas, como segue:
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
d6 = a b c ' e
d7 = abce
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.
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.
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.
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
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
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.
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
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.
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
* 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.
* 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.
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.
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.
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.
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.
(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.
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.
1 0 0 0
1 0 1 0
1 1 0 1
1 1 1 1
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?
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
► 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
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.
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..
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
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
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
Q
nectando a porta superior a essa saída. A m aioria dos latches vêm ■ R
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
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.
Clk
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.
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:
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
Figura 3.29 Blocos cada vez melhores para se arm azenar bits, culminando com o flip-flop D.
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.
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.
* 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
► 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
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
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
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
----------------------------- -
.
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
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.
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.
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 _______________
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.
* 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
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.
► 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.
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
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
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. ◄
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*
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
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.
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
o=s ab=11 -
8
< 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
* 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.
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.
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.
* 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.
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
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.
Figura 3.68 Marca-passo com tios terminais (esquerda) e a localização do marca-passo abaixo da
pele (direita). Cortesia da Medtronic, Inc.
E n tra d a s -,s, z
S a íd a s : t, p
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).
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.10 EXERCÍCIOS
Os exercícios indicados com um asterisco (*) são mais desafiadores.
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.
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.
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.
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
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.
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.
3.46 Faça a engenharia reversa do comportamento do circuito sequencial mostrado na Fig. 3.90.
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
► 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.
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
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
X X ! * r - X L i ,
o
o—
X !T ^ t
???? ! ???? --------- mo !
o
o
o
O
or-
o
o
O
-------- 0001
--------- --------
R1 R2 ! R1 R2 R1 R2 R1 R2 ! R1 R2 ! R1 R2
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.
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. ◄
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. ◄
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)
eJ 1_
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
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 .
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
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.
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
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. ◄
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
s h r jn I3 12 11 10
(a)
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
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 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.
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
(a)
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.
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.
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 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)
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.
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
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.
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
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.
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.
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
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:
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.
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
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.
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
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.
Chaves DIP
0 □□□□□□00 □000001
a7..a0 b7..b0
Somador de oito bits com ci —0
propagação de "vai um "
co s7..s0
* 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
•
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.
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.
► 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
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 ?).
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
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
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
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.
a3 b3 a2 b2 a1 b1 aO bO
igt AgtB
leq AeqB
lit ■AltB
Uü
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.
* 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
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
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\
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á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.
► 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
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
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>
k»
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.
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.
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
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
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!
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.
(a)
a' b'
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. ◄
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
a3 a2 al a0
X b3 b2 bl b0
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
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.
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.
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.
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.
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.
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
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
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
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.
► 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
Chaves DIP
0 ÜBQOBBBB O0B000B0
1
A
! B
8
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
©
© 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:
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
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.
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
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
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
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=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.
Chaves DIP
0 □D0OOO00 ; □□□□□0QQ
► 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
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
* 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
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
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
► 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.
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
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)
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.
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.
_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.
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
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.
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.
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.)
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?
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.)
(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.)
(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.)
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.)
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.)
► 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
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.
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
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.
totjd
0
prévia do m étodo de projeto RTL. O b r 1
rf
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 • •• •• •
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 ,
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:
• 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.
quina de estados de alto nível. Começaremos com um estado L (bit), D (16 bits)
S a i d a s ' .
(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 )
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 )
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.
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.
(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
(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
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 :
(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.
► 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.
► 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.
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
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.
( 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
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
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
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-
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
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.
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
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
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.
é 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 *> >
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
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.
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.
nr >
• 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
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
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
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
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.
f(X>Y){___
Max = X; { th e n ( e ls e
(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
• 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.
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
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.
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
* 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).
* 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:
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.
microfone
alto-falante
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. ◄
• 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 .
• 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
Tipos de ROM
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
a lto - f a la n t e
se n so r de
v ib r a ç ã o
► 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
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. ◄
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.
• 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.
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
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.
1I
T3 II
I
CO II
I
I
I
C I
<D II
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.
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” .
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.
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.
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.13 EXERCÍCIOS
O s exercícios indicados com um asterisco (*) são m ais desafiadores.
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
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.
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.
}
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.
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;
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.
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.
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).
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
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:
É 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.
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
► 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
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:
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.
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. ◄
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
+ xyz + xyz'
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.
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:
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
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:
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.
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
ÁA
no caso desses outros três mintermos, não importa se 11 /
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.
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.
* 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
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
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
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.
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)
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:
► 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.
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.
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.
► 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.
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.
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
• 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 .
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.
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;
• (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.
(b) (
S1 S1
(S2,S2) (S2,S2) S2 (V s 2 )
S2
(53.51) (S3,S1) [S tfS V
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.
► 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 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.
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.
► 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. ◄
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
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 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'
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 .
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.
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.
/ f=0, zerar=1
________ 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.
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.
b/s1s0=00, p=1
b/s1s0=01, p=1
(a)
Data ) ) b7s1s0=10, p=0
b/s1s0=10, p=1
b/s1s0=11, p=1
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. ◄
► 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.
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
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
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.
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
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?
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.
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
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
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.
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
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.
produto
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.
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
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.
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.
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).
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.
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).
soma = soma + x t1 *d
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
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 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.
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.
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. ◄
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.
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.
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. ◄
► 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.
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
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
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 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
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.
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.
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.
...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...
► 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.
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
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
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
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
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
► 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.
* 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
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)).
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.
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
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_
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
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.
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.
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
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.
► 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
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
(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.
•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.
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
(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.
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.
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
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.
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.
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
* 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).
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).
11 12 13
nó programável
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.
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.
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.
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).
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.
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.
;« ? 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
(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
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.
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.
► 7.8 EXERCÍCIOS
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.
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
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.
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).
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.
• 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
• 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 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 .
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).
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
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
• 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.
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.
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 Som ar- ADD Ra, Rb, Rc: especifica a operação RF[aJ=RFIb]+RF[cJ.
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
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
• 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.
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).
• 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.
• 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 :
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
/
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
ã
I_rd=1
Busca j PC_inc=1
PC_clr=1 A IR ld=1
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 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.
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
(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
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).
•••
m étodo para essa fazer essa extensão utiliza uma
m em ória de dados especialm ente projetada. N essa 239:
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.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
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 .
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
► 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).
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
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.
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
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
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 ")
(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
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
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
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;
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";
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 );
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.
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
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” .
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
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
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
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;
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);
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;
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.
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
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 ] “ .
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;
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.
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
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.
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;
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.
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;
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 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;
parameter SO = 3'bOOO,
51 = 3'bOOl,
52 = 3'b010,
53 = 3'b O l l ,
54 = 3'blOO;
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 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
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 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"
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_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.
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.7 EXERCÍCIOS
Os seguintes exercícios podem feitos usando qualquer uma das HDLs descritas neste capítulo.
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.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.
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.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.
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.
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.
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 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
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:
0 + l = l + 0 = l
üxl = l x 0=0
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:
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
C a s o ( l) : por
a+ I = l x ( a + I) P3(ii)
= a + ( a 'x 1) P2(i)
= a + a' P3(ii)
= 1 P4(i)
«X O = 0 + (« x 0 ) P3(i)
= 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
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.
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
= 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 + í(b + c) + d]) +e
= a + b + c +d + e
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 ,
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
= ( b + \) ( a + \) P4(i)
= 1x1 Teorem a 3 (1 )
=1 idem potência
= / / x 0 + f l ' x0 P4(ii)
= 0+ 0 T eorem a 3(2)
= 0 T eorem a 5( 1)
= (a + b + ... + c ) yd'
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.
*
Á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 ) ) )
► 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.
* 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
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
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
* 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.
* 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
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.
1 Converta o número da base 10 para a base 2. Use o método descrito na Seção B.2.
► 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
► 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
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.
B.5 EXERCÍCIOS
► 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
Máquina de fornecer refrigerante: (a) bloco de controle (descrito de forma comportamental) e (b)
F ig u ra C.3
bloco operacional (estrutura).
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
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.
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
• 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.
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
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 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
• 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 ) ) .
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
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
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