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

Contenuto cancellato Contenuto aggiunto
Wim bot (discussione | contributi)
Wim bot (discussione | contributi)
m Bot: Correggo errori comuni (tramite La lista degli errori comuni V 1.1)
Riga 30:
Nella terza fase viene elaborato un insieme di equazioni logiche od un insieme di diagrammi logici che descrivono le singole le singole operazioni del calcolatore.
 
Nell'attuale progetto logico di un semplice calcolatore digitale, vengono costruite in modo completo le equazioni logiche ; i diagrammi logici verranno mostrati abbastanza dettagliatamente in modo che il diagramma completo possa essere ricavato dal lettore.
 
== Progetto del sistema ==
Riga 121:
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.
Riga 127:
Il controllo del Flipo-Flop '''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.
Riga 211:
!! Operazioni richieste............... !! Operazioni ausiliarie
|-
| Addizione (000uvwxyz) || (M<C>=>R ; (R)+(A)=>A || (Ad[R])=>C ; (C)+10=>C
|-
| Sottrazione (001uvwxyz) || (M<C>R=>R ; (A)-(R)=>A || come sopra
|-
| Trasferimento condizionato (010uvwxyz) || nessuno || come sopra se A<sub>0</sub>=0 nessuno se A<sub>0</sub>=1
|-
| Memorizzazione (011uvwxyz) || (A)=>M<C> || (Ad[R])=>C ; (C)+1=>C
|-
| Trasferimento incondizionato (100uvwxyz) || nessuno || nessuno
|-
| Shift right (1011000) || (A<sub>{i-1}</sub>=>A<sub>i</sub> ; (A)<sub>0</sub>=>A<sub>0</sub> || (Ad[R])?>C ; (C)+1=>C
|-
| Test Shift left (1010100yz || (A<sub>i+1</sub>)=>A<sub>i</sub> ; (A<sub>0</sub>)=>A<sub>8</sub> || come sopra
Riga 227:
| Azzeramento accumulatore (1010010yz || 0=>A || come sopra
|-
| Stop (10010001yz) || 0=>G; ;0=>C ; 1=>F || nessuna
|-
| Comando d'avvio (manuale) || 1=>G || nessuna
Riga 305:
[[File:Tabella 4.4.2.png|right]]
 
Durante la fase del ciclo di istruzione vi sono quattro operazioni (fig-4.4.3a); la prima permette di prendere una istruzione: una parola viene presa dalla memoria il cui indirizzo è nel registro '''C''' (000000 per la prima istruzione ) e trasferita nel registro '''R'''; simbolicamente:
 
:::::<math>(M<C>)\Rightarrow R</math>
Riga 319:
A questo istante la la parte indirizzo di '''R''', è un '''operand address''' e quindi non è più l'indirizzo di istruzione menzionato nella fase precedente.
 
Dopo il trasferimento la parte di codice operativo fa generare dal decodificatore di operazioni, dei segnali di comando, dando cosicosì inizio all'esecuzione della istruzione mentre l'indirizzo dell'operando si trova ora nel registro '''R''':
 
Normalmente questo '''ciclo istruzione''' è completo: nel nostro calcolatore ipotetico, data la sua semplicità, è necessaria una quarta operazione che trasferisca l'indirizzo della istruzione contenuta in '''C''' nella parte indirizzo di '''R''':
Riga 355:
:::::<math>(R)+(A)\Rightarrow A</math>
 
Infine, il contenuto del registro '''C''' (contenente l'indirizzo della attuale istruzione) viene incrementato di '''1''' diventando cosicosì l'indirizzo della nuova istruzione:
 
:::::<math>(C)+1\Rightarrow C</math>
 
CosiCosì il ciclo esecutivo risulta completo.
 
La nuova istruzione è pronta per essere presa dalla memoria mediante la prima operazione del '''ciclo istruzione''' dell'indirizzo di memoria indicato dal contenuto di '''C'''.
Riga 422:
|}
 
Poiché sono sufficienti 14 stati, i comandi '''f<sub>6</sub>''' e '''f<sub>7</sub>''' non vengono usati. Gli stati '''f<sub>4</sub>''' e '''f<sub>10</sub>'''sono quelli corrispondenti al ciclo istruzione ; gli stati rimanenti corrispondono al ciclo esecutivo.
 
Poiché vi sono 9 istruzioni, vi sono nove possibili percorsi da '''f<sub>10</sub>''' a '''f<sub>4</sub>'''; durante il ciclo esecutivo, la sequenza operativa segue una di queste nove vie.
Riga 430:
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 Flip-Flop '''F<sub>1</sub>''' sia uguale a '''0''' per tutti i comandi di istruzione, semplificando cosicosì 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ò costrure la figura 4.4.5 detta anche diagramma di stato in cui compaiono gli stati del calcolatoredopo le singole operazioni e le operazioni conseguenti ad ogni singolo stato.
Riga 556:
Da tale tabella, si ricavano le seguenti equazioni di input:
 
:::::<math>Q_{it}=(R\oplus K_i) f_8p\ \ \ \ i=0,...,8\ \ \ \ \ (4.5.6)</math>
 
mentre per il riporto si ha:br/>
:::::<math>K_{i-1}=(R_iK_i+R_iA_i+A_iK_i) f_8P\ \ \ \ i=1,....,8</math>
 
:::::<math>K_8=0</math>
Riga 569:
Le equazioni di input e del riporto sono quindi:
 
::::<math>a_{it}=(\bar R_i\oplus K_i) f_9 p\ \ \ \ \ i=0,....,8\ \ \ (4.5.7)</math>
 
::::<math>K_{i-1}=\bar R_iK_i+\bar R_iA_i+A_iK_i) f_9 p\ \ \ \ i=1,..,8</math>
 
::::<math>K_8=f_9 p</math>
Riga 609:
quindi le equazioni di input dei Flip-Flop 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>
 
::<math>a_{0t}=(A_0\oplus K_0) f_8p+(\bar R_0\oplus K_0) f_9p+(A_0\oplus A_1) f_{13}p+a_0f_{14}p</math>
 
::<math>a_{8t}=(A_8\oplus K_8) f_8p+(\bar R_8\oplus K_8) f_9p+(A_7\oplus A_8) f_{12}p+(A_0\oplus A_8) f_{13}p+a_8f_{14}p</math>
 
::<math>K_{i-1}=(R_iK_i+R_iA_i+A_iK_i) f_8p+(\bar R_iK_i+|bar R_iA_i+A_iK_i) f_9p</math>
 
i=1,...,8
Riga 635:
Le equazioni di input da tale tavola sono:
 
:::::<math>C_{it}=(R_{i+3}\oplus C_i) gp\ \ \ \ i=0,...,5</math>
 
:::::<math>g=f_{10}+ f_0+f_1+f_2\bar A_0+f_3+f_5</math>
Riga 664:
In definitiva, le equazioni di input dei Flip-Flop 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>
 
::::<math>c_{1t}=C_2C_3C_4C_5f_{11}p+(R_4\oplus C_1) gp+C_1f_{15}\bar G p</math>
 
::::<math>c_{2t}=C_3C_4C_5f_{11}p+(R_5\oplus C_2) gp+C_2f_{15}\bar G p</math>
 
::::<math>c_{3t}=C_4C_5f_{11}p+(R_6\oplus C_3) gp+C_3f_{15}\bar G p</math>
 
::::<math>c_{4t}=C_5f_{11}p+(R_7\oplus C_4) gp+C_4f_{15}\bar G p</math>
 
::::<math>c_{5t}=f_{11}p+(R_8\oplus C_5) gp+C_5f_{15}\bar G p</math>
 
dove <math>g=f_{10}+f_0+f_1+f_2\bar A_0+f_3+f_5</math>
Riga 706:
Le equazioni di input saranno quindi:
 
:::::<math>r_{it}=(C_{i-3}\oplus R_i) f_{10}p\ \ \ \ \ i=3,...,8</math>
 
La seconda operazione prende una parola dalla memoria il cui indirizzo è dato dal contenuto del registro '''C'''e la conserva nel registro '''R'''.
Riga 718:
Le equazioni di input sono:
 
:::::<math>r_{it}=(\bar M_{ji}R_i+M_{ji}\bar R_i)(f_0+f_1+f_4) p</math>
 
Le equazioni precedenti non sono complete in quanto contemplano solo il trasferimento del contenuto del bit '''M<sub>ji</sub>''' e non considerano la selezione della voce di indirizzo '''D<sub>j</sub>'''Se il bit '''i<sup>simo</sup>''' della '''j<sub>sima</sub>''' parola in m3emoria viene selezionato mediante il comando '''D<sub>j</sub>''' (il quale può esseree uno qualsiasi dei 64 comandi di indirizzo) '''M<sub>ji</sub>''' e <math>\bar M_{ji}</math> vengono sostituiti dalle equazioni seguenti:
Riga 728:
Per cui, le equazioni di input diventano:
 
:::<math>r_{it}=[\bar R_i(\sum_{j=0}^{63}M_{ji}D_j)+ R_i(\sum_{j=0}^{63}\bar M_{ji}D_j)](f_0+f_1+f_4) p\ \ \ \ i=0,...,8</math>
 
In definitiva, le equazioni di input del registro '''R''' saranno:
 
:::<math>r_{it}=[\bar R_i(\sum_{j=0}^{63}M_{ji}D_j)+ R_i(\sum_{j=0}^{63}\bar M_{ji}D_j)](f_0+f_1+f_4) p\ \ \ \ i=0,...,2</math>
 
:::<math>r_{it}=[\bar R_i(\sum_{j=0}^{63}M_{ji}D_j)+ R_i(\sum_{j=0}^{63}\bar M_{ji}D_j)](f_0+f_1+f_4) p+(C_{i-3}\oplus R_i) f_{10}\ \ \ \ i=3,...,8</math>
 
dove '''D<sub>j</sub>''' è dato dall'equazione (4.5.12).
Riga 755:
Le equazioni di input saranno allora:
 
::::<math>m_{jit}=(A_i\oplus M_{ji}) f_3D_j p\ \ \ \ i=o,..,8\ \ \ \ j=0,...,63</math>
 
[[File:Operazione di input.png|right]]
Riga 765:
La forma finale delle equazioni di input della unità di memoria è:
 
:::::<math>m_{ji}=(A_i\oplus M_{ji}) f_3D_jp+(Q_{ji}\oplus M_{ji}p\ \ \ \ i=0,...,8\ \ \ \ j=o,...,63</math>
In fig-4.5.15 compare un diagramma logico abbreviato del registro di memoria.