Baixe o app para aproveitar ainda mais
Prévia do material em texto
4 ò ë¾| î�ê â ê ò ¿ ì«ä çÆå~ Ý ìê â ë Þ ò ÀÉë ìç ê ò àæî°ÞdÁ ì«ë ç ë Þ / Ì%-}-+��ó� ��Ì/ ¬�Sfi0�flmó�Ì�ff�ó�Ñ%�á/·a%�f�þ��Ì/ �P+,�a¯�S%-�ó%-� Em capítulos anteriores foram apresentadas as metodologias que permitem conceber funções lógicas simples e projectar os respectivos circuitos combinatórios. Como é evi- dente, a maioria dos circuitos necessários nas aplicações correntes exibe uma complexi- dade que não é compatível com uma abordagem tão simples. Neste capítulo é analisada, por um lado, a metodologia de concepção de circuitos com- binatórios complexos a partir de módulos mais simples e, por outro, a estrutura dos módulos simples mais típicos. A questão da concepção modular é desenvolvida na Secção 4.1, sendo mostrado como se pode conceber um circuito complexo a partir de circuitos de sucessivamente menor complexidade. É também introduzido o conceito de níveis de abstracção para lidar com problemas de concepção de sistemas complexos. As três secções seguintes são dedicadas a três tipos de módulos de muito frequente utilização. A Secção 4.2 analisa os descodificadores, a Secção 4.3 trata dos codificadores e a Secção 4.4 apresenta os multiplexadores. Dada a importância prática e formativa do tema, é descrita na Secção 4.5 a metodo- logia de implementação de funções lógicas simples com base em alguns dos módu- los anteriormente apresentados, nomeadamente descodificadores e multiplexadores, complementando-se, deste modo, as técnicas apresentadas no Capítulo 3. O capítulo termina com a Secção 4.6, onde é feita uma breve referência ao projecto de circuitos iterativos, sendo o conceito ilustrado com a concepção de um circuito compa- rador de dois números de n bits. uffiöõ ��Ü û ß xPø Õ.Û û¿ø×û Ö A concepção de um circuito combinatório parte sempre de uma especificação que rela- ciona um conjunto de saídas do circuito com um conjunto de entradas. Desse ponto de vista, ao nível da especificação do circuito, este surge numa forma abstracta, em que a estrutura interna ainda não é conhecida. O circuito é, portanto, uma caixa negra cujo interior se desconhece e em que apenas são conhecidos os seus terminais de entrada e de saída e a sua especificação comportamental. Um circuito com n entradas, I0 a In−1 e m saídas, O0 a Om−1, pode ser descrito graficamente como se ilustra na Figura 4.1. Este modelo de descrição do circuito tem o nome de modelo de terminais (em inglês, terminal model). Definido o modelo de terminais para um circuito, pode optar-se pela sua implemen- tação baseada num projecto que assente na implementação directa de m funções de n variáveis, usando os métodos apresentados nos Capítulos 2 e 3. 189 /ü�Ì%}-+��ó�ó�S%-�ó%-� . . . . . . I1 O0 I2 In-1 I0 O1 Om-1 ?Ł,.qCY!�>�ÂE(����; Modelo de terminais de um circuito combinatório com n entradas e m saídas. A título de exemplo considere-se um circuito que converte palavras do código BCD em palavras do código 2-em-5, que se caracteriza por possuir palavras de cinco bits com, para cada configuração válida, dois bits a 1 e três bits a 0. Na Tabela 4.1 ilustra-se o código 2-em-5 e, simultaneamente, a correspondência entre as palavras do código BCD e as do referido código. 7 �!8+��9��Efi� � ; Correspondência entre o código BCD e o código 2-em-5. Codificação Codificação Número BCD 2-em-5 A B C D P Q R S T 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 0 0 0 1 1 2 0 0 1 0 0 0 1 0 1 3 0 0 1 1 0 0 1 1 0 4 0 1 0 0 0 1 0 0 1 5 0 1 0 1 0 1 0 1 0 6 0 1 1 0 0 1 1 0 0 7 0 1 1 1 1 0 0 0 1 8 1 0 0 0 1 0 0 1 0 9 1 0 0 1 1 0 1 0 0 O modelo de terminais correspondente é ilustrado na Figura 4.2. A Tabela 4.1, para além de representar a correspondência entre as palavras dos dois códigos, pode ser encarada, de igual modo, como um conjunto de cinco tabelas de ver- dade das funções lógicas P (A,B,C,D), Q(A,B,C,D), R(A,B,C,D), S(A,B,C,D) e T (A,B,C,D). A implementação do circuito pode agora ser realizada através dos métodos apresentados nos capítulos anteriores. 190 / Ì%-}-+��ó� ��Ì/ ¬�Sfi0�flmó�Ì�ff�ó�Ñ%�á/·a%�f�þ��Ì/ �P+,�a¯�S%-�ó%-� Conversor BCD - 2-em-5 A B C D P Q R S T ?Ł,qtY!�(�«E(�^3+; Modelo de terminais de um circuito combinatório que converte código BCD em código 2-em-5. A título de curiosidade refere-se que há vários códigos 2-em-5 teoricamente possíveis. O que é ilustrado é o código na variante de Dennison com pesos, P = 7, Q = 4, R = 2, S = 1 e T = 0. Como noutras variantes do código 2-em-5 com pesos associados às diversas colunas, a codificação do 0 é uma combinação inválida (neste caso correspondente a 11). É, porém, frequente que os circuitos assumam graus de complexidade que inviabili- zem ou dificultem muito metodologias de implementação directa por envolverem um grande número de entradas e saídas. Nessas circunstâncias é preferível adoptar abor- dagens que assentam em estruturas modulares. Neste tipo de metodologia procuram analisar-se as especificações de um circuito, tentando encontrar alguma estrutura in- terna que permita conceber um conjunto de módulos que, interligados, realizem a es- pecificação pretendida. Considere-se, a título de exemplo, o seguinte problema. Existe um corredor longo com uma série de portas de acesso a salas e com uma porta de acesso ao exterior, P1 como se ilustra na Figura 4.3. Junto de cada porta há um interruptor. Sempre que alguém entra no corredor e este está sem iluminação, inverte a posição desse interruptor, e a luz é acesa. Se alguém sai do corredor e verifica que ele fica vazio, inverte a posição do interruptor junto à porta por onde sai, e a luz é apagada. Pode-se, então, apontar para um circuito com a estrutura ilustrada na Figura 4.4 que exibe uma estrutura modular em que cada módulo é colocado junto de cada porta. Em cada módulo existem duas entradas, uma, que provém do interruptor, e outra, que provém do módulo anterior. No primeiro caso há naturalmente uma excepção: esta segunda entrada provém do interruptor inicial. Se cada módulo alterar o valor da sua saída, sempre que uma das entradas se alterar, consegue-se o comportamento preten- dido, uma vez que a alteração de uma qualquer entrada provoca uma alteração da saída do módulo respectivo e, em cascata, a alteração de todos os módulos sucessivos até ao 191 /ü�Ì%}-+��ó�ó�S%-�ó%-� Pn Pn-2 Pn-1 P4 P3 P2 P1 Corredor ?Ł,qtY!�(�Efi�^<fi; Representação esquemática do exemplo de iluminação do corredor. último, cuja saída comanda a iluminação do corredor. O problema resume-se agora a conceber um dos módulos, o que, como são todos iguais, corresponde à concepção completa do circuito. PnPn-1P3P2 P1 . . . LI2 I3 In-1In-2 ?Ł,.qCY!�>�Efi�4E(; Representação modular do circuito de controlo da iluminação do corre- dor. Para resolver este problema pode-se recordar que a função ou-exclusivo tem uma ca- racterística importante: se uma das entradas inverter o seu valor, a saída também inverte o seu valor, independentemente do valor, desde que constante, da outra entrada. A Ta- bela 4.2, aqui repetida, permite verificar essa propriedade. É fácil ver que cada módulo é simplesmente constituído por uma porta XOR, como se ilustra na Figura 4.5 para o caso do módulo i. 7 �!8+��9K�E(�43fi; Função XOR. x y x⊕ y 0 0 0 0 1 1 1 0 1 1 1 0 Nem sempre a concepção modular assenta no uso de módulos todos iguais. Uma al- 192 / Ì%-}-+��ó� ��Ì/ ¬�Sfi0�flmó�Ì�ff�ó�Ñ%�á/·a%�f�þ��Ì/ �P+,�a¯�S%-�ó%-� Pi Ii-1 Ii Pi Ii Ii-1 ?Ł,qtY!�(�Efi�^]+; Circuito correspondente a cada módulo do circuito de controlo de ilumi- nação do corredor. ternativa é a concepção de um circuito em módulos funcionalmente diferentes, mas que correspondem, na sua interacção, ao circuito pretendido. A título de exemplo, considere-se um circuito que soma ou multiplicanúmeros binários de 4 bits sob co- mando de um sinal de controlo C. Uma possível concepção deste circuito pode resultar da junção de um módulo que rea- liza a soma de dois números, um segundo módulo que proceda ao produto desses nú- meros e um terceiro módulo que permita escolher qual dos resultados obtidos pelos módulos referidos deve ser utilizado como resultado final do circuito. Na Figura 4.6 ilustra-se essa solução. Neste exemplo repare-se que — e voltar-se-á a este assunto mais Somador Multiplicador Selector Operando 1 Operando 2 C ?Ł,qtY!�(�ÃE(�4efi; Circuito que permite somar ou multiplicar dois números binários de 4 bits. tarde no Capítulo 5 — o resultado da soma de dois números binários de 4 (n) bits pode ser um número binário de 5 (n + 1) bits e que o produto é um número de 8 (2n) bits. 193 /ü�Ì%}-+��ó�ó�S%-�ó%-� Claro que, agora, haverá que conceber cada um dos módulos. Estes poderão, por sua vez, ser divididos em módulos de menor complexidade ou ser concebidos directamente. A concepção de circuitos deste modo oferece várias vantagens: — A concepção modular, como foi apresentada, permite partir da descrição funcional do circuito, abstraindo completamente a sua estrutura, e iniciar um processo que, refinando sucessivamente a visão abstracta, nos aproxima da visão estrutural do cir- cuito e, portanto, da sua concepção física. Do modelo de terminais do circuito de iluminação da escada, por exemplo, avançou-se para uma descrição que, embora ainda exibindo alguma abstracção, uma vez que não tinham sido identificados os componentes concretos a utilizar, já mostra claramente, a um nível inferior ao inicial, a estrutura que se propõe para a concepção do circuito. — De um modo geral, a concepção modular permite projectar circuitos de uma forma mais rápida, elegante e testável. Isto acontece porque é possível dividir o problema em problemas mais simples, concebendo o circuito como um conjunto de módulos de menor complexidade, interligados. Seguidamente analisa-se cada um dos mó- dulos e, se ele já é suficientemente simples para ser projectado com as ferramentas disponíveis, projecta-se. Se isso não acontece, continua-se o processo de divisão em módulos progressivamente mais simples. — Introduz-se uma hierarquia na estrutura do circuito que permite proceder a altera- ções locais sem interferir na hierarquia global nem nos restantes módulos. Se, por exemplo, no circuito somador/multiplicador se pretender substituir a soma por uma operação subtracção, apenas há que actuar ao nível do módulo que efectua essa ope- ração. O mesmo acontece se for disponibilizado um algoritmo mais eficiente para realizar a operação de multiplicação, alterando apenas o respectivo módulo. — A concepção desta forma é propícia à fácil expansão da funcionalidade pretendida. No circuito de iluminação do corredor, se for prolongado o corredor, haverá apenas que adicionar mais módulos dos já concebidos. No circuito somador/multiplicador, se se pretender adicionar novas operações, haverá apenas que conceber os novos módulos e redimensionar o circuito selector ou, de forma ainda mais simples, usar vários circuitos selectores em cascata. — Outra vantagem desta forma de projectar é que os diversos módulos concebidos po- dem ser sempre reutilizados noutros circuitos. Se, por exemplo, se pretender conce- ber um circuito somador de números de 16 bits, é possível, como se verá no Capí- tulo 5, partir do somador de 4 bits já existente e, num processo de justaposição de módulos iguais, conceber o somador de 16 bits. 194 / Ì%-}-+��ó� ��Ì/ ¬�Sfi0�flmó�Ì�ff�ó�Ñ%�á/·a%�f�þ��Ì/ �P+,�a¯�S%-�ó%-� — Uma última vantagem de importância relevante é a de se tornar mais económica a actividade de produzir os circuitos, uma vez que estes passam a ser estruturados em torno de módulos de relativamente menor complexidade que, como são muitas vezes reutilizáveis, permitem a sua fabricação em maiores quantidades, o que, neste tipo de indústria, embaratece muito consideravelmente a produção. Como é evidente, há também desvantagens neste tipo de abordagem. Mas são clara- mente de menor importância e, na maior parte dos casos, a abordagem modular é, de facto, a usada. Das desvantagens da abordagem modular, a mais significativa é a se- guinte: quando se faz um projecto directo a partir da tabela de verdade dos circuitos, é, em geral, praticável a construção de um circuito com duas camadas de portas entre as entradas e as saídas (não contando com as eventualmente necessárias negações, que podem representar uma terceira camada). O tempo de atraso do circuito é, portanto, conhecido e limitado ao tempo de atraso de, no máximo, três portas. Na abordagem modular, os atrasos são muito maiores, uma vez que cada módulo pode ter alguma complexidade e a interligação dos módulos corresponde com muito elevada probabi- lidade a um circuito mais lento do que seria possível com uma realização directa. Ao projectista cabe pesar, em cada caso, os prós e os contras de cada uma das hipóteses de solução. Este assunto será retomado em capítulos posteriores. Idealmente, o projecto deveria ser feito segundo uma aproximação top-down, isto é, a que se apresentou atrás, em que que se parte do nível de abstracção superior para ní- veis sucessivamente mais abaixo na hierarquia, até chegar aos módulos mais simples e, seguidamente, aos circuitos. No entanto, muitas vezes há condicionalismos em relação aos módulos já disponíveis para utilizar em níveis inferiores, por exemplo, por efeito da reutilização de módulos anteriormente projectados. Isso leva a que muitas vezes se combine, ou até se substitua, a estratégia top-down por uma estratégia bottom-up, em que se parte do conhecimento dos módulos disponíveis para a concepção de um circuito mais complexo. Uma criança que usa um conjunto LEGOTM para realizar uma constru- ção conhece, por experiência, esta realidade. Embora faça, em construções complexas, um plano da construção a implementar, não ignora o formato e a funcionalidade das peças de que realmente dispõe. No projecto de circuitos digitais é recorrente a utilização de certo tipo de módulos que representam funcionalidades relativamente comuns ou que permitem a implementação de funções lógicas, de uma forma alternativa e, em alguns casos, vantajosa. Nas secções seguintes serão estudados alguns desses módulos. 195 %��#�«�Ì%-�S�~�ff��ó%0�Ì�ó�� uffiöON û Ö ù Ú Ü û ÛdØmÛ*Ú ø.û Ü Õ×Ö ù O descodificador (em inglês, decoder) é um circuito que permite obter, a partir de um conjunto de bits que constituem uma palavra de código, a identificação dessa palavra. Para isso, o descodificador tem tantas saídas quanto o número de palavras de código e activa, em cada momento, apenas uma das muitas saídas correspondente à palavra de código presente nas entradas. E(�43fi��� /����Afiffi>��,.kl,A+�!��ffi>�����a06,�CB��>,.ffi(� Um descodificador binário de três entradas aceita nas entradas palavras de um código binário de 3 bits, isto é, as configurações entre 000 e 111, e tem oito saídas numeradas de 0 a 7. O modelo de terminais de um descodificador deste tipo está ilustrado na Fi- gura 4.7. É importante referir que, no modelo de terminais, deve ser claro qual é o peso I0 I1 I2 Descodi- ficador O0 O1 O2 O3 O4 O5 O6 O7 1 2 0 4 1 2 3 4 5 6 7 ?Ł,.qCY!�>�E(��f�; Modelo de terminais de um descodificador binário de três entradas. de cada uma das linhas em termos da palavra de código na entrada, o que é, em geral indicado pelos índices das variáveis de entrada. Do mesmo modo, é necessário ter a identificação clara de cada uma das saídas. Em termos de funcionamento pretendido, como está exposto acima, este pode ser des- crito pela Tabela 4.3, em que Oi é a saída correspondente à palavra i do código binário. A estrutura interna possível para um descodificador é extremamentefácil de definir. De facto, cada saída representa uma das possíveis configurações binárias das entradas. Por exemplo, se as entradas I2 e I1 estiverem activas e a I0 não estiver activa, a saída O6 deve estar activa, isto é, a 1, e todas as restantes saídas a 0. É fácil concluir que a saída O6 tem a Expressão 4.1. O6 = I0 I1 I2 (4.1) 196 / Ì%-}-+��ó� ��Ì/ ¬�Sfi0�flmó�Ì�ff�ó�Ñ%�á/·a%�f�þ��Ì/ �P+,�a¯�S%-�ó%-� 7 �!8+��9K�E(�^<+; Tabela de um descodificador binário de três entradas. Codificação binária Saídas I2 I1 I0 O7 O6 O5 O4 O3 O2 O1 O0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 Prolongando este raciocínio pode concluir-se que a Figura 4.8 representa a estrutura interna de um descodificador binário de três entradas. O exemplo apresentado de um descodificador binário de 3 bits pode, naturalmente, ser estendido a descodificadores binários com qualquer número de bits de entrada. Para além deste tipo de descodificadores (binários de n bits) existem descodificadores específicos para certos códigos, como, por exemplo, o código BCD. Esse tipo, em par- ticular, tem quatro entradas e dez saídas, que vão de O0 a O9. Como é evidente, as configurações das entradas que não correspondem a palavras do código BCD deixam todas as saídas inactivas. O modelo de terminais de um descodificador deste tipo está ilustrado na Figura 4.9. Em termos de funcionamento pretendido, como está descrito acima, este pode ser especifi- cado pela Tabela 4.4. É muito frequente que os descodificadores tenham as suas saídas activas a 0. Nessas circunstâncias, as portas internas são NAND em vez de AND, e a saída activa passa a ser a que está a 0, permanecendo as inactivas a 1. Há razões tecnológicas fortes para esta so- lução. Por um lado, as portas NAND são mais rápidas que as portas AND, o que permite construir descodificadores mais rápidos, utilizando portas NAND. Por outro lado, em TTL o valor 0 presente numa linha é mais consumidor de energia que o valor 1, porque a estrutura do circuito interno leva a que as correntes envolvidas na manutenção de um 0 sejam quase três ordens de grandeza superiores às que são necessárias para manter um 1. O mesmo acontece com as entradas de activação. É útil muitas vezes recorrer aos princípios da lógica de polaridade (Secção 3.2.2) para referir saídas e entrada de 197 %��#�«�Ì%-�S�~�ff��ó%0�Ì�ó�� I1 I0 I2 O0 O1 O2 O3 O4 O5 O6 O7 ?Ł,.qCY!�>�E(�4mfi; Possível estrutura interna do descodificador binário de três entradas. I0 I1 I2 Descodi- ficador BCD O0 O1 O2 O3 O4 O5 O6 O7 I3 O8 O9 0 1 2 3 4 5 6 7 8 9 1 2 4 8 ?Ł,.qCY!�>�E(�4nfi; Modelo de terminais de um descodificador BCD. activação activas a L e raciocinar em conformidade. Em termos de representação simbólica, os módulos, como o caso do descodificador bi- nário, são muitas vezes representados pelo seu modelo de terminais, eventualmente com algumas variantes, sendo referida essa representação, por vezes, como diagrama de 198 / Ì%-}-+��ó� ��Ì/ ¬�Sfi0�flmó�Ì�ff�ó�Ñ%�á/·a%�f�þ��Ì/ �P+,�a¯�S%-�ó%-� 7 �!8+��9K�E(�FE(; Tabela de um descodificador BCD. Codificação binária Saídas I3 I2 I1 I0 O9 O8 O7 O6 O5 O4 O3 O2 O1 O0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 blocos. Efi�^3fi�43 )*���+���>9�,qC�fifffifl(ffi �!�#D����A(ffi(��,.kl,A+�!�!ffi>�>��� Muitas vezes os módulos descodificadores disponíveis não têm o número de entradas (e saídas) que são necessárias para descodificar um determinado código. É por isso necessário proceder à expansão da capacidade de descodificação. Muitos descodificadores têm uma entrada de activação (em inglês, Enable). Essa entrada permite, quando activa, que o descodificador funcione normalmente. Quando não activa, inibe o seu funciona- mento, fazendo com que que todas as saídas fiquem inactivas. O funcionamento de um descodificador deste tipo é descrito pela Tabela 4.5. Usando circuitos desse tipo, podem ser construídos descodificadores de n entradas com descodificadores «menores». Exemplifica-se, na Figura 4.10, a construção de um desco- dificador binário de 4 bits utilizando descodificadores binários de 2 bits. No exemplo utilizado pode verificar-se que existe uma camada final de descodificadores em número suficiente para totalizar o número de saídas necessárias ao descodificador «global». Todos esses descodificadores partilham as mesmas linhas de entrada, pelo que descodificam o mesmo subconjunto de linhas do código à entrada, neste caso, as linhas I0 e I1. Existe um descodificador suplementar que, descodificando as restantes linhas do código de entrada, decide, através das linhas de activação, qual dos descodificado- 199 %��#�«�Ì%-�S�~�ff��ó%0�Ì�ó�� 7 �!8+��9��Efi�^]+; Tabela de um descodificador com linha de activação. Codificação binária Activação Saídas I1 I0 En S0 S1 S2 S3 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 1 1 0 1 0 0 1 0 0 0 0 0 0 1 0 1 0 0 1 0 1 1 0 0 0 0 0 1 1 1 0 0 0 1 O0 O1 O2 O3 O4 O5 O6 O7 O8 O9 O10 O11 O12 O13 O14 O15 Activação I0 I1 I2 I3 0 1 2 3 En 1 2 0 1 2 3 En 1 2 0 1 2 3 En 1 2 0 1 2 3 En 1 2 0 1 2 3 En 1 2 ?Ł,.qCY!�>�Efi� �lo(; Exemplo de construção de um descodificador binário de quatro entra- das, utilizando descodificadores binários de duas entradas. res da camada de saída está activo. Desse modo, continua a estar sempre apenas uma linha activa na saída. No caso exemplificado, um descodificador é suficiente para essa 200 / Ì%-}-+��ó� ��Ì/ ¬�Sfi0�flmó�Ì�ff�ó�Ñ%�á/·a%�f�þ��Ì/ �P+,�a¯�S%-�ó%-� tarefa. Em situações mais gerais pode ser necessário utilizar várias camadas de descodi- ficadores para obter o descodificador necessário. Uma outra observação relevante é que a numeração final das saídas depende do modo como as linhas do código de entrada são distribuídas pelos descodificadores. Se, por exemplo, as linhas I0 e I2 estivessem trocadas entre si, tal como as linhas I1 e I3, então a ordem das linhas de saída viria com- pletamente alterada. É um bom exercício para a compreensão do funcionamento deste circuito, obter essa ordem. Na Figura 4.10 há outro aspecto interessante: repare-se que existem linhas que têm um significado interno em relação aos descodificadores, e um significado externo, que de- pende do circuito total. Por exemplo, a linha O4, que é a linha que descodifica a palavra 4 do código tem esse significado na aplicação que está a ser analisada. Do ponto de vista do descodificador de onde provém, porém, essa é a linha de saída 0, significando que, para esse descodificador de 2 bits de entrada, essa é a linha activa quando as entradas representam a palavra 0 do código binário de 2 bits. Note-se que a entrada de activação, habitualmente existente nos descodificadores dispo- níveis, tem outras formas de utilização, para além da simples expansão da capacidade de descodificação. Uma possível estrutura interna de um descodificador com entrada de activação está ilustrada na Figura 4.11, para o caso dos descodificadores usados no exemplo anterior. I1 I0 O0 O1 O2 O3 En ?Ł,qtY!�(�E(��� ��; Estrutura interna de um descodificador binário de duas entradas com entrada de activação. 201 ��ó%�f�~�f��ó%0�Ì�ó�� uffiöOg ÚãÜ û ÛdØÛ*Ú ø×û Ü¿Õ.Ö ù O codificador (em inglês, encoder) é um circuito com umfuncionamento, de algum modo, inverso do do descodificador. No codificador, as entradas são um conjunto de linhas na mesma quantidade das palavras de um código, e as saídas são as necessárias para expressar o número de bits da palavra do código. O modelo de terminais de um co- dificador para um código binário de 3 bits está ilustrado na Figura 4.12. Nesta secção O0O1O2 Codifi- cador I0 I1 I2 I3 I4 I5 I6 I7 0 1 2 3 4 5 6 7 1 2 4 ?Ł,.qCY!�>�ÃE(���-3+; Modelo de terminais de um codificador para um código binário de 3 bits. serão analisados apenas codificadores binários a título de exemplo, mas, como é óbvio, podem ser implementados codificadores para qualquer código. E(�4<fi��� j6ffi(��,.kl,.A+�!�!ffi(�����a06,.�!B!�>,ffi>� Na sua versão mais simples, um codificador binário de 3 bits, por exemplo, pode ser concebido a partir da Tabela 4.6. Repare-se que a tabela não lista todas as configurações de variáveis de entrada, mas apenas as correspondentes a casos de interesse, em pri- meira análise. Obter as funções Oi a partir das variáveis Ij é impraticável, utilizando, por exemplo, o método de Karnaugh. É, porém, relativamente fácil concluir, por obser- vação da tabela, que cada função Oi pode obter-se por soma das variáveis de entrada, que colocam a função a 1 numa das configurações de saída. Assim, obter-se-iam as funções descritas pelas Expressões 4.2. O0 = I1 + I3 + I5 + I7 O1 = I2 + I3 + I6 + I7 (4.2) O2 = I4 + I5 + I6 + I7 Este circuito codificador poderia, portanto, ser construído facilmente a partir de três portas OR de quatro entradas. 202 / Ì%-}-+��ó� ��Ì/ ¬�Sfi0�flmó�Ì�ff�ó�Ñ%�á/·a%�f�þ��Ì/ �P+,�a¯�S%-�ó%-� 7 �!8+��9��Efi�^e+; Tabela muito simplificada do codificador binário de 3 bits. Entrada activa Código I7 I6 I5 I4 I3 I2 I1 I0 O2 O1 O0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 1 1 1 Acontece, porém, que este codificador teria um espectro de utilização muito limitado. Há dois aspectos que colocariam problemas à utilização deste codificador. Por um lado, o codificador não distingue a ocorrência da entrada activa I0 de uma outra situação completamente diferente, que é a de nenhuma entrada estar activa. O circuito com o comportamento descrito pela tabela acima, e com a implementação proposta, coloca em ambos os casos todas as saídas inactivas, isto é, O2 = O1 = O0 = 0. Ora, normalmente, interessa distinguir as duas situações. Uma forma de o fazer é acrescentar uma saída suplementar que indique se o código presente nas outras saídas é válido. Essa saída estará activa, sempre que haja uma entrada activa, e ficará inactiva quando não estiver nenhuma entrada activa. O segundo aspecto é de solução mais complexa. Trata-se da hipótese de mais de uma entrada estar activa. Nesse caso, o circuito, que não está projectado para essa even- tualidade, dará respostas que podem corresponder a ignorar uma das entradas ou a fornecer como saída uma configuração que não corresponde a nenhuma das entradas activas. Por exemplo, se estiverem activas as entradas I1 e I3, o circuito irá responder com a configuração de saída 011 correspondente à entrada I3. No caso de as entradas activas serem, por exemplo, I3 e I6, a resposta será 111, correspondendo à entrada I7, que não está activa. A solução para este problema passa por esclarecer, ao nível do comportamento pretendido, a reacção que o circuito deverá ter quando mais de uma entrada estiver activa e projectar o circuito em conformidade. Há, basicamente, duas soluções. Uma delas corresponde a só validar a saída quando estiver apenas uma en- trada activa. Trata-se de uma extensão da solução para o problema anterior. A solução mais interessante e com maior potencial em termos de aplicações é, porém, a de intro- duzir uma ordem de prioridades nas entradas, de tal modo que a entrada efectivamente 203 ��ó%�f�~�f��ó%0�Ì�ó�� codificada na saída seja a que, de acordo com essa ordem, é a mais prioritária. A ordem habitualmente escolhida é a ordem das entradas, sendo possível atribuir a maior prio- ridade à entrada I0 e a menor à entrada I7, com prioridades sucessivamente inferiores para as intermédias, ou o inverso. Na Tabela 4.7 é ilustrada a especificação de um codificador já com saída de validação e com prioridade nas entradas, sendo a entrada I7 a mais prioritária. 7 �!8+��9��Efi��f�; Tabela completa do codificador binário de 3 bits. DadosEntrada activa Código Válidos I7 I6 I5 I4 I3 I2 I1 I0 O2 O1 O0 DVAL 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 X 0 0 1 1 0 0 0 0 0 1 X X 0 1 0 1 0 0 0 0 1 X X X 0 1 1 1 0 0 0 1 X X X X 1 0 0 1 0 0 1 X X X X X 1 0 1 1 0 1 X X X X X X 1 1 0 1 1 X X X X X X X 1 1 1 1 Repare-se que, mantendo uma formulação muito compacta, a tabela, graças à utilização das indiferenças, é, agora, uma tabela completa com a representação implícita das 256 configurações possíveis das variáveis de entrada. A obtenção das funções de saída é fácil se se prescindir dos métodos mais clássicos e se fizer uma abordagem mais heu- rística. Por exemplo, a função referente a dados válidos, que se designará por DV , será dada pela Equação 4.3. DV = I0 + I1 + I2 + I3 + I4 + I5 + I6 + I7 (4.3) Quanto às funções Oi não é difícil, por leitura directa da tabela, retirar as Equações 4.4. O0 = I1 I2 I3 I4 I5 I6 I7 + I3 I4 I5 I6 I7 + I5 I6 I7 + I7 O1 = I2 I3 I4 I5 I6 I7 + I3 I4 I5 I6 I7 + I6 I7 + I7 (4.4) O2 = I4 I5 I6 I7 + I5 I6 I7 + I6 I7 + I7 204 / Ì%-}-+��ó� ��Ì/ ¬�Sfi0�flmó�Ì�ff�ó�Ñ%�á/·a%�f�þ��Ì/ �P+,�a¯�S%-�ó%-� Se se utilizarem as técnicas algébricas de manipulação das expressões descritas no Ca- pítulo 2 chega-se às Equações 4.5, bastante mais simples. O0 = I1 I2 I4 I6 + I3 I4 I6 + I5 I6 + I7 O1 = I2 I4 I5 + I3 I4 I5 + I6 + I7 (4.5) O2 = I4 + I5 + I6 + I7 uffiövu ��ß x R0ÛdÔ x Ö/z ø×û Ü¿Õ.Ö ù O multiplexador é um circuito muito comum em sistemas digitais. A funcionalidade bá- sica de um multiplexador é a de um circuito que selecciona de entre várias entradas uma cujo valor coloca na saída. O multiplexador tem, portanto, entradas de dados, das quais selecciona uma, e entradas de controlo ou selecção, que permitem escolher qual das entradas de dados é colocada na saída. Um multiplexador de quatro entradas de dados, por exemplo, terá o modelo de terminais ilustrado na Figura 4.13. Por facili- dade e clareza, muitas vezes a palavra «Multiplexador» é substituída pela abreviatura «MUX» neste tipo de representação. As entradas Ii são as entradas de dados, e as Si I1 I2 I0 I3 S1S0 O Multiple- xador 0 1 2 3 1 2 ?Ł,qtY��>�Efi� �c<fi; Modelo de terminais de um multiplexador de quatro entradas. as de selecção. O número binário colocado no par S1 S0 determina a entrada cujo va- lor é colocado na saída. O comportamento descrito pode ser ilustrado, em termos de descrição funcional, pela Tabela 4.8. Esta tabela não é uma tabela de verdade clássica da função O de saída do multiplexador em função das variáveis de entrada. De facto, trata-se de uma representação muito condensada dessa tabela. Tem, porém, a vantagem de apresentar uma muito melhor legibilidade e clareza. A mesma descrição funcional 205 /·}-+,flm�S�@+,�a¯ó�%-�ó�Ì�� 7 �!8+��9��Efi�^mfi; Tabela condensada do funcionamento de um multiplexador. S1 S0 O 0 0 I0 0 1 I1 1 0 I2 1 1 I3 em termos de uma tabela mais clássica, ainda que também com algum grau de conden- sação pela utilização de indiferenças, é muito menos clara, como se pode observar na Tabela 4.9. 7 �!8+��9K�E(�4nfi; Tabela expandida do funcionamento de um multiplexador. EntradasEntradas de dados de Selecção Saída I3 I2 I1 I0 S1 S0 O X X X 0 0 0 0 X X X1 0 0 1 X X 0 X 0 1 0 X X 1 X 0 1 1 X 0 X X 1 0 0 X 1 X X 1 0 1 0 X X X 1 1 0 1 X X X 1 1 1 E(�FE(��� �����9�,.»��(ff+fl(ffi �!�#XY!9s�[,��9r�-��!�!ffi(����� A estrutura interna de um multiplexador é fácil de compreender, embora se possa im- plementar de diversas formas. Talvez a mais evidente seja a apresentada na Figura 4.14. Repare-se que o descodificador tem como entradas as linhas de selecção do multiplexa- dor e, de acordo com o seu funcionamento, tem apenas uma linha de saída activa. Se, por exemplo, tivermos a configuração S1S0 = 10, apenas a linha 2 de saída do desco- dificador está activa. Isso significa que todas as portas AND com excepção da ligada à linha activa do descodificador (2, no exemplo referido) têm uma entrada a 0 e, portanto, 206 / Ì%-}-+��ó� ��Ì/ ¬�Sfi0�flmó�Ì�ff�ó�Ñ%�á/·a%�f�þ��Ì/ �P+,�a¯�S%-�ó%-� 0 1 2 3 S0 S1 I0 I1 I2 I3 O 1 2 ?Ł,qtY!�(�Efi� �cEfi; Possível implementação de um multiplexador com quatro entradas de dados. a saída a 0. A saída O do multiplexador será portanto igual à linha de entrada Ii selec- cionada por este processo (no exemplo, I2), uma vez que a saída do AND ligado à saída activa do descodificador vai ser igual à entrada Ii ligada a esse mesmo AND. Uma realização alternativa do mesmo circuito, prescindindo do descodificador explí- cito, com menos camadas de portas e, portanto, mais rápida, está ilustrada na Figu- ra 4.15 e deve agora ser de fácil compreensão. Uma terceira forma de implementação interna de um multiplexador assenta na utiliza- ção de buffers de três estados. A Figura 4.16 ilustra essa estrutura. Já na Secção 3.1.6, quando da apresentação dos buffers de três estados, este tipo de aplicação desses dispo- sitivos tinha sido referido, sendo apresentada na Figura 3.14 aquilo que é, na prática, um multiplexador de duas entradas de dados. Finalmente existe uma forma de construir multiplexadores que não utiliza apenas cir- cuitos digitais. Trata-se de uma implementação semelhante à baseada em buffers de três estados, em que estes são substituídos por portas de passagem, que foram já referidas na Secção 3.1.6. Na Figura 4.17 ilustra-se um multiplexador construído segundo essa abordagem. É interessante verificar que este circuito não multiplexa apenas sinais di- gitais. De facto, as propriedades das portas de passagem permitem que sejam também multiplexados sinais analógicos, alargando as utilizações deste tipo de circuitos a um espectro mais largo de aplicações. 207 /·}-+,flm�S�@+,�a¯ó�%-�ó�Ì�� S0 S1 I0 I1 I2 I3 O ?Ł,.qCY!�>�¡E(���-]fi; Implementação alternativa de um multiplexador com quatro entradas de dados. S0 S1 I0 I1 I2 I3 O 0 1 2 3 1 2 ?Ł,.qCY!�>�©E(� �cefi; Implementação de um multiplexador com 4 entradas de dados utili- zando buffers de três estados. 208 / Ì%-}-+��ó� ��Ì/ ¬�Sfi0�flmó�Ì�ff�ó�Ñ%�á/·a%�f�þ��Ì/ �P+,�a¯�S%-�ó%-� S0 S1 I0 I1 I2 I3 0 1 2 3 O 1 2 ?Ł,qtY!�(�ÄE(����f�; Implementação de um multiplexador com quatro entradas de dados utilizando portas de passagem. Por vezes, convém que o multiplexador seja dotado de um sinal de activação que per- mita controlar melhor o seu funcionamento. O sinal de activação permite, quando acti- vo, que o multiplexador tenha a funcionalidade descrita. Quando inactivo, provoca que a saída do dispositivo esteja não activa, independentemente do que se passa com as entradas. No caso dos dois primeiros exemplos dados, a saída ficará permanentemente a 0, enquanto que, no caso das estruturas usando buffers de três estados ou portas de passagem, a saída ficará no estado de alta impedância. Na Figura 4.18 ilustra-se a modi- ficação necessária na terceira das estruturas apresentadas atrás, a título exemplificativo, para incluir a linha de activação. 209 /·}-+,flm�S�@+,�a¯ó�%-�ó�Ì�� 0 1 2 3 S0 S1 I0 I1 I2 I3 S Activação 1 2 En ?Ł,.qCY!�>�ªE(���-mfi; Implementação de um multiplexador com quatro entradas de dados utilizando buffers de três estados, com entrada de activação. E(�FE(�43 7 ,.��ffi(�/�!�#X:Y!9Z�[,��9r�-��!�!ffi(����� Os multiplexadores estudados até aqui são circuitos que permitem seleccionar um de entre vários sinais binários. Nada impede que, por simples justaposição de multiplexa- dores, se construam circuitos que permitem seleccionar, não sinais isolados e, portanto, bits, mas palavras de uma determinada dimensão. É frequente a existência de multi- plexadores de palavras de n bits com linhas de selecção que são comuns aos vários bits das diversas palavras. Na Figura 4.19 ilustra-se o modelo de terminais de um multiple- xador que escolhe uma das duas palavras, A0 B0 C0 D0 (se S0 = 0) e A1 B1 C1 D1 (se S1 = 1), e a coloca nas saídas, OA OB OC OD. E(�FE(�4< ��¤�!�C�fl(ffi�!�#X:Y!9s��,.��9���>�!�!ffi>����� A expansão de multiplexadores para se obterem multiplexadores com um maior nú- mero de entradas é um problema semelhante ao da expansão de descodificadores já estudado atrás e pode ser feita de duas formas básicas. A primeira forma utiliza o pró- prio conceito de multiplexador para multiplexar sucessivamente linhas de dados em conjuntos menores até atingir a linha única de saída. A segunda forma utiliza o conhe- 210 / Ì%-}-+��ó� ��Ì/ ¬�Sfi0�flmó�Ì�ff�ó�Ñ%�á/·a%�f�þ��Ì/ �P+,�a¯�S%-�ó%-� B0 C0 A0 D0 S0 B1 C1 A1 D1 OB OC OA OD Multiple- xador de palavras de 4 bits 0 1 ?Ł,.qCY!�>�E(���-nfi; Modelo de terminais de um multiplexador de duas palavras de 4 bits. cimento da estrutura interna dos multiplexadores para reduzir o problema da expansão de multiplexadores ao da expansão dos seus descodificadores internos. Através de um exemplo, ilustrado na Figura 4.20, em que se realiza a construção de um multiplexador de dezasseis entradas a partir de multiplexadores de quatro entra- das, ilustra-se a primeira opção. Repare-se que, mais uma vez, para sistemas de maior dimensão, a solução é a de utilização de camadas sucessivas de dispositivos até atin- gir a profundidade necessária. Nesta solução, não são necessárias linhas de activação nos multiplexadores. A ser necessário que o conjunto tenha uma linha de activação, ela poderá existir simplesmente no multiplexador da última camada. A variante do mesmo sistema usando agora a expansão através dos descodificadores está ilustrada na Figura 4.21. Como é evidente, este tipo de solução exige que os mul- tiplexadores tenham entrada de activação. Repare-se, ainda, que, se se trabalhar com multiplexadores de saídas de três estados, a porta OR à saída é dispensável. Efi�4E(�FE X:Y!9Z�[,.� 9r�-��(qC��&Ä�#/����&=Y!9Z�[,.� 9r�-��(qC��& A aplicação principal dos multiplexadores é a de realizar a multiplexagem e desmulti- plexagem de um conjunto de sinais. O que se pretende é transferir um de vários sinais através de uma única linha, colocando o sinal transmitido, já do lado da recepção, numa de várias linhas possíveis. Este tipo de aplicação permite a transmissão à distância de informação proveniente de várias origens através de uma única linha, desde que o con- junto de todos os sinais a enviar não exceda a capacidade da linha. Também, num tipo 211 /·}-+,flm�S�@+,�a¯ó�%-�ó�Ì�� S0 MUX 0 1 2 3 I0 I1 I2 I3 I4 I5 I6 I7 I8 I9 I10 I11 I12 I13 I14 I15 O MUX 0 1 2 3 MUX 0 1 2 3 MUX 0 1 2 3 MUX 0 1 2 3 S2S3 S1 1 2 1 2 1 2 1 2 1 2 ?Ł,.qCY!�>�LE(�^3�o(; Construção de um multiplexador de dezasseis entradas com multiple- xadores de quatro entradas. de aplicação mais local, é importante poder seleccionar, entre vários sinais, aquele que, em cada momento, deve ser seleccionado para ser processado por um determinado cir- cuito. A desmultiplexagem será feita por um desmultiplexador.Este circuito deve ter uma en- trada de dados e várias saídas, podendo ser seleccionada, através de um conjunto de 212 / Ì%-}-+��ó� ��Ì/ ¬�Sfi0�flmó�Ì�ff�ó�Ñ%�á/·a%�f�þ��Ì/ �P+,�a¯�S%-�ó%-� En S2 S3 S0 0 1 2 3 I0 I1 I2 I3 I4 I5 I6 I7 I8 I9 I10 I11 I12 I13 I14 I15 Activação O MUX 0 1 2 3 En MUX 0 1 2 3 En MUX 0 1 2 3 En MUX 0 1 2 3 En 1 2 1 2 1 2 1 2 1 2 S1 ?Ł,qtY!�(�°E(�^3[��; Variante de construção de um multiplexador de dezasseis entradas com multiplexadores de quatro entradas. linhas de selecção, qual a saída utilizada. A Figura 4.22 mostra o modelo de terminais de um circuito desse tipo. Repare-se na designação abreviada «DEMUX», que pode 213 /·}-+,flm�S�@+,�a¯ó�%-�ó�Ì�� DEMUX D O0 O1 O2 O3 S0 S1 1 2 0 1 2 3 ?Ł,.qCY!�>�E(�43 3+; Modelo de terminais de um desmultiplexador. substituir a designação «desmultiplexador», mais longa. O circuito desmultiplexador terá o funcionamento especificado pela Tabela 4.10. Uma breve análise comparativa da 7 �!8+��9K�E(���co(; Tabela de um desmultiplexador. Entradas Entrada Saídas de selecção de dados S1 S0 D O0 O1 O2 O3 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 1 1 0 1 0 0 1 0 0 0 0 0 0 1 0 1 0 0 1 0 1 1 0 0 0 0 0 1 1 1 0 0 0 1 Tabela 4.10 com a Tabela 4.5 permite concluir que, embora a aplicação de um desmul- tiplexador seja conceptualmente diferente da de um descodificador, a funcionalidade pretendida é a mesma, pelo que o mesmo circuito tem, de facto, as duas aplicações. A interpretação do funcionamento é que é diferente. A Figura 4.23 ilustra um circuito que permite multiplexar quatro linhas numa única linha e recuperar posteriormente esses sinais. Repare-se que, se as variáveis de selecção S0 e S1 tiverem uma configuração idêntica no multiplexador e no descodificador, a linha seleccionada é «entregue» na linha correspondente à saída. Se as configurações forem diferentes, é possível realizar uma comutação de sinais, acrescentando-se à função de multiplexagem uma funcionalidade suplementar. 214 / Ì%-}-+��ó� ��Ì/ ¬�Sfi0�flmó�Ì�ff�ó�Ñ%�á/·a%�f�þ��Ì/ �P+,�a¯�S%-�ó%-� 0 1 2 3 En MUX 0 1 2 3 DadosI0I1 I2 I3 O0 O1 O2 O3 1 2 1 2 S0S1 S0S1 ?Ł,qtY!�(�E(�^3�<fi; Utilização de um multiplexador e de um descodificador para a multi- plexagem e desmultiplexagem de quatro linhas. uffiöO½ Õ.Ö ø�x Û[ ø���� Ü û Ö Øß ý �QP Ö ù¼x h�iúÛ*Ú øúù ÚãÜJ� �5h û ß x Ü ù û Ö¼�ÄT û Û ø ÚãÜJ��Ô x Ö%z×Û û¿ø×û Ö Os diversos módulos apresentados neste capítulo devem ser encarados pelos projectis- tas como módulos disponíveis, com uma determinada funcionalidade, mas com po- tencialidades para utilizações diversas das inicialmente apresentadas. Uma das possi- bilidades mais utilizadas consiste na utilização desses módulos como blocos de lógica utilizáveis para a implementação de funções lógicas, eventualmente em conjunto com alguma porta adicional. Serão estudados adiante alguns casos. Efi�^]fi��� ��-�!9�,»r�(fffi\>���aA(ffi(&5/����Afiffi>��,.kl,A+�!�!ffi(����� Repare-se que um descodificador binário implementa, nas suas saídas, todos os minter- mos das variáveis de entrada. De facto, qualquer saída é um produto de literais, que são sempre todas as variáveis de entrada, negadas ou não. Por exemplo, a saída S3 do descodificador da Figura 4.8 é dada pela Expressão 4.6. O3 = I2 I1 I0 (4.6) Ora, como é evidente, m3 = O3. Assim, deve ser possível usar o descodificador para gerar todos os mintermos de um conjunto de variáveis. Nessas circunstâncias, para implementar uma função na forma de soma de minter- mos, pode-se partir de um descodificador que gera todos os possíveis mintermos e, com auxílio de uma soma lógica, produzir a função pretendida. Seguidamente ilustra- -se na Figura 4.24 um circuito, usando esse princípio, que implementa a função lógica F (a, b, c) = ∑ m(0, 2, 3, 5). 215 �ó�a�ó+,�ff§,�-!"�ñ%-�ô�~}-fiª!«Ì�� +ffió'-�ff��-�Ñ�«�Ì/ /üÌ%}-+ffi�ó� %-� / a%�f�þ��Ì/·�@+,�a¯�S%-�ó%-� 0 1 2 3 4 5 6 7 c b a m0 m1 m2 m3 m4 m5 m6 m7 F(a,b,c) 1 2 3 ?Ł,.qCY!�>�E(�43�E(; Implementação da função F (a, b, c) = ∑ m(0, 2, 3, 5) usando um desco- dificador. E(�4]fi�43 �����9�,.»��(fffi\>���aAfiffi>&1X:Y!9s��,.��9�������!ffi>����� Tal como acontece com os descodificadores, é possível utilizar multiplexadores para im- plementar funções lógicas. Essa aplicação é possível pelo facto de ele ser internamente uma soma de produtos de todas as variáveis de selecção, incluindo em cada um desses produtos uma variável suplementar. Esta estrutura pode ser interpretada como uma soma de mintermos das variáveis de selecção, que podem ou não ser seleccionados pelas variáveis de dados para implementar uma determinada soma e, portanto, uma determinada função. 7 �!8+��9��Efi� � � ; Tabela de uma função a ser implementada usando um multiplexador. a b f(a, b) 0 0 0 0 1 1 1 0 1 1 1 0 Considere-se, por exemplo, a função descrita na Tabela 4.11. Utilizando um multiplexa- dor de duas linhas de selecção e de quatro linhas de dados (tantas quantas as linhas da tabela), comece-se por ligar as variáveis da função às linhas de selecção do multiplexa- dor respeitando a ordem de pesos, como se ilustra na Figura 4.25. Quando a = 0 e b = 0, o multiplexador selecciona para a sua saída o valor presente na entrada de dados 0. A função, nessas circunstâncias, tem o valor 0 (primeira linha da tabela). Se se ligar o valor lógico 0 à entrada 0 do multiplexador, este, quando a = b = 0, apresentará na sua saída o valor da função para essa configuração. Se se fizer o mesmo para o resto das entradas 216 / Ì%-}-+��ó� ��Ì/ ¬�Sfi0�flmó�Ì�ff�ó�Ñ%�á/·a%�f�þ��Ì/ �P+,�a¯�S%-�ó%-� 1 1 0 0 ab f(a,b) 1 2 0 1 2 3 MUX ?Ł,.qCY!�>�E(�43 ]+; Implementação da função f(a, b) usando um multiplexador. do multiplexador e das linhas respectivas da tabela, o multiplexador representará toda a função. Isso permite que, usando um multiplexador de n variáveis de selecção, se construa qualquer função de n variáveis. Mas pode-se ir um pouco mais longe. Usando o mesmo multiplexador de duas entra- das de selecção, é possível implementar, com alguma facilidade, uma função de três variáveis. Considere-se, como exemplo, a função descrita na Tabela 4.12. 7 �!8+��9��E(���-3fi; Tabela de uma segunda função a ser implementada usando um multi- plexador. a b c f(a, b, c) 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 0 Comece-se por ligar duas das variáveis de entrada às entradas de selecção do multiple- xador. Podem ser escolhidas quaisquer duas, mas será mais evidente a fundamentação da técnica, se se escolherem as duas de maior peso, a e b. Ligam-se, tal como anterior- mente, como se ilustra na Figura 4.26. Repare-se agora no que acontece quando a = 0 e b = 0. O multiplexador selecciona a entrada de dados 0. A função tem duas linhas, na tabela em que a = 0 e b = 0, que só diferem no valor da variável c. Para ambas, o valor da função é 0. Logo, como no caso anterior, a ligação dessa entrada ao valor lógico 217 �ó�a�ó+,�ff§,�-!"�ñ%-�ô�~}-fiª!«Ì�� +ffió'-�ff��-�Ñ�«�Ì/ /üÌ%}-+ffi�ó� %-� / a%�f�þ��Ì/·�@+,�a¯�S%-�ó%-� c 1 0 c f(a,b,c) ab 1 2 0 1 2 3 MUX ?Ł,qCY!�>�Efi�^3�efi; Implementação da função f(a, b, c) usando um multiplexador. 0 permite que, para estas duas configurações, a saída do multiplexador corresponda ao valor da função. Na situação seguinte, a = 0 e b = 1, já a tabela não tem o mesmo valor para as duas linhas. De facto, nesse caso, a função vale 0 quando c = 0 e vale 1 quando c = 1. Isto é, nessa «fatia»da tabela, a função vale c. Então, a entrada 1 de dados do multiplexador deve ser ligada a c. Fazendo o mesmo tipo de análise para as restantes linhas, pode reestruturar-se a tabela da função evidenciando o seu comportamento nas diversas «fatias», como se ilustra na Tabela 4.13. 7 ��8fi��9��E(� �c<fi; Tabela modificada da segunda função. a b c f(a, b, c) 0 0 0 0 0 0 1 0 f = 0 0 1 0 0 0 1 1 1 f = c 1 0 0 1 1 0 1 1 f = 1 1 1 0 1 1 1 1 0 f = c O circuito representado na Figura 4.26 representa, portanto, a implementação da função apresentada. Repare-se que, na função escolhida para exemplo, existem todas as confi- gurações possíveis para as «fatias» da tabela. Portanto, é sempre possível utilizar esta técnica para representar uma função de n + 1 variáveis utilizando um multiplexador com n variáveis de selecção e, eventualmente, uma negação. Nas entradas de dados podem ser colocadas as quatro possíveis funções da variável n + 1: as constantes 0 e 1, a função negação e a própria variável. 218 / Ì%-}-+��ó� ��Ì/ ¬�Sfi0�flmó�Ì�ff�ó�Ñ%�á/·a%�f�þ��Ì/ �P+,�a¯�S%-�ó%-� Esta ideia pode ser estendida para a implementação de funções de n + m variáveis com multiplexadores de n variáveis de selecção e funções de m variáveis nas entradas de dados do multiplexador. uffiöOÅ Ú0ÛdÕ.Ú0ß Û RãÜ ù Û R-ÖÌÕ ø R0Û�Æ×Ü ù Nos diversos tipos de módulos básicos anteriormente descritos neste capítulo foi sem- pre assumido, de forma mais ou menos explícita, que a sua concepção se fazia global- mente. No entanto, em certo tipo de circuitos, é preferível abordar o problema de ma- neira diferente, procurando, como aconteceu no exemplo inicial referente à iluminação de um corredor, encontrar uma estrutura baseada na justaposição de um conjunto de módulos iguais. Os circuitos iterativos são circuitos compostos por uma sequência de cir- cuitos iguais ou células, interligados de forma regular. Nesta secção, apresentar-se-á um pouco mais pormenorizadamente o conceito e será projectado um circuito comparador de dois números binários usando essa técnica. Os circuitos iterativos são usados quando existe um número significativo de entradas e é possível organizar o circuito numa sequência de módulos que consideram o valor de algumas entradas, bem como informação resumida de um conjunto de entradas tratadas pelos módulos anteriores na sequência, para calcular, eventualmente, saídas primárias directas e, ainda, um conjunto de saídas que resume a informação pertinente a passar ao módulo seguinte na sequência. A utilização deste tipo de circuitos permite simplificar a concepção de módulos combinatórios que tenham alguma regularidade. Assim, em vez de conceber um circuito com um grande número de entradas, é possível dividir o circuito num certo número de células iguais com um número muito menor de entradas. Um circuito iterativo terá, portanto, a estrutura ilustrada na Figura 4.27. A célula i ... ... ...... I00 I0n O00 O0m T00 T0p T10 T1p ... ... ...... I10 I1n O10 O1m T20 T2p ... ... ...... Ik0 Ikn Ok0 Okm Tk0 Tkp T(k+1)0 T(k+1)p ... ?Ł,.qCY!�>�E(�43[f�; Estrutura de um circuito iterativo. recebe entradas primárias do circuito (Iij), e também entradas provenientes da célula anterior (Til), e produz saídas primárias (Oip) e saídas destinadas à célula seguinte 219 ��S��}�ffl�ó� �fflm�<�ó�fl@�SÐ-�ó� (T(i+1)l). Embora, em princípio, a circulação de informação entre células seja unidi- reccional, nada impede a concepção de circuitos mais complexos com circulação bidi- reccional de informação entre células. Para ilustrar a forma de concepção deste tipo de circuitos, considere-se um exemplo típico de um circuito comparador. O comparador tem como entradas dois números binários A e B de n bits e indica se são iguais ou diferentes e, neste último caso, qual é o maior. É possível conceber o circuito como um conjunto de funções de 2n variáveis de entrada, mas, para um valor de n minimamente interessante, atingem-se rapidamente dimensões de circuito que não viabilizam a utilização dos métodos clássicos para a sua síntese. Utilizando o paradigma dos circuitos iterativos, é possível dividir o circuito em células que tratam apenas um bit de cada um dos números. A célula i tem, portanto, como entradas primárias o bit i de cada um dos dois números. Da célula anterior recebe in- formação sobre a análise do número até ao bit anterior e à célula seguinte fornece infor- mação sobre a análise até ao bit i. Nesta organização há que definir a ordem pela qual os bits são analisados. Na realidade é possível usar qualquer das duas ordens possí- veis, isto é, com as células que analisam os bits mais significativos a passar informação às células correspondentes aos bits menos significativos, ou pela ordem inversa. No exemplo, assumir-se-á que a ordem de análise é do bit mais significativo para o menos significativo. Como se verá, as saídas primárias das células não são necessárias neste circuito. Um ponto importante neste tipo de circuito, é a definição da informação necessária entre células. No caso do comparador, a primeira célula irá comparar os bits mais significa- tivos dos dois números. Se eles forem iguais, a informação a transmitir é a de que, até àquele bit, os números não diferem. Se pelo contrário forem diferentes, terá de ser dada a indicação que A > B ou A < B. Repare-se que, se o bit de maior peso de um dos números for 1, e o outro for 0, o primeiro número é maior que o segundo. Se, pelo contrário, forem iguais, não se pode concluir nada, tendo de ser considerados os bits seguintes. A arquitectura do circuito será, portanto, a ilustrada na Figura 4.28. As saídas da última célula, vão ser as saídas finais do circuito. Repare-se que se podiam ter usado dois bits entre as células, uma vez que só há que codificar três diferentes informações. No entanto, a utilização de três linhas simplifica a interpretação do circuito e não o torna mais complexo. A estrutura interna de cada célula pode agora ser determinada. Isso pode ser feito de dois modos possíveis: ou se determina a tabela das funções de saída, ou se determina directamente a expressão das funções de saída, por análise do comportamento preten- 220 / Ì%-}-+��ó� ��Ì/ ¬�Sfi0�flmó�Ì�ff�ó�Ñ%�á/·a%�f�þ��Ì/ �P+,�a¯�S%-�ó%-� Bn-1 (A>B)n-1 An-1 (A=B)n-1 (A<B)n-1 Bn-2An-2 B0A0 (A>B)n-2 (A=B)n-2 (A<B)n-2 (A>B)n-3 (A=B)n-3 (A<B)n-3 ... (A>B)0 (A=B)0 (A<B)0 (A>B) (A=B) (A<B) ?Ł,qCY!�>�Efi�^3�mfi; Estrutura de um comparador iterativo. dido. Usando este último método, considere-se a célula i. Esta célula tem como entradas as variáveis primárias Ai e Bi e como entradas provenientes da célula anterior, (A>Bi), (A=Bi) e (A<Bi). Considere-se a função (A>Bi−1). Esta célula considerará que A > B em duas condições: a célula anterior ter já essa conclusão, ou, no caso da célula anterior indicar que, até ela, se verifica A = B, se Ai = 1 e Bi = 0 nesta célula. É, então, fácil de definir a Expressão 4.7. (A>Bi−1) = (A>Bi) + (A=Bi) Ai Bi (4.7) De igual modo podem definir-se as Expressões 4.8 e 4.9. (A=Bi−1) = (A=Bi) Ai Bi + (A=Bi) Ai Bi (4.8) (A<Bi−1) = (A<Bi) + (A=Bi) Ai Bi (4.9) O circuito de uma célula será, portanto, o ilustrado na Figura 4.29. A interligação de n células deste tipo, com a estrutura da Figura 4.28, permite construir um comparador de números de n bits. Na Figura 4.30 ilustra-se um comparador para números de quatro bits. As entradas da célula correspondente aos bits mais signifi- cativos, devem ser colocadas em valores que permitam à primeira célula, decidir não condicionada, isto é, deve ser (A>B3) = (A<B3) = 0 e (A=B3) = 1. Se se considerar a comparação dos números A = 12 e B = 10, a sequência de sinais é a ilustrada na referida figura, uma vez que 1210 = 11002 e 1010= 10102. Um aspecto importante, que deve ser considerado quando se interligam módulos da forma sistemática que é descrita nesta secção, é a velocidade possível de funcionamento do circuito. Como foi visto anteriormente, a soma dos atrasos das portas lógicas ao longo do caminho crítico define o tempo de reacção do circuito e, por consequência, a velocidade máxima a que ele poderá ser operado, quando for incluído num sistema. A título de exemplo, considere-se o comparador da Figura 4.28, realizado com as células da Figura 4.29. Cada célula irá impôr, entre as entradas que recebe do módulo anterior, 221 ��S��}�ffl�ó� �fflm�<�ó�fl@�SÐ-�ó� Ai Bi (A>B)i (A=B)i (A<B)i (A>B)i-1 (A=B)i-1 (A<B)i-1 ?Ł,qCY!�>�Efi�^3�nfi; Célula de um comparador iterativo. B3 (A>B)3 A3 (A=B)3 (A<B)3 B2A2 B0A0 (A>B)2 (A=B)2 (A<B)2 (A>B)1 (A=B)1 (A<B)1 (A>B)0 (A=B)0 (A<B)0 A>B A=B A<B B1A1 1 01 1 10 0 0 1 0 0 0 1 0 1 0 0 1 0 0 1 0 0 ?Ł,.qCY!�>�E(�4<�o(; Ilustração do funcionamento de um comparador iterativo de números de quatro bits. e as saídas que envia para o módulo seguinte, um atraso de duas portas lógicas. A composição de N células, para realizar um comparador de N bits, irá assim exibir um atraso total equivalente ao de 2N portas lógicas. Para um comparador de 32 bits, isto significa um atraso de 64 portas lógicas, que po- derá ser demasiado para muitas aplicações. Com outras implementações do mesmo comparador, será possível obter tempos de resposta significativamente menores. Em muitos casos, circuitos que podem ser realizados de forma iterativa, tais como com- paradores, somadores e multiplicadores são exactamente aqueles que limitam o desem- penho dos circuitos digitais. Para evitar as severas limitações impostas pelo uso de cir- cuitos iterativos simples, como os descritos nesta secção, foram desenvolvidas técnicas 222 / Ì%-}-+��ó� ��Ì/ ¬�Sfi0�flmó�Ì�ff�ó�Ñ%�á/·a%�f�þ��Ì/ �P+,�a¯�S%-�ó%-� que permitem construir circuitos mais rápidos, com base em esquemas de interligação mais complexos. Algumas destas técnicas serão abordadas em capítulos posteriores. ù ß���Ù×Õ×Û*Ü Neste capítulo, é estudado o projecto de sistemas digitais baseada em módulos de mé- dia complexidade. Em primeiro lugar é introduzido o conceito de modularidade e a abordagem de projecto utilizando a partição de circuitos em módulos mais simples. São estudados vários tipos de módulos base, quer quanto às suas arquitecturas, quer no que respeita a aplicações típicas e métodos de expansão. Neste contexto são estudados des- codificadores, codificadores e multiplexadores. São ainda referidas metodologias para a utilização de módulos deste tipo para a implementação de circuitos que implementam funções lógicas. O capítulo termina com uma discussão da utilização de circuitos ite- rativos para o projecto de módulos que têm como entrada palavras em vez de simples configurações de bits. Ö/z×ÖÌÕ¿Ú{*Ú0Û*Ü ù 4.1 Desenhe o logigrama de um descodificador BCD/decimal. 4.2 Desenhe um transcodificador que aceita nas suas entradas um digito BCD, e for- nece, nas suas saídas, o código requerido para acender um mostrador de sete seg- mentos representativo do dígito de entrada. O código de sete segmentos é uma forma de representar dígitos através de sete segmentos de recta com a arrumação que se ilustra na figura seguinte: a b c d e f g 4.3 Utilizando apenas descodificadores binários de duas entradas, construa um des- codificador binário de seis entradas. 4.4 Utilizando apenas dois descodificadores binários de duas entradas e portas AND de duas entradas, construa um descodificador binário de quatro entradas. Sugestão: considere a hipótese de combinar as saídas dos dois descodificadores. 223 ��S��}�ffl�ó� �fflm�<�ó�fl@�SÐ-�ó� 4.5 Utilizando, como elemento de base, um descodificador BCD/decimal, implemente a função f(A,B,C,D) = ∑ m(0, 1, 2, 4, 8). Com um descodificador deste tipo não podem ser implementadas todas as funções de quatro variáveis. Porquê? Pode-se considerar, assim, que a função f(A,B,C,D) = ∑ m(0, 8, 10, 11, 13) é uma das não implementáveis. No entanto, é implementável. Como? 4.6 Utilizando como elemento base um descodificador binário de três variáveis de entrada, e a lógica adicional que considere necessária, construa as quatro funções descritas na seguinte tabela: x y z f0(x, y, z) f1(x, y, z) f2(x, y, z) f3(x, y, z) 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 1 1 1 0 1 1 1 0 0 0 1 0 0 1 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 1 0 1 0 4.7 Considere o codificador com prioridade apresentado na Secção 4.3. Partindo do projecto realizado, acrescente uma linha de habilitação. Utilizando esse codifica- dor como bloco básico, construa um codificador com prioridade para 32 entradas. 4.8 Considere o circuito da figura. Qual é a função lógica implementada pelo circuito? 124 MUX0 1 2 3 4 5 6 7 0 1 D A B C F 4.9 Utilizando buffers de três estados e a lógica adicional mínima que considere neces- sária, construa um multiplexador de oito entradas de dados. 224 / Ì%-}-+��ó� ��Ì/ ¬�Sfi0�flmó�Ì�ff�ó�Ñ%�á/·a%�f�þ��Ì/ �P+,�a¯�S%-�ó%-� 4.10 Considere que dispõe de multiplexadores de três variáveis de selecção, com saída de três estados, controlada por uma variável de habilitação. Construa um multi- plexador de 64 entradas com uma arquitectura que aproveite o facto das saídas serem de três estados. 4.11 Considere o circuito representado na figura seguinte que implementa uma função lógica F . Implemente a mesma função usando um multiplexador de três variáveis X Y Z 0 1 2 3 4 5 6 7 1 2 4 DEC F de selecção. Repita, tendo como base um multiplexador de duas variáveis de selecção. 4.12 Como se viu na Secção 3.4.2 podem ocorrer transições espúrias num circuito com- binatório se não forem tomadas medidas específicas. É possível realizar esse tipo de medidas numa função implementada com base num multiplexador? 4.13 Considere a função lógica f(A,B,C,D,E) = B C D + B D E + A B C + C E + A B C D E Implemente-a usando um multiplexador de três variáveis de selecção e a lógica que considerar necessária. Pista: quando se usa um multiplexador de n variáveis de selecção para implemen- tar funções de n+1 variáveis, utilizam-se nas entradas de dados do multiplexador, funções de uma variável. 4.14 Tendo como base um circuito comparador, construa um circuito que, recebidos dois números binários de 8 bits, coloca o maior deles na sua saída. Na solução que adoptou, o que acontece quando os dois números são iguais? 4.15 Projecte um circuito iterativo que determina se uma sequência de bits tem pari- dade par (um número par de uns) ou paridade ímpar. 225
Compartilhar