115 73
Português Pages 534 Year 2008
AIHYA
MNVY A
STIdH 3 OVYDVZIWILO ‘OlLArodd
SIVLIDI(Q SYW3ALSIS
SOBRE 0 AUTOR Frank Vahid € professor de ci€éncia da computagiio e de engenharia elétrica da University of California, Riverside (UCR). Ele € graduado ¢m engenharia elétrica e ciéncia da computaciio; trabalhou e foi consultor da Hewlett Packard, da AMCC, da NEC, da Motorola e de fabricantes de equipamentos médicos; possui trés patentes nos Estados Unidos; recebeu diversos prémios relativos ao ensino; ajudou a montar o programa de engenharia de computagdo da UCR; € autor de dois livros anteriores e publicou cerca de 120 artigos sobre t6picosde projeto digital (antomacdo, arquitetura ¢ baixo consumo de energia).
MI27s
Vahid, Frank Sistemas digitais ; projeto, otimizagdo ¢ HDLs / Frank Vahid ; tradugdo Anat6lio Laschuk. — Porto Alegre : Artmed, 2008.
560p. ; 25 cm.
ISBN 978-85-7780-190-9 1. Engenharia elétrica. 2. Construgio de circuitos elétricos —
Circuitos digitais. 1. Titulo. CDU 621.3
Catalogacio na Publicagio Monica Ballejo Canto — CRB 10/1023.
FRANK VAHID UNIVERSITY OF CALIFORNIA,
SISTEMAS PROJETO,
RIVERSIDE
DIGITAIS
OTIMIZACAO
E HDLS
Traducio:
Anatélio Laschuk Mestre em Ciéncia da Computagio pela UFRGS Professor aposentado pelo Departamento de Engenharia Elétrica da UFRGS
Obra originalmente publicada sob o titulo Digital Design ISBN 978-0-470-04437-7 © Copyright 2007 John Wiley & Sons, Inc. All rights reserved. This translation published under license.
Capa: Gustavo Demarchi, arte sobre capa original Leitura final: Rachel Garcia Valdez Supervisdo editorial: Denise Weber Nowaczyk Editoraciio eletrbnica: Techbooks
Reservados todos os direitos de publicacio, em lingua portuguesa, 3
ARTMED" EDITORA S.A.
(BOOKMAN® COMPANHIA EDITORA & uma divisio da ARTMED® EDITORA §. A.)
Av. Jer6nimo de Ornelas, 670 - Santana 90040-340 Porto Alegre RS
Fone (51) 3027-7000
Fax (51) 3027-7070
E proibida a duplicacio ou reproducio deste volume, no todo ou em parte, sob quaisquer formas ou por quaisquer meios (eletrnico, mecinico, gravacio, fotoctpia, distribuicio na Web e outros), sem permisséo expressa da Editora. SAQ PAULO Av, Angélica, 1.091 - Higiendpolis 01227-100 Sao Paulo
Fone (11) 3665-1100
SP
Fax (11) 3667-1333
SAC 0800 703-3444 IMPRESSO NO BRASIL PRINTED IN BRAZIL
A minha familia, Amy, Eric, Kelsi e Maya; e aos engenheiros que aplicam suas habilidades para construir coisas que melhoram a condicdo humana.
>
Prefaci
o
AO ESTUDANTE A RESPEITO DO ESTUDO DE PROJETO DIGITAL Os circuitos digitais, que formam a base dos computadores de propésitos gerais e também de dispositivos especiais, como telefones celulares ou consoles de videogames, estdo alterando
dramaticamente o mundo. O estudo de projeto digital ndo lhe dard apenas a confianca que resulta da compreensdo de como os circuitos digitais funcionam na sua esséncia, ird apresentar também uma orientagdo empolgante e 1itil para uma possivel carreira. Isso se aplica independentemente de sua graduag@o ser em engenharia elétrica, engenharia de computagdo ou mesmo ciéncia da computagdo (de fato, a necessidade de projetistas digitais com solida capacitagdo em ciéncia da computacao continua crescendo). Eu espero que vocé ache esse assunto ldo interessante, empolgante e til quanto eu o achei. Ao longo deste livro, tentei introduzir conceitos da forma mais intuitiva e facil de se aprender e também mostrar como esses conceitos podem ser aplicados a sistemas do mundo
real, como marca-passos,
maquinas de ultra-som, impressoras, automéveis ¢ te-
lefones celulares. Algumas vezes, estudantes de engenharia, jovens e capazes (incluindo estudantes de ciéncia da computagdo), abandonam o seu curso de graduagio, alegando que guerem um trabalho que seja mais “orientado a pessoas™. No entanto, mais do que nunca, necessitamos desses estudantes, j4 que os empregos para engenheiros estdo se tornando cada vez mais voltados a pessoas sob diversas formas. Primeiro, os engenheiros geralmente trabalham em grupos fortemente integrados, envolvendo numerosos outros engenheiros (ao invés de ficarem “sentados sozinhos a frente de um computador durante o dia todo”,
como muitos estudantes acreditam). Segundo, os engenheiros freqiientemente trabalham diretamente com os clienites (como empresdrios, médicos, advogados, funciondrios de alto escalio do governo, etc,) e devem portanto ser capazes de fazer contatos com esses clientes que nio sido engenheiros. Terceiro, e em minha opinide o mais importante, os engenheiros constroem coisas que tém um grande impacto sobre a vida das pessoas. Sao necessdrios engenheiros, que combinem o seu entusiasmo, criatividade e inovacgao com sélidas habilidades em engenharia, para conceber e construir novos produtos que melhorem a qualidade
de vida das pessoas. Eu inclui uma se¢do chamada “Perfil de Projetista” no final da maioria dos capitulos.
Os projetistas, cuja experiéncia pode variar desde apenas um ano até vdrias décadas e cujas empresas vio desde as pequenas até as gigantescas, irdo compartithar com vocé as suas experiéncias, insights e conselhos. Vocé notard que muito seguidamente eles discutem os aspectos pessoais de seus empregos. Vocé também poderd observar o entusiasmo e a paixdo deles pelos seus trabalhos.
AOS PROFESSORES DE PROJETO DIGITAL Este livro faz uma ruptura em relagiio ao ponto de vista de projeto digital das décadas de 1970
e 1980, cuja énfase era o projeto limitado em tamanho; em contrapartida, enfatiza a situagio da década de 2000 que envolve o projeto em nivel de transferéncia entre registradores (RTL). Fazendo a distin¢do nitida entre o tdpico do projeto bdsico e o da otimizacgéo, dois topicos que anteriormente estavam inseparavelmente entrelagados, o livro permite que uma primeira
viii >
Prefacio
disciplina de projeto digital atinja e até mesmo dé€ €nfase ao projeto RTL. Um estudante que for apresentado ao projeto RTL em uma primeira disciplina terd uma visdo mais relevante do
campo atual de projeto digital, conduzindo ndo s6 a uma melhor apreciagido dos modernos computadores e outros dispositivos digitais, mas também a um entendimento mais exato das
profissdes que envolvem o projeto digital. Essa compreensiio acurada € critica para atrair estudantes de computacio a carreiras que envolvem alguma coisa de projeto digital e para criar um quadro de engenheiros que estejam a vontade tanto em “software” como em “hardware” e que sdo necessarios ao moderno projeto de sistemas de computacao embarcados. A distingfo entre projeto bdsico e otimizagio ndo deve ser interpretada como se se estivesse evitando uma abordagem ascendente, de baixo para cima, ou encobrindo passos im-
portantes — o livro assume uma abordagem ascendente concreta. Comega com transistores e vai construindo gradativamente, passando por portas, flip-flops, registradores, blocos de controle, componentes de bloco operacional, etc. Pelo contririo, essa distin¢do permite que os estudantes desenvolvam inicialmente um entendimento sélido do projeto bdsico, antes de examinar o tépico mais avancado da otimizagdo, de modo semelhante ao de um livro de fisica que, ao introduzir as leis de Newton do movimento, assume superficies sem atrito ¢ nenhuma resisténcia com o ar. Além disso, hoje a otimizagdo envolve mais do que a simples minimiza¢éio de tamanho, requerendo pelo contrario uma compreensio mais ampla de rradeoffs * entre
tamanho, desempenho ¢ consumo, ¢ mesmo de fradeoffs envolvendo circuitos digitais customizados e softwares de microprocessador. Novamente, a abrangéncia dos t6picos ¢ mantida dentro do real e adequada a uma disciplina introdutdria de projeto digital. Entretanto, o livro faz uma distin¢éio entre projeto digital e otimizacdo de modo tal que propicia claramente ao professor um maximo de flexibilidade para introduzir a otimizagio no momento e com a extensdo que ele desejar. Em particular, cada uma das subsegdes do capftulo de otimizacio (Capitulo 6) corresponde diretamente a um capitulo anterior. Desse modo, a Secido 6.2 pode vir imediatamente apés o Capitulo 2, a Sec¢éo 6.3 pode vir apds o
Capitulo 3, a 6.4 pode vir depois do 4, e a 6.5 pode vir depois do 5. Diversas caracteristicas adicionais do livro sio:
e
Uso amplo de exemplos de aplicacdo e figuras. Depois de descrever um novo conceito
¢ dar exemplos bésicos, o livro fornece exemplos que aplicam o conceito a situagdes familiares para o estudante, como um sistema de alarme para cinto de seguranca nio apertado, um jogo de xadrez computadorizado, uma impressora a cores ou uma camera de video digital. Além disso, no final da maioria dos capitulos, ha um perfil de produto, cujo propésito € dar aos estudantes uma visdo ainda mais ampla da aplicagdo dos conceitos e introduzir conceitos especificos para aplicacdes mais engenhosas, que o estudante poderd achar muito interessantes — como as idéias da formagao de feixe em uma maquina
de ultra-som ou da filtragem em um telefone celular. O livro faz um amplo uso de figuras para ilustrar conceitos, incluindo mais de 600 figuras. o
Aprendizagem através da descoberta. O livro enfatiza a compreensao da necessidade de novos conceitos, que nao s6 ajudam os estudantes a apreender e lembrar 0s conceitos, mas
desenvolvem habilidades de raciocinio que podem permitir a aplicagio dos conceitos a outros dominios. Por exemplo, ao invés de apenas exibir um somador com antecipagéo de “vai-um”, o livro mostra abordagens intuitivas, mas ineficientes, de se construir um so-
mador mais rdpido, para entdo resolver as deficiéncias e conduzir (“descobrir™) ao projeto com antecipagdo de “vai-um”.
* N. de T: Um rradeoff, envolvendo diversos critérios, pode ser entendido como uma forma de otimizacio em que se melhora
um dos critérios em detrimento de outros, também de nosso interesse, mas de menor importincia,
Prefacio
e
< ix
[ntroducdo aos FPGAs. O livro inclui uma introducio completa aos FPGAs, de baixo para cima, mostrando concretamente aos estudantes como um circuito pode ser conver-
tido em um encadeamento de bits que € usado para programar as tabelas individuais de consulta, matrizes de chaveamento ¢ outros componentes programaveis de um FPGA. Essa introdugdo concreta desfaz o mistério dos dispositivos FPGAs, os quais estdo se tornando cada vez mais comuns.
o
Flexibilidade na cobertura HDL. A organizagdo do livro permite que os professores cubram de forma clara as HDLs (linguagens de descri¢io de hardware) em combinagao com a introducdo dos conceitos de projeto, cobrir as HDLs mais tarde, ou néo cobri-las. As subsecdes do capitulo sobre HDLs (Capitulo 9) correspondem cada uma a um capitulo anterior, de modo que a Se¢@o 9.2 pode seguir imediatamente o Capitulo 2, a 9.3 pode seguir 0 3, a 9.4 pode seguir 0 4 e a 9.5 pode seguir o 5. Além disso, o livro cobre igualmente as trés HDLs — VHDL, Verilog e a relativamente nova SystemC. Usamos também a nossa ampla experiéncia em sintese, com utilizagio de ferramentas comerciais, para criar descri¢oes em HDL, as quais sdo bem adequadas a sintese e também apropriadas para simulagdes.
e
Livros associados de introdugdo as HDLs. Os professores que desejam cobrir as HDLs com amplitude ainda maior podem utilizar um de nossos livros de introdugao as HDLs, concebidos especificamente para acompanhar este livro e escritos pelo mesmo autor.
Nossos livros de introdugdo as HDLs seguem a mesma estrutura de capitulos do presente livro e usam exemplos seus. Assim, eliminam a situagio corriqueira de estudantes que ficam se esfor¢ando para correlacionar tépicos distintos, e algumas vezes contra-
ditorios, em seus livros de HDL e de projeto digital. Nossos livros discutem com mais profundidade os conceitos de linguagem, simulagio e teste, propiciando numerosos exemplos de HDL. Eles também sio estruturados para serem usados isoladamente durante a aprendizagem ou como referéncia de uma HDL. Os livros enfatizam a utilizagio
das linguagens em projetos reais, distinguindo claramente entre o uso para sintese e 0 uso para teste de uma HDL, incluindo muitos exemplos e figuras para ilustrar os conceitos. Os nossos livros de introdugéio as HDLs séio acompanhados por slides em
PowerPoint, que usam grificos ¢ animacdes, servindo como um tutorial fécil de ser seguido sobre HDL. o
Slides grdficos animados em PowerPoint e criados pelo autor.®* Um rico conjunto
de slides em PowerPoint esta disponivel para os professores. Os slides foram criados pelo autor deste livro, resultando uma consisténcia de perspectiva e énfase entre eles e o0 livro, Os slides foram concebidos para ser uma ferramenta de ensino verdadeiramente efetiva para o professor. A maioria deles € baseada em graficos (evitando slides que consistem apenas em listas de itens textuais). Os slides fazem amplo uso de animacgoes, onde forem apropriadas, para se desvendar gradativamente os conceitos ou os circuitos ja construidos. Além disso, os slides animados podem ser impressos e analisados. A grande maioria de todas as figuras, conceitos e exemplos deste livro
esta incluida em um conjunto de quase 500 slides, do qual os professores podem fazer suas escolhas. o
Manual completo de solugdes.® Os professores podem obter um manual completo (cerca de 200 pdginas) contendo as selugoes de todos os exercicios de final de capitulo deste livro. Figuras sdo amplamente utilizadas para ilustrar as solu¢tes do manual.
# Professores inferessados em acessar esse material de apoio devem acessar a Area do Professor no site www.bookman com br.
X P
Preficio
COMO USARESTE LIVRO Este livro foi concebido para permitir flexibilidade de escolha entre as formas mais comuns de se cobrir o material. Descreveremos a seguir diversas abordagens.
Abordagem focada em RTL Uma abordagem centrada em RTL € simplesmente a cobertura dos seis primeiros capitulos nesta ordem:
1. Introdugdo (Capitulo 1) WN
. Projeto 16gico combinacional (Capitulo 2) . Projeto 16gico seqiiencial {Capitulo 3)
O
. Projeto RTL (Capitulo 5) . Otimizages e Tradeoffs (Capitulo 6), com a extensdo desejada e
o
A
. Projeto de componentes combinacionais e seqiienciais (Capitulo 4)
. Implementago fisica (Capitule 7) e/ou Projeto de processadores (Capitulo 8), com a extensao desejada
Pensamos que essa ¢ uma 6tima maneira de ordenar o material; os estudantes estardo fazendo projetos RTL interessantes em cerca de sete semanas. As HDLs poderdo ser introdu-
zidas no final, se o tempo permitir, poderdo ser deixadas para uma segunda disciplina sobre projeto digital (como € feito na University of California, Riverside) ou ainda poderio ser estudadas imediatamente apds cada capitulo — as trés abordagens parecem ser bem comuns, Abordagem tradicional com alguma reordenacio Este livro pode ser usado diretamente; seguindo-se uma abordagem tradicional que introduz a otimizaglo juntamente com o projeto basico, com uma ligeira diferenga em relagéio a ela. Essa diferenga consiste em uma troca na ordem de apresentagiio dos componentes combina-
cionais e de ldgica seqiiencial, como segue: 1. Introdugdo (Capitulo 1)
2. Projeto logico combinacional (Capitulo 2}, seguido pela otimizagfo de ldgica combinacional (Secdo 6.2) 3. Projeto l6gico seqiiencial (Capitulo 3), seguido pela otimizagio de 16gica seqiiencial
(Secdo 6.3) 4. Projeto de componentes combinacionais e seqiienciais (Capitulo 4), seguido por tradeoffs de componentes (Secdo 6.4) 5. Projeto RTL (Capitulo 5), com a extensfo desejada, seguido de otimizacoes ¢ trade-
offs RTL (Segéo 6.5) 6. Implementagdo fisica (Capitulo7) e/ou Projeto de processadores (Capitulo 8), até o ponto desejado
Essa ¢ uma abordagem bem razodvel e eficaz, que abarca toda a discussio de um topico (por exemplo, projeto FSM assim como otimizagfio) antes que $e avance para o proximo. Essa reordenagio em relagio a abordagem tradicional apresenta o projeto seqiiencial bdsico (FSMs e bloco de controle) antes dos componentes combinacionais (por exemplo, somado-
res, comparadores, etc.). Tal reordenagéio pode conduzir mais naturalmente ao projeto RTL do que numa abordagem tradicional, adotando-se em seu lugar uma abordagem de abstracdo
Prefacio
< Xi
crescente, em vez da abordagem tradicional que separa o projeto combinacional do seglien-
cial. Novamente, as HDLs podem ser introduzidas no final, deixadas para uma outra disciplina ou integradas apés cada capitulo. Essa abordagem também poderia ser usada como
passo intermedidrio quando se migra de uma abordagem totalmente tradicional para uma abordagem RTL. A migragio pode envolver o adiamento gradual das seg¢oes do Capitulo 6 —
por exemplo, cobrir os Capitulos 2 e 3 e, em seguida, as Secbes 0.2 e 6.3, antes de se passar para o Capitulo 4.
Abordagem tradicional Este livro também pode ser usado de forma tradicional, como segue: 1. Introducgéo (Capitulo 1) 2. Projeto logico combinacional (Capitulo 2), seguido pela otimizac&o de légica combinacional (Se¢fo 6.2) 3. Projeto de componentes combinacionais (Secoes 4.1, 4.3, 4.4, 4.5, 4.7, 4.8 ¢ 4.9),
seguido por fradeaffs de componentes combinacionais (Secio 6.4 — Somadores) 4. Projeto logico seqiiencial (Capitulo 3), seguido pela otimizagao de logica seqiiencial (Segao 6.3)
5. Projeto de componentes seqiienciais (Capitulo 4, Se¢oes 4.2, 4.6 ¢ 4.10), seguido por tradeoffs de componentes seqgiienciais (Secéo 6.4 — Multiplicadores) 6. Projeto RTL (Capitulo 5), até o ponto desejado, seguido de otimizagGes e tradeoffs RTL (Secdo 6.5) ¢ 7. Implementago fisica (Capitulo 7) e/ou Projeto de processadores (Capitulo 8), até o
ponto desejado Esta abordagem foi a mais usada nas dltimas duas décadas, com o acréscimo de RTL mais no final. Embora a distin¢do enfatizada entre os projetos combinacional e segiiencial possa
ndo ser mais relevante na era de projeto RTL (em que ambos os tipos de projeto estdo misturados), algumas pessoas acreditam que tal distingdo torna o caminho de aprendizagem mais
facil, o que pode ser verdadeiro. As HDLs podem ser incluidas no final, deixadas para uma disciplina posterior ou integradas do comego ao fim.
AGRADECIMENTOS Muitas pessoas e organizagdes contribuiram para a edigiio do livro. ¢
Integrantes do quadro da John Wiley and Sons Publishers apoiaram amplamente o desenvolvimento do livro, incluindo Catherine Schultz, Gladys Soto, Dana Kellogg ¢ Kelly Boyle. Bill Zobrist, que apoiou meu livro anterior “Embedded System Design”, motivoume a escrever o presente livro e deu 6timos conselhos ao longo de seu desenvolvimento.
*
Ryan Mannion contribuiu com muitos itens, incluindo apéndices, numerosos exemplos e exercicios, verificagdo de fatos, ampla revisdo do texto, enorme auxilio durante a produ¢i0, ajuda com os slides, profusao de idéias durante as discusses e muito mais.
*
Roman Lysecky desenvolveu numerosos exemplos e exercicios, contribuiu com a maior parte do contetido do capitulo sobre HDL e foi co-autor de nossos livros associados sobre HDLs. Roman e Susan Lysecky propiciaram muita ajuda na revisdo do texto.
¢
Numerosos revisores forneceram uma notdvel realimentag@o para as diversas versoes do livro. Agradecimentos especiais aos que primeiro o adotaram, como Nikil Dutt, Shannon
Xii P
Preficio
Tauro, J. David Gillanders, Sheldon Tan, Travis Doom,
Roman Lysecky e outros, que
deram excelentes realimentactes a partir deles mesmos ¢ de seus estudantes. ¢
A importincia do apoio proporcionado a2 minha pesquisa ¢ & minha carreira de professor pelo National Science Foundation foram muito grandes. Apoio adicional da Semiconductor Research Corporation catalisou colaboragdes com a inddstria que, por sua vez,
influenciaram muitas das perspectivas deste livro.
SOBRE A CAPA ‘A imagem da capa, com quadrados encolhendo-se, mostra graficamente um notdvel fend-
meno da vida real em que o tamanho dos circuitos digitais (“chips de computador”) tem diminuido a metade a aproximadamente cada dezoito meses, por diversas décadas, sendo freqiientemente referido como lei de Moore. Esse encolhimento possibilitou que incriveis circuitos de computagdo coubessem em minvsculos dispositivos, como os modernos telefones celulares, os dispositivos médicos e os videogames portateis, Veja pdgina 51 para uma discussao sobre a lei de Moore.
Revisores e Avaliadores Rehab Abdel-Kader Otmane Ait Mohamed Hussain Al-Asaad Rocio Alba-Flores Bassem Alhalabi
Georgia Southern University Concordia University
Zekeriya Aliyazicioglu
California Polytechnic State University, Pomona SUNY Brockport
Vishal Anand Bevan Baas Noni Bohonak Don Bouldin David Bourner Elaheh Bozorgzadeh Frank Candocia Ralph Carestia Rajan M. Chandra Ghulam Chaudhry Michael Chelian Russell Clark James Conrad Kevan Crotean
Sanjoy Das James Davis Edward Doering Travis Doom Jim Duckworth Nikil Dutt
Dennis Fairclough Paul D. Franzon Subra Ganesan Zane Gastineau J. David Gillanders Clay Gloster Ardian Greca Eric Hansen
Bruce A. Harvey John P. Hayes Michael Helm
University of California, Davis University of Minnesota, Duluth Florida Atlantic University
University of California, Davis University of South Carolina, Lancaster
University of Tennessee University of Maryland Baltimore County
University of California, Irvine Florida International University
Oregon Institute of Technology California Polytechnic State University, Pomona
University of Missouri, Kansas City California State University, Long Beach
Saginaw Valley State University University of North Carolina, Charlotte
Francis Marion University Kansas State University University of South Carolina Rose-Hulman Institute of Technology Wright State University
Worcester Polytechnic Institute University of California, Irvine
Utah Valley State College North Carolina State University Oakland University Harding University Arkansas State University Howard University Georgia Southern University Dartmouth College
FAMU-ESU College of Engineering
William Hoff
University of Michigan Texas Tech University Colorado Scheol of Mines
Erh-Wen Hu
William Paterson University of New Jersey
Baback Izadi
SUNY New Paltz
Xiv
»
Revisores & Avaliadores
Jeff Jackson Anura Jayasumana Bruce Johnson Richard Johnston Rajiv Kapadia
University of Alabama
Colorado State University University of Nevada, Reno Lawrence Technological University
Minnesota State University, Mankato
Bahadir Karuv Robert Klenke
Fairleigh Dickinson University Virginia Commonwealth University
Clint Kohl Hermann Krompholz Timothy Kurzweg
Cedarville University
Jumoke Ladeji-Osias Jeffrey Lillie David Livingston
Texas Tech University Drexel University Morgan State University
Rochester Institute of Technology
Virginia Military Institute
Hong Man
Stevens Institute of Technology
Gihan Mandour Diana Marculescu Miguel Marin Maryam Moussavi Olfa Nasraoui Patricia Nava John Nestor Rogelio Palomera James Peckol Witold Pedrycz Andrew Perry Denis Popel
Christopher Newport University
‘Tariq Qayyum
‘California Polytechnic State University, Pomona
Gang Qu Mihaela Radu Suresh Rai William Reid Musoke Sendaula Scott Smith
University of Maryland
Gary Spivey Larry Stephens James Stine Philip Swain Shannon Tauro Carlos Tavora Marc Timmerman Hariharan Vijayaraghavan
Carnegie Mellon University McGill University California State University, Long Beach
Universityof Memphis University of Texas, El Paso Lafayette College Garcia University of Puerto Rico, Mayaguez
University of Washington University of Alberta Springfield College
Baker University Rose-Hulman Institute of Technology Louisiana State University, Baton Rouge
Clemson University Temple University Boise State University George Fox University
University of South Carolina linocis Institute of Technology
Purdue University ‘University of California, Irvine Gonzaga University Oregon Institute of Technology
Bin Wang
University of Kansas Wright State University
M. Chris Wernicki
New York Institute of Technology
Shanchieh Yang Henry Yeh Naeem Zaman
Rochester Institute of Technology
California State University, Long Beach San Jaoquin Delta College
Sumario » CAPITULO 1 Introdugdo 1.1
3.7
17
Sistemas digitais no mundo que nos cerca
1.2 O mundo dos sistemas digitais 1.3
_
Implementando sistemas digitais: programagio de microprocessadores versus projeto de
circuitos digitais 1.4 1.5
17
20
Sobreeste livro Exercicios 40
33
46
Mais portas 89 Decodificadores e multiplexadores Consideragdes adicionais 99 Otimizacoes ¢ tradeoffs em légica combinacional 102
71
93
linguagensde descrigio de hardware
111
112
Maiquinas de estados finitos (FSMs) e blocos de controle 127
136
Mais sobre flip-flops e blocos de controle
146
153
242
5.1 5.2
Introdugio 242 O método de projeto RTL
5.3
Exemplos e questdes de projeto RTL.
5.4 5.5
Determinando a freqii€ncia de relégio 269 Descrigiio em nivel comportamental: passando
de C para portas (opcional) 5.6
Componentes de meméria
5.7 Filas (FIFOS) 5.8
3.6 Otimizagdes e tradeoffs em l6gica seqiiencial
226
Registradores (RTL)
111
3.4 Projetode bloco de controle 3.5
Descrigdo de componentes de bloco operacional usando linguagens de descrigio de hardware 226 Perfil de produto: uma méquina de ultra-som 226 Resumo do capitulo 233 Exercicios 234
Projeto em Nivel de Transferéncia entre
103
3.2 Armazenando um bit - flip-flops 3.3
4.12
218
» CAPITULD S
102
Projeto Légico Seqiiencial— Blocos de Introdugio
198
Multiplicadores — estilo array 205 Subtratores 207 Unidades l6gico-aritméticas —ALUs Bancos de registradores 221 Tradeoffs com componentes de bloco
4.14 4,15
102
193
4.7 4.8 4.9 4.10 4.11
4.13
» CAPITULO 3
3.1
Comparadores
operacional
Descricdo de l6gica combinacional usando
Controle
166
Introdugio 166 Registradores 167
4.6 Contadores
2.7 O processode projeto 16gico combinacional 83
Exercicios
156
» CAPITULD4
4.5
2.5 Algebrabooleana 63 2.6 Representacbes de funges booleanas
2.14
Exercicios
4.3 Somadores 182 4.4 Deslocadores 190
2.3 O fransistor CMOS 51 2.4 Portas ldgicas booleanas — blocos construtivos dos circuitos digitais 54
2.13 Resumo do capitulo
3.10
4.1 4.2
2.1 Introducio 46 2.2 Chaves 46
2.12
linguagens de descrigio de hardware 153 3.8 Perfil de produto — 0 marca-passo 153 3.9 Resumodocapitulo 156
Componentes de Blocos Operacionais
39
» CAPITULO 2 Projeto Lagico Combinacional
2.8 2.9 2.10 2.11
Descrigdo de logica seqiiencial usando
5.9
243
255
272 276
289
Hierarquia — um conceito-chave de projeto 293 Oumizagoes e fradeoffs em projeto RTL
296
16 » Sumério
5.10 5.11
Descricdo de projeto RTL usando linguagens de descrigdo de hardware 297 Perfil de produto - telefone celular 297
5.12 Resumo do capitulo 5.13 Exercicios 303
303
Linguagens de Descrigao de Hardware
312
363
397
477
397
Tecnologia de ICs programéveis — FPGA
406
427
gigante 430
9.6 Resumo do capitulo 9.7
Exercicios
510
510
» APENDICEA Algebras Booleanas
5§15
Al
Algebrabooleana
515
A.2
Algebra de chaveamento
A.3
Teoremas importantesna dlgebra
516
517
A4
Outros exemplos de dlgebras booleanas
A.5
Leituras adicionais
522
523
» APENDICEB Topicos Adicionais de Sistemas Binarios de Numera¢do 525
B.I Introdugio 525
7.7 Resumo do capitulo
7.8 Exercicios 435
434
B.2 Representagio de nimeros reais
B.3 Aritméticade ponto fixo 528
» CAPITULO 8
8.1 Introdugiio 439
B.4 Representagdo em ponto flutuante B3 ‘E"em'c"’s 534
439
Processadores Programéveis Arquitetura basica
8.3
Um processador programével de trés
instrugdes 446
440
529
Exemplo Estendido de Projeto RTL
|
_
8.4 Um processador programdvel de seis instrugoes 452 8.5 Programas exemplos em linguagem assembly e em c6digo de méquina 456 Outras extensoes do processador
457
525
» APENDICEC 535
8.2
programdvel
Projeto RTL usando linguagens de descric¢do de hardware 493
booleana
7.4 Outras tecnologias 419 1.5 Comparagoes entre tecnologias de ICs 7.6 Perfil de produto — display de video
8.6
465
Descrigao de l6gica seqiiencial usando linguagens de descrigdode hardware Descri¢do de componentes de bloco
9.5
> CAPITULO7
7.3
linguagens de descrigo de hardware 9.3
operacional usando linguagens de descrigio de hardware 485
6.6 Mais sobre otimizagdes e tradeoffs 372 6.7 Perfil de produto — gravador e tocador digital ‘de video 379 6.8 Resumo do capitulo 388 6.9 Exercicios 388
7.1 Introduciio 397 7.2 Tecnologias de ICs manufaturados
463
Descrigdo de l6gica combinacional usando
9.4
Otimizagoes e tradeoffs em projeto RTL
Implementac#o Fisica
463
9.2
Otimizagoes e tradeoffs em logica
combinacional 314 6.3 Otimizagdes e tradeoffs em logica seqiiencial 335 6.4 Tradeoffs de componentes de bloco operacional 351 _ 6.5
459
» CAPITULO O
9.1 Introdugio
» CAPITULO6 Otimizacdes e Tradeoffs 6.1 Introducio 312 6.2
8.7 Resumo do capitulo 8.8 Exercicios 460
C.1
Introducio
535
C.2 Projetandoo bloco de controle da méquina de C.3
fornecer refrigerantes 536 Compreendendo o comportamento dos blocos de controle e operacional da médquina de
fornecer refrigerantes
» INDICE
545
539
CAPITULO
1
Introducao » 1.1 SISTEMAS DIGITAIS NO MUNDO QUE NOS CERCA Conheca Arianna. Arianna € uma menina de cinco anos que vive na California. F uma crianca querida e extrovertida que gosta de ler, jogar futebol, dangar e contar piadas inventadas por ela mesma.
Um dia, a familia de Arianna estava voltando de carro de uma partida de futebol. Ela estava falando empolgadamente sobre o jogo, quando de repente a van em que se encontrava fol atingida por um carro que entrou na contraméo. Embora o acidente ndo tenha sido particularmente violento, o impacto fez com que um objeto solto na traseira da van fosse projetado para a frente atingindo Arianna na parte posterior da cabega. Ela ficou
inconsciente. Arianna foi levada as pressas a um hospital. Imediatamente, os médicos repararam que a sua respiragao estava muito fraca — uma situagiio comum apés uma batida forte na cabega — de modo que eles a colocaram em uma maquina de ventilagio pulmonar assistida, um aparelho médico usado para auxiliar a respiracio. Ela teve um traumatismo cerebral devido ao impacto na cabega e permaneceu inconsciente por diversas semanas. Todos os seus sinais vitais eram
estaveis, exceto que ela continuava precisando do ventilador pulmonar para respirar. Algumas vezes, 0$ pacientes nessa situagdo recuperam-se, outras vezes nio. Podem ser necessarios muitos meses para total recuperagao. Gracas aos modernos ventiladores pulmonares portéteis, os pais de Arianna puderam levala para se recuperar em casa. Além do monitoramento remoto dos sinais vitais ¢ as visitas didrias de uma enfermeira e de uma fisioterapeuta da respiraciio, Ariana esteve cercada por
18 » Sistemas Digitais
seus pais, irméo, irma, primos, outras famflias ¢ amigos.
Durante a maior parte do dia, alguém estava segurando a sua méo, cantando para ¢la, sussurrando em seu ouvido ¢ encorajando-a a recuperar-se. A sua irma dormia proximo dela, Alguns estudos mostram que essas interagoes pessoais aumentamas chances de recuperagio. E recuperar-se, ela conseguiu. Um dia, muitos meses depois e com a mamié sentada a seu lado, Arianna abriu os olhos. Ela foi levada de volta ao hospital e, depois de
algum tempo, o aparelho de ventilagao pulmonar foi re-
tirado. Entdo, apds um longo perfodo de recuperagio e reabilitagdo, Arianna finalmente voltou para casa. Hoje,
com seis anos, ela mostra poucos sinais do acidente que quase custou-lhe a vida.
O que essa histéria tem a ver com projeto digital? A recuperagio de Arianna foi auxiliada por um dispositivo portitil de ventilagdo pulmonar, o qual por sua vez foi
tornado possivel gragas aos circuitos digitais. Duranteas trés dltimas décadas, a quantidade de circuitos digitais que pode ser colocada em uma tnica pastilha de circuito integrado de computador aumentou espantosamente - aproximadamente 100.000 vezes, acredite se quiser. Desse modo,
os ventiladores
pulmonares, como
prati-
camente qualquer outro dispositivo que funciona com eletricidade, podem tirar vantagem dos circuitos digitais, potentes e rdpidos, € ainda ser de baixo custo. No caso
de Arianna, o ventilador era o Pulmonetics LTV 1000.
Um ventilador do inicio da década de 1990 poderia ter o tamanho de uma maquina de fazer cOpias de grande
porte e custar possivelmente US$ 100.000, o LTV 1000 nao € maior nem mais pesado do que este livro e custa apenas uns poucos milhares de délares — suficientemente
pequeno e barato para ser transportado em helicOpteros e ambulancias de resgate médico, em situagtes de sal-
vamento de vidas, e inclusive ser enviado para casa juntamente com o paciente. Os circuitos digitais inteérnos
monitoram continuamente a respiragiio do paciente ¢ fornecem exatamente as quantidades de pressio e volume de
a -b
ar necessarias. Cada ciclo de respira¢do que o aparelho fornece requer milhdes de cdlculos que sdo realizados pelos circuitos digitais internos. Os ventiladores ventiladi portdteis rtit ajudam d ndo do s6s6 as itivitimas
—Nakin /
j@ d . e
; L;
, >0de_l
i
: L__
: g
3
g
)?lf L
de traumatismos, mas auxiliam pacientes com doengas 3 '
debilitantes, como movimentar. Agora, um lado para outro modo, fazer coisas museus e participar
=
|
h —————
i _\,‘fgh
=
Circuitos digitais internos
Ventilador portdtil
esclerose miultipla, a conseguir se ¢ssas pessoas podem se deslocar de em uma cadeira de rodas e, desse como freqiientar a escola, visitar de piqueniques com a familia, ex-
Introdugdo
EXEMPLO 28
< 63
Luz de alerta para cinto de seguranca com acendimento inicial
Vamos expandir ainda mais o exemplo anterior. Os au-
—
AlsRaCinta
+:'.'
toméveis costumam acender todas as luzes de alerta
mosw = lquandop = 1es = Oek = 1,ouquando t = 1. Observe que, quando t = 1, acendemos a luz,
B *W
colocaciio da chave na ignicao e entiio torna-se 0, a partir desse instante em diante (ndo se preocupe com quem ou ‘o que faz t assumir esses valores), Desse modo quere-
*"“
cionando. Assuma que o nosso sistema recebe uma en-
trada t que € 1 durante os primeiros 5 segundos apds a
*'E-‘r
quando vocé gira a chave de igni¢do na partida. Assim, vocé pode verificar se todas as luzes de alerta estdo fun-
Figura2.22 Circuito expandido de j)ara para cinto de seguranga.
independentemente dos valores de p, s e k. A equagdo do novo circuito €:
o
'
'
'
W= (p AND NOT(s) AND k) OR t O circuito estd mostrado na Fig. 2.22.
«
Algumas regras e convengdes de desenho de circuitos H4 algumas regras e convengdes que 0s projetistas seguem normalmente quando desenham circuitos com por-
i
tas 16gicas:
oy
*
¢
Asportas l6gicas tem uma saida e uma ou mais entradas, mas normalmente nio rotulamos as safdas e as entradas das portas. Lembre-se de que a ordem das entradas em uma porta nao tem efeito sobre o seu comportamento 16gico.
Béo 1
F—=
nag
~ —s= —
Cada fio tem um sentido implicito, indo da saida de uma
porta para a entrada de uma outra porta, mas normalmente nio desenhamos as setas indicando o sentido.
*
Um fio simples pode se ramificarem dois (ou mais) fios que vio para as entradas de diversas portas —o0s ramos tém o mesmo valor que o fio simples. Entretanto, dois fios NAO podem se juntar em um tinico — qual seria o valor desse fio simples se os dois fios que chegam tivessem valores diferentes?
Do_k‘
i } néo o.k.
» 25 ALGEBRA BOOLEANA As portas l6gicas sao fiteis para implementar circuitos, mas as equacbes sio melhores para manipular esses circuitos. As ferramentas algébricas da dlgebra booleana permitem-nos manipular as equacdes booleanas de modo que podemos fazer coisas tais como simplificar as equacdes, verificar se duas equacGes sio equivalenies, enconirar a inversa de uma equagdo, demonstrar as propriedades das equagdes, etc. Como uma equagéo booleana, consistindo ‘em operagtes AND, OR e NOT, pode ser facilmente transformada em um circuito de portas AND, OR e NOT, pode-se considerar a manipulagio das equagdes booleanas como sendo uma manipulagio de circuitos digitais. Vamos introduzir informalmente algumas das ferramentas algébricas mais tteis da dlge-
bra booleana. O Apéndice A fornece uma defini¢do formal de dlgebra booleana.
64 » Sistemas Digitais
Notagdo e terminclogia Agora definiremos uma terminologia e um sistema de notacio para descrevermos as equa¢bes booleanas. Usaremos extensivamente essas definigdes por todo o livro.
Operadores Escrever os operadores AND, OR e NOT nas equagdes € incomodo. Assim, a dlgebra boole-
ana usa uma notacio mais simples para esses operadores: *
“NOT()” ¢ escrito tipicamente como a' ou a. Usaremos a' que € lido como “a linha”. O termo a' € também conhecido como o complemento de a, ou o inverso de a.
e
“3 OR b” é escrito tipicamente como “a + b”, com a intencao especifica de ser semelhante ao operador de adigioda dlgebra comum. A expressdo “a + b” € entdo referida como a soma de a e b. A expressao “a +b” £ lida usualmente como “a ou b”.
*
“a AND b™ € escrito tipicamente como “a b” ou “a - b”, com a intenc@o especifica de ser similar ao operador de multiplicagdo da dlgebra comum e € referido mesmo como o
produto de a ¢ b. Como na dlgebra comum, podemos mesmo escrever “ab™ como sendo o produto de a e b, desde que fique claro que a ¢ b sfo varidveis separadas. A expressio “a * b € lida usualmente como “a e b” ou simplesmente “ab”. Os matematicos freqiientemente usam outras notagdes para os operadores booleanos, mas a notagdo anterior parece ser a mais popular entre os engenheiros, devido provavelmente 4 semelhanca intencional desses operadores com os da dlgebra comum. Usando a notacido mais simples, 0 nosso exemplo anterior do cinto de seguranga:
w = (p AND NOT(s) AND k) OR t poderia ser reescrito de forma concisa como: w=ps'k+t que seria lido como “w € igual a p, s linha, k ou t”.
> EXEMPLO 29
[Lendo equagdes booleanas
Leia as seguintes equagdes: 1.F = a'b'
+ c.Resposta: “F € igual a a linha b linha, ou ¢
2.F=a+b*c'
Resposta:“Féigualaa,oubeclinha”
Converta as seguintes leituras de equagGes em equagdes escritas: 1. “Féigual aab
linha ¢ linha.” Resposta: F = ab'c'.
2.*Féigualaabc,oudelinha’” Resposta: F = abc + de'.
c>i|—
L P__ Figura2.32
. }--I|:n: wihep!
h+p
Convertendo um circuito
£m uma equacgio.
presenta a mesma fungfio que o circuito. 3. Equacgdes em tabelas-verdade A conversdo de uma equagio em uma tabela-verdade pode ser feita preparando primeiro uma tabela-verdade apropriada para o nimero de variaveis de entrada da fungéo e, em seguida, calculando o valor do segundo membro da equagiio para cada combinagdo de valores de entrada. Por exemplo, para converter a equagéio F(a;b) = a'b' + a'b em uma tabela-verdade, irfamos preparar primeiro uma tabela-ver-
dade para uma funcio de duas entradas, como estd mostrado na Fig. 2.30(a). A seguir, calculariamos o valor do segundo membro da equag@io para a combinagao de valores de entrada de cada linha, COmMO Segue: e
a=0eb=0,
F=0'"%0"+0'"*0
o
a=0eb=l;
F=0"*1'"+0'"*1 = 1*0 +1*1 =0+ 1 =1
o
a=leb=0,
*
a=leb=l,
F=1'"%0"+1'*0
=1*1+1*
=0*1
Figura o4
2.33 verdade
Tapara
F(a,b)=ab'+a’b.
=1+0=1
+0*0=0+0=0
F=1"*1"+1"*1 =00 +0*1 =0+0=20
Portanto, irfamos preencher a coluna direita da tabela como mostrado na Fig. 2.33. Observe que aplicamos as propriedadesda dlgebra booleana (principalmente as propriedades da identidade ¢ dos elementos nulos) para avaliar as equacGes. Observe que a conversdo da equagio F(a,b)=a' em uma tabela-verdade produz exatamente a mesma tabela-verdade mostrada na Fig. 2.33. Em particular, avaliando o segundo membro dessa equagao, usando a combinagdo de valores de entrada de cada linha, obtém-se:
¢
a=0eb=0, _
F=0'=1
Saida.
e
a=Oeb=1,
F=0'-=1
—
e
asleb=0,
F=1'=0
1
e
a=leb=1l,
F=1'=0
il
Algumas pessoas acham (til criar colunas intermedidrias na tabela-verdade para computar os valores intermedidrios da equagdo. Assim, preenche-se cada coluna da tabela indo da eésquerda para a direita e desloca-se para a coluna seguinte somente apos to-
1 B
u Figura 2.34 Tabela-verdade para F(a,b)=a'b+a'b com colunas intermedidrias.
das as linhas da coluna corrente estarem preenchidas. Um exemplo para a equagiio F(a,b) = a'b' + a'bestd mostrado na Fig. 2.34.
76 = Sistemas Digitais
5. Circuitos em tabelas-verdade
=aim =
00
b
Torno
F=somade a2 b a'b
1
Figura2.35
C
1
Q
dos os termos de produto. Para a tabela ao lado (Fig. 2.35), obtemos os termos mostrados na coluna mais a direita. Aplicando uma operacdo OR a esses termos, obtém-se F = a'b' + a'b.
%
D
Para converter uma tabela-verdade em uma equagio, criamos um termo de | produto para cada 1 da coluna de saida e, entdo, aplicamos um operador OR a to-
Entradas | Saida
-0
4. Tabelas-verdade em equacoes
Convertendo uma tabela-
verdade em equagiio.
Podemos converter um circuito combinacional em uma tabela-verdade, convertendo primeiro
o circuito em uma equagio (descrito anteriormente) ¢, entio, convertendo a equagio em uma tabela-verdade (também descrito anteriormente).
6. Tabelas-verdade em circuitos Podemos converter uma tabela-verdade em um circuito combinacional, convertendo primeiro a tabela-verdade em uma equagao (descrito anteriormente) e, entio, convertendo a equagao em um circuito (também descrito anteriormente). P EXEMPLO 2.19
Circuito gerador de paridade comecgando com uma tabela-verdade
Nada ¢ perfeito e os circuitos digitais ndo sdo excegdes. Algumas vezes, um bit em um fio altera-se quando ndo deveria. Assim, um 1 torna-se um 0, ou um 0 torna-s¢ um 1. Por exemplo, um 0 pode estar se deslocando ao longo de um fio quando subitamente um ruido elétrico surge do nada e muda 0 0 para 1. Mesmo que possamos diminuir a probabilidade de tais erros, possivelmente usando fios com boa isolagio, ndo podemos evitd-los completamente nem detectar e corrigir todos eles — mas
podemos detectar afguns deles. Tipicamente, os projetistas procuram situagdes nas quais € provavel a ocorréncia de erros, tais como dados que estdo sendo transmitidos entre dois circuitos integrados através de fios compridos — como de um computador até uma impressora através de um cabo de impressora, ou de um computador a outro através de uma linha telefénica. Nessas situagoes, os projetistas acrescentam circuitos que no minimo tentam detectar se um erro ocorreu, caso em que o circuito de recepgio pode solicitar ao circuito de transmissio que reenvie os dados. Um método comum de se detectar um erro € o chamado método da paridade. Digamos que tenhamos 7 bits de dados que devem ser transmitidos. Acrescentamos um bit extra, chamado bit de pari-
dade, para obter um total de 8 bits. O transmissor atribuird o valor 1 a esse bit de paridade se isso tornar par o nimero total de 1s — a chamada paridade par. Por exemplo, se os 7 bits de dados fossem
0000001, entdo o bit de paridade seria 1, o que tornard o nimero total de 1s igual a 2 (um niimero par). Ao todo, os 8 bits seriam 00000011. Se os 7 bits de dados fossem 1011111, entdo o bit de paridade seria
0, tornando o nimero total de 1s igual a 6 (um mimero par). Os 8 bits completos seriam 10111110, Agora, 0 receptor pode detectar se um bit foi alterado durante a transmissdo, verificando se hd um niimero par de 1s nos 8 bits recebidos. Se par, assume-se que a transmissio esta correta. Se impar, um erro ocorreu durante a transmissio. Por exemplo, se o receptor receber 00000011, assumiremos que a transmissfio estd correta e o bit de paridade podera ser descartado, ficando 0000001. Assuma, em vez disso, que ocorreu um erro e que o receptor receben 10000011. Vendo o niimero impar de 1s, o receptor sabe que ocorreu um erro — observe que o receptor nde sabe qual bit é o
errado. Do mesmo modo, 00000010 representaria um erro também. Observe gue, nesse caso, 0 erro ocorreu no bit de paridade mas o receptor ndo sabe onde isso ocorreu. Vamos descrever uma fungdio que gera um bit de paridade par P para trés bits de dados a, b e ¢. Comegar com uma equagiio € trabalhoso — qual € a equagiio? Neste Neste exemplo, uma exemplo, comegar com uma tabela-verdade € a escolha natural, como mostrado éscolha miais natural na Tabela 2.3. Para cada configuragio de bits de dados (isto €, para cada linha da é comecar com uma tabela-verdade), atribuimos ao bit de paridade um valor que torna par o niimero tabela-verdade, do que
total de 1s. Da tabela-verdade, obtemos entdo a seguinte equacio para o bit de
com uma equagao.
paridade:
Projeto Logico Combinacional
P=a'b'c+a'bc'
+ ab'c'
+ abe
TABELA23
< 77
Paridade par c
| o
Observe que paridade par ndo significa certeza de que os dados
- | o| v
Entiio, poderiamos projetar o circuito usando quatro portas AND ~ Para 3 bits de dados ¢ uma OR.
==
—
bits por caracter. > EXEMPLO 220
=T
Lol
o
=
2
|
s
|
=
|
O
]
|
O
bt
|
oo
0 estao corretos (observe que fomos cuidadosos ao dizer anteriormente que a transmissdo era “assumida” correta quando o bit de paridade 1 estava correto). Em particular, se dois erros ocorrerem em bits dife0 rentes, entdo a paridade ainda serd par. Por exemplo, o transmissor pode enviar 0110 mas o receptor pode receber 1111, O valor 1111 1 tem paridade par e assim parece correto. Métodos mais poderososde 0 detecgiio de erros s3o possiveis para se detectar erros miltiplos como 1 esse, mas ao pre¢o de se acrescentar bits extras. A paridade impar ¢ também um tipo comum de paridade — o 0 valor do bit de paridade torna impar o niimero total de 1s. Ndo hé 1 nenhuma diferenga de qualidade entre as paridades par e impar — 0 decisivo € simplesmente o transmissor € 0 receptor usarem ambos o mesmo tipo de paridade, par ou impar. Uma representagao popular de letras e nidmeros € conhecida como ASCII, a qual codifica cada caracter com 7 bits. O c6digo ASCII acrescenta um bit para a paridade, perfazendo um total de 8
a —= b —
-
{a) ab
|
(ab)'
.
S
¢ ——-->c
-
j {ab)'c'
{b)
Figura 236 portas.
(a) Circuito combinacional e (b) circuito com as expressdes de saida rotuladas das
18 » Sistemas Digitais
Fig_l_ll‘a_-Z_S’?
Tabela-verdade da equaciiodo cucmto
Representacéo padréo e forma canénica Dlssemm antes que, embora haja muitas representagdes possiveis usando equagdes e circui-
tos para a mesma fung@o booleana, hé apenas uma replesentagfifi que usa tabela-verdade parauma fungéo booleana. As tabelas-verdade, _portanto, constituem uma represmtag:flopadré‘b de uma fungfio— para qualquer fungo, pode haver muitas equagGes e circuitos possiveis, mas.
hi apenas uma tabela—verdafle A repressntagfio por tabela—verdade é dnica. fum;fia:s pa:a Ver se sfib fiquwalantes Supcmha que vocé qursesse venfir.:ar se duas equa-
¢Oes booleanas sio equivalentes. Uma maneira seria tentar manipular uma delas até que ficasse igual 4 outra, como fizemos no caso da porta de correr automatica do nosso Exem-
plo 2.13. No entanto, suponha que ‘ndo fomos bem-sucedidos em torn4-lasiiguais - foi ‘porque na realidade elas ndo sdo a mesma, ou por que snmplesmente néo mampulamas a
equagdio o suficiente? Como podemos saber se as duas equagbes nio sio realmente a ‘mesma? Uma maneira conclusiva de verificar se duas fungOes sdo a mesma € criar uma tabelaverdade para cada uma e, entdo, ver se as
‘tabelas-verdade sio 1dfinncaa., Assim, para determinar se F = ab + a' & equivalente a F=a'b'
+a'b+
ab, poderiamos gerar as
suas tabelas—verdade usando o método descrito anteriormente para obter o valor da fun¢do em cada linha de saida, como mostrado 4 direita.
Vemos que as duas fungdes sfo de fato equivalentes, porque as safdas sdo idénticas para cada combinagio de entradas Agora, va-mos verificar se F = ab + a' & equivalente a (ai’b) comparando as tabelas-verdade. Como vemos claramente & dlretta estas
duas fungdes nio sio equivalentes. A compara-
‘¢éio das duas tabelas néo deixa dividas.
Projeto Lgico Combinacional
EXEMPLO 224
Detector de um padrao composto por trés 1s
Queremos implementar um circuito que pode detectar se um padrio de, no minimo, trés 1s adjacentes ocorre em algum ponto de uma entrada de 8 bits. Nesse caso, um 1 serd produzido na sua saida.
84 » Sistemas Digitais
Asentradassioa,b,c,d, e, f.geh.ea saida € y. Assim, para uma entrada abcdefgh
= 00011101,
ydeve ser 1, ja que hd trés 1s adjacentes (nas entradas d, e e f). Para uma entrada 10101011, a saida deve resultar 0, porque nao hd trés 1s adjacentes em lugar algum. Uma entrada 11110000 deve resultar em y = 1, jd que a présenca de mais de trés 1s adjacentes também deve produzir 1 de saida. Esse circuito € um exemplo extremamente simples de uma classe geral de circuitos conhecida como detectores de padrdes. Os detectores de padrdes sdo largamente usados, por exemplo, no processamento de imagens para detectar coisas, como pessoas ou tanques, em uma imagem digitalizada de video, ou para detectar falas especificas em uma seqgiiéncia de dudio digitalizado. Neste exemplo, comecar com uma equacao, em veg de uma tabelaverdade, é wma escolha
Passo 1:
mais natural.
Capture a func¢do. Poderiamos capturar a fung¢io na forma de uma tabela-verdade bastante grande, listando todas as 256 combinages de entradas e atribuindo 1 a saida y em cada linha onde ocorrem pelo menos trés 1s adjacentes. Entretanto, um método mais simples para capturar essa fungo em particular € criar uma equagfio que especifica as ocorréncias possiveis de trés 1s adjacentes. Uma possibilidade é abc=111.
Outra € bcd=111. De modo semelhante, quando cde=111, def=111, efg=111 ou fgh=111, devemos gerar uma saida 1. Para cada possibilidade, os valores das outras entradas ndo interessam, Assim, se abc=111,
geramos um 1, independentemente dos valores de d, e, f, g e h. Desse modo, uma equagio que descrevey € simplesmente: y = abc + bed + cde + def + efg
+ fgh
Passo 2:
Converta para equagdes. Podemos desconsiderar esse passo, pois jd temos uma equagéo.
Passo 3:
Implemente um circuito baseado em portas. Nio € possivel fazer simplificagio alguma na equacdo. O circuito resultante estd mostrado na Fig. 2.40, ; c
abc *— bed
(= e
P
f
.
g
&
cde
y def
bR
“\efg
J
fgh
h
Figura240 » EXEMPLO 225 Neste exemplo, comecar com uma tabelaverdade, ent vez de
uma equacdo, é uma
escolha mais natural.
Detector do padriio de trés 1s.
-
Contador de nimero de 1s Queremos projetar um circuito que conta o nimero de 1s presentes em trés entradas a, be c e, como saida, fornece esse ndmero em bindrio, por meio de duas saidas y e z. A entrada 110 tem dois 1s e, nesse caso, 0 nosso circuito deve produzir 10 como
saida. O nimero de 1s nas wés entradas pode variar de 0 a 3. Assim, uma saida de
dois bits € suficiente, pois dois bits podem representar os niimeros de 0.a 3. Um circuito contador de 1s € Gitil em diversas situacdes, como na detecgo da densidade
de particulas eletrdnicas que estao atingindo um conjuntode sensores. Isso€ feito contando-se quantos sensores estdo ativados. Em acroportos, um outro exemplo sdo os estacionamentos. Por cima das vagas, hd sensores conectados a sinais lu-
Projeto Logico Combinacional
< 85
minosos que informam aos motoristas o niimero de vagas disponiveis em um andar em particular entre os diversos de um edificio de estacionamento (isso € feito contando-se o nimero de zeros, o que € equivalente a contar o niimero de 1s, tendo-se primeiro complementado todas as entradas). Passo 1:
Capture a Suncdo. Neste exemplo, a forma mais natural de se capturar a fungéo é usando uma tabela-verdade. Listamos todas as combinacOes possiveis de entrada e o niimero desejado na saida, como na Tabela 2.6. TABELA 26
Tabela-verdade para o contador do nimero
de 1s Entradas
Passo 2:
(Nimero de 1s)
a
b
c
0
0
0
0
0
0
Saidas y
i
(0)
0
H
1
(1)
0
i
1
0
(1)
0
1
0
1
1
(2)
1
i
1
0
0
(1)
0
1
1
0
1
(2)
1
0
1
1
0
(2)
1
0
1
1
1
(3)
1
1
Converter para equacdes. Criamos as equagdes das saidas como segue: y = a'bc + ab'c + abc' + abc z=a'b'c+a'be' +ab'c' + abc
Podemos simplificar algebricamente a primeira equacio: y = a'bc + ab'c + ab(c' Passo 3:
+ ¢} = a'bc + ab'c + ab
Implemente um circuito baseado em portas. Entio, criamos os circuitos finais das >
duas saidas, como mostrado na Fig, 2.41.
-
by Figura241
Circuito do contador do niimero de 1s baseado em portas l6gicas.
Simplificando as notagoes de circuito No exemplo anterior, um par de novas notacoes simplificadas foi usado em nossos circui‘tos. Em uma dessas notagOes, as entradas sdo especificadas miltiplas vezes para evitar que tenhamos linhas cruzando-se em nosso desenho — assume-se que uma entrada especificada
diversas vezes foi ramificada a partir de uma mesma entrada.
86 » Sistemas Digitais
Uma outra notagdo simplificada € o uso, no
?
140
lugar de uma porta NOT, de uma pequena “bolTha” inversora na entrada de uma porta. Assumese que uma entrada, aparecendo invertida em muitas portas, € aplicada primeiro a uma porta inversora ¢ entfo chega a essas portas através de ramificagoes.
:
3
a— C
P EXEMPLO 226
)
a— — >
g_—o
et
)
& —]
Conversor de um teclado de 12 teclas em
um codigo de 4 bits
P
Vocé provavelmente ja viu teclados de
12 teclas
em muitos lugares, como em um telefone ou uma méaquina de auto-atendimento, como mostrado na Fig. 2.42. A primeira linha t8m as teclas 1,2 e 3, a segunda linha tem as teclas 4, 5 ¢ 6, a terceira linha, 7, 8 ¢ 9, e a dltima linha, *, 0 e #. As saidas
fl
—r1
fl
12
n
n
a——
-
n
n
—
+
*
*
n
de um teclado como esse consistem em sete sinais
— um para cada uma das quatro linhas (r1, r2, r3e
r4) e um para cada uma das trés colunas (c1, c2 e ¢3). Apertando uma tecla em particular faz com que exatamente duas safdas tornem-se 1, correspondentes & linha e & coluna daquela tecla. Assim, quando apertamos a tecla “1”, temos rl = lecl = 1, a0 passo que, quando apertamos a tecla “#”, obtemos r4 = l'ec3 = 1.Queremos projetarumcircuitoque converte 0s sete sinais do teclado em
um
ha,:
Figura2.42
Teclado de 12 teclas.
nimero
de quatro bits wxyz indicando qual tecla foi pressioNeste exemplo, comegar com equacoes, emvez de uma tabelaverdade, & uma escolha mais natural, mesmo que tenhamos usado
uma tabela informal {ndo uma tabelaverdade) para nos ajudar a determinaras EqUACTES.
TABELA 27
nada. Queremos que as teclas “0” a *9” sejam codificadas como 0000 a 1001 (0 a9 em bindrio), respectivamente. Vamos codificar a tecla “*” como 1010, # como 1011 e vamos fazer com que 1111 signifique que nenhuma tecla estd sendo pressionada. Vamos assumir por enquanto que apenas “uma’” tecla pode ser pressionada em um instante qualguer. Poderfamos capturar as fungdes para w, X, y ¢ z usando uma tabela-verdade,
com as sete entradas, nas colunas do lado esquerdo da tabela, e as quatro saidas, no lado direito. Entretanto, essa tabela teria 2’ = 128 linhas ¢ a maioria delas corresponderia simplesmente a diversas teclas pressionadas simultanea~ mente. Em vez disso, vamos tentar capturar as funcoes usando equagbes. A Tabela 2.7 informal pode nos ajudar no comego.
Tabelainformal do conversor de teclado de 12 teclas para cddigo de 4 bits
Tecla
Saidas do cddigo da 4 bits W X ¥ z
Sinais
Tecla
Saidas do cédigo de 4 bits
Sinais
w
X
¥
z
1
n
¢l
0
0
0
1
8
3
c2
1
0
0
0
2
M
c2
0
0
1
0
9
3
3
1
0
0
1
3
Mm
c3 |
0
0
1
1
K
o2
|
1
0
1
0
4
2
¢l
0
1
0
0
0
M
c2 |
0
0
0
0
5
2
c2
0
1
0
1
#
4
3
1
0
1
1
6
2
¢3|
0
1
1
0
{(nenhuma)
1
1
1
1
7
R
cl
0
1
1
1
Projeto LAgico Combinacional
< 87
Dentro de um teclado padrio de computader hd um
Um problema
_pequeno microprocessador e uma meméria ROM 0 microprocessador detecta qual tecla estd sendo. aper-
irritante com as
tada, consulta na ROM qual& o ¢6digode 8 bits daquel’a tecla (de forma mmio semémante a0 teclado
crever era que,
méquinas de es-.
quando se tentava digitar
a0, nompu:adm H4 uma h:sténa m!.'cressantcsobrc como as teclas foram dmpostas em um teclado padrio de PC, conhecido como teclado QWERTY por-que essas 530 as teclas que estdo no lado esquerdo da
rdpido
demais, as hastes segmdamemei emperravam, aglomerando-»se
linha superior das letras. A disposwfio QWERTY foi
lado a ]hdfi"pféiima do papel — como
feita na era das maguinas de escrever (mostrada na
‘soas demais tentant passar a0 MESMO tempo. pot uma.
quando pes-
_-figura abalxe) No caso de vocé nio ter visto uma, cada tecla era’ cflnectada a uma haste de metal que podia girar para cima e pressionar uma fita de tinta ‘contra uma folha de papel.
porta. Como consegqiiéncia, as tficlas das mfiqmnas
de escrever foram dispostas na fnnna,QWEHI‘Y para que a velficlclade de digitacao fosse diminuida por meio. do afasmmenra ‘entre si: das le!r&s mais usadas,
;Jé que uma velocidade menor de dlmlagfin reduzia ‘as ocorréncias de. figlfimem{;fin de teclas, Quando os PCs foram mventados a d:spns:gfi{:- QWERTY foia
escolha natural de teclado pOrqueas pessoas estavam acostumadas 4 USAr essa dlSpDSlI;fiO Algumas pes-
s0as dizem que o chamado teclado Dvorak, com uma disposicio diferente de teclas, permite t.’uguar mais rap1damente. No entanto, esse t:po de teclado ndo € MUito cComMUM porque as pessoas mmplemnente estio’
‘muito acostumadas a usar o teclado QWERTY..
Teclas conectadas a hastes:
=r3c2 = r2cl =rlcg
1
NSM
E
Usando essa tabela, podemos obter equa¢Ges para cada uma das quatro saidas, como segue: + r3c3 + rdcl + r4c3 + r2¢2 + r2c3 + r3cl + ric3 + r2c3 + r3cl
+ rl'r2'r3'rd'cl'c2'c3’ + rl'r2'rd'rd'cl'c?2'c3’ + vdcl + rdc3 + r1'r2'r3'rd'cl'c2’'c3’
rlel + rlc3 + r2¢2 + r3cl + r3c3 + rd4c3 + r1'r2'r3'r4'cl'c2'c3’
Poderiamos entfio criar um circuito para cada saida. Obviamente, o dltimo termo de cada equa¢do poderia ser compartilhado por todas as quatro saidas. De modo semelhante, outros termos
poderiam ser compartilhados também (como r2c3). Observe que esse circuito ndo funcionaria bem se multiplas teclas fossem pressionadas ao mesmo tempo. Nessa situaciio, 0 nosso circuito ird gerar como safida um cdédigo vilido ou ndo, dependendo de quais teclas foram pressionadas. Seria preferivel um circuito que tratasse essa situacio de diversas teclas apertadas a0 mesmoe tempo como se nenhuma tecla estivesse sendo pressionada. Deixamos o projeto desse circuito como exercicio. Nos teclados de computador, existem circuitos semelhantes a esse que acabamos de projetar, exceto que hd muito mais linhas e colunas. 2.8 MAIS PORTAS Anteriormente, introduzimos trés portas 16gicas basicas: AND, OR ¢ NOT. Os projetistas também usam comumente diversos outros tipos de portas logicas: NAND, NOR, XOR ¢
XNOR.
NAND e NOR NAND
Uma porta NAND (abreviatura de “NOT AND”) tem a safda oposta de uma porta AND,
ki
produzindo um 0 quando todas as entradas sdo 1, ¢ um 1 se qualquer uma das entradas for 0. Uma porta NAND tem o mesmo comportamento de uma porta AND seguida de uma NOT. A Fig. 2.45(a) ilustra uma porta NAND. Uma porta NOR (abreviatura de “NOT OR”) tem a saida oposta de uma porta OR,
—
i
produzindo um 0 quando no minimo uma das entradas € 1, e um 1 se todas as entradas
forem 0. Uma porta NOR tem o mesmo comportamento de uma porta OR seguida de uma NOT. A Fig. 2.45(b) ilustra uma porta NOR. Anteriormente, na Segéio 2.4, chamamos a ateng@io para que nossas implementagdes das
portas AND e OR, usando transistores CMOS, ndo eram realisticas. Aqui estd o porqué. Acontece que, na realidade, os transistores pMOS ndo conduzem muito bem os 0s; mas conduzem bem os 1s. De modo semelhante, os transistores nMOS nio conduzem muito bem os 1s, mas conduzem bem os 0s. As razoes dessas assimetrias estdo além dos objetivos deste livro. No entanto, as implicagbes s@o que as portas AND ¢ OR que construimos antes (veja a Fig. 2.8) ndo sfo factiveis, ja que elas baseiam-se na capacidade dos transistores pMOS de conduzir Os (entretanto, os pMOS
conduzem mal os
0s) e dos nMOS
de conduzir 1s (entre-
tanto, os nMOS conduzem mal os 1s). Por outro lado, se permutarmos a fonte de alimentacfio pela terra nos circuitos AND ¢ OR da Fig. 2.8, obteremos as portas mostradas nas Figs. 2.45 (a) e (b). Essas portas tém o comportamento das NAND e NOR. Isso faz sentido pois os 1s de saida sdo substituidos por 0s e os 0s por 1s.
| {a)
Figura 245
{b)
(e)
(d)
Portas adicionais: (a) NAND, (b) NOR, (¢) XOR ¢ (d) XNOR.
90 » Sistemas Digitais
Ainda podemos em CMOS,
implementar uma porta AND
X—
mas fariamos isso acrescentando uma
porta NOT A saida de uma porta NAND (uma NAND seguida de uma NOT da uma AND), como esta mostrado na Fig. 2.46. De modo semelhante, implementariamos uma porta OR acrescentando uma porta NOT 2 saida de uma porta OR. No entanto, isso € obviamente mais lento do que um cir-
cuito implementado diretamente como NAND ou NOR. Felizmente, podemos aplicar métodos imediatos para converter qualquer circuito AND/OR/ NOT em um circuito constituido apenas por portas
3_
.
R—C’l
> EXEMPLO 228
‘
.
ID-—V
_|
L{q
3
X
V—|
NANDs ou NORs. Descreveremos esses métodos na Secao 7.2, '
F
o= . Figura246
_ Porta AND em CMOS.
Luz de sinalizacéio de um lavatério de avido
usando uma porta NAND
No Exemplo 2.15, foi desenvolyido uma luz de sinalizagio
Circuito
de lavatorio desocupado que usava a seguinte equagao: a
Observando que o termo no segundo membro da equa¢ao corresponde a uma NAND, podemos implementar o circuito usando uma vnica porta NAND, como estd mostrado na Fig. 2.47. -«
—
c
Figura 247
4
Circuito gue usa
porta NAND.
XOR e XNOR jD_
Uma porta XOR de 2 entradas, abreviacio de “exclusive or (OR exclusivo)”, produzird uma saida 1 se exatamente uma das duas entradas for 1. Assim, se e¢ssa porta tiver entradas a e b, entdo a saida F serd 1 se a=1 e b=0, ou se b=1 e a=0. A Fig. 2.45(c)
ilustra uma porta XOR (por simplicidade, omitimos a sua implementacfio em nivel de transistor). No caso de portas XOR com 3 ou mais entradas, a safda serd 1 apenas se o niimero de 1s de entrada for impar. Uma porta XOR de 2 entradas € equivalente a funcdo F = ab' + a'b, Uma porta XNOR, abreviaciio de “exclusive nor (NOR exclusivo)”, € simplesmente o oposto de uma XOR. Uma XNOR de 2 entradas € equivalenteaF = a'b' + ab. AFig. 2.45(d) ilustra uma porta XNOR, tendo-se omitido por simplicidade a implementagio em nivel de transistor.
Usos interessantes para essas portas adicionais
o
D_
’
Detectando somente 0s usando uma NOR Uma porta NOR pode detectar a situacido de um item de dados ser igual a 0, porque uma porta NOR produz um 1 de saida apenas quando todas as entradas sio 0. Por exemplo, suponha que, em seu sistema, uma entrada de um byte (8 bits) esteja em
contagem decrescente de 99 a 0. Quando o byte chegar a 0, vocé quer que um alarme seja soado. Voc€ pode detectar quando o byte € igual a O simplesmente conectando os 8 bits do byte a uma porta NOR de 8 entradas.
Projeto Logico Combinacional
29 DECODIFICADORES E MULTIPLEXADORES Dois componentes adicionais, o decodificador € o multiplexador, também sdo comumente usados como blocos construtivos de circuitos digitais, mesmo que ¢les préprios possam ser construidos usando portas 16gicas.
Decodificadores Um decodificador é um bloco construtive de nivel mais elevado comumente usado em circuitos digitais. Um decodificador, como o nome diz, decodifica um niimero bindrio de n bits de entrada colocando exatamente uma das 2" saidas do decodificador em 1. Por exemplo, um
decodificador de duas entradas, ilustrado na Fig. 2.50, tem 2° = 4 saidas, d3, d2, d1 ¢ d0. Seas duas entradas 1110 forem 00, entfio d0 serd 1 e as demais saidas serdio 0. Se 11i10=01, d1 sera 1. Se 1110=10, d2 serd 1. Se 11i0=11, d3 ser4 1.
O projeto interno de um decodificador € imediato. Considere um decodificador 2x4. Cada saida d0,d1, d2 e d3 é uma funco distinta. A saida d0 deve ser 1 apenas quando 11=0e 10=0 de modo que d0
= i11'i0'. De modo semelhante, d1=i1'10, d2=1110" e d3=1110. Assim,
‘construimos o decodificador com uma porta AND para cada safda, ligando os valores de ile i0 ou seus complementos a cada porta, como mostrado na Fig. 2.50.
B dof—1
do}—o
dof—0
doj—0
0—i0
dif—0
1—i0
di—1
0—i0
d1—0
1—i0
di—o0
o—i1
dz-0 da-o
o—i1
d2f-0 dat-o
1—i1
a1 430
1 EXEMPLO 2.29
Perguntas basicas sobre decodificadores
1. Quais seriam os valores de saida de um decodificador 2x4 guando as entradas sdo 007 Resposta: d0=1, d1=0,
d2=0 e d3=0.
2. Quais seriam os valores de saida de um decodificador 2x4 quando as entradas sdo 00? Resposta: d0=1, d1=0, d2=0 e d3=1. 3. Quais sio os valores de entrada de um decodificador 2x4 que fazem com que mais de uma das saidas estejam em 1 ao mesmo tempo? Resposta: Tais valores de entrada ndo existem.
Em um dado momento, apenas uma das saidas do decodificador pode estar em 1. 4. Quais serfio os valores de entrada de um decodificador se os valores de saida forem d0=0, dl=1, d2=0 ¢ d3=0. Resposta: Os valores de entrada devem ser i1=0¢ i0=1. 5. Quais serio os valores de entrada de um decodificador se os valores de saida forem d0=1,
d1=1,
d2=0
e d3=0. Resposta: Esta pergunta nio € vdlida. Em qualquer momento, um
decodificador tem apenas uma saidaem 1.
6. Quantas saidas teria um decodificador de cinco entradas? Resposta: 2° ou 32. > EXEMPLO 230
de 4
bits) Q
]|
a1
| @]
I
|
M3 12 11 10 > reg(4)
Q302Q1Q0
leggs
Figura 3.30 A estrutura interna (& esquerda) de um registrador bdsico de quatro bits ¢ o simbolo para diagrama de blocos (a direita).
Esse registrador, construindo de modo simples a partir de multiplos flip-flops, € a forma mais bésica de um registrador, tdo bésica que algumas empresas chamam esse registrador de simplesmente “flip-flop D de 4 bits”. No Capitulo 4, iremos descrever registradores mais avan-
gados, ou seja, registradores com mais caracteristicas ¢ com mais possibilidades de operagao, > EXEMPLO 3.2
Mostrador da histéria de temperaturas que usa registradores
Queremos projetar um sistema que grave o valor da temperatura externa a cada hora e exiba as tltimas trés temperaturas registradas, de modo que um observador possa ver a tendéncia da tem-
peratura. Uma arquitetura do sistema estd mostrada na Fig. 3.31. Um temporizador gera um pulso C que € aplicado & entrada de rel6gio a cada hora. Um sensor
de temperatura fornece a temperatura atual na forma de um niimero bindrio de cinco bits, variando de 0 a 31 e correspondendo a temperaturas na escala Celsius. Um mostrador numérico ¢ construfdo usando trés displavs com entradas bindrias de cinco bits cada uvm.
Sistemas Digitais
Atual
1 hora atras
2 horas atras
Display
Display
Display
a4 a3 a2 a1a0l
bdb3b2bl1b0
o
126 »
JEEEEE!
Figura 3.31 Sistema que mostra o histdrico
sensor de
)
temperatura
x4
Bl ETI S
EE LT ¢4 ¢3 c2 el
el
x3 ArmazenamentoHistéricoTemperatura
{Na pratica, evitariamos conectar a saida C do temporizador a uma entrada de reldgio, ligariamos a saida de um oscilador 8 uma entrada de reldgio.)
de temperaturas.
Podemos implementar o componente, que chamaremos de ArmazenamentoHistéricoTempe-
ratura®, usando trés registradores de cinco bits, como estd mostrado na Fig. 3.32. Cada pulso de C carrega a temperatura atual em Ra através das entradas x4, ... x0 (carregando os cinco flip-flops que estio dentro de Ra com os cinco bits de enlrada) Ao mesmo tempo, esse registrador Ra € carregado com a tumpumtura atual e o registrador Rb € carregado com o valor que estava em Ra, De modo semelhante, Rc € carregado com o valor de Rb. Os trés armazenamentos ocorrem ao mesmo
tempo, isto ¢, na borda de subida de C. O efeito é que o0s valores que estavam imediatamente antes da borda do relgio em Ra ¢ Rb sio deslocados para Rb e Rc, respectivamente.
TRy, A A4
TERY. A A
ad|a3d|a2|al]al
Bt Pl b i3 12
Q4 Q3 Qz
-u-%h-n
a1
-l-x—h-lfl
Qo
&
0
&
&
l_> Ra
b4
14 i3 12
Q4 Q3 Q2
n o
a
10
Q0
TRy A A i
|b3|b2|b1|b0
cd|c3|c2|cl|cO
14 13 12
1 8
o
Q4 Q3 a2
nooa
———10
1—> Rb
Qo
|—> Re ArmazenamentoHistéricoTemperatura
Figura3.32
Estrutura interna do componente ArmazenamentoHistoricoTemperatura.
A Fig. 3.33 mostra alguns exemplos de valores que estio presentes nos registradores, em diversos ciclos de reldgio. Assume-se que todos os registradores tinham 0s inicialmente e que, conforme 0 tempo avanga, as entradas x4, ... X0 1&m os valores mostrados no topo do diagrama de tempo. Figura
3.33
Exemplos
de valores presentes nos registradores de ArmazenamentoHistéricoTemperatura. Um item de dados em particular, o 18, aparece movendo-se através
dos registradores a cada ciclo de relégio.
x4..x0—_15 [13-[ 20| 21 ] 21| 22| 24| 24| 24| 25| 25| 26 26| 26 | 27| 27 27| 27
I
c
I
I
|
Ra
XA‘EB X
X
24
X
2
X
2
X
=z
R
0
X
0 ?\16
X
22
X
22
X
8
X
2
Re
o
X
o
o ?*13
¥
#H
X
%
X
5
X
*N. de T: Essa forma de escrever o nome do componente tem a ver com as linguagens de descrigiio de hardware (HDL), como serd visto mais adiante,
Projeto Légico Seqiiencial — Blocos de Controle controle | elk
>
_"D:' ; bacients
como esse estd mostrada na Fig. 3.34.
Um cirurgidio ativa o laser pressionando Figura3.38 Sistema temporizador de laser. vm botdo. Assuma entdo que o laser deve permanecer ativado por exatamente 30 ns. Assumindo que o periodo de nosso relégio € 10 ns, entio 30 ns significa 3 ciclos de relogio. (Assuma que b estd sincronizado com o relégio e permanece alto por apenas | ciclo de relégio.) Precisamos projetar um componente de bloco de controle que, tendo detectado que b=1; mantém x em nivel alto por exatamente3 ciclos de relégio, ativando portanto o laser por exatamente 30 ns. Esse € um exemplo para o qual uma solugio por software poderd nio funcionar. Usando apenas comandos comuns de programagcfio para ler as portas de entrada e escrever nas portas de saida, € possivel que n@o consigamos uma maneira de manter uma porta em nivel alto por exatamente 30
ns — como, por exemplo, no caso de a fregiiéncia do relégio do microprocessador nio ser rdpida o suficiente, ou quando cada comando necessita de dois ciclos para ser executado. Vamos tentar criar uma implementagdo para o sistema que serd baseada em um circuito segiiencial. Depois de pensar a respeito por algum tempo, poderemos chegar 4 implementacfo (ndo tio boa) da Fig. 3.55.
128 » Sistemas Digitais
Sabendo que precisamos manter a saida em nivel
alto durante trés ciclos de rel6gio, usamos trés flip-flops. A idéia € fazer com que um 1 seja deslocado através desses trés flip-flops, levando trés ciclos de relégio para que o bit percorra todos eles. Aplicamos as saidas dos trés flip-flops a uma porta OR, a qual gera um sinal x de modo que, se qualguer flip-flop tiver um 1, o laser serd -acionado. Fizemos b ser a entrada do primeiro flip-flop,
de modo que quando b=1, o primeiro flip-flop armaze-
nard um 1 no proximo ciclo de relogio. Um ciclo de re-
b
wlp B
cik '
Figura 3.35
Primeira tentativa (ruim)
g implementagio do sistema de cirur-
gia a laser.
16gio depois, o segundo flip-flop serd carregado com 1 e, assumindo que b tenha agora voltado a 0, o primeiro flip-flop serd carregado com 0. Um ciclo de relégio apds, o terceiro flip-flop serd carregado com 1 ¢ o segundo flip-flop, com 0. Finalmente, mais um ciclo de relégio e o terceiro flip-flop serd carregado com 0. Desse modo, apds o botdo ter sido apertado, o circuito mantém a saida x em 1 durante trés ciclos de relégio.
EXEMPLO 3.8
Compreendendo o comportamento do bloco de controle do temporizador de laser
Para melhor compreendermos como um bloco de controle implementa uma FSM. vamos analisar o
comportamento do bloco de controle para o temporizador do laser de trés ciclos em nivel alto. Assuma que inicialmente estamos no estado 00 (s1s0=00), b € 0. O reldgio estd em nivel baixo, no momento. Como mostrado na Fig. 3.51 (lado esquerdo) e baseando-se na Iégica combinacional, x serd 0
(o valor desejado de saida para o estado 00), nl serd 0 e n0 serd 0, significando que o valor 00 estard esperando na entrada do registrador de estado, Assim, na préxima borda de reldgio, 00 serd carregado no registrador de estado. Isso significa que iremos permanecer no estado 00, o que € o correto. x=0
QW b
@Ligh b
0
clk
21
—{>0
o}
clk
0
=
clk
‘o estado=00
=1
—{>0 0
1
Entradas:
0
50
gk
1
estado=00
ST
> 0 14
T
1
BsD to
estado=01
I b
Saidas: X
Figura 3.51
Andlise do comportamento do bloco de contrele para o temporizador do laser de trés
ciclos em nivel alto.
Agora, suponha que b torne-se 1. Como mostrado na Fig. 3.51 (no meio), x ainda serd 0, como desejado, mas n0 serd 1, significando que o valor 01 estara esperando na entrada do registrador de estado.
Assim, na préxima borda de reldgio, 01 serd carregado no registrador de estado, como desejado. Como mostrado na Fig. 3.51 (lado direito), um pouco depois de 01 ter sido carregado no registrador de estado, x ird se lornar 1 (apds a carga no registrador, haverd um pequeno atraso de tempo para que 0s novos valores de s1 ¢ s0 propaguem-se através das portas da l6gica combinacional). Essa saida
¢ a correta — devemos gerar uma saida x=1 quando estamos no estado 01, Além 1 e n0 serd igual a 0, significando que o valor 10 estara esperando na entrada do Assim, na proxima borda de relégio, 10 serd carregado no registrador de estado, Depois de 10 ter sido carregado no registrador de estado, x permanecerd
disso, nl ird se torar registrador de estado. como se deseja. 1 ¢ nln0 ird se tornar
11. Quando vier uma outra borda de reldgio, 11 serd carregado no registrador, x permanecerd 1 e
nln0 ird se tornar 00. Na proxima borda de relégio, 00 serd carregado no registrador. Logo apos, x ird se tornar 0 ¢, se b for 0, n1n0 ird permanecer 00, mas, se b for 1, n1n0 ird se tornar 01. Observe que estamos de volta ao ponto de onde come¢amos.
A compreensdo de como um registrador de estado e uma Iégica combinacional implementam uma maguina de estados pode exigir um pouco de tempo, ji que, quando estamos em um estado
em particular (indicado pelo valor atual do registrador de estado), geramos a saida externa daquele
Prajeto Logico Segiiencial - Blocos de Controle
'F:'?ies;":§;’r
Capture a FSM. Obtemos o comportamento do sistema na forma da FSM mostrada na Fig. 3.54. A FSM tem quatro estados que denominamos de A, B, C e D (embora quaisquer outros nomes nfo repetidos também sejam aceitaveis). ;
Y
I;’
61
Saidas
&0 | e
%
7
0]0
001
HE hi
nl ¢ n0, como mostrado na Fig. 3.55. A légica combinacional nio tem entradas.
A0
Codifiqueos estados. Codificaremos 0s esta-
B
0
1(00
dos como
c
1
ol1
1
b
1
1/1
00000
segue—A: 00, B:0L;
C: 10 e D:
11.
Qualquer outra codificagio, com um codigo
tinico para cada estado, também seria aceitdvel.
01
1110 0
0
1
1
Projeto Logico Seqiiencial - Blocos de Controle < 141
Passo4:
Crie a tabela de estados. A tabela de estados para a FSM com os estados codificados estd mostrada na Tabela 3.4.
Passo 5:
Implemente a légica combinacional. Deduzimos as equagdes para as saidas
o ,L_
da légica combinacional a partir da
g
_.;_D_"'"""
tabela. Depois de algumas simplificagdes algebricas, as equagdes sd3o as seguintes:
o —
w=sl
'\T‘\\
Al/
X = sls0'
{
{>c
y =sl's0 z
a it 4 3 -z =
Dc I
8
s
=gl
s‘iT
*30 Registrador
nl = sl xor s0
clk—m=—"> de estado
ng = sg*
et
> EXEMPLO 3.11
+ A
final st floshack maFig. 356)
Figura 3.56 Arquitetura do bloco de controle do gerador de seqiiéncia.
Chave de carro segura
Vamos completar o projeto do bloco de controle de chave de carro segura do Exemplo 3.5. Do processo de cinco passos, ja realizamos o de “Capture a FSM”, tendo-se obtido a FSM mostrada na Fig: 3.41. Os demais passos sdo 0s seguintes. Passo 2:
Crie a arquitetura. Como a FSM tem cinco estados, precisaremosde um registrador de estado de trés bits. Esse registrador pode representar oito estados. Portanto, trés
estados ndo serdo usados. O sinal a € a entrada da Jégica combinacional, ac passo que as saidas sfio o sinal r ¢ as saidas de proximo estado n2, nl e n0. A arquitetura esta mostrada na Fig. 3.57.
Passo 3:
Codifigue os estados. Vamos codificar os estados usando uma codificagio bindria continua de 000 a 100. A FSM com as codificacdes de estado estd mostrada na Fig. 3.58.
hid
82 g i
@
—fi—
—
£8 | combinaciona wee o
r
p
o
o
a
28
Entradas; a; Saidas:r E‘
nl
n0
[
Regisioco
32*
51
sfl’
clk—="> de estado
fn{
r=0
‘
Passo4:
i
a
(cony—={or0)—(orm)—=(100) r=1
Figura 3.58 Figura 3.57 Arquitetura do bloco de controle para a chave de carro segura,
a
r=1
=0
r=1
FSM da chave de carro segura
com 0s estados codificados:
Crie a tabela de estados. A FSM convertida em uma tabela de estados estd mostrada na Tabela 3.5. Para os estados que ndo foram usados, decidimos fazer r=0 e o estado seguinte ser 000.
142 » Sistemas Digitais
Passo 5:
Implemente a légica combinacional. Para implementar a 16gica combmacu:@al,j podemos projetar quatro circuitos, um para cada
TABELA35 Tabela de estados para o bloco de controle da chave de carro segura Entradas Saidas
saida. Deixamos esse passo como
sz
sl
s0
ar
nZ
nl
nd
o
0
0
0|0
0
0
O
0o
0o
1
0|1
o
1
o
g
¢
¢
S04
8
&
9
¢
1
0
¢f1
0
1
1
a
¥
0o
1|F
0
1.
1
¢
1
1
o0
I
O
O
¢
1
1
Vo
1
&
@
. 1 T
0 o 8
0 o0 4
111 mlE
0 o 0
O o 6
O o %
1 1
01 1 0
1) o0f0
0 0
0 0
0 0
uma equagio ou FSM € conhecida como “fazer a engenharia reversa” do comporta-
i
i
i
oale
§
om
o
mento do circuito.
1
1
1
1/0
0
0
D0
exercicio para o leitor.
< Espera
Mais sobre o projeto de blocos de controle
R Convertendo um circuito em uma FSM
K1
Mostramos na Sec¢do 2.6 que um circuito,
uma tabela-verdade e uma equagdo eram todos maneiras de se representar a mesma
combinacional.
De
modo
seme-
_ e , , lhante, um circuito, uma tabela de estados
-
K3
e uma FSM sdo todos maneiras de se representar a mesma fung¢io seqiiencial. : Estivemos convertendo uma FSM em um circuito usando um processo de ¢inco passos. Podemos também converier um circuito em uma FSM, aplicando o processo de cinco passos da Tabela 3.2 ao contririo.
K4
|2
ol
) .
Em geral, a converso de um circuito em ~ Naousado
o
Dado o circuito seqiiencial da Fig. 3.59, encontre a FSM equivalente. Comegamos com 0 passo 5 do processo de
cinco passos descrito na Tabela 3.2. O circuito combinacional j4 foi implementado-e, portanto, podemos passar para o passo 4, onde criaremos uma tabela de estados.
A légica combinacional da arquitetura do bloco de controle tem trés entradas: duas entradas, 50 e s1, representando o contetido do registrador de estado, ¢ uma entrada, x, que & uma enirada externa. Portanto, a nossa tabela ke Ly de estados terd oito linhas porque ha 2'=8 com-
) JUUY
Convertendo um circuito segiiencial em uma FSM Entradas da FSM
P EXEMPLO 3.12
i
&
17 ™
st
binacoes possiveis de entrada.
nl
}.l
nQ
4 IIL 50 Registrador
clk—m>> de estado
Depois de termos montadoa tabela de estados e enumerado todas as combinagdes possfveis de entradas (por exemplo, s150x=000,
2
.., s150x=111), usamos as técnicas descritasna
Figura 3.58
Se¢do 2.6 para preencher os valores de saida.
:
fungdo
'
L
1l o
Um
e
circuito segiiencial com
— comportamento desconhecido,
Por exemplo, considere a saida y. Do circuito
combinacional, vemos que y = s1'. Sabendo disso, colocamos um 1 em todas as casas da coluna
y da tabela de estados em que s1=0 e colocamos um 0 nas demais casas da colunay. Agora, considere n0, 0 qual vemos que tem a equacao booleana n0 = s1's0'x. Conseqiicntemente, fazemos n0 ser 1, quando 51=0, s0=0 ¢ x=1. Usando uma andlise similar, preenchemos as colunas zenle passamos a0 passo seguinte.
Projeto Légico Seqiiencial - Blocos de Controle
de estado
. Figura 3.90 Circuito seqiiencial no qual deve-se fazer engenharia reversa.
SECAO 3.5: MAIS SOBRE FLIP-FLOPS E BLOCOS DE CONTROLE 3.47 Considere trés flip-flops T ligados como mostrado na Fig. 3.92. Analise o comportamento dos flip-flops completando o diagrama de tempo da Fig. 3.91, Assuma que inicialmente todos os flipflops contém Os.
a1 Q2 a3
Figura 391 Diagrama de tempo para o padido de entradas do flip-flop T do Exercicio 3.47. ai T——T
0 a 15 e entdo retorna a 0 novamente—em outras palavras, ele faz a contagem 0000, 0001, 0010; ...; 1111 e retorna a 0000, Sugestio: considere o uso da saida QQ de um flip-flop como sendo a entrada de reldgio de um outre flip-flop. Assuma qgue inicialmente todos os flip-flops contém Os.
a»
Q
T
> _l_
a
T
> 1_
a
E
3.48 Mostre como conectar quatro flip-flops T entre si para criar um circuito que contade
B I_
¢
Figura 3.92
Trés flip-flops T.
3.49 Defina metaestabilidade. 3.50 Projete um bloco de controle que tem um registrador de estado de quatro bits. Quando uma en-
trada de reset € colocada em 1, ele € inicializado de forma sincrona com o estado 1010. 3.51 *Projete um flip-flop D com entradas assincronas de reset (AR) ¢ set (AS), usando portas 1Ggicas
bésicas.
Projeto Logico Seqiiencial — Blocos de Controle
< 165
» PERFIL DE PROJETISTA Brian graduou-se como bacharel em engenharia elétrica ¢ trabalhou por vérios anos. Ao perceber que haveria manda pelo projeto digital baseado em um tipo cada vez mais popular de chip digital, conhecido como FPGA (veja o Capitulo 7), ele retornou & universidade para obter um grau de mestre em engenharia elétrica, com uma dissertacao cujo tema tinha como alvo o projeto digital
no final.” Assim, era importante ser capaz de trabalhar sozinho e em grande grupo. Isso exigia capacidade para exercer uma boa comunica¢fio e trabalhar em grupo. Além disso, também era importante compreender nio apenas uma das partes do sistema, mas os aspectos importantes das demais partes, exigindo conhecimento sobre diversos assuntos. Atualmente, Brian é consultor independente de projeto digital. Depois de adquirir experiéncia em seus campos, muitos engenheiros eletricistas, engenheiros de computagdo e cientistas de computagio passam a fazer consultoria. “Eu gosto da flexibilidade que um consultor tem. O aspecto positivo € trabalhar em uma ampla variedade de projetos. A desvantagem ¢ que al-
baseado em FPGAs. Ele trabalhou em duas companhias
oumas vezes eu s6 trabalho em uma pequena parte de
diferentes e agora estd trabalhando como consultor independente na 4rea de projeto digital. Ele participou de diversos projetos, incluindo um sistema que impede a ocorréncia de incéndio em casas, desarmando um disjuntor quando a corrente que circula no circuito indica que estid ocorrendo um arco voltaico, uma arquitetura de microprocessador para acelerar o
um projeto, em vez de acompanhar um produto desde o seu inicio até estar concluido. Naturalmente, ser um consultor independente significa que hd menos estabilidade do que quando se ocupa uma posigao regular em uma empresa, mas eu nfo me preocupo com isso.” Brian tirou vantagem da flexibilidade proporcionada pela consultoria e assumiu um emprego de tempo parcial para dar aulas em uma disciplina de projeto di-
uma
futura
de-
processamento de video digitalizado e uma mdaquina para mamografia que permite a localiza¢io exata de tumores em mulheres. Um dos projetos que lhe pareceu mais interessante foi uma escaneadora de bagagens para detectar explosivos. “Nesse sistema, hi muitos dados sendo adquiridos, além de motores funcionando, raios X sendo emitidos e outras coisas, tudo acontecendo ao mesmo tempo. Para ser bem-sucedido, vocé tem que dar atencio aos detalhes e comunicar-se com as demais equipes do projeto, de modo que todos fiqguem no mesmo barco.” Ele achou aquele projeto particularmente interessante porque “‘estava trabalthando em uma pequena parte de uma méaquina muito grande ¢ complexa. Tinhamos de manter o foco na nossa parte do projeto e, a0 mesmo tempo, perceber como todas as partes iriam se encaixar
aital & outra de sistemas embarcados em uma universi-
dade. “Eu realmente gosto de dar aula e aprendi muito ensinando. Eu também gosto de introduzir os estudantes no campo dos sistemas embarcados.” Quando perguntado a respeito do que ele mais gosta no campo de projeto digital, ele responde “gosto de construir produtos que tornem a vida das pessoas mais ficil, segura e divertida. Isso € muito satisfatério”. Perguntado sobre que conselho daria aos estudantes, ele diz que uma coisa importante é “fazer perguntas. Nio tenha receio de parecer estiipido quando vocé fizer perguntas em um novo emprego. As pessoas nao esperam que vocé saiba tudo, mas esperam realmente que
vocé pergunte quando se sentir inseguro. Além disso, fazer perguntas € uma parte importante do aprendizado™.
Componentes de Blocos Operacionais » 4.1 INTRODUGAO Os Capitulos 2 e 3 introduziram blocos construtivos gradativamente mais complexos que podem ser usados para construir circuitos digitais. Esses blocos eram as portas légicas, os multiplexadores, os decodificadores, os registradores bdsicos e finalmente os blocos de controle. Os blocos de controle sido bons na implementacdo de sistemas que tenham alguns sinais de controle na entrada e que gerem alguns sinais de controle na saida. Por exemplo, se vermos
que uma entrada de controle em particular tornou-se 1 (correspondendo talvez a um botio que foi apertado), entdo poderemos querer gerar um 1 em uma saida de controle (correspondendo possivelmente a uma lampada que deve ser acesa). Neste capitulo, iremos focar na criagdo de blocos construtivos que sio bons para sistemas com entradas e saidas de dados. Em geral, os sistemas digitais tém dois tipos de entradas (e de saidas, também): ¢
Controle: Uma entrada de controle tem tipicamente um bit, o qual representa algum evento
especifico que esta ocorrendo fora do sistema, como um botio que estd sendo apertado, ou o estado em estd sendo podem ser esta sendo
que se encontra alguma coisa em particular fora do sistema, como uma porta que fechada ou um carro que estd passando por um cruzamento, As entradas de controle agrupadas em bits miiltiplos, como quatro bits para representar qual entre 16 botoes apertado, ou dois bits para representar cada um de quatro estados possiveis de uma
porta (fechada, um terco aberta, dois tergos aberta e completamente aberta). Normalmente, as
entradas de controle sfio usadas para influenciar o estado atual do bloco de controle. ®
Dados: Tipicamente, uma entrada de dados tem bits miiltiplos, que em conjunto representam uma entidade tnica. Por exemplo, uma entrada de 32 bits pode representar uma temperatura em bindrio. Uma entrada de sete bits pode representar o andar em que um elevador encontra-se em um edificio de cem andares. Uma entrada de dados pode ter apenas um
tinico bit. Essa entrada diferencia-se de uma de controle, de um bit, porque ndo dependemos diretamente do valor desse bit para influenciar o estado atual do bloco de controle. Nem todas as entradas podem ser classificadas rigorosamente como sendo de controle ou de dados, ha algumas entradas que estdo no limite entre esses dois tipos. No entanto, a maioria das entradas pode ser classificada como sendo de um ou outro tipo. (Naturalmente, um sistema digital também tem entradas de alimenta¢ao elétrica, de terra e de rel6gio, além
das entradas de controle ¢ dados.) O bloco de controle € um bloco construtivo usado para se criar sistemas constituidos principalmente por entradas e saidas de controle. No entanto, precisamos também de blocos construtivos para serem usados em sistemas que contenham entradas e saidas de dados. Em
Componentes de Blocos Operacionais
< 167
particular, precisamos de registradores para armazenar 0s dados e unidades funcionais para operar com esses dados (por exemplo, somar ou dividir). Esses componentes sio conhecidos
como componentes do nivel de transferéncia entre registradores — RTL (Register-Transfer Level), ou também componentes de bloco operacional. Um circuito composto por tais componentes € conhecido como bloce operacional®. Os blocos operacionais podem se tornar bem complexos. Portanto, € crucial construir blocos operacionais a partir de componentes que contenham niveis adequadamente elevados de funcionalidade. Por exemplo, se lhe perguntassem que componentes constituem um automovel, vocé provavelmente faria uma lista que incluiria motor, pneus, chassi, carroceria, ¢ assim por diante. Cada um desses componentes exerce uma fungio de alto nivel dentro do todo que € o automd-
vel. Vocé pensou no pneu e nio na borracha, nos cabos internos de aco, na vilvula, nos flancos e em outras partes que constituem o pneu. Essas partes detalhadas fazem parte da estrutura de um pneu, ndo de um automoével. Quando se pensa no carro, 0 pneu ¢ um componente de nivel adequadamente elevado; ndo € o caso de uma vilvula. De modo semelhante, quando projetamos blocos operacionais, devemos dispor de um conjunto de componentes de bloco operacional com nivel adequadamente elevado — as portas l6gicas s@o de um nivel demasiadamente baixo. Este capitulo define tal conjunto de componentes de blocos operacionais e introduz também blocos operacionais simples. No Capitulo 5, veremos como criar blocos operacionais
mais avangados e como combiné-los com blocos de controle para construir um componente de nivel ainda mais elevado, conhecido como processador.
» 42
REGISTRADORES Um registrador de N bits ¢ um componente seqiiencial capaz de armazenar N bits. Larguras tipicas (o niimero de bits N) de registradores sdo 8, 16 e 32, embora qualquer largura seja possivel. Os bits de um registrador freqiientemente representam dados, como oito bits representando uma temperatura na forma de niimero binério. O nome comum usado para armazenar dados em um registrador € carregar, embora as palavras escrever ¢ armazenar também sejam usadas. A acio oposta a carregar um registrador ¢ conhecida como ler os conteiidos de um registrador. A leitura consiste simplesmente em se
conectar as saidas do registrador — note portanto que a leitura nfio estd sincronizada com o rel6gio e, além disso, ela ndo remove os bits do registrador nem os modifica de nenhum modo. Os registradores estdo disponiveis em uma variedade de tipos. Introduziremos alguns dos mais comuns nesta se¢do. Os registradores sdo possivelmente o componente de bloco operacional mais fundamental. Assim, iremos fornecer numerosos exemplos de suas estruturas € usos.
Registrador de carga paralela O tipo mais bdsico de registrador, mostrado na Fig. 3.30 do Capitulo 3, consiste simplesmente em um conjunto de flip-flops que sio carregados a cada ciclo de relégio. Esse registrador basico € til como registrador de estado em um bloco de controle, ja que ele deve ser carregado em todos os ciclos de reldgio. No entanto, na maioria dos demais usos dos registradores, queremos de alguma forma controlar se, em um ciclo de relégio em particular, um registrador deve ser carregado ou ndo (em alguns ciclos, queremos carrega-lo e, em outros, queremos simplesmente manter o valor anterior).
Podemos obter controle sobre a carga de um registrador colocando um multiplexador 2x1 na frente de cada flip-flop, como mostrado na Fig, 4.1(a) para o caso de um registrador de quatro bits. Quando o sinal de carga (load)** for 0, 10ad=0, e o sinal de reldgio estiver subindo, cada flip*N. de T: Também conhecido por dataparh, caminho de dados, em portugués, ** N, de T: A exemplo de outros sinais que serdio vistos mais adiante, o termo logd serd mantido no original em inglés, tendo em vista o seu amplo uso em livros, textos técnicos, folhas de dados de especificacio, etc.
168 » Sistemas Digitais
Hns‘toncmnenta 0 termo “regi
‘uma tabule
uadro
dor,
parece
bem apropriado.
flop serd carregado com o valor de sua prépria safda Q, como mostrado na Fig. 4.1(b). Como Qé o conteddo atual do flip-flop; ele nio ird mudar quando o sinal 1oad for 0. Quando o sinal de Toad for 1 e o sinal de rel6gio estiver subindo, cada flip-flop serd carregado com uma das entradas de dados 10, I1, 12 ou 13, assim, o registrador serd carregado com as entradas de dados quando load for 1. I3
| load
_1
>
I
I3
12
4
10
a5
o2
a1
oo
load
>
1
| {c)
o
%
1I2
I;I
IE)
_1_4!!—'
.J_J;—l
10
2
I
By
|
D
>
o]
1
D
>
'fl. a2
D 0]
ar
Q0
Figura 4.1 Registrador de quatro bits com carga paralela; (a) estrutura interna, (b) caminhos quando Tead=0 e 1oad=1, (c) simbolodo registrador para diagrama de blocos. Um registrador com uma linha de carga que controla se o registrador € carregado com ‘entradas externas, com todas elas carregadas em paralelo, € conhecido como registrador de
carga paralela. A Fig. 4.1(c) d4 um simbolo de diagrama de blocos para um registrador de carga paralela de quatro bits. O simbolo de diagramade blocos de um componente mostra as suas entradas e saidas sem mostrar os detalhes internos.
Como os registradores sio um componente fundamental dos blocos operacionais, iremos apresentar diversos exemplos envolvendo-os para garantir que o leitor sinta-se a vontade com eles.
» EXEMPLO 4.1
Exemplo basico do uso de registradores
A Fig. 4.2 mostra uma ligaciio simples de trés registradores RO, R/ e R2. Suponha que nos seja dito que os valores de entrada sdo os mostrados no diagrama de tempo da Fig. 4.3(a). Entdo, poderemos determinar os valores nos registradores R0, R1 e R2, como mostrado na Fig. 4.3(b). Antes da
*N. de T: O termo “registro” deu onigem 2 “registrader”, usado em portugués, HA inclusive autores nacionais que usam o termo registro'em vez de registrador,
Componentes de Blocos Operacionais
primeira borda de relégio, eles sdo mostrados como “?72?”,jd que nio sabemos quais sdo eles. Na realidade, sio combi-
o N 1 1
nagdes de quatro valores de 0 ¢ 1. No entanto, desconhecemos quais sdo eles em particular.
< 169
¢
1—fla. 5 12 I 10 clk RO 41> 03 Q2 Q1 Qo
Antes da primeira borda de relégio, vemos que a entrada a3..a0 torna-se
l—l>‘7
1111. Assim, na primeira borda do re-
t
lgio, RO serd carregado com 1111. No mesmo instante, R7 e R2 serdo carregados com o valor de R0O,* que € “?2277, Desse modo, R/ e R2 ainda terdo conteddos “?77777,
{>°
b
{>‘= {>°
1 =Hig
13
Yy 12
>
a3
a2
Antes da segunda borda de relogio, vemos que a entrada a3..a0 muda para
Y 1
VY 10 [4dig R1
Y 13
Y 12
Y 1
* 10 R2
Q1
00
a3
Q2
Qi
Qo
>
r
0001. Assim, na segunda borda de relégio, RO seré carregado com 0001. Simul-
|_
Figura4.2
Exemplo bésico do uso de registradores.
;
R1
I| X
2777
N\
?27?
!
Rz
72
X
"
oo
%\»
A
m
1010
i
0001
i
oco0
X
\M
1010
i i
1010
1010
il
T mio
|
1010 il
0101
D(\""mm
i 1111->0001 i 0001->1010 i 1010
i 1|:¥0
i 1010
| I
1 1
i 1
1 1
| |
|
|
Exal
i| 1M |RO
;[fium ro
]
—
— 'S
i)
i
:
i
e
rd i Rl ihiy, BN
=} =)
>
EXEMPLO 4.3
Mostrador do historico de temperaturas usando registradores (novamente)
Lembre-se do Exemplo 3.2 do Capitulo 3, no qual um temporizador gerava um pulso em uma entrada C a cada hora. Nds ligamos aquela entrada C as entradas de reldgio de trés registradores,
0s quais eram conectados de tal forma que o primeiro registrador era carregado com a temperatura atual, o segundo, com a temperatura anterior a atual, ¢ o terceiro, com a temperatura que precedeu a temperatura anterior a atual, na borda de subida de C. Entretanto, na prdtica, tipicamente ndo conectamos nenhuma entrada, que ndo seja um sinal de relégio (de um oscilador), a entrada de relégio de um registrador. Portanto, podemos refazer o projeto do sistema para que
um sinal de reldgio seja aplicado a entrada de reldgio do registrador, o qual permite carga paralela. Poderiamos entdo ligar a entrada C as entradas de carga dos registradores, como mostrado na Fig. 4.5. A freqgiiéncia do oscilador pode ser mais rdpida do que um pulso por hora. De fato, devido &
natureza de como sdo feitos os osciladores (veja “Como Funciona? Osciladores a Quartzo™ na pégina 119 do Capitulo 3), as suas freqiiéncias estdo no minimo na faixa dos quilohertz. Temos que garantir que, quando o temporizador gera seu pulso hordrio em C, esse serd 1 durante apenas um ciclo de relégio. Se assim nio fosse, os registradores seriam carregados mais de uma vez durante um Gnico pulso (porque, durante esse pulso, muitas bordas de subida do relégio ocorreriam ¢ 0s registradores seriam carregados a cada borda de subida do relégio). Desse modo,
a temperatura atual seria carregada em dois ou mesmo todos os trés registradores. Podemos con-
Componentes de Blocos Operacionais
++nnn A
A
*4.}.}} A
A
ad|a3|a2|al|al —-"E-"M
Q4
—-
as
3
-
I3
2
12
—F?
Ra
I1
a2 o
-"T[O
Qo
C”{& —n
Id
14
Q4
13
Q3
12 L
}ln A
A
b4|b3|b2|b1|b0
Rb
Q2
l
%
an
10
Q0 p——————10
l_>
Id
L4
A
cd4|c3|cZ|cl|cO 14
Q4
13
as
12
11
®
|'9“"p°"zad°'|
Figura45
l
A
< 171
Re
I
|—>
Q2 m Qo
Id
'! nova linha
ArmazenamentoHistoricoTemperatura
Projeto interno do componente ArmazenamentoHistéricolemperatura, que usa registrado-
res de carga paralela. seguir uma saida que fique em nivel alto durante um tnico ciclo, usando o mesmo relégio como entrada do temporizador. Em seguida, projetamos a maquina de estados interna do temporizador para que produza C=1 durante apenas um estado. de modo similar ao que usamos para fazer uma
saida ser 1 durante exatamente trés ciclos no Exemplo 3.7 do Capitulo 3. > EXEMPLO 4.4
D
>
D
(>
a
aQ
’
*
o1
10
10
10
I
i
I
>
a Q
’ Qz
T
b
> Q
*
Q3
1110 o 5
Q3
e
>
a Q2
Qo
>
Q
Q
m
Qo
{b)
(a) — —
Figura 411
Registrador de deslocamento: (a)
shr_in shr
>
implementagdo, (b) blocos operacionais quando shr=1 e (c) simbolo de diagrama de blocos.
da
G2
81
00
I
T
]
T
e
Registrador circular O registrador circular € uma pequena variagdo de um registrador de deslocamento no qual o bit que est4 saindo € enviado de volta (rotacfio) tornando-se o bit que entra no registrador. Dessa forma, o bit mais a direita ¢ deslocado para o flip-flop que estd mais a esquerda, como
mostrado na Fig. 4.12.
L
Y
Conteudos do registrador antes da rotacio a direita:
Y
iR
Y
v
Contetidos de registrador 1
ER
apos a rotagdo a direita
{a)
ib)
Figura4.12 Exemplo de rotagio a direita: (a) contetidos do registrador antes e depois da rotagio, e (b) vista bit a bit da operagfio de rotagio. A implementaciio de um registrador circular € conseguida modificando o projeto da Fig.
4.11. A saida do flip-flop mais a direita, no lugar de shr_in, € colocada na entrada i1 do multiplexador mais 4 esquerda. Um registrador circular precisa de algum recurso para que se possa colocar valores para dentro do registrador, por deslocamento ou por carga paralela. > EXEMPLO 46
Display colocade acima do retrovisor usando registradores de deslocamento
No Exemplo 4.4, refizemos ¢ projeto da conexdo entre o computador central do carro e o sis-
tema de display colocado acima do espelho retrovisor para reduzir o niimero de fios de 32 para 8+2+1=11. No entanto, mesmo 11 fios ainda € muito fio para ser colocado entre o computador e o sistema de display. Vamos reduzir ainda mais o nlimero de fios usando registradores de deslo-
camento no sistema de display. As entradas do sistema de display vindas do computador do carro serdo um bit de dados €, duas linhas de enderego ala0 e uma linha de comando de deslocamento
176 » Sistemas Digitais
shi ft, totalizando apenas quatro fios. Quando o computador precisar escrever em um dos registradores do sistema de display, ele definird valores para ala0 de forma apropriada e ént@o ativard shift com 1 durante A i s exatamente oito ciclos de relégio. Em cada um desses oito ciclos de relégio, o computador atribuird a C cada um dos oito bits de dados que devem carregados. Comegard com o bit menos
Este feixe
devefi'a SE7 D — uns POUCOs
fios, ndo onze.
significativo, no primeiro ciclo de relogio, € termi-
nard com o bit mais significativo, no oitavo ciclo de reldgio. Desse modo, podemos projetar o
sistema de display como mostrado na Fig. 4.13. Nota: essa linha € de 1 bit, ac invés de 8 bits como antes
¢ do
.
&—={shr in
mshr
254
Figura 413 Projeto do sistema de display, para ser colocado acima do espelho retrovisor,
i [ d1
usando registradores de deslocamento para re-
a0 —e=1i0
duzir o niimero de linhas que vém do computador do carro. O computador define os valores
. _ 1,
m-ishr
regl
&
=
8
-
M
'
I
ki
: ": :'i::—l“
8 d
'
3210
3210
DA
LI 3210
shl_in
0 —shiin
1
|
|
|
—_shr_in‘
D
D
D
D
—.:(1)
a
>
a |03
>
>
a |Qz
a |cn
>
B
R
N0
_
03 Q2 01 Q0
|oo
(a)
{h)
Figura 4.16 Registrador de guatro bits com as fungdesde carga paralela, deslocamento 2 esquerda e deslocamento 4 direita: {a) estrutura interna e (b) simbolo para diagrama de blocos.
417
O registrador tem as fung¢des mostradas na Fig.
'
.
o
1 s0
|flp‘efll
0 0
| Mante
Registrador de cargae deslocamento com entradas
2
de controle separadas para cada operagao
o
Geralmente, os registradores nao vém com entradas de controle que codificam a fungdo usando o niimero minimo de bits, como as entradas de controle dos registradores que projetamos antes. Ao contrario, cada fun¢do tem usualmente a sua prépria entradade controle. Assim, um registrador, com as fungdes de carga, ‘deslocamento a esquerda e deslocamento a direita,
Jg;fi‘;ti: 3
i
%fi@%& -
IS0
| TRt Cecloge2ol d dirsita:
%i
1
Ty
. Ty
rHgs
-
1 | Desloque
Figura 417 Tabela de fungdes de um registrador de quatro bits com as operagdes de carga paralela, deslocamentoa esquerda e deslocamento i ‘direita.
pode ter a tabela de fungdes da Fig. 4.18. As quatro fungdes possiveis (manter, deslocar & esquerda, deslocar A direita e carga) necessitam na realidade de apenas duas entradas de con-
trole, mas a figura mostra queo registrador tem trés entradas de controle: 1d, shr e shl. Observe que, se 0 usudrio ativar mais de uma entrada com 1, deveremos decidir qual operacdo deverd ser realizada. Se o usudrio ativar ambas as entradas shr e sh1, daremos prio-
* N. de T: De shift left (shl), deslocamento 3 esquerda, e input (in), entrada, em inglés.
Componentes de Blocos Operacionais < 179
ridade & shr. Se o usudrio ativar 1d e uma ou ambas shr e shl, daremos prioridade 2 1d . A estrutura interna desse registrador € similar ao reglsirador com carga e deslocamento pro-
jetado antes, exceto que as trés
entradas de controle 1d, shr e 'shl precisam ser transformadas usando um circuito combinacional simples nas duas entradass1 e 50 do registrador anterior, cOMO
Figurad.18 Tabelade fungdes de um registrador de quatro b5 com entradas de controle separadas para carga paralela,
mostrado na Fig. 4. 19.
deslocamento & esquerda e deslocamento i direita.
-
shr_in
_
L
L
1
'
mansl
0
Q3
10
11 AR |
.
A
shiin
v
|20
Qo
Q2 Q1
03| az| 01|
F Figura 419
2
B
lhin
e ||| combina*i il
z|n|o
Bl
o
Um pequeno circuito combinacional transforma as entradas de controle 1d, shre.
sh1 nas entradas de selegio 51 e s0 do multiplexador. Podemos projetar o circuito combinacional comegando com uma tabela-verdade Slmples
como a mostrada na Fig. 4.20(a).
_
Assim, obtemos as seguintes equages parao circuito combinacional do registrador: 51 = 1d’ *shr'*shl
50 1d'*shr'*shl
+ 1d "’"Sfir*-S;h] b
-hi_[ “*shr*sh]
+ 1d
(a) Figura 4.20 Tabelas-verdade que descrevem as fungBes de um regmirador com deslocamentos a &squerda ea dlreua, e carga paralala ‘Também estd descnto o mapeamento das entradas de controle do tegistrador para as linhas de selegfio do multiplexador interno 4x1: (a) tabela de funcdes completa que define 0 mapeamento de 1d, shr e sh1 em 51 e 50 e (b) uma versdo compacta da tabela de fungdes.
180 »
Sistemas Digitais
A substituicao da caixa do circuito combinacional da Fig. 4.19 pelas portas descritas pelas equacgoes completard o projeto do registrador.
Tipicamente, as folhas de especificacdo dos registradores mostram a tabela de funces de forma compacta, tirando vantagem das prioridades das entradas de controle, como mostrado na Fig. 4.20(b). Um dnico X em uma linha significa que aquela linha representa na realidade duas linhas da tabela completa, com uma linha tendo um 0 na posigdo do X e outra tendo um 1. Dois Xs em uma linha significa que aquela linha representa na realidade quatro linhas da tabela completa, uma linha tendo 00 na posig¢ao dos Xs, uma outra tendo 01, uma outra 10 e ainda uma outra tendo 11. Da mesma forma, trés Xs representam oito linhas. Observe que, se colocarmos as entradas de controle com prioridade mais elevada no lado esquerdo da tabela,
conseguiremos que as fungdes da tabela permane¢cam bem organizadas. Processo de projeto de registradores A Tabela 4.1 descreve um processo genérico para se projetar um registrador com qualquer nimero de fungdes. TABELA 4.1
1
Processo de quatro passos para se projetar um registrador com mdltiplas fungdes
Passo
Descrigdo
Determine o tamanho da multiplexador
Conte o ndmero de fungdes (ndo esqueca da fungdo que mantém o valor corrente!) e cologue um multiplexadora frente de cada flip-flop com, no minimo, esse niimero de entradas.
2
Crie a tabela de fun¢des do multiplexador
3
Conecte as entradas do multiplexador
Crie uma tabela de fungGes que define as operagdes desejadas para cada valor possivel das linhas de selegdo do multiplexador.
~ Para cada fungao, conecte a entrada de dados correspondente do multiplexador a entrada externa ou saida de flip-flop apropriada {possivelmente passando por alguma légica combinacional) para obter a fungao desejada.
4
Mapeie as linhas de
Crie uma tabela-verdade que mapeia as linhas de controle externas nas
controle
linhas internas de selegd@o dos multiplexadores, com prioridades apropriadas, e entdo projete a logica combinacional que implemente esse
mapeamento.
Iremos ilustrar o processo de projeto de um registrador com outro exemplo. > EXEMPLO 4.7
Registrador com carga, deslocamento e set e clear sincronos
Queremos projetar um registrador com as seguintes fungdes: carga, deslocamento & esquerda, clear sincrono e set sincrono, tendo entradas exclusivas para cada operagio (1d, shl, clr, set). A funcio de clear sincrono em um registrador significa carregar todo o registrador com 0s na préxima borda de subida do relégio. A fungio de set sincrono significa carregar todo o registra-
dor com 1s na préxima borda de subida do reldgio. O termo sincrono estd incluido porque alguns registradores vém com operagdes de clear ou set assincronos. Seguindo o processo de projeto de registradores da Tabela 4.1, realizamos os seguintes passos: Passo 1:
Determine o tamanho do multiplexador. Hi cinco funcées: carga, deslocamento & esquerda, clear sincrono, set sincrono ¢ manutencdo do valor atual. Nao esqueca da fun¢ao que mantém o valor atual, j& que essa operagiio estd implicita.
Passo 2:
Crie a tabela de fungoes do multiplexador. Usaremos as primeiras cinco entradas de um multiplexador 8x1 para as cinco fungdes desejadas. Para as trés entradas restantes do multiplexador, optaremos pela manuten¢io do valor atual, embora essas entradas nunca devam ser utilizadas. A tabela estd mostrada na Fig. 4.21.
Componentes de Blocos Operacionais < 181
Figura 4.21 Tabela de funges de um registrador com carga, deslocamento e set e cleqr sincrono,
Passo 3:
Conecte as entradas do mul'tiple-
xador. Conectamosas entradasdo multiplexador como
Fig. 4.22, a qual mostra apenas 0
:
¢ o multiplexador n-ésimo flip-flop
gf____"" 76543210
por simplicidade.
S0——
Figura 422
A N-sima fatia de um
registrador com as seguintes fungdes:
Passo4:
de Qn-1
ilustrado na
P>
R
manter 0 valor atual, carga paralela,
a
deslocar & esquerda, clear sincrono e
*
Mapeie as linhas de controle. Daremos a prioridade mais elevada 2 entrada ¢1r, seguida por set, 1d e sh1, Assim, as entradas de controle do registrador serio mapeadas nas linhas de selegae do multiplexador 8x1 como mostrado na Fig. 4.23.
Figura 423 Tabela-verdade para as linhas de controlede um registrador com a N‘ésima fatia mostrada na Fig. 4.22. Observando cada saidada Fig. 4.23, deduzimos as equacdes quedescrevem o circuiito que ma-
‘peia as entradas de controle externas nas linhas de seleciio do multiplexador. Assim, obtemos: 52 = clr'*set sl = clr'*set'*1d'*sh]
+ clr
s0 = clr'*set'*1d + clr Entdo, poderemos criar um circuito combmamonai que implementa essas equagdes, as quais ‘mapeiam as entradas externas de controle do registrador nas linhas de sele¢fio do multiplexador, completando assim o projeto do mgstmdfir. «
Alguns registradores vém com entradas de controle de clear assincrono efou sef assincrono. Essas entradas podem ser implementadas conectando-as s entradas de clear efou set assincronos jd existentes nos préprios flip-flops.
182 » » 43
Sistemas Digitais
SOMADORES A adic@o de dois nimeros bindrios € possivelmente a mais comum das operagoes que € rea-
lizada com dados em um sistema digital. Um semador de N bits € um componente de bloco operacional que adiciona dois niimeros A ¢ B gerando uma soma S de N bits ¢ um transporte (o “vai um”) C de 1 bit. Por exemplo, um somador de quatro bits adiciona dois ndmeros de quatro bits, como 0111 e 0001, resultando uma soma de quatro bits, 1000 no caso, e um transporte
de 0. A adicao 1111 + 0001 produz um sinal de transporte de 1 ¢ uma soma igual a 0000 ou 10000, no caso de vocé tratar o bit de transporte e os bits de soma como sendo um resultado
de cinco bits. Fregiientemente, N € referido como sendo a largura do somador. O projeto de somadores que sejam rdpidos e eficientes, mesmo que tenham um grande tamanho (largura),
¢ um tema que vem recebendo uma considerdvel atengdo ha muitas décadas. Embora parega que possamos projetar um somador de N bits seguindo o processo da Tabela 2.5 para se projetar 16gica combinacional, ocorre que a construgido por esse processo de
um somador de N bits deixa de ser pratico quando N € muito maior do que guatro. Um somador de quatro bits tem duas entradas de quatro bits, ou seja, oito entradas no total, e tem quatro saidas de soma e uma saida de transporte. Assim, poderiamos construir o somador usando o processo padrao de projeto de légica combinacional da Tabela 2.5. Por exemplo, um somador de dois bits, que adiciona dois nimeros de dois bits, poderia ser projetado comecando com a tabela-verdade mostrada na Fig. 4.24. Poderiamos entdo implementar a 16gica usando uma implementagao de dois niveis baseada em portas logicas para cada uma das saidas. Entradas
Saidas
Entradas
Saidas
al 0
a0 0
b1 0
boO o0
¢ 0
s1 0
s0O O
al 1
a0 0
b1 0
bho o0
¢ 0
sl 1
sO 0
0
0
0
1
0
0
1
1
0
0
1
0
1
1
0
0
1
0
0
1
0
1
0
1
0
1
(1]
0
0
0
1
1
0
1
1
1
0
1
1
1
0
1
0
1
0
0
0
0
1
1
1
0
0
0
1
1
o
1
0
1
a
1
0
1
1
0
1
1
0
0
0
1
1
0
0
1
1
1
1
1
0
1
0
1
o
1
1
1
1
0
0
11
1
1
0
Figura 424
1
Tabela-verdade para um somador de dois bits.
O problema desse processo € que, para somadores com larguras maiores, resultam tabelas-verdade muito grandes e portas I6gicas demasiadas. Um somador de 16 bits tem 16 + 16
= 32 entradas, significando que a tabela-verdade terd mais de quatro bilhdes de linhas. Uma implementacao de dois niveis dessa tabela, baseada em portas l6gicas, provavelmente exigiria milhdes de portas. Para ilustrar esse ponto, realizamos um experimento no qual usamos o processo padriio de projeto légico combinacional para criar somadores com larguras crescentes, comegando com somadores de um bit ¢ daf para cima. Usamos a ferramenta de projeto l6gico
mais avangada disponivel no mercado e solicitamos que ela criasse um circuito com dois niveis de l6gica combinacional (um nivel com portas AND que alimentam uma porta OR, no segundo nivel, para cada saida) ¢ um ndmero minimo de portas (na realidade, transistores).
O gréfico da Fig. 4.25 resume os nossos resultados. Observe com que rapidez o nimero de transistores cresce com a largura do somador. Esse crescimento rdpido € um efeito do crescimento exponencial-se a largura do somador for N bits, 0 nimero de linhas na tabelaverdade serd proporcional a 2V (mais precisamente, a 2”*”) . Naturalmente, esse crescimento exponencial impede-nos de usar o processo de projeto padrio para somadores com larguras superiores a 0ito ou dez bits. No nosso experimento, ndo conseguimos completd-lo para lar-
Componentes de Blocos Operacionais
guras maiores do que oito bits — a ferra-
< 183
10000
menta simplesmente niio pode completar
8000
o projeto em tempo razodvel. Ela pre-
g
cisou de trés segundos para construiro
&
6000
somador de seis bits, quarenta segunldos para o somador de sete bits ¢ trinta minutos para o de oito bits. Depois de um dia. inteiro, o somador de nove bits ainda nio tinha sido terminado. Analisando esses
g =
4000 2000 o :
2
=
#*.
&
&
F
b
dados, podera vocé prevero ndmero de transistores exigidos para um somadorde
Figura4.25
16 bits, ou de 32 bits, usando dois niveis de pprtas?
Com
base
Por que somadores de muitos bits de
largura ndo sdo construidos usando a légica com-
na figura, parece
binacional padrio de dois niveis—observe o cres-
que o nimero de transistores duplica a
cimento exponencial? Quantos transistores seriam
cada aumento de N. Temos cercade 1000
necessdrios para um somador de 32 bits?
transistores para N = 5, 2000 transistores para N = 6, 4000 para N =7 e 8000 para N = 8. Assumindo que essa tendéncia continua para
somadores mais largos, entdo um somador de 16 bits teria oito duplicactes além do somador de oito bits. Isso significa que o somader de oito bits serd multiplicado por 2°= 256. Assim, um somador de 16 bits exigiria 8000 * 256 = cerca de dois milhdes de transistores. Um somador de 32 bits exigiria dezesseis duplicactes além do somador de 16 bits, significando que o somador de 16 bits serd multiplicado por 2'°= 64K, ou seja, dois milhGes vezes 64K = acima de 100 bilhdes de transistores. Esse € um nimero exorbitante de transistores. Estd claro que precisamos de uma outra abordagem para projetar somadores com larguras maiores.
Somador — estilo propagacéo de “vai um” (carry-ripple) H4 uma outra abordagem, ao invés do processo padriio, para se projetar um circuito 16gico combinacional capaz de somar dois niimeros bindrios. Consiste na criagdo de um circuito que imita a forma pela qual nés somamos & méo dois nimeros; isto €, uma coluna de cada vez. Considere a adi¢ao, coluna a coluna, de um niimero bindrio A=1111 (15 na base 10) e um
outro B=0110 (6 na base 10), como mostrado na Fig. 4.26.
Figura 426
Adigdo de dois nimeros
a coluna. bindries & mio, coluna
01
0
*
‘
1
o
+
0
10
+ 1
101
*
101
=2
+
-
011
+
+
-
1
0
1
Em cada coluna, somaremos trés bits para obter o bit de resultado da soma além do bit de
“vai um” para a préxima coluna. A primeira coluna € uma excecdio, porque somaremos apenas dois bits, mas ainda assim estaremos produzindo uma soma ¢ um bit de “vai um”, O bit de “vai um” da altima coluna torna-se o quinto bit da soma, resultando 10101 (21 na base 10). Podemos projetar um componente combinacional para fazer tal adigio, a qual necessa-
riamente deve se realizar em uma Gnica coluna, As entradas e saidas desse componente estio mostradas na Fig. 4.27. Entéo, tudo que precisamos fazer € projetar esse componente, para que realize a adigdo em uma coluna, e em seguida conectar diversos deles, como mostrado na Fig. 4.2'?',_ criando assim um somador de quatro bits. Tenha em mente, no entanto, que esse método de criagio de somadores tem por objetivo o projeto eficiente de somadores com
184 » Sistemas Digitais
larguras maiores, como o de oito bits visto antes ou com mais bits. Estamos ilustrando esse método por meio de um somador de apenas quatro bits, porque essa largura de bits torna os
nossos niimeros pequenos ¢ faceis de serem lidos. No entanto, se realmente necessitarmos de um somador de quatro bits, o processo padrao para se desenvolver o projeto logico combinacional em dois niveis também funcionard bem.
e A1 +
Figura 427 ponentes
Uso de comcombinacionais
B
0=
1
1
0
1
b
b
a
G
s
rvya ci | o
para somar dois ndmeros
|
&
| ‘
bindrios coluna a coluna.
L1
1 1
vy | vvw | ob b -a ci
ci
SRS
*
0
0
&
S
| * 1
L 0
a B
* 1
SOMA
Agora, projetaremos os componentes de cada coluna da Fig. 4.27. Meio-somador
Um dois um” dois
meio-somador ¢ um componente combinacional que adiciona bits (a e b) e gera uma soma (s) e um bit de transporte de “vai (co)*. (Note que nde dissemos que um meio-somador soma niimeros de dois bits — um meio-somador adiciona simples-
mente dois bits.) O componente na extrema direita da Fig. 4.27 €
e
|l
um meio-somador. Ele soma os dois bits (a e b) da coluna mais a direita e produz a soma (s) e o “vai um” (co). Usando o processo
R Figura
diretode projeto l6gico combinacional do Capitulo 2, podemos projetar um meio-somador como segue:
yardade de um meiospnisdor.
| e 4.28 Tabela-
Passo 1: Capture a fun¢do. Usaremos uma tabela-verdade para capturar a fungio. A tabelaverdade apropriada estd mostrada na Fig. 4.28. Passo 2: Converta para equagdes. serveque aequacios = a'b + ab' Passo 3: Crie somador, que esta mostrado tra o simbolo,
Vemos claramente que co = abes éamesmaques
o circuito. O circuito de um meioimplementa as equagdes anteriores, na Fig. 4.29(a). A Fig. 4.29(b) mosusado em diagramas de blocos, do
= a'b + ab'. Ob-
= a xor b. = | | F‘_—\I—\/
melo__snmador_
[ 1 T Meiog-somador
MS
Somador completo
\I_/
Um somador completo ¢ um componente combinacional que adiciona trés bits (a, b e ci) e gera
uma soma (s) e um bit de transporte de “vai um” (co). (Note que ndo dissemos
que um somador
completo adiciona dois niimeros de trés bits —um
somador completo adiciona simplesmente frés *#N. de T: De carry out, transportar para fora, em inglés.
clo sl.
| ¢o
| $
(a) Figura 429
b} Meio-somador; (a) circuito
¢ (b) simbolo para diagrama de blocos.
Componentes de Blocos Operacionais
< 185
bits.) Os trés componentes da Fig. 4.27 siio somadores completos. Cada um soma dois bits mais o bit de transporte de “vem um” (¢1),* que vem da coluna da direita, produzindo a soma
(s) € o “vai um” (co). Usando o processo direto de projeto 16gico combinacional, podemos projetar um somador completo como segue: Passo 1: Capture a funcdo. Usaremos uma tabela-verdade para capturar a funcéo, a qual estd mostrada na Fig. 4.30.
S E“'f;" s :“l_-:
(e
e
i
Passo 2: Converta para equagdes. Obtemos as seguintes equacdes para co ¢ s. Por simplicidade, escreveremos ci
como c. Usaremos métodos algébricos para simplificar as equagoes. co = a'bc ¢o = a'bc
+ ab'c + abc' + abc + abc + ab'c + abc + abc'
+ abc
co = (a'+#a)bc + (b'+b)ac + (c'+c)ab co = bc +ac + ab s ==a'b'c
+ a'bc'
+ ab'c!
LA
s =a'(b'c+ be') +a(b'c' + be) s =a'(b xor c) + a(b xor c)' 5§ =a
xorb
AL
+ abc
Figura 430 Tabela-verdade do somador completo.
xorc
Durante a simplificacgfo algébrica da equagéo de co, notamos que cada um dos trés pri-
meiros termos pode ser combinado com o dltimo abc, porque cada um dos trés primeiros ‘termos € diferente do Gltimo em apenas uma varidvel. Assim, criamos trés instancias (cpias) do ultimo termo abe (0 que nio altera a fungio) e combinamos esses termos com cada um dos trés primeiros. Nao se preocupe se agora vocé niio conseguir acompanhar essa simplificagio; a Secdo 6.2 apresentard métodos que tornam essa simplificacio mais direta. Se vocé ja leu aquela se¢o, vocé poderd tentar o uso de um mapa de Karnaugh (introduzido naquela seciio) para simplificaras equagdes.
Passo 3: Crie o circuito.
O circuito
a
b
de um somador completo estd mos-
1
4
trado na Fig. 4.31(a). A Fig. 4.31(b)
G
mostra o simbolo, usado em diagramas de blocos, do somador completo.
|
pa
=
ES
=S
T
| b| ci|
a
Somador
)
completo
Somador de quatro bits com
propagagao do bit de transporte de
86
“vaium” Usando trés somadores completos e um meio-somador, podemos proje-
tar um somador de quatro bits com propagacgio de “vai um”. Ele soma dois nimeros de quatro bits produ-
zindo a soma de quatro bits e também o bit de transporte de “vai um”, como mostrado na Fig. 4.32.
*N. de T: De carry in, transportar para dentro, e inglés,
J gigyra 431
' (a) Somador completo: (a) circuito e (b) sim-
415 para diagrama de blocos.
186 » Sistemas Digitais
a3 b3
a2 b2
al bl
a0 b0
||
||
||
||
a boci
a b
a b
ab
sC
sC
sC
co
co
s
co
I
|
5
MS
co
s
s2
b3b2b1b0
Somador de guatro bits
co
5
co
|
|
|
]
s3
0 a3a281a0
81
s3s52s51s0
111
s0
(a)
{b)
Figura4.32 Somador de quatro bits: (a) implementagio com propagacio do bit de transporte de “vai um'’ usando trés somadores completos e um meio-somador € (b) simbolo para diagrama de blocos. Podemos incluir um bit de *vem um™ no somador de quatro bits. Isso nos permitird conectar somadores de quatro bits, formando somadores com larguras maiores de bit. Para incluir 0 bit de “vem um”, substituimos 0 meio-somador (que estava na posigdo de extrema direita)
por um somador completo, como mostrado na Fig. 4.33. a3 b3
a2 b2
a1l b1
a0 bO ci
a
a
a
a
|l
[l
b i sC g
co
83
co
L
b ¢
sC
co
o
T
b
sC 5
co
|
52
b o sC
s
st
co
|
b3b2bibo
Somador de quatro bits ¢j p— 5
co
T
5352 sls0
11
s0
(a)
Figura 433
0 a3a2ala0
{bl
Somador de quatro bits: (a) implementagfio com propagacfio do bit de transporte e
uma entrada de “vem um”, e (b) simbolo de diagrama de blocos.
Vamos analisar o comportamento desse somador. Suponha que todas as entradas tenham sido Os por um longo tempo. Isso significa que S serd 0000, co serd 0 e todos os valores de ci nos somadores completos também serdo 0. Agora, suponha que simultancamente A torne-se 0111 e B, 0001 (sabemos que a soma dos dois ¢ 1000). Esses novos valores de A e B irdo se
propagar através dos somadores completos. Suponha que o atraso de um somador completo seja 2 ns. Assim, 2 ns apés A ¢ B terem mudado de valor, as saidas de soma dos somadores completos 1rdo mudar, como mostrado na Fig. 4.34(a). Desse modo, s3 ird se tornar 0+0+0=0 (com c03=0), s2 ird se tornar 1+0+0=1 (com €02=0), s1 ird se tornar 1+0+0=1 (com col=0), e 80 ira se tornar 1+1=0 (com co0=1). No entanto, 1111+0110 ndo deve ser 00110—pelo contrario, deveria ser 01000. O que € que acontecen de errado? Nio aconteceu nada de errado; o somador com propagaciio do “vai um” simplesmente
ndo estd pronto depois de apenas 2 ns. Ap6s 2 ns, co0 mudou de 0 para1. Agora, devemos dar tempo para que ¢ novo valor de ¢o0 propague-se através do préximo somador completo. Assim, apos mais 2 ns, sl serd igual a 1+0+1=0 e c02 ird se tornar 1. Desse modo, ap6s 4 ns (o atraso de dois somadores completos), a saida serd 00100, como mostrado na Fig. 4.34(b). Fique esperando. Apds um terceiro atraso, o novo valor de ¢o2 terd se propagado atraves do préximo somador completo, resultando que s2 ird se tornar 1+0+1=0 e co2 serd igual a 1. Assim, depois de um atraso de trés somadores completos, a saida serd 00000, como mostrado na Fig, 4.34(c). 56 mais um pouco de paciéncia. Apés um quarto atraso de somador completo, coZ tera tido tempo para se propagar através do dltimo somador, resultando que s3 ird sé tornar
Componentes de Blocos Operacionais
00 ,
10,
‘iou
110
aboc
a boci
a
a ba
SC
5C
Ly
T0
ey
0s3
L) SC
e©%
SC
Lol©'
152
0111+00M
L
bci
< 187
G"
34
550
saidaapss2ns i1 SCdeatraso)
{a) 000
100
101
abca
a b
a b
a bci
SC
SC
SC
SC
10
co
g 8
Ly
co
1
s
€0
0 |‘!’|
O S
!
:
i
o
1
;lg.
11
s
|1]
col
|!|
.:|3.
Saida apds4 ns {2 SCs de atraso}
(b fl_(}n
101
a bci
a bci
g b
abci
SC
SC
SC
SC
LS
co
8
co
| 0|
&4,
a
101
=
-
s 0
co o
4
=T S
11
co
0
S 0
01}1
101
1'01
11
& b sC
a bci sC
g bci s5C
a bci sC
o
o
T
o
s
o
1
T
s
=
5 0
L (d}
5 0
o
O
.
Saida apds 6 ns {3 8Cs de atraso)
S Saida apos 8 ns {4 5Cs de atraso)
Figura 434 Exemplificagio da soma 0111+0001 usando um somador de quatro bits com propagagiio de “vai um”. Temporariamente, a safda ird exibir resultados incorretos (espurios) até que o bit de transporte que se origina no somador completo mais a direita tenha tido tempo de se propagar atéo somador completo mais & esquerda.
0+0+1=1 e co3 permanecerd 0. Assim, depois de um atraso de quatro somadores completos, a safda serd 01000, como mostrado na Fig. 4.34(d), sendo que 01000 € o resultado correto.
Hd diversas formas de se denominador os somadores. Preferimos a expressio “propaga-
Recapitulando, até que os bits de transporte tivessem tido tempo para se propagar através de todos os somadores, da direita a esquerda, a saida nao estava correta. Os valores intermedidrios sio conhecidos como valores espiirios. O atraso do somador de quatro bits, ou seja, 0 tempo que precisamos esperar
¢dode vai um” para
até que a saida torne-se o valor estdvel correto, é igual ao atraso de quatro so-
ser consistente com 0s
madores completos, ou 8 ns neste caso, que € o tempo necessirio para que os bits de transporte propaguem-se através de todos os somadores; dai o termo somador com propagagdo de “vai um”. No inicio, os estudantes confundem fregiientemente somadores completos
nomes de outros tipos de somadores, como “selecdo de vai um”
e “antecipacdo de vai um’’; gite serdo descri-
tos ne Capitulo 6,
com somadores de N bits. Um somador de trés bits adiciona dois nimeros de trés bits. Um somador completo produz um bit de soma e um bit de “vai um”.
Usualmente, um somador completo € usado para somar apenas uma coluna de dois nimeros binarios, ao passo que um somador de N bits € usado para somar dois nimeros de N bits.
188 »
Sistemas Digitais
Um somador de N bits fregiientemente apresenta um bit de “vem um”, de modo que o somador pode ser colocado em cascata com outros somadores de N bits para formar somadores
maiores. A Fig. 4.35(a) mostra um somador de oito bits construido a partir de dois somadores de quatro bits. Quando somamos dois nimeros de oito bits, devemos fazer o bit de “vem um” a direita ser 0. A Fig. 4.35(b) mostra o simbolo para diagrama de blocos desse somador de oito bits. ala6aSad
b7 b6b5hbd
a3 a2 al a0
b3 b2 b1 b0
a3azala0l
b3b2blb0
a3azalald
b3b2b1bo
Somador de quatro bits ci co
Somador de quatro bits ¢i —
s352s1s0
N
EIN
co
57 56 shsd
a’Z. a0
co
b7. b0
Somador de oito bits
s3s2s1s0
co
s7.s0
[
TTEETTT
L[] 53 s2 51 80
(a)
Figura 435
¢i —
{b)
Somador de oito bits: (a) implementagdo com propagagdo de “vai um” construida a
partir de dois somadores com propagacio de “vai um” e (b) simbolo de diagrama de blocos.
> EXEMPLO 48
Calculadora que realiza somas baseada em DIP-switch
Vamos projetar uma calculadora muito simples que pode somar dois niimeros bindrios de oito bits ¢ produzir um resultado de oito bits, Os niimeros bindrios de entrada virdo de chaves DIP de oito botdes deslizantes e a saida serd mostrada através de oito LEDs, como mostrado na Fig. 4.36. Uma chave DIP (Dual Inline Package)* de oito bits € um componente digital simples com botdes ou chaves que um usudrio pode mover para cima ou para baixo. Em cima, é gerado um 1 no bit
correspondente e, em baixo, € gerado um 0. Um LED (light-emitting diode) ¢ apenas uma peguena lampada que acende, quando a entrada do LED € 1, e apaga, quando a entrada ¢ 0.
Podemos implementar essa calculadora utilizando no bloco CALC um somador de oito bits com propagacio de “vai um”, como mostrado na Fig. 4.36. Quando uma pessoa move 0s botdes da chave DIP, novos valores binarios propagam-se através das portas do somador. Isso produz saidas intermitentes ¢ conseqiientemente faz com que alguns LEDs pisquem rapida-
LRI
o
=
Chaves DIP
Somador de oito bits com propagacao de “vai um” co
Figura 436 Uma calculadora para realizar soma baseada em chaves DIP de oito bits. A figura
citl—o
s7.s0
[)I)l
Ik&
. . . . . . . .
CALC LEDs
mostra a soma 2+3=3.
*N. de T: Encapsulamento Dual Inline. A expressiio “Dual Inline” refere-se a duas filas (linhas) de pinos em paralelo que estéio
embaixo da chave, usados para conectar eletricamente os botdes deslizantes a outros circuilos.
Componentes de Blocos Operacionais
< 189
mente até que finalmente os valores tenham se propagado através de todo o circuito. Nesse momento, a saida estabiliza-se e 0os LEDs exibem corretamente a nova soma.
Se quisermos evitar o piscar dos LEDs, devido aos valores intermitentes, poderemos introduzir no sistema um botdo i (significando “¢€ igual a”), que indicard quando o novo valor devera ser exibido. Apertaremos o botdo i somente apos ter configurado as duas chaves DIP com novos valores de entrada que deverdo ser somados. Podemos usar a entrada 1 com um registrador, como na Fig. 4.37. Conectamos a entrada i a entrada Toad de um registrador de carga paralela. Quando uma pessoa move as chaves DIP, novos valores intermitentes aparecem nas saidas do somador. No entanto, esses valores serdo bloqueados na entrada do registrador, a0 mesmo tempo que o registrador mantém o valor anterior e conseqilientemente os LEDs estardo exibindo esse valor. A seguir, quando o botdo i € pressionado, o registrador
serd carregado na préxima borda de relégio e entdo os LEDs irdo exibir o novo valor. Observe que o valor exibido serd correto apenas se a soma for igual ou inferior a 255. Poderiamos ligar co a um quinto LED para exibir somas entre 256 e 511.
PR, SN (e
o
=
Chaves DIP
a7.al
Figura 437 Uma calculadora para realizar somas, baseada em chaves DIP de oito bits, usando um registrador para bloquear as saidas espu-
rias nos LEDs. Esses LEDs siio atualizados somente apds o botdo ser pressionado, fazendo com que o registrador de saida seja carregado.
b7.b0
Somador de oito bits
e
ci —0
s7.s0
| I-:-=
Ik
i
I
~
Registrador de oito bits
I | DS
I )
O
[N
| |
T
[
. . ‘ . . . . .
CALC |
LEDs
Atraso e tamanho de um somador com propagacédo de “vai um” Assumindo que os somadores completos sdo implementados usando dois niveis de portas
(portas AND seguidas por uma OR) e que cada porta tem um atraso de 1 ns, vamos calcular o atraso total de um somador de 32 bits com propagagio de “vai um”. Iremos calcular também o tamanho de um somador como esse.
Para determinar o atraso, observe primeiro que o “vai um” deve se propagar desde o primeiro somador completo até o trigésimo segundo. O atraso do primeiro somador € 2 portas * 1 ns/porta = 2 ns. Agora, 0 novo “vai um” deverd se propagar através do segundo somador completo, resultando em mais 2 ns, e assim por diante. Desse modo, o atraso total do somador de 32 bits serd 2 ns/somador completo * 32 somadores completos = 64 ns. Para determinar o tamanho, observe que um somador completo requer aproximadamente cinco portas (dizemos aproximadamente porque a porta OR de trés entradas de um somador requer mais transistores do que uma porta AND de duas entradas. Uma porta XOR de trés entradas requer ainda mais transistores). Como o somador de 32 bits tem 32 somadores completos, o tamanho total do somador de 32 bits, com propagacio de “vai um”, serd 5 portas/ somador completo * 32 somadores completos = 160 portas.
0 somador de 32 bits, com propagagiio de “vai um”, tem um atraso grande, mas um nimero razodavel de portas. Na Secdo 6.4, veremos como construir somadores mais rapidos, a
custa de mais portas, mas usando ainda um namero razodvel de portas.
190 » Sistemas Digitais
> EXEMPLO49
Balanca com compensacdo de peso usando um somador
Uma balanca, como de banheiro, usa um sensor para determinar o peso de alguma coisa {como uma pessoa) que esteja sobre ela. As leituras feitas desse mesmo
Sensor
7,21
de peso
6 @ 2 57373
objeto podem variar com o tempo, devido ‘a0 desgaste do sistema de sensor (como
00000 L1
uma mola que perde a elasticidade), re-
YYYYYYYY
sultando possivelmente na exibicdo de um peso que € alguns quilogramas me-
a7.a0
b7.b0 I
nor. Assim, a balanca pode ter um botdio
co ‘
e
s7..s0 ‘ ‘ *
ser acrescentado a um dado peso antes de
& ‘ *
Yy 1—={id clk4———m=>
compensacio de 0, 1,2, ..., 7, como mos-
Registrador
;
do mostrador
H1
trado na Fig. 4.38,
Podemos implementar o sistema usando um somador de oito bits, com
.
Somador de oito bits
que a pessoa gira para Compensar o peso menor. O botfo indica o valor que deve ser exibido. Suponha que 0 botdo possa . T ser ajustado para produzir um valor de
Hflwrn
Ajusie
de Peso
111
TYYYYYYY Figura4.38
B soustrador Balanga com compensagio: o mostrador
propagagiio de “vai um”, como mostrado
circular exibe um nimero de 0 a 7 (000 a 111). Esse
na figura. Em cada borda de subida do
niimero é somado ao peso que foi medido produzindo
rel6gio, o registrador do mostrador serd carregado com a soma do peso medido mais o valor de compensacio. «
yma soma que entfio € exibida.
» 4.4 DESLOCADORES O deslocamento de bits € uma operagao comum aplicada a dados. O deslocamento pode ser usado para manipular bits, como quando queremos inverter a ordem dos bits de um nimero. O deslocamento € ttil para se transmitir dados serialmente, como foi feito no Exemplo 4.6. O deslocamento também ¢ (til para multiplicar ou dividir por dois. Na base 10, vocé deve estar familiarizado com a idéia de que se pode multiplicar por 10 acrescentando simplesmente
um 0 a um niimero. Por exemplo, 5 vezes 10 é 50. Acrescentar um 0 € o mesmo que realizar o deslocamento de uma posic¢io A esquerda. Do mesmo modo, na base 2, pode-se multiplicar por 2 acrescentando um 0, ou seja, deslocando os bits uma posi¢io a esquerda. Assim, 0101 vezes 2 € 1010. Além disso, na base 10, pode-se multiplicar por 100 acrescentando-se dois Os, ou seja, um deslocamento de duas vezes A esquerda. Desse modo, na base 2, pode-se multiplicar por 4 fazendo um deslocamento de duas vezes a esquerda. Na base 2, deslocar os bits 4 esquerda trés vezes é o mesmo que multiplica-los por 8, e assim por diante. Como deslocar
bits & esquerda € 0 mesmo que multiplics-los por 2, deslocar a direita € o mesmo que dividi-
los por 2. Assim, 1010 dividido por 2 € 0101.
|
Embora o deslocamento possa ser feito usando um registrador de deslocamento, algumas vezes precisamos de um componente combinacional especifico para realizd-lo. Isso deve ser feito deslocando nimeros diferentes de posi¢des e em ambos os sentidos.
Deslocadores simples Um deslocador de N bits ¢ um componente que pode deslocar uma entrada de N bits um certo nimero de vezes para gerar uma saida de N bits. 0 deslocador mais simples faz um deslocamento de uma posi¢ao em um dado sentido. Digamos que queiramos um deslocador para fazer um deslocamento de uma posigio a esquerda. O projeto desse deslocador simples € imediato, consistindo simplesmente defios, como mos-
Componentes de Blocos Operacionais
< 191
trado na Fig. 4.39(a) para o caso de um deslocador de quatro bits. Observe que o deslocador
tem uma entrada adicional (in, de input, entrada) para o valor que dever4 ser deslocado para a posi¢do do bit mais a direita.
|| !
4
:
lin
;
el
e
inR—
= inL
o1|lo1]lo1]|o1
/
111
.
—in -sh
shL
shR
(b}
(¢)
{a)
Figura4.39 Deslocadores combinacionais: (a) deslocador a esquerda com o simbolo de diagrama de blocos mostrado embaixo, (b) componente de deslocamento 2 esquerda ou de passagem, (c) componente de deslocamento a esquerda/direita ou de passagem. Um deslocador mais avancado pode fazer deslocamentos de uma posicao i esquerda quando uma entrada adicional sh (de shift, deslocar) for 1, ou deixaras entradas passa-
rem atraveés do componente até as saidas sem realizar deslocamentos quando sh for 0. Podemos projetar esse deslocador usando multiplexadores 2x1, como mostrado na Fig. 4.39(b). Um deslocador ainda mais avan¢ado poderd fazer deslocamentos de uma posigéo a esquerda ou & direita, como mostrado na Fig. 4.39(¢c). Quando ambas as entradas de controle forem 0, os valores de entrada passam através do componente sem sofrer alteragtes. Quando 'shL=1, o deslocador faz um deslocamento & esquerda e, quando shR=1, o deslocador faz um ‘deslocamento a direita. Quando ambas essas entradas de controle sfio 1, o deslocador pode ser
projetado para gerar 0s na saida, pela ligagdo de 0s as entradas 13 dos multiplexadores (ndo mostrado). Outras expansdes desse deslocador simples sfo possiveis, como permitir deslo‘camentos de uma posig¢ao ou duas. As estruturas internas desses deslocadores com miltiplas fungtes requerem multiplexadores grandes e o mapeamento das entradas de controle para as linhas de selecdo dos multiplexadores, exatamente como se tornou necessario no projeto dos registradores com mdltiplas funcées.
> EXEMPLO 410
Um conversor aproximado de graus Celsius para Fahrenheit usando um deslocador
Recebemos um termdmetro digital que digitaliza a temperatura em
graus Celsius produzindo um niimero bindrioC de oito bits. Assim, 30
%
eraus Celsius seria digitalizado como 00011110, Queremos converter
't 8
‘essa temperatura em graus Fahrenheit, novamente com oito bits. A equaciode conversao necessiria &: F=(*g/5
/
+ 32
U Q0100000
8
Vamos assumir que nao estamos preocupados com a exatidioe, assim, substituiremos a equac¢io por uma mais simples:
i
Somador de oitc bits
F=C*2 # 32
iB ;
:
%
F
Podemos projetar o conversor facilmente usando um deslocador a esquerda (com o valor de entrada de deslocamento igual a 0) paracal-
_ Conversor
Figura 440
cular €*2, ¢ entéio um somador para acrescentar 32 (00100000), como
de graus Celsius para
mostrado na Fig. 4.40.
Fahrenheit.
192 »
Sistemas Digitais
» FAHRENHEIT VERSUS CELSIUS Os Estados Unidos representam a temperatura usando a escala Fahrenheit, ao passo que a maior parte do mundo usa a escala Celsius do sistema métrico. Presidentes e outros lideres americanos tém desejado a mudanga para o sistema métrico hd quase tanto tempo guanto a existéncia dos Estados Unidos. Muitas leis foram promulgadas ao longo dos séeulos,
sendo que a mais recente foi a Metric Conversion Act de 1975 (emendada diversas vezes desde entio). Essa lei designa ¢ sistema métrico como sendo o sistema preferido de pesos e medidas para ser usado nas ati-
vidades comerciais dos Estados Unidos. Mesmo assim, a mudanca para o sistema métrico tem sido lenta e atualmente poucos americanos sentem-se confortdveis com ela. O problema dessa transicdo lenta foi pungentemente demonstrado em 1999 quando a nave
> EXEMPLO 4.11
espacial Mars Climate Orbiter, custando diversas centenas de milhdes de délares, foi destruida ao entrar rdpido demais na atmosfera de Marte. A razao: “um erro de navegagao resultou de alguns comandos da espagonave terem sido enviados em unidades inglesas ao invés de terem sido convertidas para unidades métricas.” (Fonte: www.nasa.gov). Serd que, se¢ todos os leitores deste livio que moram nos Estados Unidos usassem a escala Celsius quando estivessem
conversando, ndo irfamos acelerar a transicio? Assim, em lugar de dizer “Hoje estd fazendo um calor de noventa grauvs 14 fora”, diga “Hoje esta fazendo um calor de trinta e dois graus 14 fora”. Na realidade, deveriamos dizer “Hoje estd fazendo um calor de trés dezenas e dois graus 14 fora” (vocé se lembra da maneira correta de se fazer contagem do Capitulo 17).
Meédia de temperatura
Lembre-se do Exemplo 4.3, no qual registra-
dores foram usados para memorizar o histé-
T il
rico dos valores de temperatura dos trés altimos periodos de relégio. Queremos estender
olk o —ot
esse sistema para memorizar,
L
ndo os trés,
Ra
mas os quatro tltimos valores. Queremos
T
Rb
o
Rc
>+
| 5
Rd
5 Id
-
+
também que o sistema calcule a média dos
:
quatro dltimos valores e gue coloque esse valor em uma saida Tmed. A média dos quatro valores Ra, Rb, Rc e Rd € (Ra+Rb+Rc+Rd) /4.
Observe que dividir por quatro ¢ 0 mesmo que fazer um deslocamento de duas posigoes
=
{com um valor de entrada de deslocamento de 0), como mostrado na Fig. 4.41. -«
i ,[’ > I8
Bmed {Tm ed
Figura 441 Sistema para determinar a temperatura média usando um registrador deslocador que executa dois deslocamentos para fazer a diviséo
por quatro. Deslocador barrel®
Um deslocador barrel de N bits ¢ um deslocador de N bits para uso geral que pode realizar deslocamentos ou rotagdes de qualquer ndmero de posi¢Ges. No momento, por simplicidade, vamos considerar apenas deslocamentos a esquerda. Um deslocador barrel de oito bits pode realizar deslocamentos de 1 posigdo, 2 posigoes, 3 posicoes, 4 posicdes, 5 posigoes, 6 posi¢des, ou 7 posi¢des i esquerda (e naturalmente O posigdes, significando que nenhum deslocamento deve ser realizado). Portanto, um deslocador barrel de oito bits requer apenas * N. de T: Literalmente, deslocador barril, em portugués.
Componentes de Blocos Operacionais
< 193
trés linhas de controle, digamos x, y e z, para especificar o valor do deslocamento, xyz=000 pode significar nenhum deslocamento, xyz=001 significard deslocamento de uma posi¢ao,
xyz=010, deslocamento de duas posigdes, etc. Poderiamos projetar esse deslocador barrel colocando um multiplexador 8x1 a frente de cada uma das oito saidas do deslocador, conectando xyz as entradas de selegdo dos oito multiplexadores e, em seguida, conectando as entradas de cada multiplexador com as entradas adequadas do deslocador para cada configuracéo de x, y e z. Assim, em cada multiplexador, a entrada I0 (correspondendo a xyz=000 e significando auséncia de deslocamento) ird simplesmente receber a entrada do deslocador que esta na mesma posigo que o bit de saida que estd sendo considerado. A entrada 11 (correspondendo a xyz=001 e significando deslocamento de
uma posi¢io a esquerda) ird receber a entrada do deslocador que estd uma posigio a direita. A entrada I2 (xyz=010, significando deslocamento de duas posicoes a esquerda) ird receber a entrada do deslocador que estd duas posigdes a direita, e assim por diante. Mesmo que seja conceitualmente simples, esse projeto exige fios demasiados para serem estendidos. Por outro lado, também nio se presta bem para ser ampliado com larguras maiores de bit, como no caso de um deslocador barrel de 32 bits: um multiplexador 32x1 néo pode ser construido usando dois niveis de portas (AND/OR), porque portas com 32 entradas s@o grandes demais para serem implementadas de forma eficiente e, ao contrério, devem ser im-
plementadas usando-se portas menores dispostas em miiltiplos niveis. Um projeto mais elegante de um deslocador barrel de oito bits consiste em trés deslocadores simples dispostos em cascata, como mostrado na Fig. 4.42. O primeiro pode realizar deslocamentos de quatro (ou nenhuma) poi P sicOes a esquerda, o segundo, duas (ou nenhuma) posi¢des a esquerda, e o terceiro, uma (ou nenhuma) posig¢do a esquerda. Observe que os deslocamentos “somam-se”
K=
entre si: deslocar duas posicdes a esquerda e entdo mais
y—=-sh
uma resulta em um deslocamento total de trés posic¢Ges. Assim, configurando cada deslocador adequadamente, podemos obter qualquer deslocamento com um valor total de posi¢oes entre zero e sete. A conexdo das entradas de controle x, y e z € ficil: pense simplesmente em xyz como sendo o nimero bindrio que representa o niimero
I 2 ok
el
)
in (--—0
8
B se ai=1 e bi=0, ou que AB), entdo este estagio ndo precisa comparar bits e simplesmente produz a saida out_gt=1. Do mesmo modo, se in_1t=1 (significando que um estigio de ordem mais elevada determinou que A EXEMPLO 4.16
Display de contagem regressiva para véspera de ano novo
No Exemplo 2.30, utilizamos um microprocessador para gerar uma safda, com os nimeros 59 a 0, € com base nessa saida usamos um decodificador para acender uma entre 60 limpadas. Neste exemplo, substituiremos o microprocessador por um contador decrescente de carga paralela para realizar a contagem de 59 até 0. Suponha que tenhamos 2 disposigfio um contador decrescente de oito bits, que pode contar de 255 até 0. Precisamos carregar 59 e entio decrementar. Assuma que uma pessoa pode apertar um botdo chamado reset para carregar o valor 59 no contador, ¢ entao mover uma chave decrementar da posi¢ao de 0 (ndo contar) para a posigdo 1 (contar), para comegar a contagem regressiva. A implementacdo do sistema estd mostrada na Fig. 4.59. Feliz 0 —t+Ano
.
5978&-- g
c0 cl
i0 i1
%
2
i2
42 |———— @2 .
§|:|—" -
¢
i3
" _"L.3
cd
i
eee
a6
decres-
cente 4
de @bl —l
\-
s
dec
6x64
d62
953
1|
V.
clk —#1>
{1Hz)
I/lJ
ds59
I
25
?
1
decrementar
cnt
Novo ~8 1
458
contador
Figura 459 crescente.
::‘
—
=
fogos de artificio
Sistema de contagem regressiva para Feliz Ano Novo, usando um contador de-
Observe que o sinal tc € a nossa indicagiio de “Feliz Ano Novo". Conectamos esse sinal a uma saida chamada fogos_de_artificio e assumimos que ela ativa um dispositivo que acende os fogos de artificio. Feliz Ano Novo! e P EXEMPLO 4.17
Gerador de pulsos de 1 Hz usando um oscilador de 60 Hz
No Brasil, a eletricidade que chega as casas opera na forma de uma corrente alternada com uma freqiiéncia de 60 Hz. Muitos aparelhos eletrodomésticos convertemn esse sinal em um sinal digital de 60 Hz ¢, entdo, o de 60 Hz ém um sinal de 1 Hz, para -acionar um rel6gio hordrio ou outro dispositivo que precisa dispor do iempo em nivel de segundo. Diferen] i SO — temente do Exemplo 4.14, ndo podemos simplesmente
1—r—®=cnt
usar um contador com uma largura de blt:‘s em particy-
osc —f—m{™>
lar, j que nenhum contador retorna ao inicio depois de 60 ciclos —um contador de cinco bits rétorna a zero depois de 32 ciclos, a0 passo que um de seis bits retorna a zero depois de 64 ciclos. Vamos comecar com um contador de seis bits, que conta de 0 a 63 ¢ entdo retorna a 0. Iremos acrescentar alguma 16gica extra,
‘de:6 bits
.
C
(60 Hz) * p
¢¢ li “y
como mostrado na Fig. 4.60. A 16gica adicional deve
{1 Hz)
detectar quando o contador chega a 59 e entdo obrigar
o contador a retornar.a 0, na proxima borda de subida
Figura4.60
Divisor de reldgio.
204 »
Sistemas Digitais
de relogio, ao invés de deixar o contador continuar até 60 e mais adiante. Cingiienta e nove na forma de um niimero bindrio de seis bits € 111011. Assim, a porta AND da Fig. 4.60 detecta 111011, caso em que a saida da porta AND obriga a entrada de clear (ou reser) ser 1. Assumimos que a entrada clr lem
prioridade sobre a entrada de habilitagio de contagem cnt do contador. Como a saida ird pulsar a cada 60 ciclos e a freqiiéncia de entrada do relégio € 60 Hz, esse circuito relogio de entrada de 60 Hz em um reldgio de saida de 1 Hz. Um circuito que converte entrada em um novo relégio com uma freqiiéncia menor € conhecido como divisor de
da porta AND converterd um um relogio de relogio.
EXEMPLO 4.18
Sistema de medigdo de velocidade de rodovia
Muitas rodovias e auto-estradas tém sistemas que medem a velocidade dos carros em diversos pontos da estrada e enviam essas informagdes de velocidade a um computador central. Essas informagdes sao usadas pelos agentes de manutengdo da lei, planejadores de trinsito e na geragiio de relatérios de Internet e rddio sobre o trafego. Uma técnica de se medir a velocidade de um carro usa dois sensores, colocados abaixo da estrada, como mostrado na Fig. 4.61. Quando um carro estd sobre um sensor, esse produz um 1 de saida; em caso contririo, ele produz um 0. As saidas dos sensores viajam através de fios sub-
terrdineos até a caixa do computador de medicio de velocidade, algumas das quais estdo acima do solo e outras, abaixo. O medidor de velocidade determina a velocidade dividindo a disténcia entre
os sensores (que € fixa e conhecida) pelo tempo necessdrio para que um veiculo viaje do primeiro sensor até o segundo. Se a distincia entre os sensores for 0,01 quilémetros e um vefculo precisar de 0,5 segundo para se deslocar do primeiro até o segundo sensor, entio a velocidade do vefculo serd 0,01 quilémetros / (0,5 segundo * (1 hora / 3600 segundos)) = 72 quilémetros por hora.
Componentes de Blocos Operacionais
veiculo
—==
¢
@
I
]
E
ib""'] Medidor de|__
H
< 205
1
E—————---————;-- velocidade
¥
(a) g
Figura
4.61
Medicio
b
das
velocidades de veiculos em
cnted
cneD
uma rodovia por meio de um
{Compute o
sistema de medigdo de velo-
tempo e fornega
;
cidade.
{
b)
—
el
—
cnit
=
c /t 16
a velocidade)
Para medir o tempo entre 0s sensores, construimos uma FSM simples que controla um temporizador de 16 bits, como mostrado na Fig. 4.61. O estado S0 forga o temporizador a 0. A FSM faz uma transi¢cio para o estado S1 quando um carro passa pelo primeiro sensor. O estadoS/ dispara o inicio da contagem crescente no temporizador. A FSM permanece em S/ até que o carro passe pelo segundo sensor, causando uma transi¢do para o estado §2. Esse estado 52 interrompe a con-
tagem e calcula o tempo decorrido usando a saida € do temporizador. Assumindo uma entrada de relégio de 1 kHz no temporizador, significando que cada ciclo dura 0,001 s, entfo o tempo serd C * 0,001 s. Esse resultado seria entdo multiplicado por 0,01/3600 para obter a velocidade. Omitimos os detalhes de implementagiio do cdlculoda velocidade, o qual muito provavelmente seria implementado como programa em um microprocessador.
4.7
MULTIPLICADORES - ESTILO ARRAY Um multiplicador NxN ¢ um componente de bloco operacional que multiplica bindrios de A bits, A (o multiplicando) e B (o multiplicador), produzindo um saida de (IV+N) bits. Por exemplo, um multiplicadorde 8x8 faz o produto de bindrios de oito bits € produz um resultado na saida de 16 bits. O projeto de um
dois nimeros resultado na dois ndmeros multiplicador
NxN com dois niveis de logica, usando o processo padriio de projeto 16gico combinacional resulta em um projeto demasiadamente complexo, como ja vimos anteriormente nas operacoes de soma e comparacio. Para multiplicadores com N maior ou igual a quatro, precisamos de um método mais eficiente. Podemos criar um multiplicador de tamanho razodvel imitando a forma de realizarmos a multiplicagiio & mao. Considere a multiplicagio de dois ndmeros bindrios 0110 e 0011 & mao: 0110 0011 ---0110 0110 0000 +0000
(o ndmero (o nimero (cada uma (porque O {porque o (porqueo (porque o
superior é chamado de multiplicando) inferior € chamado de multiplicador) das linbas abaixo € chamada de produto parcial) bit mais & direita do multiplicador € 1, ¢ 0110*1=0110) segundo bit do multiplicador € 1, e 0110%1=0110) terceiro bit do multiplicador € 0, e 0110%0=0000) bit mais & esquerda do multiplicador € 0, e 0110%0=0000)
00010010
(o produto € a soma de todos os produtos parciais: 18, que € 6*3)
Cada produtoe parcial € facilmente obtido fazendo uma operagdo AND
do multiplica-
dor corrente ¢ o multiplicando. Assim, a multiplicagiio de dois nimeros A (a3a2ala0) e B (b3b2b1b0) pode ser representada como segue:
206 » Sistemas Digitais
Em uma auto-estrada, como um sensor de velocidade ou de se-
méforo sabe que um carro est4 presente em uma determinada pista? Atualmente, 0 método principal usa o que & chamado de lago indutive. Um lago de fio é colocado um pouco abaixo do pavimento — geralmente é possivel ver os cortes, como mostrado
naFig. 4 62{a) Esselaco de fio tem uma “indutincia” particular. Induténcia € um termo de eletrdnica que descreve a OpGSl{;fio do fio auma mudanqa na corrente elétnca indutancias maiores sig-
nificam que o fio tem uma oposicio maior a mudancas de corrente. Quando se coloca um pedaco grande de ferro (como um
carro) proximo do lago de fio, a indutincia € alterada. (Por qué“r’ Porque o metal perturba o campo magnéhco criado por uina coirente que, este_;a variando no fio — mas isso estd comecando a
{a)
ficar além do nosso objetivo.) O circuito de controle do semiforo permanece verificando a indutancia do fio (possivelmente tentando alterar a corrente e vendo de quanto é realmente & sua variagio duranie um certo pefi’edcf de tempo). Se a induténcia for
maior que o normal, o circuito assumird que um carro estd em cima do laco de fio.
Muitas pessoas pensaim que 0s lagos vistos nas pistas sao balangasque medeni 0 peso — eu ja vi mclxstaspulando sobre os: lagos tentando mudar os sinais de um seméforo. Isso ndo fun-¢iona, mas: asseguro que € divertido observa-1os..
Qutras pensam que 0s pequenos. ‘cilindros colocados nos bragos de suporte de semaforos, como o da FiFig. 4.62(b), detectam veiculos. Geralmente sdo. dJSIJQSIHVQs que detectam sinais especialmente codificados éde: rédio ou infravermelho, proclum—
{b)
dos por veiculos de emergéncia, que Dbngam o semdforo a ficar verde para o veiculo de emergénma {por exemplo, o sistema “Optlcc-m” da empresa 3M). Esses sistemas sao um outro exem-
g AR e e Eignm;fij : -(??'Lf‘g?? ._md_utt}'os pzrz_tE‘.[’ECQ .? ,e ye_,c._'_.l 2 em umaestra a,
plo de sistemas digitais, reduzindo o tempo necessario para que 08 vefeulos de emergéncia cheguem até o local de uma emergén-
(b) oy desmal ! .am?fl.do‘. Pc_'r':v?i; culos de emergéncia, que forga o se-
desse modo freqiientemente salva vidas.
‘que esta se aproximando.
cia, assim como reduzindo os acidentes que envolvem o proprio vefculo de emergéncia, como quando avanca um semaforo ¢
P
a3
a2
al
xb3
b2
bl
S
S
a0
b R R R
b0Oa3 b0a2 b0al b0a0 bla3 bla2 blal blad0
b2a3 b2a2 b2al b2ad0 +b3a3b3a2b3alb3a 0
méforo de um cruzamento a s fornar verde para o vefculo de emergéncia
0 0
0
0 0
(ppl) (pp2)
(pp3) (pp4)
Depois de gerar os produtos parciais (ppl, pp2, pp3 e pp4), pela aplicacdo da operagio AND ao bit corrente do multiplicador juntamente com cada bit do multiplicando, precisamos simplesmente somar todos esses produtos parciais. Podemos usar trés somadores de larguras variadas para calcular a soma. O projeto resultante estd mostrado na Fig. 4.63. Esse projeto tem um tamanho razodvel, cerca de irés vezes maior do que um somador com propagacao de “vai um”. O projeto também tem velocidade razodvel. O atraso consiste no
Componentes de Blocos Operacionais
< 207
atraso de uma porta para a geracio dos produtos parciais mais os atrasos dos somadores. Se
cada somador for do tipo com propagacio de “vai um”, entdo o atraso do somador de ¢inco bits serd 5%2=10 atrasos de porta, o do somador de seis bits serd 6*2=12 atrasos de porta, ¢ 0 do somador de sete bits sera 7¥2=14 airasos de porta. Se assumirmos que o atraso total dos somadores ¢ simplesmente a soma dos atrasos dos somadores, entdo o atraso total seria assim 1+ 10+ 12 + 14 = 37 atrasos de porta. No entanto, o atraso total de somadores com propaga¢do de “vai um”, quando encadeados entre si, € na realidade menor do que a sua soma (veja o Exercicio 4.15).
vy o
]
e o
D Ho
O Db
S A EmEs Y ¢
L
l.F 1] UL T
* P
Simbolo pars diagrama de blocos
Figura4.63
p7.p0
Projeto interno de um multiplicador tipo array* de 4 x 4 bits.
Multiplicadores maiores, que terdo mais somadores encadeados, serdo mais lentos devido
a0s atrasos maiores. Projetos de multiplicadores mais rapidos s3o possiveis, a custa de mais portas.
» 48
SUBTRATORES Um subtrator de N bits € um componente de bloco operacional que toma duas entradas bindrias A ¢ B e produz um resultado S na saida igual a A-B.
Subtrator de nimeros positivos apenas A subtragio € um pouco mais complexa quando consideramos resultados negativos, tal como
5 -7 =-2, porque até o momento ndo haviamos discutido a representacdo de nimeros negativos. Por enquanto, vamos assumir que estamos lidando apenas com nimeros positivos, de modo que as entradas do subtrator e o resultado sempre serdo positivos. Esse poderia ser 0 caso, por exemplo, do projeto de um sistema que sempre subtrai niimeros pequenos de nimeros maiores, como ocorre quando estamos compensando uma temperatura amostrada que sempre € maior do que 25 graus, usando um pequeno valor de compensagio que sempre ser menor do que 5 graus. * N. de T: Arranjo, em inglés. Referc-se i disposi¢fo matricial dos elementos da multiplicaco.
208 »
Sistemas Digitais
O projeto de um subtrator de N bits, usando o processo padrido de projeto légico combinacional, sofre do mesmo problema de crescimento exponencial do tamanho apresentado pelo somador de N bits. (Veja a Se¢do 4.3.) Em vez disso, podemos tentar novamente imitar em hardware a subtracio feita 2 mio. A Fig. 4.64 mostra a subtragio de niimeros bindrios feita “a mao”. Comecando com a primeira coluna, vemos que a € menor do que b (0 < 1), necessitando-se pedir emprestado a coluna da esquerda. O resultado da primeira coluna € entdo 10 — 1 = 1 (na base dez, dois menos um € igual a um). A segunda coluna tem um 0 em a devido ao empréstimo feito pela primeira coluna, tornandoa
< b
(0 < 1), o que leva a pedir emprestado a terceira coluna,
que deverd pedir emprestado a quarta coluna. O resultado da segunda coluna serd entdo 10 —
1 = 1. A terceira coluna, devido ao empréstimo feito pela segunda coluna, tem um 1 em a, que ndo ¢ menor do que b, de modo que o resultado da terceira coluna serd 1-1=0. A quarta coluna tem a=0 devido ao empréstimo feito pela terceira coluna e, como b também € 0, o resultado € 0-0=0. primeira coluna
segunda coluna
a
1
2]
1
0
A
10
-
| I
1
4
A
-0
1T
L6
terceira coluna
10
0
G
1
1
1
1
1
quarta coluna
[
a
AW
Sy
o1
0
W
A
=0
0
1
1
0
0
1
D
4
1
49
0
1
1
{a} a3
b3
a
b
10 (587 wi
az
b2
a
b
S
sC
S
al
b1
a
b
S
wo.
53
R
WO
b0
wi
a
b
wi
] [ L e ) (S Y wi
sC
WO
al
wi
sC S
e
s2
WO
8 a3 a2 al
sC S
B
WO
s1
[ b3 b2 b1
Subtrator de 4 bits S
wo
[
b0
wi—
s3s2s1s0
111
s0
(b)
Figura 4.64
a0
{c)
Projeto de um subtrator de quatro bits: (a) subtragdo feita *a mdo”, (b) implementa-
¢do da propagacio do empréstimo usando subtratores completos com uma entrada de “pedido de
empréstimo” wi, e (¢) simbolo de diagrama de blocos. Com base no comportamento recém descrito, poderemos criar o projeto interno de um subtrator completo combinacional para implementar o funcionamento de cada coluna. Um subtrator completo terd uma entrada wi para representar um pedido de empréstimo feito pela coluna ante-
rior, e uma saida wo para representar um pedido de empréstimo feito para a coluna seguinte, além das entradas a e b e a saida s. (Usaremos a letra w para representar os empréstimos € niio a letra b porque a letra b ja estd sendo usada na entrada; o w vem do final da palavra borrow — emprestar, em inglés.) Deixamos o projeto de um subtrator completo como exercicio para o leitor.
> EXEMPLO 419
Calculadora de soma e subtragado baseada em chaves do tipo DIP
No Exemplo 4.8, projetamos uma calculadora simples, que podia somar dois nimeros bindrios de oito bits e fornecer um resultado de oito bits, usando chaves do tipo DIP para as entradas e um registrador mais LEDs para a saida. Vamos estender aquela calculadora permitindo que o usudrio escolha entre as operagdes de soma e subtracdo. Vamos introduzir uma chave simples do tipo DIP, como mais uma entrada do sistema, a qual determina o valor de um sinal f (de [ungdo). Quando
=0, a calculadora deverd somar e quando f=1, a calculadora devera subtrair. Uma implementagio dessa calculadora usa um somador, um subtrator e um multiplexador, como mostrado na Fig. 4.65. A entrada f escolhe qual saida de componente, somador ou subtrator,
Componentes de Blocos Operacionais
< 209
deve ser passada através do multiplexador para as entradas do registrador. Quando o usudrio aperta e, o resultado da soma ou da subtragiio serd carregado no registrador e exibido nos LEDs. Esse exemplo assume que o resultado de uma subtrac¢io € sempre um nimero positivo, nunca
negativo. Assume também que o resultado estd sempre entre 0 ¢ 255. Chaves do tipe DIP TN
LTl
[
O
1
o
A B ci -E Somador de 8 bits co 1
Figura 4.65 Calculadora de soma e subtracio
baseada
fl
H
|:=
£
|
A B wi i Subtrator de 8 bits
S
wo
S
© ok
-lld _
.
S Registrador de B bits
em chaves do tipo
CALC
DIP de oito bits. A
1';8
entrada f seleciona entre
soma
e sub-
. . . . . . . .
tragfio. > EXEMPLO 4.20
LEDs
« Conversor de espago de cores — RGB para CMYK
Imagens coloridas sdo manipuladas por monitores de computador, cimeras digitais, escaneadores, impressoras e outros dispositivos eletrbnicos. Esses dispositivos tratam as imagens como sendo compostas por milhdes de mindsculos pixels (forma abreviada de “picture elements”, elementos de imagem, em inglés), os quais sdo pontos indivisiveis que representam partes muito pequenas da imagem. Cada pixel tem uma cor, de modo que uma imagem € simplesmente uma colegio de pixels coloridos. Um bom monitor de computador pode suportar mais de dez milhdes de cores diferentes em um tnico pixel. Como pode um monitor criar uma cor exclusiva para cada pixel? Em um método comum, usado no chamado monitor RGB, o monitor tem internamente trés fontes
luminosas — vermelho, verde e azul. Qualquer luminosidade de cor pode ser criada adicionando-se intensidades especificas de cada uma dessas trés cores. Assim, para cada pixel, o monitor emite intensidades especificas de vermelho, verde e azul naguela posigio onde se encontra o pixel sobre a tela, de modo que as trés cores somam-se para criar a cor de pixel desejada. Cada cor bdsica (vermelho, verde e azul) € representada normalmente como um nidmero bindrio de oito bits (cada um abrange um intervalo de 0 a 253). Isso significa que cada cor € representada por 8+8+8=24 bits. Um valor (R, G, B) de (0, 0, 0) representa o preto. O valor (10, 10, 10) representa um cinza muito escuro, ao passo que (200, 200, 200) representa um cinza claro. O valor (255, 0, 0) representa o vermelho, ao passo que (100, 0, 0) representa um vermelho mais escuro (ndo intenso). O valor (255, 255, 255) representa o branco. O valor (109, 35, 201) representa alguma mistura das (rés
cores bdsicas. A representagiio da cor, usando valores de intensidade de vermelho, verde e azul, é conhecida como espago de cores RGB (red, green, blue). O espaco de cores RGB € excelente para os monitores de computador e alguns outros dispositivos, mas ndo ¢ o melhor para outros, como as impressoras. A mistura das tintas vermelha, verde e azul ndo produz o branco, mas pelo contrério o preto. Por qué? Porque tinta ndo € como a luz; pelo contrario, a tinta reflete a luz. Assim, a tinta vermelha reflete a cor vermelha, absorvendo os raios luminosos verdes e azuis. De modo semelhante, a tinta verde absorve os raios vermelhos e
azuis. A tinta azul absorve os raios vermelhos e verdes. Misture todas as tintas sobre o papel e a
210 » Sistemas Digitais
mistura ird absorver toda a luz, refletindo nada e produzindo assim o preto. Portanto, as impresso-
ras usam um espaco de cores diferente, baseado nas cores complementares das cores vermelho, verde e azul, correspondendo as cores ciano, magenta ¢ amarelo. Esse espago € conhecido como espago de cores CMY (cyan, magenta, yellow). A tinta de cor ciano absorve o vermelho refletindo o verde ¢ 0 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 ¢ um amarelo. A
Fig. 4.66 mostra os cartuchos de tinta de uma impressora a cores em particular. Algumas impressoras tém um Gnico cartucho de cores ao invés de trés. Esse cartucho contém internamente compartimentos separados de tinta para as trés cores. Uma impressora deve converter uma imagem recebida em RGB para CMY. Vamos projetar um circuito ripido para realizar essa conversio. Dados os trés valores de R, G e B de um pixel em particular, as equacdes de C, M e Y sdo simplesmente: C =255 -R "‘: - ggg = g
Figura 466
Uma impressora a cores mistura tintas de cores
ciano, magenta e amarelo para criar qualquer cor. A figura mostra o interior de uma impressora 4 cores com cartuchos dessas trés cores i direita, rotuladas de C, M e Y. Em lugar de misturar as trés cores para fazer cinzas e preto, €ssas impressoras podem
usar a tinta preta diretamente(o cartucho grande a esquerda). Assim, consegue-se produzir uma cor preta de melhor aspecto e economizar as tintas coloridas de maior custo.
(255 € o valor miximo para um nimero de oito bits). Um
circuito para realizar essa conversao pode ser construido usando subtratores, como mostrado na Fig, 4.67. Na realidade, a convers@o precisa ser um pouco mais complexa. A tinta ndo € perfeita, significando que a mistura de ciano, magenta e amarelo d4 um preto que nfio se parece com o preto que vocé poderia esperar. Além disso, as tintas coloridas sdo caras em comparagio com a tinta preta. Portanto, sempre que possivel, as impressoras a cores usam tinta preta. Uma maneira de maximizar 0 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 ¢ nenhuma tinta magenta ou amarela, economizando assim tinta colorida preciosa. Um espago de cores CMY estendido ao preto € conhecido como espago de cores CMYK (O “K” vem da dltima letra da palavra “black”, preto em inglés. Usa-se “K” e niio “B”, primeira letra de “black”, para evitar confusio com o “B” de “blue”, azul).
Desse modo, um conversor de RGB para CMYK pode ser descrito como:
K = Minimo (C, M, Y) €2=0C-kK M2 = M- K Y2 = Y- K
Componentes de Blocos Operacionais
|
[
R >
o5
255
|
G kg
255
B Frg
I o O
255
3
=
=
=
=
Lk
b€
b &
M
Y Figura 4.67
¥ LYo
o
C
010 Essa € a resposta correta e ndo envolveu nenhuma subtraco—apenas uma inversao de bits e adic¢hes. Omitiremos a discussio que justifica o cdlculo do complemento na base dois, fazendo uma inversao de bits e uma adi¢do de 1 — para os nossos propdsitos, precisamos saber apenas
que esse artificio funciona com os nimeros bindrios. Na verdade, ha dois tipos de complementos para um nimero bindrio. O tipo que vimos antes € conhecido como complemento de dois, obtido pela inversio de todos os bits do ndmero
bindrio e pela adigiio de 1. Um outro tipo € conhecido como complemento de um, o qual & obtido simplesmente invertendo todos os bits, sem o acréscimo de 1. O complemento de dois é muito mais usado comumente nos circuitos digitais e resulta em uma légica mais simples. Os complementos de dois permitem uma maneira simples de representar ndmeros negativos. Digamos que tenhamos quatro bits para representar 0s ndmeros € queiramos representar nlimeros positivos ¢ negativos. Podemos optar por representar os nimeros positivos como
0000 a 0111 (O a 7). Os nimeros negativos podem ser obtidos tomando o complemento de dois dos nimeros positivos porque a — b é o mesmo que a + (-b). Assim, —1 seria representado pelo complemento de 0001, ou (0001)'+1
sera (0010) '+1 = 1101+1 No caso de -7, teremos
= 1110+1
= 1111. De modo semelhante, -2
= 1110, -3 serd (0011) '+1 = 1100+1 (0111) '+1
=
1000+1
=
= 1101, ¢ assim por diante.
1001. Note que o complemento de 0000 &
1111+1 = 0000. A representacdo em complemento de dois tem apenas uma representacao para 0, que € 0000 (diferente da representaciio em sinal ¢ magnitude, a qual tem duas repre-
sentagdes para (). Note também que podemos representar —8 como 1000. Desse modo, a representagio em complemento de dois € ligeiramente assimétrica, tendo um nimero negativo a mais do que ndmeros positivos. Um nimero em complemento de dois de quatro bits pode
representar qualquer nimero de —8 a +7.
214 » Sistemas Digitais
Digamos que vocé tem mimeros de quatro bits ¢ quer armazenar —5. O nimero -5 serd (0101) '+1 = 1010+1 = 1011. Agora, vocé quer somar -5 a4 (ou 0100). Assim, simplesmente fazemos a soma; 1011 + 0100 = 1111, que é —1, a resposta correta. Observe que todos 0s niimeros negativos tém um 1 no bit de ordem mais
D BitE 5 oraan s
elevada, Desse modo, em complemento de dois, esse bit € freqiientemente refe-
elevadd en comple-
rido como o bit de sinal, 0 significa positivo, 1 significa negativo.
mento de dois atua
Se vocé quiser conhecer a magnitude ou médulo de um niimero negativo
como wm bit de sinal: 0 significa positivo, 1
em complementode dois, vocé pode obté-la tomando novamente o complemento de dois. Assim, para determinar 0 quanto o niimero 1111 representa,
significa negativo.
podemos tomar o complemento de doisde 1111: (1111) *+1 = 0000+1 = 0001.
Colocamos um sinal negativo na frente para obter —0001, ou —1. Uma maneira mais rdpida para as pessoas obterem mentalmente a magnitude de um numero negativo de quatro bits em complemento de dois (tendo um 1 do bit de ordem mais elevada) € subtrair a magnitude dos trés bits inferiores de 8. Assim, para 1111, os trés bits inferiores sdo 111 ou 7, e a magnitude € 8 — 7 = 1, significando que 1111 representa —1. Para um nimero de oito bits em complemento de dois, iremos subtrair a magnitude dos sete bits inferiores de 128. Assim, 10000111 sera (128-7)=-121. Em resumo, podemos representar os niimeros negativos usando a representaciio em com-
plemento de dois. A soma de niimeros em complemento de dois € feita sem modificagtes adicionais, simplesmente somamos os nimeros. Mesmo que um ou ambos os nimeros sejam negativos, simplesmente somamos os nimeros. Para realizar a subtragdo A - B, tomamos o complemento de dois de B e o somamos a A, resultandoem A + (-B). Computamos o complemento de dois de B simplesmente invertendo os bits de B e entao adicionando 1.
Construindo um subtrator usando um somador e complementos de dois ‘Com o conhecimento da representagdo em complemento de dois, podemos ver agora como fazer a subtracio usando um somador. Para computar A — B, calculamos A + (-B),
A
B :
que € omesmoque A + B' + 1 porque -B pode ser calculado como B' + 1em complemento de dois. Assim, para
N bits.
A
realizar a subtragio, invertemos B e colocamos um 1 na
-
SHiHEHGE
i
entrada de “vem um’ de um somador, como mostrado na
Fig.g 4.71.
1
Somador/Subtrator
Figura 4.71
Uma forma direta de se projetar um componente subtra-
complemento de dois usando
tor/somador consisteem uma entrada sub tal que, quando
Subtrator em
ym somador:
sub=1, o componente subtrai, mas, gquando sub=0, o componente soma, como mostrado na Fig. 4.72(a). O multiplexador 2x1 de N bits deixa passar B quando sub=0, e deixa passar B' quando sub=1. O sinal sub
também estd conectado A entrada cin de “vem um”, de modo que cin ¢ 1 na subtrago. Na realidade, portas XOR podem ser usadas em lugar dos
gmdo?
inversores e do multiplexador, como
s}f
mostrado na Fig. 4.72(b). Quando ‘sub=0, a saida da porta XOR € igual
Figura 4.72
&n
entrada B do somador
{a}
{b}
(a) Um somador/subtrator em comple-
mento de dois que usa um multiplexador alternativo para B usando portas XOR.
(b) circuito
Componentes de Blocos Operacionais
ao valor da outra entrada. Quando sente na outra entrada.
> EXEMPLO 4.21
sub=1, a saida da porta XOR
< 215
€ o inverso do valor pre-
Calculadorade soma e subtragéio haseada em chaves do tipo DIP (continuagéo)
Vamos revisitar a calculadora de soma e subtraciio, baseada em chaves do tipo DIP, do Exemplo 4.19. Observe que, em qualquer momento, a saida exibe os resultados ou do somador ou do subtrator, mas nunca ambos simultaneamente. Assim, na realidade, ndo precisamos de um somador e um subtrator funcionando em paralelo. Em vez disso, podemos usar um tinico componente somador/ subtrator. Assumindo que as chaves tenham sido acionadas, os seguintes cdmputos sfo realizados quando fazemos =0 (somar) versus f=1 (subtrair): 00001111 + 00000001 00001111 - 00000001 00001110
(f=0) = 00010000 (f=1) = 00001111 + 11111110 +# 1 =
Conseguimos isso simplesmente conectando T & entrada sub do somadot/subtrator, como mostrado na Fig. 4.73.
PTG
RN TTTTIT
-
Chaves DIP
1 1
g
n
f
&
sub
'
v&
A
Somador/subtrator.de 8 bits 5 '8
Figura 4.73
Calculadora de
soma e subtracdo de oito bits, baseada em chaves do tipo DIP, usando
um somador/
subtrator e a representagao em complemento de dois.
[ ok
-ld>
_Registrador
de 8 "bits
|
CALC
=
Y . . . . . . . .
LEDs
Vamos considerar os niimeros com sinal que usam complemento de dois. Se o usudrio nio estiver ciente que a representagiio em complemento de dois estd sendo usada e se ele entrar apenas com ndmeros positivos através das chaves DIP, entao o usudrio deverd usar apenas as sete chaves de ordem inferior das oito chaves DIP de entrada, deixando a oitava chave na posic¢io 0, significando que o usudrio s6 poderd entrar com nimeros que estdo de 0 (00000000) a 127 (01111111). A razdo pela qual o usudrio ndo pode utilizar o oitavo bit € que, na representagdo em complemento
de dois, quando o bit de ordem mais elevada € tornado 1, o nimero torna-se negativo. Se o usudrio estiver ciente que complementos de dois estio sendo usados, entdo 0 usudrio podera utilizar as chaves DIP para representar também os nlimeros negativos entre —1 (11111111) e —128 (10000000). Naturalmente, o usudrio deverd verificar o bit mais & esquerda, para determinar ‘Se a saida representa um nimero positivo ou negativo, na forma de complemento de dois.
EXEMPLO 423
Calculadora multifuncional usando uma ALU
No Exemplo 4.22, construimos uma calculadora de oito fungGes sem usar uma ALU. O resultado
foi o desperdicio de drea e energia, fiagho complexa e atrasos longos. Usando a ALU projetada anteriormente, a calculadora poderia ser construida como mostrado na Fig. 4.78. Note como o
‘projeto € simples ¢ eficiente.
< Chaves DIP
(WA
o|Hl ek
O
0 A8
A8
A 4
-
Bz '
Figura 478
K
-y
B
s 5
1
=1 ~
de
-0ito bits, baseada em cha-
ves do tipo DIP, que usa
8
egistrador istrationde de 8s
Uma calcu-
ladora multifuncional
vma ALU.
;
! X
BY A
i bits
8
CALC
Y . . . . . . . .
LEDs
Componentes de Blocos Operacionais
» 410
< 221
BANCOS DE REGISTRADORES Um bance de registradores MxN (register file) ¢ um componente de meméria de blocos operacionais que propicia um acesso eficiente a um conjunto de M registradores, onde cada registrador tem uma largura de N bits. Para compreender a necessidade de um banco de registradores quando se constréi bons blocos operacionais, ao invés de simplesmente usar M registradores separados, considere o Exemplo 4.24.
> EXEMPLO 4.24
Sistema de display, acima do espelho retrovisor, que usa 16 registradores de 32 hits
Lembre-se do sistema de display colocado acima do espelho retrovisor do Exemplo 4.4. Quatro registradores de oito bits foram multiplexados em uma saida de oito bits. Em lugar disso, suponha que
0 sistema requeresse dezesseis registradores de 32 bits para exibir mais valores e com mais precisdo cada um. Nesse caso, necessitarfamos de um multiplexador 16x1 de 32 bits de largura, como mostrado
na Fig. 4.79. De um ponto de vista puramente de 16gica digital, o projeto estd correto. No entanto, na pritica, esse multiplexador € muito ineficiente. Conte o nimero de fios que seriam ligados no multiplexador: 16x32 = 512 fios. Isso € muito fio para estender entre os registradores ¢ os multiplexadores, como demonstragiio pratica, experimente conectar 512 fios na parte traseira de um aparelho de som. O actimulo de muitos fios em uma drea pequena ¢ conhecido como congestionamento.
32
se S s
[
*ég
=
e
:
multiplexador de
reg0
grande porte
I
4x16
8 £ &
i
d0 —load
8
32
]
-
fanout |
e
=
o8
S o
@ =
demasiado
4
b
—
i3-i0
3 E_
1
é &
|
2
_.__"
g
; mD
——r LE
X
)
+
f
o d15 load
32
|
|
——
== | = congestionamento
[—=|load S reg1s
_+
L
32
= i15
3450
Figura 479 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 sao ramificadas e enviadas a demasiados registradores, produzindo um enfraquecimento de corrente. De forma semelhante, considere a determinaciio dos caminhos a serem seguidos, o chamado
roteamento, pelos dados de entrada até todos os dezesseis registradores. Cada fio de entrada estd sendo ramificado em dezesseis outros fios. Imagine a corrente elétrica como sendo um rio-a ramificaciio de um rio em dezesseis rios menores proporcionard um fluxo de d4gua muito menor em cada um dos rios menores do que no rio principal. Do mesmo modo, a ramificagio de um fio, conhecida como fanout,* somente pode ser feita um certo niimero de vezes antes que as correnles
nos fios das ramificagdes sejam pequenas demais para poder controlar eficientemente os transistores. 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, «
*N. de T: Termo inglés que expressa a idéia de “saida em leque™.
222 » Sistemas Digitais
Os problemas de fanout e congestionamento, ilustrados no exemplo anterior, podem ser resolvidos observando que nunca necessitamos carregar mais de um registrador de cada vez,
e que também nunca precisamos ler maisde um registrador de cada vez. Um banco de registradores MxN resolve os problemas de fanouf e congestionamento. Para isso, os M registradores sdo agrupados em um Gnico componente, tendo esse componente uma tnica entrada de dados deNV bits de largura ¢ uma tinica saida de dados de N bits de largura. A fiagdo dentro do componente € feita cuidadosamente para que o fanout e o congestionamento sejam tratados adequadamente. A Fig. 4.80 mostra um simbolo para diagrama de blocos de um banco de registradores 16x32 (16 registradores, 32 bits de largura cada um). Considere a acgio de escrever um valor em um re-
gistrador de um banco de registradores. Colocamos os
32
32
dados a serem escritos na entrada W_data. Precisamos
7| W-date
Rudate rpem-
entdo de uma maneira para indicar em qual registra-
744,, W addr
R addr ‘7“;
dor desejamos de fato escrever, Como h4 16 registradores, precisamos de quatro bits para especificar um
B
registrador em particular. Esses bits sdo chamados de
R_en [~a—
B
enderego do registrador. Assim, devemos colocar 0 enderego do registrador desejado na entrada W_addr.
-
——»{W_en
16x32
ANGE e Teal M oree Figura4.80
Simbolo para diagrama
Por exemplo, se quisermos escrever no registrador 7, de blocos de um banco de registrafaremos W_addr=0111. Para indicar que na realidade dores 16x32. queremos escrever em um dado ciclo de relégio (ndo queremos escrever a cada ciclo), colocaremos a entrada W_en em 1. O conjunto de entradas W_data, W addre W en € conhecido como porta de escritu de um banco de registradores. A leitura é semelhante. Especificamos o enderego do regisirador a ser lido na entrada R addr e habilitamos a leitura fazendo R en=1. Esses valores farfio com que o banco de registradores coloque na saida R | dataos contetidos do registrador que foi enderecado. O conjunto de R_data, R_addr e R_en € conhecido como porta de leifura de um banco de registradores. As portas de escrifa e leitura sdo independentes entre si. Assim, durante o mesmo ciclo de reldgio, podemos escrever em um registrador ¢ lerde outro (ou do mesmo) registrador.™
32
W_data B
_
i
;
2
.
barramento 1 G
32 ras
do—={load
1-1d0
'i
2xd
]
5
di=lload
W_add _ad
.
>
.
"
i) [—— i0e
1
1
d2f—#load Decodificador de escrita
d3j=={load >Da
fl_addr
d2 Decodifi! cador de i | I teitura
..|1
reg3
,}
2
W_en
d1
—=t=i=1 {0} f —e1i
&= R_data
1
‘
d3
.
|
\ jj
+——
B_en
Banco de registradores 4x32
Figura 4.81
Um projeto interno possivel de um banco de registradores 4x32.
*N. de T: Em relagfio aos lermos usados nos sinais das portas de entrada e safda do banco de registradores, as seguintes indicagtes podem ser Gteis: W (de write, escrever), R (de read, ler), data (dados), addr (de address, endere¢o) € en(de enable, habilitagio).
Componentes de Blocos Operacionais
< 223
Vamos considerar como projetar internamente um banco de registradores. Por simplicidade, 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 estd mostrado 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 niio escrevera em nenhum registrador, porque as saidas do decodificador de escrita serdo todas 0s. Se W_en=1, entio o decodificador de escrita analisa W_addr e coloca um 1 na entrada de carga de exatamente um registrador. No préximo ciclo de reldgio, o valor de W_data serd escrito nesse registrador. Observe o componente triangular que estd no interior de uma circunferéncia. Ele tem uma entrada e uma saida,
d
| >
a
e estd inserido na linha W_data (na realidade, haveria 32
desses componentes ja que W_data tem 32 bits de lar-
a=
gura). Esse componente € conhecido como driver, também chamado de buffer, e estd ilustrado na Fig. 4.82(a). A saida de um driver ¢ igual a sua entrada, mas o sinal de saida ¢ mais robusto (corrente mais clevada). Vocé se lembra do problema de fanout que descrevemos no Exemplo 4.24? Um driver reduz esse problema. Na Fig.
(a)
e=lig=d
4.81, a linha de W_data divide-se em apenas duas, indo a dois registradores, antes de seguir para o driver. A saida do driver divide-se entdo ¢ vai para mais dois registrado-
3 d——=q
s
e
comoe se nao houvesse Conexso
res apenas. Assim, ao invés de um fanout de quatro, aliFigura nha de W_data tem um fanout de apenas dois (na realiyer de dade trés, se incluirmos o proprio driver). A insercao de drivers estd além dos propositos deste livro, sendo tema para um projeto digital avangado. No entanto, esperamos que, tendo visto
(b} 4.82 () driver e (b) dritrés estados. livro de projeto VLSI ou ao menos um exemplo de
uso de driver, vocé terd uma idéia de uma das razdes pela qual um banco de registradores é um componente ttil: o componente esconde do projetista a complexidade do seu fanout. Para compreender o circuito de leitura, vocé deve entender primeiro o comEm inglés, esses comportamento de um outro componente — ¢ 0 componente triangular com duas
ponentes sdo mais
comumente conhecidos como “tri-state drivers (drivers tri-estado)” ao invés de “three-state
drivers {(drivers de trés estados)”. No entando, “tri-state” é uma
marca registrada da National Semiconductor Corporation. Assim, em muitos documentos,
para ndo colocar obrigatoriamente o simbolo de marca registrada,
apdos cada vez que “tristate” € utilizado, usa-
entradas e uma saida, ilustrado na Fig. 4.82(b), sendo conhecido como driver
de trés estados ou buffer de trés estados. Quando a entrada de controle ¢ € 1, 0 componente atua como um driver comum — a sua saida € igual a sua entrada. No entanto, quando a entrada de controle ¢ € 0, a saida do driver ndo € 0 nem 1,
mas estd no estado de alta impedéincia, como € conhecido, sendo escrito como ‘7. A alta impedancia pode ser pensada como se nio houvesse nenhuma conexdo entre a entrada e a saida do driver. “Trés estados” significa que o driver tem trés estados de saida possiveis: 0, 1 e Z, Agora, na metade direita da Fig. 4.81, vamos examinar o circuito de leitura do banco de registradores. Quando R_en=0, o banco de registradores ndo 1€ nenhum registrador, ja que todas as saidas do decodificador sdo 0s. Isso significa que as saidas de todos os drivers de trés estados estio no estado Z e desse modo asaidaR dataestd em alta impedancia. Quando R_en=1, entdo o decodificador
analisa R_addr e coloca um 1 na entrada de controle de exatamente um dos
drivers de trés estados, o qual passard o contetido do seu registrador para a saida R_data. Esteja ciente de que, na realidade, cada um dos drivers de trés estados mostrados representa um conjunto de 32 drivers de (rés estados, um para cada um dos 32 fios que vém dos 32 registradores e se dirigem a saida R_data de 32 bits. Todos os 32 drivers desse conjunto sdo controlados pela mesma entrada de controle.
se “three-state”.
Os fios alimentados pelos diversos drivers de trés estados sdo conhecidos como barramento, como indicado na Fig. 4.81. Quando as entradas de dados de um multiplexador t&m
Sistemas Digitais
muitos bits de largura e/ou quando um multiplexador tem muitas entradas de dados, um barramento € uma alternativa muito comum para o
multiplexador porque resulta em menos congestionamento. Note que o projeto de um banco de registradores presta-se bem
»
para extensOes com nimeros grandes de registradores. As linhas de escrita de dados podem ser acionadas por mais drivers, se necessdrio. As linhas de leitura de dados sdo alimentadas a partir de drivers de trés estados e, portanto, ndo ha congestionamento como no caso de um multiplexador simples. O leitor pode querer comparar o projeto do
e
banco de registradores da Fig. 4.81 com o da Fig. 4.6, que essencialmente era um projeto pobre de um banco de registradores. A Fig. 4.83 mostra um exemplo com diagramas de tempo, que descreve a escrita e a leitura em um banco de registradores. Durante o ciclo/, ndo conhecemos os contetddos do banco de registradores. Assim, esses conteddos serdao mostrados como “7”, Durante o ciclol!, fazemos W_data=9 (em bindrio, naturalmente), W_addr=3 e W_en=1. Esses valores fazem com que um 9 seja escrito na posicao 3 do banco de registradores, durante a primeira borda de relogio. Observe que fizemos R_en=0. Desse modo, na saida do banco de registradores nao haverd nada (“Z"), e o valor que colocamos em R_addr pode ser qualquer um (¢ um valor que
'|
ciclo 2
h
ciclo 3
9 | X
73
ciclo 4
h
ciclo 5
h
4
|
1
h 1
.Xsss
1
X
ciclo6
5
[|
x
WdataX
n
3
1
|3 I
{W_data
c
32
28
WA
4
58
Projeto
§§
de display, colocado
& &
Figura 484
acima do retrovisor, usando um banco de
registradores.
s
Wador Wi
32
R_data 75—
g g £z
e
Banco de registradores | 16x32 >
3 &
2o
4
Ruglice T
D &
g
1 RA
J
g I
"
ctr: contador
16
|
crescente de16bits A 16
clear
K L
load >
aQ
»
reg: registrador de 16 bits
|-
:
A6
Yo Figura 517
Bloco operacional do sistema de medigiio de distdncia baseado em laser.
A Fig. 5.17 mostra que o bloco operacional resultante € muito simples, mas ainda assim trata< se de um bloco operacional.
Projeto em Nivel de Transferéncia entre Registradores (RTL)
< 253
No exemplo anterior, ndo houve necessidade de multiplexadores. Assim, iremos ilustrar em separado por que algumas vezes eles devem ser incluidos. Considere o exemplo da ma-
quina de estados parcial de alto nivel, mostrado na Fig. 5.18(a). A Fig. 5.18(b) mostra o bloco operacional depois da implementagio das agoes do estado T0. Essas agOes requerem um somador, no qual os registradores E e F estdo conectados as entradas A e B. A Fig. 5.18(c) mostra o bloco operacional, apds a implementacio das agoes do estado T1. Esse estado também requer um somador, mas, como ja existe um no bloco operacional, ndo precisaremos acrescentar outro. Os registradores R e G deverdo ser conectados as entradasA e B do somador, mas, como essas entradas ja tém conexdes vindas de E e F, deveremos entdo acrescentar
multiplexadores, como mostrado na Fig. 5.18(d). Observe que foram criados nomes tnicos,
para cada uma das entradas de controle dos multiplexadores. Registradores locais: E. E G, R (16 bits}
SN
|
A
B
@H:H-I—G
4
{
v
>
(a)
add_A_s0 |
g
m
add_B_s0 — A
=
B
>R
(b)
(c)
R {d}
Figura 518 Instanciamento de multiplexadores para o bloco operacional: (a) parte de um exemplo de mdquina de estados de alto nivel, (b) o bloco operacional depois da implementagao das acdes do estado TO, (c) o bloco operacional depois da implementacdo das agdes do estado T1. resultando duas fontes para cada uma das entradas do somador, (d) o bloco operacional depois do instanciamento dos multiplexadores para lidar com as fontes multiplas,
Passo 3: Conecte o bloco operacional a um bloco de controle 0 Passo 3 do método de projeto RTL € na verdade imediato. Simplesmente criamos um bloco de controle, com as entradas e as saidas booleanas do sistema, e em seguida o conectamos as
entradas e saidas de controle do bloco operacional. > EXEMPLO 54
Medidor de distancia 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: Conecte o bloco operacional a um bloco de controle
Conectaremos o bloco operacional a um bloco de controle conforme mostrado na Fig. 5.19. Ligaremos as entradas e saidas de controle (B, L e §) ao bloco de controle, e a saida de dados (D) ao
blaco operacional. Também ligaremos o bloco de controle as entradas de controle do bloco operacional (Dreg_clr, Dreg_ld, Dctr_clr, Detr_ent). Normalmente, nfio mostraremos o bloco gerador de relégio, mas o estamos mostrando explicitamente nesta figura para tornar claro que o gerador deve ser exatamente de 300 MHz.
254 »
Sistemas Digitais
L = nara o laser
do botao
Bloco de controle
do sensor flDreg_cIr Dreg_ld —— e
>
Dctr_clr L
Bloco. operacional
Dctr_cnt
para o display
] s
16
|—| Relégio de 300 MHz ——={>
Figura 519 Projeto dos blocos de controle ¢ operacional (processador) para o medidor de distincia baseado em laser.
Passo 4: Obtenha a FSM do bloco de controle Se tivermos criado corretamente o nosso bloco operacional, a obtengdo de uma FSM para o bloco de controle € imediata. A FSM tera os mesmos estados € transi¢des que a mdquina de estados de alto nivel. Simplesmente definimos as entradas e saidas da FSM (todos serdo de um hit apenas) e, no lugar dos computos presentes nas agées e condigdes, teremos correspondentemente valores apropriados nos sinais de controle do bloco operacional. Lembre-se de que criamos o bloco operacional especificamente para realizar esses computos e, portanto, precisamos apenas configurar apropriadamente os sinais de controle do bloco operacional para implementar cada cOmputo em particular no momento correto. P EXEMPLO 55
Medidor de distancia baseado em laser — Obtendo a FSM do bloco de controle
Continvamos com o exemplo anterior, indo para o Passo 4 do método de projeto RTL. Passo 4: Obtenha a FSM do bloce de controle O dltimo passo € projetar a parte interna do bloco de controle. Podemos descrever o comportamento do bloco de controle, refinando a nossa médquina de estados de alto nivel da Fig. 5.15 e obtendo uma FSM. Substituiremos as agdes e condigdes de “alto nivel”, como Dctr=0, por atribui¢oes e condigdes reais para os sinais de entrada e saida do bloco de controle, como Detr_clr=1, conforme mostrado na Fig. 5.20. Observe que a FSM ndo indica diretamente quais operacdes estio ocorrendo no bloco operacional. Por exemplo, S4 carrega Dreg com Dctr/2, mas a FSM em si mostra apenas que o sinal de carga de Dreg estd sendo ativado. Assim, o comportamento
completo do sistema pode ser determinado a partir da FSM, olhando também o bloco operacional ao mesmo tempo.
» COMO FUNCIONA? CONTROLE ADAPTATIVO DE VELOCIDADE DE AUTOMOVEL No inicio da década de 2000, surgiram controles de velocidade de automdvel que ndo sé mantém uma dada velocidade, como também mantém uma dada distdncia até o carro que estd a frente, diminuindo assim a velocidade quando necessdrio. Esse controle “adaptativo” ajusta-se assim as mudangas de trafego em uma auto-estrada. Para isso, esses blocos de con-
troles adaptativos devem medir a distaneia até o carro
4 frente. Uma maneira de se medir essa distincia usa um medidor de distdncia baseado em laser, sendo que a fonte de raio laser e o sensor sdo instalados na
grade frontal do carro. conectados a um circuito efou microprocessador que caleula a distdncia. O valorda distincia ¢ enviado a uma entrada do sistema de con-
trole de velocidade, que determina quando aumentar ou diminuir a velocidade do automdvel.
Projeto em Nivel de Transferéncia entre Registradores (RTL)
Entradas: B, S
< 255
Saidas: L, Dreg_clr; Dreg_ld, Dctr_clr, Detr_cnt
L=0 Dreg cir=1 Dreg_ld =0 Dectrclr =0
L=0 Dreg.clr=0 Dreg_ld =0 Detr clr=1
L=1 Dreg clr=0 Dreg_ld =0 Dectr_clr =0
- L=0 Dreg.clr =0 Dreg.ld =0 Detr_clr =0
L=0 Dreg.clr =0 Dreg Id =1 Detroclr =0
Dotrent =0
Detr_ent=0
Detr_cnt =0
Dctr cnt=1
Detr_ent=0
{laser desiigado) (zere o contador) (laser ligada)
(laser desligade} (carregue Dreg com Detr/2)
{zere Dreg)
(ingrerhente)
(pare a contagem)
Figura 520 Descri¢iio da FSM usada no bloco de controle do medidor de distdncia baseado em laser. A agdo desejada em cada estado estd mostrada em itdlico na linha de baixo. A correspondente atribuigao de sinal que permitea realiza¢io de cada agfo esta em negrito. Lembre-se do Capitulo 3 que normalmente seguimos a convengao de que os sinais de saida de uma FSM, que nio sdo mostrados explicitamente em um estado, 8m implicitamente valor 0. De acordo
com essa convengiio, 2 FSM seria como a daFig. 5.21. Mesmo assim, poderemos ainda optar por mos‘trar explicitamente a atribuigao de um 0 (por exemplo, L = 0 no estado $3) se essa atribuicio for uma ‘agdo chavede um estado. As acdes-chave de cada estado foram colocadas em negrito na Fig. 5.20. Entradas: B, S
Saidas: L, Dreg;clr, Dreg_d, Detr_clr, Detr_cnt
L=0
Dreg.clr=1
Detr_cir=1
{zere o contador)
L=1
(laserligada}
L=0
Detr_cnt=1
Dreg.Id
=1
Detr_cnt =0
{laser desligado)
(faser desligado) (carregue Dreg com Deti/2)
{zere Dreg)
{incremente)
{pare a contagem)
Figura 5.21 Descriciio da FSM, usada no bloco de controle do medidor de distincia baseado em laser, usando a convenc¢do de que, quando as saidas dessa FSM ndo s3o mostradas, elas tém implicitamente valor 0. Completariamos 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 l6gica de saida, como descrito no Capitulo 3.
x(t-1)
Cl
’ >
=t0
x(t-2)
c
5 >
xt1
C
xt2
W =
ck—=>
>
Yy ES
P
> Ed
Y
v Ed
Y —f
Figura 537 Ampliando o bloco operacional do filtro FIR - insergio e conexiio dos registradores para 0, cl e c2 de cada rap, juntamente com os multiplicadores. Por simplicidade, as conexdes de relégio ndo estdo mostradas e assume-se que todas as linhas de dados t8m 12 bits de largura.
Projeto em Nivel de Transferéncia entre Registradores (RTL)
< 267
A saida Y € a soma dos produtos dos faps. Para isso, podemos inserir somadores para calcular a
soma resultante e podemos conectar essa soma & saida Y, como mostrado na Fig. 5.38. Completamos o coragéo do projeto do bloco operacional desse filtro FIR. Agora precisamos
de um meio para que um usudrio carregue os valores das constantes nos registradores c0, ¢l ¢ 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 vsudrio do filtro poderd usar para carregar uma constante em um registrador em particular. O valor CalCa0=00 indica que o registrador c0 deve ser carregado, 01 indica que cl deve ser carregado, e 10, que c2 deve ser carregado. O valor de entrada C serd carregado no registrador
apropriado, durante uma borda de rel6gio, apenas quando CL=1. Podemos projetar facilmente o circuito que realiza essa carga, usando um decodificador, como mostrade na Fig. 5.39. As linhas de
enderego Cal e Ca0 alimentam um decodificador 2x4, habilitando assim o registrador apropriado (note que o endereco 11 nio € usado). A entrada de carga CL € conectada i entrada de habilitagio do decodificador. Note também que acrescentamos um registrador a saida Y, o que geralmente & uma boa prética de projeto, ja que esse registrador assegura que a saida ndo flutua quando produtos ¢ somas parciais sdo computados. Isso reduz a probabilidade do usudrio aumentar acidentalmente o caminho critico, conectando Y a uma quantidade grande de légica combinacional antes de Y ser carregado em um registrador. filtro FIR de trés taps x(t) xt0
=
x(t-1)
>
xt1
o
x(t-2)
>
xt2
=
clk—m=>
Figura 5.38
i
[>
Yy
o
>
s
D
y
>
A saida Y do filtro FIR € computada como sendo a soma dos produtos dos faps
(assume-se que todas as linhas de dados tém 12 bits de largura).
Apos o dois passos sitou de um extremo de
término do projeto do bloco operacional, 0 nosso método de projeto RTL envolve mais para completar o bloco de controle. No entanto, esse projeto em particular ndo necesbloco de controle, nem mesmo de um simples! Esse exemplo € na realidade um caso um projeto com predominio de dados.
b
>
um periodo especificado de tempo antes da borda de um relégio. O tempo de setup € somado ao comprimento do caminho. Mesmo considerando os atrasos nos fios e os temposde setup, os projetistas tipicamente escolhem um periodo de relégio que € ainda maior do que o caminho critico, com
um valor que depende de quéo conservador o projetista de-
seja ser para se assegurar de que o circuito ird trabalhar sob uma variedade de condigGes de operagio. Certas condi¢es podem mudar o atraso dos componentes de circuito,
Figura 5.42 O caminho mais longo seréd de 3 ns se considerar-
‘como temperatura muito elevada ou muito baixa, vibragdo, = mos 0s atrasos nos fios. idade, etc. Geralmente, quanto maior for o perfodo além do ‘caminho critico, mais conservador serd o projeto. Por exemplo, podemos determinar que o caminho ctitico tem 7 ns, mas podemos escolher um periodo de reldgio de 10 ns, ou mesmo 15 ns, sendo este Gltimo bem conservador.
Se um objetivo do projeto for o baixo consumo, entédo um projetista podera escolher um periodo ainda maior, como 100 ns, para reduzir a poténcia consumida pelo circuito. Na Se¢io 6.6, sera discutido o porqué da reduco de fregiiéncia baixar o consumo, Quando um projetista analisa um processador (blocos de controlee operacional) para determinar o caminho crilico, ele deve estar ciente de que os caminhos entre registradores existem ndo sO dentro do bloco operacional (Fig. 5.43(a)), mas também dentro do bloco de controle (Fig. 5.43(b)), entre os blocos de controle ¢ operacional (Fig. 5.43(c)), e mesmo
‘entre 0 processador € 0s componentes externos.
Projeto em Nivel de Transferéncia entre Registradores (RTL)
< 271
» FABRICANTES CONSERVADORES DE CHIPS E OVERCLOCKING DE PCs Usualmente, os fabricantes de chips publicam as freqiéncias méaximas de relégio de seus chips com um valor um pouco abaixo do maximo real—possivelmente 10, 20 ou mesmo 30% abaixo. Esse conservadorismo reduz as possibilidades do chip vir a falhar em situagdes nio previstas, como extremos de calor ou frio, ou ligeiras variagdes no processo de fabrica¢do. Muitos entusiastas de computadores pessoais tiram vantagem desse conservadorismo e fazem o chamado “overclocking” de seus PCs. ou
PC, conseguem ajustar a freqiiéncia de reldgio dos chips para um valor superior a0 méximo publicado. Numerosos sifes na Internet publicam estatisticas a respeito dos sucessos e fracassos de pessoas que tentam-acelerar a freqiiéncia de quase todos os tipos de processadores usados em PCs — parece que o normal
seja, alterando os ajustes do BIOS (Basic Inpui/Ou-
projetos conservadores sao uma presenga freqiiente.
€ um valor 10 a 40% superior a0 maximo publicado. Entretanto, eu nao recomendo o overclocking (porque vocé pode danificar o microprocessador devido a0 superaquecimento), mas € interessante ver como
iput System, ou sistema bésico de entrada e saida) do
Légica combinacional
¥s
8 i
o
) L
5
Biheteit
tot_clr
-
=
ittt
\
Sl
“
Sl
i
|i
|d
#
=
—
;I
! i
i IF
s1 A
=] =
i
=Ll
8!
e)
tot_lt_s
1
tat
\
;
! i i
I;.
:
Aso
!
ea—
>
1
egistrador de estado
A s
8 bits < il
~=
|
I I
l
||Somador de 8 bits “_]__?'-
Bloco operacional
(b)
i
|] ;
] .
?
(a)
i
- !
'
Figura5.43 Caminhos criticos em um circuito: (a) dentro de um bloco operacional, (b) dentro de um bloco de controle e (¢) entre um bloco de controle e um bloco operacional,
O nimero de caminhos possiveis em um circuito pode ser bem grande. Considere um circuito, com N registradores, que tem caminhos desde cada um dos registradores até todos os outros. Assim, haverd N*N, ou N’ caminhos possiveis entre os registradores. Por exemplo, se N for 3 ¢ os trés registradores forem referidos como A, B e C, entdo os caminhos possiveis serio: A—>A, A—>B, A—>C,B—>A,
B—>B, B—>C,
C—>A,
C—>B¢
C—>C,
ou 3*3=9
caminhos possiveis. Para N=50, podera haver até 2500 caminhos possiveis. Devido ao grande
niimero de caminhos possiveis, ferramentas automaticas podem ser de grande auxilio. Ferramentas de andlise de tempo podem examinar automaticamente todos os caminhos para determinar o mais longo, e assegurar também que os tempos de setup e hold sejam satisfeitos em todo o circuito.
212 »
Sistemas Digitais
» 55 DESCRICAO EM NIVEL COMPORTAMENTAL: PASSANDO DE C PARA PORTAS (OPCIONAL) A medida que a quantidade de transistores por chip continua a aumentar €, conseqiientemente, 0s projetistas constroem sistemas digitais mais complexos que usam esses transistores adicionais, o comportamento dos sistemas digitais torna-se progressivamente mais dificil de ser compreendido. Fregiientemente, um projetista que estd construindo um novo sistema digital acha dtil descrever primeiro o comportamento desejado do sistema usando uma linguagem de programacao, como C, C++ ou Java, para primeiro obter uma descrigéio correta
do comportamento desejado. (Alternativamente, o projetista pode usar os construtos de programacio de alto nivel de uma linguagem de descri¢do de hardware, como VHDL ou Verilog, para obter uma descrigiio correta do comportamento desejado.) A seguir, o projetista converte essa descricdo em linguagem de programagio em um projeto RTL, seguindo o método de projeto RTL, o qual usualmente comega com uma descrigao RTL de uma maquina de estados de alto nivel. A conversdo de uma descri¢do de um sistema, feita com uma linguagem de programagao, em uma descrigdo RTL ¢é conhecida como projeto emt nivel comportamental. Introduziremos o projeto em nivel comportamental por meio de um exemplo. P EXEMPLO 59
Soma de diferencas absolutas em C para a compresséo de video
Lembre-se do Exemplo 5.7, no qual criamos um componente que realizava a soma de diferencas absolutas. Naquele exemplo, comegamos com uma maquina de estados de alto nivel — mas essa
méquina de estados nio era muito ficil de ser compreendida. Podemos descrever mais facilmente o computo da soma de diferengas absolutas usando um cédigo em linguagem C, como mostrado na Fig. 5.44.
int SAD {bv_te A [256_], byte B [256]) // nao é bem a sintaxeC {.
uint soma ; short uint i; soma = 0; i=0;
Figura 544 Descrigio usando um programa em C do computo de uma soma de diferencas absolutas — o programa em C pode ser mais ficil de desenvolver e compreender
while {i = 256) {
soma = soma + abs (A[i] - Blil);
} }
i=i+1;
return (soma);
do que uma maquina de estados.
Para a maioria das pessoas, € muito mais ficil compreender esse cddigo do que a mdquina de estados de alto nivel da Fig. 5.29. Assim, em certos projetos, o cdigo em C (ou algo similar) € o ponto de partida mais natural. Para iniciar o método de projeto RTL, deveremos transformar esse codigo em uma maquina de estados de alto nivel, como a da Fig. 5.29, e em seguida prosseguir completamente com o método,
obtendo assim o circuito projetado.
«
E instrutivo definir um método estruturado para converter um cédigo C em uma maquina de estados de alto nivel. A defini¢io desse método deixard claro que um cddigo em C pode
ser compilado automaticamente, produzindo-se um programa, que pode ser executado em um processador programavel, ou um circuito projetistas, que comeca com um cddigo jeto RTL, nde segue necessariamente um Entretanto, na realidade, as ferramentas
digital customizado. Destacamos que a maioria dos em C e prossegue entdo segundo os passos do prométodo em particular para realizar essa conversao. automatizadas seguem sim um método, o qual tem
algumas semelhancas com o que passaremos a descrever. Destacamos também que, algumas
Projeto em Nivel de Transferéncia entre Registradores (RTL)
e rw=1, escrever). A entrada de controle en de um bit habi-
lita a RAM, permitindo que ela seja lida ou escrita—quando
Figura 552
Simbolo de dia-
grama de blocos de uma RAM 1024x32.
niao queremos ler nem escrever em um ciclo de relégio em particular, fazemos en ser 0, evitando assim que a memdria seja lida ou escrita (independentemente do valor de rw). A Fig. 5.53 mostra a estrutura légica interna de uma RAM MxN. Quando dizemos “estrutura interna” significa que podemos pensar em uma estrutura implementada desse modo, mesmo que a implementacio fisica real contenha uma estrutura diferente. (Como analogia,
a estrutura l6gica de um telefone € um microfone e um alto-falante, conectados a uma linha telefénica. Por outro lado, fisicamente, as implementagoes dos telefones reais sdo muito
» POR QUE SE CHAMA MEMORIA DE ACESSO ALEATORIO? Nos primeiros tempos do projeto digital, ndo existiam RAMSs. Se vocé tivesse informagdes e
cabeca. Em outras palavras, a memoria era acessada segiiencialmente. Quando a RAM foi inicial-
quisesse que seu circuito digital as armazenasse,
mente lancada, sua caracteristica mais atrativa era
vocé deveria guardd-las em uma fita ou um tambor magnético. As unidades de fita (e de tambor, também) tinham de mover a fita até que a posig¢do desejada de memdria estivesse debaixo da cabeca, a qual podia ler ou escrever nela. Se em um dado
que um endereco “aleatério” podia ser acessado, levando o mesmo tempo que o acesso a qualquer outro enderego, independentemente de qual endereco tinha sido lido antes. A razio é que, quando se acessa uma RAM. nao ha “cabeca” alguma sendo usada nem fita ou tambor girando. Desse modo, o
momento a posicdo 900 estivesse debaixo da cabeca e vocé quisesse escrever na posi¢io 999, a fita deveria ser movida, passando pelas posicoes 901,
902, ... 998, até que a posicao 999 estivesse sob a
termo memodria de “acesso aleatério” (ou “acesso randdmico’’) foi usado e tem permanecido em usc até hoje.
278 »
Sistemas Digitais
diferentes, podendo conter monofones, headsets™, conexdes sem fio, dispositivos internos
de atendimento automadtico, etc.) A parte principal da estrutura de uma RAM ¢ uma grade contendo os blocos de armazenamento de bits, também conhecidos como ¢élulas. Um conjunto de N células forma cada uma das M palavras. Uma entrada de endereco alimenta um decodificador. Cada uma de suas saidas habilita todas as células da palavra que corresponde ao valor presente de endereco. A entrada de habilitagfio, en, pode desabilitar o decodificador, impedindo que uma palavra qualquer seja habilitada. A entrada de controle de leitura ou escrita, rw, também se conecta a todas as células, controlando se a célula serd gravada com os dados de escritawdata, ou se o contetido dela seri lido e colocado na saida de dados de leitura rdata. As linhas de dados estdo conectadas a todas as células das palavras. Desse modo,
cada célula deve ser projetada de modo que o contetido aparecera na saida apenas quando ela estiver habilitada. Quando desabilitada, nada ¢ colocado na saida, impedindo que ocorram
interferéncias com a saida de alguma outra célula. wdata(N-1)
SejaA=logy M
wdata(N-2}
wdata0
habilitagao
|~bloco de armazenamento
de palavra dof——— Yy 3
E‘l? decodiA.M
ese
o
addr{A-1)
g
g odor df
eddri=re8l
g
Z
]
*
ik s
=== alA-1)
T T
i L8
clk—mm>
)
B
¥
| ees -1 *—-l-'*jt—— "
i
e e
ses|
|
ee
e
de bit (também conhecido como “célula”)
™ -palavra
!
dalha
{
*'" T
T
i
o
b S s
habilitagao| habilitagéo ™ de palavra {de palavra = L
para fodas as células rdatal{N-1)
Figura 553
:
célula
I
|
en ——*
w———
*
|
ddta
*
Y
Y
rdata{N-2)
rdata0
Estrutura l6gica interna de uma RAM.
Observe que a RAM da Fig. 5.53 tem as mesmas entradas e safdas do diagrama de blocos da RAM da Fig. 5.52, exceto que as linhas de escrita e leitura de dados da RAM da Fig. 5.53 estiio separadas, a0 passo que na Fig. 5.52 ha um tinico conjunto de linhas de dados (porta tinica). A Fig. 5.54 mostra como linhas separadas podem ser combinadas dentro de uma RAM que tem um tnico conjunto de linhas de dados. Armazenamento de bit em uma RAM
= ------ JY7
W
datalN-1}
oelepm
aggffi
I
data0
Figura5.54 Entrada e saida de dados de uma RAM de porta dnica.
Comparada com um banco de registradores, a caracteristica chave de uma RAM ¢ a sua compacidade. Lembre-se do Capitulo 3 que usamos um flip-flop para implementar um bloco de armazenamento de bit. Como as RAMs armazenam uma grande quantidade de bits, elas utilizam um bloco de armazenamento de bit que € mais compacto do que o de um flip-flop.
Desse modo, iremos discutir brevemente os projetos internos dos blocos de armazenamento de bit que sdo usados em dois tipos populares de RAMs — RAM estitica e RAM dindmica. No entanto, saiba antecipadamente que os projetos internos desses blocos envolvem questdes de eletrénica, além do escopo deste livro, fazendo parte dos objetivos de livros sobre VLSI ou *N. de T: O monofone do telefone € a parte mével que o usudrio segura com a mio enquanto fala. E constituida pelo microfone ¢ o alto-falante (ou um fone). O headses € um suporte de monofone que se ajusta i cabega, permitindo que a pessoa figue com
as maos livres,
Projeto em Nivel de Transferéncia entre Registradores (RTL) < 279 projeto digital avancado. Felizmente, um componentedo tipo RAM encobre a complexidade de sua eletrdnica interna usando um controlador de meméria. Assim, a intera¢do entre um
projetista digital e uma RAM continua sendo a que foi discutida na segio anterior.
RAM estética Uma RAM estitica (SRAM, de Static RAM)
data
usa um bloco de armazenamento de bit constituido por dois inversores conectados em lago,
data’
como mostrado na Fig. 5.55. Um bit d passa pelo inversor inferior para tornar-se d', retorna através do inversor superior e torna-se d novamente — assim, o bit fica armazenado no lago “1 “l16tura 40 com com a estrutura ¢om cdo inversor. €rso. Em compara gica” da RAM da Fig. 5.53, observe que o
habilitago, i Pl
bloco de armazenamento de bit contém uma
Figura555
T
0
S
T
Célula de uma SRAM.
linha extra de dados, data', que o atravessa. Para escrever um bit nesse lago inversor,
data
colocamos o valor desejado do bit na linha de
data’
dados data e o sen complemento em data'. Desse modo, para armazenar um 1, o contro-
lador de memdria faz data=1e data'=1, como mostrado na Fig. 5.56. (Para armazenar um 0, o controlador deve fazer data=0e data'=1.) A
N_A
seguir, o controlador faz enable=1, o que ativa
| "abilitagdo
os dois transistores mostrados. Desse modo,
il e
os valores de data e data' aparecetdo no lago
Figura556
T
T
!
Escrevendo um 1em umacélula
inversor, como mostrado (sobrepondo-se a de SRAM. qualquer valor que jd estivesse ali antes). A compreensio completa do porqué do funcionamento desse circuito envolve detalhes elétricos que estao além do escopo desta discussdo. Para realizar a leitura do bit armazenado, pode-se colocar primeiro um 1 em ambas as linhas data e data' (uma agéio conhecida como pré-carga) e, em seguida, fazer o sinal de habilitag@o ser 1. Em um dos lados, um dos transistores habilitados terd um 0. Com isso, o 1 pré-
carregado em data ou data’ sofrerd uma queda de tensfo, a qual passard a ser um pouco inferior & tens@o normal do 1 l6gico. Ambas as linhas data e data' sfo conectadas a um circuito especial, chamado de amplificador sensor de tensdo. Esse circuito detecta se a tensido em
data € ligeiramente maior que a de data’, significando que um 1 l6gico estd armazenado, ou se a tensdo em data' € ligeiramente menor que a de data, significando que um 0 16gico estd
armazenado. Novamente, os detalhes de eletronica estdo além do escopo desta discussao. Observe que o bloco de armazenamento de bitda Fig. 5.57 utiliza seis transistores — dois em cada um dos inversores ¢ dois fora. Seis transistores € menos do que o necessdrio em um flipflop D. Entretanto, hd um custo: deve-se usar
data
data’
um circuito especial para ler o bit armazenado no bloco, ao passo que, em um flip-flop D, os
valores légicos usuais sdo produzidos diretamente na sua saida. Esse circuito especial aumenta o tempo de acesso aos bits armazenados. Uma RAM baseada em um bloco de armazenamento de bit de seis transistores, ou em algum semelhante, € conhecida como RAM
estdtica, ou SRAM. Enquanto houver energia
‘Aos amplificadores sensores
Figura557
Leitura de uma SRAM.
280 » Sistemas Digitais
alimentando os transistores, uma RAM estdtica mantera o bit armazenado. A ndo ser, natural-
mente, que o bloco esteja sendo escrito, o bit armazenado ndo muda — € estitico (invaridvel).
RAM dindmica Um bloco alternativo, muito usado no arma-
zenamento de bits em RAM, tem apenas um
da|t3
tinico trangistor por bloco. Esse bloco utiliza um capacitor (de valor relativamente elevado)
na saida do transistor, como mostrado na Fig. 5.58(a).
célula _
%
habilitagao
{
de palavra
A escrita poderd ocorrer se enable for 1;
Fi
—|_ fm’fle‘;’m,ga
o sinal data=1 ird carregar a placa superior do
f/ fenta
‘capacitor com 1, ao passo que data=0 carrega-
=
a com 0. Quando enable retornaa 0, 0 1 na placa superior comeca a ser descarregado através do capacitor até a placa inferior e daf até a terra. (Por qué? Porque € assim que um capa-
(al . Moty endble
citor funciona.) No entanto, intencionalmente, o capacitor € projetado para ter um valor relativamente elevado, de modo que a descarga
leva um tempo longo. Durante esse tempo, o
3
i [
]
m d
Figura558
b
4
Célula de uma SRAM.
bit d permanece efetivamente armazenado no capacitor. A Fig. 5.58(b) mostra um diagrama de tempo, que ilustra a carga e descarga do capacitor. A leitura pode ser realizada fazendo primeiro data ter uma tensdo intermedidria entre 0 e 1 e, em seguida, fazendo enable ser 1. O valor armazenado no capacitor ird modificar a tensao presente na linha de dados. Essa tensdo alterada pode ser detectada por circuitos especiais, conectados 2 linha de dados, que amplificam o valor detectado, tornando-o 1 ou 0 16gico. Acontece que, quando se realiza a leitura da carga armazenada, o capacitor descarrega-se. Assim, depois de ler o bit, a RAM deve imediatamente escrevé-lo de volta no bloco de armazenamento. A RAM deve conter um controlador de memoéria para automaticamente fazer essa
escrila. Os chips de
DRAM
Como um bit armazenado no capacitor descarrega-se gradualmente para a'terra, a RAM_d_ave f:lar um refresh™ em cada bloco de armazenamento de
apareceram primeira-
bit antes que os bits sejam completamente descarregados e conseqiientemente
menté no infeio da d&: cada de 1970 e podiam memorizar apenas unspoucos mithares de
perdidos. Para dar refresh em ler o bloco e entdo escrevero cada poucos microssegundos. interno para automaticamente
bits. As DRAMs moder-
um blocode armazenamento de bit, a RAM deve bit lido de volta no bloco. Isso deve ser repetido a A RAM deve conter um controlador de memoria dar refresh.
Note que, no momento em que queremos ler uma RAM, ela pode estar
nas podem armazenar
ocupada dando refresh. Além disso, automaticamente, cada leitura deve ser
muitos bilhoes de bits.
geoyida de uma escrita. Assim, uma RAM baseada na tecnologia de transistor
mais capacitor pode necessitar de mais tempo para ser acessada. Como o bit armazenado afrera-se (descarrega-se), mesmo quando se estd fornecendo energia e nio se estd escrevendo no bloco de armazenamento de bit, uma RAM que se baseia em blocos de armazenamento, com transistor e capacitor, € conhecida como RAM dinédmica, ou DRAM (Dynamic RAM). Comparada com uma SRAM, uma DRAM ¢€ ainda mais compacta, requerendo apenas um transistor por bloco de armazenamento de bit, em vez de seis transistores. O custo € que uma *N. de T: Refrescar, usado com o sentido de “refrescar a meméria™, As expressdes “dar refresh” e “fazer refresh™ sfio bastante usadas e serfo-adotadas agui.
Projeto em Nivel de Transferéncia entre Registradores (RTL) < 281
DRAM necessita de refresh, o que em iiltima andlise torna mais demorado o tempo de acesso. Um outro custo, ndo mencionado antes, € que a construgdo do capacitor de valor relativa-
mente elevado de uma DRAM requer um processo especial de fabricag@o de chip. Assim, a combinagdo de uma DRAM com a l6gica habitual pode ser dispendiosa. Durante a década de 1990, mal se ouvia falar dessa combinagio de DRAM ¢ l6gica em um mesmo chip. Entretanto, os avangos tecnolGgicos permitiram que DRAMS e circuitos 16gicos aparecessem no mesmo chip em mais e mais casos. '
Para armazenar o mesmo nimero de bits, a Fig. 5.39 mostra graficamente as vantagens da compacidade das SRAM:s sobre os bancos de registradores ¢ das DRAMs sobre as SRAMs.
_ Memoéria MxN implementada como: banico de registradores
Usando uma RAM A Fig. 5.60 mostra diagramas de tempo que descrevem como se deve escrever ¢ ler na RAM da Fig.
S DRAM
5.52. O diagrama de tempo da Fig. 5.60 mostra como escrever um 9 ¢ um 13 nas posigdes 500 e 999 durante as bordas de relogio 1 e 2, respectivamente. A seguir, 0 proximo ciclo mostra como ler a posi-
¢io 9 da RAM, fazendo addr=9, data=Z e rw=0 (0
Figura 558
Tlustragéio dos beneficios
que significa uma leitura). Logo ap6s rw tornar-se da compacidade de SRAMs e DRAMs 0, data torna-se 500 (o valor que previamente havi(fora de escala). amos armazenado na posicdo 9). Observe que primeiro tivemos de desabilitar a nossa escrita de data (fazendo-o ser Z), de modo que nédo
houvesse interferéncia com os dados que estdo sendo lidos da RAM. Note também que essa operacio de leitura da RAM ¢ assincrona.
clk
-l
addr X
doa X w
9
I 1
1
]
1
o0 [ X
ool XzXlso
:
|1 signiifica escrever;
en__|
i
!
|
:
|
1
i
I
|
2
B _
1
!
I
g
valido
—
—
n rempo
n
|
de sefup
X umu%mpo Xz X 500 -
P
hold
=tempo ’ de'setu P! ] .
—
oo i
:
de acesso
& jgual a 939
{a) Figura 5.60 & Acesso.
h
Bddl’
o
agora AAM[8] | agora RAMY13] éiguala 500
clk
{b)
Leitura e escrita em uma RAM: (a) diagramas de tempo, (b) tempos de setup, hold
0 atraso entre o instante em que colocamos a linha rw em modo de leitura ¢ o momento em que a saida data torna-se estdvel é conhecido como tempo de acesso ou tempo de leitura
da RAM. Agora daremos um exemplo do uso de uma RAM em um projeto RTL. P EXEMPLO 512
Gravador digital de audio usando uma RAM
Vamos projetar um sistema que pode gravar sons e depois reproduzi-los. Esse tipo de gravador € ‘encontrado em diversos brinquedos, em secretarias eletronicas telefOnicas, no antncio de mensa-
282 » Sistemas Digitais
gens pré-gravadas de celulares e em numerosos outros dispositivos. Precisaremos de um conver-
sor analégico-digital para digitalizar o som, uma RAM para armazenar o som digitalizado, um conversor digital-analégico para dar saida ao som digitalizado e um processador para controlar os conversores e a RAM. A Fig. 5.61 mostra um diagrama de blocosdo sistema. RAM 409616
> fio
microfone
CONVErsor
16 =l ’—R
analégico-
o bt
digital
>
al s ad_Id
8
8B
5
EE '
=
:
Bia IRow] fen processador
=
CONVersor
|
2naldgico
da_ld
digital-
W
fio
>
|ato
endereco impar.
quer, como estard ativa apenas uma das
e
-
Y5
2048x8 a
a0
=
: | ¥ 0
addr ROM | 1024x8 aH st
1 addr ROM 1 1T
;
_ i
1024x8 en data
de largura maior do mesmo tipo de com-
Figura 586
Quando se compde uma ROM
e
2048x8 a partir de duas ROMs 1024x8, podese usar o bit mais significativo de endereco para fazer a selegdo entre as duas ROMs. Os demais bits de endereco definem a posiciio dentro da ROM escolhida.
» 5.9 OTIMIZACOES E TRADEOFFS EM PROJETO RTL (VEJA A SECAO 6.5) As secOes anteriores deste capitulo descreveram como realizar o projeto em nivelde transferéncia entre registradores para criar processadores, constituidos de um bloco de controle e um operacional. Esta secéo, que na realidade estd na Secfo 6.5, descreve como criar processadores que sao mais otimizados, ou que realizam o fradeoff de uma caracteristica por outra (por
exemplo, tamanho por desempenho). Uma forma de usar esse livro consiste em analisar essas otimizagdes e fradegffs, logo apos a introducio do projeto em nivel RTL, ou seja, agora. Uma ‘outra forma deixa essa andlise para mais adiante.
Projeto em Nivel de Transferéncia entre Registradores (RTL)
» 5.10 DESCRICAO DE PROJETO RTL USANDO DE HARDWARE (VEJA A SECAQ 9.5)
< 297
LINGUAGENS DE DESCRICAQ
Essa secfio, que na realidade estd na Secdo 9.5, descreve o uso de HDLs durante o projeto RTL. Em uma forma de usar esse livro, essa descri¢iio de HDL € feita logo apds a introducgao do projeto em nivel RTL, ou seja, agora. Em uma outra forma, a descri¢do do uso das HDLs € vista mais adiante.
> 5.11
PERFIL DE PRODUTO - TELEFONE CELULAR Um celular, forma reduzida de telefone celular, também conhecido como telefone mével, € um telefone portitil sem fio que pode ser usado para realizar chamadas telefonicas, enquanto se anda por uma cidade. Os celulares tornaram possivel a comunicacio entre pessoas distantes, quase em qualquer momento e em gqualquer lugar. Antes dos celulares, a maioria dos telefones estava vinculada a lugares fixos como uma casa ou um escritorio. Algumas cidades mantinham um sistema de telefones moveis baseado em radio, © qual usava uma potente antena central localizada em algum lugar da cidade, possivelmente no topo de um edificio elevado. Como as freqiiéncias de radio sdo escassas e, portando, distribufdas cuidadosamente pelos governos, esse sistema de radiotelefonia podia usar apenas algumas dezenas ou cen-
tenas de freqiiéncias diferentes de radio e, portanto, niio podia suportar um grande nimero de usudrios. Como conseqiiéncia, esses poucos usudrios pagavam taxas muito elevadas pelo servigo, limitando o uso desses telefones méveis a poucos individuos abastados e a funciondrios piiblicos importantes. Para poder dispor do servigo, o qual geralmente nfo funcionava em outras cidades, esses usudrios deveriam estar dentrode um certo raio, medido em dezenas de quildmetros, desde a antena central.
Células e estagoes base Na década de 1990, a popularidade dos telefones celulares explodiu crescendo de pou-
antena da estagéo base
cos milhdes de usudrios até centenas de milhoes duranie aquela década (embora a primeira chamada com telefone celular tenha sido feita por Martin Cooper da Motorola, o inventor do celular, 14 por 1973) e hoje € di-
_
ficil para muitas pessoas se lembrar como era a vida antes dos telefones celulares. A idéia técnica, que fundamenta os telefones celulares, consiste em dividir uma ¢idade
f
em numerosas regides pequenas, conhecidas
| 99298
como células (dai o termo “telefone celular”). A Fig. 5.87 mostra uma cidade divi-
° Figura587
dida
4 mesma
em
trés células_
Na
malidade,
uima ci-
dade tipica pode ser dividida em dizias, centenas ou mesmo milhares de células.
‘Cada célula tem a sua antena de rddio ¢
central de
| |
comutagao " normal
O telefone 1 na célulaA pode usar fréqijéncia- de riadio que
o telefone
2
D2 c€lula C. Assim, aumenta-s¢ o nimero de possiveis usudrios de telefones celulares em
umacidade.
equipamento proprios no seu centro, conhecido como estacdo base. Cada estaciio base pode usar ddzias ou centenas de freqiiéncias diferentes de radio. A antena de cada estagdo base precisa apenas transmitir um sinal de radio
298 » Sistemas Digitais
suficientemente potente para cobrir a drea da célula correspondente & estagdo base. Assim, na
realidade, as células ndo adjacentes podem reutilizar as mesmas freqgiiéncias, de modo que as radiofreqiiéncias, em nimero limitado, permitidas para os telefones méveis, podem ser com-
partilhadas por mais de um telefone em um dado momento. Conseqiientemente, muito mais usudrios podem ser atendidos, o que leva a uma redugdo de cusios por usudrio. A Fig. 5.87 ilustra que o celular 1 na célulaA pode usar a mesma freqiiéncia que o celular 2 na célula C, porque os sinaisde radio da célula A nfo alcancam a célula C. Suportar mais usudrios signi-
fica reduzir grandemente o custo por usudrio e ter mais estactes base significa disponibilizar 0 servico em mais dreas do que simplesmente as grandes cidades.
A Fig. 5.88(a) mostra uma antena tipica de estag@io base. O equipamento da esta¢do pode estar em uma pequena construgiio ou comumente em uma pequena caixa, préximo da base da antena. Na realidade, a antena mostrada suporta ‘as antenas de dois provedores diferentes
de servigo de telefonia celular —~ uma no topo e outra um pouco abaixo no mesmo poste. O terreno para os postes custa caro. Por essa razdo, os provedores o compartilham, ou algumas vezes procuram estruturas altas para montar as antenas,
como edificios, postes de iluminagao em estacionamentos, € outros lugares de interesse (por exemplo, a Fig. 5.88(b)). Alguns provedores tentam encobrir as suas antenas para tornd-las mais agraddveis ao (a) olhar, como na Fig. 5.88(c) — a drvore in(b) teira da figura € artificial. Figura 588 EstacOes base encontradas em diverEm uma cidade, todas as estagées sos locais. base de um fornecedor de servigo sio conectadas a uma central de comutaciio. Essa central nfo apenas conecta o sistema de telefonia celular ao sistema regular de telefonia com “linhas terrestres”, mas também atribui freqiiéncias de radio especificasas chamadas telefonicas e faz a comutag#o entre as células
quando um telefone esta se deslocando entre elas. Como funcionam as chamadasde telefones celulares ‘Suponha que vocé esteja segurando o celular I na célulaA da Fig. 5.87. Quando vocé liga o celular, ele fica esperando por um sinal vindo de alguma esta¢ao base em uma fregiiéncia de controle. Essa freqiiéncia especial de rddio € usada na comunicagiio dos comandos (em vez dos dados de som) entre a estacao base e o celular. Se o telefone ndo receber nenhum sinal desse tipo, ele indicard um erro de “Sem servigo™. Se o telefone receber o sinal da estagdo base A, entédo ele transinitird o seu proprio nimerode identificaggo (ID) para a estagio A. Cada telefone celular tem o seu nimero de identificagio ID exclusivo. (Na realidade, dentro de cada celular, h um cartéo de memdria ndo-volatil que contém esse nimero de identifica-
¢io — potencialmente, um usudrio pode trocar cartdes entre celulares, ou ter miltiplos cartoes para 0 mesmo aparelho, mudando de nimero quando troca de cartdo.) Esse niimero ID € co-
municado ao computador da central de comutagdo pela estagéio baseA ¢, como conseqii€ncia, o banco de dados no computador do provedor de servigo registra agora que o seu celular est4 na ¢élula A. Para lembrar a central de comutac¢io de sua presenga, o celular envia periodicamente um sinal de controle.
Projeto em Nivel de Transferéncia entre Registradores (RTL)
< 299
Quando entdo alguém chama o ndmero do seu celular, essa ligacao pode estar vindo pelo sistema telefGnico comum e indo para a central de comutacio. O banco de dados no computador da central indica que seu celular estd na célula A. Em um dos tipos de tecnologia de telefonia celular, o computador da central de comutagéo atribui a chamada uma freqiiéncia especifica de radio, suportada pela estagdo base A. Na verdade, o computador atribui duas freqii€ncias, uma para falar ¢ outra para escutar, de modo que a escuta e a fala podem ocorrer simultaneamente no celular — vamos chamar esse par de fregiiéncias de canal. A seguir, 0 computador diz ao seu telefone para completar a chamada, usando o canal atribuido, e o telefone toca. Naturalmente, pode acontecer que haja tantos telefones envolvidos com chamadas
na célula A que a estagdo base A ndo tenha freqii€ncias disponiveis — nesse caso, a pessoa que chamou podera ouvir uma mensagem avisando que o usuario ndo estd disponivel. Fazer uma chamada ocorre de modo semelhante, mas quem inicia a chamada € o seu celu-
lar. Como resultado, freqiiéncias de radio sdo novamente atribuidas (ou aparece uma mensagem de “Telefone ocupado”, se ndo houver fregii€ncias disponiveis no momento). Suponha que neste momento o seu telefone esteja executando uma chamada com a estagéo base A e que vocé esteja se deslocando da célulaA para a célula B, como na Fig. 5.87. A estagao base A verd o sinal se enfraquecendo, ac passo que a estagdo base B o verd se intensificando, e as duas estagtes base transmitirdo essa informago a central de comutagio. Em algum ponto,
‘o computador da central decidird mudar a sua ligac@o da estagfio base A para a estacio base B. O computador atribui um novo canal para a ligacio na ¢élula B (lembre-se, células adjacentes usam conjuntos diferentes de freqii€ncias para evitar interferéncias) ¢ envia um comando para o seu telefone (através da estagio base A, naturalmente) para mudar de canal. O seu celular faz essa mudanga e comega a se comunicar com a estacao base B. Durante uma ligagéo telefonica, essa mudanga pode ocorrer diizias de vezes enquanto um carro desloca-se através de uma cidade, e € imperceptivel para o usudrio do telefone. Algumas vezes essa mudanga falha, como quando a nova célula néo tem freqiiéncias disponiveis, € a ligagéio “cai”.
Interior de um telefone celular Companentes bésicos Um telefone celular necessita de circuitos digitais sofisticados para executar as ligagGes. A Fig. 5.59 mostra o interior de um telefone celular basico. As placas de circuito impresso contém diversos chips para implementar os circuitos digitais. Um desses circuitos realiza a conversdo analdgico-digital da voz (ou outro som) em uma seqiiéncia de 0s ¢ 1s ¢ um outro executa a conversdo analégico-digital de uma seqiiéncia digitalizada recebida, passando-a de volta para a forma de sinal analégico. Alguns dos circuitos, tipicamente software de micro-
{a)
(b)
Figura5.89 Interior de um telefone celular: (a) aparelho, (b) bateria e cartdo ID a esquerda, teclado e display no centro, circuitos digitais sobre placa de circuito impresso a 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 manipulam os vdrios recursos do celular, como o sistema de menu, a agenda de enderegos, 0s jogos, ete. Observe que todos os dados que vocé guarda
em seu celular (por exemplo, agenda de enderecos, toques musicais customizados, informa¢Oes sobre a pontuagdo maxima obtida nos jogos, etc.) serdo gravados provavelmente em uma memoria flash, cuja ndo-volatilidade assegura que os dados permanecerido guardados na meméria, mesmo que a bateria descarregue ou seja removida. Outras tarefas importantes sdo as respostas dadas aos comandos da central de comutagio e a filtragem realizada pelos circuitos digitais. Em um tipo de filtragem, o sinal de radio da portadora € retirado da radiofreqiiéncia de recepgido. Em um outro tipo, o ruido presente na seqiiéncia digitalizada de dudio que vem do microfone € removido, antes dessa seqiiéncia ser enviada através da radiofreqiiéncia de
transmissdo. Vamos examinar a filtragem com mais detalhes. Filtragem e filtros FIR A filtragem ¢ possivelmente a tarefa mais comum realizada em processamento digital de sinais. Esse processamento atua sobre uma seqiiéncia de dados digitais que vem da digitalizacdo de um sinal de entrada como dudio, video ou radio. Tais seqiiéncias de dados sdo encontradas em indmeros dispositivos eletrdnicos, como tocadores de CD, telefones celulares,
monitores cardiacos, madquinas de ultra-som, radios, controladores de motores, etc. A filtragem de uma seqiiéncia de dados € a atividade que remove caracteristicas particulares do sinal de entrada e produz um novo sinal de saida sem essas caracteristicas.
Um objetivo comum de filtragem € a remogéo de ruido de um sinal. Vocé certamente ja ouviu ruido em sinais de dudio (aquele som sibilante desagradavel no seu aparelho de som, celular ou telefone sem fio). Provavelmente, vocé também ajustou um filtro para reduzir esse ruido, quando vocé ajustou o controle de “Agudos™ do seu aparelho de som (embora esse filtro possa ter sido implementado usando métodos analdgicos ao invés de digitais). O ruido pode surgir em qualquer tipo de sinal, ndo apenas em dudio. O ruido pode vir de um dispositivo de transmissdo imperfeito, um dispositivo imperfeito de audigdo (por exemplo, um
microfone barato), ruido de fundo (por exemplo, ruidos de trénsito que chegam ao seu celular), interferéncia elétrica produzida por outros aparelhos elétricos, etc. Em um sinal, o ruido aparece tipicamente como saltos bruscos em relagiio a um sinal suave. Um outro objetivo comum de filtragem € a remocdo da freqiiéncia portadora de um sinal. Uma freqgiiéncia portadora ¢ um sinal que foi acrescentado a um sinal principal com o propésito de transmitir esse sinal principal. Por exemplo, uma estacio de radio poderia transmitir um sinal de radio de 102,7 MHz. Essa freqiiéncia de 102,7 MHz ¢ a fregiiéncia portadora. O sinal da portadora pode ser uma onda senoidal de dada freqiiéncia em particular (por exemplo, 102,7 MHz) que € adicionada ao sinal principal, que € o sinal de musica em si. Um apa-
relho receptor sintoniza a freqiiéncia portadora e, em seguida, remove o sinal da portadora, restando apenas o sinal principal. Um filtro FIR (usualmente lido pronunciando as letras “F” “I” “R”), sigla para “Finite Impulse Response™, ou seja, resposta finita ao impulso, € um filtro muito genérico, que pode ser usado em uma grande variedade de objetivos de filtragem. A idéia basica de um filtro FIR € muito simples: multiplique o valor de entrada atual por uma constante e acrescente esse resultado ao valor anterior de entrada que, por sua vez, foi multiplicado por uma constante. Em seguida, acrescente esse resultado ao préximo valor anterior, vezes uma constante, ¢ assim
por diante. Um projetista que usa um filtro FIR consegue atingir um objetivo em particular de
filtragem simplesmente escolhendo as constantes do filtro FIR. Matematicamente, um filtro FIR pode ser descrito como: y(6) =0
xx(6) + cl x—x(f—1)+ 2
x x(t-2) + 3 x =x(t-3) + ¢4 x —x(t—4) +...
A varidvel r representa o passo atual de tempo, x € o sinal de entrada ¢ y € o sinal de saida. Cada termo (por exemplo, c0%x(t)) é chamado de tap. Assim, a equago anterior representa
um filtro de 5 raps.
Projeto em Nivel de Transferéncia entre Registradores (RTL)
< 301
Vamos ver alguns exemplos da versatilidade do filtro FIR. Assuma que temos um filtro FIR de 5 taps. Em primeiro lugar, para simplesmente passar um sinal inalterado através do filtro, fazemos ¢0 ser 1 e ¢l =c2=¢3=c4=0. Para amplificar um sinal de entrada, fazemos c0
ser um numero maior que 1, como ¢0 igual a 2. Para criar um filtro suavizador, que produz na saida a média do valor atual e os quatro valores anteriores de entrada, podemos simplesmente atribuir valores equivalentes as constantes tais que somados sejam iguais a I, como c0=cl=c2=c3=¢4=0,2. Os resultados desse filtro aplicado a um sinal de entrada ruidoso estdo mostrados na Fig. 5.90. Para suavizar e amplificar, podemos escolher valores equivalentes para as constantes tais que somados resultem em algo maior que 1, por exemplo, c0=cl=c2=c3=c4=1, produzindo uma amplificagdo de cinco vezes. Para criar um filtro que
inclui apenas os dois valores anteriores ao invés dos quatro anteriores, simplesmente fazemos ¢3 e c4 ser 0. Vemos que todos esses diversos filtros foram construidos, mudando-se simplesmente os valores das constantes de um filtro FIR. O filtro FIR € realmente muito versatil. 1,5 —u— original -4— ruidoso — —&— fir_média_saida
1 0,5
—
5
T
N
O
I
O
e
11111
FTECEEETT TR TN TRy
-1.5
Figura5.90 Resultados de um filtro FIR de 5 taps com c0=c1=c2=c3=c4=0,2 aplicado a um sinal ruidoso. O sinal original € uma onda senoidal. O sinal ruidoso tem saltos aleatorios. A saida FIR (fir_média_saida) € muito mais suave do que o sinal ruidoso, aproximando-se do sinal original.
Observe que a saida FIR estd ligeiramente deslocada para a direita, significando que a saida estd ligeiramente atrasada no tempo (provavelmente uma pequena fragdo de um segundo de atraso). Usualmente, esse ligeiro atraso ndo € importante em uma aplicagio em particular.
Essa versatilidade se estende ainda mais. Na realidade, podemos filtrar uma freqiiéncia .,
portadora usando um filtro FIR e ajustando os coeficientes com diferentes valores, cuidadosamente escolhidos para remover uma freqliéncia particular. A Fig. 5.91 mostra um sinal principal, entradal, que queremos transmitir. Adicionamos esse sinal a um sinal de portadora, entrada2, para obter o sinal composto, entrada_total. Por exemplo, o sinal entrada_rotal aquele que seria transmitido por uma estagio de radio, com entradal sendo o sinal de dudio da misica e entrada?2, a fregiiéncia portadora. Agora digamos que o receptor de um aparelho de som receba esse sinal composto e pre-
cise remover o sinal de portadora, de modo que o sinal de musica possa ser enviado as caixas de som. Para determinar como filtrar o sinal de portadora, examine cuidadosamente as amostras (os quadradinhos da Fig. 5.91) do sinal de portadora. Observe que a taxa de amostragem ¢€ tal que se tomarmos qualquer amostra € a somarmos a amostra de trés passos antes, obteremos 0. Isso acontece porque, no caso de um ponto de valor positivo, o ponto de trés amostras anteriores serd negativo e de mesma magnitude. No caso de um ponto negativo, o ponto de trés amostras antes serd positivo e de mesma magnitude e, no caso de um ponto de valor zero, o ponto de trés amostras antes também
terd valor zero. De modo semelhante, a
adi¢io de uma amostra de sinal de portadora a uma amostra de trés passos adiante também
302 » Sistemas Digitais
2.5 2 15
—e—entradal = ) —=—entrada2 | 4
A
fi
M
—a&— entrada_total ——
-2,5
Figura 591 A adi¢io de um sinal principal, entradal, a um sinal de portadora, entrada2, resulta no sinal composto entrada_total. resulta em zero. Desse modo, para filtrar o sinal de portadora, simplesmente adicionamos cada amostra 4 amostra de trés passos antes. Podemos também somar cada amostra a metade da amostra de trés passos antes com mais metade da amostra de trés passos adiante. Podemos conseguir isso, usando um filtro FIR de 7 taps com os seguintes sete coeficientes: 0,5, 0, 0, 1,
0,0e 0,5. Como a soma deles € igual a 2, podemos dividi-los por dois para resultar uma soma de 1, como segue: 0,25, 0, 0, 0,5, 0, 0 e 0,25. A aplicagio desse filtro FIR de 7 taps ao sinal composto resulta na saida FIR mostrada na Fig. 5.92. O sinal principal € recuperado. Deve-
mos salientar que escolhemos o sinal de portadora de modo que este exemplo viesse a dar bons resultados — outros sinais poderiam néo ser recuperados tio perfeitamente. No entanto, o exemplo demonstra a idéia bésica. 25
2
—4— entrada_total —m— fir saida
-2,5
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¢ 0,25. O ligeiro atraso no sinal de saida normalmente nfo gera problemas. Filtros FIR de cinco e sete raps podem ser encontrados na pratica; muitos filtros FIR podem conter dezenas ou centenas de taps. Certamente, os filtros FIR podem ser implemen-
tados usando software (e freqiientemente o s30), mas muitas aplicaces requerem que as centenas de multiplicacdes e adigoes, para cada amostra, sejam executadas mais rapidamente
do que ¢ possivel em software, levando a implementacgdes customizadas de circuitos digitais. O Exemplo 5.8 ilustrou o projeto de um circuito para filtro FIR. H4 muitos tipos de filtros além dos filtros FIR. A filtragem digital de sinais faz parte de um campo mais amplo, conhecido como processamento digital de sinais, ou DSP. A drea de DSP tem uma rica fundamentacio matemadtica e € um campo de estudo em si. Sdo os métodos avangados de filtragem que tornam as conversagdes telefdnicas tao claras, como ocorre
atualmente.
Projeto em Nivel de Transferéncia entre Registradores (RTL)
> 512
< 303
RESUMO DO CAPITULO Neste capitulo, descrevemos (Se¢io 5.1) que muito do projeto digital atual envolve o projeto de componentes em nivel de processador e que esse projeto € feito no assim chamado nivel de transferéncia entre registradores (RTL). Introduzimos (Se¢do 5.2) um método de projeto RTL de quatro passos para converter o comportamento RTL em uma implementacdo com proces-
sador, sendo esse constituido de um bloco operacional controlado por um bloco de controle. O
método de projeto RTL fez uso dos componentes de bloco operacional, definidos no Capitulo 4, e do processo de projeto de um bloco de controle, definido no Capitulo 3, o qual se baseou
no processo de projeto combinacional do Capitulo 2. Demos diversos exemplos de projeto RTL (Sec¢do 5.3), apontando ao mesmo tempo diversas falhas e as boas prdticas de projeto, e discutimos também as caracteristicas de projetos com predominio de controle ou dados. Discutimos (Secdo 5.4) como definir a freqiiéncia de reldgio de um circuito com base no seu
caminho critico. Demonstramos (Se¢fio 5.5) como um programa seqiiencial, como um programa em C, pode conceitualmente ser convertido em portas, usando algumas transformacoes diretas que convertem o C em comportamento RTL, como sabemos, pode entao ser convertido
em portas, usando o método de projeto RTL de quatro passos. Essa demonstragio deve deixar claro que a funcionalidade de um sistema digital pode ser implementada como software em microprocessador, ou como circuito digital customizado (ou mesmo como ambos). As diferen¢as entre as implementagdes em software e em circuitos customizados niio estdo relacionadas com o que cada uma pode implementar — ambas podem implementar qualquer funcionalidade. As diferencas estdo relacionadas com caracteristicas métricas de projeto como desempenho do sistema, consumo de energia, tamanho, custo, tempo de projeto e assim por diante. Portanto,
para que seja obtida a melhor implementacio total em relaco as restri¢des das caracteristicas métricas de projeto, os projetistas digitais modernos devem estar 3 vontade para fazer a migra¢ao da funcionalidade de um software em microprocessador para circuitos digitais customizados e vice-versa. Introduzimos (Secdo 5.6) diversos componentes de memoria comumente usados em projeto RTL, incluindo componentes RAM ¢ ROM. Introduzimos também (Secao
5.7) um componente de fila que pode ser iitil durante o projeto RTL. Tomamos um momento para discutir (Se¢do 5.8) uma técnica genérica que estamos usando ao longo deste livro, a hierarquia, a qual auxilia um projetista a lidar com a complexidade. Nos Capitulos 1 a 5, enfatizamos os métodos diretos de projeto para sistemas gradativa-
mente mais complexos, mas nio enfatizamos como projetar bem esses sistemas. A melhoria de nossos projetos serd o foco do préximo capitulo.
> 5.13
EXERCICIOS Os exercicios indicados com um asterisco (*) sdo mais desafiadores,
SECAO 5.2: 0 METODO DE PROJETO RTL 5.1 (a) Crie uma maquina de estados de alto nivel que descreve o seguinte comportamento de sistema. O sistema tem uma entrada A de oito bits, uma entrada d de um bit ¢ uma saida S de 32 bits. A cada ciclo de reldgio, se d=1, o sistema deverd somar o valor de A & soma acumulada até o0 momento ¢ colocar esse valor na saida 5. Ao contrdrio, se d=0, o sistema deverd subtrair. Ignore as questdes de estouros crescente e decrescente. Nao esqueca de incluir um estado de inicializag¢do. Sugestdo: Declare ¢ use um registrador interno para guardar a soma. (b) Acrescente uma entrada reset de um bit ao sistema. Quando rst=1. o sistema deve fazer reset
tornando a soma igual a 0. 5.2 Cric uma mdquina de estados de alto nivel para um dispositivo simples de encriptar e decriptar dados. Se uma entrada b de um bit for 1, ¢ dispositivo armazenard os dados de uma entrada I de 32 bits como sendo o assim chamado valor de offser. Se b for 0 ¢ uma outra entrada e de um bit
for 1, entdo o dispositivo “encriptard™ sua entrada I, somando o valor armazenado de off5er & essa entrada I, e colocard esse valor encriptade em uma saida J de 32 bits. Se, ao contririo, uma outra entrada d de um bit for 1, o dispositivo devera “‘decriptar” os dados em 1, subtraindo o valor de
304 » Sistemas Digitais
offset, antes de colocar o valor decriptado em J. Assegure-se de explicitamente levar em conside-
racio todas as combinagbes possiveis dos trés bits de entrada.
5.3 Crie uma méquina de estados de alto nivel para um controlador de mistura de dgua fria e quente de banheira. O sistema tem uma entrada razao de trés bits que indica a razao desejada entre dgua
fria ¢ quente, € uma entrada abrir de um bit indicando que a dgua deve fluir. O sistema tem duas safdas dguaquente e dguafria de quatro bits cada, gue controlam as taxas ou velocidades de fluxo de dgua quente e fria. A soma dessas duas taxas deve ser sempreigual a 16. A sua méquina de estados de alto nivel deve determinar os valores de saida de dguaquente e aguafria, de modo que
a razio entre os Tluxos de 4gua fria e quente seja o mais proximo possivel da razdo desejada, a0 passo que o fluxo total deve ser sempre 16. Sugestdo: Como 86 ha 8 razdes possiveis, uma solucio
aceitével pode usar um estado para cada razio.
'
5.4 Crie uma mdquina de estados de alto nivel que inicializa completamente com Os os contetddos de um banco de registradores 16x32. A inicializagdo comega quando uma entrada rst € 1. 8.5 (a) Crie uma méquina de estados de alto nivel que soma cada registrador de um banco de registradores 128x8 ao regisirador correspondente em outro banco de registradores 128x8, armazenando o resultado em um terceiro banco de registradores 128x8. O sistema deve comegar a fazer a soma apenas quando uma entrada somar de um bit for 1 e ndo deve executar novamente a soma (de registradores) até que tenha terminado a soma corrente (somente somando nova-
mente se a entrada somar for 1). (b) Estenda esse sistemna para realizar somas ¢ subtracdes, usando uma entrada op adicional de um
bit, tal que op=1 significa somar e op=0 significa subtrair. 5.6 Projete uma mdquina de estados de alto nivel para um contador crescente de quatro bits, com uma
entrada cnt de controle de contagem, uma entrada ¢1r para clear e uma saida tc de término de contagem. Use o método de projeto RTL da Tabela 5.1 para converter a maquina de estados de alto nivel em um bloce de controle ¢ um bloco operacional. Use um registrador € um incrementador combinacional no bloco operacional, no simplesmente um registrador contador. Projete o bloco de controle até o nivel de registrador de estado e portas légicas, 5.7 Compare o contador crescente projetado no Exercicio 5.6 com projetado na Fig. 4.48. 5.8 Crie um
bloco
operacional
para a maquina de estados de
Entradas: A, B, C (16 bits); comece, rst (bit}
alto nivel da Fig. 5.93.
Saidas: S (16 bits)
5.9 *Comegando com o projeto
Registradores locais: soma
soma
1 i
—-
>
a
¥
>4
+
‘
i
|
média
média
Figura 595
Bloco operacional para computar a média de 16 elementos de um arranjo™*,
5.12 Usando o método de projeto RTL da Tabela 5.1, desenvolva um projeto RTL para um ¢ircnito medidor de tempo de reacfic que mede o tempo-decorrido entre o acendimento de uma ldmpada e 0 apertar de um botdo por uma pessoa. O medidor tem trés entradas, uma entrada ¢/ de relégio, uma entrada rsi de reset ¢ um botdo de entrada B. Também tem trés saidas, uma saida len de habilitagio
-da lampada, uma saida rfempo de tempo de reacio de dez bits e uma saida lenfo para indicar que ousudrio ndo foi rdpido o suficiente. O medidor de tempo de reaciio trabalha da seguinte maneira.
Durante ¢ reset, 0 medidor espera por 10 segundos antes de acender a 1dmpada fazendo fen ser 1, A seguir, 0 medidor de tempo de reagio mede o intervalo de tempo decorride em milissegundos até o usuArio pressionar ¢ botio B, fornecendo o tempo como um niimero bindrio de 12 bits na saida rtempo. Se o usudrio ndo pressionar o botdo dentro de 2 segundos (2000 milissegundos), o medidor ird ativar a saida lenfo tornando-a 1 e colocando 2000 em rtempo. Assuma que a entrada
de relégio tem uma fregiiéncia de 1 kHz. Sugestdo: Este € um problema de projeto RTL com
*N. de T: Em portugués; arranjo, significando um agrupamento finito e ordenado de elementos em forma de mairiz. *# N. de T: Relembrando, em i_It16, It significa menor do que (less than).
306 »
Sistemas Digitais
predominio de controle. Projete o bloco operacional até o nivel de estrutura € o bloco de controle apenas até o nivel 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édquina de estados de alto nivel da Fig. 5.74 em um bloco de controle e um bloco operacional. Projete o bloco operacional até o nivel de estrutura e o bloco de controle apenas até o nivel de FSM, como foi feito na Fig. 5.26.
SECAQ 5.3: EXEMPLOS E QUESTOES DE PROJETO RTL Nos seguintes problemas, projete o bloco operacional até o nivel de estrutura e o bloco de controle apenas até o nivel de FSM, como foi feito na Fig. 5.26. 5.14 Usando o método de projeto RTL da Tabela 5.1, desenvolva um projeto RTL que computa a soma de todos os niimeros positivos, que estdo dentro de um banco de registradores A de 512 palavras, consistindo em nimeros de 32 bits armazenados na forma de complemento de dois. 5.15 Usando o método de projeto RTL da Tabela 3.1, desenvolva um projeto RTL que computa a soma de todos os nlimeros positivos presentes em um conjunto de 16 registradores separados, de 32 bits cada, 0s quais armazenam os nimeros na forma de complemento de dois. Torne o projeto 0 mais ridpido possivel, executando tantos célculos concorrentemente (em paralelo) quanto for possivel.
Sugestdo: esse € um projeto com predominio de dados. 5.16 Usando o método de projeto RTL da Tabela 5.1, desenvolva um projeto RTL que coloca na saida o valor mdximo encontrado em um banco de registradores A consistindo em 64 niimeros de 32 bits. 5.17
Usando o método de projeto RTL da Tabela 5.1, desenvolva um projeto RTL que fornece na saida
um sinal de alerta sempre que a temperatura média das quatro dltimas amostras for superior a um valor definido pelo usudrio. O circuito tem uma entrada TC de 32 bits que indica a temperatura corrente lida, uma entrada TA de 32 bits que indica a temperatura especificada pelo usuério, na qual o sinal de alerta deve ser habilitado, e um botéo ¢/r de entrada que desabilita o sinal de alerta. Quando a temperatura média excede o nivel de alerta especificado pelo usudrio, o circuito deve ativar a saida A, habilitando o sinal de alerta. A saida de alerta deve permanecer em nivel alto até que o botdo cfr seja pressionado. Sugestdo: dentro do seu bloco operacional, vocé pode usar um registrador deslocador a direita para implementar a divisgo.
5.18 Usando o método de projeto RTL da Tabela 5.1, desenvolva um projeto RTL de um filtro digital que coloca na saida a média da entrada corrente e da amostra anterior, ambas de 32 bits. Sugestdo: dentro do seu bloco operacional, vocé pode usar um regisirador deslocador a direita para imple-
mentar a divisao.
SECAO 5.4: DETERMINANDO A FREQUENCIA DE RELOGIO 5.19 Assumindo que um inversor tem um atraso de 1 ns, todas as demais portas (ém um atraso de 2 ns e as conexdes tém um atraso de Ins, determine o caminho critico do circuito somador completo mostrado na Fig. 4.31. 5.20 Assumindo que um inversor tem um atraso de 1 ns, todas as demais portas tém um atrasode 2 ns ¢ as conexdes t€m um atraso de 1ns, determine o caminho critico do decodificador 3x8 da Fig. 2.50. 5.21
Assumindo gue um inversor tem um atraso de 1 ns, todas as demais portas (€m um atrase de 2 ng e as conexdes tém um atraso de 1ns, determine o caminho critico de um multiplexador 4x1.
5.22 Assumindo que um inversor tem um atraso de 1 ns e todas as demais portas t8m um atraso de 2 ns, determine o caminho critico de um somador de oito bits com propagaciio de *vai um™: (a) assumindo que as conexdes nao t€m atraso,
(b) assumindo que as conexdes tém um atraso de | ns. 5.23 (a) Converta a FSM do medidor de distdncia baseado em laser, mostrada na Fig. 5.21, em um registrador de estado e 16gica combinacional. (b) Assumindo que todas as portas tém um atraso de 2 ns, 0 contador crescente de 16 bits tem um atraso de 5 ns e as conexdes nio tém atraso, determine o caminho critico do medidor de distincia baseado em laser.
(c) Calcule a correspondente freqiiéneia méxima de relégio para o circuito.
Projeto em Nivel de Transferéncia entre Registradores (RTL)
< 307
SECAO 5.5: DESCRIGAO EM NiVEL COMPORTAMENTAL: PASSANDO DE C PARA PORTAS
(OPCIONAL)
5.24 Converta 0 seguinte c6digo, semelhante a C, que calcula o méaximo divisor comum (MDC) de dois niimeros a e b, em uma maquina de estados de alto nivel. Entradas: Saidas:
byte
a,
byte
byte mdc,
b,
bit
bit
comece
terminado
MDC:
while(1) { while(!comece);: terminado = 03
while ( a != b ) { if(a=>b)
{
a=4a~b;
} else { b=0b-a;
}
Y mdc
= a;
terminado
=
1;
} 5.25 Use o método de projeto RTL da Tabela 5.1 para converter a mdquina de estados de alto nivel que
vocé projetou no Exercicio 5.24 em um bloco de controle e um bloco operacional. Projete o bloco
operacional em nivel de estrutura, mas projete o bloco de controle apenas até o nivel de uma FSM. 5.26 Converta o seguinte cddigo, semelhante a C, que calcula a diferenca maxima entre dois nimeros quaisquer-dentro de um arranjo A constituido por 256 valores de oito bits, em uma méquina de estados de alto nivel. Entradas: byte a[256], bit comece Safdas: byte dif _max, bit terminado
DIF_MAX: while(1) { while(!comece); terminado = (; =03 max
= 0;
min = 255; // valor mdximo de 8 bits while( 1 < 256 ) { if( a[i]l < min ) min = a[i];
{
} Af(
a[i] = max max = a[il;
)
} A =
Fils
} dif
max
“terminado
= max =
1;
- min;
{
308 » Sistemas Digitais
5.27 Use o métodode projeto RTL da Tabela 5.1 para converter a miquinade estados de alto nivel que vocé projetou no Exercicio 5.26 em um bloco de controle e um bloco operacional. Projete o bloco operacional em nivel de estrutura, mas projeteé o bloco de controle apenas até o nivel de uma
FSM. 5.28 Converta o seguinte ¢6digo, semelhante a C, que ¢alcula o nimero de vezes que o valor b € encontrado dentrode um arranjoA constituido por 256 valores de oito bits, em uma maquina de estados de alto nivel. Entradas: Saidas:
byte byte
a[256], freg,
byte
bit
b,
bit
comece
terminado
FREQUENCIA:
while(1)
{
while(tcomece); terminado
= 03
freq = 03
while{ i < 256 ) {
if{ a[i] == b ) { freq = freq + 1;
} terminado
=
1;
} 5.29 Use o método de projeto RTL da Tabela 5.1 para converter a miquina de estados de alto nivel que vocé projetou no Exercicio 5.28 em um bloco de controle e um bloco operacional. Projete o bloco operacional em nivel de estrutura, mas projete o bloco de controle apenas atéo nivel de
uma FSM. 5.30 Desenvolva um procedimento padrdo para converter um laco do{
}while (em portugués fagaf }
enqguanto) com a forma seguinte em uma maquina de estados de alto nivel. do
{
// comandos do lago de do while } while
(cond);
5.31 *Converta o lagcowhile{a != b),dentro da descricio em cédigo C do Exercicio 5.24, em um lago do{
}while, como descrito no Exercicio 3.30. Usando o procedimento padriio que vocé criou para
o lago do{ }while no Exercicio 5.30, converta o ¢édigo C revisto em uma méquina de estados de alto nivel. Use o método de projeto RTL da Tabela 5.1 para convetter a maquinade estadosde alto nivel, que vocé projetou no problema anterior, em um bloco de controle e um bloco operacional. Projete o bloco operacional em nivel de estrutura, mas projete o bloco de controle apenas até o
nivel de uma FSM. 5.32 Desenvolva um procedimento padrio para converter um lago for() (para) com a seguinte forma em uma maquina de estados de alto nivel. for{i=inicio;
i EXEMPLO 6.3
Combinacdo repetida de termos para eliminar varidveis
Minimize o nimero de termos e literais na implementacéo de dois niveisda equagao:
G =xy'z' + xy'z + xyz + xyz' Podemos combinar os dois primeiros termos para eliminar uma varidvel ¢ também os dois altimos:
G = xy'(z'+z) + xy(z+z')
G =xy'
+xy
Podemos combinar os dois termos restantes para eliminar uma varidvel: G=xy'
+xy
G = x(y'+y) G =x
I
cada uma dessas transi¢des consome poténcia dindmica.
762
!
"y
ese
n3
Y8 |
Figura 6.82 Ciock gating: (a) a cada ciclo, o sinal de relégio sofre chave-
>
amento em todas as conexdes desenhadas com trago bem cheio, mas os
S
=% —=|
P pare superior da figura, que os sifansicoss dodo reldgio e transi¢oes reldgio ee lembre-se lembre-se que
-
! ;f
nzl
i
T
/
registradores xt sfio carregados apenas no estado S/ e o yreg, no estado §5-de
By
modo que a maior parte dos chaveaik Mmn_n_fl_n_n_flmmfl
18,08 []
(b)
no primeiro estado, ¢stado S/, e o registrador yreg apenas no tltimo estado,
estado S3. Ainda, o projeto distribuia o
®
g
s1
um filtro FIR serial no
Exemplo 6.22. Uma méquina de esta-
s
[
[1
[
[1
[
mentos de relégio € desperdicada; (b) sando o sinal de relégio por uma flzsrta reduz o chaveamen%o ngs cone-
x8es de relégio,
*N. de T: Literalmente, € “inclinagio de reldgio™. E uma alusio i forma inclinada em escada que, devido acs diferentes atrasos, pode assumir o conjunto dos sinais de reldgio presentes em diversos pontos do circuito quande sde dispostos de forma adequada em win gréifico.
378 » Sistemas Digitais
A Fig. 6.82(b) mostra um projeto com clock gating. O blocode controle habilita o relégio por meio de uma porta enviando-o aos registradores xt, fazendo s1 ser 0 em todos os estados, exceto
§1. De modo similar, o bloco de controle encaminha o relégio ao registrador yreg, fazendo s5 ser 0 em todos os estados, exceto §3. Note a reduciio significativa de chaveamento de sinal nas conexoes de reldgio n1-n4, mostrados na parte inferior da Fig. 6.82. 4 Portas de baixa poténcia em caminhos criticos
Nem todas as portas sdo igualmente rdpidas. Os engenheiros que constroem as portas a partir de transistores podem tornar uma porta mais rdpida aumentando o tamanho dos transistores da porta, ou operando-a com uma tensdo mais elevada, ou por diversos outros meios. Assim, uma
porta AND de duas entradas pode ter um atraso de 1 ns, a0 passo que uma outra pode ter um ® portas de poténcia elevada poténcia
atraso de 2 ns, Esta dltima AND poderd consumir menos poténcia, devido a seu tamanho ou tensdo menores. Se quisermos reduzir a poténcia consumida por um circuito, poderemos construir o circuito completo usando portas de baixa poténcia para conseguir um baixo consumo, as custas de um desempenho mais lento, como mostrado na Fig. 6.83. Alternativamente, podemos colocar as portas de baixa poténcia somente nos caminhos néo criticos, de
I~
@ portas de baixa poténcia em caminho nao critico
portas de ® baixa poténcia ===
modo que tornaremos mais compridos esses caminhos,
Ao
mas mantendo os seus atrasos ndo superiores aodocaminho critico, como se mostra no exemplo seguinte.
> EXEMPLO625
Figura6.83 poténcia.
Usando portas de baixa
Reducdo da poténcia de caminhos ndo criticos pelo uso de uma logica de miiltiplos niveis
No Exemplo 6.12, reduzimos o comprimento de um caminho nfo critico pelo uso de uma légica de multiplos niveis. Neste exemplo, ao invés disso, reduziremos a poténcia consumida em cami-
nhos ndo criticos usando portas de baixa poténcia. Assuma que portas normais tém um atraso de I ns e consomem 1 nanowatit de poténcia e que portas de baixa poténcia tém um atraso de 2 ns ¢ consomem 0,5 nanowatt de poténcia.
O lado esquerdo da Fig. 6.84 mostra o mesmo circuito do Exemplo 6.12, tendo um caminho critico com um atraso de 3 portas. Assuma que todas as portas sao normais, significando que o
atraso do caminho critico € 3 ns e que o consumo total de poténcia € 5 nanowatts. 26 transistores atrasode 3 ns poténcia de § nanowatts
5 p b
nef
S
26 transistores atraso de 3 ns poténcia de 4 nanowatts
3 p b
-
=
i
b
d—
F1
e
Figura 6.84
N
F1
e . oy
é
dee—o
17
nanowsalts nanossegundos
1 ;
2105
Uso de portas de baixa poténcia em caminhos ndo criticos. Os nimeros dentro de
‘cada poria representam o atraso da porta em nanossegundos € 0 Consumo em nanowatts. As duas portas AND inferiores estio em dois caminhos néo criticos, tendo 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 tornam iguais, mas nio superiores, ao atraso do caminho critico. O resultado € que também a poténcia total torna-se apenas 4 nanowatts ao invés de 5 nanowatts (uma reducio de 20%).
EXEMPLO 6.26
Computando as taxas de compressao envolvendo quadros
P e B
Assuma que uma seqiiéncia MPEG-2 de 30 guadros tem a seguinte seqiiéncia de quadros: IB B PBBPBBPBBPBBIBBPBBPBBEPBBPB B. Assumaos seguintes tamanhos médios de 8 Mbits para os quadros I, 2 Mbits para os quadros P e 1 Mbits para os quadros B. Compute a taxa de compressao. A taxa de compressdo neste exemplo serd 8 Mbits * 30/ (2 * 8 Mbits + 2 Mbits + 20 * 1 Mbits)
=240/52=4,6:1. 0 exemplo de seqliéncia de quadros € de fato bem tipico de um video MPEG-2, com 08 quadros I ocorrendo a cada 12-15 quadros. < E possivel que os codificadores de video MPEG-2 procurem criar cerca de 30 quadros por segundo. Com centenas de milhares de pixels por quadro que devem ser comparados com os de outro quadro, a codificagiio MPEG-2 requer uma grande quantidade de computagbes para
determinar quais quadros deverdo ser I, P ou B, e quais deverdo ser os valores para os quadros P e B. Além disso, a maioria dessas computagdes consistird na mesma computagao, reali-
zada entre regies correspondentes de dois quadros. Assim, muitos codificadores MPEG-2 utilizam circuitos digitais customizados para paralelizar essas computagoes, as custas de um tamanho maior de hardware. Por exemplo, o circuito para calcular a soma das diferencas absolutas, construido no Exemplo 6.21, usava mais paralelismo do que o do Exemplo 5.9, as custas de um tamanho maior de circuito. Esse circuito seria atil em um codificador de video que necessitasse determinar rapidamente se um quadro deveria ser codificado como um quadro P ou B, ou como um quadro L. Circuitos adicionais poderiam computar os valores reais
dos quadros P e B. De modo semelhante, a partir dos quadros 1, P ¢ B, um decodificador MPEG-2 de video
poderia usar circuitos para reconstruir rapidamente os quadros completos das imagens-além do que, em MPEG-2, é mais ficil fazer a decodificacdo de video do que a codificacdo, porque os contetdos dos quadros P e B sdo determinados efetivamente apenas durante a codificagio; na decodificacio, € necessdrio apenas que os quadros P e B sejam combinados com os quadros que lhe sfo vizinhos.
Passando para o dominio de freqiiéncia para obter uma compressao maior DCT - transformada co-seno discreta Vimos na secéio anterior que a transmissio de um quadro (P ou B), que ¢ simplesmente uma diferenca em relagdo a um quadro anterior ou futuro, pode produzir alguma compressio. Entretanto, as taxas de compressao obtidas eram de apenas 4:1. Vimos antes que, para armazenar um filme completo, um DVD necessita de uma taxa de compressaio em torno de 40:1. Assim, lorna-se necessdrio realizar uma compressao maior. Portanto, o MPEG-2 comprime individualmente cada quadro I, P ¢ B ainda mais. O método de compressio envolve a aplicacio do que € conhecido como transformada co-seno discreta a blocos constituidos de 8x8 valores de pixels em cada quadro. A transformada co-
seno discreta € usada também no bem conhecido padriao
JPEG para comprimir imagens es-
taticas, como as de uma camera digital. A transformada co-seno discreta (Discrete Cosine Transform), ou DCT, transforma informagoes do dominio do espaco para o dominio da freqiiéncia. (A DCT € similar a outra técnica popular, conhecida como transformada rdpida de Fourier (Fast Fourier Transform), ou FFT, usada também na conversdo para o dominio da fregiiéncia.) A passagem para o dominio da freqiiéncia € um conceito poderoso, amplamente usado no processamento digital de sinais. Para compreender esse conceito, vamos considerar que que-
remos armazenar digitalmente os sinais analdgicos mostrados na Fig. 6.87, usando o menor nimero de bits possivel. O sinal € uma onda co-seno de 1 Hz, com uma amplitude de 10 unidades. Para armazenar o sinal digitalmente, poderiamos armazend-lo a intervalos fregiientes,
Otimizagdes e Tradeoffs
EXEMPLO 6.27
Calculo das taxas de compresséo envolvendo a quantizacaoe a codificacdo run-length
Continuando o Exemplo 6.26, assuma que a segiiéncia MPEG-2 de 30 quadros por segundo tem a mesma seqiiéncia e tamanhos médios daquele exemplo, mas cada quadro € comprimido ainda mais pela conversio DCT para o dominio da fregiiéncia, seguido por quantizaciio e codificacgio run-length. Assuma que o bloco de saida DCT consiste em 64 nimeros de 8 bits, a quantizaciio reduz o tamanho médio do niimero para niimeros de 5 bits e a codificacio run-length reduz o ta-
manho da seqiiéncia de niimeros resultante a 30% de seu tamanho. A taxa de compressdo serd 8 Mbits * 30/5/8 * 0,30 * (2 * § Mbits + 8 * 2 Mbits + 20 * | Mbits) =240/ 9,7 = 25:1.
EXEMPLO 6.28
Calculo das taxas de compressao envolvendo a codificacao de Huffman
Continuando o Exemplo 6.27, assuma que, apds a quantizacdo e a codificac@io run-length, pares
de niimeros sdo submetidos a codificag@io de Huffman e que essa codificac@o reduz o niimero de bits em 50%. A taxa de compressao serd assim 240/ 0,50 * 9,7 = 50:1.
tro instrugOes estdo armazenadas de algum modo nas posicoes 0, 1,
Unidade de controle
2, e 3 da memoria de instrugdes I,
Figura 8.4
* N. de T: TambMernfiria de dados D
2: 0010 000 0000 0007 os primeiros
quatro bits de cada instru¢io sdo
i
T
um cédigo bindrio que indica a operacao da instrugdo. Esses bits sfo conhecidos como cddigo de operagdo da instrugdo, ou ep-
code, abreviadamente. Com base
I
3: 0001 0010 00001001
Y =
— >
A
>
J
no conjunto de instrucdes defi-
Zor
§ g §
21 *
5
Bioco decontrole || §
tagéio desde a memodria de dados até o banco de registradores,
b
g b
“0001” s@nlfica
Unidade de controle
-%
gt it
dores at€ a memoria de dados ¢ “0010™ significa uma soma de dois registradores. Os bits restantes da instrugdo representam
Banco de P e
iE
“0000” significa uma movimen-
tagfo desde o banco de registra-
{
8
;
nido na lista anterior, o nibble
L
i | Bloco operacional
Figura8.7 Um programa que computa D[9]=D[0]+D{1], usando um dado conjunto de instrucdes. Inserimos espacos em branco entre os bits da meméria de instrugdes apenas por legibilidade — esses espagos ndo existem na memdria.
448 » Sistemas Digitais
os operandos, indicando com quais dados deve-se operar. Usando o mesmo conjunto de instru-
¢Oes de trés instrugbes, poderfamos escrever um programa diferente. Por exemplo, poderiamos escrever nm programa que calcula Df5]=D{5]+D{6]+D[7].
Deve-
mos executar essa computacio usando instrugdes escolhidas do conjunto de instrugoes de trés instrugdes. Poderiamos escre-
ver o programa conforme estd mostradona Fig. 8.8. O ntimero antes dosinal de dois pontos representa o enderego da instrugio
Figura 88 Um programa para computar Df5]=D[5]+D[6]+D{7] usando o conjunto de instrugBes de trés instrucbes.
na memoria de instrugdes 1. O texto apos o travessdo duplo (//) representa algum comentério ¢ nfo faz parte da instrugfo. Observe que o programa termina efetuando a soma desejada. Essa talvez seja a primeira vez que vocé estd pensando a respeito de computagdes usando instrugdes de baixo nivel de um processador programdvel. No inicio, pode ser dificil pensar em termos dessas operagoes em nivel de registradores, mas vai se tornando mais facil 2 medida que vocg vé e desenvolve programas nesse nivel. Cédigo de maquina versus cédigo assembly
Como vocé viu, em uma memoria de instru¢des, as instru¢des de um programa existem como 0s e 1s. Um programa representado por 0s ¢ 1s € conhecido como c¢ddigo de mdguina. As pessoas ndo sdo particularmente boas nas tarefas de escrever ¢ ler programas representados por 0s e 1s. N6s humanos nfo conseguimos compreender facilmente esses 0s e 1s e, assim, faremos provavelmente muitos erros quando escrevermos tais programas. Por essa razdo, para ajudar as pessoas a escrever oulros programas, os primeiros programadores de computador desenvolveram uma ferramenta conhecida por assembler*® (que em si € simplesmente um outro programa). Um assembler permite-nos escrever instrugdes usando mnemonicos, ou
simbolos, que o assembler traduz automaticamente para codigo de maquina. Assim, a partir do nosso conjunto de instrugdes de trés instructes, um assembler pode nos dizer que podemos escrever essas instrugdes, usando os seguintes mnemdonicos:
05
rafi&es cc}mpr.ll::a.t;lorfi%_‘=mosfl‘adw rrocm‘pma
'
;
‘gL
:smgelas-s n&o servem .t;omg,fundo interessante nos. s, Assim, para repmsentar- 0s tmpu,tadmesf‘ aflslm COMO: P
esses pfimmms cnmpumdoms usay [ -Ifimpadas acesas s:gmficavam 1s pagadas mgm-
*N. de T: Literalmente, significa “montador™.
P uzes que nfio t& usoalgn:u'fl,E mas quc:; §0 interessantes.
Processadores Programéaveis
< 449
» FAZENDO “BOOTING” EM UM COMPUTADOR Quando um computador pessoal € ligado, o sistema operacional é carregado. Esse processo € conhecido como dar booting ou boot* no computador. O computador executa as instru¢des a partir do enderego 0, no qual usualmente h4 uma instruco que faz um salto para um pequeno programa interno que & usado para carregar o sistema operacional (o pequeno pro-
estado na drea de computacio hd muito tempo, d4d um origem diferente. Nos primeiros computadores, uma maneira de se carregar um programa na memoria de instrugdes era criando uma fita de papel com fileiras de perfuractes. Cada fila podia ter espaco suficiente para, digamos. 16 perfuragoes. Assim, cada fileira representava uma instrucio de miquina de 16
grama € freqiientemente chamado de sistema bdsico de entrada e saida, ou BIOS, de Basic Input/Output
bits—um furo significava um 0 e sua auséncia, um 1 {ou vice-versa). Um programador fazia as perfura-
System). A maioria dos diciondrios de computacio
¢Oes para armazenar o programa na fita (usando uma
afirma que o termo boot origina-se na expressao po-
maéquina especial de perfurar fita) e entdo colocava
pular “puxar-se para cima pelas alcas (bootstraps) das préprias botas”, o que significa erguer-se sem nenhuma ajuda, embora, obviamente, vocé ndo possa
a fita na leitora de fita do computador, a qual lia as
fazer isso segurando as algas de suas proprias botas e puxando-se para cima — daf a perspicacia da expressd0. Como o computador carrega 0 seu proprio sistema operacional, ele estd de certa forma erguendose sem nenhuma ajuda. O termo bootstrap acabou sendo abreviade para boot. Um colega meu, que tem
s
fileiras de Os e 1s e carregava esses0s e 1s na memoria de instru¢des do computador. Essas fitas podiam ter alguns metros de comprimento ¢ pareciam-se muito com as algas de uma bota, vindo dai o termo
bootstrap, abreviado para boot. Independentemente de qual seja a verdadeira origem, podemos estar bastante certos de que o termo boor veio das algas das botas (boolsiraps) que Usamos em nossos pes.
Instruciio Carregar-MOV Ra, d: especifica a operagio RFfa]=D[d]. O valor de a deve ser 0, 1, ..., ou 15-assim RO significa RF[0], RI significa RF[1], etc. O valor de d deve ser 0, 1, ..., 255.
¢
Instrucdo Armazenar-NMOV d, Ra: especifica a opera¢io Dfd[=RF[a].
o
Instrucdo Somar-ADD Ra, Rb, Re: especifica a operagdo RF[a]=RF[b]+RF]c].
Usando esses mnemonicos, poderiamos reescrever o programa D{9/=D[0]+D[1] como segue: 0: 1: 2: 3:
MOV RO, 0 MOV RI, 1 ADDR2, RO, R1 MOV 9,R2
Esse programa ¢ muito mais facil de ser entendido do que os 0s e 1s da Fig. 8.7. Um programa escrito com mnemonicos € conhecido como cddige assembly, o qual serd traduzido para cédigo de maquina por um assembler. Nos dias atuais, dificilmente alguém escreveria diretamente em cddigo de maquina. O programa assembly anterior seria traduzido automaticamente por um assembler para o cddigo de maquina mostrado na Fig. 8.7. Vocé pode estar se perguntando como o assembler pode distinguir entre as instru¢Oes anteriores de carregar ¢ armazenar, j4 que os mnemoOnicos para as duas instrugdes sao o mesmo — “MOV?”, O assembler faz a distingdo entre esses dois tipos de instrugdes olhando o primeiro caractere apds o mneménico “MOV™ — se o primeiro caractere forum “R”, esse operando serd um registrador e, portanto, a instrugdo deverd ser uma instru¢ao de carregar.
* N. de T: Esse termo inglés vem de bootstraps, ou seja, sdo as algas que, quando presentes, sio colocadas no topo e nas laterais
dos canos das botas, servindo para puxd-las quando sio colocadas nos pés.
450 » Sistemas Digitais
Unidade de controle e bloco operacional para o processador de trés instrucdes
@
PC=0
Apés definir o conjunto de ins-
Bu
IR=I[PC]
PC=PC+1
|
{"_
trucdes de trés instrucdes e com-
=
preender a arquitetura bdsica dos
fDeoodificaq&o!
blocos de controle e operacional de um processador programdvel, como mostrado na Fig. 8.4, poderemos projetar o circuito digital completo de um processador programavel
/—
processo de projeto ¢ muito similar ao processo de projeto RTL do Capitulo 5. Por meio de uma maquina de
§
up=0001
op=0010
Armazeflar)
8=
o
-
gstados de
de trés instrugoes. Na realidade, o
4\*::’:329&0
op=0001.‘l
RF[ra]:D[d]
DId)=RFira)
RFiral = RFirb]+
RFirc]
Figura 8.9 Descriciio de um processador programavel de trés instrugGes por meio de uma maquina de estados
estados de alto nivel, comegamos de alto nivel. com a descricdo mostrada na Fig. 8.9. Assuma que op € uma forma abreviada de IR{15..12], significando 0s quatro bits mais & esquerda do registrador de instrugdo. De modo similar, assuma que ra € uma forma abreviada
de IR[11..8], rb, de IR[7..4], re, de IR[3..0] e d, de IR[7..0].
Lembre-s¢ que o préximo passo do processo de projeto RTL € criar o bloco operacional, Nés ja criamos um bloco operacional na Fig. 8.4, o qual sera detalbado para mostrar todos os sinais de controle do bloco de controle, como mostrado na Fig. 8.10. Esse bloco operacional detalhado tem sinais de controle para cada porta de leitura ¢ escrita do banco de registradores (veja o Capitulo 4 para obter informagdes sobre os bancos de registradores). O
[
addr;
d
)
data;
D addr 8
1|
oo
At
clr
wr
1R
wu
g
256x18
=
PC
P
"
>
>W_:ata
Id
oll=
aljd
R_data
=
£
16
t6bits _
P ES
2x1
/
{16
RF_W_addr
4
i
KF_Rp_addr Bloco de controle
=LY
.
4
=
Rp_addr
|
] Rq_addr
»|Rp.rd e
4
>
Rp.data
Rq_data’
% 16
=50
Figura8.10
RF 16x16
»|Rq_rd
N alu_s0
Unidadede controle
f
|
16| >
W_data
._w‘a
RF_Rp_rd RF_Rqg_addi RF_FIq— = .
’_
1
RF_s
REW_wr
5
|
w1
16"’
b
;
addr
Bloco operacionsl
»t 16
A ALU 8
ke
16|
Bloco operacional refinado e unidade de controle para o processador de trés instruces.
Processadores Programéaveis
< 451
banco de registradores tem 16 registradores porque as instrugoes dispoem de quatro bits para enderegé-los. O bloco operacional tem um sinal de controle para a ALU chamado alu_s0assumiremos que, quando alu_s0=1, essa ALU elementar soma as suas entradas e, quando alu_s0=0, simplesmente deixa passar a entrada A. O bloco operacional tem uma linha de selecd@o para o multiplexador 2x1 que se encontra na frente da porta de escrita de dados do banco de registradores. Finalmente, incluimos também sinais de controle para a memoria de dados, a qual assumimos ter uma tinica porta de endereco, podendo assim suportar apenas ou leitura ou escrita, mas nao ambas simultaneamente. A memoria de dados tem 256 palavras,ja que a instrugdo tem apenas oito bits para enderecar a memoria de dados.
Agora, o bloco operacional esta capacitado a efetuar todas as operagoes de carga, armazenamento e aritméticas de que precisamos na maquina de estados de alto nivel da Fig. 8.9. Assim, podemos prosseguir indo para o terceiro passo do processo de projeto RTL, fazendo a conexdao do bloco operacional a um bloco de controle. A Fig. 8.10 mostra essas conexdes, assim como as conexdes do bloco de controle aos registradores PC e IR da unidade de controle ¢ & memdria de instrugdes 1.
O tltimo passo do processo de projeto RTL € obter
TR=HPE]-PE=PEr—
a FSM do bloco de controle.
Lrd=1PC_inc=1
De imediato, podemos fazer
IR_Id=1
isso substituindo as acoes
de alto nivel da mdquina de estados da Fig. 8.9 por operacoes
Decodificagéo
booleanas apli-
cadas 2s linhas de entrada e
op=0000
-
op=0001
'
saida do bloco de controle,
T8
como estd mostrado na Fig.
~§§
8.11. (Lembre-se de que
23
©p=0010
\
; ~
i
op, d, ra, rb e rc sio formas
Armazenar
e
%
)
{
Somar
)
R
i
=
afireviadas para IR[15..12],
Ejffff -
g::,d,:Td
RF_Rp a'd‘ di [r-_'_“:b
IR[?G},
RF._s=1
RF_s=X'
HF:Rp:rd£1
RF_W_addr=ra
RF_Rp_addr=ra
RF_s=0
A S
Fi R
RF_Rq_addr=rc RF_Rq _rd=1
e
IR{I}.BJ, IR[74]
IR[3..0],
resPcctiva-
mente.). Usando os métoA
dos do Capitulo 3, poderemos entdio terminar o pro-
jeto do bloco de controle,
\
p
-
RF_W_addr=ra RF_W_wr=1
alu_s0=1
convertendo a FSM em um Figura 8.11 FSM para o bloco de controle do processador de registrador de estado € uma Lres instrucoes, l6gica combinacional. Teremos assim projetado um processador programavel.
Vamos analisar passo a passo o comportamento da FSM do bloco de controle, para ver como um programa seria executado no processador de trés instrugdes. Como lembrete, tenha em mente ‘que estamos seguindo as convengtes FSM de que todas as transigcdes estdo implicitamente fazendo uma operagdo AND com a borda de subida do relégio e que, em um estado, um sinal tera
implicitamente o valor 0, a ndo ser que explicitamente lhe tenha sido atribuido um valor. ¢
Inicialmente, a FSM comega no estado Inicio, o qual faz PC_c1r=1. Isso limpa o regisirador PC deixando-o0 com {.
¢
No proximo ciclo de relogio, a FSM entra no estado de Busca, no qual ela I€ a memoria de instru¢des no enderego 0 (porque PC € 0) e carrega o valor lido-em /R — esse valor lido serd a instrugiio que foi armazenada em I[0]. Ao mesmo tempo, a FSM incrementa o valorde PC.
+
No préximo ciclo de relégio, a FSM entra no estado de Decodificagdo, no qual nio hd acOes, mas haverd na proxima borda de relégio um salto para um dos trés estados Car-
452 »
Sistemas Digitais
regar, Armazenar ou Somar, dependendo dos valores dos quatro bits mais a esquerda do registrador IR (o c6digo de operacdo da instrugao corrente). ¢
No estado de Carregar, a FSM prepara as linhas de endereco da memdria de dados usando 0s oito bits mais 4 direita de IR e colocando em 1 a habilitagdo de leitura da memoria de dados. Ativa também a linha de sele¢cdo do multiplexador 2x 1 para que o valor da saida da memoria de dados passe para o banco de registradores e prepara o endereco de escrita do banco de registradores, usando IRf71..8] e colocando a habilitagio de escrita em 1. Isso
faz com que qualquer conteido que esteja na memdoria de dados seja carregado no registrador apropriado do banco de registradores. ¢
De modo semelhante, os estados Armazenar e Somar preparam as linhas de controle conforme a necessidade das operagdes de armazenamento ¢ soma.
*
Finalmente, a FSM retorna ao estado de Busca e comega a buscar a proxima instrugao. Observe que, como o estado Armazenar nao escreve no banco de registradores, entdo o va-
lor do bit da linha de sele¢do do multiplexador ndo € importante. Assim, nesse estado, fazemos
a atribuigdo de sinal RF_s=X, significando que o valor do sinal ¢ irrelevante. O uso desse valor don’t care (veja a Segfo 6.2) pode nos ajudar a minimizar a légica do bloco de controle. Vocé pode estar se perguntando por que € necessério o estado Decodificagdo, j4 que esse estado ndo contém agdes — no lugar disso, ndo poderiamos fazer as transigoes de Decodifica¢do originarem-se no estado Busca? Lembre-se da Se¢fio 5.3 de que as atualizagGes de registrador atribuidas a um estado s6 ocorrem de fato na préoxima borda de relogio. Isso significa que as transi¢Oes origindrias de um estado irfio usar os valores anteriores dos registradores.
Assim, ndo poderiamos realizar as transigdes de Decodificagdo a partir do estado Busca, porque essas transicdes estariam usando o ¢6digo de operagio antigo do registrador de instruc@o IR, ndo o novo valor que € lido durante o estado Busca.
» 8.4 UM PROCESSADOR PROGRAMAVEL DE SEIS INSTRUGOES Estendendo o conjunto de instrucoes E claro que dispor de um conjunto de instru¢des que contém apenas tés tado o comportamento dos programas que poderemos escrever. Tudo o com essas instrugoes € somar nimeros. Um processador programével mais instrugdes, talvez 100 ou mais, de modo que uma variedade mais
instrugdes torna limique poderemos fazer real suportard muito ampla de programas
poderad ser escrita. Vamos estender o conjunto de instrugtes do nosso processador programdvel acrescentando mais algumas poucas instrugoes. Isso lhe darda uma idéia ligeiramente melhor de como seria um processador programdvel se ele tivesse um conjunto completo de instrugdes. Comecaremos introduzindo uma instrucao que € capaz de carregar o valor de uma constante em um dos registradores de um banco de registradores. Por exemplo, suponha que quiséssemos computar RF{0] = RF[1] + 5. O 5 € uma constante. Uma constante ¢ um valor que faz
parte do nosso programa, ndo algo que se encontra na memdria de dados. Precisamos de uma instrugiio que nos permita carregar uma constante em um registrador. Depois disso, poderemos somar o contetido desse registrador a RF{/] usando a instrugao ADD. Assim, introduzimos uma nova instru¢ao com as seguintes representacoes em cddigos de maquina e assembly:
e
Instrucdo Carregar constante— 0011 r,r,rr, c,c.c.c,0,0,¢,¢,c especifica que o nimero bindrio representado pelos bits ¢,c.c.cc.¢,¢,C, deve ser carregado no registrador especificado por ryr,rr,. O ndmero bindrio que estd sendo carregado € conhecide como uma constante. O mnemonico dessa instrucio &: MOV Ra, #c—especifica a operagio RFfa] = ¢
Processadores Programéveis
< 453
a pode ser 0, 1, ..., ou 15. Assumindo a representacdo em complemento de dois (veja a
Secdo 4.8), ¢ pode ser—128, 127, ..., 0, ..., 126, 127. O “#” permite que o assembler distinga essa instrugdo de uma instrugdo regular de armazenamento. Continuamos introduzindo uma instru¢do para realizar a subtragdo de dois registradores, semelhante 2 soma de dois registradores, tendo as seguintes representacoes em codigos de maquina e assembly:
*
Instrugio Subtrair— 0100 ra,ra,rara, rb,rb,rb;rb, re,re;re;re,: especifica a subtra¢do dos conteudos de dois registradores do banco de registradores, especificados por
rb,rb,rb,b, € re,re,re e, O resultado € armazenado no registrador do banco de registradores especificado por rajrara;ra; Por exemplo, “0100 0010 0000 0001" especifica a instrug@o RF[2]=RF{0] - RF[1]. O mnemonico dessa instrugio ¢€: SUB Ra; Rb, Re-especifica a operacio RFfa] = RF{b] ~ RF[c]
Vamos introduzir também uma instrug@o que nos permitird saltar para outras partes de um programa: e
Instrugio Saltar se zero— 0101 ra,ra,ra,ra, 0,0,0.0,0,0,0,0, especifica que se o conteddo do registrador especificado por rasra,ra;ra, for 0, entao nés deveremos carregar o PC com o valor corrente de PC mais 0,040:0,0,0,0,05, que € um ndmero de oito bits, na forma de complemento de dois, representando um valor positivo ou negativo de offser*. O mnemonico dessa instrugio €;
JMPZ#* Ra, offset—especifica a operagiio PC = PC[b] + offset se RF[a] for 0. Se usarmos complemento de dois no offset do salto, permitindo a representacio de niimeros positivose negativos, o programa podera saltar para frente e para tras dentrodo programa,
implementando assim um lago. Com um gffset de oito bits, a instru¢io podera especificar um salto para frente de até 127 enderegos, ou para tras de at€ 128 enderegos (-128 até +127). A Tabela 8.1 resume o conjuntode ins-l _ Tabela 8.1 njunt instrucd i trucdes de seis instrucdes. Um processador helaBl Lonjuntordelnstigdesdesely _ , instrugoes programavel vem acompanhado de um manual de especificagtes que lista as instruInstrugdo Significado ¢oes do processador ¢ da o significado de MOV Ra. d Ri[2]=Did] cada instrugdo, usando um formato similar .
ao da Tabela 8.1. Processadores programd-
MOV d;Ra
Dld}=RF(a]
veis tipicos tém diizias, e mesmo centenas, de instrugoes.
ADD Ra, Rb, Re
RFlal=RFlb]+RFlc]
MOV Ra,#C
RF[al-C
Estendendo a unidade de controle
SUBRa,Rb,Rc
RF[al=RF[b]-RFlc]
e o bloco operacional
JMPZ Ra, ofiset
e
~ PC=PC-+offset se RF{a]=0
Como se mostra na Fig. 8.12, as trés novas instrugdes requerem algumas extensdes na unidade de controle e no bleco operacional da Fig. 8.10. Primeiro, a instrug¢o carregar constante requer que o banco de registradores seja capaz de carregar dados de IR[7..0], além da meméria de dados e da saida da ALU. Assim, aumentamos o multiplexador do banco de registradores de 2x1 para 3x1, adicionamos mais um sinal de controleao multiplexador e criamos tamb€m um novo sinal, de nome RF_W_data, que vem do bloco de controle ligando-se & IR[7..0] — essas alteragdes estdo destacadasna Fig. 8.12 pelo circulo tracejado de nome “I”’. Segundo, a instrucio subtrair
* N. de T: Termo usado para se referir a um valor que € acrescentado a alguma outra quantidade, representando um incremento -em relacioaesta ultima. *% N. de T: De jump if zero, envinglés; ouseja, sallar se zero.
454 » Sistemas Digitais
I
addr
rd
A
A
: }15
"
T
clr “.
3
i3
a
o+ | el
!1
e *a+b-1
I 3b
2
up
-
|
5
glile .
T
/
D.addr
addr
L 16
& \
D
rd
256x16
WFE
TEW Hai5 Redata.
Id
#
ey
=
=
¥
*
f16
¥
!
e
L
LF
g
:
Y
3
o
1 |
16
—
Be
g
data
vV
2
1
v
A
L#
:
",r'
16bits
=151
o
%
s S 16
RF_W_addr
Bloco de controle
4
RF_W_wr
i
RF_Rp_addr -
)
W_wr -
._Hp Bp_add ":d ¥ P
4
e
B
=
Rq_addr
=
Rg_rd
; ,.3;-,’;{; RF_Rp_zero
|
W_data
AR
s
[[RF_Rp_rd RF_Rq_addr L
Wik
RE 16%16
Rp_datas
Rg_data
!
-—16
i’ 16
"'.-----.f..:._-.__‘.p
£
'*--...f_ alu_s1
g Unidadede controle
Figura812
1 “"A
*==2=#**"[
|,
)
.
A R
B
50 b
Bloco opearacional
I—.&
Blocos de controle e operacional para o processador de seis instrugoes.
requer que usemos uma ALU capaz de fazer subtragdo. Assim, acrescentamos um outro sinal de controle & ALU, destacado pelo circulo tracejado de nome “2” na figura. Terceiro, a instrugdo saltar se zero requer que sejamos capazes de detectar s¢ um registrador € zero e somar IR[7..0] ao PC. Desse modo, inserimos um componente de bloco operacional para determinar se a porta de leitura Rp do banco de registradores estd com todos os bits em zero (esse componente seria apenas uma porta NOR). Ele estd indicado pelo circulo tracejado de nome “3a” na figura. Modificamos também o registrador PC de modo que ele possa ser catregado com o valor de PC mais o de IR/[7..0], indicado por “3b” na figura. O somador
usado para isso também subtrai 1 da soma, para compensar o fato de que o estado Buscaj4
acrescentou| ao PC. Também precisamos estender a FSM do bloco de controle que estd dentro da unidade de controle para que seja capaz de lidar com as trés instru¢fes adicionais. A Fig. 8.13 mostra a FSM estendida. Os estados Inicio e Busca permanecem os mesmos. Partindo do estado Decodificacdo, acrescentamos trés novas transi¢oes para os trés novos cdigos de operacio de ins-
trugdes. Fizemos uma pequena revisdo das a¢des dos estados Carregar, Armazenar e Somar (as novas a¢des estdo em itdlico), j4 que o multiplexador do banco de registradores tem um
Processadores Programéveis
Carregar
Armazenar
AR REkaribe
Subtrair
)
< 455
z
Saltar se zsfl:D—,
’%
RF_Rp_addr=ra
D_addr=d
D_addr=d
RF_Rp_addr=rb
RF_s1=1
RF_Rp_addr=rb
RF_Rp_rd=1
&
RF_s1=0
RFE 51=X
RF s51=0
RF_W_addr=ra
RF_s1=0
&
RF_s0=1 RF W addr=ra
RF_s0=X RF_Rp_addr=ra
RF_s0=0 RF_Rq_zadd=rc
RF_W_wr=1
RF_s0=0 RF_Rq_addr=rc
RF_W. wr=1
RF_Rp_rd=1
RF_Rq_rd=1
RF_Rq_rd=1
.
RF_W_addr_ra
RF_W_addr=ra
5
RF_W
RF_
D_rd=1
D_wr=1
RF_Rp_rd=1
RF_s0=0
wr=1
alu_s1=0
\
Figura 8.13
/
/
alu s0=1
/
/
W wir=1
RF_Rp_rd=1
fi
alu_s1=1
@
alu_s0=0
&
FSM para o bloco de controle do processador de seis instrugdes.
Itiplexador com duas linhas de selegdo ao invés de uma. De modo semelhante, revisamos as agOes do estado Somar para que a ALU seja configurada com duas linhas de controle ao mu
invés de uma. Adicionamos quatro novos estados, Carregar constante, Subtrair, Saltar se
zero ¢ Saltar, para as wés novas instrugdes. Os novos estados dessas instrucdo realizam as S€g uintes fungdes no bloco operacional: No estado Carregar constante, configuramos o multiplexador do banco de registradores para deixar passar o sinal RF_W data e 0 banco de registradores para escrever no enderego
especificado por ra (que é IR[11..8]). No estado Subtrair, executamosas mesmas agbes do estado Somar, exceto que a ALU € configurada para subtracdo ao invés de adicao. No estado Saltar se zero, configuramos o banco de registradores para que o registrador especificado por ra seja lido ¢ seu contedido colocado na porta de leitura Rp. Se o valor Rp do registrador lido contiver apenas 0s, entdo RF_Rp_zero ird se tornar 1 (e 0, em caso contrério). Assim, incluimos duas transi¢oes partindo do estado Saltar se zero. Uma transigao serd tomada se RF_Rp_ zero for 0, significando queo registrador lido nfio contém somente
Os—essa transiciio leva a FSM de volta ao estado Busca, significando que nfio ocorre nenhum salto de fato. A outra transi¢do serd tomada se RF_Rp_zero for 1, significando que o registrador lido € todo s¢ de 0s. Essa transi¢fio vai para um outro estado, Saltar, o qual deverd efetivamente realizar o salto. Esse estado eféetua a transicio simplesmente ativando a linha de carga do PC. Observe que, com o acréscimo da instrugéo Saltarse zero, o processador poderé precisar
de até quatro ciclos para completar uma instrucae. Especificamente; quando o registrador ra de uma instrugdo Saltar se zero for todo de Os, entdao um estado extra serd necessario para carregar o PC com o endereco da instrugdo para a qual se deve saltar,
456 »
Sistemas Digitais
» 8.5 PROGRAMAS EXEMPLOS EM LINGUAGEM ASSEMBLY EEM CODIGO DE MAQUINA Usando o conjunto de instrugdes de seis instrucdes da se¢do anterior e usando o processador de seis instrugtes para realizar uma tarefa em particular, daremos agora um exemplo de programacio em linguagem assembly ¢ mostraremos como esse codigo seria convertido em codigo de mdquina por um assembler. A Tabela 8.2, que mapeia as instrugbes
Instrugdio MOV Ra, d
Codigo de operagao 0000
MOV d, Ra
0001
Cédigos de maquina e assembly de
ADT R B Re.
00W0
um programa simples
MOV Ra,#C
oon
SUB Ra, Rb, Rc
0100
JMPZ Ra, offset
01
em codigos de operagio, seria usada pelo assenibler.
» EXEMPLO84
TABELA82 Cadigos de operagao de instrugdes
Escreva um programa que conta 0 nimero de palavras que sio diferentes de zero nas posigdes 4 ¢ 5 da memdria de dados e que armazena o resultado na posigdo 9 da memdria de dados. Assim, os resultados que poderiam ser armazenados na posi¢do 9 sido zero, um e dois.
Usando o conjunto de instruges da Tabela 8.2, poderemos escrever o programa assembly que estd mostrado na Fig. 8.14(a). O programa guarda o valor da contagem no registrador R0, o qual ¢ inicializado com 0. Mais tarde, o programa poderd precisar somar 1 a esse registrador, de modo
que e¢le carrega o valor 1 no registrador R/. A seguir, o programa carrega o contetido da posicio 4 da memdria de dados no registrador R2. Entio, se o valor de R2 for zero, o programa saltard para a instrucgdo de rétulo “rot1”. Se R2 ndo for zero, o programa executard uma instrucio de soma que adicionard | ao registrador R0 e, entdo, ird prosseguir com a instrugio de rétulo “rot1”, ja que essa instrugéio € a proxima instrugio. A instrugdo de rétulo “rot1” carrega o contetido da posigido 5 da memoria de dados no registrador R2. Se R2 for zero, 0 programa saltard para a instrug¢do de rotulo
“rot2”. Se K2 néio for zero, o programa executard uma instrugio de somar que adicionard 1 ao registrador R0 e, entdo, seguird para a proxima instrucdo, que € a instru¢io com rétulo “rot2”. Essa instrucéio armazena os contetidos do registrador RO na posicdo 9 da memoria de dados. MOV RO, #0; / inicialize o resultado com 0
0011 0000 00000000
MOV R1, #1; // constante 1 para incrementar o resultado
0011 0001 00000001
MOV Rz, 4; // pegue a posicao 4 da meméria de dados
0000 0010 00000100
JMPZ R2, rotl; /f se zero, salte a proxima instrucao
0101 0010 00000010
ADD RO, RO, R1; /f n&o zero, resultando portanto um incremento
0010 0000 0000 0001
rot1:MOV R2, 5; // pegue a posicac 5 da memdria de dados
0101 0010 00000010
ADD RO, RO, R1; /ndo zero, resultando portanto um incremento
00100000 00000001
rot2:MOV 9, RO; /f armazeneo resultado na posicso 9 da memaria de dados
{a)
Figura 8.14
0000 0010 00000101
JMPZ R2, rot2; i se zero, salte a proxima instrugao
0001 0000 00001001
(b)
Um programa que conta o ndmero de palavras diferentes de zero em D{4] e D[5]
¢ armazena o resultado em Df9]: (a) cédigo assembly e (b) cédigo de mdquina correspondente,
gerado por um assembler. Nas instrucoes de 16 bits do codigo de mdquina, os espagos em branco estiio ali para a conveniéncia do leitor durante a leitura deste livro; nos cédigos de mdquina reais, néo hd esses espagos. Quando escrevemos o programa assembly, os registradores que usamos para armazenar o resultado, a constante 1 e a cdpia dos contetidos da posicio da memdria de dados sdo escolhidos ar-
bitrariamente. Com esse propoésito, poderiamos ter usado qualquer registrador. Por exemplo, pode-
Processadores Programéaveis
< 457
riamos ter usado o registrador R7 para guardar o resultado. Isso significa que, no cédigo, todas as
ocorréncias de RO poderiam ser substituidas por R7. Além disso, ao escrever o programa assembly, escolhemos arbitrariamente os rétulos “rot1” e “rot2”, Poderiamos ter usado outros nomes para esses rotulos, tais como “saltal™ e “pronto”, ou “Fred” e “George”. O melhor, no entanto, ¢ usar rétulos descritivos que ajudem as pessoas a ler o cddigo assembly e a entender o programa. Um assembler converteria automaticamente o codigo assembly no cédigo de mdquina mostrado na Fig. 8.14(b). Para cada instruc¢io assembly, o assembler determina o tipo especifico de instrugdo olhando o mnemdnico e, se necessdrio, os operandos. Entdo, fornece os bits apropriados
para o codigo de operagio (quatro bits) daquele tipo de instrug@o, como estd definido na Tabela 8.2. Por exemplo, 0 assembler olhard a primeira instrugio “MOV RO, #0” e saberd assim, com base nas trés primeiras letras “MOV”, que essa € uma das instru¢oes de movimentagio de dados; o
assembler olhard os operandos e vendo “R0O” saberd que se trata de uma instrugiio comum de carga Ou uma que carrega uma constante. Finalmente, o assembler verd o “#” e concluird que se trata de uma instrugiio de carga de uma constante, produzindo assim o codigo de operagiio 00117 de uma instru¢@io de carga de constante, como estd mostrado na primeira instru¢io de maquina da figura. O assembler também converte os operandos em bits, convertendo o “R0” da primeira instrugiio em
“0000” e “#0” em *00000000”, como mostrado na primeira instrugéio de médquina da figura, A instrugdo JMPZ requer algumas manipulagtes a mais. O assembler reconhece que se trata de uma instrugdo Saltar se zero, fornecendo assim o cidigo de operacdo “01017. O assembler converte o primeiro operando “R2” em “0010”. A seguir, ele chega ao segundo operando, “rotl,” e nido sabe quais bits produzir, pois ele ndo sabe ainda qual € o enderego da instrugiio cujo rétulo é “rot1”, porque o assembler ainda nio chegou até essa instrugiio do programa. Para resolver esse problema, muitos assemblers dao duas passadas no cédigo assembly: durante a primeira passada, 0 assembler cria uma tabela com todos 0s rotulos e seus enderecos e, entdo, na segunda passada,
o assembler fornece o cddigo de maquina. Portanto, durante a segunda passada, tal assembler saberd que a instrucgiio de rétulo “rot1™ estd em um endereco localizado dois enderecos apds a primeira instruciio JMPZ — especificamente, que a instrugfio de rétulo “rot1” estd no enderecgo 5,
ao passo que a instru¢do JMPZ estd no enderego 3 (assumindo que a primeira instrugio estd no endereco 0, ndo 1), Desse modo, o assembler dd um offset de 2 para que seja efetuado um salto de 2 enderecos para a frente. Observe que os rétulos “rot1” e “rot2” ndo aparecem no cidigo de maquina, sdo meramente elementos construtivos que o assembler oferece ao programador de linguagem assembly.
I W.data
‘}
L ]_’(_""' PO
" Rdaw
i
flip-flop, que € carregado a cada ciclo com o valor que estd no pino externo I0. Assim, a leitura da Figura8.15 Conexdo de pinos externos. posi¢do 240 dar4 00. . .01 (inteiro 1), ou 00...00 (inteiro 0), dependendo do valor que aparecer em 10. De modo similar, a posi¢do 241 estd conectada ao pino 1, a posi¢io 242 a I2, e assim por
diante, com a posi¢io 247 estando conectada a I7. As posigoes 248 até 255 estio conectadas aos pinos PO a P7, exceto que 08 pinos estfio ligados as saidas, e ndo as entradas, dos flip-
flops dessas posi¢des. Por exemplo, quando se escrevena posi¢ao 255, o flip-flop € carregado com 0 ou 1 (apenas interessa o bit menos significativo durante a escrita), sendo que esse flip-
flop aciona o pino externo P7 de saida. > EXEMPLO85
Detector de movimento no escuro usando linguagem assembly
A Segio 1.3 continha um implementar um detector aexpressdo PO = 10 && plementa essa expressdo nas posictes da memdria
exemplo, ilustrado na Fig. 1.13, que utilizava um microprocessador para de movimento no escuro. Aquela secéo utilizou cédigo C para computar !I1. Neste exemplo, mostramos o cédigo assembly subjacente que imem C. Assumindo que0s pinos externos 10..17 ¢ P0..P7 estio mapeados de dados como se ilustra na Fig. 8.15, poderemos programar a expressiio
em assembly como segue;
0: MOV RO, 240 1: MOV R1, 241 2: NOTRI1, RI
/I mova Df240], que € o valor no pino [0, para R0 /I mova Df24]], que é o valor no pino /1, para R /I compute 111, assumindo que ha instrugdo para complementar
3: AND RO, RO, R1
/ compute 10 && 11, assumindo que h4 instrugio AND
4: MOV 248, R0
f/ mova o resultado para D{248]. que € o pinoPO
8.7 RESUMO DO CAPITULO Neste capitulo, afirmamos (Se¢io 8.1) que os processadores programaveis sio amplamente usados para implementar a funcionalidade desejada do sistema, devido em parte a sua pronta disponibilidade e ao curto tempo de projeto (especificamente, escrita do software). Fornecemos (Secdo 8.2) a arquitetura bdsica de um processador programdvel, consistindo em um bloco operacional de propésitos gerais com um banco de registradores e uma ALU; uma unidade de controle com um bloco de controle, um PC e um /R; e memdrias para
armazenar o programa e os dados. A unidade de controle busca a préxima instru¢io na
460 »
Sistemas Digitais
memoria de programa, decodifica essa instrugio e, entdo, executa a instrugo, configurando o bloco operacional para efetuar a operaciio especiticada pela instrugio. Em seguida, pro-
jetamos (Sec¢do 8.3) um processador programavel simples de trés instru¢oes e mostramos como um programa podia ser representado por Os e 1s (codigo de maquina) na memoria de programa do processador. Fomos ainda mais além projetando (Secio 8.4) um processador de seis instru¢des e discutindo como poderiam ser feitas outras extensoes para acrescentar mais instrugdes e, portanto, conseguir uma arquitetura de processador mais razoavel. Demos (Secdo 8.5) um exemplo de cddigos assembly e de maquina para o processador de seis instrugdes. Discutimos algumas extensdes para a arquitetura do processador programavel (Secao 8.6).
Os processadores programdveis sdo produzidos tipicamente em enormes quantidade (com nimeros na ordem de dezenas de milhdes, ou mesmo bilhdes) e, portanto, uma aten-
¢iio tremenda € dada a seu projeto. Os leitores devem perceber que os projetos dos processadores programdveis deste capitulo sdo extremamente simplistas e sdo usados apenas com propdsitos ilustrativos. Contudo, mesmo tendo visto projetos simplistas, esperamos que vocé tenha agora uma compreensao do principio de funcionamento de um processador programével. Os modernos processadores comerciais baseiam-se nos mesmos principios — as instrugdes sdo armazenadas na memdria de programa na forma de cédigos de maquina, as unidades de controle buscam, decodificam e executam as instrucoes, e os blocos opera-
cionais suportam as operacoes das instrucdes, usando bancos de registradores e ALUs. Os processadores modernos fazem um trabalho muito melhor, usando concorréncia, pipelining e muitas outras técnicas para obter freqii€ncias elevadas de relégio ¢ execucio rapida de programas.
» 8.8 EXERCICIOS SECAO 8.2: ARQUITETURA BASICA 8.1 Se o contador de programa de um processador tiver 20 bits de largura, até quantas palavras a memdoria de instrugdes do processador poderd conter (ignore quaisquer artificios especiais para expandir o tamanho da memdria de instrucoes)? 8.2 Quais das seguintes sdo operacdes de bloco operacional, vdlidas e de um nico ciclo, para o bloco operacional da Fig. 8.2? Explique a sua resposta. (a) Copiar os dados de uma posi¢io da memdria em uma outra posi¢io da memoria. (b) Copiar os contetidos de duas posi¢oes de registrador em duas posi¢des da memdria. (¢) Somar os dados de uma posi¢io do banco de registradores com os de uma posi¢do da memoéria. O resultado ¢ armazenado em uma posi¢io da memdéria. 8.3 Quais das seguintes sdo operacdes de bloco operacional, vdlidas e de um tinico ciclo, para o bloco operacional da Fig. 8,27 Explique a sua resposta. (a) Copiar os dados de uma posicio do banco de registradores em uma posi¢io da memdoria. (b) Subtrair os dados de duas posi¢oes da memdria e armazenar o resultado em uma outra posicio da memdria. (¢) Somar os dados de uma posiciio do banco de registradores e de uma posicio da memdria, armazenando ¢ resultado na mesma posi¢ao da memdria. 8.4 Assuma que estamos usando uma memdria de porta dupla, a qual nos permite ler duas posigoes simultaneamente. Modifique o bloce operacional do processador programével da Fig. 8.8 para suportar uma instrucio que executa uma operacgio de ALU, usando os dados de duas posicdes quaisquer de meméria e armazenando o resultado em uma posi¢io do banco de registradores. Analise passo a passo a execugio dessa operagdo, como estd ilustrado na Fig, 8.3, 8.5 Determine as operacges requeridas para instruir o bloco operacional da Fig. 8.2 para realizar a operacdo: D[8] = (D[4] + D[5]) — D[7]., em que D representa a memdria de dados.
Processadores Programéaveis
< 461
SECAO 8.3: UM PROCESSADOR PROGRAMAVEL DE TRES INSTRUCOES 8.6 Se uma instrucio de processador tiver um c6digo de operagéo de 4 bits, quantas instrugdes possiveis poderiio ser efetuadas pelo processador? 8.7 Usando o conjunto de instru¢des de trés instrugdes deste capitulo, o que computa o seguinte programa assembly? MOV R3, 19; ADD RS, 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 RS, 30; ADD R9, R4, R5; MOV 20, R9. 8.9 Usando o conjunto de instrugdes de trés instrugdes deste capitulo, escreva um programa assembly que atualiza a memoéria de dados D como segue: D[0] = D[0] + D[1]. 8.10 Usando o conjunto de instrugdes de trés instrugdes deste capitulo, escreva um programa assembly que atualiza a memdria de dados D como segue: D[4] = D[1]#*2 + D[2]. 8.11 Com base no conjunto de instrugdes de trés instrugtes deste capitulo. converta o seguinte programa assembly em codigo de maquina: MOV R3S, 19: ADD R5, R5, R5; MOV 20, R5. 8,12 Com base no conjunto de instrugdes de trés instrugdes deste capitulo, liste as transferéncias bésicas entre os registradores ¢ a memdria ¢ as operagoes que ocorrem a cada ciclo de relégio no seguinte programa,: MOV R0, 1; MOV R1, 9; ADD RO, RO, R1.
SECAO 8.4: UM PROCESSADOR PROGRAMAVEL DE SEIS INSTRUGOES 8.13 Com base no conjunto de instrugdes de seis instrugdes deste capitulo, liste as transferéncias sicas entre os registradores e a memoria e as operagoes que ocorrem a cada ciclo de relégio seguinte programa, assumindo que o conteddo de D[9] € 0: MOV R0, #1: MOV R35, 9; IMPZ rétulol; ADD RS, R5. R6; rétulol: ADD RS, RS, R6. Qual € o valor de RS apés o térming programa?
bano R5, do
8.14 Ao conjunto de instrucdes de seis instrugdes deste capitulo, acrescente uma nova instrucio que realiza uma operaciio AND bit a bit entre dois registradores ¢ armazena o resultado em um terceiro registrador. Estenda o bloco operacional, a unidade de controle ¢ a FSM do bloco de controle,
conforme for necessério. 8.15 Ao conjunto de instru¢Oes de seis instrugdes deste capitulo, acrescente uma nova instrugio que realiza um salto incondicional (sempre salta) para uma posicio especificada por um offser de 12 bits. Estenda o bloco operacional, a unidade de controle e a FSM do bloco de controle, conforme for necessario. 8.16 Ao conjunto de instrugdes de seis instrugdes deste capilulo, acrescente uma nova instrugio que, se dois registradores forem iguais, realizard um salto para uma posicao especificada por um offset de 12 bits. Estenda o hloco operacional, a unidade de controle e a FSM do bloco de controle, conforme for necessério. 8.17 Usando o conjunto de instrugdes de seis instrugdes deste capitulo, escreva um programa assembly para o seguinte cédigo em C, o qual computa a soma dos primeiros N niimeros, em que N é um
outro nome para D[9]. Sugestdo: Use um registrador para primeiro armazenar N, i=1; soma=0;
while
(i!=N)
soma
= soma
i=1
¢l
{ + i;
} 8.18 Usando o conjunto de instrugdes estendido que vocé projetou no Exercicio 8.16, escreva um pro-
grama assembly para o codigo em C do Exercicio 8.17.
462 »
Sistemas Digitais
SECAO 8.5: PROGRAMAS EXEMPLOS EM LINGUAGEM ASSEMBLY E EM CODIGO DE MAQUINA 8.19 Defina duas novas instrugGes de movimentagao de dados para o conjuntode instrugdes de seis
instrugdes deste capitulo. Estenda o bloco operacional, a unidade de controle e a FSM do bloco de controle conforme
for necesséario,
8.20 Defina duas novas instrugdes aritméticas e 16gicas para o conjunto de instrugdes de seis instru-
¢Oes deste capitulo, Estenda o bloco operacional, a unidade de controle ¢ a FSM do bloco dé controle,conforme for necessario. 8.21 Defina duas novas instrugtes de controle de fluxo para o conjunto de instrugdes de seis instru¢des deste capitulo. Estenda o bloco operacional, a unidade de controle ¢ a FSM do bloco de controle,conforme for necessario.
8.22 Assumindo que os pinos externos [0..17 ¢ PO..P7 do microprocessador estdo mapeados nas posi¢oes da memdria de dados, conforme a Fig. 8,15, e uma instru¢iio AND foi acrescentada ao conjunto de instrugdes de-seis instrugdes deste capitulo, crie um programa assembly que produz uma safda 0 em P4 quando todas as oito entradas 10..17 sio 1s.
Carole crescen em um local onde -0s melhores estudantes iam para a escola de engenharia, pois a engenharia era altamente respeitada. “Eu era boa aluna na escola, de modo que a engenharia parecia ser uma opcao natural. Eu também estava muito interessada em construir coisas e muito
curiosa a respeito de como novas coisas sdo construfdas - por isso muito cedo fui atrafda para a engenharia, em
torno dos 10 anos de idade.” Carole trabalhou na Intel por 15 anos. Ela foi uma das
mente, esse foi um projeto muito desafiante e trabalhar com tantos. arquitetos excelentes foi muito enriquecedor. Entrétanto, eu também aprendi o que € construir alguma coisa grande, com o envolvimento de uma equipe muito grande e de duas empresas de grande porte. As duas empresas tinham culturas diferentes ¢ metodologias diferentes. Algumas vezes, reconciliar essas dife-
rengas era mais desafiador do que resolver os problemas técnicos. No entanto, tudo isso faz parte de “se construir coisas’ e foi uma grande licio de lideranca.” O que Carole mais gosta a respeito de sua carreira & “a mudanca constante. Apds 22 anos como arguiteta de computadores, eu ainda estou fazendo coisas novas
todos os dias. A ciéncia da computacdo € um trabalho
arquitetas originais de uma parte popular do processador
em andamento,
Pentium, conhecida por MMX
quais temos de nos agarrar ¢ sair correndo com elas, E
(Multimedia Extension of
the Intel Architecture). “Era fascinante aprender os algo-
ritmos usados para comprimir video e dudio e inventar
oferecendo novas
oportunidades as
aqui que estd a parte divertida.”
Solicitada a dar alguns conselhos aos estudantes,
novas instrugdes para que a arquitetura Intel executasse eficientemente essas aplicagdes. Nem sempre € ficil para os arquitetos de processadores quantificar os beneficios de novas caracteristicas ¢ justificaro custo das respectivas dreas no silicio (ou o tamanho de um chip die) para novas instrugtes. No caso de aplicagbes de multimidia, os beneficios eram bem compreendidos: exibir um clip de video a uns poucos quadros por segundo, ou exibi-lo em tempo real (cerca de 30 quadros por segundo), fazia uma
Carole sugere duas coisas:
enorme diferenca, visivel para qualquer um.” Como € o
» “Esteja aberto para as mudangas. E importante cons-
¢ “Permanecam na escola enquanto for possivel. Consiga um doutorado, se vocé puder. Seja capaz de se adaptar as constantes mudancas, vocé precisard de
fundamentos muito robustos e tedricos. Simplesmente aprender come fazer coisas nao € suficiente; vai lhe dar emprego por dois anos, mas entdo suas habilidades estarédo obsoletas.”
caso com muitos engenheiros, ela estd muito orgulhosa
truir um conhecimento aprofundado de uma 4rea. No
do que conseguiu: “Quando aparecen o primeiro proces-
meu caso, € arquitetura de computadores. No entanto, deve-se estar pronto para usar esse conhecimento em
sador Pentium com MMX, era realmente compensador pensar que-um pequeno pedago da minha mente estava em todas essas maquinas, exibindo videos em tempo real e surgindo em todos os lugares.” Carole foi também um dos arquitetos da equipe
da Intel ¢ Hewlett-Packard que definiu a arquitetura do computador Itanium. “Essa foi uma oportunidade dnica para definir um processador, a partir do zero’. Tecnica-
muitos projetos diferentes, com pessoas diferentes e
cada vez mais em diversas partes do mundo. Hé quinze anos, as aplicactesde multimidiaeramo foco de muitos arguitetos de computador. Hoje, ¢ a bicinformdtica
€ a mineraciio de dados. As mudangas requerem muito trabalho para se aprender novos dominios, mas nio se
adaptar as mudangas niio € uma opgio.”
B> 9 Linguagens de Descricao de Hardware » 9.1 INTRODUGAQ' desenhando no Capitulo automético e Um desenho
os circuitos projetados: 2, projetamos um cirdesenhamos o circuito tem mais informacfo
)
Neste livro, estivemos por nos. Por exemplo, cuito abridor de porta mostrado na Fig. 9.1.
do que € realmente necessdrio para se descrever um cir-
AbridorDePorta
—DD—L —i— D—
f
cuito. Em particular, o desenho informa as posi¢fes das entradas e saidas: no desenho da Fig. 9.1, as entradas estio Figura9.1 Circuito desenhado. a esquerda, a saida estd & direita, a entrada ¢ estd em cima, aentrada h esta no meio e a entrada p estd em baixo. O desenho também d4 informacGes sobre o tamanho e a localizagdo dos componentes no circuito: ‘0 inversor estd em cima, a porta OR estd abaixo do inversor, a porta AND est4 a direita e cada
componente tem cerca de meia polegada por meia polegada. O desenho também d4 informa¢Oes a respeito dos fios: por exemplo, o fio que sai do inversor segue para a direita, entio para baixo ¢ em seguida novamente para a direita. Na realidade, entretanto, toda essa informagao sobre o desenho € irrelevante, nfo tendo nada a ver sobre como o projeto serd implementado fisicamente. Era necessdrio que o circuito fosse desenhado de algum modo. Assim, optamos por desenhé-lo como estd mostrado na figura. No entanto, também poderiamos ter desenhado o circuito de muitos outros modos. O desenho de um circuito € referido comumente como o
esquemdtico do circuito. Quando lidamos com circuitos maiores, surge um problema com o desenho de todos os nossos circuitos. O esqueméuco da Fig. 9.2 significa alguma coisa para vocé? Esse esquemético tem apenas algumas poucas dizias de componentes; como seria se¢ houvesse alguns milhares de componentes, como € bem comum? Para desenhar um circuito grande, seria necessario um esforgo tremendo de nossa parte para imaginar como colocar cada componente no desenho ¢ como passar os fios entre os componentes. Se¢ uma ferramenta gerasse
o circuito, ela teria de usar tempo de computacio para que o desenho desse circuito fosse produzisse de modo visualmente atraente (2o invés de algo confuso parecido com espaguete). Essa computaga@o precisaria de muito tempo e assim mesmo poderia néo produzir um bom
desenho. Além disso, 0s arquivos usados para armazenar esses esquematicos seriam muito grandes, jd que conteriam toda uma informagio extra sobre a localizag@o e tamanho precisos
' Uma parte substancial do contetido deste capitulo € uma contribuigio de Roman Lysecky.
464 » Sistemas Digitais
Figura 9.2 Os esquemdticos tornam-se dificeis de serem lidos quando hd mais de uma dizia ou tanto de componentes — a informagfo grafica torna-se incémoda ao invés de servir de auxilio. de todos os componente. Todo esse esforgo, tamanho de arquivo e tempo extras seriam necessdrios para algo que ndo seria realmente muito (til — as pessoas ndo conseguem compreender os desenhos de circuitos que contenham mais de uma centena de portas. Portanto, qual € o
objetivo de se desenhar tais circuitos? O que realmente desejamos € simplesmente uma maneira para descrever o circuito em si: quais s3o as entradas e as saidas, quais componentes estdo presentes e quais sdo as conexdes? Idealmente, fariamos essa descri¢éio usando uma linguagem textual. Assim, as pessoas poderiam escrever essas descri¢oes usando um teclado de computador, do mesmo modo que escrevemos mensagens ¢ programas em C. Poderiamos, portanto, descrever o circuito da Fig. 9.3(a) usando uma linguagem textual em portugués, como mostrado na Fig. 9.3(b). Demos nomes a cada porta do circuito e aos fios internos da Fig. 9.3(a). {a)
;
{b)
AbridorDePorta
As entradas externas sao ¢, h e p, que sao bits.
A saida externa é f, que é um bit,
v
Inv_1
'y
ni
Descreveremos agora um circuito cujo nome é AbridorDePorta.
-
Assumimos que vocé conhece o comportamento desses componentes: Um inversor, que tem um bit x de entrada e um bit F de saida. U;na pq:a OR de 2 entradas, gue tem os bits de entrada x e y. e o bit F
e saida. n2
OR2_1
AND2_1
Figura 9.3 Descrir;fio de um circuito usando uma linguagem textual ao invés de um desenho: (a) esquemdtico, (b) descrigfin textual em portugués.
Uma porta AND de 2 entradas, gque tem os bits de entradax ey, e o bit F de saida. O circuito tem os fios internos n1 e n2, ambos bits. O circuito AbridorDePorta consiste internamente em: Um inversor de nome Inv_1, cuja entrada x conecta-se a entrada externa c e cuja saida conecta-se a n1. Uma porta OR de nome OR2_1, cujas entradas conectam-se as entradas
externas h e p, e cuja saida conecta-se a n2.
Uma porta AND de nome AND2_1, cujas entradas conectam-se anle
n2, e cuja saida conecta-se & saida externa f. Isso é tudo.
Naturalmente, o portugués ndo seria uma boa lingua se vocé quisesse usar uma ferramenta de computador que lesse essa descri¢iao, uma ferramenta de computador requer uma linguagem com sintaxe exata ¢ um significado preciso para cada elemento construtivo da linguagem. Desse modo, as linguagens que podem ser entendidas por computadores evoluiram nas décadas de 1970 ¢ 1980 para descrever os circuitos de hardware. Tais linguagens
Linguagens de Descrigdo de Hardware
< 465
tornaram-se conhecidas como linguagens de descricdo de hardware, ou HDLs (Hardware Description Languages). As linguagens de descricao de hardware capacitam-nos nfio s a
descrever as interconexdes estruturais entre os componentes, mas também a incluir métodos que nos permitem descrever o comportamento dos proprios componentes. O projeto digital moderno baseia-se pesadamente no uso de linguagens de descri¢do de hardware em todos os estagios do projeto. Neste capitulo, daremos uma breve introdugio as linguagens de descri¢io de hardware mais populares: VHDL, Verilog e SystemC. No entanto, para realmente aprender cada uma dessas linguagens, deve-se consultar livros-textos dedicados especificamente a cada linguagem. Cada sec¢io deste capitulo pode ser coberto imediatamente apds os capitulos anteriores
correspondentes (Segdo 9.2 apds o Capitulo 2, Se¢éio 9.3 apds o Capitulo 3, Secdo 9.4 apos o Capitulo 4 e Secdo 9.5 apos o Capitulo 5) ou essas se¢es podem ser cobertas de uma vez, apos termos completado esses capitulos anteriores. Além disso, cada se¢ido tem trés partes, uma para VHDL, uma para Verilog e uma para SystemC. Cada uma dessas partes € independente das outras da se¢fio. Assim, um leitor que esteja mais interessado em uma das linguagens de descrigdo de hardware, digamos Verilog, poderd ler apenas as partes sobre Verilog de cada secdo, pulando as partes sobre VHDL e SystemC. Um leitor interessado em fazer uma comparaciio entre as trés linguagens de descrigdo
de hardware poderd ler as sectes sobre cada uma dessas trés linguagens. Ao fazer isso, vocé poderd notar que as linguagens de descricao de hardware t€m capacidades semelhantes, diferindo basicamente em sua sintaxe. Assim, depois de aprender completamente uma HDL, um projetista podera também fazer um aprendizado rapido de outras HDLs.
> 9.2 DESCR!Q%U DE LOGICA COMBINACIONAL USANDO LINGUAGENS DE DESCRICAO DE HARDWARE Estrutura
A introducdo deste capitulo procurou descrever um circuito por meio de uma linguagem textual. Mostraremos agora como um circuito € descrito por algumas HDLs diferentes entre si. Algumas vezes, o termo esfrutura ¢ usado para se referir a um circuito, significando uma interconexdo de componentes. VHDL A Fig. 9.4(c) mostra uma descrigio em VHDL do circuito AbridorDePorta da Fig. 9.4(a). Por conveniéncia, mostramos também na Fig. 9.4(b) a descrigiio em portugués e a correspondén-
cia entre as descrigoes em portugués ¢ VHDL. A descricio comega com uma declaragio entity* (entidade), a qual define o nome do projeto e a lista de suas entradas e saidas, conhecida como peort (porta). Uma declaragio de entidade nada diz sobre as partes internas do projeto, apenas o nome € a interface do projeto. A descrigdo lista os nomes das portas e define os seus tipos, o qual € std_Togic, neste caso. Basicamente, esse tipo significa um bit, mas que internamente nao faz parte da VHDL (o tipo bir predefinido em VHDL € limitado demais, devido a razdes que estdo além dos nossos objetivos aqui). Na realidade, para usar std_logic, devemos incluir o comando: “1ibrary
ieee;
use ieee.std logic_1164.al1;” no inicio do arquivo. A descricdo continua com uma defini¢io da architecture (arquitetura), a qual descreve as partes internas do projeto. Demos o nome Circuito & arquitetura, mas poderfamos té-la denominado de gualquer coisa que quiséssemos: CircuitoAbridorDePorta, EstruturaDoAbridorDePorta, Estrutura, ou mesmo Fred, embora queiramos um nome que scja Gtil & com*N. de T: Este termo € outros que virfio a seguir serfio mantidos em inglés, pois sfio proprios das linguagens de descrigiio de
hardware,
466 > Sistemas Digitais
AbridorDePorta Inv_1
(a) Descreveremos agora um circulto cujo nome éAbndnrflePorta
-
As entradas externas sdoc, h e P, que séo ;m RS S y . A saida externa é f, que é um bit.
Assumimos qus vocé conhiece o comportamento dflfifismrlponentes Um inversor, que tem um hfixd&enlrada & um bit F de saida. -~ Uma porta OR de 2 entradas, que tem os bits de S e - -, entiada x e y, e 0 bit F de saida. =
.
Uma porta AND de 2 entradas; que tem os bits de.__ entrada x ey, € 6 bit F de saida.
O circuito tem os fios internos n e n2, ambos bits.. 0 circuito AbridorDePorta consiste internamente em: Um inversor de nome Inv_1, ouja enirada x conecta-se ‘entrada externa c e z:ulasalda conecta-se a nl.
B
Uma porta OR de 2 entradas ¢ de nome OR2_1, cujas ‘gniradas conectam-se as entradas externas h & p, ecuji~~_ ‘saida conecta-se 8 n2.
U porta AND de 2 entradas & de nome AND2_, cujas entradas™ ‘conectam-se a n1 e n2, e cuja saida conecta-se & midaaxtemaf Isso & tudo.
)
g
Figura9.4
() Descri¢do de um circuito usando uma linguagem textual, ao invés de desenhos: (a) esquemdtico,
(b) descrigdo textual em lingua portuguesa e (c) descrigao textualem linguagem. preensan da arquitetura. A m‘qmtemra comega declarando quais componentes serfio usados
‘no projeto. Esses componentes devem ser definidos em algum outro lugar, possivelmente no 1inicio do arquivo de descri¢io, ou talvez em algum outro arquivo. Discutiremos mais tarde ‘as definicBes desses componentes; por enquanto, assuma que de algum modo elas jé estejam
‘definidas. Cada declaracdo de componente deve conter a definicdo de suas entradas e saidas, sendo que essas entradas e saidas devem estar exatamente de acordo com a declaragdo de entidade do componente {encamrada em algum outro lugar). Entfio, a descrigio incluird uma declaragéio signal (sinal) dos sinais internos do projeto, 0s
quais essencialmente s3o fios internos. Juntamente com essa declaraga;n a descrigio mostra umexemplo de comentério em VHDL: “-- fios internos”. Os comentdrios comegam ¢om segumdo—sa i no resto da linha um texto qualquer que queiramos. As ferramentas VHDL ignoram esse texto, mas € ttil s pessoas que devem ler as descrigdes. Finalmente, a descri¢o faz o instanciamento dos componentes do circuito e define as suas
conexdes. Por exemplo, a descricdo faz o instanciamentode um componente denominado
Inv_I, que € um componentedo tipo Inv (o qual foi declarado anteriormente na descri¢io em VHDL) e indica que a entrada x de Jnv_I est4 conectada a ¢, que € uma entrada externa. Uma
notagio alternativa, mais concisa, omite os nomes das portas. Usando essa notagao,
poderiamos instanciar 0 nosso inversor escrevendo “Inv_1:
Inv port map (c, nl);".A
ordem dos sinais no mapeamento de porta (port map) de Inv correspondea ordem das portas
Linguagens de Descrigéo de Hardware
< 467
que foi adotada na definigdode componente de Inv. Nos exemplos subsegiientes, usaremos essa notacdo alternativa. Na descrigdo, as palavras em negrito representam palavras reservadas, também conhe-
cidas como palavras -chaves em VHDL. Nio podemos usar palavras reservadas para nomes de entldades arquiteturas, sinais, componentes instanciados, etc., ja que essas palavras tém signifi cados especiais que orientam as ferramentas VHDL na compreensiio das nossas descrigdes. Resumindo, a descri¢io estrutural em VHDL. contém uma entidade que descreve o nome,
as entradas e as safdas do projeto; uma declaracéo de quais componentes serdo usados; uma declaragfio dos sinais internos e, finalmente, o instanciamento de todos 0s componentes, jun‘tamernte com as suas mtfir{_:onexfie?s
-
_
_
Entdo, a entidade que acabamos de definir poderd ser usada como componenteem uma
outra entidade. Verilog
A Fig. 9.5(c) mostra uma descrigio em Verilog do circuito AbridorDePorta da Fig. 9.5(a).
Por conveniéncia, na F:g 9.5(b) mostramos também a descrigio em portugués e a correspondéncia entreas descrigdes em portugués e Verilog. AbridorDePorta
C
R
=
Inv_1
('ai
As emradas fmtemass&o c, he p, que 530 blts A saida extema é f, que & um bit. :
Assumimosque vooé conhece o compoaman: componentes:
.__
Um inversor, que tem um bit x de entrada ey
o1k bit F de Saida,-
Uma porta OR de 2 entradas, que tem os. batsda@trada \ xey, e obitF de saida.
‘Uma porta AND de 2 entradas, que tem os bits de arfiw:la -""""“{ Xey eobitFdesaida.
X
0 circuito tem os fios internos n1 e n2, ambos bits.< 0 circuito Abflthrneficrtamnmsm internamente em:
S
Um inversor de nome Inv_1, cuja entrada x conecta-se & &,R\\.‘. ‘entrada extema ¢ e cuja saida conecta-se a nl. L ‘Uma porta OR de 2 entradase de nome OR2.1, w;aaéntradas ‘conegtam-se as entradasextemas hep, e wja saadncon*ecta-sa )
Umia porta AND de 2 entradas € de nome AND21, cujas.
-
entradas conectam-se anle n2,ecuja sa(da mcm*sea saida Issoétudo, —o oo R e
(b)
(c)
Figura95 Descrigiode um circuito usando uma linguagem textual, ao invés de desenhos: (a) esquemdtico, (b) descrigdo textual em lingua portuguesa e (c) descrigdo textual em linguagem VHDL. As palavras em ne-
grito siio palavras reservadas de Verilog.
468 »
Sistemas Digitais
A descricio comecga definindo moédulos para um inversor Inv, uma porta OR de duas entradas OR2 e uma porta AND de duas entradas AND2. Passaremos por cima da discussio desses mddulos ¢ comecaremos a nossa discussio com a defini¢do do quarto médulo AbridorDePorta. A descrig@o declara um module (modulo) de nome AbriderDePorta. A declaragao de modulo define um nome para o projeto e os nomes de suas entradas e saidas, conhecidas como portas. A declaracio de médulo ndo diz nada sobre as portas ou as partes internas do projeto— apenas o nome e a interface do projeto. A seguir, a descri¢iio define o tipo de cada porta, atribuindo os tipos input (entrada) ¢ output (saida), neste exemplo.
Entdo, a descri¢do inclui uma declaragio para os wires (fios, ou conexées) internos, de nomes nl e n2. Finalmente, a descri¢do faz o instanciamento dos componentes do circuito e define as conexdes desses componentes. No mddulo AbridorDePorta, a descrigdo instancia um componente de nome Inv_I, que é¢ um componente do tipo Inv. As conexdes as entradas ¢ saidas dos componentes instanciados sdo especificadas na ordem em que os médulos dos componentes declaram as entradas e saidas. No instanciamento de /nv_J1, a entrada c € ligada a entrada xdo componente /nv. Em Verilog, o mddulo que instancia um componente néo precisa especifi-
car a interface desse componente. Por exemplo, 0 modulo AbridorDePorta ndo contém uma declaragiio de quais componentes serdo instanciados por ele ou qualquer informacao relativa a esses componentes. Naturalmente, os componentes devem ser definidos em algum outro lugar, possivelmente no inicio desse mesmo arquivo, como estd mostrado na Fig. 9.5(c), ou talvez em algum outro arquivo. Com propdsitos de referéncia, o exemplo mostrado aqui da especificacdes incompletas dos componentes Inv, AND2 e OR2 para que as portas ¢ a interface desses componentes sejam mostradas claramente. Em vez de especificar o comportamento interno desses componentes, simplesmente incluimos um exemplo de um comentério
em Verilog, os quais comegam com *//” e a seguir, no restante da linha, um texto qualquer que queiramos. Na descricdio, as palavras em negrito representam palavras reservadas, também conhecidas como palavras-chaves em Verilog. Nao podemos usar palavras reservadas para nomes de mddulos, portas, fios, componentes instanciados, etc., jd que essas palavras tém significados especiais que orientam as ferramentas de Verilog na compreensio de nossas descrigdes.
Resumindo, a descrigdo estrutural em Verilog inclui um médulo que descreve o nome do projeto, lista as entradas e as saidas do médulo e especifica o tipo de cada entrada e saida, A seguir, inclui uma declaracdo dos fios internos e, finalmente, o instanciamento de todos o0s componentes juntamente com as suas interconexoes.
SystemC A Fig. 9.6(c) mostra uma descricio em SystemC do circuito AbridorDePorta da Fig. 9.6(a).
Por conveniéncia, na Fig. 9.6(b) mostramos também a descri¢io em portugués e a correspondéncia entre as descrigdes em portugués ¢ SystemC., A linguagem SystemC € construida em cima da linguagem de programacido C++, mas niio € necessdrio ser um programador especia-
lista em C++ para usar SystemC. Como resultado, no entanto, € importante ter em mente que hé certas restricGes, como ndo usar palavras chaves de C++ para denominar médulos, portas, sinais, etc. Antes de definir o comportamento do circuito, devemos incluir o comando “#include
"systemc.h"” no inicio de cada arquivo de SystemC. A descri¢do comeca com uma declaragio SC_MODULE (mddule SC), a qual define o nome do projeto, AbridorDePorta, neste caso. Uma declaragdo de médulo nada diz sobre as partes internas do projeto, apenas o nome
Linguagens de Descrigao de Hardware < 469
?*.3
:
FT’ v
AbridorDePorta Inv_1
A.s aniradasemmas sdoc, he P que sa0 bits. A saida externa é f, que é um bit. =7 Assumimos que vocé conhece o comportamento desse mpfinéntes: Um inversor, que tem um bit x de entrada e um bitF de saida.
‘Uma porta OR de zentradas,que tem os bits de entradax ey, e 0 _bit F de saida..
e
Uma porta AND d& 2 entradas, que tem os bits de entradax e v, e o bit F de saida. :
0 circuito tem os fios intemnos n1 a-n?,'ambas-hi'ts.- e 0 circuito AbridorDePorta consiste internamente en:
:
Um inversorde nome Inv_1, cuja entrada x conecta-se & P
‘entrada externa c e cu;asafda conecta-seanl. Uma porta OR de 2 entradas e de nome OR2_1, > realiza uma
operagdo de deslocamento 2direita. Blocosde controle e operacional para o medidor de distancia baseadoem laser VHDL A Fig. 9.40 é uma descngfl@ em VHDL do medidor de distancia baseado em laser que foi mostrado na Fig. 5.19. A entidade denominada MedidorDistLaser define as entradas e saidas, mclumdp se um botdo de entrada B apertado pelo usudrio, uma entrada S para o sensor de
Tlaser, uma saida L de controle parao lasere uma saida D de 16 bits paraa distdncia medida. A entidade também define uma entrada de reldgio cik de 300 MHz e uma entrada rs¢de reset para o bloco de controle de projeto. A arquitetura do MedidorDistLaser descreve estruturalmente as conexdes dos componentes correspondentes ao blocos de controle e operacional. A arquitetura instancia dois com-
Linguagens de Descrigio de Hardware < 499
Frgura 9.40
Dmcngfia es-
trutural para a descrigéio de alto nivel em VHDLdo me‘didor de distincia baseado
ponentes. O componente BlocoDeControle_MDL_I ¢ o bloco de controle do medidor de distancia baseado em laser e Biawflperaczmi_MDLI € o bloco eperacmnal desse projeto. ‘A arquitetura conecta as entradas clk, rst, Be S da E:lll:ldadt: s entradas do BiamfieCan— frole_MDL_] e conectaa saida do bloco dfi controle para comandar o laser 2 porta de saidaL mrrespondenm além dlsso, os qaatm Smms Dmg_c!r, Bmg td Dfi‘tr cfr e E‘cfir cn: fazemBiflca{?peramnaf_flffli. I 0 bim:fl aperacmnal‘ dfi Med:d@rl}mrtem uma Gnica salfla : D que fornece a distancia medida ¢ estd conectada a porta de saida D da entidade. A Fig. 9.41 ¢ uma descrigio em VHDL do componenie correspondente ao bloco operacionaldo MedidorDistLaser qr.te foi mostrado na Fig. 5.17. A entidade denominada Bloco‘Operacional_MDL define uma entrada de relégio clk, quatro entradas de controle Dreg_clr, Dreg_ld, Detr_ elre Detr_ent, e uma safda de 16 bits para adlstfinclafl A an;uitetura define trés cflmpnnefltes* a saber, um contader crescente de 16 bits, um
Tegistrador de 16 bits ¢ um deslocador a direita de 16 bits, o qual faz deslocamentos deuma posi¢io 2 direita. O componente ContadorCrescentel6 é um contador crescente de
16 bil.s’, téaii:lfi umafgmtada dé'éfimiolé e’:};t'e u‘ma finfirzifla c!r‘ '(&fe.'::r) p‘éfa jz"s't’;*ii: o t:ontéd-:fr
.D;mfaflmffi é um reg:stradar deslocador a dmena de 16 bits, o qualfaz o deslmamenm
500 > Sistemas Digitais
Fgumfi.fl
Bewng&e-
estrutural em
VHDL.
para o bloco opera-
cional do medidor de
distdncia baseadoem laser.
da entrada I de uma pastqafl a direita e atribui esse valor deslocado & saida §. A mqult& tura instancia um componente ContadorCrescentel6 denominado Detr, um componente Regl6 denominado Dreg ¢ um componerte DeslocadorDireitaliml6 de nome Desloca-
dorDireita. O instanciamento de Detr faz a conexodas entradas Detr_clr e Detr_cnt do bloco operacional com as entradas de controle de clear e de contagem de Dctr. A saida ‘de contagem C de Dctr € entao conectada ao sinal interno Cremp da arquitetura. Assim, 0 =-val;3r da cnntagem écfinectadfi i emrada do ades.lacador De;?m:i@rz)zmm Em segmda Cdesiflcflda o mstanmamfinto d@ rfig:siradm Dreg cacrnceta ascnir.adas dc contrale, para_ Zerar e carregar o registrador, as portas de entrada Dreg_cire Breg Id do bloco operacional. Finalmente, a safda de dados Q do reg:stradoré conectada a saida da distincia medida
D do BlocoOperacional MDL. As Figs. 9.42 e 9.43 siio a descrigio em VHDL da FSM do bloco de controle do medi-
dor de disténcia baseado em raio laser que foi descrita na Fig. 5.21. A entidade denominada BlocoDeControle_ MDL define uma entrada de relégio ¢lk, um sinal rstde reset, um botdo B ‘apertado pelo usudrio, uma entrada § para o sensor de laser e cinco sinais de saida de controle, ‘a saber, L, Dreg_clr, Dreg_Id, Datr* -¢lr e Detr_cnt. A saida L € usada para ligar e desligar
0 laser, sendo queo laser
estd ligado quando L € 1.
‘Os quatro outros sinais
de saida sdo usados para controlar os componentes ‘do bloco operacional do
projeto RTL. A
arquitetura VHDL
descreve o comportamento da entidade. De forma semelhante 3 do projeto do bloco de controle mostrado na Fig,
9.22, a arquitetura consiste em dois proces$0s, um que modela o registrador de estado e
‘outro que modela a 16gica combinacional. O
processo do registrador de estado denominado
regestado é sensivel as entradas cik e rst. Se rst estiver _habfllrada entdo
0 processo atribuird assincronicamente o estado ‘inicial S0 da FSMao sinal estadoatual. Em caso ‘contrério, se o reldgio estiver subindo, o processo atvalizard o regtstrador de estado com o préximo estado. O segundo processo ‘denominado logicacomb & sensivel s entradas da
l6gica combinacional
fifeff afi;&zfififi
Figura9.42 Descrigéio comportamental em VHDL parao bloco de
nas B e 3 A saida esta-
controle do medldmdedifitfim:la baseado em laser.
doatual do mg;sttador de estado. Quando qualquer um desses itens & alterado, o processo atribui valores prépnfls do estado atual 3s saidas da FSM, que neste caso sdo L, Dreg_clr, Dreg_id, Detr_clr ¢ Detr_ent. No exemplo do bloco de controle da Fig. 9.22, a safda x da FSM foi definida dentro do comando case para todos os estados possiveis. Com cinco saidas ‘que devem ser definidas pelo BlocoDeControle_MDL¢ cinco estados possiveis, a atribuigio ‘dos valores a todas as saidas de cada estado seria trabalhoso. Além disso, a localizagiio de ‘um erro ¢ a realizagio de corregSes ou modificagdes no bloco de controle iria se tornar muito .d.lficll em médquinas FSM maiores que consistissem em mais estados e que tivessem muito mais saidas. D Processo Ivgwammb usa uma aharéagem dxferente. Primeiro, atribuem-se valores iniciais as saidas e posteriormente atribuem -se somente vaIores ‘que forem diferentes
502 » Sistemas Digitais desses iniciais. O processo atribui primeiro um valor inicial 0 a todas as cinco saidas. A seguir,
O processo dete:mma o estado
atual e atribui valores as saidas somente quando elas devem ser
1. O processo também atribui o valor 0 a diversos sinais dentro do comando when (quando). No ‘entanto, essas atribuigdes foram
incluidas apenas para indicar claramente o comportamento do blm de controle (elas sdo re-
dundantes, mas ajudam a tornar a descrigdo mais f4cil de ser entendida).
Com base no estado atual ¢ n0os valores das entradas Be 5,0
Figura 943 Descrigdo comportamental em VHDL para o bloco de controledo medidor de distincia baseado em laser’
processo também determina qual
{canfmuagaa).
deverd ser o préximo estado. Na. préx:ma borda de subida do Telégm o registrador de estado serd carregado pelo processo do ador de estado com o valor do préx.lmo estadoi Venlog A Fig. 944éumadescr1¢do em V,enlug do medi-
dor de distincia baseado em laser que foi mostrado na Fig. 5.19. O médulo ‘denominado MedidorDistLaser define as entradas ¢ saidas, incluindo-se um
botdo de entrada B apertado pelo usudrio, uma ‘entrada § para o sensor de
laser, uma saida L de controle para o laser e uma saida D de 16 bits paraa distancia medida. O md-
Figura944 Descrigio estrutural para a descrigfio de alto nivel em Verilog para o medidorde distincia baseado em laser:
dulo também define uma
‘entrada de relégio clk de 300 MHz e uma entrada rst de reset para o bloco de controle do projeto.
O MedidorDistLaser descreve estruturalmente as conexdes dos componentes corres-
‘pondentes aos blocos de controle & operacional. O médulo instancia dois componentes. (6] componente BlocoDeControle_MDL_1 € o bloco de controle do medidor de distdncia baseado em laser e Bfpcaaparfmonal_MDL 1 é o bloco operacional desse projeto.A arquitetura conecta as entradas clk, rst, B e S do médulo as entradas do BIacaDeControle. MDL_1 e conecta a saida de eomando para o laser do bloco de cont:role A porta de ‘safda L correspondente. Além disso, os quatm fios internos Dreg_cir, Dmg_td Detr_cire
Dctr_cnt fazem a conexdo entre os quatro sinais de controle do bloco de controle e as
Linguagens de Descrigdo de Hardware < 503
quatro entradas do BlocoOperacional_MDL_I. O bloce operacional de MedidorDistLaser tem uma linica saida D que fornece a distAncia medida e estd conectada A porta de
saida D da entidade. A Fig, 9.45 ¢ uma descri¢do em Verilog do com-
‘ponente correspondente ‘ao bloco operacional de MedidorDistLaser, que foimostrado na Fig. 5.17. O médulo, denominado BlocoOperacional MDL, define uma entrada de relGgio clk, quatro entradas de con-
trole, Dreg_clr, Hreg_ Detr_clr e Detr_cnt, ¢ uma
‘safda para a distdncia D de 16 bits. O bloco operacional consiste em trés componentes, um contador cres-
cente de 16 bits, um re-
.glst*fader de 16 bits e um 'deslocador a dlreJta de 16 bits que faz deslocamentos ‘de uma posicio i direita.
O componente ContadorCrescentel6 é um contador crescente de 16 bits,
tendo uma entrada de con-
trole cnt e uma entradaclr (clear) para zerar o conta-
dor. O componente Reg/6 ¢ um registrador de carga
paralela de 16 bits, tendo
Figura9.45 Descrigo estrutural em Verilog para o bloco opera-
cional do medidor de distancia baseado em laser.
um sinal de controle Id para carregaro registradore um sinal clr para zerar o registrador. O componente DeslocadorDireitallml6 é um registrador deslocador a direita de 16 bits
que faz o deslocamento da entrada I de uma posigiio a direita ¢ atribui o valor deslocado a saida S. O médulo do bloco operacional instancia ym componente ‘denominado Detr, um componente Regl6 denominado Dreg € um dorDireitalml6 de nome DeslocadorDireita. O médulo conecta Detr_cnt do bloco epm'amflnal as cntradas de controle de clear e
ContadorCrescentel6 componente Deslocaas entradas Detr_clr e de contagem de Dectr,
respectivamente. A saida de. conlagem C do contador € entdo llgada ao fio interno Ctemp
‘de 16 bits Assim, o valor da contagem é conectado & entrada do deslocador DeslocadorDi-
reita. Em seguida, a contagem deslocada € conectadaa entrada do registrador Dreg usando o fio interno Cdeslocado de 16 bits. O médulo conecta as entradasde controle clear e Dreg
de carga do registrador as portas de entrada Dreg_clr e Dreg_ld do bloco operacional. Finalmente, a saida de dados Q do registrador€ conectada a saida da distincia medida D do
BIamGper&maflaLMDL As Figs. 9.46 e 9.47 siio a descri¢dio em Verilogda FSM do bloco de controle para o medidor de distancia baseadn em raio laser, que foi descrita na Fig. 5.21. O médulo denominado
504 » Sistemas Digitais
BlocoDeControle_MDL defin uma entrada e de rel6 gio clk, um sinal rst de reset, um botdo B ‘apertado pelo usudrio, uma entradaS para o sensor de laser e cinco sinais de saida de controle, 53 saber, L, Dreg_clr, Dreg_!d Detr elre Detr_ent. A saida L € usada para. ligar e desligar o
laser, sendo que o laser estd ligado quando Lé1.0s quatro outros sinais de saida sdo usados para controlar os componentes do bloco aperamonal do projeto RTL.
Figura 9.46
Descri-
¢lio efimpartamemal em
Vea‘:lag
para
o
‘bloco de controle d@ ‘medidor de distincia ‘baseado em laser.
O médulo em Verilog descreve o
compor
DeControle_
forma semelhante & do projeto do bloco de con{mie momdfi naFxg 9«23 o mfidulo consiste em dois procedimentos, um que modela o registrador de estado e outro que modela a 16gica 'de controle da FSM. O procedimento do registrador de estado ¢ sensivel s bordas positivas
das entradas rst de reset e clk de relégio. Se a entrada rst estiver habilitada, entfio o procedi-
méfitfi'fltfifilfii‘éfis'sififi‘éflitfifiéflfe' b"é@tfiflfi"ifiiéial‘ S0da 'FSM'a"fi Siii‘al' estado zitual : Em caso
;-:ra pmx:rmn flst&fio ;
Linguagens de Descrigao de Hardware < 505 O segundo procedimento & sensivel as entradas da légica
combinacional da Fig. 5. 21, es_peclficamente, as entradas externas B e S, e & saida estadoatual do registrador de estado. Quando
qualquer um desses itens € alte‘rado, o procedimento atribui va-
lores, préprios do estado atual, as safdas da FSM, neste caso, L, Dreg_clr, Dreg_ld, Dctr_clr e Detr_cnt, No exemplo de bloco de controle da Fig. 9.22, a safda
x da FSM ¢ definida dentro do comando case para cada um dos estados possiveis. Com cinco saidas que devem ser definidas ‘pelo BlocoDeControle_MDL e cinco estados possiveis, a atri-
‘buicdo dos valores a todas as saidas de cada estado seria trabalhoso. Além disso, a 1ucallza— gaodeumerroeareahx&q&gde
corregdes ou modificacbes den‘tro do bloco de controle iria se
tornar muito dificilem méquinas FSM maiores que consistissem
Figura 9.47 Descrigio comportamental em Verilog para
o blocode controledo medidorde distancia baseadoem laser (continuagéo).
‘em mais estados e tivessem muito mais saidas. Ao invés disso, 0 procedimento usa uma abordagem diferente. Primeiro, atribuem-s¢ valores iniciais a todas as saidas € posteriormente atribuem-se somente 0s valoms que forem diferentes desses iniciais. O procedi-
mento atribui primeiro um valor. inicial 0 a todas as cinco safdas A seguir, determina o estado atual e atribui valores as saidas somente quando elas devem ser 1. Dentro do comando ‘case (caso), 0 procedimento também atribui o valor 0 a diversos sinais. No entanto, essas atribuigtes foram inclufdas somente para poder indicar claramente o comportamento do blaco de controle (elas sdo redundantes, mas ajudam a tornar a descrigiio mais facil de ser
entendida), Com base no estado atual ¢ nos valores das entradas B ¢ S, o procedimento também determina qual deverd ser o préxlmfl ‘estado. Na préxima borda de subida do relégio, o
registrador de estado € carregado com o proximo estado pelo procedimento do registrador de estado,
506 » Sistemas Digitais SystemC
A Fig. 9.48 é uma descrigio em &ystemC do
medidor
de distncia
baseado em
laser que
foi mostrado na Fig. 5.19. O médulo deno-
minado MedidorDistLaser define as entradas e saidas, incluindo
‘um botiio de entrada B apertado pelo usudrio,
uma entrada § do sensor ‘de laser, uma saida L de
controle do laser ¢ uma saida D de 16 bits para a distancia medida. O médulo também define uma entrada de rel6gio clk de 300 MHz e uma ‘entrada rst de reset para
© blocode controle de
projeto.
O MedidorDistLaser descreve estruturalmente as conexdes dos componentes
corres-
pondentes aos blocos de ‘controle ¢ operacional. A arquitetura instancia dois componentes. O
componente BlocoDe-
Controle
MDL_I ¢ o
bloce de controle do
Sys‘temc.fla.mgd[dar de distaricia basefidn.em. laser.
medidor de distancia baseado em laser e BlocoOperacional MDL_I é o bloco operacional desse projeto. O médula conecta as entradas clk, rst, B e § do médulo as entradas do
BIm:aDfiCon.fmIe_MDL 1 ¢ conecta a safda de ‘comando ¢de laser do bloco de controle %.. porta de saida L correspondente. Além disso, os quatro fios internos Dreg_clr, Dreg_ld, Detr_clre Dctr_cnt fazem a conexdo entre 0s quatro sinais de controle do bloco de con-
trole e as quatro entradas do Bloca@pemeiamffifl[. 1. O bloco operacional do MedidorDistLaser tem uma tnica saida D que fornecea distincia medida e est4 conectada a porta de safda D da entidade.
Linguagens de Descrig@o de Hardware < 507
A Fig. 9.49 € uma descri¢do em SystemC do componente cor-
respondente ao bloco operacional de M:darflml.eawr, como foi mostrado na Fig. 5.17. O m_odulo
denominado BlocoOperacional _ MDL define uma entrada de re16gio clk, quatro entradas de controle Dreg_clr, Dreg_ld, Detr_clr
e Detr_cnt, & uma saida D de 16
bits da distancia.
O bloco operacional consiste
‘em trés componentes, a saber, um
contador crescente de 16 bits, um registrador de 16 bits € um deslo-
cador & direita de 16 bits o qual efetua deslocamentos de uma posi¢io a direita. O componente ContadorCrescentel6 ¢ um con-
tador crescente de 16 bits, tendo uma entrada de controle cnt € uma entrada elr (clear) para zerar o .-cqntador ‘O componente Rggf 6
€ um registrador de carga para-
lela de 16 bits, tendo um sinal de ‘controle Id para carregar o régis-
‘trador e um sinal ¢lr para zerar o registrador. O componente DeslocadorDireitalUml6 é um regis-
trador deslocador a direita de 16 blts que faz o deslocamenta de uma posigdo & direita da entrada I e atribui o valor deslocado 2 saida 8. O médulo do bloco operacional instancia um componente Conta-
Figura 9.49 Descrigdo estrutural em SystemC para o bloco operaemnal do medidor de disténcia baseado em laser.
dorCrescentel6 denominado Detr, um componente R&gfli denominado Dreg e um compo-
nente DeslocadorDireitalm16 de nome DeslocadorDireita. O médulo conecta as entradas
Detr_cire Detr_cnt do bloco operacional s entradas de controle de clear e de contagem de Detr, respectivamente. A saida de contagem C do contador € entdio conectada ao fio interno
C’I‘emp de 16 bits. Assim, o valor da contagem € cadorDireita. Em segunda, a contagem deslocada por meio do sinal interno Cdeslocado. O médulo de carga do registrador Dreg as portas de entrada
conectado a entrada do deslocador Deslo¢ coneetada 2 entrada do rcglstrador Dreg conecta as entradas de controle de clear e Dreg_clr e Dreg_ld do bloco operacional..
Finalmente, a safda de dados @ do regisu‘ador & conectada 2 safda da distancia medida D do
BlocoOperacional_MDL.
508 » Sistemas Digitais As Flgs 9.50¢9.51 sioa descflgfia em Sys;gmf:da FSM do bloco de l?ontr(flfi do medidor de distAncia baseado em raio laser, que foi descrita na Fig. 5.21. O médulo denominado .BiaeufleCantmie_MDL tem uma entrada de rel6gio clk, um smal rst de reset, um botdo B
-fiapertada pelo usudrio, uma entrada § do sensor de laser e cinco sinais de saida de cnntmie, istoé, L, Dreg clr, Dreg_ld, Detr —clre Detr_cnt. A saida L é usada para lngar e des’l:gar o 1aser, sendo que o laser estd ligado quando L ¢ 1. Os quatro outros sinais de saida sio usados para controlar os componentes do bloco flperaemnaldfi projeto RTL.
Figura 950
Descri-
¢do comportamental em Systemc do bloco de controle do medidor de distancia baseado ‘em laser.
O médulo em SystemC descreve o comportamento da FSM do BlocoDeControle_MDL. De forma semelhantea do projeto do bloco de controle mostrado na Fig. 9.24, o médulo con-siste em dois processos, um que modela o registrador de estado e outro que modela a légma de controle da FSM. O processo denominado regestado do registrador de estado € sensivel as
bordas positivas das entradas de reset rst e de relégio clk. Se a entrada rst estiver habilitada, entfio 0 processo atribuird assincronicamente o estado inicial SO da FSM ao sinal estadoatual.
Linguagens de Descrigdo de Hardware < 509
Em caso contrério, na borda positiva do rel6gio, o processo atualizard o registrador de estado com o proximoestado. 0 segundo processo, de nome logicacomb, é sensfve] as entradas da léglca combina-
cional da Fig. 5.21, especificamente, as entradas externas B e § e a saida estadoatual do registrador de estado. Quando qualquer um desses sinais € alterado, o processo atribui ‘valores, préprios do estado atual, 4s saidas da FSM, neste caso, L, Dreg_clr, Dreg_ ic% Dectr elr e Detr_cnt. No exemplo do bloco de controleda Fig. 9. 24, a saida x da FSM foi definida dentro do comando case para todos os estados possiveis. Com cinco saidas que devem ser definidas pelo BlocoDeControle_MDL e cinco estados possiveis, a atribuigio dos valores a todas as safdas de cada estado seria trabalhoso. Além disso, a localizagdo de um erroe a realizagdo de corregdes ou ‘modificagdes no bloco de controle iria se tornar muito dificil em miquinas FSM maiores consistindo em mais estados e tendo muito mais safdas, Ao invés disso, o processo usa uma abordagem diferente. Primeiro atribuem-se valores iniciais a todas as saidas e postenormenie atribuem-se somente os valoms que fm‘cm
diferentes desses iniciais. O processo atribui primeiro um valor inicial 0 a todas as cinco saidas. A seguir, o processo determina o estado atual e atribui valores as saidas somente quando elas devem ser 1. O processo também atribui o valor 0 a diversos sinais dentro do comando case. No entanto, essas atribui¢des foram incluidas apenas para indicar claramente o comportamento do bloco de controle (elas sio redundantes, mas ajudam a tornar ‘a descricio mais ficil de ser entendida).
Figura 951
Descri-
¢io comportamen-
tal em SystemC do ‘medidor de
distén-
cia baseado em laser (continuacdo). O processo | também determina qual deverd ser o proximo estado, com base no estado atual ‘e nos valores das entradas Be §. O préximo estado serd carregado no. registrador de estado
pelo processo do registrador de estado na proxima borda de subida do relégio.
510 » Sistemas Digitais
» 96
RESUMO DO CAPITULOD Neste capitulo, dissemos que as linguagens de descrigdo de hardware (HDLS) sdo largamente usadas no projeto digital moderno. Demos breves introdugtes a diversas HDLs amplamente usadas, especificamente, VHDL, Verilog e SystemC. Basicamente, introduzimos essas HDLs pelo uso de exemplos, ilustrando como cada HDL pode ser usada para descrever l6gica combinacional, 16gica seqiiencial, componentes de bloco operacional e também o comportamento e a estrutura RTL. Para se tornar proficiente no uso de HDLs, pode ser qtil o estudo mais -completo de uma HDL em particular. Este capitulo ilustra também o ponto de que HDLs diferentes t€m diversos atributos em comum.
» 97
EXERCICIOS Os seguintes exercicios podem feitos usando qualquer uma das HDLs descritas neste capitulo.
SECAO 9.2: DESCRICAO DE LOGICA COMBINACIONAL USANDO LINGUAGENS DE DESCRICAO DE HARDWARE 9.1 Para o display descrito no Exemplo 2.23, crie a descrigdo estrutural em HDL do conversor de nimero bindrio em sete segmentos, 0 qual consiste em portas légicas simples, isto €, v, AND2 e
OR2. Assegure-se de incluir as descri¢ies comportamentais combinacionais para as portas 16gicas simples.
9.2 Em HDL, crie descri¢bes comportamentais combinacionais para cada uma das portas 16gicas de duas entradas seguintes, em que cada uma tem duas entradas a € b, e uma tnica saida F.
(a) (b) (c) (d)
NAND2 NOR2 XOR2 XNOR2
9.3 (a) Crie uma descrigdo comportamental combinacional em HDL para ¢ detector de um padrio composto por trés. 1s 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¢do comportamental combinacional em HDL para o contador do nimero de 1s mostrado na Fig. 2.41, descrevendo o comportamento combinacional de ambas as safdas xe y
na forma de uma soma de mintermos. (b) Crie uma bancada de teste para verificar se a sua descrigdo funcionou apropriadamente.
9.5 Crie uma descrigdo 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 descrigOes (a mesma bancada de teste pode
testar qualquer uma das descrigoes). 9.6 Crie uma descrigio em HDL para o multiplexador 4x1 descrito na Fig. 2.55, na forma de; (a) comportamento combinacional, (b) estrutura.
(¢) Crie uma bancada de teste para verificar as duas descrigdes (a mesma bancada de teste pode
testar qualguer uma das descrigoes).
Linguagens de Descrigdo de Hardware < 511
9.7 Crie vma descri¢iio comportamental em HDL para o
A
multiplexador 2x1 descrito na Fig. 2.54. A seguir, crie
| 2x1
uma descrigio estrutural em HDL que combina trés
10
i0
multiplexadores 2x1 para criar um multiplexador 4x1
1.
i
4
como estd mostrado na Fig. 9.52.
s0
9.8 Crie uma descri¢do comportamental combinacional
]
em HDL para um multiplexador 4x1 de oito bits. As-
;
= i
0 T4
9.9 Explique claramente qual € a diferenca entre uma des-
i3
L
cri¢ao estrutural em HDL e uma descri¢ao compor-
d
d
i
segure-se de especificaras portas de entrada e saida do projeto usando um tipo de dados com mutitiplos bits.
tamental em HDL. Explique os beneficios de se usar
.02"1
—/_
s0
s0 —+
ambos 0s tipos de descrigo.
s
9.10 Explique por que a lista de sensitividade de uma des-
Il)
s
J
crigio comportamental combinacional em HDL deve
Figura 952
incluir todas as entradas do circuito combinacional. Em particular, explique porque,na realidade, a omissdo de uma entrada descreve um circuito seqiiencial.
posto por trés multiplexadores 2x1.
Multiplexador 4x1 com-
9.11 Crie uma descri¢io comportamental em HDL para um codificador 16x4 com prioridade. Esse codificador tem 16 entradas, d15, d14,..., dI, d0, € quatro saidas, e3, 2, el, €0, A saida do codifi-
cador com prioridade fornece um nimero bindrio de quatro bits indicando qual das 16 entradas € um 1. Se houver mais de uma entrada em 1, o cedificador com prioridade dard o ntimero bindric
correspondente & entrada numerada com o valor mais alto.
SEGAO 9.3: DESCRIGAO DE LOGICA SEQUENCIAL USANDO LINGUAGENS DE DESCRIGAO
DE HARDWARE
9.12 (a) Crie uma descriciio comportamental em HDL de um registrador de carga paralela de 32 bits. (b) Crie uma bancada de teste para testar a descrigio,
9.13 (a) Crie uma descrigdo 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 descrigio. 9,14 (a) Crie uma descricao comportamental em HDL para o sincronizador de aperto de botfio que foi
descrito na Fig. 3.53. (b) Crie'uma bancada de teste para testar a descricio. 9.15 (a) Crie uma descri¢io comportamental em HDL para o bloco de controle da chave de carro segura, como foi descrito nas Figs. 3.57 e 3.58.
(b) Crie uma bancada de teste para testar a descrigio.
SECAQ 9.4: DESCRICAD DE COMPONENTES DE BLOCO OPERACIONAL USANDO LINGUAGENS DE DESCRICAODE HARDWARE 9.16 (a) Crie uma descricio 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 descrigéo.
9.17 (a) Crie uma descri¢io comportamental em HDL de um registrador de carga paralela de oito bits. Ele tem uma entrada de clear em nivel baixo (low), de nome cir_[, e uma entrada de set em nivel alto (high), de nome ser_h. Quando a entrada clr_{ € 1, 0s conteiidos do registrador devem ser zerados tornando-se “00000000”. Quando a entrada set k€ 1, 08 contetidos do registrador devem se tornar “11111111”, Se ambas as entradas forem 1, a entrada clear em nivel baixo tem a prioridade. (b) Crie uma bancada de teste para testar a descricao.
B
| ;:';g_“
9.18 Crie uma descricio comportamental em HDL para um registrador de oito bits com duas entradas de controle s e 5] que tem o comportamento de controle descrito na Fig. 9.53
i — R
512 » Sistemas Digitais
T
&
9.19 Crie uma descrigfo estrutural em HDL para um meio B
somador.
9.20 Crie uma descricéo estrutural em HDL para um so-
mador com propagacfio de “vai um” (carry-ripple
adder) de quatro bits sem a entrada de “vem um”,
Figura 853
T i EASRR
APt
&
nlolie
Tabela de operagdo do re-
gisyrador de oito bits do Exercicio 9.18. _
Primeiro, crie uma descrigiio comportamental de um somador completo e, entdo, use o compo-
nente somador completo na sua descri¢iio do somador com propagagio de “vai um”. 9.21 Crie uma descri¢do comportamental em HDL para o conversor aproximado de graus Celsius em
Fahrenheit, como descrito na Fig. 4.40, 9.22 Crie uma descricio comportamental em HDL para o conversor aproximade de graus Fahrenheit em Celsius, usando a seguinte aproximacdo para a conversiio: C = (F = 32)/2. 9.23 (a) Crie uma descri¢cio comportamental em HDL para um comparador de um bit.
(b) Crie uma descri¢ao estrutural em HDL para um comparador de quatro bits, usando comparadores de um bit. 9.24 Crie uma descricio comportamental em HDL para um comparador de igualdade de 32 bits com trés entradas de ocito bitsa, bec. 9.25 Crie uma descrigfo estrutural em HDL para o contador crescente/decrescente de quatro bits que foi descrito na Fig. 4.55. Assegure-se de criar primeiro uma descricdo comportamental em HDL
para cada componente usado no seu projeto estrutural em HDL. 9.26 Cric uma descricdo estrutural em HDL para um contador decrescentede quatro bits com carga paralela. Assegure-se de criar primeiro uma descri¢io comportamental em HDL para cada com-
ponente usado no seu projeto estrutural em HDL. 9.27 Crie uma descric¢io estrutural em HDL. para o conversor de RGB para CMYK que foi descrito na Fig. 4.68. Assegure-se de criar primeiro uma descrigdo comportamental em HDL para cada componente usado no seu projeto estrutural em HDL.
9.28 Crie uma descricfio estrutural em HDL para um conversor de CMYK para RGB. Sugestdo: Use a informac@o apresentada no Exemplo 4.20, que descreve o conversor de RGB para CMYK, para ajudd-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 descricdo comportamental em HDL para cada componente usado no sen projeto estrutural em HDL.,
SECAO 9.5: PROJETO RTL USANDO LINGUAGENS DE DESCRICAO DE HARDWARE 9.30 Crie uma descri¢io comportamental em HDL para a mdquina de estados de alto nivel da interface de barramento simples que foi mostrado na Fig. 5.24, 9.31 Crie uma descri¢do estrutural em HDL para os blacos de controle e operacional da interface de barramento simples, como mostrado na Fig. 5.26. 9.32 Crie uma descri¢do comportamental em HDL da mdquina de estados de alto nivel do componente para a soma de diferencas absolutas, como mostrado na Fig. 5.29. 9.33 Crie uma descri¢io estrutural em HDL para o projeto dos blocos de controle e operacional do componente que fornece a soma de diferencgas-absolutas, como mostrado na Fig. 5.30. 9.34 Crie um projeto RTL para um circuite medidor de tempo de reagdo que mede o tempo decorrido entre o acendimento de uma lampada e o pressionamento de um botde por uma pessoa. O medidor do tempo de reagfo tem trés entradas, uma entrada clk de rel6gio, uma entrada rst de reser e
um botdo de entrada B. Também tem trés safdas, uma saida len de habilitagdo da ldmpada, uma
Linguagens de Descrigdo de Hardware < 513 saida rrempo de tempo de reagio de dez bits € uma saida lenzo para mmr;ar que o usudrio ndo foi rapido o suficiente. O temporizador de refi@o trabalha da seguinte maneira. Durante o rese, o ‘medidor espera 2 segundos antes de acender a 1ampada fazendo len ser 1. A seguir, o medidordo tempo de reagdo mede o intervalo de tempfidecflmdo em milissegundos até o usudrio pressionar
o botdo B, fornecendo o tempo na saida riempo como um niimero bindrio de. 10 bits. Se o usudrio. ndo pressionar o botdo dentro de 1 segundo (1000 milissegundos), o medidor ird ativar a saida
Ienm mmando-a 1 e cnl-acando 1000 na saj'da riempo. flssuma uma t’reqfiénma de 1 kHz (a)
-Cflnva.na a méquina de e.sui.d.nfida altq .ni.v%! _s%-,n uma,d@scmfi.fi em HDL flos ‘blocos .#.e c.ammla -_ € operacional,
9.35 Comegando com a descrigiio em C mostrada na Fig. 9.54, crie um projeto RTL para uma ‘calculadora de maximo divisor comum (MDC) que toma t como entrada duas entradas a ¢ b de 16 bits, uma entrada de habilitagdo comece ¢ uma saida Dde 16 bits. Quando comece é “1’,a calculadora de MDC computa o méximo divisor comum e colocao MDC na saida D. Usando ‘uma HDL, inicie com uma méquina de estados de alto nivel e, entdo, crie uma implementagdo com bloco operacmnal bloco de controle e todos 0s seus componentes internos descritos em: HDL.
Figura 954 Descrigiio de uma calculadora usando um programa emC.
B> A Algebras Booleanas Este apéndice é reproduzido com permissdo do livro “Introduction to Digital Systems”
de autoria de Ercegovac, Lang e Moreno, ISBN 0-471-52799-8, John Wiley and Sons Editores, 1999.
As algebras booleanas sdo uma classe importante das dlgebras, que t€m sido estudadas e
usadas extensamente para muitos propdsitos (veja a Segio A.5). A dlgebra de chaveamento, usada na descri¢io de expressies de chaveamento, discutidas na Se¢do 2.4, € um caso da classe de 4lgebras booleanas. Conseqgllentemente, os teoremas desenvolvidos para as dlgebras booleanas também sfo aplicdveisa dlgebra de chaveamento; sendo assim, elas podem ser usadas para a transformacdo de expressoes de chaveamento. Além disso, certas identidades
da dlgebra booleana so a base para as técnicas gréificas e tabulares usadas para a minimiza¢do de expressies de chaveamento. _ Neste apéndice, apresentaremos a definicdo de dlgebras booleanas, bem como os teoremas que sao liteis para a transformagéo de expressoes booleanas. Mostraremos também a relagéio entre as dlgebras booleanas e de chaveamento; em especial, mostraremos que a dlge-
bra de chaveamento satisfaz os postulados de uma dlgebra booleana. Esbogaremos também outros exemplos das dlgebras booleanas, 0s quais sdo (iteis para um melhor entendimento das propriedades desta classe de dlgebras.
> Al
ALGEBRA BOOLEANA Uma dlgebra booleana ¢ uma n-upla { B, +, X}, em que ® B¢ um conjunto de elementos; s
-+ e X séio operagdes bindrias aplicadas sobre os elementosde B,
que satisfazem os seguintes postulados: Pl: Se a, b € B, entio i
ti+f_?=b+a
il.h axb=bxa Ou seja, + & X sdo comutativos. P2: Se a, b, c € B, entdo
i avr(bxe)=(@+b)x(a+c)
il. ax(b+c)=(axb)+(aXe)
516 » Apéndice A
P3: O conjunto B tem dois elementos de identidade distintos, denotados como 0 e 1, tal que para cada elemento de B i. .
O+a=a+0=a Ixa=ax1l=a
Os elementos 0 ¢ 1 sdo chamados elemento aditivo de identidade ¢ elemento multiplicativo de identidade, respectivamente (estes elementos nio devem ser confundidos com os
nimeros inteiros 0 ¢ 1). P4: Para todo elemento de ¢ € B existe um elemento ¢, chamado complemento de 4, tal que i. a+a’=1 il. axa’'=0 Os simbolos + & X ndo devem ser confundidos com os simbolos de adigio e multiplicagio aritméticos. Porém, por conveniéncia, + e X freqiientemente sao chamados “mais” e “vezes,” e a expressio a + b e a X b sdo chamados “soma” e “produto,” respectivamente, Além disso,
+ e X também sidio chamados “OR” (OU) e “AND” (E), respectivamente. Os elementos do conjunto B sdo chamados constantes. Os simbolos que representam
elementos arbitririos de B sio varidveis. Os sfmbolos a, b ¢ ¢ nos postulados acima sdo varidveis, enguanto que 0 e 1 sdo constantes.
Uma ordem de precedéncia € definida para os operadores: X tem precedéncia sobre +. Portanto os parénteses podem ser eliminados do produto. Além disso, sempre que simbolos simples forem usados para varidveis, o simbolo x podera ser eliminado nos produtos. Por exemplo,
a+ (b x c) pode ser escrito como a + be
> A2
ALGEBRA DE CHAVEAMENTO A algebra de chaveamente € um sistema algébrico usado para descrever fungGes de chaveamento por meio de expressoes de chaveamento. Neste sentido, uma 4dlgebra de chaveamento cumpre 0 mesmo papel para com as fungdes de chaveamento que a dlgebra comum para com as fungdes aritméticas. A dlgebra de chaveamento consiste no conjunto de dois elementos B = {0, 1} e duas ope-
ragoes AND e OR, definidas da seguinte maneira: ANDIO
1
OR
|0
1
0
]0
O
0
|0
1
1
[0
1
1
1
1
Estas operacOes sao usadas para avaliar expressoes de chaveamento, conforme ¢ indicado na Secdo 2.4.
Teorema 1 A dlgebra de chaveamento ¢ uma dlgebra booleana . Prova Mostramos que a dlgebra de chaveamento satisfaz os postulados de uma dlgebra booleana.
Apéndice A < 517
P1: Comutatividade de (+), (X). Isto € mostrado pela inspe¢do das tabelas de operagdo. A propriedade de comutatividade se sustenta se uma tabela for simétrica em relagdo A diagonal principal. P2: Distributividade de (+), (x). Mostrada por induciio perfeita, ou seja, considerando todos os valores possiveis para os elementos a, & e ¢. Considere a seguinte tabela: abc
|a+bc | (@+b)a+c)
000
0
0
001
0
0
010
0
0
011
1
1
100
1
1
101
1
1
110
1
1
111
1
1
Uma vez que a + bec = (a + b){(a + c) para todos o0s casos, P2(i) € satisfeita. Uma prova similar mostra que P2(ii) também ¢ satisfeita. P3; Existéncia de elemento de identidade aditivo e multiplicativo. A partir das tabelas de operagao
0+1=1+0=1 Portanto, 0 € o elemento de identidade aditive. Similarmente, O0x1=1x0=0
de forma que 1 € o elemento de identidade multiplicativo. P4: Existéncia do complemento. Por indugio perfeita: ala’
|la+a’|axa 0
01
1
0
1
0
Conseqiientemente, 1 é o complemento de 0 e 0 € o complementode 1. Uma vez que todos os postulados siio satisfeitos, a dlgebra de chaveamento é uma dlgebra booleana. Em conseqiiéncia, todos0s teoremas verdadeiros para as dlgebras booleanas também sdo verdadeiros para a dlgebra de chaveamento.
» A3
TEOREMAS IMPORTANTES NA ALGEBRA BOOLEANA Apresentaremos, agora, alguns teoremas importantes na dlgebra booleana; estes teoremas
podem ser aplicados a transformacao de expressdes de chaveamento.
518 » Apéndice A
Teorema2
Principio da Dualidade
Toda identidade algébrica dedutivel dos postulados de uma 4dlgebra booleana permanece va-
lida se ®
as operagOes + e X sdo intercambiadas entre si em toda a expressdo; e
+
os elementos de identidade 0 e 1 também séo intercambiados entre si em toda a express80.
Prova A prova decorre imediatamente do fato de que, para cada um dos postulados, hd um outro (o dual) que € obtido intercambiando-se + ¢ X, bem como Oe 1. Este teorema € 1til porque ele reduz o nimero de diferentes teoremas que devem ser provados: todo teorema tem seu dual.
Teorema 3 Todo elemento de B tem um complemento inico. Prova Admitamos que a € b; vamos supor que @', ¢ a’, sejam ambos complementos de a.
Entao, usando os postulados, podemos realizar as seguintes transformagdes: ol
=ali%d
por P3(ii)
(identidade)
=a'\x(a+a’)
por hipétese
(a’; 6 o complemento de a)
;Xa,
porP2(i)
(distributividade)
+d Xd;
porPl(ii)
(comutatividade)
=0+a'\xd,;
por hipétese
(a’, ¢ 0 complemento de a)
=
por P3(i)
(identidade)
=g\ Xa+a
=aXd
R,
Mudando o indice 1 por 2 e vice-versa, e repetindo todos os passos para ¢’,, obtemos a
T s
a
2xa
’
1
=a'; xa'y por P1(ii) g, portanto, a,=4a,. A unicidade do complemento de um elemento permite considerar * como uma operagio bindria chamada complementagao.
Teorema 4 Para qualquer a € B: Tl.a+l1=1 2.ax0=0
Prova Usando os postulados, podemos realizar as seguintes transformacoes:
Apéndice A B.1
INTRODUCAD No Capitulo 1, introduzimos o conceito de nimeros bindrios ou de base dois. Mostramos como pode-se converter um nimero decimal para bindrio usando o métedo da subtragae ou o método da divisao por doeis. Entretanto, os niimeros que usamos em projeto digital nem sempre podem ser representados como ndmeros inteiros.
Considere um médico que usa um termdmetro auricular® que funciona em graus Celsius para verificar se a temperatura corporal de um paciente estd normal. Sabemos que a temperatura corporal normal de uma pessoa € 37 graus Celsius (98,6 graus Fahrenheit). Se o sensor de temperatura do termémetro fornecer valores inteiros, entdo uma leitura de 37 graus Celsius corresponderd a uma temperatura real que pode ser qualguer uma entre 36,5 ¢ 37,4 graus Celsius, assumindo que o sensor de temperatura faz um arredondamento para o inteiro mais proximo. Esta claro que um termdmetro que trabalha desse modo serd de pouca utilidade para um médico, porque ele precisa de temperaturas mais precisas para poder afirmar se a tempe-
ratura de um paciente estd fora do normal. Uma leitura de 37 graus Celsius pode significar que o paciente tem uma temperatura corporal normal ou que ele esta perto de ter uma febre. Para ser 1til, precisamos que o termOmetro fornega a parte fraciondria da temperatura de modo que o médico possa diferenciar entre 37,0 € 37,9 graus Celsius, por exemplo. Neste apéndice, discutiremos como 0s nimeros reais sao representados em bindrio e quais sao os métodos usados pelos projetistas digitais modernos para trabalhar com niimeros reais.
>
B.2
REPRESENTACAO DE NUMEROS REAIS Assim como, antes de termos passado para a numeracdo bindria, tinhamos olhamos de perto como 0§ nimeros inteiros sao representados na base decimal, podera ser esclarecedor compreender como os ndmeros reais sdo representados na base decimal.
No Capitulo 1, vimos que cada digito de um ndmero tinha um certo peso que era uma poténcia de dez. A casa das unidades tinha um peso igual a 10°= 1, a casa das dezenas, um #N. de T: Um tipo de termdmetro que € inserido no canal auditivo e usado para determinar a temperatura corporal. Essa determinagio ¢ feita medindo-se a temperatura do timpano por meio de um sensor que capta a radiagio infravermelha emitida por
ele sem toci-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 nimero decimal tivesse um 8 na casa das centenas, um 6 na casa das dezenas ¢ um 0 na casa das unidades, poderiamos calcular o valor do nimero multiplicando os digitos pelos seus pesos e somando-os todos: 8¥10° + 6*10' + 0*10” = 860, Como estamos manipulando nimeros decimais a toda hora, esse calculo nos € trivial. O mesmo conceitode pesos para cada digito pode ser estendido a parte fraciondria de
um nimero.
Considere o ndmero decimal
“923,501”. Referimo-nos & virgulas no meio
|
F=
A
FiguraB.1
dos digitos como sendo a virgula decimal, Ela separa a parte fraciondria do nimero da parte
R
AE
e
Representaciio de ndmeros reais
. poce des. '
'
inteira. Ao passo que os pesos dos digitos da parte inteira do nlimero sfo poténcias crescentes de 10, os pesos dos digitos da parte fraciondria sdo poténcias decrescentes de Geralmente a vir10, constituindo assim os pesos dos digitos fracionérios (por exemzplo,: 10" = gula, que é usada para separar a parte
inteira da parte fraciondria do nimero,
€ denominada virgula fraciondria (radix point}, um termo que ¢ aplicdvel a qual-
quer base,
0,le 107 = 0,01 ). Portanto, os digitos 923,501 representam 9%10°
+ 2% 10" +
3%10° + 5%107 + 0*107 + 1#107, como mostrado na Fig. B.1. Os nimeros reais poderdo ser representados de modo simi-
|
E E
lar em binério. No lugar de uma. virgula decimal, os nimeros
Figura B2 Representacio de niimeros reais reais em bindrio apresentam na base dois. uma virgula bindria. Os digitos a direita da virgula binaria recebem Pesos c!Jue, sao poténcias negativas de 2. Por
exemplo, o nimero bindrio 10,1101 ¢ igual a 1#2
+ 002" 4 1%27 4 1%27° 4 0527 4+ 1%27 o
2,8125 em numeraciio decimal, como estd mostrado na Fig. B.2. Agora vocgja deve estar & vontade com as poténcias crescen-
TABELAB.A
tes de dois (1, 2, 4, 8, 16, 32, etc.). Por outro lado, pode ser dificil
de dois
memorizar as poténcias decrescentes de dois. No entanto, elas poderao ser obtidas facilmente se efetuarmos divisdo por 2: 1, 0,5, 0,25, e assim por diante. A Tabela B.1 ilustra essa seqiiéncia. O método da subtragio, que usamos no Capitulo 1 para converter niimeros inteiros decimais para bindrio, também ¢ um método adequado para se converter nimeros reais, sem necessitar de
nenhuma modificac@o a nao ser trabalhar com poténcias negativas S de dois. > EXEMPLO B.1 Conversdo de niimeros reais de decimal para binario usando o método da subtracéo
b0 niimero 5,75 para bindrio inddi usando o método < da subtracio. Converta Para realizar essa conversdo, seguiremos o processo de dois passos discutidos na Secfio 1.2. A conversdo estd detalhada na Fig. B.3.
Poténcias
Poténcia
Valor
37
4 1
2 2’
T
= 1
2!
0.5g
FE
0,25
73
0.125 !
7
0,0625 ’
53
0,03125
Apéndice B B4
REPRESENTACAO EM PONTO FLUTUANTE* Quando trabalhamos com niimeros decimais, freqiientemente representamos nimeros muito pequenos ou muito grandes usando a notagdo cientifica. Em vez de escrever um googol** como um 1 seguido de cem Os, poderemos escrever | 0* 10'". Em vez de 299 792.458 m/s, poderiamos escrever a velocndadc.da luz como 3,0*10" m/s, ou 2_,998*1_0 . ou mesmo 299,8*10°, Se tal notagiio pudesse ser convertida em binario, poderiamos armazenar um intervalo muito maior de niimeros do que se a virgula bindria fosse fixa. Quais caracteristicas dessa
notagao precisariam ser incluidas em uma representacfo binaria?
* M. de T: Aplica-se aqui a mesma observagiio feita anteriormente em relaciio & “aritmética de ponto fixo™. *% N, de T: O matemdtico Edward Kasner popularizou o termo googof em seu livie Marthematics and Imagination deé 1940, Ori-
ginalmente essa palavra tinha sido cunhada pelo seu sobrinho de nove anos. Em 1968, na tradugfio brasileira do livro, o termo “googol aparece traduzido como gugol.
530 » ApéndiceB
Primeiro, a combinacio, chamada de mantissa (ou
#*
o = e L ¢ significando), das partes inteira e fraciondria do niimero
seria multiplicada por uma poténcia de 10, como estd mostrado na Fig. B.§. Nao precisaremos armazenar a parte inteira do nimero se nos assegurarmos de que o nimero estd em um determinado formato. Dizemos que um
nimero escrito em notagio cientifica estd normalizado se
+ 3,010 ——
418
\
\
/ sinal
mantissa
FiguraB8
\ expoente
base
Partes de um nimero
em notagio cientifica.
a parte inteira do ndmero for maior do que zero € menor do que a base. Nos exemplos anteriores envolvendo a velocidade da luz, 3,010" e 2,998*%10" estdo normalizados porque 3 e 2 sdo maiores do que zero, respectivamente, mas inferiores a 10. O némero 299,8*10°, por outro lado, ndo estd normalizado. Se um ndmero real bindrio estiver normalizado, entdo a parte inteira da mantissa s6 pode ser um 1. Para economizar bits, podemaos assumir que a parte inteira da mantissa € 1 e armazenar apenas a parte fraciondria. Segundo, a especificagio da base (algumas vezes chamadas de raiz) e do expoente pelo qual a mantissa seria multiplicada, como estd mostrado na Fig. B.8. Néo € por acaso que a base serd 10 —esse mimero € 0 mesmo da base do nlimero inteiro. Em bindrio, naturalmente,
a base serd 2. Sabendo disso, nao precisamos armazenar o 2. Podemos simplesmente assumir que 2 € a'base e armazenar o expoente. Terceiro, precisariamos obter o sinal do nimero.
0 padrao IEEE 753-1985 O padréo 754-1985 do Institute of Electrical and Electronic Engineers (IEEE) especifica uma forma de se representar os trés valores descritos acima na forma de nimeros binarios de 32 ou 64 bits, referidos como sendo de precisdo simples ou dupla, respectiva-
mente. Embora haja outras formas de se representar niimeros reais, o padrio IEEE & de longe o mais amplamente usado. Referimo-nos a esses niimeros como sendo de ponfo Slutuante*. O bit de sinal serd 0 se o nibit{31]30|29(...| 24|23 22|21(...| 1| 0O mero for positivo ¢ serd 1 se o
ndmero for negativo. Os bits da mantissa sio os bits da parte fra-
sinal FiguraB.9
expoente
mantissa
Disposi¢éo dos bits em um mimerode ponto
ciondria da mantissa do nimero flutuante de 32 bits. original. Por exemplo, se a mantissa for 1,1011, iremos armazenar 1011 seguido de 19 zeros nos bits 22 a 0. Como parte do padrao, somamos 127 ao expoente que armazenamos nos bits de expoente. Portanto, se 0 expoente de um niimero de ponto flutuante for 3, iremos armazenar 130 nos bits de expoente, Se o expoente fosse 30, irfamos armazenar 97 nos bits de expoente. O niimero assim ajustado € chamado expoente ajustado (biased exponent). Bits de expoente contendo s6 0s ou s6 1s t8m significados especiais e ndo podem ser usados. Sob essas condig¢des, o intervalo de expoentes ajustados € de 1 a 254, significando que o intervalo de expoentes nido ajustados € de —126 a 127. Por que ndo -armazenamos simplesmente o expoente na forma de um niimero com sinal, em complemento de dois (discutido na Secgao 4.8)? Porque, com o ajuste de expoentes, circuitos mais simples resultam para comparar as magnitudes (valores absolutos ou médulos) dos dois
ntimeros de ponto flutuante. Quando os contetdos dos bits do expoente sdo uniformes, o padrao IEEE define certos valores especiais. Se os bits dos expoentes forem s6 0s, ocorrerdo duas possibilidades:
# N. de T: Pelas mesmas razies vistas anteriormente para se usar a expressiio “ponto fixe”, aqui dizemos “ponto flutuante” e néio
“yirgula flutuante”.
Apéndice B < 531
1. Quando os bits da mantissa sdo s6 Os, entdo o ndimero todo € zero. 2. Quando os bits da mantissa sdo diferentes de zero, entdo o nimero nio estd normalizado. Isto &, a parte inteira da mantissa € o zero bindrio e ndo a unidade (por exemplo, 0,1011).
Se os bits dos expoentes forem s6 1s, ocorrerdo duas possibilidades: 1. Quando os bits da mantissa sdo s6 0s, entdio o niimero completo € + ou - infinito, dependendo do bit de sinal. 2. Quando os bits da mantissa s@o diferentes de zero, entdo o “niimero” todo € classificado como sendo um “ndo nimero” (NaN, not a number).
Também ha classes especificas de NaNs, que estdo além dos objetivos deste apéndice ¢
que sao usadas em computagdes envolvendo NaNs. Com essas informacdes, podemos converter nimeros reais decimais em nimeros de ponto flutuante. Assumindo-se que o nimero decimal a ser convertido ndo € um dos valores especiais da notagéo de ponto flutuante, a Tabela B.2 descreve como realizar a conversio. TABELAB.2
Métado de conversao de nimeros reais decimais para ponto flutuante Passo
Descrigdo
1
Converta o nimero da base 10 para a base 2.
Use o método descrito na Segio B.2.
2
Converta o niimero para a notagio cientifica normalizada.
Inicialmente multiplique o ndimero por 2", Ajuste a virgula bindria e o expoente de modo que a parte inteira do niimero
seja 1,. 3
Preencha os campos de bits.
Preencha adequadamente usando os bits
de sinal, expoente ajustado ¢ mantissa. > EXEMPLOB.2
Conversao de niimeros reais decimais para ponto flutuante
Converta os seguintes nimeros da forma decimal para ponto flutuante de 32 bits, segundo o padriio IEEE 754: 9.5, infinito e —52406,25 * 107, Vamos seguir o procedimento da Tabela B.2 para converter 9,5 para ponto [lutuante. No passo 1, convertemos 9,5 para bindrio. Usando o método da subtracio, encontramos que 9.5 é 1001,1 em
bindrio. De acordo com o passe 2, para converter o niimero para notag¢do cientifica, multiplicamos o niimero por 2" resultando 1001,1 * 2" (por questdes de legibilidade, escrevemos a parte 2" na base 10). Para normalizar o nimeroc, devemos deslocar a virgula bindria de trés casas. Para néio alterar o valor do ndmero apds o deslocamento da virgula bindria, mudamos o expoente da base 2 para 3. Depois do passo 2, 0 nosso niimero torna-se 1,0011
* 2°,
No passo 3, colocamos tudo junto na seqiiéncia de bits com formato adequado. O bit de sinal ¢ 0, indicando um nidmero positivo. Os bits de expoente sdo 3+127=130 (precisamos ajustar o
expoente) em bindrio e os bits da mantissas séo 0011,, que € a parte fraciondria dela. Lembre-se de que o 1 4 esquerda da virgula bindria estd implicito jd que o ndmero foi normalizado. O nimero adequadamente codificado estd mostrado na Fig. B.10. Agora, vamos converter infinito em um nimero de ponto flutuante. Como infinito € um valor especial, nfio poderemos empregar o método que usamos na conversio de 9,5 para ponto flutuante. Em vez disso, preencheremos os campos de bits com valores especiais para indicar que o niimero ¢ infinito. Da discussio anterior sobre valores especiais, sabemos que todos os bits do expoente
532 » Apéndice B
devem ser 1s e todos os da mantissa devem ser 0s porque o infinito € positivo. Portanto, o nimero de ponto flutvante equivalente € 0 11111111 00000000000000000000000. Usando o método da Tabela
B.2, a conversio de ~52406,25 *
10" para ponto flutuante & imediata.
No passo 1, convertemos 0 nimero
para bindrio. Lembre-se de que,
para representaro sinal do nimero,
usamos um Gnico bit e ndo usamos a representacio em complemento ‘de dois. Assim, precisamos apenas
converter 52406,25 * 10 para bing-
rio e determinar o bit de sinal para
indicar que o nimero € negativo. O
FiguraB.10
nimero 52406,25 * 10™ é o mesmo
ponto flutuante de 32 bits, tendo primeiro os bits mais
que 524,0625. Usando os métodos
Representagdo de 9,5 como um ntimero de
significativos.
da subtragiio ou da divisio por dms
sabemos que 524 € 1000001100 em bin4rio. A parte fraciondria, 0,0625 € 27 convenientemente. Assim, 524,0625 é 10&0{}01100 0001 em bindrio. No passo 2, escrevemos o niimero em notagfio cientifica: 1000001100,0001 * 2°, Para também normalizar0 nimero, devemos deslocar a virgula
bindria 9 posicoes i esquerda e compensar esse deslocamento no expoente: 1,0000011000001 * g Finalmente, combinamos o sinal (que é 1 porque ¢ mimero original € negative), o expoente ajusftadg_{9+2}'_-136) ¢ a parte fraciondria da mantissa, formando o nimero de ponto flutyante: 1 10001000 00000110000010000000000. > EXEMPLO B.3
Conversdo de nameros de ponto flutuante em nimeros decimais
‘Converta o ndmero 11001011101010100000000000000000 da forma de ponto flutuante IEEE
754 de 32 bits para a decimal. Para efetuar essa conversio, decompomos primeiro o niimero em suas partes de sinal, expo‘ente e mantissa: 1 10010111 01010100000000000000000. Imediatamente, podemos ver que o bit de sinal do niimero € negativo. A seguir, convertemos ¢ expoenie de 8 bits e a mantissa de 23 bits de bindrio paraiflecimal Encontramos que 10010111 € 151. Para reverter o ajuste de expoente, subtraimos 127 de 151, dando‘um expoente sem ajuste de 24. Lembre-se de que a mantissa € o padrio de bits ¢que representa a sua parte fraciondria e est4 armazenada sem o 1 inicial da parte inteira da mantissa (assumindo que o ‘niimero original estava normalizado), Restaurando © 1 e acrescentando uma virgula bindria obtemos
o ndmero 1 010101(’1{}00000(}00{)0000[}0 ) que éo ¢ Imesmo numero 1,010101. Aplicando pesos aos
digitos, vemos que 1,010101 = 1¥2°+ 0527 + 127 + 0%27 + 1527 + 0%2°°+ 132 = 1,328125.
Com a obtengdo do sinal, do ‘expoente e da mantissa originais, poderemos combind-los em
um Gnico nimero: 1,327125 * 2%, Rbahzando as multiplicacdes, obtemos -22.265.462,784 que é equivalente a ~2,2265462784 *107.