Implementación de las operaciones booleanas en la GAL22V10





A continuación te presentaremos 1 ejemplo muy sencillo para configurar el hardware del dispositivo lógico programable (PLD) GAL22V10.

- Grabaremos la GAL22V10 con un programador, que seguramente encontrarás en tu centro educativo.
- Debemos tener cuidado al tocar los pines de la GAL22V10, ya que las cargas estáticas del cuerpo puede descomponer el dispositivo (no pasa nada si lo tocas, solo se descompone si lo tocas demasiado, por ejemplo, agarrando todos los pines de la GAL dentro de la mano).

OBJETIVOS: Implementar las operaciones booleanas NOT, AND, OR, XOR, NAND, NOR y XNOR para tres variables de entrada en el dispositivo lógico programable GAL22V10.

DESARROLLO: En la figura 1 podemos ver la configuración de las patillas o pines en la GAL22v10: las patillas de alimentación son la 12 (a tierra) y la 24 (a voltaje); los pines del 1 al 11 y el 13 son exclusivamente entradas, mientras que los del 14 al 23 funcionan como entradas/salidas.

Para nuestra práctica utilizaremos como entradas las patillas de la 1 a la 3 y como salidas las patillas de la 14 a la 20.
Emplearemos el programa WinCupl para generar el archivo .jed (utilizado por el programador para grabar o quemar la GAL22V10), que podremos descargar gratuitamente (previa registración) en la siguiente dirección: Atmel Products,

Al abrir WinCupl veremos la siguientes barras: de menús y herramientas.
En la barra de menús pulsamos File > New > Design File con lo que se abrirá la siguiente ventana:

En Device cambiamos virtual por g22v10 (para generar el archivo .jed), mientras que en Name nombraremos nuestro archivo de diseño, hecho esto presionamos OK. Aparecerá una pequeña ventana titulada INPUT PINS, en la que pondremos el numero de pines de entrada que necesitemos, en nuestro caso 3, presionamos OK; nos saldrá otra ventana titulada OUTPUT PINS donde pondremos el numero de patillas destinadas a ser salidas, escribiremos 7, presionamos OK; se abrirá otra ventana que no modificaremos, pulsaremos OK y finalmente nos saldrá el espacio de trabajo.
En el espacio de trabajo aparecerán los datos que ya hemos rellenado, pero que podrán ser modificados fácilmente si así se requiere.

Vemos que los pines de entrada (INPUT PINS) y salida (OUTPUT PINS) aún no están definidos, es decir, no hemos escogido los números de patillas a utilizar ni sus nombres de variable.

Como ya habíamos mencionado, utilizaremos los pines del 1 al 3 como entradas, por lo que pasamos a escribir los números de esas patillas con sus respectivos nombres de variable, lo cual nos servirá para efectuar las posteriores ecuaciones lógicas que determinarán la función del dispositivo. Para las salidas usaremos los pines del 14 al 20, realizando el mismo procedimiento que con las entradas, con lo que obtendremos un espacio de trabajo similar a éste:
Para realizar las ecuaciones lógicas de las operaciones booleanas correspondientes, debemos saber como se representan los operadores lógicos en WinCupl:
Como solo representaremos la operación NOT de la variable de entrada a, las ecuaciones lógicas nos quedarían así:

and = a & b & c ;
nand = !(a & b & c) ;
or = a # b # c ;
nor = !(a # b # c) ;
xor = a $ b $ c ;
xnor = !(a $ b $ c) ;
nota = !a ;

Por lo que finalmente, nuestro espacio de trabajo sería similar a este:
Pasamos a compilar el código para generar el archivo .jed, que como ya habíamos mencionado, es el utilizado por el programador para grabar la GAL22V10. Antes de esto, debemos asegurarnos que en Options > Compiler de la barra de menú, este activado lo siguiente: en la pestaña Output Files, en el recuadro Download, debe estar activado la opción JEDEC como lo vemos a continuación:
Mientras que en la pestaña General debe estar activada la opción JEDEC name = PLD name (aunque no se active esta casilla la mayoría de las veces se genera el archivo .jed, aunque en algunas ocasiones es necesario activarla para poder generar el archivo).

Hecho lo anterior, compilamos el código mediante Run > Device Dependent Compile, por lo que en la ventana de la derecha obtendremos los archivos generados después de la compilación, entre ellos el .jed.

Ahora que hemos obtenido el archivo .jed, podremos simular nuestro circuito en un programa como Proteus ó grabarlo directamente en el programador.

IMPLEMENTACIÓN EN EL PROTOBOARD SIMPLIFICADO.
Para esta práctica utilizamos una fuente de alimentación de 5 Volts, un circuito integrado GAL22V10, un switch dip de más de 3 posiciones (como las presentaciones de 4, 6, 8, etc.), y 7 leds de cualquier color (pueden ser de dos colores para diferenciar bien las operaciones inversas ejemplo: nor-or).

Lo ideal sería que entre las salidas de la GAL22V10 y las patillas de cada led se pusiera un resistor de aproximadamente 200 Ohms, pero por falta de espacio no se pusieron.

- Descargar pack “Código en WinCupl + archivo .jed + fotografía de la implementación en el protoboard real”
- Descargar hoja de datos de la GAL22V10.
- Ir a la página de descarga de WinCupl.


13 comentarios:

Felipe de Jesus Calderon Hinojosa dijo...

saludos, oye con que hiciste el dibujo de la gal y su dip switch

Corpostar dijo...

Hola Mr. Presidente XD, utilicé Adobe Photoshop.

Anónimo dijo...

Wooooow, aqui anduvo el señor presidente =O, jajaja, muchas gracias por la informacion, fue muy util

Anónimo dijo...

oye y en el galaxy como seria??? alguna idea

Anónimo dijo...

usaste PhotoShop!?!?!?! Asu cuanto tardaste? XD

Oscar dijo...

Nunca he utilizado el Galaxy, sorry =(.

Anónimo dijo...

lo que me pregunto es si existe un circuito el cual te lo pueda grabar al gal o pld que se este utilizando estuve biendo en orcad-pld pero soy una persona de bajos recursos que circuito me recomiendan......

Anónimo dijo...

como harias para programar una gal para que haga funcionar un motor paso a paso en directo y en inverso, la verdad tengo la idea de implementar demux de 4 salidas que van a las bobinas pero se que estoy omitiendo varias cosas, agradezco la colaboracion, lo de directo e inverso me refiero al sentido del giro

Anónimo dijo...

Gracias muy buen tuto pero nomas una cosa tuve que andar buscando el archivo .jed por que no me aparecia

Oscar dijo...

Si es un problema, algunas veces me sucedió, tal vez sea un error del programa, pero lo arregle con los pasos que muestro en el tutorial. ¿Lo encontraste?

Anónimo dijo...

Excelentemente util!!! mil gracias!!!

Anónimo dijo...

no se supone que se debe colocar una resistor por lo menos para
que la gal funcione correctament?de no colocar una resistencia el led siempre estaria encendido no es asi?

Jorge! dijo...

¡Muchísimas gracias! Me salvaste el pellejo, no tendré que desperdiciar un micro y tampoco tanto tiempo en puras compuertas básicas, iugh!

Publicar un comentario en la entrada

Utiliza nuestro foro de electronica si tienes dudas no relacionadas con este tema.