Hola a Todos
Un tema, en este foro, DESTACADO.
Convertir de Binario a BCD, creo que primero tenemos que comprender muy bien qué es Binario y qué es BCD.
(A) Convertidor de Binario a BCD.
Vean esa frase de arribita y la de aquí abajo:
(B) Binary to BCD converter.
Dicen lo mismo solo que una frase está en ingles y la otra en español.
Casi tienen las mismas LETRAS; vamos diciendo, por un momento que (A) está en BCD y (B) está en binario.
Los 2 frases utilizan letras para formar palabras y palabras para formar la frase. Dicen lo mismo.
Igual es el sistema de numeración binaria y BCD. La representación de un número es por ceros o unos SOLAMENTE. Esas solas 2 figuras (1, 0) son nuestro alfabeto, no existe otra figura para la representación de número binarios o BCD.
Además recuerden siempre: en nuestros sistemas de numeración una cifra está directamente relacionada con la posición que ocupa, respecto a su valor, dentro del número sea decimal o binario, así que por ejemplo:
1946: mientras más a la izquierda esté vale más.
1 ocupa el lugar de los miles.
9 ocupa el lugar de los cientos.
4 ocupa el lugar de los dieses.
6 ocupa el lugar de las unidades.
En binario es igual
11110011010: mientras más a la izquierda esté vale más.
1 Ocupa el lugar de los 1024.
1 Ocupa el lugar de los 512.
1 Ocupa el lugar de los 256.
1 Ocupa el lugar de los 128.
0 Ocupa el lugar de los 64.
0 Ocupa el lugar de los 32.
1 Ocupa el lugar de los 16.
1 Ocupa el lugar de los 8.
0 Ocupa el lugar de los 4.
1 Ocupa el lugar de los 2.
0 Ocupa el lugar de los 1.
Para comprobar solo hay que sumar el valor de la posición de aquellos que sean 1. debe resultar 1946.
En BCD es igual.
Y qué es eso de BCD ? Bueno, lo que quieren decir esas siglas es: Binario Con Código DECIMAL.
Esto es: sigue siendo Binario 1’s y 0’s (Nuestro alfabeto), pero es formato decimal es de código decimal. Solo del 0 al 9. son todas las cifras en decimal, Cierto ?. Código decimal quiere decir solo del 0 al 9.
Recordemos de nuevo que una cifra está directamente relacionada con la posición que ocupa, respecto a su valor, dentro del número sea decimal o binario.
Así que en Binario para representar una cifra decimal requerimos de 4 Bit’s y tienen un valor de: (los primeros 4)
8, 4, 2, 1.
Entonces:
0001, 1001, 0100, 0110: mientras más a la izquierda esté vale más.
Vamos eliminando los 3 0’s de la extrema izquierda. Cero a la izquierda no vale nada igual que en decimal.
1, 1001, 0100, 0110
1 ocupa el lugar de los 1000
1 Ocupa el lugar de los 800
0 Ocupa el lugar de los 400
0 Ocupa el lugar de los 200
1 Ocupa el lugar de los 100
0 Ocupa el lugar de los 80
1 Ocupa el lugar de los 40
0 Ocupa el lugar de los 20
0 Ocupa el lugar de los 10
0 Ocupa el lugar de los 8
1 Ocupa el lugar de los 4
1 Ocupa el lugar de los 2
0 Ocupa el lugar de los 1
Noten como en cada grupo de 4 se utilizan solo 8, 4, 2, 1 y al grupo que sigue más significativo se le agrega un 0.
Bien: este Número: 1, 1001, 0100, 0110 Binario (Porque 1’s y 0’s) tiene CODIGO decimal (Porque 0 a 9) y es igual a 1946 Decimal.
Fácil no ?
No es nada más separar en grupos de 4 un número binario, hay que hacer cierto procedimiento para convertir de Binario a BCD.
Conozco 4 Métodos para convertir de binario a BCD: (Bueno 5 pero el 74185 está basado en el procedimiento (2))
(1) Sumar 6 a cada Década.
Del 10 al 19 se suman 6.
Del 20 al 29 se suman 12.
Del 30 al 39 se suman 18.
Del 40 al 49 se suman 24 Etc, Etc.
El circuito para lograr este convertidor es muy grande pues debemos saber en que rango está el número a convertir, (Comparadores de magnitud 4063) sumadores para si cae en el primer rango sumar 6 y si en el tercero sumar 18, (Sumadores 4008), en fin muchos circuitos integrados.
(2) Shift (Corrimiento).
Si los 3 Bit’s más significativos del número binario son mayor de 4 (100) se le suma 3 (011) y se recorren todos los Bit’s una posición a la izquierda. Se vuelve a hacer lo anterior hasta que todos los Bit’s del número binario hayan sido examinados.
El circuito para lograr este convertidor también es muy grande: comparadores de magnitud, sumadores, registros de desplazamiento Etc, Etc.
Este método es el que utiliza el circuito integrado 74185 pero desafortunadamente ya no lo fabrican, creo.
(3) Con contadores.
Este método me gusta ya que para convertir un número binario de 8 Bit’s (00 a FFHex, 000 a 255Dec) solo se requieren 2 contadores binarios y 3 contadores de decenas. Aparte de una pequeña circuiteria.
Los contadores binarios deben ser programables y que puedan contar descendentemente, con los contadores decimales no hay problema.
En las entradas de programación de los contadores binarios se “Programa” el número binario que se desea convertir.
Se cargan en sus Q’s y se le aplican pulsos. Como cuenta descendentemente “Un día” llegará a cero en sus Q’s.
Esto hay que detectarlo y parar el conteo inmediatamente.
Como los pulsos también se aplican simultáneamente a los contadores “decimales” estos tendrán en sus Q’s el número Binario Con Código Decimal.
(4) Grabar ROM o EEROM.
Este método probablemente vaya a ser el de más popularidad ya que solo se requiere de una memoria de tantas direcciones y de tantos Bit’s de salida (Datos) como sea de grande el número binario que queremos convertir.
Es muy fácil: en una dirección BINARIA se graba el correspondiente número BCD, cuando pongamos esa dirección en sus entradas, en la salida de datos tendremos el número BCD.
Fácil no ?
Claro se requiere de un programador de ROM’s pero podemos ir con un amigo a que nos lo programe.
Si programamos de la dirección 00 a la FF los datos 000 a 255 ya tenemos un convertidor de binario a BCD de 8 Bit’s.
Adjunto el circuito donde se utiliza este metodo para grabar ROM’s
Casi todos estos tipos de memorias tienen las entradas de dirección, las salidas/entradas de datos y las entradas de control como son:
CS, que se puede interpretar como Chip Select = Circuito Seleccionado (0).
WE, que se puede interpretar como Write Enable = habilitada la función de escribir (0).
Las terminales correspondientes a los datos son entradas y salidas, entradas cuando lo estamos grabando, salidas cuando lo estamos leyendo.
Así que si queremos gravar en la dirección 00001111 los datos 0000, 0001, 0110 solo tenemos que poner esos niveles en las entradas de dirección y los datos en las entradas de datos, hacer cierta la entrada CS (0 por el pequeño circulo en esa entrada) y como vamos a escribir la entrara WE hacerla cierta (0) también.
Si queremos ver que hay en la dirección 00001111 solo hay que poner esa dirección y ver las salidas de datos pero la señal WE hacerla falsa (1) y los datos aparecerán.
O sea: si no esta escribiendo(0), está leyendo(1).
saludos
a sus ordenes