ELEMANIA
Digitale - Un contatore di numeri primi
Contatore di numeri primi

Affrontiamo ora il problema di progettare un contatore a 3 bit che produca in uscita la sequenza dei numeri primi. Supponiamo anche che il primo valore sia 000 (anche se non è a rigori un numero primo). La sequenza di conteggio può dunque essere rappresentata nel seguente modo:

Diagramma di stato contatore

Questo grafico viene detto diagramma degli stati (state diagram) del contatore (qualche volta viene anche usato il brutto termine pallogramma). La sua interpretazione è semplice: all'interno di ogni cerchio è indicato un valore prodotto dal contatore (si dice uno stato) e le frecce indicano le transizioni da uno stato al successivo.

Possiamo anche rappresentare le transizioni di stato mediante una tabella delle transizioni, nel seguente modo:

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 0 0

Si noti che la tabella delle transizioni assomiglia a una tabella di verità, ma ci sono alcune importanti differenze:

 

Realizzazione hardware del contatore con FF T

Per realizzare il nostro contatore abbiamo bisogno di tanti flip flop quanti sono i bit di stato del contatore stesso: dunque in questo caso ci servono 3 flip flop. Possiamo usare flip flop D o flip flop T.

Scegliamo di usare tre flip flop di tipo T e di realizzare un contatore sincrono. L'architettura hardware di base sarà dunque la seguente:

 

Architettura HW contatore

Si noti che non abbiamo ancora progettato la rete di comando degli ingressi T dei tre FF.

A tale scopo, osservando la tabella delle transizioni oppure il diagramma degli stati, supponiamo per esempio di trovarci nello stato iniziale 000. Lo stato successivo deve essere 010. Ciò significa che Q2 e Q0 non devono commutare, mentre Q1 deve commutare. Dunque, in base al funzionamento del FF T abbiamo

T0 = 0    T1 = 1    T2 = 0

Procedendo nello stesso modo ad analizzare le transizioni negli stati successivi, possiamo compilare la seguente tabella di verità:

Stato Input FF
Q2 Q1 Q0 T2 T1 T0
0 0 0 0 1 0
0 0 1 x x x
0 1 0 0 0 1
0 1 1 1 1 0
1 0 0 x x x
1 0 1 0 1 0
1 1 0 x x x
1 1 1 1 1 1

Le x indicano condizioni di indifferenza, in corrispondenza di quegli stati che il nostro contatore non può produrre.

Questa è una vera tabella di verità, che può essere sintetizzata nel seguente modo:

T0 = (Q2 + Q0).Q1

T1 = Q1 + Q0

T2 = Q1.Q0

La realizzazione circuitale è mostrata in figura:

Contatore numeri primi con FF T

 

Realizzazione hardware del contatore con FF D

Possiamo realizzare il nostro contatore anche usando FF D. In questo caso, siccome all'arrivo del fronte di clock ogni FF D copia il valore presente sull'ingresso D, la tabella di verità è molto simile alla tabella delle transizioni:

Stato Uscite
Q2 Q1 Q0 D2 D1 D0
0 0 0 0 1 0
0 0 1 x x x
0 1 0 0 1 1
0 1 1 1 0 1
1 0 0 x x x
1 0 1 1 1 1
1 1 0 x x x
1 1 1 0 0 0

Sintetizzando le tre uscite abbiamo:

D0 = Q2 Q1

D1 = Q1 + Q0

D2 = (Q2 + Q1).Q0

La realizzazione circuitale del contatore è mostrata qui sotto:

 

Uno schema generale per un contatore a sequenza qualsiasi

Generalizzando un attimo rispetto al contatore del nostro esempio, possiamo affermare che un contatore con una sequenza di stati qualsiasi può in generale essere realizzato secondo il seguente schema di principio:

 

 

precedente - successiva

Sito realizzato in base al template offerto da

http://www.graphixmania.it