Prática 5 - Somadores GFI 127 - Projetos em Eletrônica Digital Edgard Alexandre Ribeiro 1) Estude como somar dois números binários. A soma binária pode ser realizada seguindo a mesma lógica da soma decimal, levando em conta as somas unitárias em cada casa e as duplas sendo levadas à esquerda sempre que a soma é maior que o maior algarismo possível (1). Na base 2, existem 4 possibilidades para cada casa: 0 + 0 = 0; 1 + 0 = 1; 0 + 1 = 1 e 1 + 1 = 10, ou seja, 0 e uma dupla (um carry) para a casa à esquerda. Também, caso a soma seja 1 + 1 e já haja um carry, 1 + 1 + 1 = 1 + um carry para a próxima coluna à esquerda. No caso da subtração, 0 - 1 necessita de uma dupla emprestada da casa à esquerda. Portanto, a subtração realizada nesse caso é 10 - 1 = 1 (2 - 1 = 1). 2) Analise o processo de adição binária da figura. A figura basicamente explica de forma visual o que foi dito acima. 3) Analise o diagrama em blocos de uma unidade aritmética. Nesse diagrama é possível identificar uma ALU (unidade lógica e aritmética) em conjunto com uma unidade de memória e uma unidade de controle. A ALU é formada por um registrador, responsável por receber um dos valores binários que participa das operações aritméticas e/ou de lógica; um acumulador, que possui o outro e atual valor acumulado após as sequenciais operações realizadas; e os circuitos lógicos, capazes de realizar essas operações aritméticas e lógicas, como somas, subtrações, incrementos e verificações de igualdade e overflow. Ao funcionar em conjunto com as outras unidades citadas, a ALU pode ser controlada pela unidade de controle para realizar a operação desejada com os valores presentes no acumulador e no registrador e armazenar o resultado novamente no acumulador. Por sua vez, é possível observar que o valor do acumulador também pode ser salvo na unidade de memória ou alterado para outro valor lá salvo, tudo em acordo com os comandos da unidade de controle. 4) Analise o diagrama em blocos. Esse diagrama representa um circuito com uma sequência de 5 somadores completos, que são unidades capazes de somar 3 bits e retornar a soma separada em um bit para a própria casa binária e um carry para a próxima casa. Portanto, em conjunto esse circuito é um somador de 2 parcelas binárias de 5 algarismos. O primeiro somador recebe dois bits 𝐴0 e 𝐵0, sendo esses os primeiros bits de cada parcela, e o terceiro bit 𝐶0 sempre sendo 0. Então, o resultado representa o valor do primeiro bit da soma final e o carry é levado como uma das 3 entradas do próximo somador. Essa cadeia se segue até quinto somador para se obter os 5 bits da soma binária, sendo que o carry do último somador 𝐶5 acaba sendo um overflow. 5) Estudo o funcionamento de um somador completo. Como explicado anteriormente, um somador completo consegue somar de forma binária 3 bits e apresentar o resultado com 2 saídas, uma para a própria casa binária e a outra como o carry de saída para próxima casa binária. Geralmente, a terceira entrada C provê o carry de saída de um somador anterior, sendo assim um carry de entrada 𝐶𝐼𝑁. Então, analisando a tabela verdade, as entradas são todas as possibilidades de soma para 3 bits, ou seja, somas que resultam em 0, 1, 2 ou 3. Isso em binário é 00, 01, 10 ou 11, cada bit representado por uma das saídas. O carry assume o valor 1 quando a soma resulta em 10 ou 11, o que significa 0 + 1 + 1 = 10 em qualquer ordem e a opção única 1 + 1 + 1 = 11. Um somador completo pode ser formado a partir de um circuito com dois meio somadores e uma porta OR. Por sua vez, os meio somadores são unidades que somam dois bits e retornam as mesmas duas saídas de um somador completo, porém englobando somente os resultados 00, 01 e 10. Meio somadores podem ser formados a partir de uma porta XOR e uma porta AND. Figura 1 - Circuito meio somador à esquerda e um somador completo à direita. 6) Confira o diagrama de Karnaugh do somador. Analisando o diagrama de Karnaugh e a expressão algébrica para 𝑆 e 𝐶𝑂𝑈𝑇, é possível perceber o seguinte: Manipulando a expressão de S pode-se provar que o resultado é equivalente ao circuito mostrado na figura com os dois meio somadores, ou mais especificamente, utilizando duas portas XOR para a saída de soma. 𝐴 · 𝐵 · 𝐶 + 𝐴 · 𝐵 · 𝐶 + 𝐴 · 𝐵 · 𝐶 + 𝐴 · 𝐵 · 𝐶 = (𝐴 · 𝐵 + 𝐴 · 𝐵 ) · 𝐶 + (𝐴 · 𝐵 + 𝐴 · 𝐵) · 𝐶 (𝐴 · 𝐵 + 𝐴 · 𝐵 ) · 𝐶 + (𝐴 · 𝐵 + 𝐴 · 𝐵) · 𝐶 = (𝐴 ⊗ 𝐵) · 𝐶 + (𝐴 ⊗ 𝐵) · 𝐶 (𝐴 ⊗ 𝐵) ⊗ 𝐶 Provando que 𝐴 · 𝐵 + 𝐴 · 𝐵 = 𝐴 ⊗ 𝐵: 𝐴 ⊗ 𝐵 = (𝐴 · 𝐵 + 𝐴 · 𝐵) = 𝐴 · 𝐵 · 𝐴 · 𝐵 = (𝐴 + 𝐵) · (𝐴 + 𝐵) (𝐴 + 𝐵) · (𝐴 + 𝐵) = 𝐴 · 𝐴 + 𝐴 · 𝐵 + 𝐴 · 𝐵 + 𝐵 · 𝐵 = 𝐴 · 𝐵 + 𝐴 · 𝐵 Já para o 𝐶𝑂𝑈𝑇, pode-se provar que o carry possui expressão equivalente ao circuito da figura se for igual a soma de uma porta AND de A e B e uma AND de C com um XOR de A e B. 𝐵 · 𝐶 + 𝐴 · 𝐶 + 𝐴 · 𝐵 = (𝐵 + 𝐴 ) · 𝐶 + 𝐴 · 𝐵 (𝐴 ⊗ 𝐵) · 𝐶 + 𝐴 · 𝐵 = (𝐴 · 𝐵 + 𝐴 · 𝐵) · 𝐶 + 𝐴 · 𝐵 = 𝐴 · 𝐵 · 𝐶 + 𝐴 · 𝐵 · 𝐶 + 𝐴 · 𝐵 𝐴 · 𝐵 · 𝐶 + 𝐴 · 𝐵 · 𝐶 + 𝐴 · 𝐵 · (1) = 𝐴 · 𝐵 · 𝐶 + 𝐴 · 𝐵 · 𝐶 + 𝐴 · 𝐵 · (1 + 2𝐶) 𝐴 · 𝐵 · 𝐶 + 𝐴 · 𝐵 · 𝐶 + 𝐴 · 𝐵 + 2 · 𝐴 · 𝐵 · 𝐶 = [𝐴 · 𝐵 + 𝐴 · 𝐵 + 2 · 𝐴 · 𝐵] · 𝐶 + 𝐴 · 𝐵 [(𝐴 + 𝐴) · 𝐵 + (𝐵 + 𝐵) · 𝐴] · 𝐶 + 𝐴 · 𝐵 = [(1) · 𝐵 + (1) · 𝐴 ] · 𝐶 + 𝐴 · 𝐵 (𝐵 + 𝐴 ) · 𝐶 + 𝐴 · 𝐵