Sistemas Digitais Subtrator e Somador BCD Subtrator de 4 bits Soma de números binários: A INPUT VCC XOR B INPUT VCC 8 XOR Cin OUTPUT S 9 INPUT VCC AND2 10 OR2 OUTPUT AND2 A[3..0] VCC INPUT A B3 B Cout OUTPUT Overflow S somador1bit Cin S3 Cout 4 A3 B2 3 A2 B A S Cin S2 Cout somador1bit 2 A1 B A S Cin S1 Cout somador1bit B A S Cin S0 somador1bit 1 A0 B0 VCC INPUT B1 11 B[3..0] GND OUTPUT S[3..0] Monitoria Sistemas Digitais – 2007.1 - {fbla, rgo, jpmk, thfp, fcm} at cin.ufpe.br 12 Cout 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 A B3 B Cout OUTPUT Overflow S somador1bit Cin S3 Cout 4 A3 B2 3 B A S Cin S2 Cout somador1bit 2 B A S Cin S1 Cout somador1bit 1 B A S somador1bit S0 GND Cin A2 B1 VCC INPUT A0 B[3..0] VCC INPUT A1 A[3..0] B0 OUTPUT S[3..0] Temos que inverter B e somar 1 para efetuar uma subtração, certo? Podemos usar o carry in como seletor da operação! 0 = soma 1 = subtração (já entra como a soma de 1 da transformação de B em –B!) 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 0 0 ~B Seletor Seletor Saída Saída 1 0 0 0 0 0 1 Seletor!! 1 1 1 1 B 0XOR 1 1 0 0 0 1 1 1 1 0 1 1 0 0 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 Cout 0 0 0 0 00 0 1 0 1 00 Overflow = Cin XOR Cout 1 0 0 1 00 1 1 0 0 11 0 0 1 1 00 0 1 1 0 11 1 0 1 0 11 1 1 1 1 11 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 1: 0001 2: 0010 3: 0011 4: 0100 5: 0101 6: 0110 7: 0111 8: 1000 9: 1001 O primeiro bit NÃO representa sinal! 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 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 Monitoria Sistemas Digitais – 2007.1 - {fbla, rgo, jpmk, thfp, fcm} at cin.ufpe.br Sistemas Digitais Subtrator e Somador BCD