- Princípio básico do codificador:
- Construindo codificadores usando designs de lógica combinatória
- 8: 3 Codificadores:
- Desvantagem dos codificadores normais:
- Codificador de prioridade:
Os codificadores, como o nome sugere, codificam um bit maior de informação em um valor de bit menor. Existem muitos tipos de codificadores baseados no número de entradas e saídas e em como eles funcionam. Mas cada codificador tem uma regra subjacente, o número de linhas de saída em um codificador sempre será menor que o número de linhas de entrada. Aprenderemos mais sobre codificadores, o que é um codificador, como e por que eles são usados em circuitos digitais neste artigo.
Princípio básico do codificador:
Vamos imaginar um codificador como uma caixa preta como mostrado abaixo, o que reduz magicamente o número de linhas de entrada de 4 para apenas 2 linhas de saída, mas ainda fornece as mesmas informações sem qualquer perda de dados.
Primeiro, vamos determinar qual seria o nome desse codificador. Possui quatro entradas e duas saídas, portanto, o nome deste codificador será Codificador 4: 2. Se um codificador tiver “ n ” número de linhas de saída, o número de linhas de entrada será 2 n, em nosso caso, o número de linhas de saída é dois (n = 2), portanto, o número de linhas de entrada deve ser (2 2 = 4) quatro, o que é exatamente o caso. Os quatro pinos de entrada são rotulados de I0 a I3 e os dois pinos de saída são rotulados de O0 a O1
Então, como o codificador converte quatro sinais em dois, isso pode ser entendido dando uma olhada na tabela verdade abaixo. Também é importante saber que um codificador comum como o mostrado aqui tem uma regra que, em determinado momento, apenas um pino de entrada deve ser alto, portanto, na tabela verdade a seguir, apenas uma entrada será alta.
Cada condição possível da entrada a saída é mostrada na tabela verdade acima. Por exemplo, quando apenas O1 é alto (1) e todas as outras entradas são baixas (0), então ambos os pinos de saída serão baixos (0). Da mesma forma, para cada caso, os pinos de saída também mudarão seu status. Ao usar este status de bits de saída, o usuário será capaz de rastrear qual sinal de entrada teria sido fornecido ao codificador.
Ok, o que é sofisticado em converter 4 linhas em 2 linhas, por que ainda precisamos disso?
Para fins de compreensão, explicamos um codificador 4: 2, mas há outro codificador que pode pegar um número maior de entradas e convertê-las em um número menor de saídas, como o codificador 8: 3, o codificador 16: 4 etc. Esses tipos do Encoder são muito úteis quando temos que reduzir o número de pinos usados em um MCU / MPU ou reduzir o número de fios de transporte de sinal em PLC e outros sistemas onde uma matriz de switch ou LED. Ele também é usado na transmissão de dados de forma eficiente usando fios menores. Em algumas aplicações, podemos ter uma situação em que mais de uma entrada pode ser alta (1). Nesse caso, faremos algo chamado Codificador de prioridade, que discutiremos mais adiante neste artigo.
Construindo codificadores usando designs de lógica combinatória
Agora que sabemos como funciona um codificador e onde é usado. Vamos aprender como construir um usando portas lógicas simples. Embora codificadores como 8: 3 estejam disponíveis como IC de pacote simples como SN74LS148, é importante saber como eles são construídos para que possamos fazer codificadores personalizados para nossos projetos com base na tabela verdade necessária.
Expressão booleana:
O primeiro ao projetar o dispositivo de Lógica Combinacional é encontrar a Expressão Booleana para a tabela verdade. É muito fácil e pode ser facilmente determinado apenas olhando para a tabela verdade. A mesma tabela verdade que vimos anteriormente é fornecida a seguir, com algumas ilustrações para que você entenda melhor.
O número de expressões será igual ao número de linhas de saída, aqui temos duas saídas e, portanto, temos duas expressões. Para a primeira saída O0, basta verificar em qual condição ela está alta (1) e rastrear o número do pino de entrada correspondente que também permanece alto (1). Da mesma forma, para todos os valores altos de O0, observe qual o número do pino de entrada é alto e adicione os pinos. Os pinos de entrada correspondentes ao pino de saída O0 são destacados em vermelho acima e para O1 é destacado em azul. Portanto, a expressão para O0 e O1 será
O 1 = I 3 + I 2 O 0 = I 3 + I 1
Diagrama de circuito do codificador 4: 2:
Assim que obtivermos a Expressão Booleana, só temos que desenhá-la na forma de Gates. Aqui, uma vez que temos a operação de adição (+), usaremos as portas OR para construir nossos circuitos. Você também pode simplificar ou modificar a expressão booleana de acordo com suas necessidades. O diagrama de circuito para a expressão acima é mostrado abaixo
O circuito pode ser facilmente construído usando um CI 7432 OR gate. Eu construí meu circuito codificador sobre uma placa de ensaio, conforme mostrado abaixo
As quatro linhas de entrada (I0, I1, I2 e I3) são fornecidas pelos quatro botões de pressão, quando o botão é pressionado liga + 5V ao pino tornando-o lógico 1 e quando o botão não é pressionado o pino é mantido no solo através de um resistor pull down de 10k para torná-lo lógico zero. As saídas (O0 e O1) são representadas por um par de LED vermelho. Se o LED acender, significa que a lógica de saída é 1 e se eles estiverem desligados, significa que a lógica de saída 0. O funcionamento completo do circuito codificador é mostrado no vídeo abaixo
Como você pode ver, quando o primeiro botão é pressionado, a entrada I0 torna-se alta e, portanto, ambas as saídas permanecem baixas. Quando o segundo botão é pressionado, a entrada I1 é ligada e, portanto, um LED fica alto para indicar que O0 está alto. Finalmente, quando o quarto botão é pressionado, a entrada I3 torna-se alta e, portanto, ambos os LEDs ficam altos. Este é um circuito muito simples, portanto, nós o construímos facilmente em uma placa de ensaio, mas, para encoders práticos, o circuito ficará um pouco mais complexo. No entanto, os codificadores também estão disponíveis como pacotes IC que podem ser adquiridos se forem adequados ao seu projeto.
8: 3 Codificadores:
O funcionamento e uso do codificador 8: 3 também é semelhante ao codificador 4: 2, exceto pelo número de pinos de entrada e saída. O codificador 8: 3 também é chamado de codificador octal para binário; o diagrama de blocos de um codificador 8: 3 é mostrado abaixo
Aqui, o codificador tem 8 entradas e 3 saídas, novamente apenas uma entrada deve ser alta (1) a qualquer momento. Como existem 8 entradas, ela é chamada de entrada octal e, como existem três saídas, também é chamada de saída binária. A tabela verdade do codificador é mostrada abaixo.
8: 3 Tabela de verdade do codificador:
Expressão booleana:
Uma vez que temos três saídas, teremos três expressões como mostrado abaixo
O 2 = I 7 + I 6 + I 5 + I 4 O 1 = I 7 + I 6 + I 3 + I 2 O 0 = I 7 + I 5 + I 3 + I 1
Diagrama de circuito do codificador 8: 3:
Uma vez que a expressão booleana é obtida, como sempre, podemos construir o diagrama de circuito usando as portas OR conforme mostrado abaixo.
O circuito usa um CI de porta OR de 4 entradas, você também pode simplificar a Expressão Booleana para usar outros CIs de porta normais de 2 entradas.
Desvantagem dos codificadores normais:
Esses tipos de codificadores sofrem das seguintes desvantagens principais
- Quando nenhuma das entradas for alta, a saída será igual a zero, mas essa condição também entra em conflito com o primeiro bit sendo alto (MSB). Portanto, deve-se sempre tomar cuidado para que pelo menos um bit permaneça LIGADO sempre
- Quando mais de uma entrada é alta, a saída será reduzida e pode dar o resultado para qualquer uma das entradas, o que leva à confusão.
Para superar essas dificuldades, empregamos um tipo diferente de codificador chamado Codificador de Prioridade, que usa uma saída adicional para determinar se a saída é válida, e quando mais de uma entrada é ajudada a alta, aquela que vai alta a partir do LSD é considerada sozinha enquanto ignorando as outras entradas.
Codificador de prioridade:
Vamos analisar um codificador de prioridade 4: 2 como um exemplo para entender como ele difere de um codificador normal e pode superar as duas desvantagens mencionadas acima. O diagrama de blocos de um codificador de prioridade 4: 2 é mostrado abaixo
Um codificador de prioridade 4: 2 também tem 4 entradas e 2 saídas, mas adicionaremos outra saída chamada V, que significa bit válido. Este bit válido irá verificar se todos os quatro pinos de entrada estão baixos (0) se baixo o bit também se tornará baixo informando que a saída não é válida, portanto, podemos superar a primeira desvantagem mencionada acima.
Tabela de verdade do codificador de prioridade 4: 2:
A próxima desvantagem pode ser evitada dando prioridade aos bits MSB, o codificador fará a verificação no MSB e, uma vez que encontrar o primeiro bit tão alto (1), ele gerará a saída de acordo. Portanto, não importa se os outros pinos são altos ou baixos. Portanto, na tabela de verdade abaixo, uma vez que 1 é atingido, os valores de irrelevância são apresentados por “X”.
Expressão booleana:
Agora temos que derivar três Expressões que são para O0, O1 e V. Como a tabela verdade tem itens irrelevantes, temos que usar o método K-map para derivar a Expressão Booleana para isso. Não vamos cobrir como resolver com o K-maps, pois está fora do escopo deste artigo. Mas o Mapa é mostrado abaixo para que você possa interferir e aprender por si mesmo.
Nos mapas acima, o esquerdo é para O1 e o direito é para O0. As linhas de saída são mencionadas por y e as linhas de entrada são mencionadas por x. Então, organizando a equação de acordo, teremos o seguinte.
O 1 = I 3 + I 2 O 0 = I 2 I 1 '+ I 3
Da mesma forma, para o bit válido "V", a expressão booleana pode ser dada como
V = I 3 + I 2 + I 1 + I 0
Diagrama de circuito:
O diagrama de circuito para este projeto pode ser construído usando as expressões booleanas.
O circuito pode ser construído usando as portas básicas NOT, AND e OR. Aqui, os bits O0 e O1 são considerados como saídas, enquanto o bit V é usado para validar a saída. Somente se o bit V for alto, a saída será considerada se o valor de V for baixo (0) a saída deve ser ignorada, pois isso implica que todos os pinos de entrada são zero.