ELEMANIA
Digitale - Altre versioni del contatore
Contatore di numeri primi - seconda versione

Riprendiamo ora in esame il contatore di numeri primi visto nella precedente lezione introducendo una lieve modifica. Siccome il numero zero (000) non è primo, vogliamo eliminare questo stato dal nostro diagramma degli stati, che diventa dunque il seguente:

Il problema di questo diagramma degli stati è che, non comprendendo lo stato iniziale 000, quando si azzera il contatore (per esempio al momento dell'accensione) il suo comportamento risulta imprevedibile. Una versione probabilmente migliore sarebbe la seguente:

In questo caso, partendo dallo stato 000, il contatore si porta automaticamente nello stato 010, dopodiché la sequenza ciclica di conteggio procede correttamente.

La corrispondente tabella delle transizioni è la seguente:

Stato precedente Stato successivo
Q2 Q1 Q0 Q2' Q1' Q0'
0 0 0 0 1 0
0 1 0 0 1 1
0 1 1 1 0 1
1 0 1 1 1 1
1 1 1 0 1 0

Si noti che è praticamente identica a quella vista nella lezione precedente, salvo che lo stato 111 conduce direttamente allo stato 010. Si lascia come esercizio al lettore il problema di realizzare questo contatore con FF D o T.

 

Contatore di numeri primi - terza versione

Possiamo però affrontare il progetto del nostro contatore in un modo completamente diverso. Osserviamo infatti che, avendo eliminando lo stato 000, gli stati validi del contatore sono 4: 010, 011, 101, 111.

Per realizzare un contatore modulo 4 (cioè che percorra ciclicamente 4 stati) non sono necessari 3 flip-flop, ma ne bastano solo due (22 = 4), come nello schema qui sotto:

Si tratta di un semplicissimo contatore sincrono modulo 4 realizzato con due FF T. Il problema di questo contatore è che il suo diagramma degli stati non corrisponde a quello che vorremmo ottenere. Infatti in questo caso abbiamo:

Possiamo però trasformare le uscite Q1 e Q0 del contatore in tre nuove uscite U2, U1 e U0 che seguono la corretta sequenza, nel modo mostrato dalla seguente tabella di verità:

Uscita contatore Nuove uscite
Q1 Q0 U2 U1 U0
0 0 0 1 0
0 1 0 1 1
1 0 1 0 1
1 1 1 1 1

Si tratta in sostanza di progettare una semplice rete combinatoria (cioè un circuito formato da sole porte logiche elementari) che produce le nuove uscite del contatore a partire dai suoi stati "normali":

Il progetto di questa rete non presenta particolari difficoltà (per esempio U2 = Q1, come si vede facilmente dalla tabella di verità) e ne lasciamo lo sviluppo al lettore.

Il diagramma degli stati del nostro contatore include anche i valori prodotti in uscita:

La notazione utilizzata è abbastanza semplice: all'interno di ogni cerchio è indicato (in nero) il valore dello stato in binario e (in rosso) il valore dell'uscita prodotta in corrispondenza di quello stato:

La assegnazione degli stati è arbitraria

Si noti che non vi è alcuna corrispondenza obbligatoria fra il valore dello stato e l'uscita prodotta. Gli stati sono semplicemente una sequenza numerica da 00 a 11, mentre le uscite vengono calcolate in base al valore dello stato corrente.

Nulla vieterebbe di cambiare le associazioni, per esempio producendo l'uscita 111 in corrispondenza dello stato 00, l'uscita 010 in corrispondenza di 01 e così via. Possiamo dunque dire che la numerazione della sequenza degli stati è arbitraria e non deve necessariamente corrispondere ai valori prodotti in uscita.

Tuttavia assegnando diversamente la sequenza numerica degli stati, si possono ottenere reti combinatorie per il calcolo delle uscite di differente complessità e il problema di trovare qual è la scelta degli stati che produce la rete combinatoria minima non è affatto semplice o banale. Senza voler qui approfondire ulteriormente l'argomento, ci sono programmi per computer che effettuano i calcoli e aiutano il progettista nello scegliere l'assegnazione degli stati migliore.

A questo punto possiamo generalizzare lo schema di un contatore a sequenza qualsiasi tenendo conto della possibilità di generare le uscite a partire dallo stato del contatore. Lo schema generale è dunque il seguente:

Nell'esempio precedente la rete combinatoria per il calcolo dello stato è molto semplice, essendo costituita da soli collegamenti diretti fra l'uscita del primo FF e l'ingresso del secondo, ma in generale può naturalmente essere molto più complessa.

 

precedente - successiva

Sito realizzato in base al template offerto da

http://www.graphixmania.it