Sistemas Digitais Circuitos Aritméticos e Representação de Números com Sinal João Paulo Baptista de Carvalho (Prof. Auxiliar do IST) joao.carvalho@inesc.pt
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 Y=0 0 1 Y=1 1 10 00 0 0 01 1 0 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 C in S C out 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 4
Somadores Assumindo blocos de somadores completos, é possível construir somadores de n bits Exemplo: Um somador de 4 bits Somador Completo Símbolo de um Somador Completo de 4 bits: 0 Σ A 0 B 0 A 1 B 1 A 2 B 2 A 3 B 3 P 3 0 0 S c i c o Q 3 3 CI CO S 0 S 1 S 2 S 3 Uke2010 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 0101 transporte 8 + 9 = 17: 1000 1100 1001 10001 Uke2010 SD - Circuitos Aritméticos 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 B A Transporte anterior 0 P Σ 3 0 0 0 S P Q 3 3 0 3 0 1 0 S CI CO Q 3 0 3 0 CI CO Σ A + B 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 Número representado Representação 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 Número representado Uke2010 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 2 n de um número x de n bits, ao resultado da operação 2 n 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: 2 n - (2 n 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 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 é [-2 n-1, +2 n-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 1 positivo com 1 negativo com resultado negativo (+2) + (-5) = -3 0010 1011 1101 Soma de 2 negativos (-2) + (-5) = -7 1110 1011 11001 Soma de 1 positivo com 1 negativo com resultado positivo Ignora-se o transporte porque sai dos 4 bits utilizados na representação (+5) + (-3) = +2 0101 1101 10010 Uke2010 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 C in de um somador para somar 1 aos dois números, é possível realizar um circuito somador/subtractor: Controlo B =1 Controlo Operação 0 A + B# 1 A - B =1 =1 =1 0 P Σ A 3 0 0 S 3 Q CO Uke2010 SD - Circuitos Aritméticos CI 15 3 Resultado
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 74LS85 Uke2010 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