Hoje, exploraremos como as operações matemáticas básicas são implementadas em nível de hardware, começando com os conceitos básicos e avançando para estruturas mais complexas. Os circuitos aritméticos, como meio somadores, somadores completos e somadores paralelos, são essenciais para o processamento de dados binários, facilitando desde operações simples até o gerenciamento de grandes volumes de informações.
Nesta aula, vamos começar a explorar os conceitos de circuitos aritméticos, focando inicialmente nos meio somadores. Eles são circuitos fundamentais que realizam operações com dados digitais, especificamente no sistema binário, ou seja, trabalham apenas com os dígitos 0 e 1. Esses circuitos são amplamente utilizados em componentes de computadores como processadores e unidades lógicas, onde desempenham operações básicas essenciais para o funcionamento de sistemas digitais.
O meio somador possui características particulares que precisamos entender. Ele recebe dois bits como entrada, cada um representado pelas variáveis A e B. A partir dessas entradas, o meio somador gera duas saídas: uma saída principal e uma saída de carry-out, que são essenciais para a continuidade das operações em circuitos mais complexos.
Vamos ilustrar com um exemplo prático como um meio somador opera. Considere as entradas A e B, onde ambos os valores são 1. O meio somador realiza a soma desses dois bits. Normalmente, 1 mais 1 resultaria em 2, mas, no sistema binário, isso é representado colocando-se 0 na saída principal e transferindo 1 para o carry-out. Este carry-out é então utilizado em somas subsequentes em circuitos mais complexos, como os somadores completos.
A saída principal do meio somador é determinada por uma operação de OU exclusiva (XOR) entre A e B. Essa operação é definida pela expressão A XOR B, o que equivale a 𝐴⋅𝐵‾+𝐴‾⋅𝐵. A saída de carry-out é produzida por uma operação E (AND) entre A e B, expressa como A⋅B. Essa saída indica se há um excesso que deve ser carregado para a próxima etapa da soma em circuitos mais elaborados. A figura 1 apresenta o circuito de um meio-somador:

Fonte: https://embarcados.com.br/tutorial-de-verilog-meio-somador-half-adder/ (Acesso em 21/05/2024).
A figura 2 abaixo apresenta a tabela verdade de uma operação de um meio-somador:

Fonte: Elaborado pelo autor, 2024.
Agora avançaremos para o somador completo, uma extensão do meio somador que examinamos anteriormente. O somador completo é uma evolução natural que adiciona funcionalidades para lidar com operações mais complexas, utilizando uma entrada adicional conhecida como Carry-in (CIN).
A principal diferença entre o meio somador e o somador completo reside justamente nesta terceira entrada, o Carry-in. Enquanto o meio somador lida com duas entradas e produz duas saídas, incluindo o Carry-out, o somador completo adiciona a entrada de CIN, permitindo que ele processe sequências mais extensas de adições binárias, onde os carry-outs de uma operação podem ser carry-ins de outra.
Vamos aprofundar isso com um exemplo prático. Imagine que você está somando dois bits, A e B, e também precisa adicionar um carry de uma soma anterior, que é o nosso CIN. O somador completo considera todas essas entradas para produzir um resultado de soma e um novo Carry-out. A saída principal do somador completo é determinada pela operação de A XOR B XOR CIN, o que nos permite calcular o resultado da soma considerando o carry anterior.
A saída de Carry-out, por sua vez, é um pouco mais complexa de calcular do que no meio somador. Ela é derivada da seguinte lógica: (A AND B) OR (A XOR B AND CIN). Isso significa que o carry é gerado quando A e B são ambos 1, ou quando o resultado de A XOR B é 1 e o CIN também é 1, refletindo as condições sob as quais um carry deve ser passado para a próxima etapa da soma em operações ainda maiores.
Por exemplo, se A e B são 1 e CIN também é 1, a saída principal será 1 (porque 1 XOR 1 XOR 1 = 1) e o Carry-out será 1 (porque 1 AND 1 = 1, e não há necessidade de considerar a segunda parte da OR nesse caso). Esse comportamento mostra como o somador completo pode lidar com sequências de operações de adição que o meio somador não pode. A figura 3 a seguir apresenta a tabela da verdade e o circuito de um somador completo:

Observe que onde o Carry-in é igual a 0, o funcionamento do circuito é equivalente ao meio somador:
