Baixe o app para aproveitar ainda mais
Prévia do material em texto
CAPÍTULO 6 1 ARITMÉTICA DIGITAL: OPERAÇÕES E CIRCUITOS 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 6.1- ADIÇÃO E SUBTRAÇÃO BINÁRIAS 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 3 Carry out na soma binária 3 Exercício : Use 5 bits. Sistema de numeração binária Some 14 com 17 1410 = 011102 (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 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 6.2- REPRESENTAÇÃO DE NÚMEROS COM SINAL • Um registrador de seis bits pode armazenar números binários puros na faixa de 000000 a 111111 (de 0 a 6310). Isso representa a magnitude do número, ou seja, número sem 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 foi: Um 0 no bit de sinal indica um número positivo. Um 1 no bit de sinal indica um número negativo. 5 010001 111011 ↗ Bit de sinal ↖ Bit de sinal número positivo número negativo 6 Representação de números com sinal no Sistema sinal-magnitude Os números mostrados na Fig. 6.1 são constituídos de um bit de sinal e seis 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. A faixa de valores que pode ser representada no sistema sinal-magnitude é: - (2N - 1) a + (2N - 1) onde N é o número de bits na magnitude. Existe um total de 2N+1 diferentes valores, incluindo duas representações de zero. Fig. 6.1 magnitude correspondem ao equivalente binário direto magnitude correspondem ao equivalente binário direto Número negativo Número positivo 7 bits 7 Exemplo: Sistema sinal magnitude N = 2 bits na 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 que pode ser representada no sistema sinal-magnitude - (2N - 1) a + (2N - 1) Existe um total de 2N+1 diferentes valores, incluindo duas representação de zero. n = 3 bits → total de bits incluindo o bit de sinal (magnitude e bit de sinal). Onde N é o número de bits na magnitude. Se N = 2 - (22 – 1) = -3 a + (22 - 1) = + 3 Total de valores diferentes: 2N+1 → 22+1 = 8 valores, com duas representações de zero. 8 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. 9 Sistema de complemento de 2 : • Se o número for positivo, a magnitude é representada na forma binária direta e um bit de sinal 0 é colocado mais a esquerda, formando um total de n bits incluindo o bit de sinal. • Se o número for negativo, a magnitude é representada na forma de complemento de 2. 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) Representação de números com sinal 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) 10 Número positivo → 01111 → +15 (magnitude 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 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) ainda é 0, indicando um valor positivo. 01001 (valor do +9) 000 01001 Zeros acrescentados para obter 8 bits bit de sinal 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) ainda é 1, indicando um valor negativo. 00111 +7 11001 - 7 complemento de 2 do +7 111 11001 Uns (1 s) acrescentados para obter 8 bits bit de sinal 11 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. 0000 1001 +9 Faz o complemento de 2 (negação) 1111 0111 -9 Faz a negação novamente 0000 1001 +9 A operação de negação altera o número para seu equivalente oposto. 12 13 1000 = -23 = - 8 10000 = -24 = - 16 equivalente decimal -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. 14 Exemplo: Sistema de complemento de 20 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 N = 2 bits na magnitude 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 diferentes valores, incluindo uma representação de zero. Onde N é o número de bits na magnitude Se N = 2 - 22 = - 4 a + (22 - 1) = + 3 Total de valores diferentes: 2N+1 → 22+1 = 8 diferentes valores 15 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. 16 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 = 0000 1110 (sistema de comp. 2) 1710 = 1 0001 (sistema binário puro) +1710 = 0001 0001 (sistema de comp. 2) faz a negação para obter -1710 -1710 = 1110 1111 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 17 (d) Some - 48 com -80 Use 8 bits incluindo o bit de sinal. Sistema de complemento de 2 4810 = 11 0000 (sistema binário puro) + 4810 = 0011 0000 (sistema de comp. 2 ) faz a negação para obter -4810 - 4810 = 1101 0000 8010 = 101 0000 (sistema binário puro) + 8010 = 0101 0000 (sistema de comp. 2) faz a negação para obter -8010 - 8010 = 1011 0000 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. 18 )()( 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. 19 (e) Subtraia +16 de +17 → Use 8 bits incluindo o bit de sinal. Sistema de complemento de 2 1710 = 1 0001 (sistema binário puro) +1710 = 0001 0001 (sistema de comp. 2 ) 1610 = 1 0000 (sistema binário puro) +1610 = 0001 0000 (sistema de comp. 2) faz negação para obter -1610 -1610 = 1111 0000 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 20 (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 = 0000 1111 sistema de comp. 2 , faz negação para obter -1510 - 1510 = 1111 0001 3610 = 10 01002 sistema binário puro + 3610 = 0010 0100 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 21 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 pode ocorre sempre que 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). 22 (a) Some +37 com +95 Use 8 bits incluindo o bit de sinal. Sistema de complemento de 2 3710 = 10 0101 (sistema binário puro) + 3710 = 0010 0101 (sistema de comp. 2) 9510 = 101 1111 (sistema binário puro) + 9510 = 0101 1111 (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 23 (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 = 101 1111 (sistema binário puro) + 9510 = 0101 1111 (sistema de comp. 2) faz negação para obter -9510 - 9510 = 1010 0001 3710 = 10 0101 (sistema binário puro) + 3710 = 0010 0101 (sistema de comp. 2) faz negação para obter -3710 - 3710 = 1101 1011 -95 + (-37) subtraendo Para verificar se ocorrer overflow: compara os bits de sinal das parcelas com o do resultado 6.7- ADIÇÃO BCD • 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 iguala 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. 24 ** Soma 0110 (seis) para pular os seis códigos inválidos. 25 0 1100 1111 ← carry 0000 0111 0011 1000 + 0000 0110 0100 1000 -------------------------------- 0000 1101 1000 0000 ↓ Correção 1 1 0000 1101 1000 0000 + 0000 0110 0000 0110 ← Correção ----------------------------------- 0001 0011 1000 0110 Exemplo 0738 + 0648 -------- 1386 decimal → BCD Quatro bits equivale a 1 nibble carry = 1 entre nibble precisa de correção 26 1 1 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 ↓ 1 1 1 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 ↓ 1 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 27 6.8- ARITMÉTICA HEXADECIMAL 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 ------ E16 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 28 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ª 29 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. 30 Procedimento 1 5 1 F número hexa 0101 0001 1111 converta em binário 1010 1110 0000 complemento de 1 + 0000 0000 0001 some 1 ao LSB ----------------------- 1010 1110 0001 complemento de 2 A E 1 converta novamente em hexa Como obter o complemento de 2 de um número hexadecimal: Procedimento 2 Subtraia cada dígito hexa de F ; em seguida, some 1 ao LSD (dígito menos significativo). 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 3 F A - 2 B 7 Devemos determinar o complemento de 2 do subtraendo primeiro. Exemplo: 31 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 32 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 33 • 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. 34 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 6.9- Circuitos Aritméticos • 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. 35 Unidade lógica e aritmética Figura 6.4- Blocos funcionais de uma ULA Registrador A instruções dados dados 36 • 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úmerono 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. 37 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 38 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. 39 6.11- Projeto de um Somador Completo 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 40 . .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 X X INS A B C 41 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. 42 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 43 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 44 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: B A Cout S Meio Somador A B S Cout A B 6.14- Somador Paralelo em Circuito Integrado • 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 1 0 (S3S2S1S0), e o carry (C4) proveniente da posição MSB. 45 A3 A2 A1 A0 B3 B2 B1 B0 3 2 1 0 C0 C4 S3S2S1S0 → carry na posição LSB (Saída Soma) Carry proveniente da posição MSB ↘ 46 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 C0 C4 C4 A0 A1 A2 A3 A0 A1 A2 A3 B0 B1 B2 B3 B0 B1 B2 B3 3 2 1 0 3 2 1 0 CI de mais baixa ordem CI de mais alta ordem Faz C0 = 0 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. 47 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 C0 C4 48 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 para somar + 1 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 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 → [A] + [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, [A] – [B] → [A] + [ ] . O resultado aparecerá nas saídas ∑3 a ∑0 49 Adição e subtração combinadas B 50 Fig. 6.14 ADD = 1 → adição SUB = 0 SUB=1(C0=1)→ subtração ADD = 0 Somador/subtrador paralelo, usando o sistema de complemento de 2. C0 B0 0B 0B SUB ADD B0 SUB ADD Y0 = ADD B0 + SUB 0B [A] + [B] 1ª parcela registrador A 2ª parcela registrador B [A] + [-B] 3B B Y BSUBBADDY .. BSUBBADDY .. BSUBBADDY .. 2B3B B1 B2 B3 1B C4 C4 3 2 1 0 51 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 comoum 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 C0 C4 3210 52 Problema 6.32 Solução: X = 0 → ADD = X = 1 → SUB = X X X ↖ Y B B X X [A] + [B] [A] + [-B] 2ª parcela registrador B X = 0 → somar X = 1 → subtrair X (a) BXBXY .. BSUBBADDY .. .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 C0 C4 3210 53 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 54 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. 55 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 estados de 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 Ov (flag de overflow para a soma). Este flag vai para 1 sempre que o sinal do resultado da soma for contrário ao das parcelas de mesmo sinal. (ver solução exercício 6.23) Extra: 56 Figura 6.14 Solução - Problema 6.53 - pag. 303 Z (flag de zero)→ Z = 1 → resultado (3 2 1 0 ) = 0 Z = 0 → resultado (3 2 1 0 ) ≠ 0 Registrador de flags carry zero sinal overflow Overflow para a operação soma (ver solução exercício 6.23). sinal zero carry 0123 Z 0123 Z 57 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 58 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 completo Solução do Problema 6.20 Cin Cout S S2 Entradas Saídas S1 C1 C2 MS1 Cout MS2 MS2 MS2 MS2 59 Exemplo1: Como determinar o número total de posições de memória. Cálculo em decimal. 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. 60 Exemplo2: 04 - 01 ------- 03 + 1 (+ 1 para obter o total de posições) ----------- 04 → total de posições de memória Determinando o número de posições de memória entre 01 e 04: Cálculo em decimal. 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 61 03FF - 0200 --------- F F F F - 0 -2 -0 -0 subtrai cada dígito do número de F ---------------- F D F F → complemento de 1 + 0 0 0 1 → some 1 ao LSD para obter o complemento de 2 -------------------- F E 0 0 → complemento de 2 de 0200 1 0 3 F F + F E 0 0 ----------- 1 0 1 F F + 1 (+ 1 para obter o total de posições) ----------- 0 2 0 0 → total de posições de memória na faixa de 0200 a 03FF Solução: Primeira faixa 0200 a 03FF Problema 6.16 – O manual do usuário de microcomputador diz que ele tem uma faixa de memória utilizável situada nos seguintes endereços hexa: 0200 a 03FF e 4000 a 7FD0. Qual é o número total de posições de memória disponíveis? Dê a resposta final em decimal. Some o minuendo com o complemento de 2 do subtraendo para obter o total de posições de memória na faixa 0200 a 03FF . Determine o complemento de 2 do subtraendo em hexa. → 03 + 14 ------- 17 - 16 ------ 1 1 carry Despreza o último carry 3 + E ----- 1 1 62 7FD0 - 4000 --------- F F F F - 4 -0 -0 -0 subtrai cada dígito do número de F ---------------- B F F F → complemento de 1 + 0 0 0 1 → some 1 ao LSD para obter o complemento de 2 ----------------- C 0 0 0 → complemento de 2 de 4000 7 F D 0 + C 0 0 0 ----------- 1 3 F D 0 + 1 (+ 1 para obter o total de posições) ------------ 3 F D 1 → total deposições de memória na faixa de 4000 a 7FD0 1 3 F D 1 + 0 2 0 0 ---------- 4 1 D 1 = 4x163 + 1x162 + 13x161 + 1x160 = 1684910 Determine o complemento de 2 do subtraendo em hexa. Total de posições de memória nas duas faixas: 0200 a 03FF e 4000 a 7FD0 → Segunda faixa 4000 a 7FD0 Resposta final em decimal → 1684910 07 + 12 ------- 19 - 16 ------ 1 3 carry Despreza o último carry Some o minuendo com o complemento de 2 do subtraendo para obter o total de posições de memória na faixa 4000 a 7FD0 15 + 2 ------- 17 - 16 ------ 1 1 F + 2 ----- 7 + C ----- 1 1 63 C0 C0 C4 C4 A0 A1 A2 A3 A0 A1 A2 A3 B0 B1 B2 B3 B0 B1 B2 B3 3 2 1 0 3 2 1 0 Figura 6.11(b) Problema 6.26 - Mostre os níveis lógicos de cada entrada e saída do circuito da Figura 6.11 (b) quando EC16 for somado com 4316 . (Edição 11ª ) Solução: EC16 = 1110 11002 4316 = 0100 00112 Conversão hexadecimal para binário 1 1 1 0 1 1 0 0 0 1 0 0 0 0 1 1 0 0 1 0 1 1 1 1 1 0 0 1 1 1 0 1 1 0 0 + 0 1 0 0 0 0 1 1 _____________ 1 0 0 1 0 1 1 1 1 C8 7654 3210 0 64 C0 C0 C4 C4 A0 A1 A2 A3 A0 A1 A2 A3 B0 B1 B2 B3 B0 B1 B2 B3 3 2 1 0 3 2 1 0 Figura 6.11 Problema 6.26 - Mostre os níveis lógicos de cada entrada e saída do circuito da Figura 6.11 (b) quando 3548 for somado com 1038 . (Edição 10ª ) Solução: 3548 = 23610 = EC16 = 1110 11002 1038 = 6710 = 4316 = 0100 00112 1 1 1 0 1 1 0 0 0 1 0 0 0 0 1 1 0 0 1 0 1 1 1 1 1 0 0 1 1 1 0 1 1 0 0 + 0 1 0 0 0 0 1 1 ______________ 1 0 0 1 0 1 1 1 1 3548 = 3x8 2 + 5x81 + 4x80 = 23610 1038 = 1x8 2 + 0x81 + 3x80 = 6710 0 C8 7654 3210 65 Solução do Prob. 6.54: ↓ 0100 1001 → 0000 0000 0100 1001 = + 7310 1010 1110 → 1111 1111 1010 1110 = - 8210 ↑ Problema 6.54- 0100 1001 = + 7310 1010 1110 = - 82 Representados na forma de 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. 66 -------------------------------------------------------------------------------------------- Lista de Exercícios do Capítulo 6 - 10ª e 11ª Edição SEÇÃO EXEMPLOS PROBLEMAS Introdução 6.1 1 6.2 1, 2, 3, 4, 5 2, 3, 4, 5, 6, 7 6.3 8, 9 6.4 10 6.7 13 6.8 6, 7, 8, 9 14, 15, 16, 17 6.9 6.10 6.11 18, 19, 20 6.12 23 6.14 10 26 6.15 27, 28, 29, 30, 32 Aplicações em Micro 53, 54, 55 Esses são os exercícios mínimos recomendados do Capítulo 6
Compartilhar