# Programador para PLDs o GALs



## Pateatraseros (May 26, 2006)

Alguien me puede decir en donde puedo adquiri un programador o "quemador" para pld's o gal's cualquiera de los dos por ke necesito uno para un proyecto escolar, eh estado buscando en intenet y no encuentro nada, por favo si alguien puede ayudarme se lo agradecería mucho


----------



## naly (Sep 1, 2006)

Hola yo tambien soy nueva aqui, mira, exactamente ando programando gals en un software que se llama WinCupl, se puede bajar de internet gratis una version que unicamente te permite programarlo con ecuaciones logicas, es decir, cuando vayas a programar en WinCupl, tendrias que hacer un codigo algo asi parecido:

Name     New Motor2 ;
PartNo   00 ;
Date     5/16/2006 ;
Revision 01 ;
Designer Nataly/Jose ;
Company  Professional ;
Assembly None ;
Location xx ;
Device   g16v8 ;

/* *************** INPUT PINS *********************/
PIN     1=clk                         ; /*                                 */ 
PIN     2=X                         ; /*                                 */ 

/* *************** OUTPUT PINS *********************/

PIN     13=A                         ; /*                                 */ 
PIN     14=B                         ; /*                                 */ 
PIN     15=C                         ; /*                                 */ 
PIN     16=D                         ; /*                                 */ 


A.d = ( !X & A & !B & !C & D ) # ( X & A & !B & C & !D ) # ( X & !A & B & C & !D ) # ( !X & !A & B & !C & D );
B.d = (X & !A & !B & !C & !D )#(!X & !A & !B & !C & !D )#(X & A & !B & !C & D ) # ( !X & A & !B & C & !D ) # ( !X & !A & B & C & !D ) # ( X & !A & B & !C & D );
C.d = (X & !A & !B & !C & !D )#(!X & !A & !B & !C & !D )# ( !X & A & !B & !C & D ) # ( !X & A & !B & C & !D ) #( X & !A & B & C & !D ) # ( X & !A & B & !C & D);
D.d = ( X & A & !B & !C & D ) # ( X & A & !B & C & !D ) # ( !X & !A & B & C & !D ) # ( !X & !A & B & !C & D );



En este programa, lo que hace es que sigue la secuencia de un motor de pasos unipolar (si quisieras hacer uno, debes encontrar la secuencia, no siempre es la misma); hasta abajo es donde te menciono de las ecuaciones. El A es la variable de salida, y el .d significa que va a utilizar un FF tipo D.

Espero que te ayude mi información


----------



## Moy (Sep 14, 2006)

Hola Naly yo he programado Gal en un programador que baje de la red pero tu como los has programado, armaste alguno, si es así me puedes decir que diaghrama empleaste?

Saludos


----------



## naly (Sep 14, 2006)

Hola , claro que si, de hecho los diagramas que empleo son las maquinas de estados de mealy y moore, para generar los estados, y sus  salidas, claro que dependen de las entradas en muchos casos.

Ya programe un semaforo, el que tanto han pedido, proximamente hare un articulo explicando como fue la secuencia, porque fue asi, y como se programa en una gal, para que lo tengan .

Por lo pronto, en mi semestre llevo programado el motor de pasos unipolar que mencione en la respuesta anterior, y el semaforo, pero tambien hemos programado alguanas cosas como contadores. El editor - compilador que utilizo es el llamado WinCupl, que porgrama toda gal y pal, en internet existe un recurso gratuito, puedes encontrarlo aqui, ademas de muchos documentos de ayuda:

http://www.atmel.com/tools/WINCUPL.aspx

Ahora, como mencione, las maquinas de estados de mealy y de moore te sirven para generar tus salidas  y por supuesto tu estado siguiente, que sera generado con un reloj (que en la mayoria  se usa un astable 555), ahora, tu puedes decir a que estado quieres que se vaya tu maquina, dependiendo la condicion que le quieras dar como entrada, y tambien puedes hacer tus salidas combinacionales, digamos que se prendan ciertos leds, actives motores, etc, como tu necesites que suceda cuando cambie de un estado a otro.

En unos dias mas pondre una descripcion detallada

espero que les haya servido por ahorita mi información


----------



## Moy (Sep 15, 2006)

Gracias por la información Naly, una pregunta, acabo de revisar tu respuesta y vi la información que señalas encontré en ella un diagrama de un programador, es el que armaste? otra cosa señalas que programas en el winculp con ecuaciones pero al descargar el programa en el Gal usas el formato jedec i pregunta es porque en ISPExpert System de Lattice programas con el jedec que te lo genera de otyra forma con el programa, como te dije no he leido a bien la información pero lo voy a hacer gracias nuevamente.

Moy


----------



## naly (Sep 16, 2006)

ahhh Ok, mira, cuando uno esta programando la secuencia que uno quiere, con entradas y salidas por supuesto, se tiene que compilar el programa, al momento de que se hace esto, se generan varios archivos de diferentes extensiones, unos sirven para simular, el que ocupamos para cargarlo a otro programa (del quemador universal o cual sea)  que se utiliza para quemar nuestra gal o nuestra pal, es el archivo con extensión      .jed     , que es el que lleva toda la información de los fusibles a quemar.

mmm de hecho, cuando mencionas que si arme un prototipo que encontraste en la red, no me habia dado cuenta que habia un diagrama, si me pudieses poner el link de ese articulo para verlo, te lo agradecería mucho, por favor 


espero que haya tenido alguna respuesta a tu pregunta


----------



## Moy (Sep 17, 2006)

El PDF es: ATF15XX-DK2 CPLD Development/Programmer Kit (47 pages, updated 8/02)
CPLD Development/Programmer Kit User Guide. 

El programador que yo armé solo graba de la marca Lattice y mediante el software de ISPExpert de la misma compañía genera el archivo JEDEC
Es por eso que me interesa armar otro tipo de programador sobre todo que maneje ATMEL por que es la marca que más se mueve en las casas electrónicas.

Saludos


----------



## naly (Jun 15, 2007)

Una gal es parte de la famila de los PLDs, (Programmable Logic Device o Dispositivos lógicos programables), no es nada mas que un chip que tiene adentro una matriz interna de puras ANDs, ORs, NOT, a la que se le conoce con el nomre de matriz genérica programable (de ahi el nombre GAL por Generic Array Logic) que es reprogramable, es decir, puedes usarla varias veces borrando la información que tenías;  aparte, tiene unas celdas llamadas macroceldas, que es donde la lógica de salida programable se hace básicamente ahí, además que contienen flip flops tipo D, lo cual nos ayuda tanto la matriz de compuertas logicas como los flip flops a realizar circuitos logicos ya sean secuenciales o combinacionales;

La gal más usada es la GAL16V8, que tiene 16 entradas y 8 salidas, las cuales puedes programar para tener así varias salidas que hagan ciertas funciones;

No hay un lenguaje de programación en específico, se pueden programar en ABEL o en WinCupl, (a mi me gusta WinCupl), es un software que te ayuda definir tus entradas y salidas, les pones el nombre que gustes, y aparte, puedes hacer tablas de verdad, o directamente escribir la función logica para que haga la función que quieres en una salida.

declarar entradas se hacen de esta forma, como un ejemplo:

PIN    1 = clk                       ; /*                                 */ 
PIN    2 = A                         ; /*                                 */ 
PIN    3 = B                         ; /*                                 */ 
PIN    4 = C                         ; /*                                 */ 

Nota: Si tu usaras pulso de reloj en tus circuitos, el pin 1 hará ese trabajo, solo lo pones como lo indiqué ahi arriba, y conectas el 555 o el generador, o cualquier circuito que te esté dando un pulso de reloj en ese pin.

las salidas se declaran de este modo, básicamente igual, solo tienes que ver el datasheet del componente para ver sus pines:

PIN    12 = W1                        ; /*                                 */ 
PIN    13 = W2                        ; /*                                 */ 
PIN    14 = X1                        ; /*                                 */ 
PIN    15 = X2                        ; /*                                 */ 


y ya terminando de declarar, puedes hacer la función logica que ocupas, en su respectiva salida, (a mi me gusta escribir directamente las funciones, y no hacer una tabla de verdad ahi en el software)

algo así como:

W1 = (!A & B & !C & !D & !E & F & !G & !H ) # (!A & B & !C & D & !E & F & !G & H ) # (!A & B & C & !D & !E & F & G & !H ) # (!A & B & C & D & !E & F & G & H ) # (A & B & !C & !D & E & F & !G & !H );


y así, se guarda como archivo PLD, y cuando lo compilas se genera un archivo .JED, ese es el que mandaras al chip para que se quemen los fusibles internos y así tengas tu función.

El software lo puedes bajar gratis de la web, pero tiene limitaciones, ya que funciones muy largas que contienen mas de 4 OR no se pueden realizar, ocupas cortarlas, básicamente, ocupas hacer tus trucos.


Para programar al chip, ocupas un "programador" vaya la redundancia, pero así se le dice al aparato que quema el archivo al chip, lo puedes armar o si lo tienen disponible en tu area de trabajo, adelante 

Bueno, espero que te haya servido, actualmente estudio Ing. Cibernética Electrónica, y te puedo ayudar si tienes cualquier duda.

Saludos al foro 

Naly


----------



## pic-man (Jun 15, 2007)

Los lenguajes que sirven para programar las GALs y los PLDs en general se llaman lenguajes de descripción de hardware, además de los 2 que menciona naly hay muchos más pero 2 que te recomiendo que investigues y si puedes aprendas son VERILOG y VHDL, esos dos lenguajes son muy usados a nivel profesional, hace 1 año fui a una conferencia de intel y ahí dijeron que esos lenguajes eran los que ellos usaban. VHDL es muy fácil de aprender, VERILOG nunca lo he usado pero no debe ser muy complicado. 

Para que te inicies en el VHDL te recomiendo un curso de la Universidad de Guadalajara (México) que puedes descargar de estos enlaces: Parte 1 y Parte 2


----------



## nemo3 (Abr 12, 2009)

saludos.

yo tambien utilizo wincupl para programar plds. tengo una pregunta que haceros ya que estoy trabajando en un contador que luego se representa en un display.
he implementado todas las funciones de decodificacion, pero no se como implementar las del contador,
no se como meter la idea se sincrono.

si alguien tiene alguna idea se lo agradeceria.


----------



## gzaloprgm (Abr 12, 2009)

Encontré esto: Programa GAL 16V8/A/B/C/D/Z/ZD, 18V10/B, 20V8/A/B/Z, 20RA10/B, 20XV10/B, 22V10/B/C/Z, 26CV12/B, 6001/B, and 6002B.

Necesita:

Socket para el integrado
Resistencias 4,7K 1/4W
Capacitor cerámico de 100nF
Conector de 25 pines (puerto paralelo)
Cables
Fuente 5V/250mA 
Fuente 8.5-16.5V/20mA (ajustable)

me gustaría probarlo con mi gal16v8 nueva.


----------



## nemo3 (Abr 13, 2009)

¿ninguno me puede ayudar con mi pal?

gracias de antemano


----------



## gzaloprgm (Abr 13, 2009)

Acá te paso un contador sencillo de 4 bits que basicamente usa las macroceldas de salida de una gal16v8 como flip flops d. Con una circuito externo podrias adaptarlo a 7seg (no te dan las salidas sino    (4 + 7))

Name     4BITCounter ;
PartNo   00 ;
Date     01/04/2009 ;
Revision 01 ;
Designer gzaloprgm;
Company  GXZ ;
Assembly g2 ;
Location  ;
Device  g16v8 ;

Pin 1 = clock;
Pin 17 = q0;
Pin 16 = q1;
Pin 15 = q2;
Pin 14 = q3;

q0.d = !q0;
q1.d = !q0 & q1 # q0 & !q1;
q2.d = q0 & q1 & !q2 # !q0 & !q1 & q2 # q0 & !q1 & q2 # !q0 & q1 & q2;
q3.d = q0 & q1 & q2 & !q3 # !q0 & !q1 & !q2 & q3 # q0 & !q1 & !q2 & q3 # !q0 & q1 & !q2 & q3 # q0 & q1 & !q2 & q3 # !q0 & !q1 & q2 & q3 # q0 & !q1 & q2 & q3 # !q0 & q1 & q2 & q3;

Saludos,
Gzaloprgm


----------



## nemo3 (Abr 14, 2009)

muchas gracias gzalorgm, no habia visto las macroceldas en la hoja de caractristicas.
sabiendo que tengo unos biestables a la salida es mas facil.

utilizare tus expresiones.


----------



## walter x (Abr 14, 2009)

amigo tengo un problema con una pantalla de cuatro digitos y cada digito es de siete segmentos con punto decimal usaba el mm54541 pero ahora tengo el mc14499p lo que pasa es que este integrado tiene data,clock, y enable mientras que el mm5451 tiene data, y clok como podria reemplazar este integrado aparte tengo que manejar dos leds despues de los cuatro digitos cosa que ocon el 5451 si lo puedo hacer quiero usar el mc14499p porque ahorro espacio.


----------



## san231276 (Abr 22, 2009)

hola naly, necesito que me eches una mano con el tema de la programacion en wincupl , del semaforo para el cruce de una calle.
en principio el semaforo siempre estara en verde, hasta que un peaton pulse el botos de paso de peatones, entonces comenzara el proceso de cambio de los dos semaforos, el de coches y el peatones.
semaforo coches.- verde a ambar (7seg), ambar a rojo (2seg), rojo a verde.
semaforo peaton.- rojo                           , rojo                          , verde


----------



## DMag00 (Abr 22, 2009)

Hola; a mi tambien me interesa el diagrama del programador de PAL y GAL;
por favor posteen el link.


----------



## richitard (Abr 25, 2009)

mmm...pues yo en la escuela uso la GAL22V10 y para programar lo hacemos en lenguaje VHDL, se me hace mucho mas sencillo ya que contiene instrucciones como if's o for's y el compilador saca las ecuaciones y las reduce para despues programarlo. 
Para programar en este lenguaje usamos un programa que se llama Galaxy de Cypress. Por ahora no tengo tiempo pero si les intesesa se los puedo pasar.


----------



## edwinbm4 (Abr 25, 2009)

Hola:
primero para comentarles que he buscado mucho en internet y no he podido encontrar lo que necesito.
tengo un selector de monedas, al pasar la moneda me da una conbinacion de 1's y O's, lo cual necesito guradar para poder empezar a sumar y reproducir un sonido especifico, esa es la parte que necesito, cmo guarda ese dato? las monedas son representadas en una combinacion 4 bits, se que la Gal22V10D tiene la posiblidad de configurar el flip-flop tipo D pero lo intente en el labo y no me guardo el dato; estoy un poco perdido en esa parte.

muchas gracias a cualquier respuesta...


----------



## gzaloprgm (Abr 25, 2009)

Según lo que yo se, esa gal solo permite que la entrada de clock de los FF internos sea de la pata 1.

Sí, por ejemplo, el selector de monedas te da un cero cuando no hay moneda y un valor cuando cayo alguna, podrías hacer una or entre los valores del selector y conectarla a la pata 1.

En tal caso sumaría a unos FF internos el valor actual + el valor de la moneda.

Esto ultimo supongo que es posible hacerlo "facilmente" con tablas.

Lo del ruido de la moneda lo podes sacar de la pata uno.

Si necesitas ayuda con algo decime.

Saludos,
Gzaloprgm


----------



## edwinbm4 (Abr 25, 2009)

Gracias
interesante lo del CLK, eso no lo habia pensado de esa manera, ahora, el selector es rapido, es decir, cuanod no pasa ninguna moneda el selector da como salida unos, al pasar la moneda se ponenn en ceros algunos de los 4 lineas, y regrese a todos en uno.... ahora podras decirme como hacer un flip-flop tipo D para capturar esos 4 datos? 
Gracias


----------



## @f2504 (May 2, 2009)

hola tengo una GAL22V10B y no se como o con que esquema se puede programar.
alguien me podria ayudar?
Muchas gracias.


----------



## sandrobm75 (Jun 18, 2009)

[Hola, si me puedes ayudar, tengo una GAL que se me ha averiado, realiza una funcion dentro de una tarjeta muy compleja de una maquina enscadora HAVER. Entonces como tengo varias tarjetas, he diagnosticado y logre detectar q el q esta fallando es este PLD, entonces compre GAL nuevos, pero ahora lo q me hace falta es coger la PLD buena y leer el programa que lleva y luego grabarla en una nueva, me puedes decir con que equipo puedo leerla, te agradecere mucho el poder ayudarme, he estado leyendo el foro pero todos hablan para grabar pero no se si se podra leer tambien
Un saludo gracias.


----------



## zenerbo (Nov 13, 2009)

Hola a todos, si buscan el GALBlast verán que lo han modificado para armarlo con DAC basado en resistencias, funciona yo lo armé y lo probé, con una gal 16V8 para un trabajo de la U, pero ,¿alguien sábe de algun programador para las PALCE? son reprogramables y tengo algunas que las quiero usar, ya que la GAL no era mía, nos prestamos de un compañero de clase...


----------



## jeancarlo4892 (Feb 14, 2010)

Gatillero voy a montarlo a ver que sucese luego te digo los resultados.... aunque segun dice el circuito solo funciona para las GAL 16v8 y 20v8 nadie tendra uno universal seria de gran ayuda


----------



## Lagart (Abr 21, 2010)

hola pues yo apenas estoy empesando a programar con gal y todavia no le entiendo muy
bien si pudieran mandarme archivos jed para una gal 16v8 se los agrdeceria mucho o una
pagina donde pueda encontrarlos de antemano mchas grcias


----------



## israel200 (Jun 1, 2010)

Por fabor alguien podría tener el programa ABEL HDL, necesito específicamente ese programita.


----------



## minssss (Sep 17, 2011)

aqui estan los links 

http://www.armory.com/~rstevew/Public/Pgmrs/GAL/_ClikMe1st.htm

http://elm-chan.org/works/pgal/report_e.html

el problema es que no hay nada que nos diga si funciona... 

tambien estoy buscando un programador de gal


----------



## bondadoso (Oct 13, 2011)

tengo una duda puedo programarle a un gal 16v8 un contador de 0-999 hecho con tres 7490?
osea programarle los flip flops??

esqe soy nuevo con los gal,


----------



## luxen (Nov 5, 2011)

pueden hacer un programador de gal ustedes mismos, sobre un protoboard, sino busquen por internet venden unos programadores usb (van a la pc) con todo y su software, ademas de programarles el gal les programan muchos mas integrados, memorias eeprom micros etc, suerte.



gzaloprgm dijo:


> Acá te paso un contador sencillo de 4 bits que basicamente usa las macroceldas de salida de una gal16v8 como flip flops d. Con una circuito externo podrias adaptarlo a 7seg (no te dan las salidas sino    (4 + 7))
> 
> Name     4BITCounter ;
> PartNo   00 ;
> ...



oye amigo como sacaste esas ecuaciones? con mapas k, con lasos o con algun programa, por que yo las saque y me dieron unas mas reducidas pero no me funcionaron por completo.


----------



## gonzalocg (Dic 25, 2011)

Hola, he leído todo el post, sin embargo me he fijado que han proporcionado información acerca de la programación y grabación de dispositivos gal, sin embargo, hay varios usuarios que han preguntado por los dispositivos PALCE, estos son reprogramables, y los programadores que han sugeridos no los soportan...

Es por ello que llamo a cualquier persona que sepa del tema, específicamente de PALCE, indicando principalmente algún programador, mi investigación sobre los dispositivos PALCE no es muy extensa, pero seguiré buscando, ya que quisiera aprovechar la enorme facilidad que ofrece para reducir un circuito de n chips a un circuito de n/n, que es 1, es decir, un solo chip.

Gracias de antemano, y por la fecha en la que escribo esto, ¡¡¡feliz navidad¡¡¡


----------



## KIKIRIBU (Ene 26, 2012)

Hola buenos dias quisiera ver si me puden pasar un link o el archivo donde venga como realizar el programador de la gal lo necesito para la gal22v10 ya que necesesito realizar algunos proyectosmuchas gracia y buen dia.


----------



## d986341369 (Jun 19, 2012)

Hola este es un contador de 0 a 9 lo paso al proteus y el display ni se mueve :S espero me ayuden he echo mi tabla de verda hasta 1000 y de ahi hacia abajo le puse x sta bien eso?? 

Name     contador ;
PartNo   00 ;
Date     19/06/2012 ;
Revision 01 ;
Designer Engineer ;
Company  dieqo ;
Assembly None ;
Location marte ;
Device   g22v10 ;

/* *************** INPUT PINS *********************/
PIN   1  =  clk  ; /*                                 */ 
PIN   2  =  Q3                       ; /*                                 */ 
PIN   3  =  Q2                       ; /*                                 */ 
PIN   4  =  Q1                       ; /*                                 */ 
PIN   5  =  Q0                       ; /*                                 */ 

/* *************** OUTPUT PINS *********************/
PIN   14  = a                        ; /*                                 */ 
PIN   15  = b                        ; /*                                 */ 
PIN   16  = c                        ; /*                                 */ 
PIN   17  = d                        ; /*                                 */ 
PIN   18  = e                        ; /*                                 */ 
PIN   19  = f                        ; /*                                 */ 
PIN   20  = g                        ; /*                                 */ 


a = ((Q2)&(!Q1)&(Q0))#((!Q3)&(!Q2)&(!Q1)&(!Q0))#((Q1)&(Q0)&(!Q2)) ;

b = (!Q1)&(Q2) ;

c = ((!Q1)&(Q0)&(Q2)) ;

d = ((Q1)&(Q0)&(!Q2))#((Q1)&(!Q0)&(Q2))#((!Q0)&(!Q1)&(!Q2)&(!Q3)) ;

e = (!Q0)#((Q1)&(!Q2)&(!Q3))#(Q3) ;

f = ((Q1)&(!Q0))#((!Q3)&(!Q2)&(!Q1))#((!Q1)&(Q0)&(!Q2)) ; 

g = ((Q1)&(!Q0))#((!Q0)&(!Q1)&(!Q2)&(Q3)) ;


----------



## BKAR (Jun 20, 2012)

has echo tu tabla de verdad hasta 1000??!!!
como saber si esta bien...explicate un poco mejor

pásate pro el siguiente tema:
https://www.forosdeelectronica.com/f25/maquinas-estado-wincupl-33367/

....y este tema no va referido a tu duda


----------



## d986341369 (Jun 20, 2012)

Mi duda es el clock. en el datasheet dice es la pata 1 g22v10 debo declararlo?? a la hora de programar porque si me confuni en la reduccion deberia al menos parpadear el display n?


----------



## molitronica (Oct 2, 2012)

Hola a todos, soy nuevo en el foro, les pregunto: tengo que hacer con un gal 16v8 un divisor de frecuencia por 10, mi idea era recrear un 7490 configurado como divisor por 10 es decir usar 4 flip flops jk , se puede hacer? les pido ayuda porque no encuentro tutoriales ni ejemplos que me ayude con el tema secuencial.  
Saludos y muchas gracias.


----------



## chclau (Oct 2, 2012)

Ese GAL no tiene FF de tipo JK, si no me equivoco, e igual te recomiendo que hagas un diseño con flip flops D (en el que todos los FF reciben una señal de clock comun), es muy facil de hacer, simplemente un contador para dividir por cinco y un ultimo FF para dividir por dos y obtener una salida simetrica.


----------



## molitronica (Oct 3, 2012)

Hola chclau, gracias por responder, voy a intentar hacerlo, cualquier cosa te pregunto.
Saludos.


----------



## molitronica (Oct 14, 2012)

Hola chclau, podes ayudarme con el divisor por 5 con FF tipo D porque no se como hacerlo.

Saludos y gracias.


----------



## chclau (Oct 15, 2012)

Un contador de 0 a 4, que sacara un pulso a la salida solamente cuando esta en cero. Que frecuencia tendria esa señal?


----------

