Sistemas Digitais
Subtrator e Somador BCD
Monitoria Sistemas Digitais – 2007.1 - {fbla, rgo, jpmk, thfp, fcm} at cin.ufpe.br
Subtrator de 4 bits
Soma de números binários:
S0
S1
S2
S3
A B
Cin
S
Cout
somador1bit
4
A B
Cin
S
Cout
somador1bit
3
A B
Cin
S
Cout
somador1bit
2
A B
Cin
S
Cout
somador1bit
1
VCCA[3..0] INPUT
VCCB[3..0] INPUT
GN
D
B0
B1
B2
B3
Overf lowOUTPUT
A0
A1
A2
A3
S[3..0]OUTPUT
VCCA INPUT
VCCCin INPUT
VCCB INPUT SOUTPUT
CoutOUTPUT
XOR
8
XOR
9
AND2
10
AND2
11
OR2
12
Monitoria Sistemas Digitais – 2007.1 - {fbla, rgo, jpmk, thfp, fcm} at cin.ufpe.br
Subtrator de 4 bits
Subtração de números binários:
São circuitos análogos, afinal são operações inversas. Então cria-se um subtrator de 1 bit e depois une-os para fazer um de 4 bits?
Monitoria Sistemas Digitais – 2007.1 - {fbla, rgo, jpmk, thfp, fcm} at cin.ufpe.br
Subtrator de 4-bits
É uma solução, mas isso pode ser otimizado! Pode-se construir circuitos para efetuar
qualquer operação apenas com somadores! A chave está na representação:
Números de 4 bits
em Complemento a 2
Monitoria Sistemas Digitais – 2007.1 - {fbla, rgo, jpmk, thfp, fcm} at cin.ufpe.br
Subtrator de 4 bits
Com números em complemento a 2, a subtração pode ser representada como uma soma:
A – B = A + (- B)
Dessa forma, podemos utilizar o mesmo circuito feito antes!
Subtração:– Transformar B em –B;– Somar A e –B
Monitoria Sistemas Digitais – 2007.1 - {fbla, rgo, jpmk, thfp, fcm} at cin.ufpe.br
Subtrator de 4 bits
Lembrando da aula, para encontrar o complemento a 2 de um número inverta os bits e adicione 1.
Ex:2 = 0010
Invertendo os bits: 1101
Adicionando 1: 1101 + 0001 = 1110 = -2
-7 = 1001
Invertendo os bits: 0110
Adicionando 1: 0110 + 0001 = 0111 = 7
Monitoria Sistemas Digitais – 2007.1 - {fbla, rgo, jpmk, thfp, fcm} at cin.ufpe.br
Subtrator de 4 bits - Construção
Voltando ao somador de 4-bits
Temos que inverter B e somar 1 para efetuar uma subtração, certo?
Podemos usar o carry in como seletor da operação!0 = soma1 = subtração (já entra como a soma de 1 da transformação de B em –B!)
S0
S1
S2
S3
A B
Cin
S
Cout
somador1bit
4
A B
Cin
S
Cout
somador1bit
3
A B
Cin
S
Cout
somador1bit
2
A B
Cin
S
Cout
somador1bit
1
VCCA[3..0] INPUT
VCCB[3..0] INPUT
GN
D
B0
B1
B2
B3
Overf lowOUTPUT
A0
A1
A2
A3
S[3..0]OUTPUT
Monitoria Sistemas Digitais – 2007.1 - {fbla, rgo, jpmk, thfp, fcm} at cin.ufpe.br
Subtrator de 4 bits - Construção
Agora é só inverter B!
Crie um multiplexador que escolhe entre B[i] e ~B[i] (i é o índice do bit)
B ~B Seletor Saída
0 1 0 0
0 1 1 1
1 0 0 1
1 0 1 0
B Seletor Saída
0 0 0
0 1 1
1 0 1
1 1 0
B XOR Seletor!!
Monitoria Sistemas Digitais – 2007.1 - {fbla, rgo, jpmk, thfp, fcm} at cin.ufpe.br
Subtrator de 4 bits - Construção
E como descobrir se a soma/subtração estourou o limite de representação (overflow)?
– Se A é negativo e B é positivo (ou vice-versa) nunca haverá overflow
– Se A e B são negativos e o resultado for positivo, então houve overflow
– Da mesma forma, se A e B são positivos e o resultado for negativo, houve overflow
Monitoria Sistemas Digitais – 2007.1 - {fbla, rgo, jpmk, thfp, fcm} at cin.ufpe.br
Subtrator de 4 bits - Construção
Analizando a soma de A[3] com B[3]...
A[3] B[3] Cin S Cout
0 0 0 0 0
0 1 0 1 0
1 0 0 1 0
1 1 0 0 1
0 0 1 1 0
0 1 1 0 1
1 0 1 0 1
1 1 1 1 1
A[3] B[3] Cin S Cout
0 0 0 0 0
0 1 0 1 0
1 0 0 1 0
1 1 0 0 1
0 0 1 1 0
0 1 1 0 1
1 0 1 0 1
1 1 1 1 1
Overflow = Cin XOR Cout
Monitoria Sistemas Digitais – 2007.1 - {fbla, rgo, jpmk, thfp, fcm} at cin.ufpe.br
Subtrator de 4 bits - Construção
Resumindo...– Efetuar a inversão de B...
Monitoria Sistemas Digitais – 2007.1 - {fbla, rgo, jpmk, thfp, fcm} at cin.ufpe.br
Subtrator de 4 bits - Construção
Resumindo...– Adicionar 1...
Monitoria Sistemas Digitais – 2007.1 - {fbla, rgo, jpmk, thfp, fcm} at cin.ufpe.br
Subtrator de 4 bits - Construção
Resumindo...– Calcular overflow
Monitoria Sistemas Digitais – 2007.1 - {fbla, rgo, jpmk, thfp, fcm} at cin.ufpe.br
Subtrator de 4 bits - Construção
Primeira atividade:– Desenvolver o subtrator de 4 bits– Utilize os conceitos apresentados aqui e o somador
de 4 bits desenvolvido na aula anterior As entradas são dois vetores de 4 bits (A e B) e o seletor
de 1bit As saídas são um vetor de 4 bits (Z) e o sinal de overflow
de 1 bit
Essa atividade deve ser apresentada até a próxima sexta 15/07 aos monitores
Monitoria Sistemas Digitais – 2007.1 - {fbla, rgo, jpmk, thfp, fcm} at cin.ufpe.br
Somador BCD
A representação dos números determinam a construção do sistema
Outra representação importante de números é BCD (Binary Coded Decimal)
Em BCD, representamos cada dígito do número separadamente– Ex:
Decimal Binário (8 bits) BCD
10 00001010 0001 0000
21 00010101 0010 0001
102 01100110 0001 0000 0010
Monitoria Sistemas Digitais – 2007.1 - {fbla, rgo, jpmk, thfp, fcm} at cin.ufpe.br
Somador BCD
São necessários 4 bits para representar cada dígito:
0: 0000 5: 01011: 0001 6: 01102: 0010 7: 01113: 0011 8: 10004: 0100 9: 1001
A menor unidade de soma agora recebe um vetor de 4 bits e não mais de 1
– Não faz sentido um somador BCD de 1 bit
O primeiro bit NÃO representa sinal!
Monitoria Sistemas Digitais – 2007.1 - {fbla, rgo, jpmk, thfp, fcm} at cin.ufpe.br
Somador BCD
A representação mudou, mas não precisamos definir um novo circuito para efetuar a soma em BCD.
– Utilize o somador de 4 bits para somar
– Crie um novo circuito para transformar de binário complemento a 2 em BCD!
Monitoria Sistemas Digitais – 2007.1 - {fbla, rgo, jpmk, thfp, fcm} at cin.ufpe.br
Somador BCD
Para resultados menores que 9, a saída é a mesma (veja a tabela de dígitos BCD)
Mas para resultados maiores que 9, é preciso separar os dígitos– 9 (01001) + 2 (00010) = 11 (01011) -> 0001 0001
Subtraindo 10 do resultado (para números menores que 20) obtemos o resultado esperado!
Monitoria Sistemas Digitais – 2007.1 - {fbla, rgo, jpmk, thfp, fcm} at cin.ufpe.br
Somador BCD
Como acabamos de ver, A – B = A + (-B) para a representação binária utilizada
Então R – 10 = R + (- 10) = R + (10110)
Como trabalha-se com 4 bits apenas, o mais significativo é ignorado.
R – 10 = R + 0110
Monitoria Sistemas Digitais – 2007.1 - {fbla, rgo, jpmk, thfp, fcm} at cin.ufpe.br
Somador BCD
E como saber quando somar -10?
Analizando os números maiores ou iguais a 10 percebe-se que eles pertencem a um dos formatos:– 11xx– 1x1x– 1xxxx (9 + 7 = 16 | 1001 + 0111 = 10000)
Monitoria Sistemas Digitais – 2007.1 - {fbla, rgo, jpmk, thfp, fcm} at cin.ufpe.br
Somador BCD - Construção
De forma incremental...– Efetuando a soma entre A e B
Monitoria Sistemas Digitais – 2007.1 - {fbla, rgo, jpmk, thfp, fcm} at cin.ufpe.br
Somador BCD - Construção
De forma incremental...– Efetuando a subtração do resultado com 10
Monitoria Sistemas Digitais – 2007.1 - {fbla, rgo, jpmk, thfp, fcm} at cin.ufpe.br
Somador BCD - Construção
De forma incremental...– Efetuando a escolha de quando somar
Monitoria Sistemas Digitais – 2007.1 - {fbla, rgo, jpmk, thfp, fcm} at cin.ufpe.br
Somador BCD - Construção
Segunda atividade:– Desenvolver o somador BCD– Utilize os conceitos apresentados aqui e o somador
de 4 bits desenvolvido na aula anterior As entradas são dois vetores de 4 bits (A e B)
representados em BCD, ou seja, de 0 a 9. As saídas são dois dígitos em BCD representando a
soma.– O dígito mais significativo é sempre 0 ou 1, logo é
representado em 1 bit apenas– O outro digito deve ter 4 bits
Essa atividade deve ser apresentada até a próxima sexta 15/07 aos monitores
Monitoria Sistemas Digitais – 2007.1 - {fbla, rgo, jpmk, thfp, fcm} at cin.ufpe.br
Subtrator de 4 bits e Somador BCD
Sugestões de leitura– Aula 7 (Operações aritméticas)
http://www.cin.ufpe.br/~if675/arquivos/aulas/2003-2/unidade1/aula07.pdf
Sistemas Digitais
Subtrator e Somador BCD