Your SlideShare is downloading. ×
Circuitos aritmeticos
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Circuitos aritmeticos

306

Published on

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
306
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
11
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. 1 Circuitos Aritméticos Combinacionais Tiago de Oliveira 2 Tópicos deste Módulo – Projeto de Circuitos Aritméticos – Somadores – Representação de Números Negativos – Soma/Subtração em Complemento de Dois – Multiplicação – Comparadores de Magnitude – Outros Blocos Aritméticos
  • 2. 3 Projeto de Circuitos Aritméticos – Uma forma intuitiva de implementação de operações aritméticas é através do uso de tabelas-verdade descrevendo tais operações. – Uma vez definida a tabela-verdade com as operações aritméticas, basta implementar as respectivas funções lógicas. – Esta estratégia não é eficiente quando os vetores de entrada (operandos A e B, por exemplo), têm um grande número de bits, pois sabe-se que o tamanho da tabela- verdade aumenta exponencialmente com o número de sinais de entrada 4 Tópicos deste Módulo – Projeto de Circuitos Aritméticos – Somadores – Representação de Números Negativos – Soma/Subtração em Complemento de Dois – Multiplicação – Comparadores de Magnitude – Outros Blocos Aritméticos
  • 3. 5 Somador – Half-Adder (Meio Somador) – Problema: 0 0 0 1 0 1 0 1 0 1 1 0 – Solução: Full-Adder (Somador Completo) 1011 0101 0110 0000 CoutSBA + 1 S = A Ө B Cout = A . B 6 Full-Adder (Somador Completo) 01011 11111 01101 10001 1 1 0 0 Y 0110 1000 1010 0000 SCarr y ZX
  • 4. 7 Full-Adder (Somador Completo) (continuação) 01011 11111 01101 10001 1 1 0 0 Y 0110 1000 1010 0000 SCarryZX X Y Z X Y Z X Y Z X Y Z + + + Carry = X Y Z + X Y Z + X Y Z + X Y Z 8 Full-Adder (Somador Completo) (continuação) 01011 11111 01101 10001 1 1 0 0 Y 0110 1000 1010 0000 SCarryZX X Y Z X Y Z + S = X Y Z + X Y Z + X Y Z + X Y Z X Y Z X Y Z + +
  • 5. 9 Full-Adder Utilizando Dois Half-Adder 10 Somador Paralelo de 4 bits – Também conhecido como Somador Ripple Carry
  • 6. 11 Somador com Vai-Um Antecipado – Também conhecido como Carry Look-Ahead Adder – Utilização de duas novas variáveis: • Pi = Ai Ө Bi (propagação do vai-um) • Gi = Ai Bi (geração do vai) – A soma e o carry podem ser computados da seguinte forma: • Si = Pi Ө Ci • Ci+1 = Gi + Pi Ci 12 Somador com Vai-Um Antecipado (continuação) – Expandindo a equação do carry, temos: • C1 é o carry inicial (entrada) • C2 = G1 + P1 Ci • C3 = G2 + P2 C2 = G2 + P2 (G1 + P1 C1) = G2 + P2 G1 + P2 P1 C1 • C4 = G3 + P3 C3 = G3 + P3 G2 + P3 P2 G1 + P3 P2 P1 C1
  • 7. 13 Gerador do Carry Look-Ahead Look-ahead carry generator 14 Somador Carry Look-Ahead de 4 bits
  • 8. 15 Comparação de Custo/Desempenho – Comparação de custo e desempenho entre: • Somador Carry Look-Ahead • Somador Ripple Carry – Levaremos em consideração duas métricas: • Caminho Crítico • Quantidade de portas lógicas gasta 16 Caminho Crítico FAFAFAFAFAFAFAFA 22222221 Caminho Crítico do Somador Ripple Carry: 15 portas lógicas Circuito Lógico do Somador Completo (FA)
  • 9. 17 Caminho Crítico (continuação) Caminho Crítico do Somador Carry Look-Ahead: 4 portas lógicas Gerador de Carry G8 P8A8 B8 C8 S8 2 1 1 Look-ahead carry generator 18 Quantidade de Portas Lógicas FAFAFAFA 5552 Somador Ripple Carry de 4 bits: Circuito Lógico do Somador Completo (FA) = 5 portas lógicas Total: 17 portas lógicas A última célula não produz o vai-um
  • 10. 19 Quantidade de Portas Lógicas Somador Carry Look-Ahead de 4 bits: Look-ahead carry generator Total: 21 portas lógicas 20 Comentários sobre Custo/Desempenho – Para operandos com uma grande quantidade de bits: • O caminho crítico do somador carry look-ahead é menor se comparado ao caminho crítico do somador ripple carry • No entanto, o somador carry look-ahead gasta uma quantidade bem mais significativa de portas lógicas do que o somador ripple carry. – Note que na geração do carry look-ahead existem portas lógicas com uma grande quantidade de entradas, apesar da implementação em dois níveis – O somador com carry look-ahead gasta muita porta lógica quando a quantidade de bits de entrada aumenta
  • 11. 21 Tópicos deste Módulo – Projeto de Circuitos Aritméticos – Somadores – Representação de Números Negativos – Soma/Subtração em Complemento de Dois – Multiplicação – Comparadores de Magnitude – Outros Blocos Aritméticos 22 Representação de Números Negativos – Problema: Subtrair 2 de 1 = - 1 • Como representar o número negativo em binário? – Solução: • Sinal-magnitude (signed-magnitude) • Sinal-complemento (signed-complement) – complemento de um – Complemento de dois
  • 12. 23 Números Negativos: Sinal-magnitude – O bit mais significativo indica o sinal • 0 => positivo • 1 => negativo – Os bits restantes indicam o valor absoluto – Exemplo: • (+12)10 = ( 0 0001100)2 • (-12)10 = ( 1 0001100)2 Bit de Sinal 24 Números Negativos: Complemento de Um – O número negativo é representado pelo seu complemento – Se o número for negativo: • Inverter cada bit do valor absoluto – Exemplo: • (+12)10 = (0 0 0 0 1 1 0 0)2 • (-12)10 = (1 1 1 1 0 0 1 1)2 – O bit mais significativo ainda indica se o número é positivo ou negativo: • 0 => positivo • 1 => negativo – No entanto, para determinarmos o valor absoluto que representa o número negativo temos que realizar um determinado procedimento: • Inverter todos os bits Inverter todos os bits
  • 13. 25 Números Negativos: Complemento de Dois – Para números negativos, realizamos o complemento de 1, invertendo os bits, e depois somamos o valor “1” – Da mesma forma que no complemento de um, o bit mais significativo também indica se o número é positivo ou negativo: • 0 => positivo • 1 => negativo – Exemplo: • (+12)10 = (0 0 0 0 1 1 0 0)2 • (-12)10 => (0 0 0 0 1 1 0 0)2 – “12” em binário 1 1 1 1 0 0 1 1 – invertemos todos os bits (complemento de um) 0 0 0 0 0 0 0 1 – somamos “+1” 1 1 1 1 0 0 1 1 0 0 0 0 0 0 0 1 1 1 1 1 0 1 0 0 + 11 + 26 Complemento de Dois (continuação) – Exemplo: • (+0)10 = (0 0 0)2 • (-0)10 => (0 0 0)2 – “0” em binário 1 1 1 – invertemos todos os bits (complemento de um) 0 0 1 – somamos “+1” 1 1 1 0 0 1 1 0 0 0 + 11 + Se houver vai-um (carry), este deverá ser desprezado
  • 14. 27 Representação de Alguns Números 1000-8 111110001001-7 111010011010-6 110110101011-5 110010111100-4 101111001101-3 101011011110-2 100111101111-1 10001111-0 000000000000+0 000100010001+1 001000100010+2 001100110011+3 010001000100+4 010101010101+5 011001100110+6 011101110111+7 SINAL-MAGNITUDECOMPLEMENTO DE UMCOMPLEMENTO DE DOISDECIMAL 28 Comentários sobre as Representações – Complemento de um e Sinal-Magnitude: • Problema: duas representações distintas para o zero (0) – Complemento de dois: • Representa um número negativo a mais do que os outros dois formatos
  • 15. 29 Tópicos deste Módulo – Projeto de Circuitos Aritméticos – Somadores – Representação de Números Negativos – Soma/Subtração em Complemento de Dois – Multiplicação – Comparadores de Magnitude – Outros Blocos Aritméticos 30 Soma/Subtração em Complemento de Dois – Complemento de dois pode ser utilizado para representar números negativos. – Sendo assim, como podemos realizar a soma e a subtração utilizando o complemento de dois? – Regra: X + Y • X pode ser positivo ou negativo em complemento de dois • Y pode ser positivo ou negativo em complemento de dois – Procedimento: • Devemos apenas realizar a soma de modo convencional • Na soma de números com sinal descartar o vai-um final • O bit de sinal deve fazer parte do número quando estivermos realizando a operação de soma
  • 16. 31 Soma em Complemento de Dois – Regra: X + Y – Exemplos: Devemos descartar o vai-um final 32 Subtração em Complemento de Dois – Regra: X − Y • X pode ser positivo ou negativo em complemento de dois • Y pode ser positivo ou negativo em complemento de dois – Procedimento: • Devemos, primeiramente, realizar o complemento de dois de Y • Depois, devemos somar o operando X com o complemento de dois de Y • Na subtração de números com sinal descartar o vai-um final • O bit de sinal deve fazer parte do número quando estivermos realizando a operação de subtração
  • 17. 33 Subtração em Complemento de Dois (continuação) – Exemplos: • Realizar a subtração dos números com sinal abaixo: Devemos descartar o vai-um final 34 Subtração em Complemento de Dois (continuação) – Curiosidade: • (± A) − (+ B) = (± A) + (− B) • (± A) − (− B) = (± A) + (+ B) – Por isso, a subtração pode ser realizada através do complemento de dois e da soma.
  • 18. 35 Circuito Somador/Subtrator de 4 bits – Utilizando o complemento de dois para representar números negativos, temos: – Se S = 0, temos na saída do circuito A + B – Se S = 1, temos na saída do circuito A − B 36 Overflow – Estouro de Representação – Em um circuito digital já projetado e implementado, a quantidade de bits utilizada para representar dados (números, por exemplo) é fixa. – Sendo assim, o que aconteceria se realizarmos a soma dos seguintes números binários sem sinal: 1 1 1 1 (15) 0 0 0 1 (1) 1 1 1 + 1 0 0 0 0 (16) Imagine um circuito com 4 bits para a representação de dados O número (16)10 não pode ser representado com apenas 4 casas – O vai-um final não pode ser utilizado para representar o resultado, pois temos somente 4 bits. – O vai-um final indica um overflow ou estouro de representação
  • 19. 37 Overflow – Complemento de Dois – E se estivermos trabalhando com números em complemento de dois? – Quando ocorre o overflow? • O fato de ocorrer vai-um final não implica necessariamente em overflow – Regra para determinar o overflow: • Observar o carry-in e o carry-out do bit mais significativo (bit de sinal) • Se os dois carries forem diferentes, ocorreu um overflow. 38 Overflow – Complemento de Dois (continuação) – Exemplo: 0 1 0 0 0 1 1 0 (+ 70) 0 1 0 1 0 0 0 0 (+ 80) 1 + 1 0 0 1 0 1 1 0 (+ 150) O carry_in = 1 e o carry_out = 0. Portanto, ocorreu um overflow Com 8 bits podemos representar apenas de +127 até -128
  • 20. 39 Overflow – Complemento de Dois (continuação) – Exemplo: 1 0 1 1 1 0 1 0 (- 70) 1 0 1 1 0 0 0 0 (- 80) 1 1 1 + 0 1 1 0 1 0 1 0 (- 150) O carry_in = 0 e o carry_out = 1. Portanto, ocorreu um overflow Com 8 bits podemos representar apenas de +127 até -128 40 Circuito para Detectar um Overflow – Uma vez identificado um overflow, o processador deverá gerar uma exceção e um programa especial deverá ser chamado para o tratamento do erro. – Em alguns casos, executa-se um procedimento para avisar o usuário da ocorrência do overflow. Detecta overflow de números com sinal em complemento de dois (signed) Detecta overflow de números sem sinal (unsigned)
  • 21. 41 Tópicos deste Módulo – Projeto de Circuitos Aritméticos – Somadores – Representação de Números Negativos – Soma/Subtração em Complemento de Dois – Multiplicação – Comparadores de Magnitude – Outros Blocos Aritméticos 42 Multiplicação – Multiplicação utilizando um circuito combinacional – Operandos de 2 bits cada Operando A Operando B Resultado Produto parcial
  • 22. 43 Multiplicação (continuação) – Operando A de 3 bits cada – Operando B de 4 bits B3 B2 B1 B0 A2 A1 A0 A0B3 A0B2 A0B1 A0B0 A1B3 A1B2 A1B1 A1B0 A2B3 A2B2 A2B1 A2B0 + + C6 C5 C4 C3 C2 C1 C0 x AND dos B`s com A0 AND dos B`s com A1 AND dos B`s com A2 Precisamos de um Somador de 4 bits Precisamos de um Somador de 4 bits Resultado 44 Circuito do Multiplicador
  • 23. 45 Comentários sobre a Multiplicação – Existem muitas maneiras diferentes de implementarmos o circuito de multiplicação. • Por exemplo, utilizando um circuito seqüencial – Para evitarmos o overflow na multiplicação, precisamos de uma saída contendo: • Quantidade de bits do operando A + Quantidade de bits do operando B 46 Tópicos deste Módulo – Projeto de Circuitos Aritméticos – Somadores – Representação de Números Negativos – Soma/Subtração em Complemento de Dois – Multiplicação – Comparadores de Magnitude – Outros Blocos Aritméticos
  • 24. 47 Comparador de Magnitude – Para números sem sinal: • O circuito deve indicar se dois números “A” e “B” são: – Iguais: A == B – Diferentes: » A > B » A < B – Considere os números sem sinal: – Para que A == B, todos os bits devem ser iguais entre A e B. • Ai == Bi, i = 0, 1, 2, 3. B = B3 B2 B1 B0 A = A3 A2 A1 A0 48 Comparador de Magnitude (continuação) – Para que A == B, todos os bits devem ser iguais entre A e B. • Ai == Bi, i = 0, 1, 2, 3. – Isso pode ser conseguido com a função coincidência • xi = Ai Bi + Ai Bi, i = 0, 1, 2, 3. – Portanto: • (A ==B) = x3 x2 x1 x0 Esta é a equação responsável pelo circuito (A == B)
  • 25. 49 Comparador de Magnitude (continuação) – Para que A > B ou A < B: • Temos que percorrer o vetor binário, começando com o bit mais significativo: – Se A3 = 1 e B3 = 0, temos que A > B – Se A3 = 0 e B3 = 1, temos que A < B – Se A3 = 0 e B3 = 0, devemos analisar os bits A2 e B2 – Se A3 = 1 e B3 = 1, devemos analisar os bits A2 e B2 – Assim, temos: • (A > B) = A3 B3 + x3 A2 B2 + x3 x2 A1 B1 + x3 x2 x1 A0 B0 • (A < B) = A3 B3 + x3 A2 B2 + x3 x2 A1 B1 + x3 x2 x1 A0 B0 Esta é a equação responsável pelo circuito (A < B) Esta é a equação responsável pelo circuito (A > B) 50 Circuito Comparador de Magnitude
  • 26. 51 Comparação Utilizando a Subtração – O complemento de dois e a operação de subtração podem ser utilizados para a comparação de números sem sinal (unsigned) – Procedimento: • Realizar a subtração em complemento de dois – M − N » M é um número binário sem sinal » N é um número binário sem sinal – Como M − N = M + (− N), então: » devemos realizar o complemento de dois de N » e depois somar M com o complemento obtido. – Se M ≥ N, então a soma acima produzirá um carry (vai-um) » Se o resultado for igual a zero, então M == N – Se M < N, então a soma não produzirá um carry. 52 Comparação Utilizando a Subtração (continuação) – Quando realizamos a regra mostrada anteriormente para a comparação, matematicamente temos: M + (2n − N) = M − N + 2n (representação em decimal) – Se M ≥ N, então a soma acima produzirá um carry (vai-um) • Esse carry é justamente o 2n da expressão acima. • Dessa forma, basta desprezarmos o vai-um para obtermos o valor M − N – Se M < N, então a soma não produzirá um carry • O resultado é um número negativo e devemos realizar o complemento de dois da resposta para obtermos a magnitude correta do número • Lembre-se de colocar um sinal de negativo (−) no resultado obtido Quantidade de dígitos do número N em binário Para N ≠ 0, esta expressão representa o complemento de dois de N Para N = 0, o complemento de dois é igual a zero
  • 27. 53 Comparação Utilizando a Subtração (continuação) – Sendo assim, temos: • Resposta = M − N + 2n • Se fizermos o complemento de dois da resposta, temos: 2n − [M − N + 2n] = 2n − 2n – M + N= N – M – Se M < N, então não haverá produção de carry. – Basta realizarmos o complemento de dois do resultado e colocarmos um sinal de negativo (–) na frente do número obtido • Com isso, representamos o número em sinal-magnitude Isso representa o valor absouto (magnitude) do resultado 54 Comparação Utilizando a Subtração (continuação) – Exemplo (X – Y): • X = 1010100 (Número sem sinal) • Y = 1000011 (Número sem sinal) Y = 1 0 0 0 0 1 1 0 1 1 1 1 0 0 (Inverter os bits) + 0 0 0 0 0 0 1 (Somar 1) 0 1 1 1 1 0 1 (complemento de dois de Y) • Como houve vai-um final, então A > B. – Descartamos o vai-um e assim obtemos a resposta correta: 0010001 1 0 1 0 1 0 0 (X) Vai-um final + 1 0 0 1 0 0 0 1 0 1 1 1 1 0 1 (complemento de dois de Y) • Realizar a Soma:
  • 28. 55 Comparação Utilizando a Subtração (continuação) – Exemplo (Y – X): • X = 1010100 (Número sem sinal) • Y = 1000011 (Número sem sinal) X = 1 0 1 0 1 0 0 0 1 0 1 0 1 1 (Inverter os bits) + 0 0 0 0 0 0 1 (Somar 1) 0 1 0 1 1 0 0 (complemento de dois de Y) • Como não houve vai-um final, então A < B. – Devemos realizar o complemento de dois do resultado e colocar o sinal de negativo na frente: − 0010001 1 0 0 0 0 1 1 (Y) Não houve Vai-um final + 1 1 0 1 1 1 1 0 1 0 1 1 0 0 (complemento de dois de X) • Realizar a Soma: 56 Tópicos deste Módulo – Projeto de Circuitos Aritméticos – Somadores – Representação de Números Negativos – Soma/Subtração em Complemento de Dois – Multiplicação – Comparadores de Magnitude – Outros Blocos Aritméticos
  • 29. 57 Outros Blocos Aritméticos – Divisores – Números em ponto flutuante • Uma palavra de N bits é dividida em duas partes: – o expoente e – a mantissa M – Representação: M * Be, onde B é a base 2 – Incremento e Decremento • Podemos reduzir o hardware quando trabalhamos com constantes – Multiplicação/Divisão por constantes • Podemos reduzir o hardware quando trabalhamos com constantes – Funções trigonométricas • Seno/Cosseno/Tangente • Implementação de funções de aproximação • Armazenamento de Tabelas contendo os resultados – Zero fill e extensão de sinal 58 Zero Fill 0 1 1 0 1 0 1 1 (saída de um circuito qualquer que possui 8 bits) 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 1 (entrada num circuito que possui 16 bits) Preenchimento com zeros
  • 30. 59 Extensão de Sinal 0 1 1 0 1 0 1 1 (107 em decimal) 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 1 (107 em decimal) Preenchimento com zeros – Número Positivo: 1 0 0 1 0 1 0 1 (−107 em decimal) 1 1 1 1 1 1 1 1 1 0 0 1 0 1 0 1 (−107 em decimal) Preenchimento com 1`s – Número Negativo (complemento de dois): 60 Comentários sobre os Circuitos Aritméticos – Blocos aritméticos também podem ser implementados utilizando circuitos seqüenciais – Existem muitas implementações diferentes para os blocos aritméticos apresentados: • Somadores: – Carry save adder – Carry select adder – Carry look-ahead adder – Ripple carry adder – Implementações híbridas • Multiplicadores: – Utilizando circuitos combinacionais – Utilizando circuitos seqüenciais
  • 31. 61 Sumário – O somador ripple carry costuma ser mais lento do que o somador com vai-um antecipado. – No entanto, o somador com vai-um antecipado costuma ter um custo maior. – Podemos representar números negativos utilizando complemento de dois: • A subtração pode ser realizada utilizando o circuito digital de soma – O circuito de multiplicação pode ser composto por um vários somadores paralelos – Comparadores de Magnitude: • Podemos utilizar um circuito digital específico • Podemos utilizar a subtração em complemento de dois e alguns sinais de carry – Existem diversos tipos de blocos aritméticos: • Divisores/ Funções Trigonométricas/ Operações com Constantes/ Zero Fill/ Extensão de Sinal/ Implementações com circuitos seqüenciais

×