miércoles, 7 de noviembre de 2012

Seleccionar el menor entre dos números dados: Laboratorio

LABORATORIO: Dados dos números X  y  Y  de  4 bits cada uno  que se presentan  en un Dip-Switch, en un display de 7 segmentos debe visualizarse en hexadecimal el MENOR de los dos números,  y simultáneamente debe oirse un mensaje asociado indicando cual es el número menor.  Si los números son iguales debe encenderse el PUNTO.


Solución:
Si deseamos aplicar la ley de dividir para vencer lo primero es lograr un esquema general mental de lo que requerimos para solucionar este proyecto propuesto.

Puede ser algo así:
El lector podrá apreciar que no le damos mucha importancia al DECODIFICADOR que permita a partir de las entradas M3 M2 M1 M0  mostrar en el display de 7 segmentos el caracter respectivo en Hexadecimal.
Se supone que con una GAL22V10 manejando la respectiva tabla de verdad en Isplever facilmente lo podemos lograr. O implementando el integrado TTL o CMOS  que realice esa función. 

Copiamos de Wikipedia un display en visualización hexadecimal:


Buscando encontramos un integrado CMOS que cumple con lo que necesitamos, cuyo datasheet se muestra:
Personalmente sólo lo utilizaría sino tuviese un programador para quemar la GAL. Desde luego siempre lo mas conveniente es la lógica programable que la lógica cableada. La Gal se deja reprogramar, el Chip habría    que guardarlo para cuando se volviese a requerir.

Volviendo al esquema que inicial presentamos observamos que lo fundamental es lograr seleccionar entre los  dos números X y Y el número menor. Lo del decodificador es cuestión secundaria que se efectúa al final.

¿ Cómo seleccionar el menor entre X y Y ?   En una entrada del blog el lector podrá estudiar el integrado 7485 que es un comparador de magnitud. Ese integrado si es indispensable comprarlo pués debido a la cantidad muy grande de sumandos en sus ecuaciones Booleanas es imposible implementarlo con la Gal22V10.

Con el 7485 se puede establecer entre X y Y cuando X es menor que Y. Lo mas recomendable es simularlo, por ejemplo en Altera para familiarizarnos con el integrado y saberlo manejar con propiedad antes de comprarlo. ¿ para qué compro algo si no lo se utilizar ? Esa es la importancia de la Simulación. Primero aprendo a manejar y después compro el carro. Parece que eso es lo mas inteligente, y no comprarlo y  estrellarlo aprendiendo a conducirlo.  Muchas veces los estudiantes queman los chips por no haberlos simulado previamente. Bueno, personalmente de estudiante a mi me pasaba lo mismo; en esos tiempos no había posibilidad de efectuar simulación. De algo debe servir la experiencia. Como decía mi abuela: "La experiencia no se improvisa y se aprende de ella"

Simulemos entonces el 7485 en Altera en modo gráfico:

Se hace necesario consultar el Data Sheet del 7485 para conocer como se conectan las entradas de cascada.


Compilamos el esquemático y simulamos:

Sabiendo como trabaja el 7485 lo compramos y lo implementamos en el protoboard.  Luego requerimos multiplexar entre los números X y Y el número menor.

El integrado mas apropiado es el 74157 que es un chip que trae incorporado 4 MUX de 2 entradas / 1 salida.

Con este integrado  con  Selector = 0  podemos  hacer que M3 M2 M1 M0 = X3 X2 X1 X0  y  con  Selector = 1 hacer que M3 M2 M1 M0 = Y3 Y2 Y1 Y0.

Ahora, si Selector = salida A > B (del comparador de magnitud 7485) entonces tendremos:
                             A =  X
                             B =  Y

Si  X > Y, entonces  salida A > B = 1, y se hacemos el selector del Mux igual a la salida A > B del 7485 entonces el MUX hace que su salida M3 M2 M1 M0 sea igual a Y3 Y2 Y1 Y0, lo cual es lo que se quiere.

Si X < Y, o,  si X = Y ,  la salida A>B = 0, y el MUX hace M3 M2 M1 M0 = X3 X2 X1 X0, lo que tambien se desea.

Lo recomendable es que pruebe a nivel de simulación con Altera que esto es cierto y luego monte en el protoboard el 7485 y el 74157 y verifique con 4 leds de prueba que en M3 M2 M1 M0  aparece el MENOR  de los números X3 X2 X1 X0    y   Y3 Y2 Y1 Y0.

Para la simulación en Altera elabore un nuevo archivo gráfico tal como se muestra y efectúe su compilación:


Verifique que las formas de onda son las correctas:
Muchas veces los estudiantes argumentan "que en el tablero y en el papel todo funciona, pero en la práctica real en el protoboard la situación es muy diferente"   Personalmente insisto que la simulación es muy importante. Las ideas de los grandes hombres primero se plasmaron en un diseño, en el papel, antes de concretarse en hechos reales.  Ojalá Leonardo Da Vinci, kepler, Galileo, Newton, Einstein y demás hubiesen podido trabajar en sus diseños con las herramientas que las Tecnologías de la Información y de la Comunicación en este momento nos ofrecen. Dentro de todas esas herramientas los programas de Simulación son algo estupendo, que verdaderamente ayuda. Son suministrados por los mismos fabricantes de los dispositivos: ALTERA, LATTICE SEMICONDUCTOR, etc.

Continuando con nuestro proyecto de laboratorio, ahora implemente en el protoboard lo que ha simulado y verifique su perfecto funcionamiento.

Con un quinto Led puede probar que cuando X = Y  enciende el punto del display de cátodo común 7 segmentos.

Veamos un esquema de lo que llevamos simulado y probado hasta el momento, faltando el decodificador para visualización hexadecimal en el display de 7 segmentos y el chip de sonido ISD1964.
Una vez que hasta acá todo funciona bien, ahora sí programe, simule e implemente la GAL22V10 con el decodificador para el display 7 segmentos con visualización en hexadecimal o utilice el chip CMOS que realiza esta función.

Lo último que debe implementar es el Chip de Sonido. Es obvio que M3 M2 M1 M0 o sea los 4 bits del número MENOR seleccionado deben estar puenteados a las entradas de dirección A3 A2 A1 A0 del ISD1964 para poder reproducir los mensajes que previamente en esas respectivas direcciones deben haber sido grabados dede la dirección binaria 0000 (0) hasta la dirección 1111 (15).

En resumen los pasos que se recomiendan  a seguir son los siguientes:

1.Simular en Altera el 7485 y luego  implementarlo en el protoboard  para  verificar su perfecto comportamiento con el  Dip Switch de 8 interruptores  y 3  leds de prueba colocados a las salidas A > B, A = B, A< B.
2.  Simular en Altera adicional al comparador de magnitud 7485 el 74157 para multiplexar el número menor entre X y Y. Verifique que hasta acá todo funciona bien con el Dip Switch y los  4 leds de prueba colocados a M3 M2 M1 M0.

 Utilice la salida (A=B) del 7485 para encender el PUNTO del display 7 segmentos. Verifíquelo en el protoboard con un quinto led de prueba.
3. Programe en Isplever con GAL22V10 el decodificador para manejar los 7 segmentos a,b,c,d,e,f,g en hexadecimal.  Implemente en el protoboard y verifique su perfecto comportamiento.

4..Implemente el Chip de sonido habiendo efectuado previamente la grabación de los 16 mensajes exigidos.

                                                                       ..........¡ E X I T O S !...........

No hay comentarios:

Publicar un comentario