Iniziamo definendo l'automa a stati finiti che descrive la
funzionalita' di blocco e sblocco tastiera descritta.
L'insieme degli output sara' {B, S}, dove B rappresenta il segnale
che provochera' il blocco della tastiera, mentre S rappresenta il segnale
in presenza del quale la tastiera e' sbloccata.
L'insieme degli input sara' costituito dalle possibili situazioni in cui
possono trovarsi i tasti "*" e "#":
(*,-) indica tasto * premuto e # non premuto
(-,#) indica tasto * non premuto e # premuto
(*,#) indica tasto * premuto e # premuto
(-,-) indica tasto * non premuto e # non premuto
L'insieme degli stati interni sara' {1, 2}, dove 1 e' lo stato in cui
la tastiera e' bloccata e 2 quello in cui la tastiera e' sbloccata.
Il diagramma degli stati sara' il seguente
Pur se a prima vista tale diagramma degli stati puo' risultare descrivere
correttamente il problema, ad un'analisi piu' attenta si puo' notare che
potrebbero insorgere dei problemi in situazioni particolari:
infatti, si supponga di avere il telefonino con la tastiera bloccata.
per sbloccarla, basta premere * e # contemporaneamente. Pero', se dopo
aver premuto * e # non si rilasciano nello stesso momento entrambi i tasti,
allora, pur se per brevi istanti (ma comunwue istanti
di lunghezza rilevante se confrontati con la durata del ciclo di clock che
sincronizza la nostra rete sequenziale) potremmo avere delle configurazioni
di ingresso alla rete non desiderate, durante il passaggio da tasti entrambi
premuti a tasti entrambi rilasciati.
Si potrebbero cio' avere le seguenti configurazioni
di ingresso:
- (*,#), (*,-), (-,-)
- (*,#), (-,#), (-,-)
Notare che nel secondo caso, si arriverebbe a bloccare nuovamente, senza volerlo,
la tastiera.
Cercate di modificare il diagramma degli stati in modo da risolvere il problema.
Se proprio non ci riuscite, provate a vedere la seguente possibile
soluzione.