Para o Codificador 8 \rightarrow 3, projete a tabela verdade e as equações booleanas de saída
Passo 1
O enunciado pede duas coisas: projetar a tabela verdade e encontrar as equações booleanas de saída para um codificador 8 \rightarrow 3.
Informações/assunções usadas (todas necessárias para o projeto):
Há 8 entradas, que vou chamar de I_0,I_1,\dots,I_7. Cada I_k representa a presença do sinal correspondente ao código decimal k.
Há 3 saídas binárias que representam o índice ativo em binário; vou chamar as saídas de Y_2,Y_1,Y_0 onde Y_2 é o bit mais significativo (MSB) e Y_0 o menos significativo (LSB).
Assumo o caso padrão e mais simples: exatamente uma das entradas I_k está ativa em cada situação (ou seja, um codificador simples, não um priority encoder). Vou também indicar uma saída auxiliar opcional de valido V que vale 1 se qualquer entrada estiver ativa.
O pedido é: (a) listar a tabela verdade (cada linha com um único I_k=1); (b) escrever as equações booleanas para Y_2,Y_1,Y_0 (e opcionalmente V).
Passo 2
Entendendo o que um codificador faz (explicação didática, sem jargões):
Um codificador pega qual entrada está ativa (por exemplo, a entrada correspondente ao número decimal 5) e converte essa posição em sua representação binária de 3 bits.
Exemplo simples: se I_5=1 (todas as outras I são 0), as saídas devem mostrar o número 5 em binário, isto é 101. Então Y_2=1, Y_1=0, Y_0=1.
Observação importante: se mais de uma entrada estiver ativa ao mesmo tempo, o codificador simples fica ambíguo (saídas não definidas). Para esse caso existe o codificador por prioridade, que resolve conflito escolhendo a entrada de maior prioridade. Aqui, por simplicidade, usamos a hipótese “uma só entrada ativa”.
Passo 3
Definição dos rótulos e do objetivo matemático:
Entradas: I_0,I_1,I_2,I_3,I_4,I_5,I_6,I_7.
Saídas: Y_2 (MSB), Y_1, Y_0 (LSB).
Saída auxiliar opcional: V (válido) definida por V=I_0+I_1+\dots+I_7 (OR de todas as entradas).
Objetivo: montar a tabela que relaciona cada vetor de entradas com o vetor (Y_2,Y_1,Y_0), e a partir dela obter expressões booleanas para Y_2,Y_1,Y_0.
Passo 4
Tabela verdade (cada linha: apenas uma entrada I_k em 1; outros 0). Vou escrever cada caso como “entrada ativa \Rightarrow saídas”:
Se I_0=1 então (Y_2,Y_1,Y_0)=(0,0,0).
Se I_1=1 então (Y_2,Y_1,Y_0)=(0,0,1).
Se I_2=1 então (Y_2,Y_1,Y_0)=(0,1,0).
Se I_3=1 então (Y_2,Y_1,Y_0)=(0,1,1).
Se I_4=1 então (Y_2,Y_1,Y_0)=(1,0,0).
Se I_5=1 então (Y_2,Y_1,Y_0)=(1,0,1).
Se I_6=1 então (Y_2,Y_1,Y_0)=(1,1,0).
Se I_7=1 então (Y_2,Y_1,Y_0)=(1,1,1).
(Incluo também a saída válido V: em qualquer uma dessas linhas V=1.)
Passo 5
Como ler a tabela para formar equações (explicação passo a passo):
Cada saída corresponde a um dos bits da representação binária do índice k.
Para Y_0 (LSB): observe as linhas em que Y_0=1. São os índices impares: 1,3,5,7. Isso significa que Y_0 deve ser 1 sempre que I_1 ou I_3 ou I_5 ou I_7 for 1.
Para Y_1 (bit do meio): observe as linhas em que Y_1=1. São os índices 2,3,6,7. Então Y_1 é 1 quando I_2 ou I_3 ou I_6 ou I_7 for 1.
Para Y_2 (MSB): observe as linhas em que Y_2=1. São os índices 4,5,6,7. Então Y_2 é 1 quando I_4 ou I_5 ou I_6 ou I_7 for 1.
Passo 6
Escrevendo as equações booleanas (forma soma de produtos simples, já minimizadas neste caso):
Y_0 = I_1 + I_3 + I_5 + I_7
Y_1 = I_2 + I_3 + I_6 + I_7
Y_2 = I_4 + I_5 + I_6 + I_7
Explicação rápida de por que já estão minimizadas:
Cada saída é simplesmente a soma (OR) das entradas cujo índice tem o bit correspondente igual a 1. Não há termos comuns que permitam fatoração/combinação para reduzir o número de portas além de reusar sinais de entradas diretamente; essa é a forma mais direta e econômica em termos de níveis lógicos se as entradas já existem.
Passo 7
Saída válido e consideração sobre múltiplas entradas ativas:
Uma saída útil a acrescentar é V para indicar se qualquer entrada está ativa:
Se houver possibilidade de múltiplas entradas ativas simultaneamente e isso for problema, então é necessário um codificador por prioridade. A técnica básica do codificador por prioridade é “mascarar” cada entrada por negar as entradas de maior prioridade. Por exemplo, assumindo I_7 com maior prioridade:
M_7 = I_7
M_6 = I_6 \cdot \overline{I_7}
M_5 = I_5 \cdot \overline{I_7}\cdot\overline{I_6}
e assim por diante, e então substituir I_k por M_k nas equações acima para obter saídas sem ambiguidade. (Isto é só comentário didático; as equações principais para o caso “uma entrada ativa” estão no passo anterior.)
Passo 8
Resumo curto e encorajamento (para prova):
Para resolver rápido numa prova: rotule entradas I_0\dots I_7, escreva a tabela onde cada I_k=1 dá o binário de k, e leia cada saída como OR das entradas cujos índices têm o bit correspondente igual a 1. Isso é direto e rápido de escrever.
Resposta
Tabela verdade (cada linha tem apenas uma entrada ativa): I_0=1 \Rightarrow (Y_2,Y_1,Y_0)=(0,0,0) I_1=1 \Rightarrow (Y_2,Y_1,Y_0)=(0,0,1) I_2=1 \Rightarrow (Y_2,Y_1,Y_0)=(0,1,0) I_3=1 \Rightarrow (Y_2,Y_1,Y_0)=(0,1,1) I_4=1 \Rightarrow (Y_2,Y_1,Y_0)=(1,0,0) I_5=1 \Rightarrow (Y_2,Y_1,Y_0)=(1,0,1) I_6=1 \Rightarrow (Y_2,Y_1,Y_0)=(1,1,0) I_7=1 \Rightarrow (Y_2,Y_1,Y_0)=(1,1,1)