HOME


una tavola della verità guida il funzionamento del Nutchip

La tavola degli stati

 

Tavole della verità

Ogni integrato logico, come ad esempio come le porte AND, OR, NAND e NOR, oppure i FLIP-FLOP, funziona obbedendo ad una tavola della verità prestabilita.  La tavola della verità riporta, sotto forma di zeri e di uno, tutti i valori che assumeranno le uscite in corrispondenza dei valori presenti agli ingressi.

 

TAVOLA DEL NAND
IN1 IN2 OUT
0 0 1
0 1 1
1 0 1
1 1 0


Ad esempio, la riga in giallo di questa tavola della verità del NAND ci dice che:

La tavola della verità di solito elenca tutte le condizioni che si possono verificare: entrambi gli ingressi a uno, entrambi gli ingressi a zero, il primo ingresso a zero mentre il secondo è a uno e viceversa. Per ogni condizione la tavola ci indica quale sarà l'effetto sulle uscite dell'integrato, specificando se si disporranno a livello alto (1) oppure a livello basso (0).

 

Tavola degli stati = tavola della verità + stati

Le tavole della verità si prestano bene a descrivere il funzionamento della maggior parte dei circuiti logici, con piccole modifiche.
Gli stati sono una delle aggiunte più utili, e sono utilizzati anche dai flip-flop da tutti gli integrati logici di una certa complessità. Capita spesso infatti che la stessa condizione porti a risultati differenti a seconda dello stato in cui si trova un dispositivo. Ritroviamo gli stati in un grandissimo numero di automatismi della vita di tutti i giorni.
Ad esempio:

In un circuito a stati, il valore delle uscite non dipende soltanto dalle condizioni che si verificano sugli ingressi (come nel NAND), ma anche dallo stato in cui ci si trova in quel preciso istante. Quindi nello scrivere la tavola della verità di un interruttore, dovremo necessariamente inserire anche lo stato. La tavola della verità che otteniamo (detta più propriamente tavola degli stati) è la seguente:

TABELLA DELL'INTERRUTTORE
STATO (E USCITA) INGRESSO STATO SUCCESSIVO
SPENTO (USCITA= 0) PREMUTO ACCESO
NON PREMUTO SPENTO
ACCESO (USCITA=1) PREMUTO ACCESO
NON PREMUTO SPENTO


Notate che in questa tavola abbiamo scritto, fra parentesi, le uscite nella stessa casella dello stato. In gran parte dei casi pratici le uscite dipendono esclusivamente dallo stato in cui ci si trova, per cui è comodo scrivere assieme lo stato e le uscite. Se si deve cambiare una delle uscite, allora si cambia anche stato. Si può anche cambiare stato senza variare in alcun modo le uscite, infatti due stati diversi possono tranquillamente dare le stesse uscite. Un'altra peculiarità di questa tavola è l'introduzione della colonna che riporta lo stato successivo, cioè lo stato in cui ci troveremo non appena la condizione di ingresso si verificherà.

Esempio: il contatore è uno fra i tantissimi integrati che funzionano a stati. La stessa condizione di ingresso , rappresentata dall'arrivo di un impulso, otterrà un effetto diverso delle uscite a seconda dello stato del contatore. Il valore binario delle uscite dipenderà dal conteggio raggiunto dal contatore fino a quel momento. In altre parole, il conteggio è anche lo stato del contatore.  Per il contatore, così come accadeva per l'interruttore, è lo stato a determinare quali debbano essere le uscite a '0' a quali a '1'.

 

In un integrato a stati è importante sapere da quale stato cominciare. Un buon contatore deve iniziare a contare da zero, non da un numero scelto a caso! Lo stato iniziale, detto anche stato zero, è sempre indicato dal costruttore, oppure deve essere presente un piedino apposito che riporta forzatamente l'integrato allo stato zero.

 

La tavola di un Nutchip

Come accade per moltissimi integrati digitali, anche per i Nutchip lo stato determina le uscite: i Nutchips sono integrati a stati. I Nutchips hanno quattro uscite: le uscite cambiano solo se anche lo stato cambia, per cui accanto ad ogni stato indicheremo anche la rispettiva combinazione di uscite. Per ogni stato, c'è la massima libertà nello stabilire quali uscite debbano essere a 0 e quali a 1.

Ecco qui una tipica tabella di un Nutchip:

 

nut_table.gif (3274 byte)

 

Tipica tavola della verità di un Nutchip;  st00 è un'abbreviazione per 'stato 00', etc.
Si tratta di un timer per luci da giardino, luci azionabile da un interruttore o da telecomando.

Trascuriamo per il momento la colonna remote (che vedremo più avanti), e notiamo che abbiamo messo in evidenza le uscite utilizzando un'apposita colonna output1...4. E' in queste caselle che si mettono i valori che devono assumere le quattro uscite del Nutchip, stato per stato. Gli stati possono avere anche più di una condizione di ingresso (è il caso dello stato 0 del nostro esempio, che ne conta due), ma sempre e solo una combinazione di uscite. Le uscite non devono necessariamente cambiare fra uno stato e l'altro: nella tabella del nostro esempio l'uscita 1  va a zero nello stato 0,  e va a 1 negli stati 2 e 3. Le uscite 2, 3 e 4 invece non cambiano mai.

Rispetto alle tavole viste in precedenza, con i Nutchip possiamo anche inserire un trattino '-' quando non ci interessa specificare il valore di un ingresso. Il trattino '-' equivale alla X (don't care) che compare talvolta nella descrizione degli integrati commerciali. Un ingresso con il trattino è come che non esistesse e viene ignorato durante la valutazione della condizione.

La colonna remote si riferisce al telecomando:  è un ingresso a tutti gli effetti, che invece di '0' o '1' può assumere i valori key1, key2, key3, key4, key5 e key6 corrispondenti ai 6 tasti del telecomando. Inserendo i trattini '---' il telecomando viene ignorato. Maggiori dettagli sui telecomandi: cliccare qui.

I Nutchip contengono anche un preciso temporizzatore: per utilizzarlo lo inseriamo nella tavola sotto forma di timeout. Il timeout è una condizione che si verifica quando è passato il tempo caricato nel temporizzatore. Lo stato st01 del nostro esempio è un timeout che si verifica dopo un minuto. Maggiori dettagli sui timeout: cliccare qui.

 

Come si legge la tavola

Gli stati sono separati da una linea orizzontale, quindi questa tavola conta tre stati: st00, st01, st02.
Ogni riga della tabella contiene una condizione. Quindi nel nostro caso lo stato st00 ha 2 condizioni, mentre st01 e st02 contengono una sola condizione.
All'inizio ci si trova nello stato st00. Le uscite cambiano in base allo stato. Si analizzano le sole condizioni dello stato in cui ci si trova: se una condizione si verifica*, ci si porta sullo stato indicato nell'ultima colonna (next).

Nota: (*)Può capitare che due o più condizioni si avverino nello stesso momento: in tal caso si passa allo stato indicato da quella che viene per prima sulla tavola.

 

nut_table_1.gif (639 byte) nut_table_2.gif (829 byte) nut_table_3.gif (743 byte) nut_table_4.gif (650 byte) nut_table_5.gif (689 byte)
  • La prima colonna riporta il numero dello stato, esempio st00, st01, st02, st03, st04, etc.
    Si parte sempre da zero.

 

  • Subito dopo lo stato c'è il valore assunto dalle uscite OUT1, OUT2, OUT3 e OUT4 quando ci  si trova in quello stato.
    Per ogni stato si inserisce una sola combinazione di valori.

 

  • La terza colonna, assieme alla successiva, forma la condizione che si deve verificare per effetuare un cambiamento di stato.
    Qui si specifica il valore necessario sugli ingressi IN1, IN2, IN3 e IN4 perchè la condizione sia soddisfatta.
    Ogni ingresso può essere a '0' (massa), '1' (positivo) o '-' (indifferente, l'ingresso viene ignorato)
    Per ogni stato si possono inserire tutte le condizioni che si vuole; le condizioni si inseriscono cliccando l'apposito bottone.
  • In alternativa può comparire la scritta "timeout", nel qual caso la condizione si verifica allo scadere del tempo indicato, qualunque sia il valore degli ingressi e/o del telecomando.
    Si può inserire un solo timeout per ogni stato, cliccando sull'apposito bottone.

 

  • La quarta colonna specifica uno dei 6 pulsanti del telecomando. I pulsanti sono indicati come key1 ... key6.
    La condizione si verifica quando il pulsante effettivamente premuto corrisponde a quello indicato nella casella.
    Questa colonna si può usare anche in combinazione con gli ingressi: altrimenti si impostano gli ingressi IN1...IN4 su "indifferente" ('- - - -')

 

  • L'ultima colonna indica lo stato successivo, ovvero lo stato in cui portarsi quando la condizione si verifica.
    Se nessuna condizione dovesse essere vera, si rimane nello stato in cui ci si trova.

 

 

Una tavola personalizzata

I Nutchip si differenziano dai circuiti integrati logici standard perchè la loro tabella della verità non è fissata in fabbrica: siete voi stessi a "caricare" al loro interno la vostra tavola personalizzata. Lo stesso Nutchip può fare mille cose differenti, a seconda della tavola che carichiamo al suo interno. Quando una tavola della verità non ci piace più, possiamo sempre ricaricare il Nutchip con una tavola nuova, che sostituirà automaticamente quella precedente.

Per permettervi di provare subito il vostro Nutchip appena acquistato, lo forniamo precaricato con una tavola che lo fa funzionare da lampeggiatore; basta collegare un LEd per avere la certezza che il vostro prototipo funziona. In più, se collegate anche un ricevitore ad infrarossi, la stessa tavola vi permette di controllare se il vostro telecomando è compatibile, bloccando il lampeggio ogni volta che riceve un impulso.

Per scrivere la nostra tavola utilizziamo un comune PC ed un software apposito, Nutstation. La memorizziamo poi nel chip usando una semplice interfaccia da collegare alla porta seriale del computer.  Una volta programmato, il Nutchip obbedirà fedelmente alla tavola della verità che gli abbiamo inserito sino a che non lo riprogrammeremo con una tavola diversa. Lo stesso chip si può riprogrammare migliaia di volte.

 

Avere un solo Nutchip è come avere un'intero campionario di integrati, e molto di più. Potremo realizzare anche quelle funzioni logiche che, non essendo standardizzate, richiedono tre o quattro integrati per essere realizzate. In più ogni NUTCHIP contiene, oltre alle porte logiche, anche un  decodificatore per telecomandi, un timer ed un comparatore analogico!