Circuitos Aritméticos e números com sinal

Propaganda
Sistemas Digitais
Circuitos Aritméticos e
Representação de Números com
Sinal
João Paulo Baptista de Carvalho
(Prof. Auxiliar do IST)
[email protected]
Circuitos Aritméticos
  Circuitos
aritméticos são aqueles que realizam
operações aritméticas sobre números binários
  O
circuito aritmético mais simples é o que soma
números de apenas 1 bit. Basta partir da
conhecida tabela da soma para o obter:
XY
Soma
Transporte
X+Y
X=0
X=1
00
0
0
Y=0
0
1
01
1
0
Y=1
1
10
10
1
0
11
0
1
Uke2010
SD - Circuitos Aritméticos
2
Semi-somador (half-adder)
  Da
tabela retira-se o seguinte circuito, que é
conhecido como semi-somador:
AB
Soma
(S)
Transporte
(Cout)
00
0
0
01
1
0
10
1
0
11
0
1
  O
nome semi-somador vem do facto de este
circuito não permitir somar o transporte que
venha de bits de menor peso
Uke2010
SD - Circuitos Aritméticos
3
Somador Completo (full-adder)
 
A um somador de 1 bit que tenha em conta o transporte
de somas anteriores chama-se somador completo:
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
1 1
0
1
0
1
1
1
Semi-somadores
Uke2010
SD - Circuitos Aritméticos
4
Somadores
 
Assumindo blocos de somadores completos, é possível
construir somadores de n bits
 
Exemplo: Um somador de 4 bits
Símbolo de um
Somador Completo
de 4 bits:
Somador Completo
Σ
0
A0
B0
A1
B1
A2
B2
A3
P
B3
3
0
S
0
ci
co
Q
3
3
CI
S0
Uke2010
S1
S2
CO
S3
SD - Circuitos Aritméticos
5
Somas em BCD
 
As operações aritméticas em BCD podem ser úteis
quando se têm números em BCD sobre os quais se
pretende fazer pequenas operações que não justificam a
conversão para binário
 
A soma em BCD é feita dígito a dígito. Por exemplo, a
soma dos dígitos 3 e 5 dá o dígito 8:
0011
As duas parcelas são BCD,
0101
assim como o resultado
1000
 
Mas se a soma for superior a 9, então o resultado obtido
já não é BCD. Por exemplo, 7 + 5 = 12: 0111
 
Em certos casos há mesmo
transporte 8 + 9 = 17: 1000
1001
10001
Uke2010
SD - Circuitos Aritméticos
0101
1100
6
Somas em BCD (II)
 
Consegue-se corrigir o resultado obtido somando 6 (0110) ao
resultado nas seguintes situações:
1. 
O resultado é maior que 9
2. 
Existe um transporte na soma
Σ
0
P
B
3
0
3
3
Q
3
Transporte
anterior
CI
Σ
P
S
0
A
0
≥1
CO
0
0
Q
0
3
0
CI
A+B
S
0
3
CO
Transporte
para o
algarismo
seguinte
&
≥1
&
Uke2010
SD - Circuitos Aritméticos
7
Representação e Aritmética de
Números com Sinal
 
A representação de números inteiros tem de ter em conta que os
números podem ser positivos, negativos ou o número 0
 
Uma das alternativas é a representação por módulo e sinal, em que
o bit mais significativo indica o sinal:
 
Se esse bit for 1 o número é negativo;
 
Se for 0 é positivo
  Exemplo para números de 4 bits:
Representação
Uke2010
Número
representado
Representação
Número
representado
0000
0
1000
-0
0001
+1
1001
-1
0010
+2
1010
-2
0011
+3
1011
-3
0100
+4
1100
-4
0101
+5
1101
-5
0110
+6
1110
-6
0111
+7
1111
-7
SD - Circuitos Aritméticos
8
Representação por módulo e
Sinal
 
 
 
Inconvenientes:
 
Duas representações diferentes para o zero;
 
O módulo e o sinal são processados de forma diferente;
 
É necessário escolher a operação a realizar de acordo com a operação
desejada e o sinal dos números envolvidos.
Por exemplo:
 
Se pretendermos fazer a operação (+5) + (-3) o que é realmente
necessário fazer é a subtracção 5-3 ficando o sinal positivo;
 
Se o problema for realizar (-5) + (+3) então há que realizar também uma
subtracção mas do módulo do número negativo menos o do positivo
sendo o resultado um número negativo.
Obviamente tudo isto complica a realização das operações e
consequentemente dos circuitos que tenham que realizar essas
operações
Uke2010
SD - Circuitos Aritméticos
9
Representação em Complemento para 2
 
Chama-se complemento para 2n de um número x de n bits, ao
resultado da operação 2n – x
 
Por exemplo, o complemento para 2 de 0110 é:
10000
- 0110
1010
Se um número x tem n bits, então o seu complemento para 2 é
representado por n bits
O complemento para 2 do complemento para 2 de um número x, é x:
 
 
 
 
2n - (2n – x) = x
Formas alternativas de encontrar o complemento para 2 de um
número x:
 
Inverter todos os bits de x e somar 1 ao resultado
 
 
0110  1001 1001+1 = 1010
Manter todos os 0’s menos significativos e ainda o primeiro 1 de x, e
inverter os restantes bits mais significativos
 
Uke2010
0110  xx10  1010
SD - Circuitos Aritméticos
10
Representação de números com sinal em
Complemento para 2
 
 
 
Na representação de números com sinal em complemento para 2, o
bit mais significativo do número também indica o sinal:
 
Se for 1 o número é negativo;
 
Se for 0 é positivo.
Na representação de números com sinal em complemento para 2:
 
Um número positivo é representado pelo seu módulo;
 
Um número negativo é representado pelo complemento para 2 do seu
módulo.
Por exemplo:
 
O número +6 é representado em notação de complemento para 2 com 4 bits por
0110;
 
O número -6 é representado por 1010:
 
 
6 = 0110 ► complementando bit a bit, 1001 ►1001 +1 = 1010 = -6
Repare-se que ao calcular o complemento para 2 de um número
positivo de n bits se obtém automaticamente o bit de sinal a 1
Uke2010
SD - Circuitos Aritméticos
11
Representação de números com sinal em
Complemento para 2 (II)
 
Os 16 números possíveis de representar em complemento para 2
com 4 bits são os seguintes:
 
O intervalo representado é
[-2n-1, +2n-1-1]
 
 
Com 4 bits: [-8,+7]
A razão da assimetria entre
o total de número de
positivos e o de negativos
radica na necessidade de
representar o ‘0‘ e de não
ter duas representações
para o ‘0’
Uke2010
SD - Circuitos Aritméticos
12
Representação de números com sinal em
Complemento para 2 (III)
 
Com esta representação, pode operar-se sobre os números sem ter
que tomar em consideração qualquer particularidade relacionada
com o sinal de cada um deles. Exemplos:
Soma de 2 positivos
(+2) + (+5) = 7
0010
0101
0111
Soma de 2 negativos
Soma de 1 positivo com 1
negativo com resultado
negativo (+2) + (-5) = -3
0010
1011
1101
Uke2010
(-2) + (-5) = -7
1110
1011
11001
Soma de 1 positivo com 1
negativo com resultado
positivo (+5) + (-3) = +2
0101
1101
10010
Ignora-se o transporte porque sai
dos 4 bits utilizados na
representação
SD - Circuitos Aritméticos
13
Representação de números com sinal em
Complemento para 2 (IV)
 
Quando a operação envolve 2 números com o mesmo sinal, é
possível que o resultado não possa ser representado com o número
de bits disponível. A esta situação chama-se OVERFLOW
 
Por exemplo, 4 + 5 = 9, que não é representável com 4 bits em
notação de complemento para 2 com sinal:
01
0100
0101
1001
O resultado é incoerente
pois é um número
negativo: (-7)
 
O overflow nunca ocorre em operações entre números com sinal
contrário.
 
Prova-se que o overflow ocorre sempre que o transporte do último
bit é diferente do transporte do bit anterior
Uke2010
SD - Circuitos Aritméticos
14
Somador/Subtractor
 
 
Sabendo que:
1. 
Realizar a subtracção x-y é o mesmo que realizar a soma x + (-y);
2. 
Trocar o sinal a um número representado em notação de complemento
para 2 significa, na prática, fazer o complemento para 2 desse número,
então a subtracção pode ser feita a partir de um somador.
Então, usando as propriedades do XOR, e a possibilidade de usar o Cin de
um somador para somar 1 aos dois números, é possível realizar um circuito
somador/subtractor:
Controlo
Controlo
B
=1
Operação
0 
1 
A + B#
A-B
=1
=1
=1
0
Σ
P
3
0
A
Resultado
S
0
Q
3
3
Uke2010
SD - Circuitos Aritméticos
CI
CO
15
Comparadores
 
Tal como o nome indica, um comparador permite
comparar 2 números binários P e Q de n bits, indicando
se P>Q, P<Q ou P=Q.
 
Exemplo, um comparador de 4 bits:
 
O circuito pode ser ligado em cascata, para realizar
comparações entre números de n > 4 bits (é essa a utilidade
das entradas >,=,< presentes no lado esquerdo do circuito).
Uke2010
SD - Circuitos Aritméticos
16
Alguns CI’s
74LS283: Somador de 4 bits rápido. Usa internamente
um “carry look-ahead” – trata-se de um somador de
maior rapidez, conseguida à custa de um maior número
de portas lógicas.
 
 
74LS85: Comparador de 4 bits.
74LS283
Uke2010
74LS85
SD - Circuitos Aritméticos
17
Bibliografia
  Arroz,G.,
Monteiro,J.C., Oliveira,A.,
“Arquitectura de Computadores, dos Sistemas
Digitais aos Microprocessadores”, Secções
5.1, 5.2, 5.3, 2ª Edição, 2009
  Mano,M., Kime,C. – “Logic and Computer
Design Fundamentals”, Prentice Hall, secções
3.8 a 3.10 e 3.13
Uke2010
SD - Circuitos Aritméticos
18
Download