Corso di microprogrammazione: i circuiti sequenziali

Bit

Bentornati al nostro corso di micro programmazione. Nella scorsa puntata abbiamo trattato brevemente i convertitori, cercando di restituire un quadro più o meno completo delle possibilità esistenti. Oggi però torniamo ad occuparci dei sistemi digitali per andare avanti ed analizzare i circuiti sequenziali. Cosa sono? Come funzionano? Perché sono diversi da quelli che abbiamo visto finora? Come sono fatti? Sono più o meno utili? A queste ed altre domande cercheremo di dare risposta oggi e nelle prossime puntate. Siete pronti?

Come prima cosa da fare, ora che riprendiamo il filo del discorso da dove lo avevamo interrotto, c’è da spiegare che cosa sono i sistemi digitali sequenziali, per quale motivo si chiamano così ed in quale modo sono da considerarsi un’alternativa rispetto a quelli di cui abbiamo parlato finora.
Tutti i sistemi di cui abbiamo discusso nei capitoli precedenti sono basati su porte con un certo numero di ingressi ed uno specificato numero di uscite. In particolare, l’uscita ad un determinato istante di tempo è il risultato di un’operazione avvenuta sui dati all’ingresso in un determinato istante di tempo, in particolare nello stesso istante di tempo. Un sistema di questo tipo prevede una risposta istantanea, ovvero il dato in uscita ci sarà effettivamente se sarà presente la giusta combinazione in ingresso. Questo qualifica i sistemi che abbiamo già visto come sistemi istantanei e pertanto privi di memoria.
Tuttavia noi sappiamo bene che nella programmazione la memoria è fondamentale visto che due sono le operazioni di cui abbiamo certamente sempre bisogno, ovvero il calcolo e la memorizzazione.
Molti sistemi digitali sono comandabili, peraltro, tramite impulsi di sincronizzazione (il cosiddetto clock), ovvero operano in sincronismo con un treno di impulsi di periodo assegnato.
Tanto per essere più chiari, ecco una figura che lo spiega meglio.

La larghezza dell’impulso è indicata con “t” e viene assunta molto piccola rispetto al modulo del periodoT“. Come molti sapranno, questo vuol dire che la figura di merito che va sotto il nome di “duty-cycle” sarà piccola. Per chi non dovesse saperlo, quando parliamo di duty-cycle ci riferiamo al rapporto tra il tempo di “on”  della forma d’onda di clock rispetto (rapportato) all’intero periodo (durata); questa figura, ovviamente, varia tra 0 ed 1. Nell’esempio proposto il suo valore potrebbe essere 0.2 (ovvero il 20 %).
I valori binari presenti a ciascun “nodo” del sistema vengono assunti costanti all’interno di ciascun intervallo di tempo. Una transizione fra uno stato del sistema ed un altro può avvenire solo nel momento in cui sia applicato il segnale di clock. Se prima abbiamo definito quelli senza memoria come circuiti statici, per queste ragioni definiamo questi circuiti dinamici (evidentemente) con memoria.
Vale la pena di specificare, prima di andare avanti, che, nell’ambito dell’elettronica digitale, il modello più generale di circuito sequenziale è quello che risulta composto da un certo numero di ingressi (m) ed un dato numero di uscite (n). Se per ciascun istante di tempo il valore istantaneo delle uscite risulta determinato dai valori degli ingressi, il circuito è detto combinatorio e non dipende esplicitamente dalla variabile temporale. In questo caso, invece, senza l’applicazione di un segnale di clock non ci sarebbe uscita perché è nella scansione temporale che l’uscita viene (o meglio può essere) determinata.
Assumiamo di poter indicare con Q(n) il valore (0 o 1) di uscita di uno specifico nodo nell’n-simo intervallo temporale precedente il colpo di clock.
Definiamo Q(n+1) l’uscita nell’istante (ovvero corrispondente al colpo di clock) successivo. Poiché n vale quanto un numero naturale qualsiasi (finché il sistema continua a funzionare), si ottiene una n-upla ordinata di valori Q(1), Q(2), ……., Q(n) che rappresenta la sequenza temporale delle uscite.
Inoltre, il valore in un dato istante di tempo potrebbe anche dipendere da quello che riviene dallo stato precedente ed è per questo che il circuito sequenziale possiede memoria.
Anticipiamo a questo punto che il metodo più elementare, come vedremo tra poco, per memorizzare un dato è semplicemente quello di mettere in cascata dei sistemi che lo ripropongano uguale a se stesso un certo numero di volte.

Le informazioni, allora, devono essere memorizzate o registrate per poter essere, successivamente, utilizzate. L’elemento fondamentale, la cella di memoria principale, se vogliamo, per effettuare la memorizzazione è il flip-flop. Di questo tipo di dispositivi ne esistono diversi: S-R, J-K, D, T. Ciascuno di essi, come vedremo tra un attimo, propone funzionalità e tabelle di verità differenti. Una cosa che li contraddistingue e che li accomuna è proprio il concetto della temporizzazione, come vedremo.

Prima di continuare c’è la necessità di fare una precisazione specificando e inquadrando correttamente le nozioni di latch e flip-flop. Il Latch è un circuito elettronico ovviamente digitale bistabile, quindi caratterizzato da (almeno) due stati stabili. Grazie a questo, associando a ciascuno un bit, si riesce ad effettuare la memorizzazione nei sistemi a logica sequenziale asincrona. Il latch modifica lo stato logico proposto in uscita in base alle variazioni degli ingressi. Il flip-flop in questo è differente; esso si basa sempre sulla struttura del latch ma cambia lo stato logico unicamente nel caso in cui un segnale di clock arrivi nel periodo attivo.
Come dicevamo, esistono diversi tipi di flip-flop e per ciasuno ora ne proporremo la struttura ed una breve analisi.

Flip-Flop S-R

Nello spiegare come sono fatti e come funzionano questi dispositivi seguiremo uno schema logico che abbiamo già ampiamente utilizzato quando abbiamo parlato delle porte logiche e pertanto dimostriamo subito lo schema logico

S

R

Q

Q’

Descrizione

0

0

Nc

Nc

1

0

1

0

Set

0

1

0

1

Reset

1

1

Non utilizzata

Quando utilizziamo porte logiche come blocchi costitutivi di un sistema complesso la cosa più importante è tenere a mente che la configurazione base è quella di un SR latch. Le due lettere indicano le “situazioni” di Set e Reset.

Veniamo, adesso, ad una configurazione leggermente diversa che prende il nome di SR clocked.

In un sistema sequenziale si richiede di “settare” oppure di resettare un flip-flop in sincronia con il crocchio di sistema.

Questo si ottiene modificando, seppur leggermente, il circuito visto in precedenza; lo si può, infatti, suddividere in due sezioni ovvero la parte di destra, così come evidenziato, è un latch mentre quella di sinistra rappresenta la parte di controllo. Questa sezione prende, infatti, il nome di impostazione oppure control (o, come indicato in figura, steering).

Come si può facilmente notare, fin tanto che il clock rimane a zero il circuito è insensibile alle variazioni. Vale la pena anche di notare che ingressi che siano contemporaneamente 0 (oppure 1) non sono ammessi in questa configurazione.

Flip-Flop J-K

Questo secondo tipo di configurazione ha una differenza circuitale con il precedente piuttosto interessante perché essa elimina l’indeterminatezza nel caso in cui entrambi gli ingressi siano esattamente pari ad 1.

Come si vede chiaramente grazie alla figura, abbiamo un flip-flop S-R preceduto da sole 2 porte AND a 2 ingressi. Le equazioni che dobbiamo utilizzare in questo caso per comprendere il funzionamento della configurazione sono:

S=J’Q e R=KQ’

Il JK può essere, inoltre, ulteriormente implementato, magari in maniera anche più comoda, prevedendo l’aggiunta di due ingressi nello stadio latch con lo scopo di forzare le due possibilità di preset e clear.

L’equazione caratteristica è:

Q = K’Q + JQ’

e la relativa tabella della verità

J

K

Q

Q’

Descrizione

0

0

Q

Q’

Permanenza

0

1

0

1

Reset

1

0

1

0

Set

1

1

Q’

Q

Commutazione

Flip-Flop D

Si tratta del più utilizzato tra i flip-flop. Per descriverlo, la cosa più efficace e semplice da fare è spiegare il suo nome: “D” sta per delay, ovvero ritardo. Abbiamo detto, ma vale la pena di ribadire il concetto, che l’operazione più semplice da fare se si vuole memorizzare un dato è, per l’appunto, quella di ritardarlo o meglio di riproporlo in uscita un certo numero di volte da una catena più o meno lunga di sistemi grazie alla quale il dato, di fatto, permanga.
Quindi il bit presente all’ingresso viene riportato all’uscita di ciascuno stadio della catena (che può essere comunque lunga) dopo un colpo di clock. Ecco, quindi, spiegata la funzione ed il ruolo di questo flip-flop.

Sarà certamente più chiaro adesso per quale motivo questo tipo di flip-flop viene anche identificato dall’aggettivo “transparent”.

Flip-Flop T

Anche questo è un flip-flop che risulta da una particolare configurazione del J-K.  L’equazione caratteristica è:

Q = T’Q + TQ’

quindi l’operazione logica è un XOR tra T e Q.

T Qn Qn+1 Descrizione
0 0 0 hold
0 1 1 hold
1 0 1 commutazione
1 1 0 commutazione

Se l’input è alto, allora si ha il cambiamento di stato. Se, invece, l’ingresso ha  valore basso, allora il valore proposto in uscita sarà quello precedente. Questo comportamento è perfettamente descritto dall’operazione di XOR.

Tiriamo le somme

Con la presentazione, seppur breve, fatta quest’oggi abbiamo analizzato gli esponenti significativi della categoria dei circuiti e dei sistemi sequenziali. Le configurazioni che vedremo più avanti saranno utili per avere un’idea precisa di come si possano realizzare strumenti  e sistemi complessi anche basandosi su poche elementari operazioni.

 

Quello che hai appena letto è un Articolo Premium reso disponibile affinché potessi valutare la qualità dei nostri contenuti!

 

Gli Articoli Tecnici Premium sono infatti riservati agli abbonati e vengono raccolti mensilmente nella nostra rivista digitale EOS-Book in PDF, ePub e mobi.
volantino eos-book1
Vorresti accedere a tutti gli altri Articoli Premium e fare il download degli EOS-Book? Allora valuta la possibilità di sottoscrivere un abbonamento a partire da € 2,95!
Scopri di più

2 Comments

  1. Boris L. 6 aprile 2013
  2. Piero Boccadoro Piero Boccadoro 6 aprile 2013

Leave a Reply