Baixe o app para aproveitar ainda mais
Prévia do material em texto
CAPÍTULO 6 1 ARITMÉTICA DIGITAL: OPERAÇÕES E CIRCUITOS Livro: Sistemas Digitais – princípios e aplicações – 11ª Ed. Ronald J. Tocci/ Neal S. Widmer/Gregory L. Moss 2 Adição binária São apenas quatro casos que podem ocorrer na soma de dois bits em qualquer posição. Esses são os casos: 0 + 0 = 0 1 + 0 = 1 1 + 1 = 10 = 0 + carry de 1 para próxima posição 1 + 1 + 1 = 11 = 1 + carry de 1 para próxima posição A adição é a operação aritmética básica utilizada pelos dispositivos digitais tanto para subtração como multiplicação e divisão Os números binários são somados como os decimais. Carry da posição anterior Números sem sinal 6.1- ADIÇÃO E SUBTRAÇÃO BINÁRIAS 3 Carry out na soma binária 3 Exercício : Use 5 bits. Sistema de numeração binária Some 15 com 17 1510 = 011112 (sistema binário puro) 1710 = 100012 (sistema binário puro) 1 1 1 1 15 → 0 1 1 1 1 17 → + 1 0 0 0 1 1 0 0 0 0 0 Cy (carry out carry para fora) Quando o carry out for 1 significa que o resultado não cabe na representação de 5 bits, portanto ocorreu um transbordamento. Quando é somado dois números no sistema de numeração binária (direta), o resultado pode ser incorreto, porque a resposta pode requerer mais bits, portanto ocorre um transbordamento e dessa forma o carry out (Cy) vai a 1. A subtração binária é efetuada exatamente como a subtração de números decimais. São quatro as possíveis situações ao se subtrair um bit de outro em qualquer posição de um número binário. 4 Subtração binária Números sem sinal 5 Faixa de valores → 010 a (2 n – 1)10 , em um total de 2 n valores diferentes n = número de bits No sistema binário puro, usando n bits, podemos representar números decimais na faixa de 010 a (2 n – 1)10 , em um total de 2 n valores diferentes. Números sem sinal não há bit de sinal, assim, os n bits são usados para representar a magnitude. Números sem sinal Ex.:- n = 3 bits, Faixa de valores → 010 a (2 3 – 1) = 710 ou 0002 a 1112 Existem 23 = 8 valores diferentes Faixa de valores no sistema binário puro Um registrador de seis bits pode armazenar números binários puros na faixa de 000000 a 111111 (de 010 a 6310). Isso representa a magnitude do número, ou seja, número sem sinal. 6 010001 111011 ↗ Bit de sinal ↖ Bit de sinal número positivo número negativo 6.2- REPRESENTAÇÃO DE NÚMEROS COM SINAL Para representar um número com o sinal (+ ou -) deve-se acrescentar mais a esquerda do número um outro bit denominado bit de sinal. A convenção adotada é: Um 0 no bit de sinal indica um número positivo. Um 1 no bit de sinal indica um número negativo. 7 Representação de números com sinal no Sistema sinal-magnitude Os números mostrados na Figura são constituídos de um bit de sinal e quatro bits de magnitude. Os bits de magnitude correspondem ao equivalente binário direto do valor decimal representado, tanto na representação positiva como na negativa. Essa representação é denominada sistema sinal-magnitude para números binários com sinal. magnitude correspondem ao equivalente binário direto = 510 magnitude correspondem ao equivalente binário direto = 510 Número negativo Número positivo 5 bits bit de sinal (-) 5 bits sendo que 1 para sinal e 4 para magnitude = +510 = -510 0 0 1 0 1 1 0 1 0 1 bit de sinal (+) 8 Faixa de valores no sistema sinal-magnitude - (2N - 1) a + (2N - 1) , onde N é o número de bits de magnitude. Existe um total de 2N+1 valores diferentes, incluindo duas representações de zero. Ex.:- N = 3 bits de magnitude Faixa de valores → - (23 - 1)= -7 a + (23 - 1) = +7 Existem 2N+1 23+1 = 24 = 16 valores diferentes, incluindo duas representações de zero. A faixa de valores que pode que ser representada no sistema sinal-magnitude com N bits de magnitude é: Números com sinal 9 Exemplo: Sistema sinal magnitude N = 2 bits da magnitude 0 0 0 + 0 0 0 1 + 1 0 1 0 + 2 0 1 1 + 3 1 0 0 - 0 1 0 1 - 1 1 1 0 - 2 1 1 1 - 3 Faixa de valores Onde N é o número de bits da magnitude. N = 2 - (22 – 1) = -3 a + (22 - 1) = + 3 Total de valores diferentes: 2N+1 → 22+1 = 8 valores diferentes, com duas representações de zero. - (2N - 1) a + (2N - 1) 3 bits sendo que 1 para sinal e 2 para magnitude Os bits de magnitude correspondem ao equivalente binário direto do valor decimal representado, tanto na representação positiva como na negativa. 10 Forma de complemento de 1 1 0 1 0 → número binário ↓↓↓↓ inverte cada bit para obter o complemento de 1 0 1 0 1 → complemento de 1 (complementa cada bit) de 1010 Forma de complemento de 2 1 0 1 0 → número binário ↓↓↓↓ inverte cada bit para obter o complemento de 1 0 1 0 1 → complemento de 1 de 1010 + 0 0 0 1 → soma 1 para obter o complemento de 2 0 1 1 0 → complemento de 2 de 1010 Sistema de Complemento de 2 O sistema mais usado para representar números binários com sinal é o sistema de complemento de 2. Antes de saber como ele é, temos que determinar o complemento de 1 e de 2 de um número binário. 11 Sistema de Complemento de 2 : Representação de números com sinal no Sistema de Complemento de 2 Os números são constituídos de um bit de sinal e bits de magnitude, formando um total de n bits incluindo o bit de sinal. Número positivo 5 bits = +5100 0 1 0 1 bit de sinal (+) Número negativo bit de sinal (-) 5 bits sendo que 1 para sinal e 4 para magnitude = -5101 1 0 1 1 magnitude do número binário está na forma de complemento de 2. a magnitude do número binário está na forma binária direta 12 Para determinar o número negativo deve-se primeiro obter a representação positiva do número e depois calcular o complemento de 2. Ex: 0111 = +710 (número com sinal ; 4 bits incluindo o bit de sinal) 1000 (inverte cada bit) + 0001 (soma 1) 1001 (representação de -710 no sistema de complemento de 2) Ex.: Represente o +710 no sistema de comp. de 2. Use 4 bits incluindo o bit de sinal 1112 = 710 (número sem sinal) 0111 = +710 (número com sinal representado no sistema de complemento de 2) 13 Número positivo 01111 +15 (corresponde ao equivalente binário direto) Número negativo 10001 -15 (representado na forma de complemento de 2) 01111 = +1510 (n=5 bits incluindo o bit de sinal) ↓↓↓↓↓ 10000 (inverte cada bit) + 00001 (soma 1) 10001 (representação de -1510 no sistema de complemento de 2) Exemplo: Representação de números com sinal usando complemento de 2 Determinando o negativo de 01111 (+15) no sistema de complemento de 2. Use 5 bits incluindo o bit de sinal número sem sinal 11112 1510 Extensão de sinal Os registradores são de 4, 8, 12, 16, 32 ou 64 bits. Se precisarmos armazenar um número positivo de cinco bits em um registrador de 8 bits, simplesmente acrescentamos zeros à frente. O MSB (bit de sinal bit mais a esquerda) ainda é 0, indicando um valor positivo. 01001 (valor do +9) 00001001 Zeros acrescentados para obter 8 bits bit de sinal bits de magnitude Se precisarmos armazenar um número negativo de cinco bits em um registrador de 8 bits, simplesmente acrescentamos 1s à frente. O MSB (bit de sinal bit mais a esquerda) ainda é 1, indicando um valor negativo. 00111 +7 11001 - 7 complemento de 2 do +7 11111001 Uns (1 s) acrescentados para obter 8 bits bit de sinal bits de magnitude 14 Negação Negação é a operação de conversão de um número positivo em seu equivalente negativo ou de um número negativo em seu equivalente positivo. Quando os números binários com sinal estão representados no sistema de complemento de 2, a negação é obtida pela operação do complemento de 2. 00001001 +9 Faz o complemento de 2 (negação) 11110111 -9 Faz a negação novamente 00001001 +9 A operação de negação altera o número para seu equivalente oposto. 15 16 1000 = -23 = - 8 10000 = -24 = - 16 equivalentedecimal -2N 100000 = -25 = - 32 5 zeros Caso especial na representação de complemento de 2 Sempre que um número com sinal tiver 1 no bit de sinal e todos os bits de magnitude forem 0, seu equivalente decimal será - 2N , em que N é o número de bits (zeros) na magnitude. 1000 - 810 ↓↓↓↓ 0111 (inverte cada bit) + 0001 (soma 1) 1000 volta para o - 810 *** Para determinar o equivalente decimal -2N 17 Faixa de valores no sistema de complemento de 2 - 2N a + (2N - 1) , onde N é o número de bits da magnitude. Existe um total de 2N+1 valores diferentes, incluindo o zero. Ex.:- N = 3 bits de magnitude Faixa de valores → - 23 = -8 a + (23 - 1) = +7 Existem 2N+1 23+1 = 16 valores diferentes, incluindo uma representação de zero. A faixa de valores que pode ser representada no sistema de complemento de 2 com N bits de magnitude é: Números com sinal n = 4 bits sendo que 1 para sinal e 3 para magnitude 18 Exemplo: Sistema de complemento de 2 0 0 0 + 0 0 0 1 + 1 0 1 0 + 2 0 1 1 + 3 1 0 0 - 4 1 0 1 - 3 1 1 0 - 2 1 1 1 - 1 corresponde ao equivalente binário direto corresponde a forma de complemento de 2 do seu equivalente positivo Use 3 bits incluindo o bit de sinal Caso especial - 2N Faixa de valores que pode ser representada no sistema de complemento de 2: - 2N a + (2N – 1) Existe um total de 2N+1 valores diferentes, incluindo uma representação de zero. Onde N é o número de bits da magnitude Se N = 2 - 22 = - 4 a + (22 - 1) = + 3 Total de valores diferentes: 2N+1 22+1 = 8 diferentes valores Num total de n = 3 bits sendo que 1 para sinal e 2 para magnitude 19 6.3- ADIÇÃO NO SISTEMA DE COMPLEMENTO DE 2 • Executa-se a soma binária normal nos bits de magnitude. • Os bits de sinal são somados com os bits de magnitude. • Se a soma dos bits de sinal resultar em um bit de carry 1, ele é desconsiderado. • Caso o resultado seja positivo, o número estará no formato de binário puro (direto). • Se o resultado for negativo, o número estará na forma de complemento de 2. 20 Problema 6.9 (b) Some +14 com -17 Use 8 bits incluindo o bit de sinal. Sistema de complemento de 2 1410 = 1110 (sistema binário puro) +1410 = 00001110 (sistema de comp. 2) 1710 = 10001 (sistema binário puro) +1710 = 00010001 (sistema de comp. 2) faz a negação para obter -1710 -1710 = 11101111 1 1 1 +14 → 0 0 0 0 1 1 1 0 -17 → + 1 1 1 0 1 1 1 1 0 1 1 1 1 1 1 0 1 → número negativo, portanto está forma de ↗ complemento de 2 despreza o último carry Quando o resultado for um número negativo, para determinar o seu equivalente decimal negativo deve fazer a operação de negação. 1 1 1 1 1 1 0 1 ↓↓↓↓↓↓↓↓ 0 0 0 0 0 0 1 0 + 0 0 0 0 0 0 0 1 Negação 0 0 0 0 0 0 1 1 → +3 , portanto 1 1 1 1 1 1 0 1 = -310 21 (d) Some - 48 com -80 Use 8 bits incluindo o bit de sinal. Sistema de complemento de 2 4810 = 110000 (sistema binário puro) + 4810 = 00110000 (sistema de comp. 2 ) faz a negação para obter -4810 - 4810 = 11010000 8010 = 1010000 (sistema binário puro) + 8010 = 01010000 (sistema de comp. 2) faz a negação para obter -8010 - 8010 = 10110000 1 1 1 - 48 → 1 1 0 1 0 0 0 0 - 80 → + 1 0 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 → -27 = -128 → caso especial despreza o último carry (carry devido a soma dos bits de sinal é desprezado) Problema 6.9 6.4- SUBTRAÇÃO NO SISTEMA DE COMPLEMENTO DE 2 A subtração utilizando o sistema de complemento de 2 envolve, na verdade, a operação de adição. • Realiza-se a operação de negação do subtraendo. • Adiciona-se o número obtido ao minuendo. • A resposta representará a diferença entre ambos. 22 )()( BAX B)(A)(X → Para obter (-B) acha o complemento de 2 de B, ou seja, faz a negação de B. A operação de negação altera o número para seu equivalente oposto. 23 (e) Subtraia +16 de +17 → Use 8 bits incluindo o bit de sinal. Sistema de complemento de 2 1710 = 10001 (sistema binário puro) +1710 = 00010001 (sistema de comp. 2 ) 1610 = 10000 (sistema binário puro) +1610 = 00010000 (sistema de comp. 2) faz negação para obter -1610 -1610 = 11110000 1 1 1 +17 → 0 0 0 1 0 0 0 1 -16 → + 1 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 1 → número positivo , portanto está na forma binária direta Quando o resultado for um número positivo basta fazer a conversão de binário para decimal → 0 0 0 0 0 0 0 1 = +1 Problema 6.9 +17 +17 - (+16) + (-16) despreza o último carry (carry devido a soma dos bits de sinal é desprezado) subtraendo 24 (h) Subtraia -36 de -15 Use 8 bits incluindo o bit de sinal. Sistema de complemento de 2 1510 = 11112 sistema binário puro + 1510 = 00001111 sistema de comp. 2 , faz negação para obter -1510 - 1510 = 11110001 3610 = 1001002 sistema binário puro + 3610 = 00100100 sistema de comp. 2 1 1 - 15 → 1 1 1 1 0 0 0 1 colocar o sinal + + 36 → + 0 0 1 0 0 1 0 0 1 0 0 0 1 0 1 0 1 → + 21 despreza o último carry (carry devido a soma dos bits de sinal é desprezado) Problema 6.9 -15 - (-36) → -15 + (+36) -15 -15 - (-36) + (+36) subtraendo 25 Overflow aritmético A condição de overflow pode ocorre apenas quando dois números positivos ou dois números negativos são somados. Quando somamos dois números de mesmo sinal pode produzir um resultado incorreto, porque a resposta pode requerer mais bits e, portanto, ocorre um overflow (transbordamento) na posição do bit de sinal. Método para detectar overflow no sistema de completo de 2 Comparar os bits de sinal das parcelas com o bit de sinal do resultado Um overflow ocorre quando os números que estão sendo somados são ambos positivos (bit de sinal 0) e o resultado é negativo (bit de sinal 1) ou quando os números somados são ambos negativos (bit de sinal 1) e o resultado é positivo ( bit de sinal 0). 26 (a) Some +37 com +95 Use 8 bits incluindo o bit de sinal. Sistema de complemento de 2 3710 = 100101 (sistema binário puro) + 3710 = 00100101 (sistema de comp. 2) 9510 = 1011111 (sistema binário puro) + 9510 = 01011111 (sistema de comp. 2) ↓ 1 1 1 1 1 1 1 +37→ 0 0 1 0 0 1 0 1 +95→ + 0 1 0 1 1 1 1 1 1 0 0 0 0 1 0 0 ocorreu overflow, porque a soma de dois números positivos gerou um número negativo Problema 6.10 +37 + (+95) +37 + (+95) Para verificar se ocorrer overflow: compara os bits de sinal das parcelas com o do resultado 0 27 (b) Subtraia +37 de -95 Use 8 bits incluindo o bit de sinal. Sistema de complemento de 2 1 1 -95 → 1 0 1 0 0 0 0 1 -37 → + 1 1 0 1 1 0 1 1 1 0 1 1 1 1 1 0 0 despreza ocorreu overflow, porque a soma de dois números o último carry negativos gerou um número positivo (carry devido a soma dos bits de sinal é desprezado) Problema 6.10 -95 - (+37) → -95 + (-37) 9510 = 1011111 (sistema binário puro) + 9510 = 01011111 (sistema de comp. 2) faz negação para obter -9510 - 9510 = 10100001 3710 = 100101 (sistema binário puro) + 3710 = 00100101 (sistema de comp. 2) faz negação para obter -3710 - 3710 = 11011011 -95 + (-37) subtraendo Para verificar se ocorrer overflow: compara os bits de sinal das parcelas com o do resultado -95 - (+37) • Usando a adição binária comum, some os códigos BCD para cada dígito. • Para aquelas posições em que a soma for menor ou igual a 9, nenhuma correção é necessária. A soma estará no formato BCD adequado. • Quando a soma de dois dígitos for maior que 9, o fator de correção 0110 deverá ser somado ao resultado para obter uma resposta BCD válida. 28 6.7- ADIÇÃO BCD ** Soma 0110 (seis) para pular os seis códigos inválidos do BCD. 29 B C D Decimal 0 0 0 0 0 0 0 0 1 1 0 01 0 2 0 0 1 1 3 0 1 0 0 4 0 1 0 1 5 0 1 1 0 6 0 1 1 1 7 1 0 0 0 8 1 0 0 1 9 Código BCD - Decimal Codificado em Binário São usados apenas os números binários de 4 bits, entre 0000 e 1001. O código BCD não usa os números 1010 , 1011, 1100, 1101, 1110 e 1111. 30 0000 1100 1111 000 carry 0000 0111 0011 1000 1ª parcela + 0000 0110 0100 1000 2ª parcela -------------------------------- 0000 1101 1000 0000 ↓ Correção 0001 1000 0000 000 carry 0000 1101 1000 0000 + 0000 0110 0000 0110 Correção ----------------------------------- 0001 0011 1000 0110 resultado Some os seguintes números decimais após convertê-los em código BCD. 0738 + 0648 -------- 1386 decimal → BCD **Quatro bits equivale a 1 nibble carry = 1 entre nibble precisa de correção Exemplo: resposta final 31 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 0 1 + 0 0 0 1 0 0 0 1 1 0 0 0 ------------------------------- 0 1 0 0 1 0 0 1 1 1 0 1 ↓ 0 0 0 0 0 0 1 1 1 0 0 carry 0 1 0 0 1 0 0 1 1 1 0 1 + 0 0 0 0 0 0 0 0 0 1 1 0 Correção --------------------------------- 0 1 0 0 1 0 1 0 0 0 1 1 ↓ 0 0 0 1 1 1 0 0 0 0 0 carry 0 1 0 0 1 0 1 0 0 0 1 1 + 0 0 0 0 0 1 1 0 0 0 0 0 Correção -------------------------------- 0 1 0 1 0 0 0 0 0 0 1 1 3 8 5 + 1 1 8 -------- 5 0 3 decimal → BCD Problema 6.13 (d) Nibble → grupo de 4 bits resposta final carry 1ª parcela 2ª parcela resultado resultado 32 Adição hexadecimal - pag. 266 • Somam-se os dígitos hexa em decimal. • Se a soma for menor ou igual 15, o resultado pode ser expresso como um dígito hexa. •Se a soma for maior que 15, subtraia 16 e transporte um carry 1 para a posição do próximo dígito. A 6 + 5 6 ------- F C 1 B 8 + 2 8 ------- E 0 8 + 8 ------- 16 - 16 ------ 1 0 ↖ carry 1 para a próxima posição → ↙ carry Exemplo 1 Exemplo 2 6 + 6 ---- 12 10 + 5 ---- 15 1 11 + 2 ----- 14 6.8- ARITMÉTICA HEXADECIMAL B + 2 ----- E E16 33 1 1 0 F F + 0 F F ---------- 1 F E F 15 + F + 15 ------- ----- 30 - 16 ------ 1 1 4 decimal 1 E hexa ↖ carry 1 para a próxima posição 1 1 F 15 + F + 15 ------- ----- 31 - 16 ------ 1 1 5 decimal 1 F hexa ↖ carry 1 para a próxima posição Exemplo 3 2ª 1ª 1ª2ª3ª 1 0 + 0 ------- 1 3ª 34 Subtração hexadecimal - pag. 267 Usa-se o mesmo método utilizado para os números binários, que é: • Determine o complemento de 2 do subtraendo em hexa. • Some o minuendo com o complemento de 2 do subtraendo; • Qualquer carry na posição MSD deve ser desprezado. 35 Procedimento 1 5 1 F número hexa 0101 0001 1111 converta em binário 1010 1110 0000 complemento de 1 de 0101 0001 1111 + 0000 0000 0001 some 1 ao LSB ----------------------- 1010 1110 0001 complemento de 2 A E 1 converta novamente em hexa. Complemento de 2 de 51F Como obter o complemento de 2 de um número hexadecimal: Procedimento 2 F F F - 5 - 1 - F subtrai cada dígito do número de F -------------------- A E 0 → complemento de 1 + 0 0 1 some 1 ao LSD ------------------ A E 1 → complemento de 2 de 51F Determine o complemento de 2 de 51F16 Subtraia cada dígito hexa de F ; em seguida, some 1 ao LSD (dígito menos significativo). 3 F A - 2 B 7 Devemos determinar o complemento de 2 do subtraendo primeiro. Exemplo: 36 Usando o procedimento 2 F F F - 2 - B - 7 subtrai cada dígito do número de F ---- ---- ---- D 4 8 → complemento de 1 + 0 0 1 some 1 ao LSD para obter o complemento de 2 ----- ---- ---- D 4 9 → complemento de 2 de 2B7 Subtraia 2B716 de 3FA16 , faça em hexadecimal Subtraia cada dígito hexa de F ; em seguida, some 1 ao LSD Hexa decimal A 10 B 11 C 12 D 13 E 14 F 15 37 A 10 + 9 + 9 ------- ----- 1 3 19 - 16 ------ 1 3 ↖ carry 1 1 F 15 + 4 + 4 ------- ----- 1 4 20 - 16 ------ 1 4 ↖ carry 1 1 3 3 + D + 13 ----- ----- 1 1 17 - 16 ----- 1 1 Como obter 1 4 3 hexa | | | | | | | | | | | | | | | | | | | | 3ª 2ª 1ª Depois some o minuendo ao complemento de 2 do subtraendo → 3ª 2ª 1ª 1 1 3 F A + D 4 9 --------------- 1 1 4 3 hexa Despreza o último carry para a próxima posição 3 F A - 2 B 7 38 • Para um dado valor negativo, o bit de sinal do número binário será 1, o que sempre tornará o MSD do número hexa maior ou igual a 8. • Quando o dado tem valor positivo, o bit de sinal será 0, sendo o MSD do número hexa menor ou igual a 7. Representação hexadecimal de números com sinal - pag. 268 É útil reconhecer se um valor hexa representa um número positivo ou negativo, quando o dado consiste de números com sinal. Problema 6.16 e 6.17- fazer - 27 (corrigir) Números com sinal Obs.:- Quando o MSD for maior ou igual a 8, o número representado será negativo, portanto ele estará representado no sistema de complemento de 2. Use a operação de negação para converter o número negativo em positivo para determinar o equivalente decimal. 39 Quando o MSD de um número hexadecimal com sinal for maior ou igual a 8, o número representado será negativo, portanto ele estará representado no sistema de complemento de 2. Use a operação de negação para converter o número negativo em positivo para determinar o equivalente decimal. Exemplo: Determine o equivalente decimal do número hexa com sinal E516 . Como o MSD é maior que 7 → número negativo. Portanto o número está na forma de complemento de 2. Solução: Usando o procedimento 2 Para determinar o equivalente decimal: operação de negação F F - E -5 subtrai cada dígito de F ----- ---- 1 A → complemento de 1 + 0 1 → some 1 ao LSD ---- ---- 1 B16 → complemento de 2 (positivo correspondente) 1 B16 = 1 x 16 1 + 11 x 160 = + 2710 Portanto E516 → - 2710 • Uma unidade lógica e aritmética (ULA) recebe os dados armazenados na memória e executa operações aritméticas e lógicas com instruções provenientes da unidade de controle. 40 Unidade lógica e aritmética Figura 6.4- Blocos funcionais de uma ULA Registrador A instruções dados dados 6.9- Circuitos Aritméticos 41 • A unidade de controle é instruída a adicionar um número que está na memória a um armazenado no registrador acumulador (registrador A) . • O número é transferido da memória para o registrador B. • O número no registrador B e o número do registrador acumulador são somados no circuito lógico e o resultado é transferido para o acumulador para depois ser transferido para outro destino. Registrador A instruções dados dados 6.10- Somador Binário Paralelo Computadores e calculadoras realizam operações de adição sobre dois números de cada vez, sendo que cada número binário pode ter vários dígitos binários. 42 Figura 6.5- Processo típico de uma adição binária Carry da posição anterior • Em cada passo desse processo de adição, realizamos a adição de três bits: o bit da 1ª parcela, o da 2ª parcela e o carry proveniente da posição anterior. • O resultado da adição produz dois bits: um da soma e um de carry a ser somado aos bits da próxima posição. • Assim se projetarmos um circuito lógico que possa duplicar esse processo, então o que teremos a fazer é usar o mesmo circuito para cada posição de bit. Esse circuito lógico é denominado somador completo (full adder, FA). resultado adição de três bits Soma Carry C0 43 Figura 6.6 - Diagrama em blocos de um circuito somador paralelo de cinco bits utilizando somadores completos (full adder, FA) . 1ª parcela 2ª parcela Carry posição anterior soma carry Projetaremos um circuito lógico que realiza a adição de três bits (bit da 1ª parcela, bit da 2ª parcela e o carry proveniente da posição anterior) e que produzirá como resultado dois bits: um bit soma e um bit carry a ser somado aos bits da próxima posição.Então o que teremos a fazer é usar o mesmo circuito para cada posição de bit. carry para a próxima posição 44 Construa uma tabela-verdade com: • Três entradas A, B e CIN • Duas saídas S e COUT CIN COUT ↓ ININININ ABCCBACBACBAS ININININOUT ABCCABCBABCAC B A Soma Tabela-verdade - Somador Completo B A Cout S FA CIN CIN = Carry in COUT = Carry out 6.11- Projeto de um Somador Completo Cin Carry da posição anterior Cout carry para a próxima posição 45 . .IN ININ INS A BC ABC AB C ABC )()( ININININ BCCBACBCBAS )()( ININ CBACBAS XAXAXAS INCBX ININ CBACBAS Fazendo→ ININININOUT ABCCABCBABCAC ININININININOUT ABCABCABCCABCBABCAC )()()( ININININOUT CCABBBACAABCC ABACBCC ININOUT Método algébrico para simplificar: ↓ ↓ repete repete INB C INB C XX INS A B C 46 O circuito completo com as entradas A, B e CIN e as saídas S e COUT representa o somador completo (FA). ABACBCC ININOUT INCBAS Carry out (Cy) é o valor que não cabe na representação da ordem de bits a ser somada e que é transportado para a soma dos bits de ordem imediatamente superior. 47 ININININOUT ABCCABCBABCAC )()( INININOUT CCABBABACC INCBAS Ou A B Cin S Cout INCBAS ABBACC INOUT )( ABBACC INOUT )( 1 BA AB CIN Outro projeto do somador completo (FA). A B ( )INC A B 48 Usando o mapa K para obter as equações booleanas simplificadas de S e COUT . A expressão para S não pode ser simplificada usando o mapa K, porque não tem 1s adjacentes. Simplificação com o mapa K A B Cin S 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 49 Meio somador Um FA (somador completo) opera com três entradas para gerar uma soma e carry como saídas. Em alguns casos, é necessário um circuito que some apenas dois bits de entrada, para gerar uma soma e um carry como saídas. Um exemplo seria a adição dos bits LSB de dois números binários nos quais não há carry de entrada. Um circuito lógico pode ser projetado para receber dois bits de entrada, A e B e gerar duas saídas uma soma (S) e um carry (COUT). Esse circuito é denominado meio somador (half adder, HA). A B S COUT 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 Problema 6.19 – Projeto um circuito lógico que funcione como um meio somador. BABABAS OUTC AB Solução: A B S Cout A B B A Cout S Meio Somador • O somador paralelo mais comum é um dispositivo de quatro bits, que contém quatro FAs interligados e um circuito de carry antecipado. • CIs 7483A, 74LS83A, 74LS283, e 74HC283 são somadores paralelos de quatro bits. • As entradas do CI são dois números de quatro bits, A3A2A1A0 e B3B2B1B0 , e o carry (C0) na posição LSB. As saídas são os bits do resultado da soma, 3 2 10 (S3S2S1S0), e o carry (C4) proveniente da posição MSB. 50 A3 A2 A1 A0 B3 B2 B1 B0 3 2 1 0 C0C4 S3S2S1S0 → carry na posição LSB (Saída Soma) Carry proveniente da posição MSB ↘ 6.14- Somador Paralelo em Circuito Integrado FA (somador completo) 51 Somadores paralelos podem ser conectados em cascata para implementar a adição de números binários maiores, nesse caso, dois números de 8 bits. Conexão em cascata de somadores paralelos C0 C0C4 C4 A0A1A2A3 A0A1A2A3 B0B1B2B3B0B1B2B3 3 2 1 03 2 1 0 CI de mais baixa ordem CI de mais alta ordem Faz C0 = 0 52 Adição – números com sinal (-3) reg. A + (+6) reg. B ------ +3 -3 = 1101 (comp. de 2) +6 = 0110 -3 = 1101 (comp. de 2) +6 = 0110 +3 = 0011 Faz C0 = 0 Despreza o último carry 1 1 1 0 1 + 0 1 1 0 1 0 0 1 1 Despreza o último carry B3 B2 B1 B0 A3 A2 A1 A0 3 2 1 0 C0C4 6.15- Sistema de Complemento de 2 Os números positivos e negativos podem ser somados em um circuito somador paralelo básico, quando os números negativos forem colocados na forma do complemento de 2. 53 Somador paralelo realiza a subtração (A - B) utilizando o sistema de complemento de 2. Os bits do subtraendo (B) são invertidos e faz C0 = 1 para gerar o complemento de 2. (+ 4) + (- 6 ) = -2 1 ← C0 ← soma 1 para obter o complemento de 2 de número 0110 (+6) 0100 ← [ A ] + 1001 ← [ ] ← complemento de 1 de 0110 que está armazenado no registrador B ---------- 1110 ← [ ∑ ] = [ A ] + [- B ] como o bit de sinal é 1, o resultado é negativo e está na forma de complemento de 2. B (+4) = 0100 (+6) = 0110 0 1 0 0 1 0 0 1 1 1 1 1 0 Faz C0 = 1 somar + 1 para obter o compl. de 2 de 0110 comp. de 1 de +6 → (+4) 0110 (+6) ↓↓↓↓ (inverte) 1001 (comp. 1) Subtração (+ 4) - (+ 6) = -2 A3 A2 A1 A0 3 2 1 0 C0 B3 B2 B1 B0 C4 1110 -2 Um circuito completo pode realizar tanto a adição quanto a subtração. Esse circuito somador/subtrator é controlado por dois sinais de controle, chamados ADD e SUB. ADD = 1 e SUB = 0 → o circuito realizará a adição dos números armazenados nos registradores A e B. O resultado aparecerá nas saídas ∑3 a ∑0 ADD = 0 e SUB = 1 → o circuito subtrairá o número que está em B daquele que está em A. O resultado aparecerá nas saídas ∑3 a ∑0 54 Adição e subtração combinadas 55 Fig. 6.14 SUB= 0 e ADD= 1 adição ADD= 0 e SUB= 1 (C0=1) subtração Somador/subtrador paralelo, usando o sistema de complemento de 2. C0 B00B 0B SUB B0 ADD Y0 = ADD B0 + SUB 0B 1ª parcela registrador A 2ª parcela registrador B 3B B3 Y BSUBBADDY .. BSUBBADDY .. BSUBBADDY .. 2B3B B1B2B3 1B C4 3 2 1 0 dois sinais de controle ADD e SUB 2B B2 B1 1B 56 Problema 6.32 (a) Modifique o circuito mostrado na Figura 6.14 de forma que uma única entrada de controle, X, seja usada no lugar de ADD e SUB. O circuito deve funcionar como um somador, quando X = 0, e como um subtrator, quando X = 1. (b) Em seguida, usando a álgebra booleana, simplifique cada conjunto de portas. Desenhe o circuito resultante. Figura 6.14 X = 0 → ADD X = 1 → SUB C0C4 3210 X = 0 → ADD = X = 1 → SUB = X X 57 Problema 6.32 Solução: X ↖ Y B B X X 2ª parcela registrador B X = 0 → somar X = 1 → subtrair X (a) BXBXY .. .X B .X B (b) XBY B B B B B B X B Y 0 0 0 0 1 1 1 0 1 1 1 0 B B B B A porta XOR funciona como um inversor controlado C0C4 3210 X = 0 → ADD = X = 1 → SUB = X X BSUBBADDY .. 58 Cont... Solução (b) Problema 6.32 X B Y 0 0 0 0 1 1 1 0 1 1 1 0 B B B B Quando X = 0 → soma Quando X =1→ subtração x 74LS283C4 Σ3 Σ2 Σ1 Σ0 C0 A0A1A2A3 B0B1B2B3 A3 A2 A1 A0 Σ1Σ2Σ3 Σ0 CLKCLKCLKCLK DDDD C4 Registrador B Pulso TRANSFER B3 B2 B1 B0 XBY A porta XOR funciona como um inversor controlado . Problema 6.23 - pag. 300 59 Utilizando-se registradores de quatro bits, incluindo o bit de sinal, projete um circuito lógico que analisa os bits de sinal e produza uma saída ALTA, sempre que a condição de overflow ocorrer. Projete este circuito para o somador. 333333 BABAOv A3 B3 Σ3 Ov 0 0 0 0 0 0 1 1 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 1 1 1 1 0 Solução do Probl. 6.23: Um método que pode ser usado para somadores que operam no sistema de complemento de 2 é o de comparar os bits de sinal das parcelas com o do resultado. A3 A2 A1 A0 + B3 B2 B1 B0________ Σ3 Σ2 Σ1 Σ0 OV =1 → quando dois números positivos (negativos) são somados e gera um resultado negativo (positivo). A condição de overflow pode ocorre apenas quando dois números positivos ou dois números negativos são somados. Método da comparação dos bits de sinal Não tem como simplificar. 60 Em uma ULA típica de microprocessador, os resultados de todas as operações aritméticas são normalmente transferidos para o registrador acumulador como na Figura 6.14, e também são usados para controlar os estadosde vários flip-flops especiais denominados flags. Estes flags são usados pelo microprocessador quando ele está tomando certas decisões durante a execução de certos tipos de instruções. Os três flags mais comuns são: C (flag de carry). Este flag é sempre igual ao carry do MSB da ULA. S (flag de sinal). Este flag é sempre igual ao bit de sinal do último resultado da ULA Z (flag de zero). Este flag vai para 1 sempre que o resultado da operação na ULA é zero. Caso contrário, o flag vai para 0. Utilizando o somador / subtrator da Figura 6.14 como se fosse uma ULA, projete o circuito lógico que implementa estes flags. O registrador de flags deverá ser carregado exatamente na transição positiva de TRANSFER. Desenhe o circuito. Problema 6.53 - pag. 303 61 C (flag de carry)= C4 Solução - Problema 6.53 - pag. 303 S (flag de sinal) = 3 0123 Z 3+2+1+0 = 0 Z = 1 3+2+1+0 = 1 Z = 0 ou ou Figura 6.14 Z (flag de zero)→ (3 2 1 0) resultado = 0 → Z = 1 (3 2 1 0) resultado ≠ 0 → Z = 0 62 Figura 6.14 Solução - cont... Prob. 6.53 - pag. 303 Registrador de flags C= carryZ= zeroS= sinal 0123 Z CZS CLKCLKCLK DDD Pulso TRANSFER Σ3 C4 Σ2 Σ1Σ0Σ3 S Z C 63 Problema 6.20 – Um somador completo pode ser implementado de diversas maneiras. A Figura 6.27 mostra como um somador completo pode ser construído de dois meios somadores (HA).Construa uma tabela–verdade para essa configuração e observe que esse circuito funciona como um somador completo (FA). Analise o circuito e complete a T.V. A B Cin S1 C1 S2 C2 S Cout Figura 6.27 64 A B Cin S1 C1 S2 C2 S Cout 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 1 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 0 0 1 0 1 0 1 0 1 0 1 1 0 0 1 0 1 1 1 0 0 1 0 0 0 1 1 1 1 0 1 1 0 1 1 A B S C 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 S1 Cout = C1 + C2 C1 C2 A B meio somador MS1 MS1 MS2 Cin A B Cin S 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 somador completoSolução do Problema 6.20 Cin Cout SS2 Entradas Saídas S1 C1 C2 MS1 MS2 MS2 MS2 MS2 Cout = C1 + C2 65 Exemplo1: 00 primeira posição 01 02 temos 6 posições de memória 03 04 05 sexta posição Determinando o número de total de posições de memória: 05 última posição - 00 primeira posição ------- 05 + 1 (+ 1 para obter o total de posições) ----------- 06 → total de posições de memória Subtração hexadecimal • Determine o complemento de 2 do subtraendo em hexa. • Some o minuendo com o complemento de 2 do subtraendo; • Qualquer carry na posição MSD deve ser desprezado. Como determinar o número total de posições de memória. Cálculo em decimal. 66 Exemplo2: 04 - 01 ------- 03 + 1 (+ 1 para obter o total de posições) ----------- 04 → total de posições de memória Total de posições de memória nas duas faixas: 00 01 02 03 04 05 06 07 08 09 4 posições de memória 09 - 07 ------- 02 + 1 (+ 1 para obter o total de posições) ----------- 03 → total de posições de memória 04 + 03 ----- 07 → total de posições de memória 3 posições de memória Endereço em decimal Fazer Problema 6.16 Determine o número total de posições de memória entre 01 e 04 e entre 07 e 09. Cálculo em decimal. 67 Solução do Prob. 6.54: 01001001 → 0000000001001001 = + 7310 10101110 → 1111111110101110 = - 8210 01001001 = + 7310 10101110 = - 82 Representados na forma de complemento de 2 Determine as representações de 16 bits para esses números decimais. Problema 6.55- Compare as representações de 8 e 16 bits para o +73 e o - 82 no Prob. 6.54. Existe uma regra geral que pode ser usada? Qual é? Solução: Se o bit de sinal for positivo (0)→ acrescentar mais 8 zeros (0s) na frente do número de 8 bits. Se o bit de sinal for negativo (1)→ acrescentar mais 8 uns (1s) na frente do número de 8 bits. Problema 6.54- Mover números binários a partir de registradores de 8 bits para os de 16 bits. 68-------------------------------------------------------------------------------------------- Lista de Exercícios do Capítulo 6 - 11ª Edição SEÇÃO EXEMPLOS PROBLEMAS 6.1 6.1 6.2 6.1, 6.2, 6.3,6. 4, 6.5 6.2, 6.3, 6.4, 6.5, 6.6, 6.7 Questões para revisão 6.3 6.8, 6.9 6.4 6.10 6.7 6.13 6.8 6.6, 6.7, 6.8, 6.9 6.14, 6.15, 6.16, 6.17 6.9 6.10 6.11 6.18, 6.19, 6.20 6.12 6.23 6.14 6.10 6.26 6.15 6.27, 6.28, 6.29, 6.30, 6.31, 6.32 Aplicações em Micro 6.53, 6.54, 6.55 Questões para revisão Livro: Sistemas Digitais – princípios e aplicações – 11ª Ed. Ronald J. Tocci/ Neal S. Widmer/Gregory L. Moss Esses são os exercícios mínimos recomendados do Capítulo 6
Compartilhar