Conversores de código: binario a/desde código Gray – Part 1

Requisito previo: sistema numérico y conversiones de base

El sistema Gray Code es un sistema numérico binario en el que cada par de números sucesivos difiere en un solo bit. Se utiliza en aplicaciones en las que la secuencia normal de números binarios generados por el hardware puede producir un error o ambigüedad durante la transición de un número al siguiente.
Por ejemplo, los estados de un sistema pueden cambiar de 3(011) a 4(100) como 011 — 001 — 101 — 100. Por lo tanto, existe una alta probabilidad de que se lea un estado incorrecto mientras el sistema cambia desde el estado inicial. al estado final.
Esto podría tener graves consecuencias para la máquina que utiliza la información. El código Gray elimina este problema ya que solo un bit cambia su valor durante cualquier transición entre dos números.

Conversión de Código Binario a Gray –

Sean b_0,\:b_1,\:b_2\:,\:and\:b_3los bits que representan los números binarios, donde b_0está el LSB y b_3el MSB, y
Sean g_0,\:g_1,\:g_2\:,\:and\:g_3los bits que representan el código gris de los números binarios, donde g_0está el LSB y g_3el MSB.
La tabla de verdad para la conversión es:
 \begin{tabular}{||c|c|c|c||c|c|c|c||} \hline  \multicolumn{4}{||c||}{Binary} & \multicolumn{4}{|c||}{Gray Code}\\ \hline  b_3 & b_2 & b_1 & b_0 & g_3 & g_2 & g_1 & g_0 \\ \hline \hline  0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\  \hline  0 & 0 & 0 & 1 & 0 & 0 & 0 & 1 \\  \hline  0 & 0 & 1 & 0 & 0 & 0 & 1 & 1 \\  \hline  0 & 0 & 1 & 1 & 0 & 0 & 1 & 0 \\  \hline \hline  0 & 1 & 0 & 0 & 0 & 1 & 1 & 0 \\  \hline  0 & 1 & 0 & 1 & 0 & 1 & 1 & 1 \\  \hline  0 & 1 & 1 & 0 & 0 & 1 & 0 & 1 \\  \hline  0 & 1 & 1 & 1 & 0 & 1 & 0 & 0 \\  \hline \hline  1 & 0 & 0 & 0 & 1 & 1 & 0 & 0 \\  \hline  1 & 0 & 0 & 1 & 1 & 1 & 0 & 1 \\  \hline  1 & 0 & 1 & 0 & 1 & 1 & 1 & 1 \\  \hline  1 & 0 & 1 & 1 & 1 & 1 & 1 & 0 \\  \hline \hline  1 & 1 & 0 & 0 & 1 & 0 & 1 & 0 \\  \hline  1 & 1 & 0 & 1 & 1 & 0 & 1 & 1 \\  \hline  1 & 1 & 1 & 0 & 1 & 0 & 0 & 1 \\  \hline  1 & 1 & 1 & 1 & 1 & 0 & 0 & 0 \\  \hline \hline \end{tabular}
para encontrar el circuito digital correspondiente, usaremos la técnica K-Map para cada uno de los bits de código gris como salida con todos los bits binarios como entrada.
K-map para g_0

K-map para g_1

K-map para g_2

K-map para g_3

Expresiones booleanas minimizadas correspondientes para bits de código gris –
 g_0 = b_0b_1^\prime + b_1b_0^\prime = b_0 \oplus b_1\\ g_1 = b_2b_1^\prime + b_1b_2^\prime = b_1 \oplus b_2\\ g_2 = b_2b_3^\prime + b_3b_2^\prime = b_2 \oplus b_3\\ g_3 = b_3
El circuito digital correspondiente –

Expresión booleana generalizada para la conversión de binario a código gris:

Expresión booleana para la conversión de código binario a gris para n bits:

GRAMO norte = segundo norte

G n-1 = B n XOR B n-1 : :

G 1 = B 2 X O B 1

Convertir Código Gray a Binario –

La conversión de código gris de nuevo a binario se puede hacer de manera similar.
Sean b_0,\:b_1,\:b_2\:,\:and\:b_3los bits que representan los números binarios, donde b_0está el LSB y b_3el MSB, y
Sean g_0,\:g_1,\:g_2\:,\:and\:g_3los bits que representan el código gris de los números binarios, donde g_0está el LSB y g_3el MSB.
Mesa de la verdad-
 \begin{tabular}{||c|c|c|c||c|c|c|c||} \hline  \multicolumn{4}{||c||}{Gray Code} & \multicolumn{4}{|c||}{Binary}\\ \hline  g_3 & g_2 & g_1 & g_0 & b_3 & b_2 & b_1 & b_0\\ \hline \hline  0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\  \hline  0 & 0 & 0 & 1 & 0 & 0 & 0 & 1 \\  \hline  0 & 0 & 1 & 0 & 0 & 0 & 1 & 1 \\  \hline  0 & 0 & 1 & 1 & 0 & 0 & 1 & 0 \\  \hline \hline  0 & 1 & 0 & 0 & 0 & 1 & 1 & 1 \\  \hline  0 & 1 & 0 & 1 & 0 & 1 & 1 & 0 \\  \hline  0 & 1 & 1 & 0 & 0 & 1 & 0 & 0 \\  \hline  0 & 1 & 1 & 1 & 0 & 1 & 0 & 1 \\  \hline \hline  1 & 0 & 0 & 0 & 1 & 1 & 1 & 1 \\  \hline  1 & 0 & 0 & 1 & 1 & 1 & 1 & 0 \\  \hline  1 & 0 & 1 & 0 & 1 & 1 & 0 & 0 \\  \hline  1 & 0 & 1 & 1 & 1 & 1 & 0 & 1 \\  \hline \hline  1 & 1 & 0 & 0 & 1 & 0 & 0 & 0 \\  \hline  1 & 1 & 0 & 1 & 1 & 0 & 0 & 1 \\  \hline  1 & 1 & 1 & 0 & 1 & 0 & 1 & 1 \\  \hline  1 & 1 & 1 & 1 & 1 & 0 & 1 & 0 \\  \hline \hline \end{tabular}

Uso de K-map para recuperar los bits binarios del código gris –
K-map para b_0

K-map para b_1

K-map para b_2

K-map para b_3

Expresiones booleanas correspondientes –

 \begin{align*} b_0 &=g_3^\prime g_2^\prime g_1^\prime g_0 + g_3^\prime g_2^\prime g_1g_0^\prime + g_3^\prime g_2g_1^\prime g_0^\prime  + g_3^\prime g_2g_1g_0 +g_3g_2^\prime g_1^\prime g_0^\prime  + g_3g_2^\prime g_1g_0 \\ &\:\:\:+g_3g_2g_1^\prime g_0 + g_3g_2g_1g_0^\prime \\ &= g_3^\prime g_2^\prime( g_1^\prime g_0 +  g_1g_0^\prime) + g_3^\prime g_2(g_1^\prime g_0^\prime  + g_1g_0) +g_3g_2^\prime(g_1^\prime g_0^\prime  +  g_1g_0 )\\ &\:\:\:+g_3g_2 (g_1^\prime g_0 + g_1g_0^\prime) \\ &= g_3^\prime g_2^\prime(g_0\oplus g_1) + g_3^\prime g_2(g_0\odot g_1)+g_3g_2^\prime(g_0\odot g_1) + g_3g_2 (g_0\oplus g_1) \\ &= (g_0\oplus g_1)(g_2\odot g_3) + (g_0\odot g_1)(g_2\oplus g_3)\\ &= g_3\oplus g_2\oplus g_1\oplus g_0\\ b_1 &= g_3^\prime g_2^\prime g_1 + g_3^\prime g_2g_1^\prime  + g_3g_2g_1 + g_3g_2^\prime g_1^\prime \\ &= g_3^\prime(g_2^\prime g_1 + g_2g_1^\prime)  + g_3(g_2g_1 + g_2^\prime g_1^\prime) \\ &= g_3^\prime(g_2\oplus g_1)  + g_3(g_2\odot g_1) \\ &= g_3\oplus g_2\oplus g_1\\ b_2 &= g_3^\prime g_2 + g_3g_2^\prime\\ &= g_3\oplus g_2\\ b_3 &= g_3 \end{align*}

Circuito digital correspondiente –

Expresión booleana generalizada para la conversión de binario a código gris:

Expresión booleana para la conversión de código gris a binario para n bits:

segundo norte = GRAMO norte

B n-1 = B n XOR G n-1 = GRAMO n XOR G n-1 : :

B 1 = B 2 XOR G 1 = G n XOR ………… XOR G 1

Este artículo es una contribución de Chirag Manwani . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *