Requisito previo: codificador , decodificadores
El código binario de N dígitos se puede utilizar para almacenar 2 N elementos distintos de información codificada. Para esto se utilizan los codificadores y decodificadores. Los codificadores convierten 2 N líneas de entrada en un código de N bits y los decodificadores decodifican los N bits en 2 N líneas.
1. Codificadores:
un codificador es un circuito combinacional que convierte información binaria en forma de 2 N líneas de entrada en N líneas de salida, que representan código de N bits para la entrada. Para codificadores simples, se supone que solo una línea de entrada está activa a la vez.
Como ejemplo, consideremos el codificador octal a binario . Como se muestra en la siguiente figura, un codificador de octal a binario toma 8 líneas de entrada y genera 3 líneas de salida.
Mesa de la verdad –
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | X | Y | Z |
---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 |
0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 |
0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 1 |
0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 |
0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 |
1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 |
Como se ve en la tabla de verdad, la salida es 000 cuando D0 está activo; 001 cuando D1 está activo; 010 cuando D2 está activo y así sucesivamente.
Implementación:
de la tabla de verdad, la línea de salida Z está activa cuando el dígito octal de entrada es 1, 3, 5 o 7. De manera similar, Y es 1 cuando el dígito octal de entrada es 2, 3, 6 o 7 y X es 1 para entrada dígitos octales 4, 5, 6 o 7. Por lo tanto, las funciones booleanas serían:
X = D4 + D5 + D6 + D7 Y = D2 +D3 + D6 + D7 Z = D1 + D3 + D5 + D7
Por lo tanto, el codificador se puede realizar con puertas OR de la siguiente manera:
Una limitación de este codificador es que solo una entrada puede estar activa en un momento dado. Si hay más de una entrada activa, la salida no está definida. Por ejemplo, si D6 y D3 están activos, nuestra salida sería 111, que es la salida para D7. Para superar esto, usamos Priority Encoders.
Otra ambigüedad surge cuando todas las entradas son 0. En este caso, el codificador emite 000, que en realidad es la salida para D0 activo. Para evitar esto, se puede agregar un bit adicional a la salida, llamado bit válido, que es 0 cuando todas las entradas son 0 y 1 en caso contrario.
Codificador de prioridad:
un codificador de prioridad es un circuito codificador en el que las entradas tienen prioridades. Cuando más de una entrada está activa al mismo tiempo, la entrada con mayor prioridad tiene prioridad y se genera la salida correspondiente.
Consideremos el codificador de prioridad 4 a 2 como ejemplo.
De la tabla de verdad, vemos que cuando todas las entradas son 0, nuestro bit V o el bit válido es cero y las salidas no se utilizan. Las x en la tabla muestran la condición de indiferencia, es decir, puede ser 0 o 1. Aquí, D3 tiene la prioridad más alta, por lo tanto, sean cuales sean las otras entradas, cuando D3 es alta, la salida debe ser 11. Y D0 tiene la prioridad más baja, por lo tanto, la salida sería 00 solo cuando D0 es alta y las otras líneas de entrada son bajas. De manera similar, D2 tiene mayor prioridad sobre D1 y D0 pero menor que D3, por lo tanto, la salida sería 010 solo cuando D2 es alto y D3 es bajo (D0 y D1 no importan).
Mesa de la verdad –
D3 | D2 | D1 | D0 | X | Y | V |
---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | X | X | 0 |
0 | 0 | 0 | 1 | 0 | 0 | 1 |
0 | 0 | 1 | X | 0 | 1 | 1 |
0 | 1 | X | X | 1 | 0 | 1 |
1 | X | X | X | 1 | 1 | 1 |
Implementación:
se puede ver claramente que la condición para que el bit válido sea 1 es que al menos cualquiera de las entradas debe ser alta. Por eso,
V = D0 + D1 + D2 + D3
Para X:
=> X = D2 + D3
Para Y:
=> Y = D1 D2′ + D3
Por lo tanto, el codificador de prioridad 4 a 2 se puede realizar de la siguiente manera:
2. Decodificadores:
un decodificador hace el trabajo opuesto al de un codificador. Es un circuito combinacional que convierte n líneas de entrada en 2 n líneas de salida.
Tomemos un ejemplo de decodificador de 3 a 8 líneas.
Mesa de la verdad –
X | Y | Z | D0 | D1 | D2 | D3 | D4 | D5 | D6 | D7 |
---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
0 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
Implementación:
D0 es alto cuando X = 0, Y = 0 y Z = 0. Por lo tanto,
D0 = X’ Y’ Z’
Similarmente,
D1 = X’ Y’ Z D2 = X’ Y Z’ D3 = X’ Y Z D4 = X Y’ Z’ D5 = X Y’ Z D6 = X Y Z’ D7 = X Y Z
Por eso,