Construa a Tabela da Verdade de um Somador_Completo que some dois bits (X e Y) levando em conta uma terceira entrada que representa o Vem-Um (Z) de uma soma anterior e produza na saída o resultado da Soma (S), além do valor do Vai-Um ©. Escreva a Função Booleana da Soma (S) em função das entradas X, Y e Z usando o operador XOR, e comprove que a Função Booleana do Vai-Um © pode ser expressa por C=XY+XZ+YZ. Escreva uma descrição VHDL (entity e architecture) do Somador_Completo.

Passo 1

O enunciado pede para construir a Tabela da Verdade de um somador completo de três entradas (X, Y, Z), encontrar a função da Soma (S) usando XOR, provar que o Vai-Um © é dado por C = XY + XZ + YZ e, por fim, escrever a descrição VHDL (entity e architecture). Vamos usar conceitos de Álgebra Booleana e lógica digital para isso.

Passo 2

Devemos listar todas as combinações possíveis de X, Y e Z (0 ou 1) e calcular S e C. Para um somador completo, S é o bit menos significativo do resultado da soma X+Y+Z, e C é o bit mais significativo (o carry). A Tabela da Verdade fica:
X Y Z | S C
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

Passo 3

Da Tabela dá para ver que S é 1 quando há um número ímpar de entradas em 1. Isso é exatamente o que faz o XOR de três bits:
S = X oplus Y oplus Z

Passo 4

Para C observamos que ele vale 1 sempre que pelo menos dois dentre X,Y,Z forem 1. Em Álgebra Booleana isso se expressa como soma de produtos:
C = X Y + X Z + Y Z

Passo 5

Finalmente, a descrição VHDL usa portas lógicas padrão e o operador xor para implementar as expressões acima. Vamos definir a entity e a architecture:

Resposta

Soma: S = X oplus Y oplus Z
Vai-Um: C = X Y + X Z + Y Z
Descrição VHDL:
entity Somador_Completo is
port(
X, Y, Z : in std_logic;
S, C : out std_logic
);
end Somador_Completo;
architecture Behavioral of Somador_Completo is
begin
S <= X xor Y xor Z;
C <= (X and Y) or (X and Z) or (Y and Z);
end Behavioral;

Exercícios relacionados