Haz una pregunta
  Foros de Electrónica » Diseño digital » Circuitos lógicos combinacionales y secuenciales
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

22/03/2010 #1

Avatar de jaimepsantos

Maquinas de estado en WINCUPL
Hola a todos!!

Quisiera saber como implementar una maquina de estados en un GAL22V10 tengo el wincupl de atmel esta constaria de 1 bit de control (ascendente y descendente) y 4 estados de 4 bits cada uno

Es lo q llevo

Código:
Name     MACH_STATE ;
PartNo   00 ;
Date     21/03/2010 ;
Revision 01 ;
Designer Engineer ;
Company  ceti ;
Assembly None ;
Location  ;
Device   g22v10 ;

/* *************** INPUT PINS *********************/
PIN   1  = CLK                        ; /*                                 */ 
PIN   2  = AD                         ; /*                                 */ 


/* *************** OUTPUT PINS *********************/
PIN  20   =         S0                ; /*                                 */ 
PIN  21   =         S1                ; /*                                 */ 
PIN  22   =         S2                ; /*                                 */ 
PIN  23   =         S3                ; /*                                 */ 

....
25/03/2010 #2

Avatar de Elvic

Respuesta: Maquinas de estado en WINCUPL
saludos lo primero que deberás hacer es, crear las ecuaciones que describen la maquina de estados, lo básico con compuertas , o flip flop's y si requieres simplificar puedes usar mapas de Karnaugh o algún otro método, es decir, necesitas esa ecuación y la escribes y debería funcionar esa es la parte clave

aunque si ya las tiene solo es cuestión de implementarlas..

solo algo de trabajo, pero ya cuentas con las entrada y salidas del sistema y eso ya es algo significativo.

PD: recién comienzo a aprender un poco de estos dispositivos.

suerte.
25/03/2010 #3

Avatar de jaimepsantos

Respuesta: Maquinas de estado en WINCUPL
Gracias Elvic, pero es lo que me quiero ahorrar, existe una manera de hacerla con if, next, entre otras funciones. Solo pongo los estados con condicionantes pero no encontre en ningun lado un ejemplo que me explicara realmente como hacerlo.

=/
29/03/2010 #4

Avatar de jaimepsantos

Respuesta: Maquinas de estado en WINCUPL
Muchas gracias por la ayuda pero ya consegui por otros medios como lograrlo


Aqui les dejo la maquina que ocupe para el control de motores a pasos.

Código:
Name     FULL_STEP ;
PartNo   00 ;
Date     23/03/2010 ;
Revision 01 ;
Designer Jaime ;
Company  CETI ;
Assembly None ;
Location  ;
Device   g22v10 ;


/* *************** INPUT PINS *********************/
PIN   1  = CLK                        ; /*                                 */ 
PIN   2  = AD                         ; /*        ASCENCENTE                         */ 

/* *************** OUTPUT PINS *********************/
PIN  20   =         S0                ; /*   bobina 1                              */ 
PIN  21   =         S1                ; /*   bobina 1                              */ 
PIN  22   =         S2                ; /*   bobina 2                              */ 
PIN  23   =         S3                ; /*   bobina 2                              */ 

field maquina=[S0,S1,S2,S3];

$define SA 'b' 0000
$define S0 'b' 0101
$define S1 'b' 1001
$define S2 'b' 1010
$define S3 'b' 0110

sequence maquina{
present SA
next S0;
present S0
if AD  next S1;
if !AD next S3;
present S1
if AD  next S2;
if !AD next S0; 
present S2 
if AD  next S3;
if !AD next S1;
present S3 
if AD  next S0;
if !AD next S2;
}
30/03/2010 #5

Avatar de betodj

Respuesta: Maquinas de estado en WINCUPL
El facil lenguaje de programacion del Wincup, es la ventaja sobre otros como el ABEL ,VHDL, pero cada quien se acomoda a lo que ha trabajado.
Amigo jaimepsantos ¿puedes subir informacion grafica, tabla de verdad,diagrama de estados, objetivo, etc. de tu proyecto?. Ya que me interesa a fin de reforzar algunos conocimientos sobre PLD`s hacerlos como practica en mi universidad.
Recibe un saludo y felicidades por encontrar solucion a tu problema.
31/03/2010 #6

Avatar de jaimepsantos

Respuesta: Maquinas de estado en WINCUPL
Que tal beto DJ aqui te incluyo alguna informacion sobre el proyecto:

Trata de un control sencillo de un motor a paso donde con un bit este gira hacia un lado o hacia otro (AD) cambiando la secuencia, el programa consiste en la maquina de estado que se programa en un GAL22V10 de Latice.

El objetivo es sencillo lograr el control de un motor a paso mediante una maquina de estado.

La maquina se inicializa en cero para que comienze a funcionar despues de esto solo interviene el bit de control y la secuencia es ciclica.


Imágenes Adjuntas
Tipo de Archivo: png SIM_FULLSTEP.PNG (25,4 KB (Kilobytes), 228 visitas)
Archivos Adjuntos
Tipo de Archivo: rar FULL STEP.rar (4,0 KB (Kilobytes), 480 visitas)
31/03/2010 #7

Avatar de betodj

Respuesta: Maquinas de estado en WINCUPL
Gracias amigo jaimepsantos por compartir tu informacion con el foro.
31/03/2010 #8

Avatar de Elvic

Respuesta: Maquinas de estado en WINCUPL
saludos

muy bien, que bueno que hayas solucionado el problema que tenias con la programación de la maquina de estados.

ya que no te puede ayudar en mucho....

me he puesto a simular tu código en el proteus y si realmente si funciona, tal como lo comentas.

bien les dejo una captura de pantalla tu codigo simulado y por supuesto el archivo creado en proteus... para que puedan ver..

y por supuesto la imagen no hay manera de ver la dirección de giro, pero he puesto las dos condiciones en el pin2.

suerte
Imágenes Adjuntas
Tipo de Archivo: jpg maquina.JPG (40,9 KB (Kilobytes), 303 visitas)
Archivos Adjuntos
Tipo de Archivo: rar FULL STEP.rar (18,9 KB (Kilobytes), 317 visitas)
12/04/2010 #9

Avatar de Earl

Respuesta: Maquinas de estado en WINCUPL
No habia visto el tema, yo les muestro mis tres máquinas de estado para control de motores a pasos en distintas configuraciones con bit de control de giro y bit de control para avanzar o mantenerse fijo.

Código:
Name     FULL_STEP ;
PartNo   00 ;
Date     06/04/2010 ;
Revision 01 ;
Designer EARL ;
Company  CETI Colomos ;
Assembly None ;
Location  ;
Device   G22V10 ;

/* *************** INPUT PINS *********************/
PIN   1  = CLK                        ; /*                                 */ 
PIN   2  = STOP                       ; /*                                 */ 
PIN   3  = AVANZA                     ; /*                                 */ 

/* *************** OUTPUT PINS *********************/
PIN  14   =         S0                ; /*                                 */ 
PIN  15   =         S1                ; /*                                 */ 
PIN  16   =         S2                ; /*                                 */ 
PIN  17   =         S3                ; /*                                 */ 


field cont=[S0,S1,S2,S3];

$define S0 'b'0000
$define S1 'b'0101
$define S2 'b'1001
$define S3 'b'1010
$define S4 'b'0110

sequence cont{
present S0 next S1;

present S1
if STOP&AVANZA next S1;
if STOP&!AVANZA next S1;
if !STOP&AVANZA next S2;
if !STOP&!AVANZA next S4;

present S2
if STOP&AVANZA next S2;
if STOP&!AVANZA next S2;
if !STOP&AVANZA next S3;
if !STOP&!AVANZA next S1;

present S3
if STOP&AVANZA next S3;
if STOP&!AVANZA next S3;
if !STOP&AVANZA next S4;
if !STOP&!AVANZA next S2;

present S4
if STOP&AVANZA next S4;
if STOP&!AVANZA next S4;
if !STOP&AVANZA next S1;
if !STOP&!AVANZA next S3;
}
Código:
Name     HALF_STEP ;
PartNo   00 ;
Date     06/04/2010 ;
Revision 01 ;
Designer EARL ;
Company  CETI Colomos ;
Assembly None ;
Location  ;
Device   G22V10 ;

/* *************** INPUT PINS *********************/
PIN   1  = CLK                        ; /*                                 */ 
PIN   2  = STOP                       ; /*                                 */ 
PIN   3  = AVANZA                     ; /*                                 */ 

/* *************** OUTPUT PINS *********************/
PIN  14   =         S0                ; /*                                 */ 
PIN  15   =         S1                ; /*                                 */ 
PIN  16   =         S2                ; /*                                 */ 
PIN  17   =         S3                ; /*                                 */ 

field cont=[S0,S1,S2,S3];

$define S0 'b'0000
$define S1 'b'1010
$define S2 'b'0010
$define S3 'b'0110
$define S4 'b'0100
$define S5 'b'0101
$define S6 'b'0001
$define S7 'b'1001
$define S8 'b'1000

sequence cont{
present S0 next S1;

present S1
if STOP&AVANZA next S1;
if STOP&!AVANZA next S1;
if !STOP&AVANZA next S2;
if !STOP&!AVANZA next S8;

present S2
if STOP&AVANZA next S2;
if STOP&!AVANZA next S2;
if !STOP&AVANZA next S3;
if !STOP&!AVANZA next S1;

present S3
if STOP&AVANZA next S3;
if STOP&!AVANZA next S3;
if !STOP&AVANZA next S4;
if !STOP&!AVANZA next S2;

present S4
if STOP&AVANZA next S4;
if STOP&!AVANZA next S4;
if !STOP&AVANZA next S1;
if !STOP&!AVANZA next S3;

present S5
if STOP&AVANZA next S5;
if STOP&!AVANZA next S5;
if !STOP&AVANZA next S6;
if !STOP&!AVANZA next S4;

present S6
if STOP&AVANZA next S6;
if STOP&!AVANZA next S6;
if !STOP&AVANZA next S5;
if !STOP&!AVANZA next S7;

present S7
if STOP&AVANZA next S7;
if STOP&!AVANZA next S7;
if !STOP&AVANZA next S8;
if !STOP&!AVANZA next S6;

present S8
if STOP&AVANZA next S8;
if STOP&!AVANZA next S8;
if !STOP&AVANZA next S7;
if !STOP&!AVANZA next S1;
}
Código:
Name     WAVE_STEP ;
PartNo   00 ;
Date     06/04/2010 ;
Revision 01 ;
Designer EARL ;
Company  CETI Colomos ;
Assembly None ;
Location  ;
Device   G22V10 ;

/* *************** INPUT PINS *********************/
PIN   1  = CLK                        ; /*                                 */ 
PIN   2  = STOP                       ; /*                                 */ 
PIN   3  = AVANZA                     ; /*                                 */ 

/* *************** OUTPUT PINS *********************/
PIN  14   =         S0                ; /*                                 */ 
PIN  15   =         S1                ; /*                                 */ 
PIN  16   =         S2                ; /*                                 */ 
PIN  17   =         S3                ; /*                                 */ 

field cont=[S0,S1,S2,S3];

$define S0 'b'0000
$define S1 'b'0001
$define S2 'b'1000
$define S3 'b'0100
$define S4 'b'0010

sequence cont{
present S0 next S1;

present S1
if STOP&AVANZA next S1;
if STOP&!AVANZA next S1;
if !STOP&AVANZA next S2;
if !STOP&!AVANZA next S4;

present S2
if STOP&AVANZA next S2;
if STOP&!AVANZA next S2;
if !STOP&AVANZA next S3;
if !STOP&!AVANZA next S1;

present S3
if STOP&AVANZA next S3;
if STOP&!AVANZA next S3;
if !STOP&AVANZA next S4;
if !STOP&!AVANZA next S2;

present S4
if STOP&AVANZA next S4;
if STOP&!AVANZA next S4;
if !STOP&AVANZA next S1;
if !STOP&!AVANZA next S3;
}
Espero sirvan de algo!
12/04/2010 #10

Avatar de jaimepsantos

Respuesta: Maquinas de estado en WINCUPL
Earl te digo que mas sencillo apagar el motor ponle el clock a una or + un uno o cero asi se mantiene el estado Y NO HAY TRANSICION
IN-------OUT
CLK--0--CLK
CLK--1---1
12/04/2010 #11

Avatar de Earl

Respuesta: Maquinas de estado en WINCUPL
Con esto me evito tener que cablear esa AND y es lo mismo en cuanto a funcionalidad. Pero buena opcion! (:
12/04/2010 #12

Avatar de jaimepsantos

Respuesta: Maquinas de estado en WINCUPL
Earl te digo que mas sencillo apagar el motor ponle el clock a una or
Earl dijo: Ver Mensaje
Con esto me evito tener que cablear esa AND y es lo mismo en cuando a funcionalidad. Pero buena opcion! (:
hahaha dije or no and pero igual sirve

12/04/2010 #13

Avatar de Earl

Respuesta: Maquinas de estado en WINCUPL
hahaha disculpa, quise decir la compuerta :P pero si funciona igual (:
13/04/2010 #14

Avatar de Hiroshi92

Respuesta: Maquinas de estado en WINCUPL
Jajajaja, muchas gracias earl y jaimepsantos mi práctica con motores a pasos funcionarion muy bien. gracias x el codigo...
13/04/2010 #15

Avatar de Earl

Respuesta: Maquinas de estado en WINCUPL
hahahah ¬¬' minimo cambiale nombre a las variables
15/04/2010 #16

Avatar de Hiroshi92

Respuesta: Maquinas de estado en WINCUPL
Aunque tuve un problemita, el motor a pasos solo giraba hacia un lado y hacia el otro no giraba bien, creo k se debe a la secuencia de las maquinas de estados en reversa, intentare arreglarlo y te aviso.Saludos¡¡
19/04/2010 #17

Avatar de jaimepsantos

Respuesta: Maquinas de estado en WINCUPL
Estas en lo correcto hiroshi92 (Polo, hahaha) la maquina tiene mal asignados los estados.
Checale bien.

Saludos!!!
23/04/2010 #18


Respuesta: Maquinas de estado en WINCUPL
hola pues aprovechando que saben mas sobre wincupl que yo (realmente no se casi nada) quize implentar las compuertas not,and,or etc en una gal22v10 pero no se si el programa que hice tenga un error de sintaxis, pero a la hora de compilarlo no me marca ningun error ni warnings, el problema viene cuando abro el archivo .jed en el software del programador que estoy usando pues dice que el archivo esta corrupto o que no lo reconoce, el programador que uso es el bk presision 848 y su software pg4uw si no mal recuerdo


Código:
Name     compuertas ;
PartNo   00 ;
Date     4/21/2010 ;
Revision 01 ;
Designer Engineer ;
Company  keko ;
Assembly None ;
Location  ;
Device   g22v10 ;

/* *************** INPUT PINS *********************/
PIN     1=a; /*                                 */ 
PIN     2=b; /*                                 */ 

/* *************** OUTPUT PINS *********************/
PIN     20=nota; /*                                 */ 
PIN     19=and; /*                                 */ 
PIN     18=nand; /*                                 */ 
PIN     17=or; /*                                 */ 
PIN     16=nor; /*                                 */ 
PIN     15=xor; /*                                 */ 
PIN     14=xnor; /*                                 */ 

nota=!a;
and=a&b;
nand=!(a&b);
or=a#b;
nor=!(a#b);
xor=a$b;
xnor=!(a$b);
12/07/2010 #19

Avatar de jaimepsantos

Respuesta: Maquinas de estado en WINCUPL
Que tal foro les dejo este decodificador binario a hexadecimal en siete segmentos, lo dejo por que no venden estos decos.

Código:
Name     BIN_TO_HEX ;
PartNo   00 ;
Date     28/05/2010 ;
Revision 01 ;
Designer Jaime ;
Company  CETI ;
Assembly None ;
Location  ;
Device   g16v8 ;

/* *************** INPUT PINS *********************/
PIN [1..4]    =    A, B, C, D         ; /*                                 */ 

/* *************** OUTPUT PINS *********************/
PIN  13   =       Sa                  ; /*                                 */ 
PIN  14   =       Sb                  ; /*                                 */ 
PIN  15   =       Sc                  ; /*                                 */ 
PIN  16   =       Sd                  ; /*                                 */ 
PIN  17   =       Se                  ; /*                                 */ 
PIN  18   =       Sf                  ; /*                                 */ 
PIN  19   =       Sg                  ; /*                                 */ 


Sa = !A&!B&!C&D#!A&B&!C&!D#A&B&!C&D#A&!B&C&D;
Sb = !A&B&!C&D#B&C&!D#A&B&!D#A&C&D;
Sc = !A&!B&C&!D#A&B&!D#A&B&C;
Sd = !A&!B&!C&D#!A&B&!C&!D#A&!B&C&!D#B&C&D;
Se = !B&!C&D#!A&B&!C#!A&D;
Sf = A&B&!C&D#!A&!B&D#!A&!B&C#!A&C&D;
Sg = !A&B&C&D#A&B&!C&!D#!A&!B&!C;
01/12/2010 #20


me pueden ayudar???
cuales son las casillas de las opciones del compilador que tengo que tener activadas para generar los .jed??


Gracias
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Buscar más temas sobre:
Lupa Circuitos lógicos combinacionales y secuenciales

Compuertas, flips flops, registros, PLDs, codificadores, contadores, multiplexores, ...

Cerrar
Foros de Electrónica » Diseño digital » Circuitos lógicos combinacionales y secuenciales

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.