Algebre booleane e progetto logico dei calcolatori digitali/Progetto logico di un calcolatore digitale: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Corretto: "compaiono"
m ortografia
Riga 9:
Un calcolatore digitale opera mediante delle informazioni, numeriche o di altro tipo, rappresentate in forma digitale.
 
Dal punto di vista del progetto logico, un calcolatore digitale può essere idealmente descritto come l'insieme de dispositivi di memoria bistabili (per es. Flipflip-Flopflop) connessi da reti logiche.
 
Lo stato di queste memorie di tipo discreto cambia in certi istanti; lo stato iniziale viene fissato dal programma.
Riga 23:
La seconda fase stabilisce il formato della parola, la configurazione della macchina e l istruzioni di macchina; questa fase termina una volta stabilito un insieme di equazioni logiche o un insieme di diagrammi logici dettagliati.
 
La terza fase comporta il progetto dei circuiti logici, della memoria e dei dispositivi di '''ingresso-uscita'''.<bra sua volta, />
 
Il progetto logico di un calcolatore può essere, a sua volta, diviso in tre fasi: progetto funzionale, progetto simbolico, progetto dettagliato. Nella prima fase viene stabilito, innanzi tutto, il formato della parola. Vengono scelti i registri, i contatori, le matrici, gli addizionatori e gli altri elementi; questi vengono completati con la memoria scelta ed i dispositivi di input-output in modo da stabilire un particolare insieme di istruzioni di macchina:
 
Line 45 ⟶ 46:
=== Formatto della parola ===
 
Una parola (o voce) in un calcolatore è un insieme ordinato di digits che viene trattato dal calcolatrecalcolatore come una unità unitaria.
 
Si dice che il calcolatore ha una struttura a parole (a voci) se un da e che questa sia piccola.to Un numero o una istruzione viene rappresentata mediante una parola.
 
Per facilitare lo studio del nostro ipotetico calcolatore, supponiamo di fissare la lunghezza della parola e che questa sia piccola. Come vedremo una parola corta consente un numero piccolo di istruzioni di macchina e di indirizzi di memoria.
 
La lunghezza di parla scelta per questo esempio è di '''9''' bits:
 
::::::<math>x=x_o x_1 x_2 x_3 x_4 x_5 x_6 x_7 x_8</math>
 
Una parola viene trattata dalla unità aritmetica come un numero: in questo caso il formato della parola viene chiamato '''formato del numero '''.
 
Sempre in questo esempio, il numero viene dato in una rappresentazione binaria frazionaria con i numeri negativi dati dal complemento a 2 del corrispondente numero positivo.
Line 62 ⟶ 64:
Poiché il valore di un numero binario con segno è compreso nell'intervallo '''-1≤x<1''' il nostro calcolatore viene chiamato '''binary fractional computer'''.
 
Quanto detto non costituisce una vera restrizione per i calcoli, poiché un numero furifuori dell'intervallo sopra indicato può essere rappresentato nel calcolatore moltiplicandolo per '''2<sup>n</sup>''', con un appropriato valore di '''n'''.
 
La moltiplicazione per '''2<sup>n</sup>''' non è altro che una operazione di '''shift'''.
Line 74 ⟶ 76:
La parola considerata come istruzione è suddivisa in due parti (campi): il codice operativo e l'indirizzo. Il formato istruzione del nostro calcolatore sarà quindi:
 
Con un solo indirizzo, questo formato viene chiamato '''simple -address format'''
 
La porzione di tre bit chiamata codice operativo costituisce un codice binario di una operazione di macchina: perr es. esso indica un trasferimento, una operazione aritmetica o logica.
Line 93 ⟶ 95:
Questa considerazione fa introdurre l'unità di memoria (indicata cin i registri '''M'''): la sua capacità è di 64 parole di 9 bits ciascuna.
 
Come mostrato in figura 4.3.2, questi flip-flop sono denotati con '''M<sub>(ji)</sub>''', dove '''j''' indica la '''J<sup>(sima)</sup>''' parola ede '''i''' il '''bit<sup>(simo)</sup>.
 
ene messo tra il registr '''C'''
Ad ogni locazione di memoria viene attribuito un indirizzo : la selezione degli indirizzi viene fatta mediante il '''memory register C'''.
 
Il registro '''C''' consiste di 6 '''Flipoflip-Flopflop''' (fig. 4.3.2).
 
Un duplicatore di indirizzi viene messo tra il registro '''C''' e la memoria.
Line 117 ⟶ 119:
L'operation counter conteggia gli impulsi di un orologio e genera i segnali di controllo mediante un decodificatore di operazioni.
 
Un generatore di impulsi d'orologio da una sequenza di impilsiimpulsi temporsalitemporali con periodo '''τ'''.
 
L'impulso di orologio serve a sincronizzare le operazioni del calcolatore.
 
Un altro clock-pulse generator (non indicato in fig. 4.3.1) genera un singolo impulso: esso è sotto il controllo dell'operatore che in questa maniera, può osservare il procedere del calcolatore passo per passo.
 
Altro dispositivo di controllo è il Fliop-Flop '''G''', capace di avviare od arrestare le operazioni del calcolatore.
 
Il controllo del Flipoflip-Flopflop '''G''' è accessibile all'esterno mediante lo switch (interruttore) '''S'''.
 
Come dispositivi di input capaci di inserire in memoria dati e istruzioni, vi sono gli switchs '''Q''' mentre per fornire i risultati ci possono essere dei dispositivi luminosi (non indicati in fig. 4.3.1). Sia gli switchs '''Q''' che i dispositivi luminosi sono connessi ai singoli bit di memoria.
 
I dispositivi luminosi sono anche connessi ai singoli bit dei registri in modo da osservare le operazioni del calcolatore durante eventuali test.
Line 137 ⟶ 139:
La lista di istruzioni capace di risolvere un certo problema deve essere ovviamente codificata prima di essere caricata nel calcolatore in modo che le istruzioni stesse siano comprensibili alla macchina:
 
Le istruzioni eseguibili da questo calcolatore ipoteticosnoipotetico sono raggruppate in tabella 4.3.3 seguente
 
{|
|-
! Codice........... !! Istruzione !! DesceizioneDescrizione dell'istruzione
|-
| 000 uvwxyz || Addizione || Prende il numero dalla memoria all'indirizzo uvwxyz, lo mette nel regisroregistro R; somma il conternutocontenuto di R al contenuto del registro A e conserva il risultato nel registro A.
|-
| 001 uvwxyz || Sottrazione || Prende il numero dalla memoria all'indirizzo uvwxyz, lo mette nel regisroregistro R; sottrae il conternutocontenuto di R al contenuto del registro A e conserva il risultato nel registro A.
 
|-
| 010 uvwxyz || trasferimento condizionato || Se A<sub>0</sub>=1 (segno di A negativo) si prende come nuova istruzione quellsquella contenuta nella memoria all'indirizzo uvwxyz; se A<sub>0</sub>=0 (segno di A positivo), si prende la nuova istruzione in sequenza.
|-
| 100 uvwxyz || trasferimento incondizionato || Prende la nuova istruzione dalla memoria di indirizzo uvwxyz.
Line 169 ⟶ 171:
È da osservare che le ultime quattro istruzioni di tabella 4.3.3 non fanno riferimento a posizioni di memoria (cioè non è necessario un operando e quindi la parte indirizzo può essere utilizzata nella codificazione del codice operativo).
 
Quindi, pur avendo solo 3-bit a disposizione del codice, si hanno in effetteffetti nove operazioni.
 
=== Sequenza operativa del calcolatore ===
Line 193 ⟶ 195:
Per le operazioni di '''shift''' e di azzeramento dell'accumulatore si ha il segnale di controllo '''f'''.
 
L'operazione di trasferimento relativa alla sequenza di controllo avviene sotto i segnali '''b''' o '''H''', mentre il segnale '''e''', selezionando la porta '''A<sub>6</sub>''', conserva mediante la porta '''A<sub>5</sub>''', il controllo dellaccumulatoredell'accumulatore nella memoria all'indirizzo che si trova nel registro '''C'''.
 
L'ultima istruzione del programma in memoria è in genere una istruzione di '''stop''': l''''operation counter''' invia il segnale di controllo '''a''' al Flipflip-Flopflop '''G''' e la macchina si ferma.
 
== Fase di progettazione simbolica ==
Line 283 ⟶ 285:
:::::<math>1\Rightarrow G\ \ \ \ \ e\ \ \ \ \ (Q_{ji})\Rightarrow M_{ji}</math>
 
La prima espressione indica il set del Flipflip-Flopflop '''G''' mentre la seconda indica l'inserimento del contrnutocontenuto dell'interruttore '''Q<sub>ji</sub>''' nel bit di memoria '''M<sub>ji</sub>'''
 
=== Ciclo d'istruzione e ciclo di esecuzione ===
Line 329 ⟶ 331:
[[File:Operazioni durante cicli di istruzione e di esecuzione.png|right]]
 
Questo indirizzo della istruzione che è stato preso in considerazione deve essere conservato in qualche maniera in quanto l'indirizzo della nuova istruzione è ottnutoottenuto da quello della presente, sommando '''1'''.
 
Poiché la parte indirizzo del registro '''R''' è stata trasferita nel registro '''C''' e non è usata per il momento. l'indirizzo della presente istruzione può essere trasferito per una memorizzazione temporanea nella parte indirizzo del registro '''R'''.
Line 335 ⟶ 337:
In altre parole, l'indirizzo della presente istruzione contenuto in '''C''' viene trasferito in '''R''' e nello stesso istante l'indirizzo dell'operando contenuto i '''R''' viene trasferito in '''C'''.
 
Questi due trasferimenti simultanei sono possibili se si fa l'ipotesi che i Flipflip-Flopflop dei registri '''R''' e '''C''' abbiano un delay sufficiente.
 
In un calcolatore digitale ordinario con capacità di memorizzazione di programmi c'è generalmente un ulteriore contatore di istruzioni atto a memorizzare l'indirizzo della attuale istruzione e, tramite incremento di 1 unità dopo l'esecuzione di una istruzione si determina l'indirizzo della nuova istruzione da eseguire.
Line 343 ⟶ 345:
Le operazioni che avvengono durante il '''ciclo istruzioni''' sono sempre le stesse, mentre quelle che compaiono durante il '''ciclo esecuzione''' dipendono dal codice operativo dell'istruzione.
 
In fig-4.4.3b si è preso in considerazione il ciclo esecutivo di una istruzione d'addizione: esooesso incomincia prendendo la parola operando dalla memoria localizzata dall''''operand address''' contenuto in '''C'''. La parola operando è trasferita nel registro '''R''' che viene utilizzato attualmente come memoria temporanea:
 
:::::<math>(M<C>)\Rightarrow R</math>
 
Durante l'operazione di caricamento dell'operando, il contenuto della parte indirizzo di '''R''' che alroaltro non è se non l'indirizzo della attuale istruzione, viene trasferito in '''C''':
 
:::::<math>Ad[R]\Rightarrow C</math>
Line 365 ⟶ 367:
Nel caso di una istruzione di trasferimento incondizionato, l'indirizzo della nuova istruzione è dato dall'indirizzo dell'operando.
 
Nel caso di una istruzione di trasferimento condizionato, la sequenza proce deprocede come nel caso del trasferimento incondizionato, se la condizione è verificata '''(A<sub>0</sub>=1)'''; se la condizione non è verificata (A<sub>0</sub>=0), la nuova istruzione da eseguire viene determinata mediante l'operatore '''(C)+1=>C.
 
L'operazione ausiliaria '''(1=>F)''' viene spiegata nel seguito.
Line 377 ⟶ 379:
Poiché sono contemplate nove operazioni, sono richiesti all''''operation counter''' nove stati, e ciò implica un minimo di 4 Flip-Flop, '''F<sub>1</sub>,F<sub>2</sub>,F<sub>3</sub>,F<sub>4</sub>'''.
 
I Flipflip-Flopflop '''f<sub>2</sub>''' e '''f<sub>4</sub>''' costituiscono la parte istruzione del registro '''F(o I[F]); in essi vengono memorizzati i 3 bit della porzione codice operativa del registro istruzioni '''R'''.
 
Per un contatore cobcon quattro flip-flop, si possono presentare 16 stati; essi vengono indicati con la notazione '''f<sub>i</sub>''' in tabella 4.4.4 (l'indice '''i''' rappresenta il numero binario corrispondente di 4 bit).
 
ogni stato rappresenta 1 segnale di comando. come si vede da tavola 4.4.4.
Line 394 ⟶ 396:
| 0 0 1 0 || f<sub>2</sub> || comando di trasferimento condizionale
|-
| 0 0 1 1 || f<sub>3</sub> || comando di imaggazinaggioimmagazzinaggio
|-
| 0 1 0 0 || f<sub>4</sub> || comando ciclo istruzioni
Line 430 ⟶ 432:
La scelta dei 14 segnali di comando tra i 16 possibili stati del contatore non è del tutto arbitraria ma è stata fatta cercando di semplificare la logica del circuito.
 
Infatti gli stati '''f<sub>0</sub>, f<sub>1</sub>, f<sub>2</sub>, f<sub>3</sub>, f<sub>4</sub>, f<sub>5</sub>''' sono relativi a comandi di istruzioni e questa scelta fa si che il Flipflip-Flopflop '''F<sub>1</sub>''' sia uguale a '''0''' per tutti i comandi di istruzione, semplificando così la logica del circuito.
 
Mediante la tabella 4.4.4 e conoscendo la sequenza di controllo relativa ai cicli-istruzione e cicli.esecuzione si può costrurecostruire la figura 4.4.5 detta anche diagramma di stato in cui compaiono gli stati del calcolatoredopocalcolatore dopo le singole operazioni e le operazioni conseguenti ad ogni singolo stato.
 
In figura 4.4.5 l'operazione di prendere una istruzione in memoria durante il ciclo-istruzione avviene allo stato '''f<sub>4</sub>''', mentre le altre tre operazioni relative al ciclo-istruzione avvengono allo stato '''f<sub>10</sub>'''.
 
La sequenza interna dedldel ciclo esecutivodipendeesecutivo dipende dal contenuto dei Flipflip-Flopflop '''R<sub>0</sub>, R<sub>1</sub>, R<sub>2</sub>'''.
 
Vi sono sei strade: per l'addizione, la sottrazione, il trasferimento condizionato, il trasferimento incondizionato, il comando di memorizzazione, inoltre vi sono le strade che compaiono quando'''R<sub>0</sub>R<sub>1</sub>R<sub>2</sub>''' è 101
Line 443 ⟶ 445:
L'operazione che costruisce l'indirizzo relativo all'istruzione successiva (detto anche indirizzo di ritorno) avviene negli stati f<sub>0</sub>, f<sub>1</sub>, f<sub>2</sub>, f<sub>3</sub> e f<sub>5</sub> mentre non è necessaria se l'istruzione appena eseguita è un trasferimento incondizionato.
 
Uno zero viene inserito nel Flipflip-Flopflop '''G''' allo stato '''f<sub>5</sub>''' se '''C<sub>3</sub>''' è '''1'''.
 
L'operazione di incremento di '''1''' avviene durante lo stato '''f<sub>11</sub>'''.
Line 453 ⟶ 455:
L''''operation counter''' continua a conteggiare i segnali dell'orologio ma il suo stato rimane '''f<sub>15</sub>''' a causa dell'operazione '''1=>F''':
 
Perciò, sotto il comando di stop il calcolatore non si arresta ma viene sospesa solo la sequenza operativa.<br/
 
Quando lo switch ''S''' viene messo nello stato '''off''', il Flipflip-Flopflop '''G''' assume lo stato '''0''': il calcolatore continua ad eseguire l'istruzione in corsofinocorso fino a quando l''''operation counter''', raggiunge lo stato '''f<sub>4</sub>'''.
 
A questo punto, l'operation counter assume lo stato '''f<sub>15</sub>''' e rimane in tale stato.
Line 474 ⟶ 477:
=== Operation counter ===
 
Nell'operation counter vi sono quattro Flipflip-Flopflop '''F<sub>1</sub>,F<sub>2</sub>,F<sub>3</sub>,F<sub>4</sub>''': esso deve realizzare la sequenza di figura 4.4.5 ed assumere lo stato '''1111''' quando '''G''' è '''0'''.
 
Da figura 4.4.5 si ha allora che lo stato del Flipflip-Flopflop '''F<sub>1</sub>''' cambia quando dallo stato '''f<sub>4</sub>''' (0100) si passa allo stato '''f<sub>10</sub>''' (1010).
 
Cambia inoltre quando '''f<sub>10</sub>''' (1010) diventa '''f<sub>0</sub>''' (0000), con '''R<sub>0</sub>,R<sub>1</sub>,R<sub>2</sub>''' (000).
 
In breve lo stato del Flipflip-Flopflop '''F<sub>1</sub>''' cambia quando si presenta una delle sei seguenti condizioni.
 
::<math>f_10\bar R_0\bar R_1\bar R_2+f_10\bar R_0\bar R_1 R_2+f_10\bar R_0R_1\bar R_2+f_10\bar R_1R_2+f_10R_0|bar R_1R_2+f_10R_0\bar R_1|bar R_2=f_10</math>
 
Le altre condzionicondizioni che detertminanodeterminano il cambiamento dello stato di '''F<sub>1</sub>''' possono essere dedotte con considerazioni simili, tenendo sempre presente il diagramma di stato di figura 4.4.5.
 
Chiamando quindi '''p''' l'impulso d'orologio che commuta i Flipflip-Flopflop, si hanno le seguenti equazioni di '''input''' per '''F<sub>1</sub>, F<sub>2</sub>, F<sub>3</sub>, F<sub>4</sub>'''.
 
::<math>f_{1t}=[f_4+f_{10}+f_0+f_1f_2\bar A_0+f_3+f_5(C_0+C_1+C_2+C_3)+f_{11}+f_{15}G]p</math>
Line 498 ⟶ 501:
[[File:Valori assunti da Flip-Flop.png|right]]
 
Quando il contatore si trova nello stato '''f<sub>15</sub>''' ede il Flipflip-Flopflop G ha valore '''0''', viene richiesta l'operazione '''1=>F''': in tavola 4.5.2 vengono mostrati i valori assunti dai Flipflip-Flopflop '''F<sub>i</sub>''' durante tale operazione.
 
Le equazioni di input dei Flipflip-Flopflop '''F''' in tale caso saranno:
 
:::::<math>f_{it}=\bar F_i G f_{15} p\ \ \ \ \ i=1,...4\ \ (4.5.3</math>
Line 508 ⟶ 511:
Le equazioni 4.5.1 sono le equazioni di input del registro '''F'''-
 
In fig-. 4.5.4 compare il diagramma logico relativo alle (4.5.1).
 
[[File:Diagrazmma logico dell'operatio counter e decoder.png|center]]
Line 587 ⟶ 590:
:::::<math>a_{it}=(A_{i-1}\oplus A_i f_{12} p\ \ \ \ i=1,...,8</math>
 
Non vi è alcuna equazione per '''a<sub>0t</sub>''' in quanto lo stato del Flipflip-Flopflop '''A<sub>0</sub>''' non deve cambiare.
 
L'operazione di scorrimento a sinistra avvierneavviene allo stato '''f<sub>13</sub>'''.
 
Essa fa scorrere il contenuto dell'accumulatore di un bit verso sinistra mentre lo stato di '''A<sub>8</sub>''' viene sostituito da quello di '''A<sub>0</sub>'''.
Line 607 ⟶ 610:
:::::<math>a_{it}=A_if_{14} p\ \ \ \ i=0,...,8</math>
 
quindi le equazioni di input dei Flipflip-Flopflop che costituiscono l'accumulatore '''A''' saranno:
 
::<math>a_{it}=(R_ip\oplus K_i) f_8p+(\bar R_i\oplus K_i) f_9p+(A_{i-1}\oplus A_i) f_{12}p+(A_i\oplus A_{i+1}f_{13}p+A_if_{14}p\ \ \ \ \ i=1,...,7</math>
Line 657 ⟶ 660:
La terza operazione, quella inerente all'azzeramento del registro '''C''', viene eseguita allo stato '''<math>f_{15}\bar G</math>'''
 
La tavola della Verità corrispondente è uguale a quella di Fig-. 4.5.9.<br/>
 
Le equazioni di input sono:
 
:::::<math>c_{it}=C_1f_{15}\bar Gp</math>
 
In definitiva, le equazioni di input dei Flipflip-Flopflop relativi al memory-address register sono:
 
::::<math>c_{0t}=C_1C_2C_3C_4C_5f_{11}p+(R_3\oplus C_0) gp+C_0f_{15}\bar G p</math>
Line 678 ⟶ 682:
dove <math>g=f_{10}+f_0+f_1+f_2\bar A_0+f_3+f_5</math>
 
In fig-. 4.5.11 compare un diagramma logico relativo al memory-address register.<br/ In questa figura è indicatindicata anche l'address decoder, che non è altro che una matrice con 6 coppie di input e 64 output.
 
Gli output '''D<sub>j</sub>''' (j<sup>sima</sup> parola) del decodificatore sono rappresentati come:
Line 744 ⟶ 748:
=== Unità di memoria ===
 
La memoria nel nostro ipotetico calcolatore è costituita da un insieme di 576 Flipflip-Flopflop: essa deve poter eseguire le due operazioni seguenti:
 
::::::<math>f_3:(A)\Rightarrow M<C></math>
Line 773 ⟶ 777:
=== Start-stop Flip-Flop ===
 
La partenza e l'arresto del calcolatore vengono controllati mediante il Flipflip-Flopflop '''G''', il quale viene a sua volta attivato dall'interruttore '''S''' mediante operazione manuale.
 
Le due operazioni richieste sono:
Line 797 ⟶ 801:
Nei paragrafi precedenti abbiamo stabilito le equazioni di '''input''' di tutti i registri del nostro ipotetico calcolatore.
 
laLa configurazione del calcolatore dato in fig-4.3.1 può essere ora completata dando le equazioni simboliche relative ai singoli registri. (fig-. 4.6.1).
 
Questo diagramma può essere reso più dettagliato usando i diagrammi logici stabiliti nei precedenti paragrafi.
Line 803 ⟶ 807:
La procedura operativa del nostro calcolatore sarà la seguente:
 
* -1# Accensione del calcolatore. Se il Flip-Flop di avvio-arresto si trova nello stato '''1''' durante questo periodo, il calcolatore funzioneera in maniera irregolare.
* -2# Si mette lo switch '''S''' nella posizione '''off'''.<br />Questo implica che lo start-stop Flip-Flop sia nello stato '''0''', lo operation counter in '''1111''' e l'indirizzo contenuto nel memory address register uguale a '''000000'''.<br />Si inserisce il programma in memoria mediante gli interruttori '''Q'''.
* -3# Si mette lo switch '''S''' nella posizione '''ON'''.<br />Il Flip-Flop '''G'''assume lo stati '''1''' e la macchina comincia ad esguire il programma. La prima istruzione si trova nella memoria di indirizzo '''000000'''.
* -4# Il programma deve terminare con una istruzione di stop: questa ultima inserisce '''0''' in '''G''', '''1111''' in '''F''' e '''000000''' in '''C'''.<br />Un nuovo programma può essere inserito nella memoria ed il calcolatore può iniziare il calcolo rimettendo lo switch nella posizione '''ON'''.
* -5# Si leggono i risultati ottenuti mediante dispositivi luminosi connessi ai Flipflip-Flopflop di memoria (non mostrati nei diagrammi precedenti).
 
[[File:Operazioni in un calcolatore digitale semplificato.png|center]]