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):
  • 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.
  • 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:
V = I_0 + I_1 + I_2 + I_3 + I_4 + I_5 + I_6 + I_7.
  • 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)
Equações booleanas das saídas:
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
Saída válido (opcional):
V = I_0 + I_1 + I_2 + I_3 + I_4 + I_5 + I_6 + I_7

Exercícios relacionados