Algebre booleane e progetto logico dei calcolatori digitali/Circuiti di un calcolatore digitale (a): differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
wikifico
Wim bot (discussione | contributi)
m Bot: Correggo errori comuni (tramite La lista degli errori comuni V 1.1)
Riga 42:
Per '''S<sub>i</sub>''', si può scrivere:
 
::::<math>S_i=(\bar X_i \bar Y_i+X_i Y_i) r_i+(\bar X_i Y_i+X_i \bar Y_i) r_i</math>
 
:::::<math>=\overline {(X_i\oplus Y_i)}+(X_i\oplus Y_i)\bar r_i</math>
Riga 54:
::::<math>r_{i+1}=\bar X_i Y_i r_i+X_i \bar Y_i r_i+X_i Y_i \bar r_i+x_i Y_i r_i+X_i Y_i r_i+X_i Y_i r_i</math>
 
:::::<math>=(\bar X_i+X_i) Y_i r_i+(\bar Y_i+ Y_i) X_i r_i+(r_i +\bar r_i) X_i Y_i</math>
 
:::::=<math>=X_i Y_i+Y_i r_i+r_i X_i</math>
Riga 60:
:::::<math>=X_i Y_i\oplus Y_i r_i\oplus r_i X_i</math>
 
Per comodità , possiamo scrivere ulteriormente:
 
::::<math>S_i=(X_i\oplus Y_i)\oplus r_i</math>
Riga 110:
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=2<sup>n+1</sup>-1, Y=1 per es.) la lunghezza di propagazione del riporto è effettivamente uguale a questo valore..
Riga 166:
::<math>Si\ ha\qquad X+C_1(X)=X+\bar X=2^n -1</math>
 
Infatti, se si costruisce la somma , cifra dopo cifra, si ha:
 
:::::<math>\begin{cases}S_k=X_k\oplus\bar X_k\oplus r_k=r_k\oplus 1=\bar r_k\\r_{k+1}=X_k\bar X_k+r_k(X_k\oplus \bar X_k)=r_k\end{cases}</math>
Riga 244:
[[File:Complementatore a 2 seriale per numeri binari con segno.png|right]]
 
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 bits 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'''.
Riga 266:
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 interdcde la pota 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 <math>\bar Z=0</math> interdisce la porta AND relativa ai bits di X.
 
Si ha inoltre:
Riga 360:
Si piò 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).
Riga 366:
Si ha la corrispondenza:
 
:::::<math>\begin{cases}P=1\ \ \ \ \sum_{i=1}^n X_i \ \ \ e'è\ dispari \\P=0\ \ \ \ \sum_{i=1}^n X_i \ \ \ e'è\ pari\end{cases}</math>
 
e quindi:<br>
Riga 413:
La cifra di parità '''P<sub>s</sub>''' di '''S=X+Y''' è quindi la somma modulo 2 delle cifre dparità '''P<sub>x</sub>''' e '''P<sub>y</sub>'''di '''X''' e '''Y''' e dei riporti '''r<sub>k</sub> (k=0, ..., n-1).
 
:''Nota''-Quando la cifra '''P<sub>s</sub>'' calcolatamediane la somma effettivamente ottenuta e la cifra '''P<sub>s</sub>''' 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 ==
Riga 493:
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 '''x<sub>i</sub>''' e '''y<sub>i</sub>''' (i=n-1,n-2,...,0) che differisce , determina l'uscita finale del comparatore, a prescindere dal valore di '''x<sub>i-1</sub>''', '''y<sub>i-1</sub>''',...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.
Riga 511:
::::<math>\overline {\overline {x_1\bar y_1+x_0\bar y_0(x_1+\bar y_1)}}=</math>
::::<math>\overline {\overline {x_1\bar y_1}\cdot \overline {x_0\bar y_0 \overline {\overline {(x_1+\bar y_1 )}}}}=</math>
 
::::<math>\overline {\overline {x_1 \bar y_1}\cdot \overline {x_0 \bar y_0(\overline {\bar x_1\cdot y_1})}}</math>
Riga 585:
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 arivano 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.
Riga 596:
 
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 ===
Line 639 ⟶ 638:
 
:::::<math>\begin{cases}x_k{''}=x_k\oplus\coprod_{i=0}^{i=k-1}\bar x_i\\r_{k+1}=\coprod_{i=0}^{i=k}\bar x_i\end{cases}\ \ \ \ \ (2.7.3)</math>
 
 
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.
Line 662 ⟶ 660:
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:
 
::<math>\ \ up -counter:\ \ \ \ \ x_k^{n+1}=x_k^n\oplus E^n (\coprod_{i=0}^{k-1}x_i) _n</math>
 
::<math>\ \ down- counter:\ \ x_k^{n+1}=x_k^n\oplus E^n (\coprod_{i=0}^{k-1}\bar x_i) _n</math>
 
[[File:Contatore a 16 stadi (up-counter).png|right]]
Line 695 ⟶ 693:
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 imputinput 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'''.
 
[[File:Tvola della verita di un up-counter.png|right]]
Line 705 ⟶ 703:
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''' '''a<sub>3t</sub>''', '''a<sub>2t</sub>''', '''a<sub>1t</sub>''', 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'imputinput del flip-flop.
 
Questi '''0''' e questi '''1''' sono ottenuti dalla commutazione dello stato dei '''Flip-Flop''' indicata nelle tre colonne relative agli '''A'''.
Line 791 ⟶ 789:
Quindi '''a<sub>1s</sub>''' e '''a<sub>1r</sub>''' 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 '''a<sub>2s</sub>''' e '''a<sub>2r</sub>''' come '''a<sub>3s</sub>''' e '''a<sub>3r</sub>''' sono le uscite di '''half-addeers'''.
 
Il contatore binario utlizzante degli '''half-adder''' e dei '''flip-flop SR''', viene mostrat in figura '''F'''.
Line 822 ⟶ 820:
[[File:Tabella 2.8.2.png|right]]
 
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 '''a<sub>4t</sub>, a<sub>3t</sub>, a<sub>2t</sub>, a<sub>1t</sub>''' direttamente dalla tabella '''2.8.2'''.
Line 868 ⟶ 866:
 
::::::<math>a_{4t}=A_1 A_2 A_3 p+A_4 A_3 p</math>
 
 
[[File:Decade per codici ad eccesso di tre.png|right]]
Line 912 ⟶ 909:
Da cui:
 
::::::<math>y_i=x_n(x_{n-1}\oplus x_n)..(x_{k+1}\oplus x_{k+2}) x_{k+1}1\ 0\ 0.. 0\ 0</math>
 
::::::<math>y_{i+1}=x_n(x_{n-1}\oplus x_n)..(x_{k+1}\oplus x_{k+2})\bar x_{k+1}1\ 0\ 0.. 0\ 0</math>
Line 954 ⟶ 951:
Ponendo:
 
::<math>R^n_{-1}=\bar B^n_0\ \ \ \ \begin{cases}R^n_{-1}=0, R^n\ e'è\ dispari\\R^n_{-1}=1, R^n\ e'è\ pari\end{cases}</math>
 
Si ha allora per <math>0\le k \le m</math>
Line 962 ⟶ 959:
<math>\bar R^n_{-1}=\oplus \sum_{k=0}^m\ R^n_k</math>
 
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 <math>R_i</math> salvo quella di rango '''k-1''' e la presenza della variabile <math>R_{-1}</math> 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.
Line 979 ⟶ 976:
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:
Line 989 ⟶ 986:
[[File: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 <math>a_{it}</math> (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 <math>A_4\ A_3\ A_2\ A_1</math> e se consideriamo in particolare lo stato <math>A_2</math>, 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 <math>A_2</math> tenuto conto della variabile d'ingesso '''p''', deve essere:
 
::::::<math>a_{2t}=A_1\ A_2\ p</math>.