Escolar Documentos
Profissional Documentos
Cultura Documentos
Tiago de Oliveira
1
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
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
3
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
4
Somador – Half-Adder (Meio Somador)
A B S Cout
0 0 0 0
0 1 1 0 S = AӨB
Cout = A . B
1 0 1 0
1 1 0 1
– Problema:
1
0 0 0 1
+
0 1 0 1
0 1 1 0
– Solução: Full-Adder (Somador Completo)
5
Full-Adder (Somador Completo)
X Y Z Carr S
y
0 0 0 0 0
0 0 1 0 1
0 1 0 0 1
0 1 1 1 0
1 0 0 0 1
1 0 1 1 0
1 1 0 1 0
1 1 1 1 1
6
Full-Adder (Somador Completo) (continuação)
X Y Z Carry S
0 0 0 0 0
0 0 1 0 1
0 1 0 0 1
0 1 1 1 0 XYZ
1 0 0 0 1 +
1 0 1 1 0 XYZ
Carry = X Y Z + X Y Z +
+ XYZ+XYZ
1 1 0 1 0 XYZ
+
1 1 1 1 1 XYZ
7
Full-Adder (Somador Completo) (continuação)
X Y Z Carry S
0 0 0 0 0
0 0 1 0 1 XYZ
+
0 1 0 0 1 XYZ
0 1 1 1 0
+ S=XYZ+XYZ +
1 0 0 0 1 XYZ XYZ+XYZ
1 0 1 1 0
+
1 1 0 1 0
1 1 1 1 1 XYZ
8
Full-Adder Utilizando Dois Half-Adder
9
Somador Paralelo de 4 bits
10
Somador com Vai-Um Antecipado
11
Somador com Vai-Um Antecipado (continuação)
• 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
12
Gerador do Carry Look-Ahead
Look-ahead carry
generator 13
Somador Carry Look-Ahead de 4 bits
14
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
15
Caminho Crítico
FA FA FA FA FA FA FA FA
1 2 2 2 2 2 2 2
16
Caminho Crítico (continuação)
1
B8
A8 P8
S8
C8
G8
2 1
Gerador de
Carry
Look-ahead carry
generator
FA FA FA FA
2 5 5 5
A última célula não
produz o vai-um
Total: 17 portas
lógicas
18
Quantidade de Portas Lógicas
Look-ahead carry
generator
20
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
21
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
22
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
Bit de Sinal
• (-12)10 = ( 1 0001100)2
23
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
Inverter todos os bits
• (-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
24
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
1 1
11110011
+
00000001
11110100
25
Complemento de Dois (continuação)
– Exemplo:
• (+0)10 = (0 0 0)2
1 1
111
+
001
1000
26
Representação de Alguns Números
DECIMAL COMPLEMENTO DE DOIS COMPLEMENTO DE UM SINAL-MAGNITUDE
+7 0111 0111 0111
+6 0110 0110 0110
+5 0101 0101 0101
+4 0100 0100 0100
+3 0011 0011 0011
+2 0010 0010 0010
+1 0001 0001 0001
+0 0000 0000 0000
-0 1111 1000
-1 1111 1110 1001
-2 1110 1101 1010
-3 1101 1100 1011
-4 1100 1011 1100
-5 1011 1010 1101
-6 1010 1001 1110
-7 1001 1000 1111
-8 1000 27
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
28
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
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
30
Soma em Complemento de Dois
– Regra: X + Y
– Exemplos:
Devemos descartar o
vai-um final
31
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
32
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
33
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.
34
Circuito Somador/Subtrator de 4 bits
– Utilizando o complemento de dois para representar
números negativos, temos:
37
Overflow – Complemento de Dois (continuação)
– Exemplo:
1 O carry_in = 1 e o carry_out = 0.
0 1 0 0 0 1 1 0 (+ 70) Portanto, ocorreu um overflow
+
0 1 0 1 0 0 0 0 (+ 80)
1 0 0 1 0 1 1 0 (+ 150)
Com 8 bits podemos representar
apenas de +127 até -128
38
Overflow – Complemento de Dois (continuação)
– Exemplo:
1 1 1 O carry_in = 0 e o carry_out = 1.
1 0 1 1 1 0 1 0 (- 70) Portanto, ocorreu um overflow
+
1 0 1 1 0 0 0 0 (- 80)
0 1 1 0 1 0 1 0 (- 150)
Com 8 bits podemos representar
apenas de +127 até -128
39
Circuito para Detectar um Overflow
40
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
41
Multiplicação
– Multiplicação utilizando um circuito combinacional
– Operandos de 2 bits cada
Operando B
Operando A
Produto
parcial
Resultado
42
Multiplicação (continuação)
– Operando A de 3 bits cada
– Operando B de 4 bits
B3 B2 B1 B0
x
A2 A1 A0
C6 C5 C4 C3 C2 C1 C0
Resultado
43
Circuito do Multiplicador
44
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
45
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
46
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:
A = A3 A2 A1 A0
B = B3 B2 B1 B0
47
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)
48
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
Esta é a equação responsável
pelo circuito (A > B)
– 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
49
Circuito Comparador de Magnitude
50
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.
51
Comparação Utilizando a Subtração (continuação)
– Quando realizamos a regra mostrada anteriormente para a comparação,
matematicamente temos:
Quantidade de dígitos
do número N em binário
M + (2n − N) = M − N + 2n (representação em decimal)
52
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
53
Comparação Utilizando a Subtração (continuação)
– Exemplo (X – Y):
• X = 1010100 (Número sem sinal)
• Y = 1000011 (Número sem sinal)
Y=1000011
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)
• Realizar a Soma:
1 0 1 0 1 0 0 (X)
+
0 1 1 1 1 0 1 (complemento de dois de Y)
10010001
Vai-um final
X=1010100
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)
• Realizar a Soma:
1 0 0 0 0 1 1 (Y)
+
0 1 0 1 1 0 0 (complemento de dois de X)
Não houve 1101111
Vai-um final
56
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
57
Zero Fill
58
Extensão de Sinal
– Número Positivo:
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)
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)
59
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
60
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
61