Sistemas Digitais e Microprocessados

Aritmética Digital - II

Professor: Gabriel Soares Baptista

Introdução

Hoje avançamos de soma e subtração para a multiplicação binária.

O circuito parece mais complexo à primeira vista, mas nasce da combinação de blocos que você já conhece:

  • portas lógicas
  • somadores
  • splitters, extensores e deslocadores
  • barramentos
Ideia central

Um multiplicador digital é uma rede de portas AND que gera produtos parciais e de somadores que combinam essas linhas.

Transição da Aula Anterior

Na aula anterior, cada coluna resolvia uma soma ou subtração local e repassava carry ou borrow.

Agora a ideia cresce em outra direção:

  • várias linhas de produtos parciais são geradas
  • essas linhas são deslocadas
  • depois são somadas para formar o resultado

Multiplicadores maiores são construídos de forma hierárquica, reutilizando blocos menores.

Revisão de Álgebra Booleana

Duas identidades fundamentais para a multiplicação digital:

$$ A \cdot 0 = 0 $$

Se uma entrada de uma AND vale $0$, a saída obrigatoriamente vale $0$.

$$ A \cdot 1 = A $$

Se uma entrada de uma AND vale $1$, a saída copia a outra entrada.

Interpretação em Hardware

Suponha que $A$ seja um bit do multiplicando e o outro sinal seja um bit do multiplicador:

  • se o bit do multiplicador for $0$, o produto parcial desaparece
  • se o bit do multiplicador for $1$, o produto parcial copia o bit de $A$

É por isso que a geração de produtos parciais é feita com portas AND.

Distributiva

$$ A(B + C) = AB + AC $$

Um mesmo sinal pode influenciar dois caminhos ao mesmo tempo.

O inverso também vale:

$$ AB + AC = A(B + C) $$

Isso aparece quando reorganizamos a lógica de controle ou fatoramos expressões.

Identidades de Combinação

$$ A + 0 = A $$

Somar logicamente com $0$ não altera a informação.

$$ A + A = A $$

Repetir o mesmo termo em uma OR não cria um novo comportamento.

Isso evita duplicação desnecessária de portas.

Multiplicação Binária por Produtos Parciais

Multiplicar no papel gera linhas parciais que depois são somadas.

Em binário, cada dígito só pode ser $0$ ou $1$, o que simplifica a leitura.

Considere $101_2 \times 11_2$:

$$ \begin{array}{r} \phantom{+}101 \\ \times\ 011 \\ \hline \phantom{+}101 \\ +1010 \\ \hline \phantom{+}1111 \end{array} $$

Leitura Linha por Linha

  • o bit menos significativo do multiplicador vale $1$, então copia $101$
  • o bit seguinte também vale $1$, copia $101$ deslocado uma posição
  • a soma gera $1111_2 = 15_{10}$

Confirmação em decimal:

$$ 5 \times 3 = 15 $$

A estrutura importa mais que o resultado: a multiplicação apareceu como soma de linhas simples.

Regra Geral

Se o multiplicando for $A$ e o multiplicador for $B$, cada bit $B_j$ gera uma linha parcial:

$$ p_{ij} = A_i \cdot B_j $$

  • se $B_j = 0$, então $p_{ij} = 0$
  • se $B_j = 1$, então $p_{ij} = A_i$

Cada bit do multiplicador funciona como um seletor que decide se uma cópia do multiplicando entra na soma final.

Produto Parcial Elementar

$$ p_{ij} = A_i \cdot B_j $$

$$ \begin{array}{c|c||c} A_i & B_j & p_{ij} \\ \hline 0 & 0 & 0 \\ 0 & 1 & 0 \\ 1 & 0 & 0 \\ 1 & 1 & 1 \end{array} $$

Essa é exatamente a tabela de uma AND. Nenhuma porta especial é necessária.

O que torna um multiplicador maior é a necessidade de somar muitos produtos nas colunas corretas.

Multiplicador 2 x 2 Bits

Sejam:

$$ A = A_1A_0 \qquad \text{e} \qquad B = B_1B_0 $$

O produto terá até 4 bits:

$$ P = P_3P_2P_1P_0 $$

Os quatro produtos parciais elementares são:

$$ \begin{aligned} p_{00} &= A_0B_0 \\ p_{10} &= A_1B_0 \\ p_{01} &= A_0B_1 \\ p_{11} &= A_1B_1 \end{aligned} $$

Célula Básica

2026-04-28T17:33:07.306519 image/svg+xml Matplotlib v3.10.8, https://matplotlib.org/ pij Ai Bj

Cada produto parcial é uma porta AND.

O circuito completo aparece quando colocamos esses produtos nas colunas corretas do resultado.

Distribuição nas Colunas

$$ \begin{array}{c|c|c|c|l} P_3 & P_2 & P_1 & P_0 & \text{linha parcial} \\ \hline 0 & 0 & A_1B_0 & A_0B_0 & \text{multiplicação por } B_0 \\ 0 & A_1B_1 & A_0B_1 & 0 & \text{multiplicação por } B_1 \text{, deslocada} \end{array} $$

  • $B_0$ (menos significativo): produtos caem nas colunas mais à direita
  • $B_1$: linha entra deslocada uma casa para a esquerda

Leitura por Coluna

  • coluna 0: apenas $A_0B_0$
  • coluna 1: os termos $A_1B_0$ e $A_0B_1$
  • coluna 2: o termo $A_1B_1$ e o carry vindo da coluna anterior
  • coluna 3: apenas o carry final

A coluna intermediária precisa somar dois produtos parciais — isso é um Meio Somador.

Derivação das Saídas

Coluna 0:

$$ P_0 = A_0B_0 $$

Coluna 1 (Meio Somador):

$$ \begin{aligned} P_1 &= (A_1B_0) \oplus (A_0B_1) \\ C_1 &= (A_1B_0)(A_0B_1) \end{aligned} $$

Derivação das Saídas (cont.)

Coluna 2 e 3 (soma de $A_1B_1$ com $C_1$):

$$ \begin{aligned} P_2 &= (A_1B_1) \oplus C_1 \\ P_3 &= (A_1B_1) \cdot C_1 \end{aligned} $$

A lógica repete o princípio da aula 12:

  • portas AND geram resultados locais
  • uma coluna soma os termos que caem nela
  • o carry alimenta a coluna seguinte

Leitura Algébrica Final

$$ \begin{aligned} P_0 &= A_0B_0 \\ P_1 &= (A_1B_0) \oplus (A_0B_1) \\ P_2 &= (A_1B_1) \oplus C_1 \\ P_3 &= (A_1B_1)C_1 \end{aligned} $$

com

$$ C_1 = (A_1B_0)(A_0B_1) $$

Montagem no Logisim

Multiplicador 2 por 2 bits montado no Logisim-evolution.

Quatro portas AND geram os produtos parciais, e duas pequenas somas combinam as colunas internas.

Leitura do Circuito por Etapas

  1. $A_0B_0$ sai diretamente como $P_0$
  2. $A_1B_0$ e $A_0B_1$ são somados por uma XOR, gerando $P_1$, e por uma AND, gerando $C_1$
  3. $A_1B_1$ é somado com $C_1$ para produzir $P_2$ e $P_3$

Como a Ideia Escala

O multiplicador $2 \times 2$ é a primeira célula de uma técnica que cresce por hierarquia.

Em vez de desenhar todas as portas AND de um multiplicador grande, montamos multiplicadores maiores a partir de:

  • multiplicadores menores
  • deslocamentos
  • somadores

Essa ideia é uma aplicação direta da distributiva.

Multiplicador 4 x 4 Usando Blocos 2 x 2

Operandos de 4 bits:

$$ A = A_3A_2A_1A_0 \qquad \text{e} \qquad B = B_3B_2B_1B_0 $$

Separamos cada um em dois blocos de 2 bits:

$$ A = A_H \cdot 2^2 + A_L \qquad \text{e} \qquad B = B_H \cdot 2^2 + B_L $$

onde:

$$ A_H = A_3A_2, \quad A_L = A_1A_0 \qquad B_H = B_3B_2, \quad B_L = B_1B_0 $$

Aplicando a Distributiva

$$ \begin{aligned} A \cdot B &= (A_H \cdot 2^2 + A_L)(B_H \cdot 2^2 + B_L) \\ &= A_LB_L + (A_HB_L \ll 2) + (A_LB_H \ll 2) + (A_HB_H \ll 4) \end{aligned} $$

O símbolo $\ll 2$ significa deslocar 2 posições para a esquerda (multiplicar por $2^2$).

Quatro Multiplicadores 2 x 2

$$ \begin{array}{c|c|c} \text{produto} & \text{deslocamento} & \text{papel no resultado} \\ \hline A_LB_L & \ll 0 & \text{parte menos significativa} \\ A_HB_L & \ll 2 & \text{contribuição cruzada} \\ A_LB_H & \ll 2 & \text{contribuição cruzada} \\ A_HB_H & \ll 4 & \text{parte mais significativa} \end{array} $$

Montagem no Logisim (4 x 4)

Etapas da construção:

  1. Splitters separam $A$ e $B$ em $A_H, A_L$ e $B_H, B_L$
  2. Quatro blocos multiplicador_2x2 geram $P_{LL}, P_{HL}, P_{LH}, P_{HH}$
  3. Bit Extender expande cada produto de 4 para 8 bits
  4. Shifters alinham os produtos parciais
  5. Três somadores de 8 bits combinam tudo

Alinhamento dos Produtos Parciais

$$ \begin{array}{c|c|c} \text{produto parcial} & \text{operação no Logisim} & \text{valor alinhado} \\ \hline P_{LL} & \text{sem shifter} & P_{LL} \\ P_{HL} & \text{shifter com constante } 2 & P_{HL} \ll 2 \\ P_{LH} & \text{shifter com constante } 2 & P_{LH} \ll 2 \\ P_{HH} & \text{shifter com constante } 4 & P_{HH} \ll 4 \end{array} $$

Soma Final

$$ \begin{aligned} S_1 &= P_{LL} + (P_{HL} \ll 2) \\ S_2 &= S_1 + (P_{LH} \ll 2) \\ P &= S_2 + (P_{HH} \ll 4) \end{aligned} $$

Resultado final em barramento de 8 bits:

$$ P = P_7P_6P_5P_4P_3P_2P_1P_0 $$

Montagem do 4 x 4 no Logisim

Multiplicador 4 por 4 bits montado no Logisim-evolution usando quatro multiplicadores 2 por 2.

Não criamos uma técnica nova para 4 bits. Apenas reutilizamos o multiplicador $2 \times 2$ quatro vezes.

Multiplicador 8 x 8 Usando Blocos 4 x 4

Operandos de 8 bits:

$$ A = A_7A_6A_5A_4A_3A_2A_1A_0 \qquad \text{e} \qquad B = B_7B_6B_5B_4B_3B_2B_1B_0 $$

Separamos em dois blocos de 4 bits:

$$ A = A_H \cdot 2^4 + A_L \qquad \text{e} \qquad B = B_H \cdot 2^4 + B_L $$

onde:

$$ A_H = A_7A_6A_5A_4, \quad A_L = A_3A_2A_1A_0 \qquad B_H = B_7B_6B_5B_4, \quad B_L = B_3B_2B_1B_0 $$

Aplicando a Distributiva (8 x 8)

$$ \begin{aligned} A \cdot B &= (A_H \cdot 2^4 + A_L)(B_H \cdot 2^4 + B_L) \\ &= A_LB_L + (A_HB_L \ll 4) + (A_LB_H \ll 4) + (A_HB_H \ll 8) \end{aligned} $$

Quatro Multiplicadores 4 x 4

$$ \begin{array}{c|c|c} \text{produto} & \text{deslocamento} & \text{papel no resultado} \\ \hline A_LB_L & \ll 0 & \text{parte menos significativa} \\ A_HB_L & \ll 4 & \text{contribuição cruzada} \\ A_LB_H & \ll 4 & \text{contribuição cruzada} \\ A_HB_H & \ll 8 & \text{parte mais significativa} \end{array} $$

Montagem no Logisim (8 x 8)

A montagem repete o mesmo modelo do $4 \times 4$:

  1. Splitters separam cada entrada de 8 bits em duas partes de 4 bits
  2. Quatro multiplicadores $4 \times 4$ geram $P_{LL}, P_{HL}, P_{LH}, P_{HH}$
  3. Bit Extender expande cada produto de 8 para 16 bits
  4. Shifters alinham os produtos parciais
  5. Três somadores de 16 bits combinam tudo

Alinhamento dos Produtos Parciais (8 x 8)

$$ \begin{array}{c|c|c} \text{produto parcial} & \text{operação no Logisim} & \text{valor alinhado} \\ \hline P_{LL} & \text{sem shifter} & P_{LL} \\ P_{HL} & \text{shifter com constante } 4 & P_{HL} \ll 4 \\ P_{LH} & \text{shifter com constante } 4 & P_{LH} \ll 4 \\ P_{HH} & \text{shifter com constante } 8 & P_{HH} \ll 8 \end{array} $$

Soma Final (8 x 8)

$$ \begin{aligned} S_1 &= P_{LL} + (P_{HL} \ll 4) \\ S_2 &= S_1 + (P_{LH} \ll 4) \\ P &= S_2 + (P_{HH} \ll 8) \end{aligned} $$

Resultado final em barramento de 16 bits:

$$ P = P_{15}P_{14}\ldots P_1P_0 $$

Montagem do 8 x 8 no Logisim

Multiplicador 8 por 8 bits montado no Logisim-evolution usando quatro multiplicadores 4 por 4.

A estrutura é a mesma do $4 \times 4$: splitters, quatro blocos menores, extensores, deslocadores e somadores.

Próximos passos

Nesta aula vimos como a multiplicação binária pode ser construída com produtos parciais, deslocamentos e somadores.

A divisão binária exige uma lógica de decisão: comparar valores, escolher entre manter ou subtrair, e encadear restos parciais.

Por isso, vamos deixar a divisão para depois de estudar blocos de seleção e comparação.

No próximo capítulo, Módulos MSI Combinacionais: Decodificadores, Encoders, Mux e Demux (Cap. 9), vamos estudar blocos funcionais prontos para uso em sistemas maiores.