EDAboard.com | EDAboard.eu | EDAboard.de | EDAboard.co.uk | RTV forum PL | NewsGroups PL

PLD

Nuevo Tema

elektroda.net NewsGroups Forum Index - Electronica ES - PLD

Jordi
Guest

Sat May 19, 2007 9:58 am   



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 */
}

Jordi
Guest

Sun May 20, 2007 7:40 pm   



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

Un saludo,
Jorid

Jordi
Guest

Sun May 20, 2007 7:41 pm   



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

Un saludo,
Jordi

elektroda.net NewsGroups Forum Index - Electronica ES - PLD

Nuevo Tema

Arabic versionBulgarian versionCatalan versionCzech versionDanish versionGerman versionGreek versionEnglish versionSpanish versionFinnish versionFrench versionHindi versionCroatian versionIndonesian versionItalian versionHebrew versionJapanese versionKorean versionLithuanian versionLatvian versionDutch versionNorwegian versionPolish versionPortuguese versionRomanian versionRussian versionSlovak versionSlovenian versionSerbian versionSwedish versionTagalog versionUkrainian versionVietnamese versionChinese version
RTV map EDAboard.com map News map EDAboard.eu map EDAboard.de map EDAboard.co.uk map Opony