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.
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'''.
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
Si dice che il calcolatore ha una struttura a parole (a voci) se un da e che questa sia piccola.
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
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
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
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 '''
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
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
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
{|
|-
! Codice........... !! Istruzione !!
|-
| 000 uvwxyz || Addizione || Prende il numero dalla memoria all'indirizzo uvwxyz, lo mette nel
|-
| 001 uvwxyz || Sottrazione || Prende il numero dalla memoria all'indirizzo uvwxyz, lo mette nel
|-
| 010 uvwxyz || trasferimento condizionato || Se A<sub>0</sub>=1 (segno di A negativo) si prende come nuova istruzione
|-
| 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
=== 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
L'ultima istruzione del programma in memoria è in genere una istruzione di '''stop''': l''''operation counter''' invia il segnale di controllo '''a''' al
== 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
=== 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 è
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
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:
:::::<math>(M<C>)\Rightarrow R</math>
Durante l'operazione di caricamento dell'operando, il contenuto della parte indirizzo di '''R''' che
:::::<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
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
Per un contatore
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
|-
| 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
Mediante la tabella 4.4.4 e conoscendo la sequenza di controllo relativa ai cicli-istruzione e cicli.esecuzione si può
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
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
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.
Quando lo switch ''S''' viene messo nello stato '''off''', il
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
Da figura 4.4.5 si ha allora che lo stato del
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
::<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
Chiamando quindi '''p''' l'impulso d'orologio che commuta i
::<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>'''
Le equazioni di input dei
:::::<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
[[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
L'operazione di scorrimento a sinistra
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
::<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
Le equazioni di input sono:
:::::<math>c_{it}=C_1f_{15}\bar Gp</math>
In definitiva, le equazioni di input dei
::::<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
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
::::::<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
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.
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:
[[File:Operazioni in un calcolatore digitale semplificato.png|center]]
|