PLD

May 19, 2007 2 Replies
Jump to replies (2)

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