Módulos combinatórios
MUX, descodificadores, codificadores, comparadores, somadores e caminhos críticos.
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 quando e quando , com
onde o primeiro termo cobre e o segundo cobre :
Um MUX com entradas precisa de 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 entradas ativa uma entre saídas. Num 2:4 ativo a 1, , , e ; um enable multiplica estas expressões, com a desativar todas as saídas e a permitir a seleção normal. Aqui é 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 , usa um MUX 4:1 com seleção . Nas quatro combinações de , a saída em função de é a seguinte:
| se | se | Entrada do MUX | |
|---|---|---|---|
| 00 | 0 | 1 | |
| 01 | 0 | 1 | |
| 10 | 0 | 1 | |
| 11 | 1 | 1 | 1 |
Logo liga , . 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 no primeiro nível e no segundo: dois MUX escolhem entre e com ; um terceiro escolhe entre esses resultados com . 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, é . O descodificador enumera os mintermos; a OR soma os pretendidos.
Comparadores
A igualdade entre palavras é o AND das igualdades bit a bit: . Para a ordem sem sinal, o primeiro bit diferente a partir do MSB decide.
Em duas partes, alta e baixa , a parte baixa só decide quando as altas empatam, com
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 e . Um somador completo recebe ainda o carry , com
| 000 | 0 | 0 |
| 001 | 1 | 0 |
| 010 | 1 | 0 |
| 011 | 0 | 1 |
| 100 | 1 | 0 |
| 101 | 0 | 1 |
| 110 | 0 | 1 |
| 111 | 1 | 1 |
Ligando o carry de cada posição à seguinte construímos um somador ripple-carry. Para , com carry inicial 0, seguimos do LSB para o MSB na tabela seguinte:
| Posição | Carry de entrada | Soma | Carry de saída | ||
|---|---|---|---|---|---|
| 0 | 1 | 0 | 0 | 1 | 0 |
| 1 | 1 | 1 | 0 | 0 | 1 |
| 2 | 0 | 1 | 1 | 0 | 1 |
| 3 | 1 | 0 | 1 | 0 | 1 |
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 permite usar o mesmo somador: aplica a cada entrada e usa . Com , calcula , e com , calcula .
No ripple-carry, o caminho crítico pode atravessar todos os carries. Definindo geração e propagação , cada carry escreve-se . 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 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á ; 10 dá ; 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.
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.
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.
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.
Duas chegadas à mesma porta
Em , 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 é ns. Através de NOT A e da segunda AND, é 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.
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 é 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.