Algebre booleane e progetto logico dei calcolatori digitali/Circuiti di un calcolatore digitale (a)

Wikibooks, manuali e libri di testo liberi.
Jump to navigation Jump to search

Parte prima: Algebre booleane

1.1 IntroduzioneAlgebre booleane e progetto logico dei calcolatori digitali/Introduzione
1.2 Sistemi di numerazione, aritmetica binariaAlgebre booleane e progetto logico dei calcolatori digitali/Sistemi di numerazione, aritmetica binaria
1.3 CodiciAlgebre booleane e progetto logico dei calcolatori digitali/Codici
1.4 Teoria della commutazioneAlgebre booleane e progetto logico dei calcolatori digitali/Teoria della commutazione
1.5 Algebra delle classi - Algebra della logicaAlgebre booleane e progetto logico dei calcolatori digitali/Algebra delle classi - Algebra della logica
1.6 Algebre booleaneAlgebre booleane e progetto logico dei calcolatori digitali/Algebre booleane
1.7 Funzioni booleaneAlgebre booleane e progetto logico dei calcolatori digitali/Funzioni booleane
1.8 Rappresentazione geometrica delle funzioni booleane e loro minimizzazioneAlgebre booleane e progetto logico dei calcolatori digitali/Rappresentazione geometrica delle funzioni booleane e loro minimizzazione

Parte seconda: Circuiti logici e calcolatori digitali

2.1 Circuiti logici e di memoriaAlgebre booleane e progetto logico dei calcolatori digitali/Circuiti logici e di memoria
2.2 Circuiti di un calcolatore digitale (a)Algebre booleane e progetto logico dei calcolatori digitali/Circuiti di un calcolatore digitale (a)
2.3 Circuiti di un calcolatore digitale (b)Algebre booleane e progetto logico dei calcolatori digitali/Circuiti di un calcolatore digitale (b)
2.4 Progetto logico di un calcolatore digitaleAlgebre booleane e progetto logico dei calcolatori digitali/Progetto logico di un calcolatore digitale


Addizionatore e sottrattore binario[modifica]

Siano le variabili xi, yi, ri, si e r{i+1} definite nel capitolo Sistemi di numerazione, aritmetica binaria, a proposito della somma e della sottrazione di due numeri binari.

Assumendo la convenzione di rappresentate l'i aritmetico mediante l'! della logica booleana, lo 0 aritmetico mediante lo 0 booleano, e utilizzando gli stessi simboli di variabile per i due tipi di grandezza - si possono estrarre dalle tavole del capitolo Sistemi di numerazione, aritmetica binaria le tavole di verità che definiscono, per un singolo rango, la somma e la sottrazione.

Semiaddizionatore (half-adder)[modifica]

Questo circuito è un blocco fondamentale costituito da 3 porte di AND e una porta di OR. Il suo funzionamento viene stabilito mediante la tavola di verità:

Truth Table of Half Adder.png

È da notare che questo circuito presenta due output separati: uno per la somma e l'altro per il riporto.

Le due funzioni booleane descritte dalla tavola sono:

Il diagramma logico di un semiaddizionatore sarà quindi:

Half-Adder logic diagram.png

Il circuito che genera la funzione Si viene anche impiegato come porta di (OR esclusivo)

Addizionatore elementare (Full Adder)[modifica]

Il processo della somma binaria consiste in questo caso nella addizione contemporanea delle due variabili Xi e Yi e del riporto ri ottenuto durante la somma parziale precedente. La tabella della verità relativa Si e ri+1 sarà quindi:

Full Adder Truth Table (2).png

Equazione booleana di un addizionatore[modifica]

Forma canonica
Altre espressioni

Per Si, si può scrivere:

La funzione ri+1 essere semplificata:

=

Per comodità, possiamo scrivere ulteriormente:

Quindi Si e ri+1 possono essere ottenuti mediante due reti: la prima sarà e , la seconda e .

Full Adder with 3 inputs.png

Ciascuna di queste reti è un semiaddizionatore.

Connettendole come da figura e utilizzando una porta supplementare OR per formare , si ottiene un addizionatore elementare a tre ingressi .

Mediante altre trasformazioni algebriche, si possono ovviamente ottenere altri schemi.

Per esempio, considerando le espressioni:

si avrà il seguente schema:

Full Adler with 3 entries.png

L'addizionatore elementare che realizza le funzioni Si e ri+1 può essere utilizzato sia in un addizionatore in serie sia in un addizionatore in parallelo.

Addizionatore in serie-Addizionatore in parallelo[modifica]

Addizionatore in serie.png

Nell'addizionatore in serie le cifre degli operandi X e Y (Xi,Yi) si presentano negli istanti successivi i.

Una memoria M (per esempio una linea di ritardo con ritardo di un bit) conserva il riporto ri+1, elaborato all'istante i, fino all'istante i+1 (vedi figura).

Parallel Adder Logic Diagram (2).png

Nell'addizionatore in parallelo, le cifre Xi e Yi (i=0,...,n) degli operandi X e Y si presentano in entrata in parallelo (simultaneamente).

Con n+1 cifre, il circuito possiede 2(n+1) ingressi (Xi,Yi) e n+1 uscite.

Nella versione più classica (forma iterativa) esso possiede n+1 blocchi o stadi: uno stadio di rango 0 che è un semiaddizionatore e n stadi costituiti da addizionatori elementari del tipo descritto in (2.1.2) (rango i>0).

Il riporto elaborato al rango i (ri+1) costituisce uno degli ingressi dello stadio i+1.

Nella figura posta accanto n=3.

Si noterà che la lunghezza massima che i segnali devono attraversare è di n+1 stadi, ossia di 2(n+1) livelli se i blocchi sono appunto a 2 livelli.

Per certe condizioni (X=2n+1-1, Y=1 per es.) la lunghezza di propagazione del riporto è effettivamente uguale a questo valore.

Un addizionatore in parallelo completa l'addizione in un tempo che è determinato dal tempo di arrivo di un digit più il tempo di propagazione dell'eventuale riporto, mentre un addizionatore seriale richiede n intervalli di tempo (digit times). Quindi l'addizionatore parallelo ha il vantaggio di essere veloce, mentre quello seriale ha il vantaggio di avere meno circuiti.

Sottrazione binaria[modifica]

Tabella della verità per la sottrazione binaria.png

Mediante la tabella della verità a fianco si può definire il funzionamento di un blocco chiamato semi-sottrattore (half-subtractor) binario. Si fa l'ipotesi che il minuendo Xe il sottraendo Y siano positivi e tali che X≥Y.

Le equazioni booleane che definiscono la differenza e la ritenuta in una sottrazione binaria sono dunque:

Half Subtractor.png

Solo la seconda equazione differisce da quella ottenuta per l'addizione: essa si può dedurre da quella del par. 2.1.1 sostituendo con .

Un semisottrattore genera la differenza d e la ritenuta ri+1 mediante il minuendo Xi e il sottraendo Yi.

TrueTable for Full Subtractor.png

Volendo invece ottenere la differenza di e la ritenuta ri+1 considerando il sottraendo Xi, il minuendo Yi e la ritenuta ri del passo precedente, si ottiene la tabella della verità annessa al fianco.

Le equazioni booleane corrispondenti sono:

Uno dei possibili modi di realizzare un sottrattore elementare completo consiste nel considerare due semisottrattori.

Full Subtractor logic diagram.png

Il semi-sottrattore e il sottrattore completo possono essere utilizzati per costruire sottrattori in serie e in parallelo, sempre con l'ipotesi che X e Y siano senza segno e con X≥Y.

In seguito vedremo la realizzazione della sottrazione mediante l'uso dei complementi ad 1 e a 2. Infatti un circuito costruito per sommare numeri rappresentati con segno e modulo è molto più completo di quello che utilizza una rappresentazione complementata di numeri negativi.

Circuito di complementazione (ad 1)[modifica]

Sia il numero X=Xn-1 Xn-2...X0, il suo complemento a 1 è il numero che ha per rappresentazione :

Si suppone X intero:

Infatti, se si costruisce la somma, cifra dopo cifra, si ha:

da cui, essendo r0=0,

Un circuito complementatore (a 1) converte un numero binario avuto in input, in un output che ne è il complemento a 1.

Un complementatore può essere costruito in modo da ricevere un input seriale oppure uno in parallelo.

Complementatori seriale e in parallelo.png

In figura sono mostrati due complementatori che forniscono in output il valore , essendo P il valore di un opportuno segnale di controllo: si ottiene il complemento a 1 quando P=1, infatti:

se la variabile di controllo è P=0 in output si ha la stessa variabile di ingresso X.

La figura a sinistra delle due mostra un complementatore seriale nel cui input X compare una sequenza binaria rappresentante un numero binario.

Questo circuito può essere usato come complementatore parallelo: è necessario allora avere un numero di circuiti pari al numero di bit del numero binario.

L'altra figura rappresenta un complementatore in parallelo: i due output del flip-flop X costituiscono i due input. Ovviamente ci devono essere tanti di questi circuiti quanti sono i bits del numero binario.

Questo circuito a sua volta può essere utilizzato come complementatore seriale: sarà allora richiesto un solo circuito e lo stato del flip-flop cambierà ad ogni digit time generando così una sequenza binaria rappresentante il numero binario.

Circuito di complementazione a 2[modifica]

Sia il numero binario X, si chiama complemento vero o complemento a 2 la quantità .

Si ha dunque:

Aggiungendo 1 a C1(X) si ottiene:

Ricordando come si esprimono in algebra booleana le somme e i riporti di una addizione dell'aritmetica booleana, si ha:

.
.

Ponendo:

Complementatore a 2 di tipo seriale.png

si ottengono le seguenti equazioni di un circuito complementare a 2 seriale:

Tenendo presente l'equazione booleana di un flip-flop SR, si può pensare di realizzare l'equazione mediante un SR con l'ingresso R sempre mantenuto a 0 e con lo stato interno iniziale Z0=0.

Nella figura è descritto un complementatore a 2 di tipo seriale per numeri binari senza segno.

Complementatore a 2 seriale per numeri binari con segno.png

Nella seguente figura è descritto invece un complementatore seriale a 2 per numeri binari con segno: la sua caratteristica è determinata dal fatto che se il numero è negativo (bit del segno uguale ad 1), esso esce in output complementato a 2, se l'input invece è positivo, il numero uscirà nella forma vera.

Si fa l'assunzione che il bit del segno arrivi come primo bit nella sequenza di input: gli seguiranno i bit delle cifre significative in ordine di peso crescente.

Quando il bit del segno, arriva in input, esso passa attraverso la via a e compare invariato in output.

Nel frattempo un segnale di controllo del segno selezione la via c.

Se il bit del segno è 0 (numero positivo), il flip-flop S rimane nello stato 0 e i bit successivi del numero passano attraverso la via a ed appaiono in output.

Se il bit del segno è 1 (numero negativo), il flip-flop S viene messo nello stato 1. La via a viene interdetta e la via b viene permessa.

I bit successivi del numero passeranno allora per la via b e verranno complementati nella maniera descritta per numeri senza segno.

Osservando la figura del diagramma logico del complementate a 2 di tipo seriale si verifica la regola pratica per ottenere il complemento a 2 (detto anche complemento vero) di un numero binario. Essa consiste nel lasciare inalterati tutti gli zeri prima del primo 1 incontrato nel risalire la parola X partendo dai pesi più deboli e procedendo verso quelli più forti, nel lasciare inalterato questo 1, e nel complementare tutte le cifre a sinistra di questo 1.

Se consideriamo il circuito dell'accennata figura notiamo che il flip-flop interviene in due porte di AND: in una i bits di X entrano in forma negata e nell'altra no.

Ora, consideriamo un input seriale a partire dai pesi più deboli, i bit 0 non cambiano lo stato iniziale del flip-flop la cui uscita Z=0 interdice la porta AND relativa negata dei bits di X, e questo fino all'arrivo del primo bit 1, dopo il quale lo stato del flip-flop cambia; si ha la situazione inversa della precedente, in cui l'uscita interdisce la porta AND relativa ai bits di X.

Si ha inoltre:

Si vede quindi che, facendo le operazioni modulo 2n, si ottengono gli stessi risultati sia operando con X-Y che con X+C2(Y).

Quanto affermato sopra, è già stato dimostrato con l'ausilio del calcolo dei residui nel Cap.2 parte I.

Dimostriamo ora la veridicità mediante l'algebra di Boole. Poniamo:

Le operazioni X-Y e X+C2(Y)=X+Y' sono definite in forma ricorrente dalle equazioni:

Supponiamo che al rango k si abbia S'k=Sk: Si ha allora:

cioè

Si deduce immediatamente:

da cui

Consideriamo l'ultimo termine: si ha:

e quindi iterando il procedimento, si ha:

Da cui:

di conseguenza

E quindi se S'k= Sk si ha S'k+1=Sk+1

Poiché S'0=S0=(X0⊕Y0), la relazione di uguaglianza sussiste per ogni rango K: S'k=Sk.

Complementatore a 2 in parallelo.png

Per quanto riguarda un complementatore a 2 parallelo, esso consiste in n complementatori ad 1, in un addizionatore parallelo ad n bit e in un flip-flop C. Con n si è indicato il numero dei bit che compongono il numero binario. Il bit del segno passa inalterato nel circuito. Per ottenere il complemento a 2 del numero, se ne trova prima il complemento ad 1 e quindi si somma 1 al bit meno significativo [C2(X)=C1(X)+1]

L'addizione di 1 al bit meno significativo la si ottiene ponendo inizialmente il flip-flop C dello stato 11; in tal modo questa operazione consiste nell'addizionare due addendi di cui uno nullo, ma con un riporto iniziale di 1, e quindi sostanzialmente ogni adder dell'addizionatore parallelo lavora com un half-adder.

Controlli di parità[modifica]

Si chiama Bit di Parità, una cifra binaria che si aggiunge talvolta ad una parola binaria in modo da scoprire eventuali errori di trasmissione.

Data una parola X ad n posizioni:

Si usa trasmettere la parola ad n+1 posizioni :

dove P è tale che il numero totale degli 1 della parola X' sia pari.

Esempio:

Si può fare un'altra convenzione e definire un bit di disparità, tale che il numero totale degli 1 sia dispari.

Con questa nuova convenzione, non vi può essere un numero X' formato da zeri.

Questa combinazione risulta essere proibita, e la sua presenza può servire a mettere in evidenza certi difetti di funzionamento (come per esempio un difetto di alimentazione).

Si ha la corrispondenza:

Errore del parser (funzione sconosciuta '\begin{cases}'): {\displaystyle \begin{cases}P=1\ \ \ \ \sum_{i=1}^n X_i \ \ \ è\ dispari \\P=0\ \ \ \ \sum_{i=1}^n X_i \ \ \ è\ pari\end{cases}}

e quindi:

dove P e Xi sono variabili aritmetiche. Con la convenzione già usata, considerando P e Xi variabili booleane, si ha:

Il bit di parità indica gli errori di trasmissione su di un numero dispari di posizioni.

Come circuito di controllo, si può pensare un flip-flop di tipo T dove lo stato interno Q0 iniziale è posto a zero.

Addizione di 2 numeri con bit di parità[modifica]

Consideriamo 2 numeri binari X e Y ad n cifre:

alle n cifre siano stati aggiunti i bit di parità Px e Py:

chiamiamo Ps la cifra di parità x+y.

Calcoliamo l'espressione di Ps mediante le equazioni che danno la somma sk e il riporto rk+1 di rango K in funzione di xk, yk, rk.

Poniamo:

(Supponiamo quindi che S sia anch'essa di n cifre).

Si ha allora:

La cifra di parità Ps di S=X+Y è quindi la somma modulo 2 delle cifre dparità Px e Pydi X e Y e dei riporti rk (k=0, ..., n-1).

Nota. Quando la cifra Ps calcolatamediane la somma effettivamente ottenuta e la cifra Ps' calcolata mediante la (1.7.1) sono differenti, vi è errore. Poiché tutte le operazioni aritmetiche in un calcolatore sono effettuate, in ultima analisi, mediante addizioni, il procedimento sopra esposto può essere, in teoria, esteso come verifica di una qualunque operazione aritmetica.

Circuito per il confronto di 2 numeri binari[modifica]

Il problema che ci si propone di risolvere è quello di effettuare una operazione di confronto tra due numeri binari ad n bit in modo da determinare quale dei due ha valore maggiore in modulo.

In un primo tempo costruiremo un comparatore seriale nel cui input arrivano i bits da confrontare secondo la sequenza determinata dal crescere del rango. Sia dunque la parola binaria:

chiameremo con X(k) la parola tronca formata dalle k+1 cifre di peso più debole (ranghi da 0 a k).

Variabile binaria.png
Tabella riassuntiva delle diffrenze.png

Consideramo quindi due numeri X e Y e la variabile binaria definita dalla corrispondenza

Da queste condizioni segue che:

d'altra parte, se xk≠yk, la diseguaglianza tra xk e yk da una parte, x(k) y(k) sono definite nello stesso verso.

quanto detto può, può essere riassunto dalla tabella seguente.

Si ha dunque:

Si riconosce per Sk l'espressione della ritenuta ottenuta durante l'operazione Y-X.

Si vede quindi che Sn-1=1 quando l'operazione Y-X produce una ritenuta al rango n-1, situazione che si deve verificare quando x>y. Per confrontare i due numeri però non è necessaqrio determinare la differenza : infatti è sufficiente il valore Sn-1 della ultima ritenuta di questa differenza. Per costruire il circuito, conviene però mettere la equazione.

sotto la forma seguente:

Circuito per il confronto di due numeri binari..png

Per realizzare questo circuito, è sufficiente considerare un flip-flop di tipo T in cui Sk-1 rappresenta lo stato interno ed il resto dell'espressione costituisce l'ingresso del flip-flop mentre l'uscita determina la funzione di confronto tra i due numeri X e Y.

L'operazione realizzata da l circuito ha termine ovviamente quando in input si sono presentati tutti gli n' bits di X e Y.

Tabella di un comparatore seriale.png

Supponiamo invece che i bits di X e Y si presentino nell'ordine determinato dai pesi decrescenti: il circuito in questo caso sarà molto più semplice in quanto non ci sarà bisogno di utilizzare un circuito sequenziale.

La tabella di un comparatore seriale in cui l'input sia costituito da bits di peso decrescente sarà come quella affiancata.

Comparatore sertiale a peso decrescente.png

Da tale tabella si deduce il circuito a lato.

Appena x_k≠y_k si arrestano i confronti.

Comparatore parallelo[modifica]

Un comparatore parallelo sarà costituito da n circuiti comparatori in cui gli n bitsdi X e Y verranno confrontati separatamente e contemporaneamente.

La prima coppia di bits xi e yi (i=n-1,n-2,...,0) che differisce, determina l'uscita finale del comparatore, a prescindere dal valore di xi-1, yi-1,...ecc.

Nel seguito viene costruito un circuito comparatore in parallelo di 2 numeri di 2 bit: un circuito relativo a parole a n bits, avrà l'uscita uguale a quello di figura 2.5.2 e 2 circuiti NAND in più per ogni coppia di bit addizionale.

Siano quindi da confrontare i due numeri; X=x1 x0 e Y=y1 y0.

La tabella della verità relativa al problema del confronto in parallelo sarà:

Diagramma di Karnaugh di X maggiore di Y.png

Semplificando la funzione mediante un diagramma di Karnaugh si ha:


Diagramma di Karnaugh per X minore di Y.png

Semplificando la funzione mediante un diagramma di Karnaugh si ha:

Comparatore parallelo a 2 numeri.png

Dalla tabella della verità si deduce che:

Utilizzando alloa delle porte di NAND (/) si costruirà il circuito a latere

Convertitore codice binaio puro-binario riflesso e viceversa[modifica]

Sia il numero binario X e siano le sue due rappresentazioni binarie:

Le formule di conversione (Cap.3 parte I) sono:

Le conversioni si fanno più facilmente dalle cifre di peso più forte.

In queste condizioni, poniamo, per la conversione binario riflesso-binario puro:

Si ha:

Convertitore codice riflesso -binario puro.png

Mediante le equazioni trovate possiamo dedure lo schema del circuito che realizza la conversione da un codice riflesso ad uno binario puro: per avere la uscita Zp è sufficiente una porta di XOR mentre per l'uscita Qp+1 è necessario utilizzare un flip-flop T.

Per la conversione binario puro-binario riflesso, si pone:

Convertitore binario puro-binario iflesso.png

si ha quindi

Da cui il circuito nella figura accanto:

Contatori[modifica]

Si chiama contatore un circuito capace di prendere nota del numero di impulsi che arrivano in input e conservare il risultato dell'operazione di conteggio.

Se un contatore somma ogni qual volta arriva un impulso in input, esso pende il nome di forward counter o up counter. Se un contatore assume inizialmente una certa configurazione rappresentante un numero ed ad ogni impulso in input sottrae da questo numero, esso viene chiamato reverse counter o down counter.

Se un contatore è provvisto di due terminali di input in modo da addizionare se gli impulsi arrivano ad uno dei terminali di input e da sottrarre per gli impulsi che arrivano all'altro input, esso viene chiamato reversible counter o up-down counter.

I contatori vengono classificati anche in base alla maniera di memorizzare il numero del conteggio.

Se il numero memorizzato è un numero binario, in codice binario puro il contatore è un contatore binario.

Se il numero memorizzato è un numero decimale è un contatore decimale.

Se il digit decimale viene rappresentato mediante un codice binario il contatore è un binay-codet decimal digit counter.

Vi sono inoltre contatori capaci di esprimere il conteggio in altri codici binari (p.es.codice Gray). Pe ottenere le equazioni booleane di un contatore binario puro si può pocedee in due modi.

Primo modo per la determinazione booleana di un contatore binario[modifica]

Incremento in codice binario puro[modifica]

Addizione.png

Il passaggio da un numero X al numero X+1 può essere rappresentato mediante certe relazioni booleane che legano la rappresentazione dei numeri X e X+1. Consideriamo infatti l'addizione:

Si ha:

Le relazioni che rappresentano il numero x+1 in funzione di x sono:

Decremento in codice binario puro[modifica]

Le relazioni che danno la rappresentazione del numero X-1 in funzione di quella di X possono essere ottenute con il seguente procedimento:

Decremento in codice binario puro.png

Le relazioni (2.7.2) rappresentano il meccanismo di un u-counter e le (2.7.3) quelle di un down-counter), entrambi un codice binario puro. Si noterà che si passa dall'incremento al decremento complementando le variabili che compaiono nella ritenuta.

Complementando ambo i membri della relazione (2.7.3) si ottiene:

che insieme alla:

dà la relazione di incremento per i numeri corrispondenti alle parole binarie complementate. Infatti chiamiamo |A| il valore rappresentato dal nome A, si ha:

Se si chiama con E la variabile d'entrata del circuito, con l'indice n si indica il tempo dell'orologio (n≥0), si ottengono le seguenti equazioni:

Contatore a 16 stadi (up-counter).png
Up counter in binario puro.png

Le figure A e B rappresentano degli up-conter a 16 stadi interni quattro stadi binari). L'orologio non viene indicato).

La generalizzazione al caso di m stadi (2m stadi interni) è immediata.

Si noterà che per m elevato non è possibile connettere i flip-flop mediante una logica ad 1 livello come in figura A in quanto per il rango k è necessari una porta a k entrate.<br7> Si possono allora realizzare i prodotti π xi mediante funzioni di funzioni come in figura B.

Nella configurazione data, sono sufficienti delle porte AND a due entrate: risulta essere più lungo però il tempo di propagazione del riporto.

Per il rango k ci vuole un tempo k volte maggiore di quello necessario per il contatore A.

Up- down counte.png

Le cifre xk di rango k ad un certo istante n sono ovviamente rappresentate dagli stati interni dei Flip.Flop T di rango corrispondente mentre le uscite complimentate rappresentano le .

Le xk fanno parte della rappresentazione di x+1 mentre le sono la rappresentazione binaria di .

La costruzione di un down-counter risulta ovvia e la si può vedere facilmente nel grafico sovrastante dove e rappresentato un up-down counter

Nello schema sono state aggiunte delle linee di ritardo: esse stanno ad indicare che l'input delle porte di AND che proviene dai flip-flop è lo stato dei flip-flop prima che essi vengano commutati.

Se i flip-flop posseggono un loro ritardo sufficiente, questi ritardi aggiuntivi non sono necessari.

Comde si è appunto supposto nelle figure A e B).

Il disegno logico di un contatore binario può essere ricavato utilizzando una tavola della verità. La tavola mostra non solo le relazioni tra i successivi stati dei flip-flop ma anche gli stati di input dei flip-flop che causano una commutazione di questi Flp-Flop. Consideriamo un up-counter binario a tre stadi e proponiamoci di costruirlo con flip-flop di tipo T.

Tvola della verita di un up-counter.png

La tavola della verità di questo contatore è mostrata nella figura D.

In questa tavola i tre flip-flop e le loro uscite sono rappresentati con le variabili A3,A2,A1 rappresentano i loro rispettivi input; p rappresenta gli impulsi in input da conteggiare; t0, t1..ecc. rappresentano la sequenza temporale degli impulsi.

Le tre colonne relative agli A mostrano la sequenza desiderata degli stati dei tre flip-flop. Le ultime tre colonne mostrano i valori veri richiesti per gli input a3t, a2t, a1t, capaci di cambiare lo stato del contatore.

In queste tte colonne, lo 0 significa che non è richiesto alcun impulso nell'input del flipo-flop, mentreun 1 significa che è necessario un impulso nell'input del flip-flop.

Questi 0 e questi 1 sono ottenuti dalla commutazione dello stato dei flip-flop indicata nelle tre colonne relative agli A.

Per esempio, quando lo stato del contatore viene cambiato da 000 a 001, gli stati di A3 e A2 non cambiano, quindi i valori di a3t e a2tsono entrambi 0 nella prima riga delle colonne relative a a3t e a2t.

Però lo stato di A1 cambia da 0 a 1; quindi il valore di a1t è 1 nella prima riga dell'ultima colonna. Gli altri valori delle ultime tre colonne vengono ottenuti nella stessa maniera.

Da notare che all'istante t8lo stato del contatore è 000 lo stesso che all'istante t0

Il contatore quindi ha un compotamednto ciclico.

Le equazioni di input per i tre flip-flop dedotte dalla tabella della verità D sono:

che possono essere anche scritte come:

Quando le equazioni di input vengono sostituite nell'equazione di stato di un flip-flop T (Qn+1=Qn ⊕ En) si ottiene:

Queste sono le equazioni di stato di un contatore e descrivono lo stato dei tre flip-flop.

Applicando queste equazioni a quelle precedenti di input si ottengono i circuiti di fig.A e B.

Tavola della verità per flip-flop SR.png

Al posto di un flip-flop T, si può pensare di utilizzare un SR per costruire un contatore binario. Nella tavola E compaiono le condizioni necessarie per costruire un up-counter binario mediante flip-flop SR.

In questa tabella a3r, a2r, a1r, rappresentano gli input di riset (R) nei tre flip-flop ed a3s, a2s, a1s, i tre set inputs, p rappresenta gli impulsi di input da conteggiare; t0, t1, ecc. rappresentano la sequenza temporale degli impulsi di input.

Gli 0 e gli 1 delle ultime sei colonne sono anche qui ottenuti mediante i cambiamenti di stato dei flip-flop indicati nelle tre prime colonne. Essi però differiscono da quelli della tabella D. Nella tabella E l' 1 nella colonna dell' input reset (colonne sei, otto, dieci) indica il cambiamento di stato del flip-flop da 1 a 0, mentre lo 0 indica tutti gli altri casi (da 0 a0, da 1 a 1, da 0 a 1).

L'1 nella colonna dell' input reset (colonne sette, nove, undici) indica il cambiamento dello stato del flip-flop da 0 a 1 mentre lo 0 indica tutti gli altri casi (da 0 a 0, da 1 a 1, da 1 a 0). Per esempio, quando lo stato del contatore cambia da 000 a 001, gli stati di A3 e A2 rimangono immutati, per cui i valori di a3r, a3s, a2r, a2s sono 0 nella prima riga delle colonne sei, sette, otto e nove.

Lo stato A1 però deve cambiare da 0 a 1, quindi il valore di a1r è 0 mentre il valore di a1s è 1 nella prima riga delle due ultime colonne rispettivamente. I valori degli altri input set e reset sono ottenuti nella stessa maniera.

Dalla tabella E possiamo ottenere le equazioni di input dei tre flip-flop:

Se si sostituiscono le equazioni di input nella equazione di stato di un flip-flop SR (), si ottengono le equazioni 2.7.8, cioè le equazioni di stato di un up-counter binario.

Contatore binario con half-adders e flip-flop SR.png

Le equazioni 2.7.10 si possono scrivere in un altro modo.

Alle prime tre equazioni di 2.7.10 si aggiungono rispettivamente i termini ; queste somme logiche non cambiano il valore delle espressioni di partenza.

Le sei equazioni diventano allora:

Si noti che queste sono le equazioni delle somme e del riporto in output di un half-adder.

Quindi a1s e a1r sono rispettivamente la somma e il riporto di un half-adder i cui input sono A_1 e p.

In modo equivalente, si ha che a2s e a2r come a3s e a3r sono le uscite di half-addeers.

Il contatore binario utlizzante degli half-adder e dei flip-flop SR, viene mostrat in figura F.

Contatori decimali[modifica]

I contatori decimali sono circuiti che accettano degli impulsi in input, li contano e ogni volta che la somma totale risulti essere 10, ritornano allo stato iniziale emettendo sulla linea di uscita un impulso di riporto (dettom carry o overflow).

Tali contatori di capacità 10 vengono chiamati decadi.br/> Interconnettendo m elementi decimali di conteggio di questo tipo, in modo che l'uscita di un elemento J-1 serva come ingresso all'elemnto J, si può realizzare un contatore di capacità 10m.

Per codificare i 10 stati interni si usano generalmente codifiche di tipo binario con almeno 4 digit binari.

Codice 8421.png

Si è visto (cap.III°, parte Ia) che quando la cifra decimale corrispondente deve essere convertita in analogico, può essere utile considerare un codice ponderato. Infatti nel caso di una conversione in tensione sarà sufficiente fare la somma ponderata delle correnti corrispondenti ai 4 digit binari.

Nella tabella posta accanto compaiono il codice 8421 (I) e quello ad eccesso di 3 (II)

Ci proponiamo nel seguito di costruire un contatore relativo al codice 8421 e quello relativo al codice ad eccesso di tre.

Rappresentazione contatore decimale in codice 8421.png

La configurazione generale di un contatore decimale relativo al codice 8421 sarà:

Il numero rappresentato dallo stato interno dei flip-flop A4, A3, A2 A1, raggiungeà al massimo 1001, equivalente al digit decimale 9.

Appena arriva un nuovo impulso, il contatore assume lo stato 0000 (equivalente al digit decimale 0), e produce un riporto che servirà come input per incrementare la seconda decade.

Tabella 2.8.2.png

Queste considerazioni e la conoscenza delle proprietà dei flip-flop T che vogliamo utilizzare per realizzare il circuito, ci permettono di scrivere ls seguente tabella (2.8.2):

Possiamo scrivere le equazioni di input a4t, a3t, a2t, a1t direttamente dalla tabella 2.8.2.

Diagrammi di Kanaugh per contatore digitale.png

Possiamo semplificare le espressioni boolea ne mediante diagrammi di Karnaugh; in questa semplificazione si può far uso anche degli stati non esistenti 1010, 1011, 1100, 1101, 1110, 1111 (segnati con crocetta).

La variabile p è una variabile d'ingresso ma poiché vale sempre 1, è inutile prenderla in considerazione durante la semplificazione.

Dai digrammi si esplicano:

Sostituendo questi valori di input nella equazione di stato di un flip-flop si ottengono le equazioni di stato di una decade relativa al codice 8421:

Decade relativa al codice 8421.png

Nella figura viene dato il diagramma logico di una realizzazione di questo circuito.

Tabella relativa a contatore codice accesso tre.png

Supponiamo ora di voler costruire un contatore per un codice a accesso di tre.

La tabella della verità relativa viene data in figura 2.8.4

Semplificando con Karnaugh si ottengono le equazioni di input seguenti:

Decade per codici ad eccesso di tre.png

Per le semplificazioni si sono considerate anche le combinazioni che non compaiono nel codice ad eccesso di tre.

Dalle equazioni di input si deduce una possibile realizzazione del circuito (2.8.5): decadi per codici ad eccesso di tre.

Contatori in codice binario riflesso[modifica]

Determiniamo per prima cosa le relazioni che legano due parole codice e rappresentanti in codice rilflesso due numeri e consecutivi, cioè tali che .

Si è visto (cap.3 parte I) che e devono essere adiacenti.

Si possono avere due e si può scrivere cosìcasi.

- primo caso:

Si ha allora:

a questi due numeri corrispondono le seguenti rappresentazioni in codice Gray:

Si ha quindi:

Quindi se rappresenta in codice Gray un intero pari, si ottiene , complemetando il digit più a destra.

-Secondo caso: dispari:

comincia a destra con un 1 e si può scrvere così:

Da cui:

e:

Quindi, quando rappresenta in codice Gray un numero dispari, si ottiene la rappresentazione del numero successivo complementando la prima cifra a sinistra del primo 1 incontrato partendo da destra.

Consideriamo ora un contatore R=(Rm...Rk...R0) binario riflesso in cui Rk sono gli stati interni di flip-flop T ed indicano il valore delle cifre di rango K in codice Gray.

Chiamiamo con l'ingesso del flip-flop T di rango k all'istante n; si avrà:

da cui:

Conoscendo lo stato di parità del numero , si possono dedurre dalla (2.9.1) e (2.9.2), le , cioè i valori di ingresso da dare ai singoli flip-flop in modo da ottenere il numero .

Ora, la parità del numero consideerato è dato dal digit della rappresentazione in binario puro.

Si deducono le seguenti relazioni:

dove E rappresenta la variabile d'ingresso del contatore.

Contatore in binario riflesso.png Contatore in binario riflesso (bis).png

Ponendo:

Errore del parser (funzione sconosciuta '\begin{cases}'): {\displaystyle R^n_{-1}=\bar B^n_0\ \ \ \ \begin{cases}R^n_{-1}=0, R^n\ è\ dispari\\R^n_{-1}=1, R^n\ è\ pari\end{cases}}

Si ha allora per

Nelle figure (2.9.4 e 2.9.4bis) sono rappresentati 2 contatori in codice binario riflesso ottenuti applicando le formule (2.9.3) o considerando una decomposizione analoga a quella fatta nel caso dei contatori in binario puro. È da notare inoltre il segno - su tutte le salvo quella di rango k-1 e la presenza della variabile rappresentata da un flip-flop supplementare di parità.

Questo flip-flop di rango -1, commuterà ogni volta che si applicherà un 1 al suo ingresso.

Diagrammi di stato[modifica]

Consideriamo a titolo di esempio, un addizionatore binario seriale (fig.2.1.3) ed assumiamo che la configurazione della memoria M, che conserva fino all'istante i+1 il valore del riporto ottenuto all'istante i, sia rappresentativa dello stato interno del circuito.

Diagramma di stato.png

A partire da uno stato iniziale risulta che le tre combinazioni di ingresso di (cfr.§2.1.2) 00,01,10 il valore di , e cioè lo stato interno del circuito non cambia; mentre per la combinazione lo stato interno passa dal valore 0 al valore 1. Analogamente si può considerare per quali combinazioni delle variabili d'ingresso lo stato interno rimane uguale ad 1 e per quale valore cambia invece nuovamente da 1 a 0. Si può quindi riscrivere la tavola della verità di § 2.1.2 sotto la forma di diagramma di stato, in cui rappresenta la combinazione dei valori d'ingresso, lo stato interno; ed in funzione dei valori di e di sono riportati in ogni casella, separati da una /, il nuovo stato interno ed il valore di uscita .

Diagamma di stato a vertici rappresentativi.png Grafo di stato 2.10.1 a.png

Si può equivalentemente rappresentare il comportamento del circuito per mezzo di un grafo composto da vertici rappresentativi dello stato interno e da archi orientati tra le coppie di vertici.

Gli archi orientati sono rappresentativi dei valori di ingresso che determinano il passaggio dello stato interno dasl vertice di partenza a quello di arrivo, e recano, separati da una barra, oltre a questi valori, anche i corrispondenti valori di uscita.

Nell'esempio in esame si ha quindi il grafo posto di fianco:

Il grafo di una rete sequenziale contiene dunque le stesse informazioni della tabella della verità; con esso però si mette in particolare evidenza la connessione logica degli stati che il sistema può assumere. Una altra rappresentazione molto usata ha nome di diagramma di stato ed indica gli stati successivamente assunti dal sistema.

Un semplice esempio riguarda il diagramma di stato di un contatore binario modulo 23 in (2.10.1 a). Il nujmero binario racchiuso nel circolo indica lo stato dei tre flip-flop, e le frecce indicano la sequenza dei cambiamenti di stato (cnf:§2.7).

Diagramma di stato di un contatore decimale.png

Un contatore decimale, o decade, richieder invece 10 stati distinti. Il diagramma di stato. Il diagramma di stato di un tale contatore con codice 8.4.2.1 è riportato in (2.10.1 b).

Se come visto nel § 2.7.3 con (i=1,2,3,4) si rappresentano i valori di input capaci di cambiare lo stato dei quattro rispettivi flip-flop, dal diagramma di statosi possono ottenere, senza costruire la tabella della verità, le equazioni di input ricavate nel §2.8. Ad esempio, infatti, considerando che i numeri racchiusinel circoletto rappresentano i valori assunti di volta in volta dall'insieme ordinato e se consideriamo in particolare lo stato , inizialmente posty a 0, notiamo che detto stato commuta sempre e solo a partire da una configurazione del tipo 0\ -\ - 1 e quindi l'equazione di input relativa al flip-flop di stato tenuto conto della variabile d'ingesso p, deve essere:

.