Baixe o app para aproveitar ainda mais
Prévia do material em texto
Elementos Básicos de Circuitos Digitais Universidade de Caxias do Sul Outubro de 2009 2 Elementos Básicos de Circuitos Digitais CONTEÚDO 1. SISTEMAS NUMÉRICOS E REPRESENTAÇÃO DA INFORMAÇÃO...................................................................................4 1.1 Sistemas Numéricos .................................................................................................................................................. 4 1.2 Conversão de Base .................................................................................................................................................... 6 1.2.1 Decimal-Binário ............................................................................................................................................. 7 1.2.2 Decimal-Hexadecimal .................................................................................................................................... 7 1.2.3 Decimal-Octal ................................................................................................................................................ 7 1.2.4 Hexadecimal-Binário e Binário-Hexadecimal ................................................................................................ 8 1.2.5 Octal-Binário e Binário-Octal ......................................................................................................................... 8 1.2.6 Base M-Base N ............................................................................................................................................... 8 1.3 Dados Numéricos ...................................................................................................................................................... 8 1.3.1 Inteiros com Sinal .......................................................................................................................................... 8 1.3.2 Números Reais ............................................................................................................................................... 9 1.3.3 Padrão de Ponto Flutante IEEE 754 ............................................................................................................. 10 1.4 Operações ............................................................................................................................................................... 13 1.4.1 Adição Binária em Complemento de 1 ........................................................................................................ 13 1.4.2 Adição Binária em Complemento de 2 ........................................................................................................ 14 1.4.3 Multiplicação Binária ................................................................................................................................... 14 1.4.4 Divisão Binária ............................................................................................................................................. 16 1.4.5 Adição, Multiplicação e Divisão em Ponto Flutuante ................................................................................. 16 1.4.6 Adição Hexadecimal .................................................................................................................................... 18 1.5 Códigos .................................................................................................................................................................... 19 1.5.1 Códigos com Detecção de Erros .................................................................................................................. 20 1.5.2 Códigos Alfanuméricos ................................................................................................................................ 20 2. CIRCUITOS DIGITAIS COMBINACIONAIS......................................................................................................................23 2.1 Operação digital (binária) de um sistema ............................................................................................................... 23 2.2 Operações lógicas ou booleanas ............................................................................................................................ 24 2.2.1 Operação "NÃO".......................................................................................................................................... 24 2.2.2 Operação "E" ............................................................................................................................................... 25 2.2.3 Operação "OU" ............................................................................................................................................ 26 2.3 Propriedades das operações lógicas ....................................................................................................................... 26 2.4 Porta "NÃO-E" como bloco lógico universal ........................................................................................................... 27 2.5 Porta "NÃO-OU" como bloco lógico universal ........................................................................................................ 29 2.6 Função "OU exclusivo" ............................................................................................................................................ 30 2.7 Análise de circuitos combinacionais ...................................................................................................................... 31 2.8 Obtenção de expressões lógicas a partir da tabela verdade .................................................................................. 33 2.9 Simplificação e minimização das expressões lógicas .............................................................................................. 34 2.10 Mapas de Karnaugh .............................................................................................................................................. 35 3. CIRCUITOS SEQUÊNCIAIS.............................................................................................................................................39 3.1 Circuitos multivibradores biestáveis ....................................................................................................................... 39 3 Elementos Básicos de Circuitos Digitais 3.1.1 Flip-flop RS assíncrono com portas lógicas "NÃO-OU" ............................................................................... 39 3.1.2 Temporizações dos Flip-Flops ..................................................................................................................... 40 3.1.3 Flip-flop RS assíncrono com portas lógicas "NÃO-E" .................................................................................. 41 3.1.4 Flip-flop RS síncrono com portas lógicas "NÃO-E" ...................................................................................... 42 3.1.5 Flip-flops "Master-Slave" (Mestre-Escravo) ................................................................................................ 43 3.1.6 Flip-flop D gatilhando pela borda positiva .................................................................................................. 45 3.2 Registrador de dados paralelo ................................................................................................................................ 46 3.2.1 Registrador de dado paralelo ...................................................................................................................... 46 3.2.2 Registradores de deslocamento (de dados seriais) .................................................................................... 46 3.2.3 Contador em anel ........................................................................................................................................ 47 3.3 Contadores digitais ................................................................................................................................................. 49 3.3.1 Contadores assíncronos .............................................................................................................................. 49 3.3.2 Contador assíncrono decrescente ............................................................................................................... 51 3.3.3 Contador com qualquer ciclo de contagem ................................................................................................ 51 3.3.4 Contador síncrono com transporte paralelo ............................................................................................... 52 4. SISTEMAS DIGITAIS COMBINACIONAIS.......................................................................................................................54 4.1 Decodificadores...................................................................................................................................................... 54 4.2 Decodificadores e demultiplexadores de CI ........................................................................................................... 55 4.3 Decodificadores BCD para decimal ......................................................................................................................... 56 4.4 Decodificador BCD para o mostrador de 7 segmentos. ......................................................................................... 57 4.5 Seletor de dados ou multiplexador ......................................................................................................................... 58 4.6 Somadores binários ................................................................................................................................................ 59 4.6.1 Semi-somador (“half adder”) ...................................................................................................................... 59 4.6.2 Somador completo ...................................................................................................................................... 60 4.7 Subtração de números binários .............................................................................................................................. 61 4.8 Unidade lógica e aritmética .................................................................................................................................... 62 5. SISTEMA DE MEMÓRIA DE COMPUTADORES.............................................................................................................64 5.1 Hierarquia de Memórias ......................................................................................................................................... 64 5.2 Memórias Semi-Condutoras ................................................................................................................................... 65 5.2.1 Memórias ROM ........................................................................................................................................... 65 5.2.2 Memórias RAM ............................................................................................................................................ 66 5.3 Terminologia das memórias ................................................................................................................................... 72 5.4 Símbolos lógicos das memórias RAM e ROM ........................................................................................................ 73 5.5 Operação geral das memórias ................................................................................................................................ 74 5.6 Expansão de Memória com base nos circuitos lógicos ........................................................................................... 75 4 Elementos Básicos de Circuitos Digitais 1 SISTEMAS NUMÉRICOS E REPRESENTAÇÃO DA INFORMAÇÃO Desde a antiguidade o homem identificou a necessidade de contar seus pertences. Acredita-se que isto tenha ocorrido quando o ser humano abandonou a prática extrativista e nômade para fixar-se em alguma região, plantar seus alimentos e criar seus animais. Como o homem se auxiliava dos dedos das mãos, e talvez dos pés, para contar, é bastante natural que tenhamos nos habituado a usar o sistema decimal, ou seja, representar quantidades utilizando somente dez dígitos diferentes (0, 1, 2, 3, 4, 5, 6, 7, 8 e 9). O Teorema Fundamental da Numeração relaciona uma quantidade expressa em qualquer sistema de numeração com a mesma quantidade expressa no sistema decimal. Tal teorema é dado pela seguinte soma algébrica: ...+ X3 x B3 + X2 x B2 + X1 x B1 + X0 x B0 + X-1 x B-1 + X-2 x B-2 + X-3 x B-3 + ..., onde B é a base do sistema de numeração, X i é cada um dos dígitos da quantidade e o índice i indica a posição relativa a vírgula. 1.1 SISTEMAS NUMÉRICOS O sistema de numeração posicional decimal tem a base igual a 10 (dez) e dez algarismos: 0, 1, 2,... , 9 que são necessários para exprimir um número qualquer. Para escrever números maiores que nove, associamos um valor à posição de um número em um conjunto de algarismos. Um número qualquer no sistema de numeração posicional decimal pode ser representado como a seguinte soma algébrica: N(10) = an x 10n + an-1 x 10n-1 +...+ a1 x 101 + a0 x 100 + a-1 x 10-1 + ... onde: • n = 0, 1, 2, ..., ∞ é a quantidade dos algarismos (posições) da parte inteira do número N(10), • m = 0, 1, 2, ..., ∞ é a quantidade dos algarismos (posições) da parte fracionária do número N(10), e • {ai} ∈ {0, 1, 2,..., 9} é o conjunto de algarismos decimais básicos em qualquer número N(10). Assim, os dígitos individuais de um número representam os coeficientes do desenvolvimento (do conjunto {ai}) do número em potência de 10. Isto é, o "peso" do coeficiente ai depende da posição no número N(10) (sistema de numeração posicional). A Figura 1.1 mostra um número decimal 58,6601 de 6 dígitos, com o peso de cada um. 5 x 101+8 x 100+6 x 10-1+6 x 10-2+0 x 10-3+1 x 10-4 = 58,6601. 1010 10 10 1010 0 185 DÍGITO MAIS SIGNIFICATIVO DÍGITO MENOS SIGNIFICATIVO VÍRGULA DECIMAL 6 6 +1 0 -1 -2 -3 -4 Figura 1.1: Exemplo de número na representação decimal 5 Elementos Básicos de Circuitos Digitais Em sistemasde numeração posicionais como descrito aqui, chama-se ao dígito da esquerda o dígito mais significativo (ou MSD do Inglês Most Significant Digit), e chama-se o dígito mais à direita o dígito menos significativo (LSD do Inglês Least Significant Digit). No sistema de numeração posicional binário a base é 2, e somente os dois números 0 e 1 ({ai} ∈ {0, 1}) são necessários para representar um número binário. Os algarismos 0 e 1 têm o mesmo significativo que no sistema decimal, mas se dá uma interpretação diferente para a posição ocupada pelo dígito. No sistema binário os algarismos representam individualmente os coeficientes (do conjunto {ai} ∈ {0, 1}) das potências de dois e não das potências de dez, como no sistema decimal. Por exemplo, a Figura 1.2 mostra a representação binária de 16 "bits" do número decimal 58,6601 . 22 2 2 22 2 2 2 22 22 22 2 11 11 1 10 0 0 0 00 00 VÍRGULA BINÁRIA DÍGITO MAIS SIGNIFICATIVO DÍGITO MENOS SIGNIFICATIVO 1 1 -8 -7 -6 -5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5 +6 +7 Figura 1.2: Exemplo de número na representação binária No sistema de numeração posicional hexadecimal (ou simplesmente, hexa ou de base 16), os dígitos podem ter dezesseis valores diferentes: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E ou F. Assim, para a representação de um valor qualquer, necessita-se de menos dígitos do que nos sistemas decimal e binário. Os pesos dos dígitos são expressos em potência de dezesseis. Cada dígito pode ser incrementado de 0 a F. Uma vez alcançado F, o próximo incremento causa a volta do dígito ao valor 0 e o incremento do próximo dígito imediatamente à esquerda. A Figura 1.3 mostra um exemplo de um número hexadecimal (3A,A9) de quatro dígitos. VÍRGULA HEXADECIMAL DÍGITO MAIS SIGNIFICATIVO DÍGITO MENOS SIGNIFICATIVO A A3 9 0+1 -1 -216 16 16 16 Figura 1.3: Exemplo de número na representação hexadecimal No sistema de numeração posicional octal (base 8), os dígitos podem ter 8 valores ou estados: 0, 1, 2, 3, 4, 5, 6 e 7. Os pesos dos dígitos são expressos em potência de oito. Cada dígito pode ser incrementado de 0 a 7. Uma vez alcançado 7, o próximo incremento causa a volta do dígito ao valor 0 e o incremento do próximo dígito imediatamente à esquerda. A Figura 1.4 mostra um exemplo de um número octal (72,522) de cinco dígitos. 6 Elementos Básicos de Circuitos Digitais VÍRGULA OCTAL DÍGITO MAIS SIGNIFICATIVO DÍGITO MENOS SIGNIFICATIVO 2 57 2 0+1 -1 -2 8 88 8 8 -3 2 Figura 1.4: Exemplo de número na representação octal Em um sistema numérico qualquer, o maior valor (quantidade) representável é dado por bn-1, onde b é a base do sistema e n o número de dígitos. Assim, para o sistema decimal, considerando-se três dígitos (b= 10, n= 3), o maior valor representável será 103 - 1 = 999. Abaixo são relacionados alguns valores de n com o maior valor representável (N) para a base binária: n = 1; N= 21-1 = 1 (12); n = 2; N= 22-1 = 3 (112); n = 3; N= 23-1 = 7 (1112); ... n = 8; N= 28-1 = 255 (111111112); n = 9; N= 29-1 = 511 (1111111112); n = 10; N= 210-1 = 1.023 (11111111112; 1 "kilo" -1 ou 1 K-1); ... n = 16; N= 216-1 = 65.535 (11111111111111112; 64 K-1); ... n = 20; N= 220-1 = 1.048.575 (111111111111111111112; 1 "mega"-1); ... n = 30; N= 230-1 = 1.073.741.823 (1111111111111111111111111111112; 1 "giga"-1); ... n = 60; N= 260-1 = (1111111111111111111111111111111111111111111111111111111111112; 1 "tera"-1). 1.2 CONVERSÃO DE BASE Usando o Teorema Fundamental da Numeração, poderemos transformar para a base decimal, um valor qualquer expresso em outra base. Vejamos os exemplos: Binário para decimal (Figura 1.2) 7 Elementos Básicos de Circuitos Digitais2+7×0 + 2+6×0 + 2+5×1 + 2+4×1 + 2+3×1 + 2+2×0 + 2+1×1 + 20×0 + 2-1×1 + 2-2×0 + 2-3×1 +2-4×0 + 2-5×1 + 2-6×0 + 2-7×0 +2-8×1 = 0 + 0 + 32 + 16 + 8 + 0 + 2 + 0 + 1/2 + 0 + 1/8 + 0 + 1/32 + 0 + 0 + 1/256 = 15016/256 Hexadecimal1 para decimal (Figura 1.3) 16+1×3 + 160×10 +16-1×10 + 16-2×9 = 15027/25610 ≅ 58,710 Octal para decimal (Figura 1.4) 8+1×7 + 80×2 +8-1×5 + 8-2×2 + 8-3×2 ≅ 58,710 1.2.1 DECIMAL-BINÁRIO A partir de um número decimal, sua representação binária é obtida realizando-se a divisão inteira da parte inteira do número por dois e anotando-se os restos da divisão, até obter-se o quociente zero. A parte fracionária é convertida para binário multiplicando-se a mesma por dois e anotando-se o "vai-um" (ou "carry"), até que o resultado à direita da vírgula seja zero (o processo pode repetir-se ad infinitum, isto é, nunca convergir para zero; o número de repetições dependerá da precisão desejada). Na Figura 1.5, é mostrada a conversão do número 25,375 (10) para binário (b-s é a abreviatura de "bit" menos significativo e b+s é a abreviatura de "bit" mais significativo; o subscrito no lado direito do número indica a base usada). Na primeira multiplicação do processo de conversão da parte fracionária, o "carry" é zero já que 0,3752 não resulta em um número com parte inteira; na segunda multiplicação, o "carry" é um já que 0,7502 resulta em um número com parte inteira (1,5); na terceira multiplicação, o "carry" é um uma vez que já que 0,5 (a parte fracionária de 1,5)2 também resulta em um número com parte inteira (1). 2 12 25 24 1 2 6120 2 360 2 121 20 1 0 b+s b-s 0,375X 2 0,750 X 2 1,500 X 2 3,000 carry 0 carry 1 carry 1 b+s b-s 25,37510 11001,0112= Figura 1.5: Conversão de decimal para binário 1.2.2 DECIMAL-HEXADECIMAL A partir de um número decimal, sua representação em hexadecimal é também obtida de maneira análoga à decimal-binário: divide-se o número por dezesseis e anotam-se os restos da divisão, até obter-se o quociente zero. 43110 431/16 = 26 (resto 15; b-s ) 26/16 = 1 (resto 10) 1/16 = 0 ( resto 1; b+s) ∴ 43110 ⇔ 1AF16 1 Convém lembrar que o símbolo A corresponde ao valor 10 em decimal, B corresponde ao 11, C corresponde ao 12, D corresponde ao 13, E corresponde ao 14 e o símbolo F corresponde ao valor 15 8 Elementos Básicos de Circuitos Digitais 1.2.3 DECIMAL-OCTAL A partir de um número decimal, sua representação em octal é obtida dividindo-se o número por oito e anotando-se os restos da divisão, até obter-se o quociente zero. 10010 100/8 = 12 (resto 4 - b-s da parte inteira) 12/8 = 1 (resto 4) 1/8 = 0 (resto 1 - b+s) ∴ 10010 ⇔ 1448 1.2.4 HEXADECIMAL-BINÁRIO E BINÁRIO-HEXADECIMAL Cada dígito hexadecimal representa quatro dígitos binários. Na conversão de binário para hexadecimal, à direita da vírgula binária, os agrupamentos são da esquerda para direita; à esquerda da vírgula binária, os agrupamentos são da direita para a esquerda. 11001,0112 0001 1001, 0110 ∴ 11001,0112 ⇔ 19,616 1.2.5 OCTAL-BINÁRIO E BINÁRIO-OCTAL Cada dígito octal representa três dígitos binários. Na conversão de binário para octal, à direita da vírgula binária, os agrupamentos são da esquerda para direita; à esquerda da vírgula binária, os agrupamentos são da direita para a esquerda. 11001,0112 011 001, 0112 ∴ 11001,0112 ⇔ 31,38 1.2.6 BASE M-BASE N Um modo de converter-se um número representado na base M para a representação na base N consiste em convertê-lo primeiro para decimal e, depois, converter a representação decimal para a base N. Se M = j k e N = 10, a conversão pode ser feita de maneira análoga às conversões de decimal para binário, decimal para octal e decimal para hexadecimal. 1.3 DADOS NUMÉRICOS Nesta seção serão apresentadas as representações de informações numéricas. 1.3.1 INTEIROS COM SINAL Existem três formas para a representação de números inteiros com sinal na forma binária: a) sinal-magnitude: o "bit" mais significativo representa o sinal, 0 para positivoe 1 para negativo. Por exemplo, supondo cinco dígitos onde o mais à esquerda representa o sinal, +13 10 ⇔ 011012 e -1310 ⇔ 111012. O intervalo de números representáveis vai de -15 a + 15 (11111, 11110, 11101, 11100, 11011, 11010, 11001, 11000, 10111, 10110, 10101, 10100, 10011, 10010, 10001, 00000 ou 10000, 00001, 00010, 00011, 00100, 00101, 00110, 00111, 01000, 01001, 01010, 01011, 01100, 01101, 01110, 01111). 9 Elementos Básicos de Circuitos Digitais b) complemento de 1: o "bit" mais significativo representa o sinal, 0 para positivo e 1 para negativo. Quando o número é negativo, todos os "bits" são complementados (invertidos - 0 para 1 e 1 para 0). Por exemplo, supondo cinco dígitos onde o mais à esquerda representa o sinal, +1310 ⇔ 011012 e -1310 ⇔ 100102. O intervalo de números representáveis vai de -15 a + 15 (10000, 10001, 10010, 10011, 10100, 10101, 10110, 10111, 11000, 11001, 11010, 11011, 11100, 11101, 11110, 00000 ou 11111, 00001, 00010, 00011, 00100, 00101, 00110, 00111, 01000, 01001, 01010, 01011, 01100, 01101, 01110, 01111). c) complemento de 2: o "bit" mais significativo também representa o sinal, 0 para positivo e 1 para negativo. Quando o número é negativo, todos os "bits" são complementados e é somado 1 ao resultado (podem ocorrer 4 casos na adição binária: 0+0 = 0, 1+0 = 1, 1+1 = 0 com "carry" de 1 para o dígito imediatamente à esquerda e 1+1+1 = 1, também com "carry" de 1 para o dígito imediatamente à esquerda). Por exemplo, supondo cinco dígitos onde o mais à esquerda representa o sinal, +1310 011012 e -1310 100112. O intervalo de números representáveis vai de -16 a + 15 (10000, 10001, 10010, 10011, 10100, 10101, 10110, 10111, 11000, 11001, 11010, 11011, 11100, 11101, 11110, 11111, 00000, 00001, 00010, 00011, 00100, 00101, 00110, 00111, 01000, 01001, 01010, 01011, 01100, 01101, 01110, 01111). Em complemento de 2, há apenas uma representação para o número zero: 00000. 1.3.2 NÚMEROS REAIS A notação mais usada para representação de números fracionários é através do ponto flutuante. Na representação em ponto flutuante, o número é dividido em duas partes: mantissa e expoente (a base do expoente será a mesma da representação do número). 4900000 ≡ 0,49×107 onde 0,49 é a mantissa, 10 é a base e 7 é o expoente. 0,00023 ≡ 0,23×10-3 Generalizando, na notação em ponto flutuante, y = M×bE, onde y é o número, M a mantissa, b a base de representação e E o expoente. Tanto a mantissa quanto o expoente podem ter sinal negativo (a representação usual para a mantissa e o expoente, quando a base é a binária, é através de sinal-magnitude). Na base binária, os "bits" destinados à mantissa representam a parte inteira (I) do número e os "bits" destinados ao expoente representam a característica (C). Por exemplo, supondo números binários de 12 "bits" onde os sete "bits" menos significativos representam a parte inteira do número e os cinco "bits" mais significativos representam a característica: 0001100001112 (C=3, I=7) ≡ 23×7 = 5610 0001110001112 (C=3, I=-7) ≡ 23×-7 = -5610 10 Elementos Básicos de Circuitos Digitais1001100001112 (C=-3, I=7) ≡ 2-3×7 = 7/810 1001110001112 (C=-3, I=-7) ≡ 2-3×-7 = -7/810 Para o exemplo anterior, o maior valor representável é 0111101111112 ≡ 2 15×63, o menor inteiro é 0111111111112 ≡ 2 15×-63 e o menor valor absoluto (descartando 0) é 1111100000012 ≡ 1×2 -15. Muitas vezes, a mantissa está na forma de uma fração (por exemplo: o número 9300 é representado como 0,93×104 e não 93×102). Nesse caso, é dito que a mantissa está em sua forma normal e a parte inteira passa a ser chamada de parte fracionária (F). Na representação binária, a vírgula é vista como estando à esquerda do sinal da mantissa e não mais à direita do "bit" menos significativo. Por exemplo, supondo números binários de 12 "bits", onde os sete "bits" menos significativos representam a parte fracionária do número e os cinco "bits" mais significativos representam a característica: 0001100001112 (C=3, F=1/16+1/32+1/64=7/64) ≡ 23×7/64 = 7/8100001110001112 (C=3, F=-7/64) 23×-7/64 = -7/8101001100001112 (C=-3, F=7/64) 2-3×7/64 = 7/512101001110001112 (C=-3, F=-7/64) 2-3×-7/64 = -7/512)10 Para o exemplo anterior, o maior valor representável é 0111101111112 ≡ 215×63/64 = 29×63, o menor inteiro é 0111111111112 ≡ 215×-63 e o menor valor absoluto (descartando 0) é 1111100000012 ≡ 2-15×1/64 = 1/221. 1.3.3 PADRÃO DE PONTO FLUTANTE IEEE 754 Na década de 70, o IEEE (Institute of Electrical and Electronic Engineers) instituiu um comitê para padronizar a aritmética de ponto flutuante. O resultado do trabalho deste comitê foi a definição do padrão IEEE 754 (IEEE, 1985). Este padrão define quatro formatos para representar valores em ponto flutuante: 1. Precisão simples (32 bits): 1 bit de sinal, 8 bits de expoente e 23 bits para a parte fracionária do significando. 2. Precisão simples estendida (≥ 43 bits): utilizada raramente; 3. Precisão dupla (64 bits): 1 bit de sinal, 11 bits de expoente e 52 para a parte fracionária do significando. 11 Elementos Básicos de Circuitos Digitais 4. Precisão dupla estendida (80 bits): 1 bit de sinal, 15 bits de expoente e 64 bits para a parte fracionária do significando. O formato de precisão dupla estendida é utilizado primariamente dentro de unidades de ponto flutuante. Ambos os formatos de simples e dupla precisão usam base 2 para mantissa (fração normalizada) e notação de excesso para expoentes. A notação de excesso (o expoente original é deslocado por um determinado valor) é utilizada para eliminar o uso do sinal no caso de expoentes negativos. O excesso é calculado através da seguinte fórmula: 2 bits do expoente – 1 (por exemplo, se o expoente tiver 8 bits, então o expoente original deverá ser somado com 2 8-1=127). Os formatos são mostrados na Figura 1.6. Figura 1.6: Formatos de ponto flutuante padrão IEEE Para codificar -118.625 em IEEE 754 Precisão simples são necessários os seguintes passos: 1. Primeiro, temos que obter o sinal, o expoente e a fração. Como o número é negativo, o sinal é “1”; 2. Agora, escrevemos o número (sem o sinal) usando a notação binária 1110110.101 3. O ponto é movido para a esquerda até que somente sobre um número “1” à esquerda do ponto: 1110110.101 = 1.110110101 x 26. Isto é um número normalizado. A mantissa é a parte à direita do ponto, preenchidos com “0” para preencher os 23 bits (no caso de precisão simples) 12 Elementos Básicos de Circuitos Digitais 11011010100000000000000 4. O expoente é 6, mas precisa ser convertido para binário e ajustado (assim o expoente mais negativo é 0, e todos os expoentes são números não negativos). Para o formato 32 bits do IEEE 754, o ajuste é 127 e assim 6 + 127 = 133, o qual em binário é 10000101 5. Resumindo, o número -118.625 é decomposto em (Figura 1.7): • Sinal: 1 • Mantissa: 11011010100000000000000 • Expoente: 10000101 Figura 1.7: Codificação do Número decimal no padrão IEEE de simples precisão Algumas codificações de valores são apresentadas na Tabela 1.1. Tabela 1.1: Exemplo de Representações em ponto flutuante Tipo Sinal Exp Exp+Bias Mantissa Valor 0 0 -127 0 000 0000 0000 0000 0000 0000 0.0 1 0 0 127 000 0000 0000 0000 0000 0000 1.0 -1 1 0 127 000 0000 0000 0000 0000 0000 −1.0 Menor número não-normalizado * -127 0 000 0000 0000 0000 0000 0001 ±2−23 × 2−126 = ±2−149 (≈ ±1.4×10-45 ) Número do meio não-normalizado * -127 0 100 0000 0000 0000 0000 0000 ±2−1 × 2−126 = ±2−127 (≈ ±5.88×10-39) Maior número não-normalizado * -127 0 111 1111 1111 1111 1111 1111 ±(1−2−23) × 2−126 (≈ ±1.18×10-38) Menor número normalizado * -126 1 000 0000 0000 0000 0000 0000±2−126 (≈ ±1.18×10-38 ) Maior número normalizado * 127 254 111 1111 1111 1111 1111 1111 ±(2−2−23) × 2127 (≈ ±3.4×1038 ) +∞ 0 128 255 000 0000 0000 0000 0000 0000 +∞ -∞ 1 128 255 000 0000 0000 0000 0000 0000 −∞ NaN * 128 255 não zero NaN Apesar da grande quantidade de bits utilizados, a representação em ponto flutuante não pode representar com precisão os números reais e nem reproduzir fielmente as operações aritméticas de números reais. Esta limitação pode levar a problemas de precisão. Por exemplo, o número 0.1 não é precisamente representável em ponto flutuante, pois a exata representação binária de 0.1 teria uma seqüência contínua infinita de 1100 (1100110011001100110011001100110011... x 2-4). Ao tentar recuperar este número da representação em ponto flutuante, o seguinte valor seria produzido exatamente: 13 Elementos Básicos de Circuitos Digitais 0.100000001490116119384765625. Se este número fosse elevado ao quadrado, o resultado seria exatamente: 0.010000000298023226097399174250313080847263336181640625. E se utilizando um hardware com representação em ponto flutuante de simples precisão (com arredondamento) para calcular o quadrado, o resultado seria 0.010000000707805156707763671875. Entretanto, o número representável mais próximo de 0.01 (que sofre o mesmo problema que 0.1) é exatamente: 0.009999999776482582092285156250. 1.4 OPERAÇÕES Existem basicamente duas operações aritméticas binárias: a adição "bit" a "bit" e a multiplicação "bit" a "bit". A adição binária "bit" a "bit" é regida por quatro regras: 1º) 1 + 0 = 1 ("carry" 0); 2º) 1 + 1 = 0 ("carry" 1); 3º) 1 + 1 + 1 = 1 ("carry" 1); 4º) 0 + 0 = 0 ("carry" 0). A multiplicação binária "bit" a "bit" é regida por três regras: 1º) 10 = 0; 2º) 11 = 1; 3º) 00 = 0. 1.4.1 ADIÇÃO BINÁRIA EM COMPLEMENTO DE 1 Podem ocorrer 4 situações: a) Os dois números são positivos: soma direta. Supondo cinco dígitos onde o mais à esquerda representa o sinal, (+710) + (+310) = +1010 ⇔ 001112 + 000112 = 010102. b) número positivo com negativo e o negativo é maior: a soma é direta com o complemento. Supondo cinco dígitos onde o mais à esquerda representa o sinal, (-710) + (+310) = -410 ⇔ 110002 + 000112 = 110112. 14 Elementos Básicos de Circuitos Digitais c) número positivo com negativo e o negativo é menor: a soma é feita com o complemento; o "carry" é somado ao resultado. Supondo cinco dígitos onde o mais à esquerda representa o sinal, (+710) + (-310) = +410 ⇔ 001112 + 111002 è 000112 + 1 ("carry") = 001002 d) número negativo com negativo: soma direta entre os complementos; "carry" é somado ao resultado. Supondo cinco dígitos onde o mais à esquerda representa o sinal, (-710) + (-310) = -1010 ⇔ 110002 + 111002 è 101002 + 1 ("carry") = 101012 1.4.2 ADIÇÃO BINÁRIA EM COMPLEMENTO DE 2 Na adição binária em complemento de 2 também podem ocorrer 4 situações: a) Os dois números são positivos: soma direta. b) número positivo com negativo e o negativo é maior: a soma é direta com o complemento. Supondo cinco dígitos onde o mais à esquerda representa o sinal, (-710) + (+310) = -410 ⇔ 110012 + 000112 = 111002. c) número positivo com negativo e o negativo é menor: a soma é feita com o complemento; o "carry" é descartado. Supondo cinco dígitos onde o mais à esquerda representa o sinal, (+710) + (-310) = +410 ⇔ 001112 + 111012 è 001002 d) número negativo com negativo: soma direta entre os complementos; "carry" é descartado. Supondo cinco dígitos onde o mais à esquerda representa o sinal, (-710) + (-310) = -1010 ⇔ 110012 + 111012 è 101102 1.4.3 MULTIPLICAÇÃO BINÁRIA A operação de multiplicação é considerada complexa quando comparada com as operações de adição e subtração. Quando os números binários forem sem sinal, a operação é realizada que nem no sistema decimal. Cada dígito do multiplicador multiplica o multiplicando obtendo-se, assim, produtos parciais. Os produtos parciais são somados (um produto parcial é somado ao produto parcial seguinte, deslocado uma posição à esquerda). 1001 (9) ×1011 (11) 1001 1001 0000 1001 1100011 (99) 15 Elementos Básicos de Circuitos Digitais A multiplicação de números inteiros binários de n bits resulta em um produto com até 2n bits de comprimento As multiplicações podem ser feitas de maneira mais eficiente do que foi mostrado. Os produtos parciais podem ser imediatamente somados, em vez de esperar todos os produtos (poupando espaço de armazenamento). Como estamos lidando com números binários, os produtos parciais resumem-se a copiar o multiplicando deslocado quando o bit do multiplicador for 1, e simplesmente deslocar o produto quando o bit do multiplicador for 0. Baseado nestas idéias, a Figura 1.8 mostra um fluxograma da multiplicação de números inteiros de 32 bits sem sinal. Assuma que o registrador Produto (o qual deve possuir 64 bits) é inicializado com o valor do multiplicador, e que Produto 0 refere-se ao bit 0 do registrador Produto. Este método necessita somente um registrador de 64 bits e uma ULA de 32 bits. A Figura 1.10 mostra um exemplo de multiplicação de dois números de 4 bits. Figura 1.8: Fluxograma da multiplicação de números inteiros de 32 bits sem sinal Figura 1.9: Exemplo de multiplicação de 2 números de 4 bits: Multiplicando = 00102 e Multiplicador = 00112 Um número negativo deve ser estendido de acordo com o número de bits do resultado para dar certo. A Figura 1.10 mostra o resultado das multiplicações que envolvem um número negativo da maneira tradicional e estendendo o número negativo. Após a extensão do número negativo, o algoritmo da Figura 1.8 pode ser utilizado para realizar a multiplicação. 16 Elementos Básicos de Circuitos Digitais Figura 1.10: Exemplo de multiplicação binária para números negatives 1.4.4 DIVISÃO BINÁRIA A divisão é mais complexa que a multiplicação. Para efetuar a divisão, verifica-se se o divisor cabe no dividendo: em caso positivo, o resultado parcial é 1 e a divisão continua com o resto; em caso negativo, o resultado parcial é 0 e a divisão continua com o resto. 2910 ÷ 1210 ≅ 2,4110 111011100 1100 10,011... 0010100 1100 1000 ... 1.4.5 ADIÇÃO, MULTIPLICAÇÃO E DIVISÃO EM PONTO FLUTUANTE O processo de adição ou subtração em ponto flutuante é mais complexo do que o de multiplicação ou divisão devido à necessidade de igualar ou escalonar os expoentes. Pode-se dividir o processo de adição e subtração em quatro fases, como mostra o algoritmo na Figura 1.11: 1. Escalonamento dos expoentes (ou alinhamento das mantissas): o escalonamento pode ser obtido tanto deslocando o número menor para a direita (aumentando o expoente) quanto deslocando o número maior para a esquerda. Como ambas as operações podem resultar em perda de dígitos, utiliza-se o primeiro, pois como o número é menor qualquer perda de dígitos tem menor efeito no resultado da adição. Em computadores, o escalonamento dos expoentes pode ser feito através de "software" (rotinas de ponto flutuante) ou "hardware" (operações de ponto flutuante). Assuma que a mantissa possui somente 4 dígitos e o expoente 2. A soma dos números 9,99910x101 e 1,61010 x 10-1 requer o escalonamento dos expoentes: 1,61010 x 10-1 = 0,161010 x 100 = 0,0161010 x 101 Como a mantissa pode ter somente 4 dígitos, o número utilizado será 0,01610 x 101 2. Soma das mantissas: como os expoentes estão escalonados, M1×bm+M2×bm, a soma é realizada da seguinte maneira: (M1+M2)×bm. 9,99910 + 0,01610 = 10,01510 17 Elementos Básicos de Circuitos Digitais Pode ocorrer um overflow na mantissa por um dígito. Assim, a mantissa do resultado deve ser deslocada para a direita e o expoente incrementado. Caso esta operaçãoresulte em overflow do expoente, a operação é terminada e um erro é reportado. 3. Normalização do resultado: consiste em deslocar os dígitos da mantissa até a obtenção da forma normalizada. Sempre que o expoente é aumentado ou diminuído, deve-se verificar se houve overflow ou underflow, ou seja, verificar se o expoente ainda cabe em seu campo. 10,01510 x 101 = 1,001510 x 102 4. Arredondamento da mantissa: o resultado de qualquer operação sobre as mantissas geralmente é armazenado em um registrador de tamanho maior. Quando o resultado é colocado novamente no formato de ponto flutuante, os bits extras devem ser descartados. O padrão IEEE relaciona 4 métodos de arredondamento: arredondar para o mais próximo (padrão), arredondar para cima, arredondar para baixo, e arredondar na direção de 0. 1,001510 x 102 ≅ 1,00210 x 102 Figura 1.11: Adição de números de ponto flutuante Devido ao alinhamento das mantissas e normalização do resultado, a adição em ponto flutuante não é associativa; ou seja, x+(y+z)≠(x+y)+z. 18 Elementos Básicos de Circuitos Digitais Algumas heurísticas podem ser utilizadas durante o processo de soma ou subtração. Por exemplo, se um dos números for zero, o resultado será o outro (no caso de subtração pode ocorrer a troca de sinal, inversão do bit de sinal); se ambos os operandos forem zero, o resultado será zero; checar se o escalonamento dos expoentes é necessário. As operações de multiplicação e divisão em ponto flutuante são relativamente simples. Para efetuar-se M1 ×bm × M2×bn, faz-se (M1×M2)×bm+n e para efetuar-se M1xbm ÷ M2×bn, faz-se (M1 ÷ M2)bm-n. Assuma que os valores a serem multiplicados são 1,11010 x 1010 e 9,20010 x 10-5, e que a mantissa possui 4 dígitos e o expoente 2. O processo de multiplicação é realizado da seguinte maneira: 1. Cálculo do expoente: o novo expoente é a soma dos expoentes dos operandos. novo expoente = 10 + (-5) = 5 com números em excesso de 2m-1 deve-se subtrair o excesso do resultado da soma: (1010) + (-510) = 5 ((10 +127) +(-5 +127) - 127)2m-1= 132 = (5 +127) 2m-1 2. Multiplicação das mantissas: a multiplicação é realizada da mesma maneira que para números inteiros. O produto terá o dobro do comprimento do multiplicando e do multiplicador. 1,110 x 9,20010 = 10,21210 3. Normalização do produto: mesmo procedimento que na adição. 10,21210 x 105 = 1,021210 x 106 4. Arredondamento do produto: mesmo procedimento que na adição. 1,021210 x 106 » 1,02110 x 106 5. Correção do sinal: o sinal do produto dependerá dos sinais originais dos operandos. Se forem iguais, o sinal será positivo, caso contrário, negativo. Assim, o produto final é +1,02110 x 106 1.4.6 ADIÇÃO HEXADECIMAL A soma deve ser efetuada observando-se os valores fornecidos pelas relações da Tabela 1.2. Para a realização da soma AB + 7D faz-se a soma B + D (coordenadas BD na tabela contêm 18 ou 8 com "carry") e depois a soma A + 7 + "carry" da soma anterior (coordenadas A7 na Tabela 1.2 contêm 11 ou 1 com "carry") Logo, AB + 7D = 128. 1 AB +7D 128 19 Elementos Básicos de Circuitos Digitais Tabela 1.2: Adição hexadecimal + 0 1 2 3 4 5 6 7 8 9 A B C D E F 0 0 1 2 3 4 5 6 7 8 9 A B C D E F 1 1 2 3 4 5 6 7 8 9 A B C D E F 10 2 2 3 4 5 6 7 8 9 A B C D E F 10 11 3 3 4 5 6 7 8 9 A B C D E F 1O 11 12 4 4 5 6 7 8 9 A B C D E F 10 11 12 13 5 5 6 7 8 9 A B C D E F 10 11 12 13 14 6 6 7 8 9 A B C D E F 10 11 12 13 14 15 7 7 8 9 A B C D E F 10 11 12 13 14 15 16 8 8 9 A B C D E F 10 11 12 13 14 15 16 17 9 9 A B C D E F 10 11 12 13 14 15 16 17 18 A A B C D E F 10 11 12 13 14 15 16 17 18 19 B B C D E F 10 11 12 13 14 15 16 17 18 19 1A C C D E F 10 11 12 13 14 15 16 17 18 19 1A 1B D D E F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C E E F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D F F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E Os números negativos em hexadecimal são representados a partir da conversão do número em binário em complemento de dois para hexadecimal. Por exemplo, supondo 8 dígitos onde o mais à esquerda ("bit" mais significativo) representa o sinal, -7910 Û 101100012 Û B116 . Um método para realizar-se a subtração em hexa consiste em converter o subtraendo para binário, tomar seu complemento de 2, convertê-lo para hexa e somá-lo ao minuendo. As regras em relação ao "carry" são as mesmas para adição em complemento de 2. 47A16 (minuendo) - 29216 (subtraendo) è 0100011110102 - 0010100100102 è 0100011110102 + 1101011011102 = 0001111010002 1.5 CÓDIGOS Utilizando-se dígitos binários, pode-se representar qualquer grupo de elementos (um alfabeto, um conjunto de símbolos, etc.). Para a representação de 2n elementos são necessários n dígitos binários. Exemplo 1 Para a representação de 4 cores são necessários 2 "bits" (22 = 4). Por exemplo: vermelho = 002 azul = 012, verde = 102 e amarelo = 112. Os dígitos decimais são outro exemplo. Para representar um dígito decimal são necessários quatro "bits". Existem diversos códigos de 4 "bits" usados para a representação de dígitos decimais. Os mais usados são mostrados na tabela da Tabela 1.3. O código BCD (de "Binary Coded Decimal") da Tabela 1.3 é o 8421. Nos três primeiros códigos da tabela da Tabela 1.3, a posição do "bit" fornece seu valor. Por exemplo: no BCD8421 (o mais utilizado, por ser uma atribuição direta do binário equivalente), o primeiro dígito vale 8, o segundo 4, o terceiro 2 e o último vale 1. Para formar-se um número decimal de mais de um dígito, simplesmente agrupam-se os "bits" de cada dígito decimal. 20 Elementos Básicos de Circuitos Digitais Tabela 1.3: Códigos para representação de números decimais No BCD8421 84-2-1 2421 EXCESSO-3 0 0000 0000 0000 0011 1 0001 0111 0001 0100 2 0010 0110 0010 0101 3 0011 0101 0011 0110 4 0100 0100 0100 0111 5 0101 1011 1011 1000 6 0110 1010 1100 1001 7 0111 1001 1101 1010 8 1000 1000 1110 1011 9 1001 1111 1111 1100 Exemplo 2 837 em BCD8421: 1000 0011 0111 Os códigos Excesso3, 84-2-1 e 2421 têm uma propriedade que o BCD não tem: os três são auto- complementares, isto é, para obter-se o complemento de 9 de um número codificado, basta inverter-se todos os "bits". Isto é útil para operações aritméticas (apesar de que o procedimento normal, quando da execução de operações aritméticas, é a conversão para binário). Exemplo 3 345 no código 2421 é 0011 0100 1011. O complemento de 9 é 999; 999 - 345 = 654 ou 1100 1011 0100. 1.5.1 CÓDIGOS COM DETECÇÃO DE ERROS Uma informação binária pode ser transmitida através de um meio, como cabos ou ondas de rádio. Ruído nesses meios pode alterar a informação transmitida. Para a detecção de alterações na informação, podem ser usados "bits" de paridade. Um "bit" de paridade é um "bit" incluído na mensagem, que informa se o número total de 1's é par ou ímpar. O emissor insere o "bit" de paridade e o receptor conta o número de 1's para verificar a paridade. Exemplo 4 Uma mensagem de 4 "bits" com mais um de paridade ímpar (tem valor 1 quando o número de 1's da mensagem é ímpar). Mensagem P 0000 0 0100 1 1110 1 1010 0 ... 1.5.2 CÓDIGOS ALFANUMÉRICOS Os códigos alfanuméricos são usados para a representação de caracteres em geral. Os mais utilizados são: ASCII ("American Standard Code for Information Interchange" ou Código Americano Padrão para Troca de 21 Elementos Básicos de Circuitos Digitais Informações), EBCDIC ("Extended BCD Interchange Code" ou Código BCD Extendido para Troca) e, "Extended ASCII", e UNICODE. Lançado na década de 60, o ASCII utiliza sete bits e os caracteres estão divididos assim: 0 a 2F16 para caracteres de controle e símbolos, 3016 a 3916 para os dígitos de 0 a 9 e 4116a 5916 para as letras maiúsculas. O "Extended ASCII" (utilizado pelos equipamentos da linha IBM/PC) contém, além dos caracteres padrão do ASCII, caracteres gráficos. A Tabela 1.4 mostra a tabela ASCII com os valores dos códigos dos caracteres em decimal e hexadecimal. Tabela 1.4: Caracteres e Códigos ASCII Cód Car Cód Car Cód Car Cód Car Cód Car Cód Car Cód Car Cód Car 0 32 64 @ 96 ‘ 128 Ç 160 á 192 └ 224 Ó 1 ☺ 33 ! 65 A 97 a 129 ű 161 í 193 ┴ 225 ß 2 ☻ 34 ” 66 B 98 b 130 é 162 ó 194 ┬ 226 Ô 3 ♥ 35 # 67 C 99 c 131 â 163 ú 195 ├ 227 Ò 4 ♦ 36 $ 68 D 100 d 132 ä 164 ñ 196 ─ 228 õ 5 ♣ 37 % 69 E 101 e 133 à 165 Ñ 197 ┼ 229 Õ 6 ♠ 38 & 70 F 102 f 134 å 166 ª 198 ã 230 µ 7 • 39 ’ 71 G 103 g 135 ç 167 º 199 Ã 231 þ 8 40 ( 72 H 104 h 136 ê 168 ¿ 200 ╚ 232 Þ 9 41 ) 73 I 105 i 137 ë 169 ® 201 ╔ 233 Ú 10 42 * 74 J 106 j 138 è 170 ¬ 202 ╩ 234 Û 11 ♂ 43 + 75 K 107 k 139 ï 171 ½ 203 ╦ 235 Ù 12 ♀ 44 , 76 L 108 l 140 î 172 ¼ 204 ╠ 236 ý 13 45 - 77 M 109 m 141 ì 173 ¡ 205 ═ 237 Ý 14 ♫ 46 . 78 N 110 n 142 Ä 174 « 206 ╬ 238 ¯ 15 ☼ 47 / 79 O 111 o 143 Å 175 » 207 ¤ 239 ´ 16 48 0 80 P 112 p 144 É 176 ░ 208 ð 240 17 49 1 81 Q 113 q 145 æ 177 ▒ 209 Ð 241 ± 18 ↕ 50 2 82 R 114 r 146 Æ 178 ▓ 210 Ê 242 _ 19 !! 51 3 83 S 115 s 147 ô 179 │ 211 Ë 243 ¾ 20 ¶ 52 4 84 T 116 t 148 ö 180 ┤ 212 È 244 ¶ 21 § 53 5 85 U 117 u 149 ò 181 Á 213 245 § 22 ▬ 54 6 86 V 118 v 150 û 182 Â 214 Í 246 ÷ 23 ↕ 55 7 87 W 119 w 151 ù 183 À 215 Î 247 ¸ 24 ↑ 56 8 88 X 120 x 152 ÿ 184 © 216 Ï 248 ° 25 ↓ 57 9 89 Y 121 y 153 ö 185 ╣ 217 ┘ 249 ¨ 26 → 58 : 90 Z 122 z 154 Ü 186 ║ 218 ┌ 250 · 27 ← 59 ; 91 [ 123 { 155 ø 187 ╗ 219 █ 251 ¹ 28 ¬ 60 < 92 \ 124 | 156 £ 188 ╝ 220 ▄ 252 ³ 29 ↔ 61 = 93 ] 125 } 157 Ø 189 ¢ 221 ¦ 253 ² 30 62 > 94 ^ 126 ~ 158 × 190 ¥ 222 Ì 254 31 63 ? 95 _ 127 ∆ 159 ƒ 191 ┐ 223 ▀ 255 Assim, a constante 'ABC' seria armazenada na memória conforme a Figura 1.12. 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 1 1 1 Figura 1.12: Armazenamento da cadeia de caracteres “ABC”. 22 Elementos Básicos de Circuitos Digitais O EBCDIC é um código de 8 bits (portanto representa 256 símbolos) desenvolvido pela IBM (na década de 60) para seus computadores mainframes. Ele descende do código BCD que utiliza 6 bits para representar caracteres alfanuméricos. Apesar do extenso uso do sistema de codificação ASCII, atualmente existem diversos sistemas que são utilizados – por razões de plataforma, língua, entre outros – que faz com que os computadores devam ser capazes de traduzir qualquer sistema para que não haja comprometimento da informação. Para resolver isto, um trabalho de catalogação dos símbolos existentes foi iniciado por várias empresas (Xerox e Apple) pelos meados da década de 80. Com a criação de um consórcio de empresas de tecnologia – chamado Unicode Consortium - o projeto de padronização lançou em 1991 a primeira versão de um sistema de codificação de símbolos para computador chamado de UNICODE (Universal Code). Esta versão apresentou um sistema com 7161 códigos (21 sistemas de escritas). O padrão Unicode tem sido adotado por líderes do setor de informática tais como a Apple, HP, IBM, JustSystem, Microsoft, Oracle, SAP, Sun, Sybase, Unisys e muitos outros. O UNICODE cobre quase todos os sistemas de escrita em uso atualmente, tais como, alfabeto hebraico, árabe, tailandês e muitos outros. Além disso, o UNICODE inclui pontuação, acentos, símbolos matemáticos, símbolos técnicos, flechas, entre outros. A versão 5.1, lançada em abril de 2008, totaliza 100713 códigos (inclui 75 sistemas de escrita). 23 Elementos Básicos de Circuitos Digitais 2 CIRCUITOS DIGITAIS COMBINACIONAIS Mesmo em um sistema digital de larga escala, tal como um computador, ou um sistema de processamento de dados, de controle ou digital de comunicação, existem somente algumas operações básicas que devem ser executadas. Estas operações são naturalmente repetidas muitas vezes e são realizadas por circuitos digitais. De maneira bastante ampla, podemos classificar os circuitos digitais (como mostra a Figura 2.13) em: • Circuitos combinacionais são aqueles nos quais a saída depende apenas do estado presente das entradas; são constituídos de circuitos ou portas lógicas. Portas lógicas são utilizadas para implementar equações algébricas booleanas (será mostrado mais tarde). • Circuitos seqüenciais são aqueles nos quais a saída depende não só do estado presente das entradas, mas também de seus estados anteriores; são constituídos de portas lógicas e flip-flops (biestáveis). Figura 2.13: Circuitos Combinacional e Seqüencial Neste capítulo, abordaremos os problemas de análise e síntese de circuitos combinacionais à base das equações da álgebra de Boole, utilizando circuitos integrados básicos. 2.1. OPERAÇÃO DIGITAL (BINÁRIA) DE UM SISTEMA As funções de um sistema digital são de forma binária. Esse sistema emprega dispositivos que apresentam somente dois estados. Por exemplo, um transistor da chave eletrônica é polarizado para operar no corte ou na saturação. Então, somente as tensões de saída de nível alto VOH e de nível baixo VOL são permitidas. Várias denominações são usadas para estes dois níveis discretos de tensão. e os mais comum são apresentados na Tabela 2.5. Tabela 2.5: Terminologia do estado binário 1 2 3 4 5 6 7 8 Um dos estados Verdadeiro Nível alto 1 Com pulso Excitado Desligado Fechado Sim O outro estado Falso Nível baixo 0 Sem pulso Não excitado Ligado Aberto Não Em lógica, uma afirmação é verdadeira ou falsa; esta é a primeira classificação binária apresentada na tabela. Uma chave pode estar fechada ou aberta que é a notação da coluna 7 da Tabela 2.5. A manipulação da aritmética e 24 Elementos Básicos de Circuitos Digitais da matemática binária de chaveamento ou das funções lógicas utiliza somente os símbolos matemáticos 0 (zero) e 1 (um), encontrados na coluna 3 da Tabela 2.5. 2.2. OPERAÇÕES LÓGICAS OU BOOLEANAS Uma função lógica ou de Boole (booleana) tem a forma: y = f(x1, x2,..., xi,..., xn) Onde y, x1, x2,... , xi,... , xn são variáveis lógicas, possuindo em conseqüência somente dois estados possíveis. Isto é, {xi} ∈ {0, 1} para i = 1, 2, ... , n e y ∈ {0, 1}. y é variável dependente e {xi} são as variáveis independentes. As variáveis independentes estão relacionadas através de operações lógicas, que foram desenvolvidas pelo matemático inglês G. Boole na metade do século passado. A ferramenta matemática utilizada pelas variáveis lógicas chama-se Álgebra de Boole (ou booleana). O número máximo das funções lógicas diferentes y = f (x , x , . . . , x , . . . , x )j j 1 2 i n para j = 0, 1, 2, ... , M-1, depende do número n dos variáveis independentes e é igual a 22 n . Isto é: • para duas variáveis independentes x1, x2, isto é n = 2, temos M = 16 (como mostra o exemplo da Tabela 2.6), • para três variáveis independentes x1, x2, x3, isto é n = 3, temos M = 256. Tabela 2.6: Exemplo de funções para 2 variáveis A B f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15 f16 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 1 0 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 Nós consideramos só três funções lógicas básicas. Todas as funções lógicas restantes podem ser obtidas utilizando a composição destas funções básicas. 2.2.1. OPERAÇÃO "NÃO" A operação "NÃO" (em inglês "NOT") é mais simples das operações lógicas. Se x é uma variável lógica, seu inverso é representando por x (leia-se "não-x" ou "x-barra"). A Figura 2.14 mostra a tabela verdade da operação "NÃO" ou "Negação". 25 Elementos Básicos de Circuitos Digitais x y 0 1 1 0 xy = ‘ (a) (b)Figura 2.14 (a) Tabela verdade, (b) Expressão da operação NÃO. A tabela mostrada na Figura 2.14a chama-se tabela verdade (em inglês "truth table") e é uma forma útil de representar funções lógicas. A coluna da esquerda mostra os valores que x pode assumir e a coluna da direita os valores resultantes para a variável y. Como neste caso temos uma única variável independente, é claro que a tabela verdade possui duas linhas, uma vez que x somente pode ser "0" ou "1". A Figura 2.15 mostra um circuito elétrico que representa a operação "NÃO". Neste circuito, se a chave S está aberta (S=0) a lâmpada L está acesa (L=1) e se a chave S está fechada (S=1) a lâmpada L está apagada (L=0). O circuito que realiza a operação "NÃO" é denominado inversor e representado pelos símbolos mostrados na Figura 2.15c. V + - R S L (a) x x y = x _ y = x padrão IEC117-13 1 americano ou (c) S 10 1 0 L (b) Figura 2.15 (a) Circuito representativo da operação "NÃO", (b) Tabela verdade, e (c) Símbolos do circuito inversor. 2.2.2. OPERAÇÃO "E" A operação "E" (em inglês "AND") é definida como aquela em que a variável de saída y é igual a "1" se, e somente se, todas as variáveis de entrada forem iguais a "1". A operação lógica "E" se chama multiplicação lógica ou a conjunção das variáveis independentes. Para duas variáveis independentes. Para duas variáveis independentes, usando os símbolos de multiplicação e de conjunção, a expressão da operação lógica "E" pode ser escrita como 21212121 xx=x.x=x&x=xx=y ∧ e é lida como y igual a x1 E x2. A Figura 2.16 ilustra um circuito elétrico que representa a operação lógica "E" para duas variáveis e sua tabela verdade. O circuito que realiza a operação "E" denomina-se porta "E". 26 Elementos Básicos de Circuitos Digitais V + - L S 1 2S S 1 2S L 0 0 0 0 0 0 0 11 1 1 1 x 1 2x americano x 1 2x ou IEC 117-13 & (a) (b) (c) y=x 1 2x y=x 1 2x Figura 2.16: (a) Circuito representativo da operação "E", (b) Tabela verdade, e (c) Símbolos de uma porta "E" para duas entradas x1 e x2. As convenções utilizadas são as mesmas que para o circuito da Figura 2.16 e você pode ver claramente que para que a lâmpada L esteja acesa (estado lógico "1") é necessário que as chaves S1 e S2 estejam fechadas (ambas no estado lógico "1"). 2.2.3. OPERAÇÃO "OU" A operação "OU" (em inglês "OR") é definida como aquela em que a variável de saída é igual a "1" se uma ou mais variáveis de entrada forem iguais a "1". Isto é, equivalente a dizer que a saída será igual a "0" se , e somente se, todas as variáveis de entrada forem iguais a "0". A operação lógica "OU" se chama a adição lógica ou a disjunção das variáveis independentes. Para duas variáveis independentes, usando os símbolos de adição e de disjunção, podemos escrever a operação lógica "OU" como y = x x = x + x1 2 1 2∨ e é lida como y igual a x1 OU x2. A Figura 2.17 mostra um circuito elétrico que representa a operação "OU" para duas variáveis, sua tabela verdade e os símbolos usados para representar a porta "OU". LV + - S 1 2S S 1 2S L 0 0 0 0 0 11 1 1 1 1 1 x 1 2x americano x 1 2x y= x 1 2x+ y= x 1 2x+ padrão IEC 1 (a) (b) (c) Figura 2.17: (a) Circuito representativo da operação "OU", (b) Tabela verdade, e (c) Símbolos de uma porta "OU" para duas entradas x1 e x2. 2.3. PROPRIEDADES DAS OPERAÇÕES LÓGICAS Vamos agora examinar uma série de propriedades das operações lógicas. Estas propriedades podem ser verificadas de maneira simples através das tabelas verdade. 1. As operações "E' e "OU" são comutativas como as operações aritméticas multiplicação e adição: x x = x x1 2 2 1. . x + x = x + x1 2 2 1 27 Elementos Básicos de Circuitos Digitais 2. As operações "E" e "OU" são associativas como as operações aritméticas respectivas: x x .x ) = (x x ).x1 2 3 1 2 3.( . x + x + x ) = (x + x ) + x1 2 3 1 2 3( 3. Teorema da involução x = x onde a dupla negação conduz à variável original (não-não x é igual a x). 4. A operação "E" é distributiva em relação à operação "OU" (como a multiplicação aritmética é distributiva em relação à adição aritmética). x . x + x ) = x .x + x .x1 2 3 1 2 1 3( 5. Outras propriedades: x.x = x; x + x = x; x.0 = 0; x.1 = x; x + 0 = x; x + 1 = 1; x.x 0= ; x + x 1= ; x + x .x = x1 1 2 1 x + x .x = x + x1 1 2 1 2; 0 1= o complemento de "0" é igual a "1"; 1 0= o complemento de "1" é igual a "0". 6. Teoremas de De Morgan a. A operação "NÃO" aplicada a uma operação "E" é igual à operação "OU" aplicada aos complementos das variáveis de entrada, ou seja x .x x + x1 2 1 2= (2.1) b. A operação "NÃO" aplicada a uma operação "OU" é igual à operação "E" aplicada aos complementos das variáveis de entrada, ou seja x + x x .x1 2 1 2= (2.2) 2.4. PORTA "NÃO-E" COMO BLOCO LÓGICO UNIVERSAL As operações "NÃO", "E" e "OU" podem ser realizadas utilizando-se portas "NÃO-E" e, por este motivo, a porta "NÃO-E" é conhecida como bloco lógico universal (em inglês "NAND"). 28 Elementos Básicos de Circuitos Digitais Se as três operações básicas podem ser realizadas com portas "NÃO-E", isto significa que qualquer circuito lógico pode ser sintetizado apenas com este tipo de porta. Uma porta "NÃO-E" com duas entradas fornece a saída: y = x x1 2. Aplicando o mesmo sinal às duas entradas, temos y = x x. , mas como x.x=x, segue-se y = x . Em outras palavras, para obter a função "NÃO" a partir da porta "NÃO-E", basta ligar todas as entradas juntas. A Figura 2.18a mostra um inversor construído a partir de uma porta "NÃO-E" de duas entradas. Figura 2.18: Porta "NÃO-E" como bloco lógico universal Como a operação "NÃO-E" é o inverso da operação "E" basta inverter a saída da porta "NÃO-E" para obter a função "E". A Figura 2.18 mostra como é obtida a função "E" para duas variáveis a partir de portas "NÃO-E”. Para conseguir a função "OU" a partir de portas "NÃO-E”, devemos considerar o primeiro teorema de De Morgan (Equação 2.1), lembrando também que a dupla negação retorna à variável original. Veja as expressões abaixo: 212121 x+x=xx=x.x=y + ou seja, para obter a função "OU", realizamos a operação "NÃO-E" com os complementos das variáveis de entrada. A Figura 2.18 mostra como a função "OU" é obtida para duas variáveis a partir de portas "NÃO-E”. 29 Elementos Básicos de Circuitos Digitais 2.5. PORTA "NÃO-OU" COMO BLOCO LÓGICO UNIVERSAL A porta "NÃO-OU" (em inglês "NOR") pode ser utilizada para realizar as três operações lógicas fundamentais "NÃO", "E" e "OU". Assim, a porta "NÃO-OU" é também um bloco lógico universal e qualquer circuito lógico pode ser construído apenas com este tipo de porta: y = x + x1 2 Se aplicarmos o mesmo sinal às entradas de uma porta "NÃO-OU" de, por exemplo, duas entradas, teremos na saída y = x + x , mas, como x + x = x, segue-se que y x= . Assim para conseguir a função "NÃO" a partir da porta "NÃO-OU", basta conectar juntas todas as entradas da porta. A Figura 2.19 mostra um inversor construindo com uma porta "NÃO-OU" de duas entradas. Figura 2.19: Porta "NÃO-OU" como bloco lógico universal Para conseguir a função "E" a partir de portas "NÃO-OU”, devemos considerar o segundo teorema de De Morgan (Equação 2.2) e o fato que a dupla negação retorna à variável original. Veja as expressões abaixo: 212121 xx=xx=x+x=y ∧∧ ou seja, para obter a função "E", realizamos a operação "NÃO-OU" com os complementos das duas variáveis de entrada. A Figura 2.19 mostra como a função "E" é obtida para duas variáveis com portas "NÃO-OU”. 30 Elementos Básicos de Circuitos Digitais 2.6. FUNÇÃO "OU EXCLUSIVO" Uma importante função lógica de duas variáveis é a função "OU exclusivo" (em inglês:"EXCLUSIVE-OR" ou "XOR"), que encontra grande aplicação prática em circuitos digitais, como, por exemplo, somadores. A operação "OU exclusivo" é representada por uma cruz dentro de um círculo e tem a segunda denominação "adição em módulo 2": y = x x1 2⊕ A Figura 2.20 mostra a tabela verdade para a função "XOR" e os dois símbolos (americano e europeu). x2 x1 y 0 0 0 0 1 1 1 0 1 1 1 0 (a) (b) (c) Figura 2.20: Função lógica "OU exclusivo": y = x x1 2⊕ : (a) Tabela verdade, (b) Símbolo americano, (c) Símbolo europeu (IEC). A função "OU exclusivo" também há função lógica universal, mas pode ser representada em termos das operações fundamentais "E", "OU", "NÃO", pela equação: 212121 xx=x.x+x.x=y ⊕ (2.3) Fica como exercício para você a construção do circuito "OU exclusivo" de portas "E", "OU", "NÃO" conforme a Equação 2.3. A função lógica fi(A,B) apresentada na Tabela 2.6 pode ser representada por uma caixa preta cujo conteúdo implementa um tipo de porta ou uma combinação das mesmas. Por exemplo, para a Tabela 2.6, algumas funções são mostradas na Tabela 2.7. Tabela 2.7: Exemplo de funções que implementam fi(A,B) Função f1 f2 f4 f6 f7 f8 f9 f10 f11 f13 f15 f16 Porta 0 AND A B XOR OR NOR XNOR B A NAND 1 A importância dessas portas lógicas está no fato de representarem os elementos básicos de construção da maioria dos circuitos digitais práticos. Quando se deseja construir um circuito lógico (ou digital) relativamente simples, usa-se uma placa de circuito impresso com soquetes sobre os quais insere-se um circuito integrado (CI) digital. A maioria dos CI's já são padronizados, e os mais comuns pertencem à série denominada 7400. Os mais simples utilizam a tecnologia de Integração em Pequena Escala (SSI - Small Scale Integration). Como um exemplo, veja o CI 7408, que contém quatro portas AND, cuja relação de suas entradas e saídas com os pinos de seu encapsulamento pode ser vista no diagrama da Figura 2.21. = 1 y = x 1 ⊕ x 2 x 1 x 2 y = x 1 ⊕ x 2 31 Elementos Básicos de Circuitos Digitais Figura 2.21: Circuito Integrado 74F08 Além de seu diagrama, são mostradas também as três formas de encapsulamento desse chip, sendo que duas delas exibem tipos diferentes de material e a outra é diferente na forma com a qual deve ser fixada na placa de circuito impresso. Como indica seu diagrama, esse CI possui 14 pinos (olhando-o de cima, a numeração de tais pinos é importante, pois o pino 1 sempre começa do mesmo lado; isso é suficiente para você efetuar as ligações elétricas necessárias para a montagem de seu circuito lógico), sendo que o pino 7 é o terra (Ground = 0 V; V indica volts) e o pino 14 é a tensão da fonte de energia (Vcc = 14 V). 2.7. ANÁLISE DE CIRCUITOS COMBINACIONAIS A análise de um circuito consiste em determinar a relação entre sua(s) saída(s) e suas entradas. De forma objetiva, analisar um circuito consiste em determinar o que ele faz. Ao analisarmos um circuito combinacional, procuramos obter a expressão lógica ou (e) a tabela verdade para sua saída ou saídas. Exemplo 1: Determinar a equação lógica da saída y e a tabela verdade para o circuito da Figura 2.22. Figura 2.22: Circuito lógico das portas "E", "OU", "NÃO". Solução: A saída da porta G2 será: . A saída da porta G3 será: . Como para a porta G4 ("OU") y = S1 + S2, substituindo S1 e S2, obtemos: . A tabela verdade para este circuito é mostrada na Tabela 2.8. 32 Elementos Básicos de Circuitos Digitais Tabela 2.8: Tabela verdade para o circuito da Figura 2.22. x3 x2 x1 S1 S2 y 0 0 0 0 0 0 0 0 1 1 0 1 0 1 0 0 0 0 0 1 1 1 0 1 1 0 0 0 0 0 1 0 1 0 0 0 1 1 0 0 1 1 1 1 1 0 1 1 Observando a tabela, verificamos que a saída y é igual à entrada x1, para x3 = 0 e igual à entrada x2, para x3 = 1. Em outras palavras, de acordo com o estado da entrada x3, podemos selecionar uma das duas entradas, x1 ou x2, e colocá-la na saída. Um circuito deste tipo encontra grande aplicação na prática e recebe o nome de "multiplexor" ou "data selector". Exemplo 2: Determinar a equação da saída y para o circuito da Figura 2.23. G2 G3 G4 x1 x2 S2 S3 y = ? G1 S1 Figura 2.23: Circuito das portas "NÃO-E". Solução: Examinando o circuito, temos: 1 1 2 1 2S x x x + x= = 2 1 1S x S= 3 2 1S x S= e para a saída: ( ) ( ) ( )y = S S = S +S = x S + x S x S + x S = x + x S x + x x + x = = x x + x x + x x + x x = x x + x x = x x 2 3 2 3 1 1 2 1 1 1 2 1 1 2 1 1 2 1 2 1 1 1 2 2 1 2 2 1 2 1 2 1 2 = = ⊕ . O circuito realiza a função "OU exclusivo" entre x1 e x2. Este circuito (Figura 2.23) é a maneira mais simples de implementar a função "EXOR" quando se dispõe somente de portas "NAND". Exemplo 3: Determinar a equação lógica da saída y e a tabela verdade para o circuito da Figura 2.24 (por conta). 33 Elementos Básicos de Circuitos Digitais S1 G1 G 2 G 3 G4 G 5 G6 y= ? S 2 S 3 S 4 x 1 x 2 x 3 x 4 Figura 2.24: Circuito lógico. 2.8. OBTENÇÃO DE EXPRESSÕES LÓGICAS A PARTIR DA TABELA VERDADE Obtenção de expressões lógicas é um problema de síntese, em oposição ao de análise estudado no item anterior. O problema de síntese consiste em determinar um circuito que realize uma função desejada. Consideramos só uma parte deste problema de síntese: obtenção da expressão lógica de uma função lógica que é dada pela sua tabela verdade. Qualquer expressão lógica sempre pode ser obtida pela sua tabela verdade na forma normal de disjunção (DNF) ou na forma normal de conjunção (CNF). Examinamos só uma forma DNF: expressar a função lógica como uma operação "OU" de diversos termos, cada um dos quais é uma expressão "E" das variáveis de entrada ( forma da soma de produtos). Vamos ilustrar este método através de exemplo. Exemplo 1: Dada a tabela verdade da Tabela 2.9. Determinar a função (expressão) lógica correspondente à saída y expressando-a na forma de uma soma de produtos. Tabela 2.9: Tabela verdade exemplo. x3 x2 x1 y linha 0 0 0 0 0 ∗linha 1 0 0 1 1 ∗linha 2 0 1 0 1 linha 3 0 1 1 0 ∗linha 4 1 0 0 1 linha 5 1 0 1 0 linha 6 1 1 0 0 ∗linha 7 1 1 1 1 Os passos de um método prático para obter uma função lógica expressa como soma de produtos ( DNF) são os seguintes: 1. Verificamos as combinações das entradas para as quais a função é igual a 1. A saída y será igual a 1 para as combinações das entradas indicadas nas linhas 1,2,4 e 7 da Tabela 2.9. 2. Expressamos cada uma das combinações acima como uma operação "E" das variáveis de entrada, onde aquelas iguais a "0" aparecem barradas (invertidas). 34 Elementos Básicos de Circuitos Digitais 1 3 2 1S x x x= corresponde à combinação na linha 1: x3 = 0, x2 = 0, x1 = 1 2 3 2 1S x x x= corresponde à combinação na linha 2: x3 = 0, x2 = 1, x1 = 0 3 3 2 1S x x x= corresponde à combinação na linha 4: x3 = 1, x2 = 0, x1 = 0 4 3 2 1S x x x= corresponde à combinação na linha 7: x3 = 1, x2 = 1, x1 = 1 3. Expressamos a função lógica como uma operação "OU" dos termos obtidos no passo 2. y S +S +S +S x x + x x x + x x x + x x x1 2 3 4 2 1 3 2 1 3 1 3 2 1= = x3 2 (2.4) A Equação 2.4 representa a função lógica na forma FDNF (forma normal de disjunção completa) pelas funções básicas "E", "OU", "NÃO", e o diagrama funcional do circuito combinacional, utilizando os símbolos correspondentes a estas funções é mostrado na Figura 2.25. Figura 2.25: Implementação direta da Equação 1.4. Freqüentemente, a tabela verdade pode ser dada pela uma série das combinações das variáveis de entrada para as quais a função lógica y é igual a 1. Em regra, esta série é dada pelos números decimais que são equivalentes aos números binários formados pelas combinações das variáveis de
Compartilhar