Sistemas Digitais - Técnico Lisboa - Autenticação · PDF fileAs...
-
Upload
truongngoc -
Category
Documents
-
view
214 -
download
2
Transcript of Sistemas Digitais - Técnico Lisboa - Autenticação · PDF fileAs...
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]
Uke2010 SD - Circuitos Aritméticos 2
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 00 0 0 01 1 0 10 1 0 11 0 1
X+Y X=0 X=1 Y=0 0 1 Y=1 1 10
Uke2010 SD - Circuitos Aritméticos 3
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 4
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 0 0 1 1 1 1 1 1
Semi-somadores
Uke2010 SD - Circuitos Aritméticos 5
Somadores Assumindo blocos de somadores completos, é possível
construir somadores de n bits
Exemplo: Um somador de 4 bits
0
3 0
3 0
3 CI CO
Σ
P
Q S
Símbolo de um Somador Completo de 4 bits:
Somador Completo
A0 B0 A1 B1 A2 B2 A3 B3
ci co
S3 S2 S1 S0
Uke2010 SD - Circuitos Aritméticos 6
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:
As duas parcelas são BCD, assim como o resultado
Mas se a soma for superior a 9, então o resultado obtido já não é BCD. Por exemplo, 7 + 5 = 12:
1000 1001
10001
0111 0101 1100
Em certos casos há mesmo transporte 8 + 9 = 17:
0011 0101 1000
Uke2010 SD - Circuitos Aritméticos 7
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 3 0
3 0 3 CI CO
Σ P
Q S
0 3 0
3 0 3 CI CO
Σ P
Q S
& ≥1
&
≥1 0 0
A
B
Transporte anterior
Transporte para o algarismo seguinte
A + B
0
Uke2010 SD - Circuitos Aritméticos 8
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 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
Uke2010 SD - Circuitos Aritméticos 9
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 10
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 0110 xx10 1010
Uke2010 SD - Circuitos Aritméticos 11
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 12
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 13
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
Soma de 1 positivo com 1 negativo com resultado negativo
Soma de 1 positivo com 1 negativo com resultado positivo
(+2) + (+5) = 7 0010 0101 0111
Soma de 2 negativos
1110 1011 11001
(-2) + (-5) = -7
(+5) + (-3) = +2 0101 1101 10010
(+2) + (-5) = -3 0010 1011 1101
Ignora-se o transporte porque sai dos 4 bits utilizados na representação
Uke2010 SD - Circuitos Aritméticos 14
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:
O resultado é incoerente pois é um número negativo: (-7)
0100 0101 1001
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
01
Uke2010 SD - Circuitos Aritméticos 15
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:
0 3 0
3 0 3 CI CO
Σ P
Q S
=1
=1
=1
=1
A
B
Resultado
Controlo Controlo Operação
0 A + B#1 A - B
Uke2010 SD - Circuitos Aritméticos 16
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 17
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 74LS85
Uke2010 SD - Circuitos Aritméticos 18
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