PLD

May 19, 2007 2 Replies

Hola, estoy intentando implementar un controlador de keypad en un 22v10. El codigo PLD me compila bien con el WinCUPL de Atmel pero luego lo simulo en Proteus y la salida (output) ponga el nivel logico que ponga en las tres entradas de las columnas da 0 anque el registro de desplazamiento funciona correctamente... Gracias por adelantado, Jordi


El codigo es el siguiente: Name Teclado ; PartNo 00 ; Date 19/05/2007 ; Revision 01 ; Designer Engineer ; Company . ; Assembly None ; Location ; Device p22v10 ;


FIELD counter=[c0..3]; FIELD output = [o0..3];


/* *************** INPUT PINS *********************/ /*se introduce un 0 por las filas y si la tecla esta pulsada lo recibimos en la columna de la tecla pulsada */



/* Las columnas estan conectadas a nivel alto mediante resistencias PULLUP */ PIN 2 = e1 ; PIN 3 = e2; PIN 4 = e3;



/* *************** OUTPUT PINS *********************/ PIN [14..17] = [o0..3] ; /* El codigo de teclado decodificado */ PIN [18..21] = [c0..3] ; /* La salida del registro de desplazamiento */


counter.ar='b'0; counter.sp='b'0;



TABLE counter=> counter.D /*Desplazar el 0 hacia la derecha para escanear las teclas pulsadas */ { 'b'0000=>'b'0111; /*Inicializar el registro */ 'b'0111=>'b'1011; 'b'1011=>'b'1101; 'b'1101=>'b'1110; 'b'1110=>'b'0111; }



output.ar = 'b'0; /* Reset asincrono */ output.sp='b'0; /* Preset */



TABLE counter,e3,e2,e1=> output.D { /*Tabla de conversion */ 'b'0111011=>'b'0001; 'b'0111101=>'b'0010; 'b'0111110=>'b'0011;



'b'1011011=>'b'0100; 'b'1011101=>'b'0101; 'b'1011110=>'b'0110;



'b'1101011=>'b'0111; 'b'1101101=>'b'1000; 'b'1101110=>'b'1001;



'b'1110011=>'b'1100; /* asterisco */ 'b'1110101=>'b'0000; 'b'1110110=>'b'1101; /* almoadilla */ }



Me respondo a mi mismo. Por lo que he visto WinCupl no hace bien las tablas de verdad con mas de una variable, as=ED que he hecho las tablas de verdad en BOOLE-DEUSTO y he obtenido su equaci=F3n simplificada que luego he copiado y pegado. Ahora ya funciona.

Un saludo, Jorid

Me respondo a mi mismo. Por lo que he visto WinCupl no hace bien las tablas de verdad con mas de una variable, as=ED que he hecho las tablas de verdad en BOOLE-DEUSTO y he obtenido su equaci=F3n simplificada que luego he copiado y pegado. Ahora ya funciona.

Un saludo, Jordi

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required