11.07.2015 Views

Lógica Combinacional Modular e Multi-Níveis - Vision at IME-USP

Lógica Combinacional Modular e Multi-Níveis - Vision at IME-USP

Lógica Combinacional Modular e Multi-Níveis - Vision at IME-USP

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Lógica combinacional modular emulti-níveisÚltima revisão em 8 de junho de 2010.Da mesma forma que funções em programas computacionais são reutilizadas diversas vezes, subcircuitosem circuitos digitais podem ser reutilizadas várias vezes. Do ponto de vista funcional, em ambosos casos, os aspectos dos módulos que realmente interessam são a sua funcionalidade, as suas entradase as saídas.No caso de circuitos digitais, alguns subcircuitos, tais como decodificadores, codificadores, multiplexadorese demultiplexadores, são bastante utilizados em sistemas digitais. Em geral, a realização decircuitos que utiliza módulos tende a ser multi-níveis (mais de dois níveis de portas lógicas). Umaconseqüência imedi<strong>at</strong>a disso é que esses circuitos serão mais lentos que os circuitos dois-níveis. No entanto,além das vantagens decorrentes da modularidade (por exemplo, possibilidade de realizar testespor partes, uma melhor visão da estrutura global, etc), há casos em que uma realização multi-níveisde uma função utiliza menos portas lógicas do que uma realização dois-níveis.Referências:• Hill, F. J. and Peterson, G. R. (1993). Computer Aided Logical Design with Emphasis on VLSI.John Wiley & Sons, fourth edition.• Nelson, V. P., Nagle, H. T., Carroll, B. D., and Irwin, J. D. (1995).Analysis and Design. Prentice-Hall.Digital Logic Circuit1.1 Alguns exemplos iniciaisSomadoresUm exemplo típico da utilização de módulos são os circuitos somadores de números binários vistosanteriormente.A soma de dois números binários é realizada de forma similar à soma de números na base 10, ou seja,os números são somados coluna a coluna, da direita (dígito menos signific<strong>at</strong>ivo) para a esquerda (dígitomais signific<strong>at</strong>ivo). A cada coluna somada, o excedente (vai-um) é enviado para a próxima coluna. Aúnica diferença entre a soma decimal e binária é que os únicos dígitos permitidos no segundo caso sãoo 0 e o 1.A soma dos dígitos binários de uma dada coluna pode ser expressa pela seguinte tabela verdade. Ascolunas a e b representam, respectivamente, os bits a serem somados, c in representa o vai-um vindo1


Nina S. T. Hir<strong>at</strong>a (DCC/<strong>IME</strong>-<strong>USP</strong>) — Notas de aula de MAC0329 (2003∼2010) 2da coluna anterior, a coluna s representa o bit soma e c out o novo bit vai-um.As funções s e c out podem ser expressas pora b c in s c out0 0 0 0 00 0 1 1 00 1 0 1 00 1 1 0 11 0 0 1 01 0 1 0 11 1 0 0 11 1 1 1 1s(a, b, c in ) = (a ⊕ b) ⊕ c inec out (a, b, c in ) = ab + (a ⊕ b)c inEssas funções podem ser realizadas pelo circuito mostrado na figura 1.1. Esse circuito é denominadosomador completo de bits.abcinscoutFigura 1.1: Esquema de um somador completo de bits.Um somador para um número arbitário n de bits pode ser obtido conc<strong>at</strong>enando-se n somadorescompletos de bits, de forma que a saída c out de um módulo alimente a entrada c in do próximo módulo.A figura 1.2 mostra como seria um somador de 4 bits.Ao se conc<strong>at</strong>enar dois somadores de 4 bits é possível obter um somador de 8 bits e assim por diante.Um problema desse tipo de circuito é o tempo de <strong>at</strong>raso de propagação. Observe-que, o valor domódulo seguinte só estará correto após sua entrada c in ter sido alimentada com o valor da saída c outdo módulo anterior. Então, se supormos que o tempo para a propagação do sinal de entrada para asaída em um somador completo de bits é de 8 ns (8 nanosegundos), então o tempo total de <strong>at</strong>raso depropagação em um somador de n bits será de 8 ∗ n ns.


3 Lógica modulars0 s1 s2 s30 c4a0 b0 a1 b1 a2 b2 a3 b3Figura 1.2: Esquema de um somador de 4 bits.Em circuitos críticos como somadores, pode ser conveniente abrirmos mão da modularidade em trocade redução no tempo de <strong>at</strong>raso de propagação. Uma forma altern<strong>at</strong>iva para a realização de somadoresé apresentada a seguir.Ao considerarmos um somador de bits, podemos notar que em algumas situações é gerado um vai-ume em outras situações o vai-um é propagado. Mais especificamente,a b c in Vai-um propagado/gerado0 1 1 propagado1 0 1 propagado1 1 0 gerado1 1 1 propagado/geradoPodemos escrever as equações que caracterizam o vai-um gerado (c g ) e o vai-um propagado (c p ,considerando que um vai-um só pode ser propagado quando c in = 1), conforme segue:c g = a bec p = a + bO novo vai-um c out pode ser expresso em termos de c g e c p da seguinte forma:c out = c g + c p c inAssim, denotando c ini e c outi o vai-um entrada e saída, respectivamente, e c gi e c pi os vai-uns geradoe propagado do módulo i, temos para i = 1e para i = 2,c out1 = c g1 + c p1 c in1c in2 = c out1c out2 = c g2 + c p2 c in2= c g2 + c p2 c out1= c g2 + c p2 (c g1 + c p1 c in1 )= c g2 + c p2 c g1 + c p2 c p1 c in1Observe que a última equação acima depende apenas dos bits a serem somados e do vai-um de entradado primeiro módulo (ou seja, c in1 ).


Nina S. T. Hir<strong>at</strong>a (DCC/<strong>IME</strong>-<strong>USP</strong>) — Notas de aula de MAC0329 (2003∼2010) 4De forma similar, podemos chegar a mesma conclusão com relação a c outi . Além disso, os bits som<strong>at</strong>ambém podem ser expressos todos em função apenas dos bits a serem somados e do vai-um c in1 . Ouseja, significa que o tempo de <strong>at</strong>raso devido à propagação do vai-um foi eiminado. Como conseqüência,o cálculo não é mais modular e quanto maior o número de bits maior será o número de níveis de portasno circuito. Mesmo assim, um circuito desses será mais rápido que o modular descrito acima.ComparadoresComparadores de igualdade de dois números binários podem ser implementados usando-se portasXOR (ou exclusivo). A saída de uma porta XOR é 1 se e somente se os dois bits de entrada temvalores distintos. Para comparar a igualdade de n bits, poderíamos utilizar n portas XOR que fariama comparação bit-a-bit, e a saída das portas XOR pode alimentar uma porta OU, cuja saída deve sernegada. Desta forma, a saída será 1 se e somente se todas as portas XOR respondem 0.Comparadores de bits podem ser projetados de forma mais geral, de forma a produzir três saídas: (1)a > b, (2) a = b, ou (3) a < b. Para que um módulo destes seja utilizado para compor um comparadorde n bits, é necessário acrescentar entradas ao módulo, de modo que o “resultado preliminar” dosmódulos anteriores possa ser propagado (de forma similar ao vai-um no caso do somador).Sejam A = a n . . . a 1 e B = b n . . . b 1 dois números binários de n bits. Seja um módulo com duasentradas a e b que são alimentados pelos bits a serem comparados a i e b i , respectivamente, e trêsentradas < in , = in e > in que serão alimentados pelos sinais propagados pelos módulos anteriores. Assaídas < out , = out e > out dependem das 5 entradas.A regra para propagar o sinal do bit mais signific<strong>at</strong>ivo para o do menos signific<strong>at</strong>ivo é dada por:< out = 1 se e somente se (< in = 1 ou (= in = 1 e a i < b i ))> out = 1 se e somente se (> in = 1 ou (= in = 1 e a i > b i ))= out = 1 se e somente se (= in = 1 e a i = b i )No primeiro módulo deve-se fazer = in = 1.Observe que da mesma forma do somador, neste caso também ocorre o <strong>at</strong>raso de propagação.1.2 DecodificadoresDecodificadores são circuitos combinacionais com n entradas e 2 n saídas. Para cada uma das 2 npossíveis combinações de valores para a entrada, apenas uma saída toma valor 1. A figura 1.3 mostraum esquema genérico de um decodificador n : 2 n . As entradas x n−1 . . . x 1 x 0 podem ser interpretadascomo um número binário entre 0 e 2 n − 1 e tem-se z i = 1 ⇐⇒ ∑ n−1k=0 2k x k = i.Exemplo: Seja o decodificador 2 : 4 e suponha que as entradas são B A (i.e., x 0 = A e x 1 = B). Umcircuito correpondente ao decodificador é ilustrado na figura 1.4. No caso temos z 0 = B A, z 1 = B A,z 2 = B A e z 3 = BA.Conceitualmente, o circuito acima poderia ser extendido para realizar decodificadores n : 2 n , para umvalor de n arbitrariamente grande. No entanto, na prática existem limitações tecnológicas (físicas)conhecidas como fan-in (número máximo de entradas possíveis em uma porta lógica) que restringemeste valor n. Para valores grandes de n, decodificadores são realizados por circuitos multi-níveis,conforme veremos mais adiante.


5 Lógica modularx0x1x2Decodificadorz0z1z2z3n−para−2 nxn−1nz2 −1Figura 1.3: Esquema de um decodificador n : 2 n .ABABBABABAFigura 1.4: Circuito de um decodificador 2 : 4.1.2.1 Memórias ROMUm exemplo de uso de decodificadores são as memórias do tipo ROM (Read-Only Memory). Suponhapor exemplo uma memória com 4 posições. O endereço destas posições pode ser codificado em doisbits x 1 x 0 . Decodificadores podem ser utilizados para se endereçar uma certa posição na memória,gerando-se um sinal na linha de saída que corresponde à posição a ser endereçada.A cada endereço (x 1 x 0 ) fonecido como entrada do decodificador, apenas uma saída do decodificadorficará <strong>at</strong>iva. A palavra na posição de memória endereçada (isto é, o dado armazenado na linha de saída<strong>at</strong>ivada) será transmitida para a saída (z 3 z 2 z 1 z 0 ) (note que o esquema da figura está simplificado; arigor, cada porta OU possui ex<strong>at</strong>amente 4 entradas que poderão ou não estar conectadas a cada umadas linhas de saída do decodificador).Generalizando o esquema acima, para 2 n posições de memória com palavras de m bits, precisaríamosde um decodificador n : 2 n e um plano OU com m portas (um para cada bit da palavra).Memórias ROM possuem uma estrutura semelhante aos PLAs (i.e., um plano de portas E e um planode portas OU). As diferenças em relação a um PLA são o f<strong>at</strong>o de que ROMs possuem necessariamente2 n portas E (todos os produtos são canônicos) e apenas o plano OU é programável. Se o plano OUtem conexões fixas, tr<strong>at</strong>a-se de uma ROM. Se o plano OU pode ser programado, então tr<strong>at</strong>a-se deuma PROM (Programmable ROM), e se o plano OU pode ser reprogramado tr<strong>at</strong>a-se de uma EPROM


Nina S. T. Hir<strong>at</strong>a (DCC/<strong>IME</strong>-<strong>USP</strong>) — Notas de aula de MAC0329 (2003∼2010) 6uma palavra .x0x1decod.2 p/ 4z3 z2 z1 z0= (1110)Figura 1.5: Esquema de uma memória ROM com 4 posições e palavras de 4 bits.(Erasable Programmable ROM).1.2.2 Realização de funções com decodificadoresUma vez que um decodificador n : 2 n realiza todos os produtos canônicos de n variáveis, qualquerfunção com n variáveis pode ser realizada com um decodificador n : 2 n e uma porta OU (com umnúmero de entradas maior ou igual ao número de 1s da função) ou uma porta NÃO-OU (com umnúmero de entradas maior ou igual ao número de 0s da função).O custo da realização de uma função com decodifcadores é, em termos de portas lógicas, (muitoprovavelmente) maior que o da realização SOP minimal. No entanto, a simplicidade de projeto tornao<strong>at</strong>raente. Além disso, quando múltiplas funções precisam ser realizadas, menor tende a ser a diferençados custos entre a realização SOP minimal e a realização com decodificadores.Exemplo: A função f(a, b, c) = ∑ m(0, 1, 4, 6, 7) = ∏ M(2, 3, 5) pode ser realizada usando decodificadoresconforme ilustrado na figura 1.6. No caso da realização com porta NÃO-OU, observe quef(a, b, c) = ∏ M(2, 3, 5) = M 2 · M 3 · M 5 = M 2 + M 3 + M 5 = m 2 + m 3 + m 5 .cba01201234567abcabcabcabcabcf(a,b,c)cba01201234567abcabcabcf(a,b,c)Figura 1.6: Realização de f(a, b, c) = ∑ m(0, 1, 4, 6, 7) com decodificador 3 : 8 e uma porta OU(esquerda) ou uma porta NÃO-OU (direita).1.2.3 Realização multi-níveis de decodificadores*Vimos que decodificadores possuem n entradas e 2 n saídas e que sua realização trivial utiliza 2 nportas E, com n entradas cada. Para contornar o problema de fan-in (número máximo de entradas


7 Lógica modularpossíveis em uma porta lógica), decodificadores com grande número de entradas podem ser realizadospor circuitos com múltiplos níveis. A figura 1.7 mostra como pode ser realizado um decodificador12 : 2 12 em três níveis.a6...a2a1a12a11...a2a1a1a2a3a4a5a6a7a8a9a10a11a1264 portas64 portasa6...a2a1a12...a8a7a12...a8a71264x64=2 portasa12a11...a2a1.Figura 1.7: Realização três-níveis de um decodificador 12 : 2 12 .No primeiro nível são usados 4 decodificadores 3 : 8. No segundo nível, 64 portas E de duas entradassão usadas para combinar cada uma das 8 saídas do primeiro decodificador com cada uma das 8 saídasdo segundo decodificador. A mesma coisa para as saídas do terceiro com as do quarto decodificador.Cada uma das saídas das primeiras 64 portas E do segundo nível são combinadas com cada uma dassaídas das últimas 64 portas E no mesmo nível, resultando em um total de 64 × 64 = 2 12 portas E noterceiro nível. As saídas dessas 2 12 portas E correspondem aos produtos canônicos de 12 variáveis.A solução acima utiliza portas E com três entradas no primeiro nível e portas E com duas entradasnos demais níveis. Se o circuito fosse realizado em apenas um nível, as portas E teriam 12 entradas.Em uma outra possível realização, poderíamos substituir as 128 portas E de duas entradas no segundonível acima por 2 12 portas E de qu<strong>at</strong>ro entradas e eliminar as portas do terceiro nível. Isto aparentementereduziria o número total de portas, mas uma vez que 2 12 domina de longe 128 e uma vez queas portas agora teriam qu<strong>at</strong>ro entradas em vez de duas, não se pode dizer que há economia no custototal.Um outro problema devido às limitações tecnológicas é o conhecido por fan-out (número máximode portas que podem ser alimentadas por uma saída de uma porta lógica). No caso da realizaçãotrês-níveis do decodificador 12 : 2 12 visto acima, as saídas das portas no segundo nível alimentam 64portas no terceiro nível.Para contornar o fan-out, uma possível solução são as realizações em estruturas de árvore. A figura 1.8mostra a realização de um decodificador 3 : 8 em uma estrutura de árvore. Em vez de termos todasas variáveis alimentando portas no primeiro nível, temos variáveis que alimentam portas nos outros


Nina S. T. Hir<strong>at</strong>a (DCC/<strong>IME</strong>-<strong>USP</strong>) — Notas de aula de MAC0329 (2003∼2010) 8níveis. Usando este esquema, pode-se reduzir o número de portas no próximo nível que precisamser alimentadas pela saída de uma porta no nível anterior. Mesmo assim, o problema de fan-outnão é totalmente eliminado pois as variáveis introduzidas nos níveis posteriores do circuito precisamalimentar muitas portas. No entanto, é mais fácil controlar o sinal de algumas poucas entradas(variáveis) para que eles sejam capazes de alimentar um maior número de portas do que fazer omesmo com as saídas das portas lógicas. Esta solução possui um maior número de níveis e um maiornúmero de portas lógicas do que o esquema mostrado na figura 1.7, mas para decodificadores de muitasentradas pode ser a única solução.bca b caca b ca b cbca b ca b caca b ca b cbca b cFigura 1.8: Decodificador em estrutura de árvore.Na prática, as realizações de decodificadores para um número grande de entradas é baseada em umacombinação das estruturas da figura 1.7 e da figura 1.8.1.3 CodificadoresCodificadores são circuitos combinacionais que são o inverso de decodificadores. Um codificador den entradas deve possuir s saídas s<strong>at</strong>isfazendo2 s ≥ n ou s ≥ log 2 nUsualmente deve-se ter apenas uma entrada <strong>at</strong>iva e a saída será o código binário correspondente àentrada. Isto é, se a i-ésima entrada estiver <strong>at</strong>iva, a saída será o código binário de i. A figura 1.9mostra o esquema de um codificador de n entradas.Embora usualmente os codificadores sejam definidos como um circuito no qual apenas uma entradaencontra-se <strong>at</strong>iva, é possível termos codificadores com propósitos específicos que, por exemplo, paracertos tipos de combinação de entradas gera um dado código de saída e para outras combinações deentradas gera outro código de saída.


9 Lógica modularx0x1x2Codificadorn entradasz0z1xn−1zs−1 .Figura 1.9: Esquema de um codificador.1.3.1 TecladoDecodificadores e codificadores podem ser usados, por exemplo, em teclados. Suponha por exemploque um teclado simplificado possui 70 teclas. Em vez de se ter 70 fios conectando cada uma das teclasa um gerador de código ASCII, podemos ter um esquema como o ilustrado na figura 1.10.O cruzamento das saídas do decodificador 3-8 com as entradas do codificador 16×4 corresponde a um<strong>at</strong>ecla. Quando houver sinal na linha de saída correspondente à tecla pressionada, o sinal entrará nocodificador. A saída do codificador indica em qual das 14 colunas está a tecla pressionada, enquantoas linhas que ligam a saída do decodificador ao gerador de código ASCII indicam em qual das 5 linhasa tecla está. O contador à esquerda da figura alimenta as entradas do decodificador (varia ciclicamentede 0 a 7), tendo o efeito de gerar saída em uma das 5 linhas, ciclicamente. Obviamente há váriasquestões que precisam ser consideradas tais como garantir que o contador realize um ciclo completodurante o período de tempo em que uma tecla está pressionada (para “não perder” a tecla pressionada),mas também não mais que um ciclo (para não produzir o efeito de duas pressões), ou então tr<strong>at</strong>aras combinações de teclas que usualmente são pressionadas simultaneamente (como SHIFT+outra,CTRL+outra). Essas questões não são consideradas no modelo simplificado do teclado.teclaContador3 bitsDecod.3 p/ 8Codificador 16 x 4Gerador dec’odigo ASCIIbufferFigura 1.10: Esquema de um teclado. O decodificador identifica a linha e o codificador a linha d<strong>at</strong>ecla pressionada.


Nina S. T. Hir<strong>at</strong>a (DCC/<strong>IME</strong>-<strong>USP</strong>) — Notas de aula de MAC0329 (2003∼2010) 101.4 <strong>Multi</strong>plexadores (Seletores de dados)<strong>Multi</strong>plexadores são circuitos combinacionais com n entradas e uma saída. Apenas uma entradaé selecionada para ser enviada à saída. A entrada selecionada é justamente aquela que é especificadapelos seletores, que consistem de k sinais, s<strong>at</strong>isfazendo k ≥ log 2 n. A figura 1.11 mostra ummultiplexador 4 × 1, isto é, um multiplexador de 4 entradas.D0D1D2D301231MUX4−10ZS1S0Figura 1.11: <strong>Multi</strong>plexador de 4 entradas.Se os seletores forem S 1 S 0 = 00, então teremos Z = D 0 ; se forem S 1 S 0 = 01, então teremos Z = D 1 ;S 1 S 0 = 10, então teremos Z = D 2 ; S 1 S 0 = 11, então teremos Z = D 3 .Podemos observar que Z é uma função das variáveis S 0 , S 1 e D 0 , D 1 , D 2 , D 4 . Assim, podemos escreverZ comoZ(D 0 , D 1 , D 2 , D 4 , S 1 , S 0 ) = D 0 S 0 S 1 + D 1 S 0 S 1 + D 2 S 0 S 1 + D 3 S 0 S 1e portanto multiplexadores podem ser realizados com circuitos dois-níveis, consistindo de n portas Eno primeiro nível e uma porta OU no segundo nível, conforme mostrado na figura 1.12. Note quepara cada possível combinação de valores de S 1 S 0 , apenas um dos produtos toma valor 1 na equaçãoacima.D0D1D2ZD3s1s0Figura 1.12: Circuito de um multiplexador de 4 entradas.


11 Lógica modular1.4.1 Realização de funções com MUXFunções podem ser realizadas utilizando-se MUX. Para tanto, deve-se escolher as variáveis que funcionarãocomo seletores e, em seguida, as n entradas que poderão ou não depender das demais variáveis.Exemplo: Realizar a função f(a, b, c) = a b + a c usando um MUX 4 × 1, com as variáveis a e b comoseletores.Uma possível forma para fazer isso é expandir a expressão da função de forma que os literais correspondentesàs variáveis a e b apareçam em todos os produtos da expressão resultante. No caso dafunção dada, fazemosf(a, b, c) = a b + a c= a b + a (b + b) c= a b + a b c + a b cAssim, no MUX 4 × 1 basta fazermos s 1 = a, s 0 = b, D 0 = 1, D 1 = 0, D 2 = c e D 3 = c.Exercício 1: Escreva a realização da função f(a, b, c) = a b + a c usando um MUX 8 × 1, com asvariáveis a, b e c como seletores.Exercício 2: Escreva a realização da função f(a, b, c, d) = ∑ m(0, 1, 3, 6, 7, 8, 11, 12, 14) usando umMUX 8 × 1, com as variáveis a, b e c como seletores.Exercício 3: Escreva a realização da função f(a, b, c, d) = ∑ m(0, 1, 3, 6, 7, 8, 11, 12, 14) usando umMUX 4 × 1, com as variáveis a e b (neste caso, as entradas possivelmente dependerão das variáveis ce d e serão necessárias portas adicionais para a realização de f).1.4.2 Realização de MUX como composição de MUXUm MUX pode ser realizado como composição de MUXes com um menor número de entradas. Porexemplo, um MUX 4×1 pode ser realizado <strong>at</strong>ravés de 3 MUX 2×1, conforme ilustrado na figura 1.13.1D00MUXD1D2D31010B2MUX0013MUX0AZ .BFigura 1.13: Realização de um MUX 4 × 1 como composição de três MUX 2 × 1.Note que se AB = 00, então como B = 0 a saída do MUX 1 é D 0 e a do MUX 2 é D 2 e, como A = 0,a saída do MUX 3 é D 0 . Se AB = 01 então as saídas são, respectivamente, D 1 , D 3 e D 1 . Se AB = 10,então as saídas são, respectivamente, D 0 , D 2 e D 2 . Finalmente, se AB = 11, então as saídas são,


Nina S. T. Hir<strong>at</strong>a (DCC/<strong>IME</strong>-<strong>USP</strong>) — Notas de aula de MAC0329 (2003∼2010) 12respectivamente, D 1 , D 2 e D 3 . Em todos os casos, a terceira saída é a mesma de um MUX 4 × 1 comAB como entrada para seletores.Pergunta: E se trocarmos as entradas para os seletores na figura acima? Se colocarmos A no seletordos MUX 1 e 2 e B na do MUX 3, ainda é possível realizar um MUX 4 × 1 com AB como entradapara seletores ?1.4.3 Realização multi-níveis de funções com MUXUma função pode ser realizada com múltiplos níveis de multiplexadores. Para cada nível deve-se definiras variáveis que alimentarão os seletores. Em função disso fica definida as variáveis que alimentarãoas entradas dos multiplexadores no primeiro nível.Considere a função f(a, b, c, d) = ∑ m(2, 5, 8, 9, 11, 12, 14, 15). Se for utilizado um MUX 8 × 1, entãoserão necessários três variáveis para alimentar os seletores. A quarta variável pode ser diretamentealimentada nas entradas, conforme mostrado na figura 1.14.0dd01dd10123456MUX8−172 1 0f.a b cFigura 1.14: Realização de f(a, b, c, d) = ∑ m(2, 5, 8, 9, 11, 12, 14, 15) com um MUX 8 × 1.Se pensarmos em utilizar MUX 4×1 e MUX 2×1 na realização de f, duas possíveis soluções, mostradasna figura 1.15, são:1. dois MUX 4 × 1 no primeiro nível, alimentando um MUX 2 × 1 no segundo nível2. 4 MUX 2 × 1 no primeiro nível e 1 MUX 4 × 1 no segundo nível.Estas estruturas podem ser obtidas a partir da análise dos mintermos arranjados em forma tabular,conforme mostrado a seguir. A tabela da esquerda considera o uso das entradas b e c como seletoresdos MUXes 4 × 1 no primeiro nível e o uso da varíável a como seletor do MUX 2 × 1 do segundo nível.A tabela da direita faz o análogo para a implementação com 4 MUX 2 × 1 no primeiro nível e 1 MUX4 × 1 no segundo nível.abcd a bc d input0010 0 01 0 d0101 0 10 1 d1000 1 00 01001 1 00 1d + d = 11100 1 10 0 d1110 1 11 01111 1 11 1d + d = 1abcd ab c d input0010 00 1 0 d0101 01 0 1 d1000 10 0 01001 10 0 1d + d = 11100 11 0 0 d1110 11 1 01111 11 1 1d + d = 1


13 Lógica modular0dd01dd1MUX01I OUT23S1 0MUXb c 0 f(a,b,c,d)1MUX00a1I OUT23S1 0b c0dd01dd1010101MUX0cMUX010cMUX0cMUX0MUX01I OUT23S1 0a bcFigura 1.15: Realização de f(a, b, c, d) = ∑ m(2, 5, 8, 9, 11, 12, 14, 15) com (a) dois MUX 4 × 1 noprimeiro nível e um MUX 2 × 1 no segundo nível e (b) 4 MUX 2 × 1 no primeiro nível e 1 MUX 4 × 1no segundo nível.Outra abordagem para determinar a estrutura hierárquica dos MUXes na realizações de funções commúltiplos níveis de MUXes é baseada na aplicação sucessiva da expansão de Shannon. Dependendo daseqüência de variáveis em torno das quais a expansão é aplicada, pode-se chegar a diferentes estruturas.O teorema de Expansão de Shannon afirma que qualquer função f de n variáveis pode ser escritaem termos de funções de n − 1 variáveis da seguinte forma:f(x 1 , . . . , x k , . . . , x n ) = x i f(x 1 , . . . , 0, . . . , x n ) + x i f(x 1 , . . . , 1, . . . , x n )As funções f(x 1 , . . . , 0, . . . , x n ) e f(x 1 , . . . , 1, . . . , x n ) são funções de n − 1 variáveis. O teorema podeser aplicado recursivamente nessas duas funções.Exemplo: Consideremos novamente a função f(a, b, c, d) = ∑ m(2, 5, 8, 9, 11, 12, 14, 15). Sua realizaçãocom um MUX 8×1 está mostrada na figura 1.14 acima. Vamos mostrar agora que aplicando-sesucessivamente a expansão de Shannon é possível obter diferentes estruturas de realizações de f usandoMUX.f = a b c d + a b c d + a b c d + a b c d + a b c d + a b c d + a b c d + a b c d= a b c d + a b c d + a b c d + a b c d + a b c d + a b c d + a b c d + a b c d (rearranjo)= a b c d + a b c d + a c d + a b d + a b c (algumas simplificações)= a (b c d + b c d) + a(c d + b d + b c) (expansão em torno de a)= a (b(c d) + b(c d)) + a (b(c d + d) + b (c d + c)) (expansão em torno de b)= a b(c d) + a b(c d)) + a b(c d + d) + a b (c d + c) (distribuição com respeito a a)= a b(c(0) + c (d)) + a b(c (d) + c(0)) + a b(c (1) + c(d)) + a b (c (d) + c(1)) (expansão em torno de c)


Nina S. T. Hir<strong>at</strong>a (DCC/<strong>IME</strong>-<strong>USP</strong>) — Notas de aula de MAC0329 (2003∼2010) 14A última expressão acima pode ser realizada com 4 MUX 2 × 1 no primeiro nível, com c como entradapara os seletores, mais um MUX 4 × 1 no segundo nível, com a e b como entrada para os seletores.Nas equações acima, logo após a expansão em torno de b, poderíamos ter prosseguido da seguinteforma:f = a (b(c d) + b(c d)) + a (b(c d + d) + b (c d + c)) (expansão em torno de b)= a (b c (d) + b c(0) + b c (d) + b c (0)) + a (bc (1) + b c(d) + b c (d) + b c (1)))Esta última expressão pode ser realizada com 2 MUX 4 × 1 no primeiro nível, com b e c como entradapara os seletores, mais um MUX 2 × 1 no segundo nível, com a como entrada para os seletores.1.5 Demultiplexadores (Distribuidores de dados)Demultiplexadores são circuitos combinacionais inversos aos multiplexadores, isto é, possuem apenasuma entrada que é transmitida a apenas uma das n saídas. A saída a ser escolhida é selecionadapelos valores dos seletores. Se o demultiplexador possui n saídas, então são necessários k seletores,com 2 k ≥ n.Pergunta: Para que serve um demultiplexador? Suponha que há dois sistemas A e B e que A possuin saídas que geram ciclicamente sinais que devem ser transmitidos para os respectivos n receptoresde B. A transmissão seria direta se houvesse um canal de comunicação entre cada saída de A para arespectiva entrada de B. Se houver apenas um canal de transmissão entre A e B, pode-se utilizar ummultiplexador na saída de A e um demultiplexador na entrada de B. Os seletores devem ser ajustadospara que, no multiplexador, seja selecionado o sinal que se deseja transmitir a B e, no demultiplexador,seja selecionada a saída conectada à entrada de B para o qual se deseja direcionar o sinal transmitido.1.6 Lógica combinacional multi-níveis*Existem funções cuja realização por circuitos com mais de dois níveis é n<strong>at</strong>ural e simples enquantoque sua realização por circuitos de dois níveis é proibitivamente ineficiente ou caro.Um desses exemplos é o circuito verificador de paridade. Suponha que em um sistema de transmissãoos dados são codificados em 7 bits. O oitavo bit é utilizado para guardar a informação sobre a paridadedesses 7 bits. Se o número de bits 1 no dado é impar, o oitavo bit é 1; se é par, o oitavo bit é 0.Assim, a cada grupo de oito bits transmitidos deve-se ter necessariamente um número par de bits 1.Após a transmissão dos dados, verificar se a paridade a cada 8 bits é par é um teste simples que podedetectar erros (não todos) na transmissão. De f<strong>at</strong>o, pode-se mostrar <strong>at</strong>ravés de uns cálculos que, porexemplo, quando a probabilidade de ocorrer erros na linha de transmissão é de 1 em cada 10 4 bitstransmitidos, as chances de erro diminuem de 7 × 10 −4 para 28 × 10 −8 caso seja feita a verificação deparidade.Como poderia ser realizado o circuito para verificar a paridade? Suponha inicialmente uma situaçãocom 4 bits (3 de dados e um de paridade). Então, o seguinte circuito produz saída 1 se, e somente se,se a paridade é impar.Isto pode ser verificado analisando-se a seguinte tabela.


15 Lógica modularx1x2z1z.x3x4z2Figura 1.16: Circuito para verificação de paridade para uma entrada de 4 bits.# de x i s iguais a 1 # de z i s iguais a 1 z0 0 01 1 12 0 ou 2 03 1 14 0 0Note que o número de saídas z i = 1 é impar se, e somente se, o número de entradas x i = 1 é tambémímpar. Se o número de z i = 1 é impar, então z = 1. Assim, se a paridade é par, temos z = 0 e se éímpar temos z = 1.O circuito acima pode ser extendido para verificar a paridade de 8 bits, simplesmente conectando-sea saída de dois circuitos daqueles a uma porta XOR, conforme mostrado na figura 1.17. Para realizartal circuito são necessários 7 portas XOR ou então 21 portas NÃO-E e 14 inversores.x1x2x3x4x5x6zx7x8Figura 1.17: Circuito para verificação de paridade para entradas de 8 bits.Se considerarmos a forma SOP, é fácil const<strong>at</strong>armos que não é possível fazer nenhuma minimização apartir da forma SOP canônica. Portanto, no caso de 4 variáveis, como são 7 mintermos correspondentesa entradas de paridade ímpar, seriam necessárias 7 portas E com 4 entradas e uma porta OU com 7entradas (se pensarmos somente em portas com duas entradas, claramente a forma SOP é muito piorque a apresentada acima).De uma forma geral, podemos dizer que a lógica multi-níveis é mais flexível que a lógica 2-níveis, istoé, circuitos multi-níveis oferecem maiores possibilidades para reduzir a quantidade de portas lógicas


Nina S. T. Hir<strong>at</strong>a (DCC/<strong>IME</strong>-<strong>USP</strong>) — Notas de aula de MAC0329 (2003∼2010) 16necessárias. No entanto, o problema de otimização associado à lógica multi-níveis pode ser muitomais complexo. Não existem técnicas para, dada uma função f qualquer, encontrar a realização ótimamulti-níveis de f, para um número de níveis fixo qualquer (exceto para 2 níveis).Algumas das abordagens existentes para minimização lógica multi-níveis resumem-se à composiçãoseqüencial de circuitos de subfunções (módulos) mais simples. Este assunto não será tr<strong>at</strong>ado emdetalhes neste curso. A seguir serão apresentadas duas abordagens utilizadas para projeto de circuitosmulti-níveis.1.6.1 Decomposição funcional e estrutural de funçõesNão é objetivo deste curso aprofundar-se nestes tópicos. Aqui apresentaremos apenas uma breveintrodução. Detalhes adicionais podem ser encontrados, por exemplo, em• Jacobi, R. (1996). Síntese de Circuitos Lógicos Combinacionais. Décima Escola de Computação,Campinas.• Perkowski, M. A., Grygiel, S., and the Functional Decomposition Group (1995). A Survey ofLiter<strong>at</strong>ure on Function Decomposition - Version IV. Technical report, PSU Electrical EngineeringDepartment.Na decomposição funcional, o objetivo é, dada uma função f de n variáveis, escrevê-la comocomposição de duas ou mais funções com menor número de variáveis.Exemplo: seja f uma função com n variáveis x 1 , x 2 , . . . , x n . Uma possível decomposição de f podeser dada porf(x 1 , x 2 , . . . , x n ) = g(h(x 1 , x 2 , . . . , x k ), x k+1 , . . . , x n )Tanto g como h são funções que dependem de menos variáveis. Consequentemente, pode ser mais fácilencontrar uma realização eficiente e bar<strong>at</strong>a de g e h do que uma realização eficiente e bar<strong>at</strong>a de f.Os circuitos resultantes da decomposição funcional possuem uma estrutura hierárquica, ou seja, demúltiplos níveis, onde cada uma das subfunções pode ser vista como um módulo. Veja a figura 1.18.Esta estrutura de decomposição é apenas um exemplo de uma possível forma de decomposição. Dadax1xkhxk+1g f .xnFigura 1.18: Exemplo de decomposição funcional.uma função qualquer, verificar se ela pode ser expressa em uma certa estrutura de decomposição nãoé tarefa fácil.Na decomposição estrutural, o objetivo é, dada uma função f de n variáveis, encontrar subfunçõescomuns que possam ser compartilhadas. Essa idéia é mostrada <strong>at</strong>ravés de um exemplo. Consideremos


17 Lógica modulara função f dada porf = x 1 x 3 x 4 + x 1 x 5 + x 2 x 3 x 4 + x 2 x 5 + x 3 x 4 x 7 + x 5 x 7 + x 6Rearranjando os produtos e efetuando algumas manipulações,f = x 1 x 3 x 4 + x 2 x 3 x} {{ } 4 + x 1 x 5 + x 2 x 5 + x} {{ } 3 x 4 x 7 + x 5 x 7 +x} {{ } 6(x 1 + x 2 ) x 3 x 4 (x} {{ }1 + x 2 ) x 5 x 7 (x} {{ }3 x 4 + x 5 )} {{ }y 1 y 1 y 2= y 1 x 3 x 4 + y 1 x} {{ } 5 + y 2 x 7 + x} {{ } 6y 1 (x 3 x 4 + x 5 )y 3} {{ }y 2= y 1 y 2 + y 3O compartilhamento de subfunções resulta em uma estrutura de rede de funções, conforme mostradana figura 1.19. Este tipo de decomposição pode ser realizado levando-se em conta a implementaçãox1x2x3x4x5y1y2x6x7y3y4f .de mais de uma função booleana.Figura 1.19: Exemplo de decomposição estrutural.O projeto multi-níveis é um problema computacionalmente difícil. Para abordá-lo, é necessário estabeleceras condições de contorno que caracterizam o tipo de decomposição desejada. Entre estascondições, podemos citar o número máximo de níveis, o número máximo de variáveis de entrada emcada subfunção, a utilização de determinados componentes, etc. A solução do problema, mesmo emcondições de contorno bem limitadas, não é trivial ou então nem existe ainda.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!