|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Sep 2005
Messaggi: 1110
|
[WinCUPL] Contatore mod.4 per una GAL - non tornano i conti
Ciao a tutti boys ho qualche problemino a programmare una gal per implementare uno stupidissimo contatore mod.4.
Semplicemente il problema è che non funziona niente e non so il perchè.. Questo è il COMPLESSISSIMO pezzo di codice che ho scritto e sotto c'è il risultato della simulazione che è completamente sballato: ------------------------------------------------------------------------ Name cnt4 ; PartNo 01 ; Date 27/04/2008 ; Revision 01 ; Designer Davide ; Company Me ; Assembly None ; Location None ; Device g22v10 ; /* *************** INPUT PINS *********************/ PIN [1..3] = [clk, res, pres]; /* *************** OUTPUT PINS *********************/ pin [14, 15] = [q1..2]; $define s0 'b'00 $define s1 'b'01 $define s2 'b'10 $define s3 'b'11 field cnt4 = [q1..2]; cnt4.ar = res ; cnt4.sp = pres ; sequenced cnt4 { present s0 next s1; present s1 next s2; present s2 next s3; present s3 next s0; } ------------------------------------------------------------------------ Simulazione: (completamente sballata res e pres sono reset e preset, q1 e q2 sono le uscite del contatore.Questo sotto è invece un contatore mod.16 scritto dal mio prof che si differenzia solo per il modulo e per la funzione OUT al cambiamento di stato: ------------------------------------------------------------------------ Name cntmod16 ; PartNo 01 ; Date 24/10/01 ; Revision 01 ; Designer pimg ; Company blaisepascal ; /* quando pres e res sono attivi alti prevale res 1 reset fisico */ Assembly None ; Location none ; Device g22v10 ; /* dichiarazione degli ingressi */ pin [1..3] = [clk,res,pres] ; /* dichiarazione delle uscite */ pin [14..17,18] = [q0..3,contando] ; field conta16 = [q0..3]; conta16.ar = res ; conta16.sp = pres ; /*definire in ordine sx-dx q3-q2-q1-q0 */ $define stato0 'h'0 /* anche 'b'0000 */ $define stato1 'h'1 /* anche 'b'0001 */ $define stato2 'h'2 /* anche 'b'0010 */ $define stato3 'h'3 /* anche 'b'0011 */ $define stato4 'h'4 /* anche 'b'0100 */ $define stato5 'h'5 /* anche 'b'0101 */ $define stato6 'h'6 /* anche 'b'0110 */ $define stato7 'h'7 /* anche 'b'0111 */ $define stato8 'h'8 /* anche 'b'1000 */ $define stato9 'h'9 /* anche 'b'1001 */ $define stato10 'h'A /* anche 'b'1010 */ $define stato11 'h'B /* anche 'b'1011 */ $define stato12 'h'C /* anche 'b'1100 */ $define stato13 'h'D /* anche 'b'1101 */ $define stato14 'h'E /* anche 'b'1110 */ $define stato15 'h'F /* anche 'b'1111 */ /* gli stati non possono essere identici */ sequenced conta16 { present stato0 next stato1 out contando ; present stato1 next stato2 out contando ; present stato2 next stato3 out contando ; present stato3 next stato4 out contando ; present stato4 next stato5 out contando ; present stato5 next stato6 out contando ; present stato6 next stato7 out contando ; present stato7 next stato8 out contando ; present stato8 next stato9 out contando ; present stato9 next stato10 out contando ; present stato10 next stato11 out contando ; present stato11 next stato12 out contando ; present stato12 next stato13 out contando ; present stato13 next stato14 out contando ; present stato14 next stato15 out contando ; present stato15 next stato0 out contando ; } contando.ar = res ; contando.sp = pres ; ------------------------------------------------------------------------ la sua simulazione: (completamente corretta ![]() Non riesco proprio a capire perchè questo stupido contatore non sa contare fino a 3!!!!
__________________
Sto compilando una lista di VPS a basso costo parametrica e ricercabile. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Sep 2005
Messaggi: 1110
|
Allora raga, grazie al vostro insostituibile aiuto
, ho risolto tutto.Il problema è che un campo di variabili dedicate a contenere i vari bit di una stessa parola deve essere numerato a partire da 0 , e non da 1 , percui le istruzioni ----------------------------------------------------------------- * *************** OUTPUT PINS *********************/ pin [14, 15] = [q1..2]; $define s0 'b'00 $define s1 'b'01 $define s2 'b'10 $define s3 'b'11 field cnt4 = [q1..2]; ----------------------------------------------------------------- diventano ----------------------------------------------------------------- /* *************** OUTPUT PINS *********************/ pin [14, 15] = [q0..1]; $define s0 'b'00 $define s1 'b'01 $define s2 'b'10 $define s3 'b'11 field cnt4 = [q0..1]; ----------------------------------------------------------------- e così tutto funziona ...
__________________
Sto compilando una lista di VPS a basso costo parametrica e ricercabile. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:07.













, ho risolto tutto.
...








