Baixe o app para aproveitar ainda mais
Prévia do material em texto
Circuitos lógicos 1 Introdução 1.1 Circuito analógico vs circuito digital Hoje em dia, se encontram circuitos eletrônicos para realizar uma quantidade impressionante de funções. Para dar somente alguns exemplos: Exibir uma imagem Medir uma temperatura Gravar ou reproduzir um som Controlar o regime de um motor Calcular ... Nos tempos passados, as funções citadas antes eram realizadas por sistemas mecânicos ou químicos. Hoje em dia, os circuitos eletrônicos substituíram a grande maioria deles. De fato, eles são menores, mais baratos, mais rápidos e oferecem um melhor desempenho. Em um circuito eletrônico, a grandeza usada para realizar as operações é uma grandeza elétrica (tensão ou corrente). Então, precisa de interfaces (display, alto-falante, rotor, sensor, ...) para interagir com o meio ambiente (olho, orelha, motor, temperatura, ...). Essas interfaces vão transformar uma grandeza elétrica em estimulo acústico, mecânico, visual, ... e fazem o sentido inverso também. Existe duas formas de tratar as grandezas elétricas: Diretamente realizando as operações no sinal adquirido ou gerado. É o caso de um circuito eletrônico analógico. Ou transformando o sinal elétrico em uma série de números (quantização) para poder tratar em seguida esses números. É o caso de um circuito eletrônico digital. Aos poucos, os circuitos digitais vão substituindo os circuitos analógicos. Eles tem uma melhor imunidade ao ruído, uma flexibilidade maior, um menor custo e uma menor complexidade de concepção para uma função equivalente. Mas muitos circuitos analógicos ainda não podem ser substituídos por um equivalente digital, notadamente em alta frequência. O circuito lógico é o bloco elementar que está na base de todo sistema digital. 1.2 O sistema de numeração Nós vimos na introdução que um circuito digital vai tratar uma série de números. Nosso sistema de contagem natural é chamado de sistema decimal, ou seja, a base do sistema decimal é a base 10 (a origem dessa escolha é simplesmente o número de dedos do ser humano). Ele usa 10 algarismos para descrever os números: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Cada número é simbolizado por uma série de algarismos que indicam quantos pacotes de 10n precisam para representar ele. Exemplo: 274 = 2x102 + 7x101 + 4x100 Em eletrônica digital, é impossível representar os números usando a base 10. De fato, um circuito digital é composto de chaves que podem ficar abertas ou fechadas, então, existem somente 2 níveis (2 valores de tensão), chamados de níveis lógicos, que são representados pelos algarismos 0 e 1. A base desse sistema de numeração é a base 2. Ele é chamado de sistema binário. Decimal Binário 0 1 2 3 4 5 6 7 8 9 0 1 10 11 100 101 110 111 1000 1001 No sistema binário, cada algarismo representa uma potência de 2. Então, para converter um número binário, em número decimal, tem que substituir o 10 do exemplo precedente por um 2. Exemplo: (100111)2 = 1x25 + 0x24 + 0x23 + 1x22 + 1x21 + 1x20 = (39)10 Para realizar a conversão inversa, passar de binário a decimal, tem que realizar algumas divisões sucessivas. Exemplo: Para facilitar a leitura dos números binários (um grande número de 1 e 0 é dificilmente interpretável por nosso cérebro), são usados outras bases como a base octal (8) ou a base 41 2 2 20 1 10 2 2 0 2 5 2 2 0 2 2 2 2 1 2 1 2 2 0 2 0 2 2 1 2 indica o fim da conversão sentido da leitura (41)10 = (101001)2 hexadecimal (16). Em relação ao sistema decimal, essas bases tem a vantagem de oferecer uma conversão direta com sistema binário. O sistema hexadecimal precisa de 16 algarismos (tem que acrescentar 6 a mais do sistema decimal) para poder representar todos os números: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F Decimal Binário Octal Hexadecimal 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 0 1 10 11 100 101 110 111 1000 1001 1010 1011 1100 1101 1110 1111 10000 10001 0 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17 20 21 0 1 2 3 4 5 6 7 8 9 A B C D E F 10 11 Se pode notar na tabela precedente que cada algarismo no sistema octal corresponde a 3 algarismos no sistema binário e uma algarismo no sistema hexadecimal corresponde exatamente a 4 algarismos no sistema decimal. A conversão de um sistema para outro é então facilitada. O método é o seguinte: para a conversão do sistema binário para o sistema octal, agrupar os 0 e 1 por pacotes de 3 e substituir pelo número correspondente no sistema octal. Para a conversão entre sistema binário e sistema hexadecimal, o método é o mesmo com uns pacotes de 4. Exemplo : (1100111011)2 = (001 100 111 011)2 = (1473)8 (1100111011)2 = (0011 0011 1011)2 = (33B)16 1.3 O bit, o byte e a palavra O bit (b) é a menor unidade de informação que pode ser armazenada ou transmitida. Ele pode receber o valor 1 ou 0. Mas não é possível realizar muitas operações com um bit só. Então a informática junto várias bits para formar os caráteres. A codificação chamada ASCII (American Standard Code for Information Interchange) foi inventada para representar um caráter a partir de 8 bits. Ou seja, é possível representar 256 (28) caráteres usando esse código. Ele vai variar de acordo com a região do mundo em qual está utilizado. O conjunto de 8 bits é chamado de byte (B). O byte é geralmente usado para representar a quantidade de memória disponível em uma unidade de armazenamento, como um HD. Existe uma confusão em relação ao múltiplo usado com o byte. Geralmente, a unidade SI, com o prefixo decimal, é utilizada. Mas alguns sistemas como o Windows usam a unidade do IEC, com um prefixo binário e o mesmo símbolo que a unidade SI, criando uma confusão. A tabela seguinte mostra o bom uso dessas unidades. Unidade SI – Prefixo decimal Unidade IEC – Prefixo binário Nome Símb. Pot. Valor decimal Nome Símb. Pot. Valor decimal byte B 100 1 byte B 20 1 quilobyte kB 103 1.000 kibibyte KiB 210 1.024 megabyte MB 106 1.000.000 mebibyte MiB 220 1.048.576 gigabyte GB 109 1.000.000.000 gibibyte GiB 230 1.073.741.824 terabyte TB 1012 1.000.000.000.000 tebibyte TiB 240 1.099.511.627.776 Enfim, a palavra, geralmente múltipla do byte é a unidade de informação elementar usada por um tipo de processador. É um grupo de bits de tamanho fixo, que é processado em conjunto. Os microprocessadores mais novos são de 64 bits. A palavra é usada pelo microprocessador, por exemplo, para designar um endereço na memória RAM. Um microprocessador de 32 bits é então limitado a 232 = 4.294.967.296 endereços diferentes, ou seja 4 GiB. Um processador de 32 bits não é capaz de usar mais que isso. Por isso que apareceram os processadores de 64 bits. 2 As portas lógicas As portas lógicas consistem em um pequeno grupo de circuitos lógicos elementares e padronizados que foram criados em 1938 por Claude Elwood Shannon para resolver problemas técnicos de circuitos telefônicos com relé. Elas permitem realizar as funções lógicas que estão na base da álgebra pensada por George Boole no século XIX. Nas funções lógicas, como no circuito lógico, existem apenas dois estados distintos: O estado 0: representa por exemplo o número 0, um portão fechado, um aparelho desligado, uma chave aberta, um não ... O estado 1: representa por exemplo o número 1, um portão aberto, um aparelholigado, uma chave fechada, um sim ... 2.1 Lista das portas lógicas O quadro abaixo mostra todas as funções e portas lógicas associadas, além da tabela da verdade, que dá o nível lógico de saída para todas as combinações possíveis de níveis de entrada. Porta Símbolo Usual Tabela da Verdade Função Lógica Expressão NOT NÃO A S A S 0 1 1 0 Inverte a variável aplicada a sua entrada S = A̅ OR OU A B S A B S 0 0 0 0 1 1 1 0 1 1 1 1 Assume 0 quando todas variáveis de entrada forem 0 e 1 nos outros casos S = A+B AND E A B S A B S 0 0 0 0 1 0 1 0 0 1 1 1 Assume 1 quando todas as variáveis de entrada forem 1 e 0 nos outros casos S = A.B NOR NOU A B S A B S 0 0 1 0 1 0 1 0 0 1 1 0 Inverso da função OR S = 𝐴 + 𝐵̅̅ ̅̅ ̅̅ ̅̅ NAND NE A B S A B S 0 0 1 0 1 1 1 0 1 1 1 0 Inverso da função AND S = 𝐴. 𝐵̅̅ ̅̅ ̅ XOR OU EXCLUSIVO A B S A B S 0 0 0 0 1 1 1 0 1 1 1 0 Assume 1 quando as variáveis de entrada assumem valores diferentes entre si S = A⊕B A.B + A. B XNOR NOU EXCLUSIVO A B S A B S 0 0 1 0 1 0 1 0 0 1 1 1 Assume 1 quando houver coincidência entre os valores das variáveis de entrada S = 𝐴 ⊕ 𝐵 A⊙B 𝐴. 𝐵 + 𝐴. 𝐵 2.2 As portas NAND e NOR: portas universais Para simplificar problemas de temporização ou obter um circuito mais versátil, usar uma mesma porta para realizar todas as funções lógicas pode se tornar mais vantajoso. Vamos ver como obter cada função lógica usando somente portas NAND. Para isso, nós vamos precisar de algumas equações lógicas vindo do álgebra booleano (regras usadas no domínio da lógica): A complementação o A = A Duas identidades: o A + A = A o A . A = A Os dois teoremas de de Morgan para transformar as funções OR em funções AND e o inverso: o A . B = A + B o A + B = A . B 2.2.1 Obtenção da porta NOT S = A S = A.A 2.2.2 Obtenção da porta AND S = A.B S = A.B 2.2.3 Obtenção da porta OR S = A+B S = A+B S= A . B 2.2.4 Obtenção da porta NOR A porta NOR é o inverso da porta OR. Basta acrescentar um inversor à porta precedente. S = A+B S = A.B S= A . B 2.2.5 Obtenção da porta XOR S =A.B + A. B S = 𝐴. 𝐵 + 𝐴. 𝐵 S = 𝐴. 𝐵 . 𝐴. 𝐵 SA S=A.BA B A.B A B A B S=A.B A B A B A.B S=A.B A B A B S=A.B . A.B A.B A.B 2.2.6 Obtenção da porta XNOR S =𝐴. 𝐵 + 𝐴. 𝐵 S =𝐴. 𝐵 + 𝐴. 𝐵 S =𝐴. 𝐵 . 𝐴. 𝐵 A lógica de tipo NOR pode se deduzir da mesma forma. Pode realizar esse exercício em casa. 2.3 Portas lógicas de três entradas Até agora, nós vimos somente portas lógicas de duas entradas. Às vezes, é preciso usar portas de múltiplas entradas. Essas portas de n entradas podem ser construídas usando n portas de duas entradas em série. Disso, vamos deduzir as tabelas da verdade de cada uma para 3 entradas. Símbolo Usual Decomposição Tabela da Verdade Equação lógica Função Lógica A B C S A B C S A B C A+B S 0 0 0 0 0 0 0 1 0 1 0 1 0 1 1 0 1 1 1 1 1 0 0 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 S = A+B+C Assume 0 quando todas variáveis de entrada forem 0 e 1 nos outros casos A B C S A B C S A B C A . B S 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 1 0 0 1 1 0 1 0 1 1 1 1 1 S = A.B.C Assume 1 quando todas as variáveis de entrada forem 1 e 0 nos outros casos A B C S A B C S A B C A+B S 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 1 1 1 0 1 0 0 1 0 1 0 1 1 0 1 1 0 1 0 1 1 1 1 0 S = A+B+C̅̅ ̅̅ ̅̅ ̅̅ ̅̅ Inverso da função OR A B A B S=A.B . A.B A.B A.B A B C S A B C S A B C A . B S 0 0 0 0 1 0 0 1 0 1 0 1 0 0 1 0 1 1 0 1 1 0 0 0 1 1 0 1 0 1 1 1 0 1 1 1 1 1 1 0 S = A.B.C̅̅ ̅̅ ̅̅ ̅ Inverso da função AND A B C S A B C S A B C A⊕B S 0 0 0 0 0 0 0 1 0 1 0 1 0 1 1 0 1 1 1 0 1 0 0 1 1 1 0 1 1 0 1 1 0 0 0 1 1 1 0 1 S =A⊕B⊕C Assume 1 quando a soma das variáveis de entrada da um número impar A B C S A B C S A B C A⊕B S 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 1 1 1 1 1 0 0 1 0 1 0 1 1 1 1 1 0 0 1 1 1 1 0 0 S =A⊕B⊕C Assume 1 quando a soma das variáveis de entrada da um número par 3 Álgebra booleano O álgebra booleano é um ramo do álgebra que trata somente das relações lógicas entre variáveis binarias. Nós usamos já algumas regras desse álgebra no capítulo anterior para poder deduzir a construção de cada porta lógica usando somente portas NAND. Existem outras que serão apresentadas nesse capitulo. O conhecimento desse álgebra permite notadamente de simplificar as equações lógicas. Vamos pegar um exemplo para ilustrar o método que permite de realizar a concepção de um circuito lógico a partir de uma situação real. Queremos gerenciar a abertura ou o fechamento dos sinais das ruas A e B se cruzando. Essas duas ruas são equipadas de sensores detectando a presença ou não de veículo. As regras gerenciando a abertura ou o fechamento dos sinais são: quando tem nenhum veículo nas ruas, abrir o sinal da rua A quando tem uns veículos somente em uma rua, abrir o sinal daquela rua quando tem veículos nas duas ruas, priorizar a rua A A primeira etapa é de determinar as entradas e as saídas do sistema. As entradas são as portas do sistema que vão influir sobre o comportamento daquele. As saídas são as portas usadas pelo sistema para controlar ou comunicar com o exterior. Em nosso exemplo, as entradas são os sensores de presença dos veículos SA e SB e as saídas os sinais de acionamento dos semáforos VA, VB, RA, RB. Nós vamos usar o formalismo seguinte: SA = 1: tem um veículo na rua A SA = 0: tem nenhum veículo na rua A RA = 1: o sinal vermelho da rua A está ligado RA = 0: o sinal vermelho da rua A está desligado VA = 1: o sinal verde da rua A está ligado VA = 0: o sinal verde da rua A está desligado O mesmo formalismo é usado para a rua B. São então 2 entradas e 4 saídas. A segunda etapa é de montar a tabela da verdade do sistema formalizado, respeitando as regras estabelecidas acima. SA SB RA VA RB VB 0 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 1 0 1 1 0 A questão agora é como deduzir as equações lógicas correspondentes a cada uma das entradas? 3.1 Maxtermos e Mintermos Existe duas formas de deduzir diretamente as equações lógicas a partir da tabela da verdade. São os métodos dos maxtermos e dos mintermos. O maxtermo permite de escrever a equação lógica como um produto de somas enquanto o mintermo permite de escrever a equação lógica como uma soma de produtos. A B C Mintermo Maxtermo 0 0 0 A.B.C A+B+C 0 0 1 A.B.C A+B+C 0 1 0 A.B.C A+B+C 0 1 1 A.B.C A+B+C 1 0 0 A.B.C A+B+C 1 0 1 A.B.C A+B+C 1 1 0 A.B.C A+B+C 1 1 1 A.B.C A+B+C Rua A Rua B SB SA Para encontrar a equação lógica correspondente a uma tabela da verdade qualquer, escreva a soma dosmintermos correspondentes às linhas onde o valor lógico da função seja 1 ou o produto dos maxtermos correspondentes às linhas onde o valor lógico da função seja 0. Vamos voltar a nosso exemplo e extrair as equações lógicas da tabela da verdade que nós montamos. Usando os mintermos: VA=RB=SA.SB+SA.SB+SA.SB VB=RA=SA. SB Usando os maxtermos: VA=RB=SA+SB 𝑉𝐵 = 𝑅𝐴 = (𝑆𝐴 + 𝑆𝐵). (𝑆𝐴 + 𝑆𝐵). (𝑆𝐴 + 𝑆𝐵) Se pode constatar que dependente da função lógica, a escritura da equação lógica pode se tornar mais simples usando os mintermos ou os maxtermos. Uma regra simples é de usar os mintermos quando os 1 da função lógica são minoritários em relação aos 0 e de usar os maxtermos quando ocorre o contrário. As equações lógicas obtidas a partir dos maxtermos e mintermos não são sempre otimais em termo de simplicidade. Para simplificar uma função lógica, se pode usar o álgebra booleano. 3.2 Regras do álgebra booleano IDENTIDADES Complementação OR AND A = A A + 0 = A A + 1 = 1 A + A = A A + A = 1 A . 0 = 0 A . 1 = A A . A = A A . A = 0 PROPRIEDADES Comutativa: A + B = B + A A . B = B . A Associativa: A + (B + C) = (A + B) + C = A + B + C A . (B . C) = (A . B) . C = A . B . C Distributiva: A . (B + C) = A . B + A . C TEOREMAS DE MORGAN A . B = A + B A + B = A . B IDENTIDADES AUXILIARES A + A . B = A A + A . B = A + B (A + B) . (A + C)= A + B . C Essas regras aplicadas de forma adequada podem ajudar a simplificar uma equação lógica. Vamos pegar nosso exemplo: VA=RB=SA.SB+SA.SB+SA.SB VA=RB=SA.SB+SA.(SB+SB) (fatoração) VA=RB=SA.SB+SA.1 (identidade OR) VA=RB=SA.SB+SA (identidade AND) VA=RB=SB+SA (identidade auxiliar) SA SB RA VA RB VB 0 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 1 0 1 1 0 Nós conseguimos voltar à forma obtida com os maxtermos. Às vezes, a escritura da equação lógica usando os maxtermos ou os mintermos não conduz à equação lógica mais simples. Nesse caso, se deve usar o álgebra booleano para simplificar ela. 3.3 Mapa de Karnaugh Em alguns casos, com equações mais complexas, o método anterior pode ser trabalhoso. Mas existe um método gráfico, baseado no álgebra booleano, para ajudar o projetista a encontrar a equação lógica mais simples. Esse método utiliza os mapas de Karnaugh. O mapa de Karnaugh contém o mesmo número de células que existem casos na tabela da verdade. Uma tabela da verdade de 2 entradas, como no exemplo precedente contem 4 casos. O mapa é construído da forma seguinte: SA SA SB 00 SA. SB 10 SA.SB SB 01 SA.SB 11 SA. SB SA SA SB 1 1 SB 0 1 Uma vez o mapa preenchido, as regras para obter a equação lógica simplificada são as seguintes: agrupar os 1 dentro dos retângulos (um quadrado é um retângulo) maiores possível esses retângulos devem conter 2n células (n, o maior inteiro possível) usar o menor número de retângulos possíveis (o número de retângulos vai determinar a complexidade da equação lógica) um 1 pode ser contido em vários retângulos Em nosso exemplo: Para realizar a leitura da equação final, tem que somar o valor de cada retângulo. Como ler o valor de um retângulo? Ler de qual variável está dependendo o retângulo Multiplicar essas variáveis para obter o valor do retângulo No caso geral, um retângulo de 2m células dentro de um mapa de Karnaugh de 2n células vai depender de (m-n) variáveis. Ou seja, se um retângulo preenche a metade do mapa, SA SA SB 1 1 SB 0 1 Correspondência entre caso da tabela da verdade (linha) e posição da célula no mapa Mapa de Karnaugh preenchido com o valor da saída correspondente a cada célula ele depende de uma variável só. Se ele preenche um quarto do mapa, ele depende de 2 variáveis, e assim vai. Se a tabela da verdade contém somente 1 em saída, a equação lógica é igual a 1 Um retângulo de tamanho 1 tem por valor o mintermo correspondente à celula A A B 1 1 B 1 1 S=1 A A B 0 1 B 0 1 S=A A A B 1 0 B 1 0 S=A A A B 1 1 B 0 0 S=B A A B 0 0 B 1 1 S=B A A B 1 0 B 0 0 S=A.B A A B 0 1 B 0 0 S=𝐀.B A A B 0 0 B 1 0 S=A.B A A B 0 0 B 0 1 S=A.B A equação lógica deduzida do mapa de Karnaugh de nosso exemplo é então: VA=RB=SA+SB Nesse caso simples, usar a leitura direta dos maxtermos a partir da tabela da verdade é bem mais rápido. Mas, em alguns casos mais complexos, o mapa de Karnaugh simplifica muito o processo. Para ilustrar esse fato, vamos pegar uma tabela da verdade de 3 entradas (8 casos). SA SA SB 1 1 SB 0 1 SA SB Pelos mintermos: S=A.B.C+A.B.C+A.B.C Pelos maxtermos: S=(A+B+C).(A+B+C).(A+B+C).(A+B+C).(A+B+C) Nenhuma dessas duas soluções é simples. Para simplificar elas, se pode usar o álgebra booleano ou o mapa de Karnaugh. Diretamente pela álgebra booleano: S = A.B.C+A.B.C + A.B.C S = C.(A.B+ A.B + A.B) Fatoração S = C.[A.(B+B)+A.B] Fatoração S = C.(A.1+A.B) Identidades - OR S = C.(A+A.B) Identidades - AND S = C.(A+B) Identidades auxiliares S = A.C+B.C Distribuição O mapa de Karnaugh de 8 células é preenchido da mesma maneira que o mapa precedente de 4 células. A A B 000 A. B.C 001 A. B. C 101 A. B. C 100 A. B. C B 010 A. B. C 011 A. B. C 111 A. B. C 110 A. B. C C C C A A B 1 0 0 1 B 1 0 0 0 C C C Nós vamos identificar os retângulos usando as regras estabelecidas anteriormente. Mas existe agora uma subtilidade, a borda esquerda do mapa é igual à borda direita. Elas formam então uma única borda. Seria equivalente a dobrar o mapa em forma de cilindro. A B C S 0 0 0 1 0 0 1 0 0 1 0 1 0 1 1 0 1 0 0 1 1 0 1 0 1 1 0 0 1 1 1 0 Correspondência entre caso da tabela da verdade (linha) e posição da célula no mapa Mapa de Karnaugh preenchido com o valor da saída correspondente a cada célula 1 1 0 0 1 1 0 0 0 0 0 1 Então, um retângulo que começa de um lado pode terminar do outro. Para visualizar isso melhor podemos desenhar duas mapas iguais uma do lado da outra. A A A A B 1 0 0 1 1 0 0 1 B 1 0 0 0 1 0 0 0 C C C C C Com um pouco de costume, não precisa desenhar 2 mapas para identificar os maiores retângulos. A representação pode então ser feita com um mapa só. Todos os 1 da tabela estão incluídos dentro de um retângulo. Podemos proceder à leitura da equação lógica. Existem dois retângulos de dois 1. Cada retângulo representa então o produto de (3-1)=2 variáveis de entrada. A leitura é feita como explicado anteriormente, mas é ilustrada nos casos seguintes: A A B B C C C A A B A.C A.C A.C A.C B C C C A A B B B B C C C A A B A.B A.B B A.B A.B C C C A A B 1 0 0 1 B 1 0 0 0 C C C B.C A.C A A A A B C C C B C C C A A B B.C B.C B.C B B.C B.C B.C C C C Dessa ilustração, nós deduzimos que a equação lógica correspondente à tabela de verdade de 3 entrada de nosso segundo exemplo é igual a: S=A.C+B.C Esse resultado está confirmado pela dedução feita usando o álgebra booleano. No caso de 4 variáveis de entrada, o principio fica o mesmo, mas o mapa é constituídode 4 linhas e 4 colunas, então 16 células. A figura seguinte mostra a correspondência entre os mintermos da tabela da verdade e a posição da célula correspondente do mapa de Karnaugh. A A B 0000 A. B.C. D 0010 A. B. C. D 1010 A. B. C. D 1000 A. B. C. D D 0001 A. B. C.D 0011 A. B. C.D 1011 A. B. C.D 1001 A. B. C.D D B 0101 A.B.C.D 0111 A.B.C.D 1111 A.B.C.D 1101 A.B.C.D 0100 A. B. C. D 0110 A. B. C. D 1110 A. B. C. D 1100 A. B. C. D D C C C Nesse casa, a borda esquerda é igual à borda direita (como no caso precedente), assim que a borda superior é igual à borda inferior. 3.4 Casos irrelevantes Em algumas situações, existe uns casos da tabela da verdade que não tem como acontecer para o sistema projetado. Esses casos são chamados de irrelevantes. Como esse caso irrelevante não pode acontecer, a saída do sistema pode ser igual a 1 ou 0 sem mudar a funcionalidade do sistema. Então é atribuído a essa saída a letra X para identificar ela. Na hora de realizar a simplificação com o mapa de Karnaugh, esse X pode ser escolhido igual a 1 ou a 0 para ajudar a simplificar a equação lógica final. Um exemplo seria um detector de paridade para um número de 0 a 5. Para representar um número de 0 a 5, é preciso de 3 entradas. Mas com 3 entradas, é possível contar de 0 a 7. Então, os casos 6 e 7 são irrelevantes, não tem utilidade. As duas últimas linhas da tabela da verdade poderão então pegar o valor X em saída. 4 Códigos e decodificadores Existe uma infinidade de formas de representar os números. Por exemplo, nós vimos como representar um número usando o sistema decimal, binário ou hexadecimal. Nós somos acostumados a contar com o sistema decimal. O sistema binário é mais adequado ao funcionamento das maquinas digitais. Bem que usados na maioria dos casos, para algumas aplicações, usar diretamente o sistema binário pode gerar algumas dificuldades. Para esses casos foram criados códigos. O código permite de transformar a representação clássica dos números por uma forma diferente, mais vantajosa para uma aplicação especifica. Nesse capitulo, nós veremos alguns dos códigos usados em eletrônica digital assim que os circuitos decodificadores permitindo de transformar os números de um código para outro. 4.1 O código BCD 8421 O código BCD (binary-coded decimal) é principalmente usado para aplicações financeiras ou comerciais para qual o sistema decimal é usado para realizar as contas e a exatidão dos contas deve ser garantida. Usar diretamente o sistema binário geraria erros de arredondamento. Pois, um número no sistema decimal não tem obrigatoriamente um equivalente exato no sistema binário. Por exemplo (0,1)10 = (0,0001100110011...)2. O código BCD permite de representar diretamente um número no sistema decimal (0,1,...,9) por 4 bits. Os números 8421 representam o valor de cada um dos bits. Decimal BCD8421 0 1 2 3 4 5 6 7 8 9 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 Por exemplo: (24,1)10 = (0010 0100,0001)BCD8421 Então cada número decimal possui uma representação exata com o código BCD. Existe outros tipos de códigos BCD, o código BCD 7421, 5211, 2421 com uns pesos diferentes mas o mais usado é o BCD8421. 4.2 O código de Gray O código de Gray é principalmente usado para o monitoramento de sinais analógicos. Nesse tipo de aplicação, a variação do sinal é continua. Os números são então usados de forma sequencial, crescente ou decrescente, seguindo uma ordem. Exemplos: Velocidade do vento e tamanho das ondas em função do tempo Ângulo de rotação de um rotor Nesses casos, é vantajoso usar um código que vai mudar somente um bit de um número para o seguinte. Isso permite de evitar erros de leitura. Usar um código binário puro levaria a mudar vários bits de um número para o seguinte (3-4 → 11-100), todos esses bits não mudando no mesmo instante (é impossível garantir uma sincronia perfeita). Existiria, nesse caso, durante um certo tempo de transição, uns valores errados. O código de Gray permite de evitar esse problema. Decimal Gray Gray Excesso 3 Johnson 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0000 0001 0011 0010 0110 0111 0101 0100 1100 1101 1111 1110 1010 1011 1001 1000 0010 0110 0111 0101 0100 1100 1101 1111 1110 1010 00000 00001 00011 00111 01111 11111 11110 11100 11000 10000 O código Gray de 4 bits permite, como o binário, de contar de 0 até 15. O código Gray Excesso 3 (deslocamento de 3 unidades) permite de realizar um código BCD com as vantagens do código Gray. O código de Johnson é também um código de tipo “Gray”. Ele é apreciado pela facilidade de realização de um contador (deslocando simplesmente os números para a esquerda e invertendo o bit de maior peso para realimentar no bit de menor peso. O maior problema do código de Johnson é sua densidade (eficiência): N bits permitem de codificar 2N números (N bits em binário permitem de representar 2N números). Outra vantagem vem do fato que um circuito digital consume energia e emite ruído elétrico durante as transições de estado. Reduzindo o número de mudanças reduz então o consumo e a emissão de ruído elétrico. 4.3 Os decodificadores Os circuitos decodificadores permitem de transformar os números de um código para outro. A obtenção de tal circuito é simples e repetitiva, uma vez a técnica do mapa de Karnaugh entendida. Nós vamos dar o exemplo de um circuito decodificador para passar de um número binário de 4 bits para o mesmo número no código de Gray. Binário Gray A B C D S3 S2 S1 S0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 1 0 0 1 1 0 0 1 0 0 1 0 0 0 1 1 0 0 1 0 1 0 1 1 1 0 1 1 0 0 1 0 1 0 1 1 1 0 1 0 0 1 0 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 1 0 1 1 1 1 1 0 1 1 1 1 1 0 1 1 0 0 1 0 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 0 0 1 1 1 1 1 1 0 0 0 Pode ver claramente, sem realizar o mapa de Karnaugh que S3 = A. A A B 0 0 1 1 D 0 0 1 1 D B 1 1 0 0 1 1 0 0 D C C C A A B 0 1 1 0 D 0 1 1 0 D B 1 0 0 1 1 0 0 1 D C C C S2=A.B+A.B=A⨁B S1=B.C+B.C=B⨁C Com um pouco de costume, esses resultados poderiam ter sido obtido diretamente da tabela da verdade. É por exemplo evidente que S0=C⨁D porque S3 é igual a 1 somente quando as entradas C e D são diferentes. Decodificador binário para Gray de 4 bits A B C D S0 S2 S1 S3 Os demais decodificadores podem ser obtidos da mesma forma. Pode considerar isso como um exercício. O software “Logic Friday” pode ajudar você a verificar o resultado obtido. Outro tipo de decodificador bastante comum é aquele usado para exibir um número decimal numa tela de 7 segmentos. Essa tela é constituída de 7 LEDs que podem acender o desligar para formar um número ou uma letra como mostrado na tabela em seguida. Cada segmento corresponde a uma saída. A tabela da verdade descrevendo esse decodificador é a seguinte: Binário 7-segmentos A B C D a b c d e f g 0 0 0 0 1 1 1 1 1 1 0 0 0 0 1 0 1 1 0 0 0 0 0 0 1 0 1 1 0 1 1 0 1 0 0 1 1 1 1 1 1 0 0 1 0 1 0 0 0 1 1 0 0 1 1 0 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1 0 1 1 1 1 1 1 0 0 0 0 1 0 0 0 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 0 1 0 1 1 1 0 1 1 1 1 01 1 0 0 1 1 1 1 1 1 1 0 0 1 0 0 1 1 1 0 1 1 0 1 0 1 1 1 1 0 1 1 1 1 0 1 0 0 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 Pode obter os circuitos lógicos correspondentes usando os mapas de Karnaugh ou o software “Logic Friday”. Como é um decodificador bastante comum, existe uns circuitos integrados realizando essa função, como o 4511B. O manual de uso (datasheet) desse circuito mostra todas as funcionalidades e conexões desse circuito. É interessante dar uma olhada. 5 Circuitos lógicos: tecnologia Até agora, nós vimos a teoria associada à concepção de circuitos lógicos. Nós vamos agora focar sobre a parte tecnológica associada a esse tipo de circuitos. 5.1 Circuito integrado Um circuito integrado é um circuito miniaturizado podendo conter vários componentes, como resistores, transistores, diodos, capacitores na mesma bolacha de silício, isolante e metal, chamada de chip. Uma vez o chip fabricado, é impossível de dessoldar um componente como para uma placa impressa por exemplo, ele faz parte da estrutura. O conjunto se torna um estrutura indissociável. A complexidade pode variar de um componente só a bilhões de componentes e o tamanho de alguns dízimos de milímetros até dezenas de milímetros. Para poder utilizar o chip, é necessário encapsula-o. O tipo mais comum de encapsulamento é chamado de DIP (dual in line package). Ele pode ser de plástico ou de cerâmica. Mas existe uma variedade muito grande de encapsulamentos como mostrado na figura seguinte. Aos poucos, os componentes de tipo SMD (dispositivo de montagem superficial) estão substituindo os encapsulamentos clássicos de tipo montagem through-hole nos quais os terminais são enfiados em buracos da placa do circuito. As vantagens são umas melhores performances devido aos terminais mais curtos e um aproveitamento maior da placa impressa que se pode usar dos dois lados. Não é sempre o caso, mas geralmente os componentes são denominados como mostrado na figura seguinte. Dependendo do fabricante, o sufixo pode ser o tipo de encapsulamento ou a temperatura de funcionamento. O “Part #” indica a família e a função do componente. Dentro dos circuitos lógicos, existe várias famílias. As principais são os circuitos TTL (transistor transistor logic) e CMOS. Dentro dessas duas grandes famílias existe subfamílias caracterizadas que foram criadas ao longo do tempo para melhorar as performances. Família Ano Descrição rápida TTL 1968 bipolar transistor transistor logic S 1974 TTL com transistor de Schottky LS 1976 TTL Schottky de baixo consumo ALS 1979 TTL Schottky de baixo consumo melhorado F 1983 TTL rápido HC 1975 CMOS de alta velocidade HCT 1975 CMOS de alta velocidade (compatível com TTL) AC 1985 CMOS avançado ACT 1985 CMOS avançado (compatível com TTL) LVC 1993 CMOS de baixa tensão AHC 1996 CMOS avançado de alta velocidade 5.2 Caraterísticas dos circuitos lógicos As performances dos circuitos lógicos são definidas por vários parâmetros. 5.2.1 Tensões de entrada e saída aceitáveis pela tecnologia Na teoria, se o circuito lógico é alimentado por uma fonte de tensão de 5V, um nível lógico alto seria representado por uma tensão de 5V e um nível lógico baixo por uma tensão de 0V. Na prática, existem tensões de limiar intermediarias para representar os níveis lógicos tanto na entrada como na saída: VIH (input high): limite inferior para definir um nível lógico alto na entrada VIL (input low): limite superior para definir um nível lógico baixo na entrada VOH (output high): limite inferior para definir um nível lógico alto na saída VOL (output low): limite superior para definir um nível lógico baixo na saída A diferença entre VIL e VOL, assim que a diferença entre VIH e VOH, correspondem às margens de ruído da tecnologia. Se o ruído que se acrescenta ao sinal permanece inferior a essa margem, a informação não é corrompida. Segue o exemplo para uma porta de tipo TTL e outra de tipo CMOS: Se pode notar com esse exemplo, que as portas lógicas de tipo TTL LS são incompatíveis com as portas lógicas de tipo CMOS HC. Por exemplo, uma saída alta com uma tensão de 2,7V da porta TTL não é reconhecida como alta na entrada da porta CMOS (seria preciso de uma tensão maior que 3,5V). 5.2.2 Níveis de corrente, fanout, fanin As entradas e saídas dos circuitos lógicos tem valores limites para as correntes que elas podem fornecer ou absorver: IIL: valor máximo de corrente na entrada para um nível de entrada baixo IIH: valor máximo de corrente na entrada para um nível de entrada alto IOL: valor máximo de corrente na saída para um nível de saída baixo IOH: valor máximo de corrente na saída para um nível de saída alto Uma corrente positiva significa uma corrente entrando na porta e uma corrente negativa significa uma corrente saindo da porta. Segue o exemplo abaixo para uma porta de tipo TTL: Esses valores limites determinam o número máximo de portas podendo ser ligadas à mesma saída. Esse número é chamado de fanout. No exemplo acima, o fanout é igual a 10 (400μA / 40 μA ou 16mA / 1,6mA). Além desse número, a porta lógica não é capaz de fornecer ou absorver a corrente suficiente para controlar a entrada das portas lógicas seguindo ela. O exemplo seguinte mostra uma porta TTL com o número máximo de portas lógicas conectadas a ela. O fanin é simplesmente o número de entradas que possui uma porta lógica. 5.2.3 Tempos de propagação, potência dissipada Outras especificações importantes de uma porta lógica são os tempos de propagação. Os transistores realizando a função de chaves tem uma velocidade de comutação limitada. Essa velocidade limitada vai introduzir uns atrasos entre o sinal de comando (entrada) e a resposta da porta (saída): tpLH: tempo máximo de propagação quando a saída transita do nível baixo(L) para o nível alto(H) tpHL: tempo máximo de propagação quando a saída transita do nível alto(H) para o nível baixo(L) Os tempos de propagação estão diretamente relacionados com a potência dissipada. Dentro dos limites da tecnologia disponível num dado momento, é possível construir circuitos mais rápidos, mas que apresentam maior potência dissipada, ou circuitos mais lentos, mas que apresentam menor potência dissipada. 5.3 A família TTL Os circuitos TTL, para transistor-transistor logic, usam transistores bipolares para realizar as chaves. O transistor bipolar foi o primeiro a ser realizado. Basicamente, o funcionamento é ilustrador na figura seguinte. Quando a tensão entre base e emissor é suficiente, uma corrente IB é criada. Se existe uma tensão adequada entre coletor e emissor, o transistor conduz e pode ser considerado como uma chave fechada entre coletor e emissor. Caso a tensão entre base e emissor não é suficiente, o transistor se opõe a toda condução, ele pode ser considerado como uma chave aberta entre coletor e emissor. O maior desvantagem desse transistor em relação ao MOSFET, usado na tecnologia de tipo CMOS é que existe uma corrente entrando pelo terminal de comando (base) do transistor e então um consumo de potência de forma continua. A família TTL é a família mais diversificada. As caraterísticas das subfamílias são mostradas na figura seguinte: 5.4 A família CMOS Os transistores de tipo MOSFET apareceram no mercado depois dos transistores bipolares usados na lógica TTL. Eles são à origem da família lógica CMOS (complementary MOS: associação de transistores de tipo PMOS e NMOS) que está, aos poucos, substituindo a família TTL, devido a um consumo menor e uma maior integração. O transistor bipolar ainda tem vantagens em aplicações de alta velocidade.O funcionamento do transistor MOS é ilustrado na figura seguinte: O transistor MOS funciona da forma seguinte: quando o potencial do terminal da porta (gate) é suficientemente alto em relação ao potencial da fonte (source), um canal de condução se cria entre dreno (drain) e fonte. O transistor se comporta então como uma chave fechada. Senão, o dreno é isolado da fonte, o transistor se comporta como a uma chave aberta. No transistor MOS, o circuito de comando é totalmente isolado da chave. Nenhuma corrente circula pelo terminal chamado porta (gate). É uma grande vantagem em relação ao transistor bipolar, isso permite de reduzir o consumo da porta lógica e facilita também o comando dela. As caraterísticas das subfamílias são mostradas na figura seguinte: N.B.: Hoje, não é tão verdade, mas antigamente, as portas de tipo CMOS eram muito sensível às descargas eletroestáticas. Para evitar de queimar os circuitos, sempre guardar os CIs dentro de uma embalagem condutiva. 5.5 Saída de três estados (tri-state) Algumas portas lógicas oferecem a possibilidade de botar a saída em um estado alta impedância (high-Z). A saída em high-Z nem está num estado baixo, nem num estado alto. É um terceiro estado. Isso equivale a desligar a porta lógica do restante do circuito. Este tipo de saída tem particular aplicabilidade quando se pretende, através de um linha comum, enviar dados de diferentes dispositivos de origem para um único dispositivo de destino. 5.6 Misturando as famílias logicas Geralmente, é melhor evitar de misturar as famílias lógicas. As principais razões são as diferenças entre os níveis lógicos de entrada e saída, as tensões de alimentação ou a capacidade de acionamento. Um outro problema vem da velocidade diferente entre as famílias. Essa diferença pode causar problemas de temporização. Em alguns casos, é impossível ou até desejável de misturar tecnologias diferentes. Por exemplo, algumas funções lógicas (memoria, contador, etc.) existem somente em CMOS mas o restante de seu sistema está funcionando com TTL. Misturar as famílias lógicas é também bastante comum para acionar cargas. Por exemplo, uma lógica de tipo TTL (com coletor aberto) é frequentemente usada para servir de interface entre uma lógica de tipo CMOS e uma carga externa, como um rele ou uma luz. Uma saída CMOS, frequentemente não fornece uma corrente suficiente para acionar tal carga. Vamos ver alguns exemplos de interface. a. TTL pode diretamente estar conectado a HCT, ACT ou ele mesmo. b. CMOS 74C/4000(B) com VDD=5V pode acionar TTL, HC, HCT, AC, ACT ou ele mesmo. c. HC, HCT, AC e ACT podem diretamente acionar TTL, HC, HCT, AC, ACT ou 74C/4000(B). d. Quando 74C/4000(B) usa VDD>5V, um circuito buffer, tipo 4050B pode ser usado. O 4050B é alimentado por 5 V, aceita uma lógica 0V / 15V na entrada e fornece uma lógica 0V / 5V na saída. O buffer oferece também uma corrente de acionamento maior (74C/4000(B) tem um poder de acionamento menor que o TTL). e. Lembra-te que a tensão de saída do TTL pode ser de 2,7V ao lugar de 5V para um nível lógico alto. Mas uma porta CMOS precisa de 3,3V (HC) ou 3,5V (4000B) para o mesmo nível. Para fornecer uma tensão suficiente na entrada do 74C/4000(B), um resistor de pull- up pode ser usado. Esse resistor tem por efeito de subir a tensão de entrada para o nível do VDD. f. Uma outra possibilidade para conectar CMOS e TTL é de usar a lógica CMOS compatível com TTL, como 74HCT ou 74ACT. g. h. Essas duas figuras mostram como conectar uma porta TTL com uma porta CMOS alimentada por uma tensão maior. No primeiro caso, um buffer 4504B é usado. Ele é alimentado com duas tensões de 5V e 15V. No segundo caso, um buffer de tipo coletor aberto é usado com uma resistência de pull-up para realizar a interface entre o nível TTL de 5V e o nível CMOS de 15V. 5.7 Desacoplamento da tensão de alimentação Durante a transição do nível lógico, ocorre um aumento brusco do consumo de corrente pela porta TTL. Isso vai ter por efeito de criar variações abruptas da tensão de alimentação. Essas variações podem causar comutações indesejadas para as demais portas lógicas alimentadas pela mesma fonte. Para evitar esse problema, uma solução é de usar capacitores de desacoplamento conectadas entre a fonte de tensão e a terra, o mais próximo possível das portas lógicas. Uma regra é de usar um capacitor para cada 5 ou 10 portas lógicas. Os capacitores geralmente usados são capacitores de 0,01 a 1 μF, tipicamente de tântalo. Esses capacitores vão ter por efeito de filtrar as variações abruptas de tensão para deixar ela mais lisa. 5.8 Conexão das entradas e saídas não utilizadas As entradas inutilizadas mas que poderiam afetar o nível de saída do circuito nunca devem ficar desconectadas. Elas devem ser conectadas a um nível alto ou um nível baixo, para evitar de captar um ruído externo que poderia causar um comportamento errado. Se todas as portas lógicas conteúdas em um CI não são usadas, elas podem ficar desconectadas para um circuito de tipo TTL mas as entradas tem que ser aterradas para um circuito de tipo CMOS. De fato, se as entradas não são aterradas, o nível de entrada da porta CMOS pode flutuar e provocar uma condução elevada de corrente que pode destruir o CI. No caso de uma porta cuja todas as entradas não são utilizadas, é necessário conecta-as ao nível baixo para uma porta OR ou NOR, ou a um nível alto para uma porta AND ou NAND. Exemplos: 6 Multiplexador / Demultiplexador O multiplexador (também chamado de mux) e o demultiplexador (também chamado de demux) são chaves controladas digitalmente. No caso do multiplexador, a chave permite conectar uma das n entradas possíveis, à saída. O demultiplexador realiza a função inversa. Ele permite conectar a única entrada a uma das n saídas possíveis. No caso de 2 entradas, o multiplexador é também chamado de seletor de dados (data selector). Como explicado precedentemente, a seleção é realizada por um sinal digital. Então, n bits de seleção permitem de endereçar 2n entradas (multiplexador) ou saídas (demultiplexador). Uns símbolos frequentemente usados para representar o multiplexador e o demultiplexador são os seguintes: Seleção E1 E2 E3 E4 En S Seleção S1 S2 S3 S4 Sn E Multiplexador Demultiplexador Mux 2 n:1 E1 E2 E3 E4 E S De mu x 2 n :1 S1 S2 S3 S4 S E 2n 2n A1 An A1 An Os multiplexadores são usados para juntar num mesmo canal de transmissão diversas fontes de dados sem misturar elas. Nesse caso, cada fonte de dado ocupa um intervalo de tempo definido. O demultiplexador efeitua o trabalho inversa, atribuindo às diversas fontes (presentes no mesmo canal de transmissão) um canal distinto. 6.1 Caso do multiplexador 2:1 (2 entradas, 1 saída) Para começar, vamos estudar o caso simples de um multiplexador de 2 entradas (E1 e E2). Para endereçar essas duas entradas, um bit de seleção (A) é suficiente. Vamos escrever a tabela da verdade da função logica associada ao multiplexador. S=E1.A+E2.A A E1 E2 S E1 E2 A S 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 1 1 0 0 1 1 0 1 0 1 1 0 1 1 1 1 1 A A E1 0 0 1 0 E1 1 1 1 0 E2 E2 E2 Não era preciso desse formalismo todo para chegar ao circuito final. De fato, a porta AND (a porta OR também) pode ser usada como chave controlada digitalmente. Se uma das entradas esta com um nível alto, ela deixa passar o sinal da outra entrada. Se uma das entradas esta com um nível baixo, ela impo um nível baixo em saída. Então, quando a entrada de seleção A esta comum nível alto, E2 passa para a saída S e E1 fica bloqueado pela porta AND. Quando A esta com um nível baixo, acontece o inverso. Isso é exatamente o comportamento de um multiplexador 2:1. Existem vários CI realizando funções de multiplexagem. Veja, em seguida, o exemplo do CI 74LS157. Ele contém 4 multiplexadores 2:1, assim que uma entrada de ativação ou desativação do CI. 6.2 Generalização a um multiplexador 2n:1 O conceito precedente pode ser generalizado a um multiplexador de n entradas. Tal multiplexador é então constituído de n portas AND conectadas a cada uma das n entradas. Dependente do endereço selecionado, uma porta AND vai deixar a entrada correspondente passar enquanto as outras vão cortar as outras entradas. E1 E2 E3 E2n Gerador de endereço A1 A2 An P1 P2 P3 P2n P1 = A1.A2.A3 ... .An P2 = A1.A2.A3 ... .An P3 = A1.A2.A3 ... .An P4 = A1.A2.A3 ... .An P5 = A1.A2.A3 ... .An P2 n = A1.A2.A3 ... .An S Exemplo: quando todas as entradas de seleção estão iguais a 0, a única saída do gerador de endereço igual a 1 é a saída P1. Então, a saída esta conectada à entrada E1. Esse gerador de endereço é também chamado de gerador de produto canônico. O cirtuito demultiplexador é realizado da mesma maneira. Mas, cada porta AND é conectada a mesma e única entrada. E as saídas dessas portas AND são as saídas do demultiplexador. Na pratica, existem CI de várias capacidades de entradas: 4, 8, 16 entradas. Para realizar um mux 16:1, se pode usar dois mux 8:1 da maneira seguinte: A entrada de ativação (E) permite de selecionar qual dos dois mux esta ativado e então conectado em saída. Então, nesse caso, ela pode ser considerada como entrada de seleção. Ou se pode usar o CI 74HC150, um mux 16:1. Existem também CI para demultiplexadores. Veja o exemplo de um demux 1:4 (são dois na mesma pastilha): 7 Circuitos aritméticos Com poucas portas logicas, nós vamos ver como é possível realizar soma ou subtração de números lógicos. 7.1 O somador Veja na figura abaixo como é realizada a soma de dois números de 2 bits. Para os bits de menor peso (LSB, coluna da direita), é necessário realizar a soma de 2 bits. Para os bits de maior peso (MSB), é necessário incluir o bit de transporte (Cout) da coluna anterior, ou seja realizar uma soma de 3 bits. O somador de 2 bits é chamado de meio somador. O somador de 3 bits (incluindo o bit de transporte da coluna anterior) é chamado de somador completo. As tabelas da verdade associadas a esses dois tipos de somadores são as seguintes: A0 B0 Σ0 Cout 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 Deduzindo as equações logicas das saídas Σ0 e Cout a partir da primeira tabela da verdade, nós dá o circuito meio somador (half adder): Da segunda tabela, nos deduzimos o circuito somador completo (full adder): A operação mais complexa que esses dois circuitos são capazes de realizar é soma de números de 1 bit só. Para realizar somas mais complexas, de números de n bits, é preciso utilizar n somadores em cascata. Veja o exemplo de um somador de 4 bits abaixo. A soma dos dois primeiro bits (A0 e B0) é realizada a través de um meio somador porque não tem bit de transporte para a primeira coluna. As somas dos bits de peso mais fortes necessitam o uso de somadores completos para incluir o bit de transporte da coluna anterior na soma. Existe vários CIs somadores de 4 bits, como 74LS283 ou o 4008. Esses CIs são somadores completos, ou seja oferecem uma entrada e uma saída de transporte. E possível conectar eles em cascata para realizar soma de 8 bits, 12 bits, 16 bits, etc. A1 B1 Cin Σ1 Cout 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1 7.2 O subtrator Veja abaixo como é realizada a subtração de dois números de 2 bits. A1 A0 B1 B0 Cin Cin Σ1 Σ0 Cout Cout O mecanismo é análogo ao da soma. A primeira subtração é realizada entre os dois bits de menor peso. Ela gera um bit de resultado (Σ) e um bit de transporte (Cout). Essa operação é chamada de meia subtração. A subtração envolvendo 3 bits, An – Bn – Cin, é chamada de subtração completa. A0 B0 Σ0 Cout 0 0 0 0 0 1 1 1 1 0 1 0 1 1 0 0 Deduzindo as equações logicas das saídas Σ0 e Cout a partir da primeira tabela da verdade, nós dá o circuito meio subtrator: A0 B0 D0 Cout A B D Cout HS Da segunda tabela, nos deduzimos o circuito subtrator completo: A1 B1 Cin Σ1 Cout 0 0 0 0 0 0 0 1 1 1 0 1 0 1 1 0 1 1 0 1 1 0 0 1 0 1 0 1 0 0 1 1 0 0 0 1 1 1 1 1 A B D Cout HS A B D Cout HS A1 B1 Cin D1 Cout A B D Cout FS Cin Colocando em cascata n subtratores, é possível realizar a subtração de n bits, de forma equivalente ao somador. 7.3 O complemento para dois e a subtração Outro método pode também ser usado para realizar uma subtração. Até agora, consideramos somente números de n bits sem sinal. Mas, na pratica, é frequente utilizar uma representação sinalizada. Nesse caso, é o bit de maior peso que indica o sinal do número. Um MSB=0 indica um número positivo. Um MSB=1 indica um número negativo. Ex: (5)10 = 0101 (-5)10 = 1101 O problema da representação acima, é que ela impossibilita operações aritméticas de forma simples e direta (tente somar diretamente 5 e -5 por exemplo, você não encontrara 0). Para resolver esse problema, foi adotado uma representação chamada de complemento para 2. Para formar um número negativo em complemento para 2, basta inverter todos os bits de um número positivo e acrescentar 1. Ex: (5)10 = (0101)2 0 1 0 1 = 1010 ; 1010 + 1 = 1011 (-5)10 = (1011)comp p/2 Decimal Complemento para 2 -8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 1000 1001 1010 1011 1100 1101 1110 1111 0000 0001 0010 0011 0100 0101 0110 0111 Usando a representação em complemento para 2, se pode realizar subtração ou adição usando somente um somador. Nesse caso, a subtração é feita somando a representação negativa do número a subtrair. Ex: 5 – 3 = 5 + (-3) Para realizar o circuito somador / subtrator, se deve usar um circuito capaz de transformar um número para seu complemento para dois no caso de uma subtração ou deixando passar aquele número no caso de uma adição. Umas portas XOR e um somador permitem de realizar esse trabalho. Veja o exemplo seguinte: Quando a chave esta conectada no modo de adição, a primeira entrada de cada porta XOR é igual a 0. Ou seja, a porta XOR deixa passar o sinal vindo da outra entrada sem alterar ele. Quando a chave esta conectada no modo de subtração, a primeira entrada de cada porta XOR é igual a 1. Ou seja, a porta XOR inverte o sinal vindo da outra entrada. Isso é o primeiro passo para transformar o número para seu complemento para 2. O segundo passo é a adição do número 1. Essa adição é feita pelo bit Cin do CI 74LS283, que no caso da subtração é igual a 1. Importante: Quando usa uma representação em complemento para dois, se deve respeitar o número de bits escolhido para os números. Ou seja, o bit de transporte resultando da soma dos dois bits de maior peso (MSB) deve ser descartado. E claro, o resultado não pode ultrapassar a capacidade devida ao número de bits. Ex: Se nós trabalhamos com 4 bits, podemos representar números incluídos entre -8 e 7. E o resultado de qualquer operação deve ser incluído dentro dessa faixa. 7.4 As unidades aritméticas e logicasUma unidade aritmética e logica (UAL – ALU), é um CI capaz de realizar várias funções aritméticas ou logicas. Existe uma entrada de seleção para escolher a operação a realizar. O CI 74181 mostrado na figura seguinte é uma UAL de 4 bits que oferece 16 funções aritméticas (entrada M = 0) e 16 funções logicas (entrada M = 1). Uma vez a função desejada selecionada com as entradas S0, S1, S2, S3, o CI realiza a operação entre as entradas A e B. Para não confundir operações logicas com operações aritméticas, a adição e a subtração são notados com “plus” e “minus” respetivamente. Todos os resultados aritméticos gerados por essa UAL são escritos em complemento para 2.
Compartilhar