Desenhe de forma organizada o que se pede:
Um somador de dois números de 3 bits cada (A0A1A2 + B0B1B2) utilizando somente portas lógicas ( \mathrm{FA}+\mathrm{FA}+\mathrm{HA} )

Passo 1

O que o enunciado pede e o que foi dado:
  • Pedem para desenhar, de forma organizada, um somador de dois números de 3 bits cada: A_2A_1A_0 + B_2B_1B_0.
  • Devemos usar somente portas lógicas agrupadas em módulos: dois somadores completos (FA) e um semi-somador (HA). Especificamente usar a combinação \mathrm{FA} + \mathrm{FA} + \mathrm{HA}.
  • O circuito terá como saídas os bits de soma S_2S_1S_0 e o carry de saída final C_3.
  • Não há menção a um carry-in externo, então assumimos C_0 = 0.

Passo 2

Plano de montagem (organizado, passo a passo):
  • Para o bit menos significativo (LSB) usar um semi-somador (HA) porque não há carry-in externo.
  • Para os dois bits mais significativos usar somadores completos (FA) em ripple-carry: o carry gerado por um estágio é entrada de carry do próximo.
  • Nomeação das linhas de carry:
    • C_0 = carry de entrada externo (assumido 0).
    • C_1 = carry gerado pelo HA no bit 0.
    • C_2 = carry gerado pelo FA no bit 1.
    • C_3 = carry de saída final gerado pelo FA no bit 2.
  • Resultado desejado: S_0,S_1,S_2 e C_3.

Passo 3

Relembrando o que é um HA (semi-somador) e como implementá-lo com portas lógicas:
  • Definições e fórmulas:
    • A função soma do HA é a operação XOR: \text{Sum} = A \oplus B.
    • A função carry do HA é a operação AND: \text{Carry} = A \cdot B.
  • Aplicado ao bit 0:
    • S_0 = A_0 \oplus B_0.
    • C_1 = A_0 \cdot B_0.
  • Significado prático: o HA usa 1 porta XOR (para S_0) e 1 porta AND (para C_1). XOR dá 1 quando A e B são diferentes; AND dá 1 só quando ambos são 1.

Passo 4

Relembrando o que é um FA (somador completo) e implementação prática com portas lógicas:
  • Fórmulas padrão (duas formas úteis):
    • Soma: S = A \oplus B \oplus C_{in}.
      • Em implementações usa-se cascata: X = A \oplus B, depois S = X \oplus C_{in}.
    • Carry-out: duas formas equivalentes:
      • Forma distributiva: C_{out} = A\cdot B + (A \oplus B)\cdot C_{in}.
      • Forma de soma de produtos (majority): C_{out} = A\cdot B + A\cdot C_{in} + B\cdot C_{in}.
  • Implementação comum com portas:
    • 2 XORs, 2 ANDs e 1 OR:
      • X = A \oplus B (XOR1)
      • S = X \oplus C_{in} (XOR2)
      • P = A \cdot B (AND1)
      • Q = X \cdot C_{in} (AND2)
      • C_{out} = P + Q (OR)
  • Aplicado aos bits 1 e 2:
    • Para bit 1:
      • S_1 = A_1 \oplus B_1 \oplus C_1.
      • C_2 = A_1 B_1 + (A_1 \oplus B_1)\,C_1.
    • Para bit 2:
      • S_2 = A_2 \oplus B_2 \oplus C_2.
      • C_3 = A_2 B_2 + (A_2 \oplus B_2)\,C_2.

Passo 5

Desenho organizado (diagrama em blocos, de baixo para cima do LSB para o MSB). Cada bloco mostra o módulo e suas entradas/saídas. As variáveis estão entre parênteses TeX.
\begin{array}{l} \text{Entradas: } A_2,\;A_1,\;A_0 \quad\text{e}\quad B_2,\;B_1,\;B_0.\\[4pt] \begin{array}{c} \quad A_2 \quad\longrightarrow\quad [\mathrm{FA}\\ \text{(bit 2)}] \quad\longrightarrow\quad S_2\\\ \quad B_2 \quad\longrightarrow\quad [\mathrm{FA}\\ \text{(bit 2)}] \quad\longrightarrow\quad \\\ \qquad\qquad\qquad\quad \uparrow\; C_2\quad\\ \\ \\ \downarrow\; C_3\\[8pt] \quad A_1 \quad\longrightarrow\quad [\mathrm{FA}\\ \text{(bit 1)}] \quad\longrightarrow\quad S_1\\\ \quad B_1 \quad\longrightarrow\quad [\mathrm{FA}\\ \text{(bit 1)}] \quad\longrightarrow\quad \\\ \qquad\qquad\qquad\quad \uparrow\; C_1\quad\\ \\ \\ \downarrow\; C_2\\[8pt] \quad A_0 \quad\longrightarrow\quad [\mathrm{HA}\\ \text{(bit 0)}] \quad\longrightarrow\quad S_0\\\ \quad B_0 \quad\longrightarrow\quad [\mathrm{HA}\\ \text{(bit 0)}] \quad\longrightarrow\quad \\\ \qquad\qquad\qquad\quad \downarrow\; C_1 \end{array} \end{array}
Explicando o fluxo (em palavras curtas):
  • Bit 0: A_0,B_0 entram no \mathrm{HA}; saem S_0 e C_1.
  • Bit 1: A_1,B_1 e C_1 (do HA) entram no \mathrm{FA} de bit 1; saem S_1 e C_2.
  • Bit 2: A_2,B_2 e C_2 entram no \mathrm{FA} de bit 2; saem S_2 e C_3 (carry final).]

Passo 6

Equações finais, prontas para implementar com portas:
  • LSB (HA): S_0 = A_0 \oplus B_0,
C_1 = A_0 \cdot B_0.
  • Bit 1 (FA): S_1 = A_1 \oplus B_1 \oplus C_1,
C_2 = A_1 B_1 + (A_1 \oplus B_1)\,C_1.
  • Bit 2 (FA): S_2 = A_2 \oplus B_2 \oplus C_2,
C_3 = A_2 B_2 + (A_2 \oplus B_2)\,C_2.
Dicas rápidas para a prova:
  • Implemente HA com 1 XOR + 1 AND.
  • Implemente FA internamente com 2 XOR + 2 AND + 1 OR (padrão).
  • Anote os carries C_1,C_2 claramente; em questões de prova desenhe as setas de carry entre estágios.
  • Se precisar simplificar, use a forma C_{out}=AB + AC_{in} + BC_{in} para ver a condição majoritária.

Passo 7

Exemplo rápido para fixar (apenas para entender o fluxo):
  • Tome A = 101 ( A_2=1,A_1=0,A_0=1) e B = 011 ( B_2=0,B_1=1,B_0=1).
    • Bit 0: S_0 = 1 \oplus 1 = 0; C_1 = 1\cdot1 = 1.
    • Bit 1: S_1 = 0 \oplus 1 \oplus 1 = 0; C_2 = 0\cdot1 + (0\oplus1)\cdot1 = 0 + 1\cdot1 = 1.
    • Bit 2: S_2 = 1 \oplus 0 \oplus 1 = 0; C_3 = 1\cdot0 + (1\oplus0)\cdot1 = 0 + 1\cdot1 = 1.
    • Resultado: soma S_2S_1S_0 = 000 com carry final C_3 = 1, ou seja 101 + 011 = 1000 (ok).

Resposta

Entradas: A_2,A_1,A_0 e B_2,B_1,B_0. Diagrama em blocos (LSB em baixo):
\begin{array}{c} A_2 \longrightarrow [\mathrm{FA}\\ \text{(bit 2)}]\longrightarrow S_2\\\ B_2 \longrightarrow [\mathrm{FA}\\ \text{(bit 2)}]\quad\quad\\ \\ \\\ \quad\quad\quad\\ \\ \uparrow C_2\quad\quad\quad\\ \downarrow C_3\\[6pt] A_1 \longrightarrow [\mathrm{FA}\\ \text{(bit 1)}]\longrightarrow S_1\\\ B_1 \longrightarrow [\mathrm{FA}\\ \text{(bit 1)}]\quad\quad\\ \\ \\\ \quad\quad\quad\\ \\ \uparrow C_1\quad\quad\quad\\ \downarrow C_2\\[6pt] A_0 \longrightarrow [\mathrm{HA}\\ \text{(bit 0)}]\longrightarrow S_0\\\ B_0 \longrightarrow [\mathrm{HA}\\ \text{(bit 0)}]\quad\quad\\ \\ \\\ \quad\quad\quad\\ \\ \downarrow C_1 \end{array}
Equações prontas para implementar com portas:
\begin{aligned} S_0 &= A_0 \oplus B_0,\\\ C_1 &= A_0 \cdot B_0,\\\ S_1 &= A_1 \oplus B_1 \oplus C_1,\\\ C_2 &= A_1 B_1 + (A_1 \oplus B_1)\,C_1,\\\ S_2 &= A_2 \oplus B_2 \oplus C_2,\\\ C_3 &= A_2 B_2 + (A_2 \oplus B_2)\,C_2. \end{aligned}]

Exercícios relacionados