Módulos combinatórios

MUX, descodificadores, codificadores, comparadores, somadores e caminhos críticos.

TLDR

Perguntar sobre esta página

ChatGPTClaudePerplexityGrokGeminiCopiar e abrirDeepSeekCopiar e abrir

Um multiplexador escolhe um dado, um descodificador ativa uma linha e um somador calcula uma soma. São módulos combinatórios: depois dos atrasos de propagação, as saídas dependem das entradas atuais. Conhecer a função e as larguras permite ligá-los sem redesenhar as portas interiores.

Multiplexador e descodificador

Um multiplexador 2:1 seleciona I0I_0 quando S=0S=0 e I1I_1 quando S=1S=1, com

Y=S‾I0+SI1,Y=\overline S I_0+S I_1,

onde o primeiro termo cobre S=0S=0 e o segundo cobre S=1S=1:

Um MUX com 2k2^k entradas precisa de kk bits de seleção. Se os dados forem words de 32 bits, há 32 seleções paralelas com os mesmos bits: um MUX 8:1 de words precisa de 3 bits de seleção, não de 32.

Um descodificador de kk entradas ativa uma entre 2k2^k saídas. Num 2:4 ativo a 1, D0=A‾B‾D_0=\overline A\overline B, D1=A‾BD_1=\overline AB, D2=AB‾D_2=A\overline B e D3=ABD_3=AB; um enable EE multiplica estas expressões, com E=0E=0 a desativar todas as saídas e E=1E=1 a permitir a seleção normal. Aqui AA é o bit mais significativo da seleção; se as saídas forem ativas a 0, a linha selecionada fica 0 e as restantes 1.

Um demultiplexador encaminha um dado para a saída selecionada; pode ser construído aplicando o dado ao enable de um descodificador. Um codificador faz a operação inversa de indicar o índice de uma entrada ativa. Se várias entradas puderem estar ativas, define prioridade e um sinal valid: o código 00 sozinho não distingue a entrada 0 ativa de nenhuma entrada ativa.

Implementar uma função por seleção

Para F=Σm(1,3,5,6,7)F=\Sigma m(1,3,5,6,7), usa um MUX 4:1 com seleção ABAB. Nas quatro combinações de ABAB, a saída em função de CC é a seguinte:

ABABFF se C=0C=0FF se C=1C=1Entrada do MUX
0001CC
0101CC
1001CC
11111

Logo liga I0=I1=I2=CI_0=I_1=I_2=C, I3=1I_3=1. A escolha das variáveis de seleção altera as subfunções necessárias, mas não a função final.

Para construir um MUX 4:1 com MUX 2:1, usa S0S_0 no primeiro nível e S1S_1 no segundo: dois MUX escolhem entre (I0,I1)(I_0,I_1) e (I2,I3)(I_2,I_3) com S0S_0; um terceiro escolhe entre esses resultados com S1S_1. Para implementar uma função de 3 variáveis com descodificador 3:8 ativo a 1, faz OR das saídas correspondentes aos mintermos: por exemplo, F=Σm(1,2,5)F=\Sigma m(1,2,5) é D1+D2+D5D_1+D_2+D_5. O descodificador enumera os mintermos; a OR soma os pretendidos.

Comparadores

A igualdade entre palavras é o AND das igualdades bit a bit: Eq=∏iAi⊕Bi‾Eq=\prod_i\overline{A_i\oplus B_i}. Para a ordem sem sinal, o primeiro bit diferente a partir do MSB decide.

Em duas partes, alta HH e baixa LL, a parte baixa só decide quando as altas empatam, com

A>B=(AH>BH)+EqH(AL>BL).A>B=(A_H>B_H)+Eq_H(A_L>B_L).

Por exemplo, 1010 é maior que 1001: as partes altas 10 são iguais, por isso comparamos 10 com 01 na parte baixa. Num comparador com sinal, começa por distinguir os sinais, porque dois códigos com sinais diferentes não seguem a ordem sem sinal.

Somador completo

Um meio somador calcula S=A⊕BS=A\oplus B e C=ABC=AB. Um somador completo recebe ainda o carry CiC_i, com

S=A⊕B⊕Ci,Ci+1=AB+ACi+BCi.S=A\oplus B\oplus C_i,\qquad C_{i+1}=AB+AC_i+BC_i.
ABCiABC_iSSCi+1C_{i+1}
00000
00110
01010
01101
10010
10101
11001
11111

Ligando o carry de cada posição à seguinte construímos um somador ripple-carry. Para 1011+01101011+0110, com carry inicial 0, seguimos do LSB para o MSB na tabela seguinte:

PosiçãoAiA_iBiB_iCarry de entradaSomaCarry de saída
010010
111001
201101
310101

Lê os bits de soma em ordem inversa à das linhas: 0001. Acrescentando o carry final à esquerda, o resultado completo é 10001, ou 17; cada carry de saída alimenta a linha seguinte, por isso o atraso pode acumular-se ao longo da palavra.

Somar, subtrair e acelerar

Um controlo MM permite usar o mesmo somador: aplica Bi⊕MB_i\oplus M a cada entrada e usa C0=MC_0=M. Com M=0M=0, calcula A+BA+B, e com M=1M=1, calcula A+B‾+1=A−BA+\overline B+1=A-B.

No ripple-carry, o caminho crítico pode atravessar todos os carries. Definindo geração Gi=AiBiG_i=A_iB_i e propagação Pi=Ai⊕BiP_i=A_i\oplus B_i, cada carry escreve-se Ci+1=Gi+PiCiC_{i+1}=G_i+P_iC_i. Expandir estas equações calcula carries em paralelo, à custa de mais lógica. O ganho depende do circuito e dos atrasos, não apenas do número de portas.

Se cada etapa de carry atrasar 2 ns e a soma final atrasar mais 3 ns, um caminho que atravesse quatro etapas exige 11 ns neste modelo. Os caminhos em paralelo não se somam: escolhe o maior atraso entre uma entrada e uma saída. Um multiplicador, por sua vez, forma produtos parciais e soma-os com o alinhamento dos respetivos pesos.

Exercícios

Escolher quatro entradas

Implementa F=A⊕B⊕CF=A\oplus B\oplus C num MUX 4:1 selecionado por AB. Dá I0 a I3.

Pista

Para cada AB, substitui A e B na expressão e vê o que resta em função de C.

Mais uma pista

Se A e B diferirem, a saída é C negado.

Solução

AB=00 dá C; 01 dá C‾\overline C; 10 dá C‾\overline C; 11 dá C. Portanto I0=C, I1=I2=C negado, I3=C. Precisas de um inversor além do MUX, se o complemento não estiver disponível.

Confere a tua resposta:

  • I0=C, I1=C negado, I2=C negado, I3=C.
  • Avalia as quatro escolhas de AB para ambos os valores de C.

Erros frequentes

Não coloques os quatro valores da tabela só para C=0; as entradas têm de funcionar para ambos os valores de C.

Voltar à explicação
Um código insuficiente

Um codificador de prioridade 4:2 dá prioridade a I3 e depois I2,I1,I0. Para entradas I3..I0=0101, indica código e valid. Como distingues nenhuma entrada ativa da entrada I0 ativa?

Pista

Seleciona a entrada ativa com maior prioridade.

Solução

I2 e I0 estão ativos; vence I2 e o código é 10, valid=1. Se nenhuma entrada estiver ativa, valid=0; se só I0 estiver ativa, código=00 e valid=1. O sinal valid elimina a ambiguidade do código.

Confere a tua resposta:

  • Código 10, valid=1.
  • Valid distingue nenhuma entrada de I0 ativa.

Erros frequentes

Não assumas que apenas uma entrada pode estar ativa num codificador de prioridade.

Voltar à explicação
Subtração com o mesmo circuito

Num somador/subtrator de 4 bits, calcula 3−5 e indica B após XOR com M, carry inicial, palavra final e carry final.

Pista

Para subtrair M=1.

Mais uma pista

Soma 0011 a 1010 e a 1.

Solução

A=0011, B=0101. Com M=1, B torna-se 1010 e C0=1. A soma é 1110, sem carry final. Em C2, 1110 vale -2, sem overflow com sinal. Como subtração unsigned, 3 é menor que 5 e exigiu empréstimo; por isso o carry final do complemento é 0.

Confere a tua resposta:

  • B transformado 1010 e carry inicial 1.
  • Resultado 1110, carry final 0, sem overflow C2.

Erros frequentes

O carry final de subtração por complemento não é diretamente um sinal de resultado negativo.

Voltar à explicação
A parte baixa pode decidir?

Compara sem sinal A=101101 e B=100111, dividindo cada palavra em dois blocos de 3 bits. Explica que comparador decide.

Pista

Começa pelos três bits superiores.

Solução

A_H=5 e B_H=4, logo A>B independentemente das partes baixas, 5 e 7. A parte baixa só decide se as altas forem iguais. A expressão é GT_H + EQ_H·GT_L. Aqui GT_H=1 e EQ_H=0.

Confere a tua resposta:

  • A parte alta 101 é maior que 100.
  • A comparação baixa não altera a decisão.

Erros frequentes

Não combines GT_H e GT_L por AND, porque a parte baixa pode ser menor sem mudar o resultado.

Voltar à explicação
Duas chegadas à mesma porta

Em Y=AB+A‾CY=AB+\overline AC, as AND atrasam 2 ns, a NOT 1 ns e a OR 3 ns. Os fios têm atraso zero e as entradas mudam em t=0. Qual é o maior atraso entrada-saída? Identifica o caminho e a primeira altura em que se pode exigir saída estável para qualquer transição.

Pista

A OR espera pela chegada mais lenta dos seus dois ramos.

Mais uma pista

O ramo negado de A percorre três portas.

Solução

Através do ramo AB, o atraso é 2+3=52+3=5 ns. Através de NOT A e da segunda AND, é 1+2+3=61+2+3=6 ns. O maior é 6 ns: neste modelo, depois desse intervalo todos os caminhos tiveram tempo de estabilizar. Não somamos 5+6, porque os ramos funcionam em paralelo. Durante o intervalo pode haver transições transitórias.

Confere a tua resposta:

  • Caminho A→NOT→AND→OR, atraso máximo 6 ns.
  • O caminho direto é 5 ns; ramos paralelos não se somam.

Erros frequentes

O atraso máximo não afirma que toda a alteração produz uma mudança visível nem que a saída é válida durante os impulsos transitórios.

Voltar à explicação
MUX 4:1 com MUX 2:1

Constrói um MUX 4:1 com três MUX 2:1, para que S1S0=00,01,10,11 selecione I0,I1,I2,I3. Indica as ligações e a seleção em cada nível. Se cada MUX tiver atraso máximo de 2 ns e os fios atraso zero, qual é o maior atraso de uma entrada de dados até à saída?

Pista

Usa S0 no primeiro nível e S1 no segundo.

Mais uma pista

Dois MUX escolhem entre (I0,I1) e (I2,I3) com S0; o terceiro escolhe com S1.

Solução

No primeiro nível, um MUX seleciona I0/I1 e outro seleciona I2/I3, ambos com S0. Liga as saídas respetivamente à entrada 0 e à entrada 1 do terceiro MUX, selecionado por S1. S1 escolhe o par e S0 escolhe o elemento do par: 00 dá I0, 01 dá I1, 10 dá I2 e 11 dá I3. Cada dado atravessa dois MUX em série, pelo que o maior atraso é 2+2=42+2=4 ns. Não se somam os três MUX, pois os dois primeiros trabalham em paralelo.

Confere a tua resposta:

  • Atribuíste S0 e S1 aos níveis
  • Verificaste as 4 seleções
  • Obtiveste 4 ns pelos dois MUX em série

Erros frequentes

Usar S1 no primeiro nível troca os pares.

Voltar à explicação

À tua maneira

Aparência

Modo de cor
Tema
Cor de destaque

Leitura

Fonte de leitura

Álgebra, lógica e uma ideia de cada vez.

Código

Fonte do código

Navegação

Cursor de leitura, sem edição. h, j, k, l movem; / pesquisa nesta página. v seleciona caracteres; V seleciona linhas; y copia. Tab permite destacar ou comentar. Espaço ou Enter abre blocos recolhíveis. Nos cartões, h, j, k, l mudam o foco.

CSS personalizado

Ativa uma sugestão ou guarda o teu CSS. Só muda este navegador.

Usa --page, --text e --accent para acompanhar o tema.

Seletores e recuperação

.site-header, .prose, .course-card, [data-reading-history], [data-playground] e .page-actions.

Abre a aparência com a tecla vírgula ou no rodapé. Se o CSS esconder os controlos, abre esta página sem CSS personalizado.

Pesquisar

Escreve para pesquisar em todo o site.

para escolher · Enter para abrir · Esc para fechar

Copiar fórmula

A cópia automática não está disponível. Copia o LaTeX abaixo.

Pesquisar nesta página

Enter procura · n / N repetem · Esc cancela. Ctrl / Cmd K pesquisa todo o site.

Atalhos de teclado

Clica numa tecla para a mudar. Esc cancela. Backspace desativa.

PesquisarCtrl / Cmd K

Os atalhos não interferem enquanto escreves. Tab e Enter funcionam sempre.