edutecnica    
 

 

IL MICROPROCESSORE
Questo modulo esemplifica una semplice CPU costituito dai seguenti elementi:

Registro 0 (R0): registro a 4 bit con indicatore di overflow come "carry" (riporto).
Registro 1 (R1): registro a 4 bit di dati registrati, senza trasporto di bit.
INSTRUCTION: registro di istruzione che consente di visualizzare il comando che attualmente in elaborazione.
PROGRAM COUNTER: mostra l'indirizzo ROM che della prossima istruzione da eseguire.
RESET: Ripristina tutti i componenti, ad eccezione della ROM, della RAM, e della porta IN, ritornandoli al loro stato originale.
CLOCK: imposta il segnale di clock manualmente.
AUTO: imposta il segnale di clock automaticamente.
ROM: modulo programmabile costituito da una serie di 10 parole a 4 bit.
RAM: modulo costituito da quattro parole di 4 bit ognuna, che pu essere usato dalla CPU per memorizzare i dati.
I/O: nella porta IN si pu inserire una parola per trasferirla alla CPU. La porta OUT si attiva quando la CPU ha realizzato una parola di dati da inviare verso l'esterno.
DATA BUS: bus dei dati a 4 bit, in cui passano le parole scambiate fra i componenti.
ADDRESS BUS: bus a 5 bit dove transitano gli indirizzi delle locazioni di memoria a cui ci si riferisce.
CONTROL BUS: bus di controllo a 2 bit per coordinare le operazioni di lettura/scrittura.

OPERAZIONI
In via preliminare, necessario programmare la ROM; questo avviene cliccando sulle singole locazioni di questa attivando i bit delle 10 parole di cui costituita.
Se il programma deve risponde ad un dato posto alla porta di ingresso, assicurarsi di aver programmato il valore desiderato nella porta IN.

Il programma pu procedere manualmente o automaticamente.
- Automatico: Fare clic sul pulsante AUTO nella CPU.
- Manuale: Fare clic sul pulsante CLOCK del microprocessore; ad ogni clic, verr attuato un ciclo.

Attivando il pulsante RESET tutti gli elementi ad eccezione della ROM della RAM e della porta IN, vengono impostati a 0.

Per terminare un programma possiamo impostare l'istruzione 0100= MVI R0 lasciando le successive locazioni della ROM a 0.

ELENCO DEI COMANDI

Mnemonico Codice Num.parole Cicli CPU Descrizione
Istruzioni di trasferimento dati:
MVI R0 0100 2 8 parola successiva in R0
MVI R1 0101 2 8 parola successiva in R1
STO R0 0000 2 10 R0 in RAM
STO R1 0001 2 10 R1 in RAM
LD R0 0010 2 10 RAM in R0
LD R1 0011 2 10 RAM in R1
MOV R1,R0 1001 1 5 copia di R0 in R1
MOV R0,R1 1010 1 5 copia di R1 in R0
Istruzioni di I/O
IN 1000 1 7 valore della porta IN in R0
OUT 1011 1 7 valore di R0 nella porta OUT
Istruzioni aritmetiche
ADD R1 1101 1 5 R1+R0 (senza riporto), risultato in R0
Comandi di rotazione
ASL 1110 1 5 shift a sinistra, MSB in riporto
RAR 1111 1 5 shift a destra LSB in riporto
Comandi di salto
LMP 0110 2 8 salto di indirizzo della ROM (chiusura)
JC 0111 2 8 salto di indirizzo della ROM se Carry=1
JNC 1100 2 8 salto di indirizzo della ROM se Carry=0

RAM
Gli indirizzi RAM del processore sono 16-19. Questi indirizzi non possono essere mappati con 4 bit e quindi il loro indirizzo non pu essere passato come parametro in ROM.
Pertanto per l'indirizzamento dei dati in RAM dalla ROM ha le sue regole.
Dopo un'istruzione del tipo:
0000= STO R0 oppure
0001= STO R1
vanno messi i codici:
0000 - 0011 corrispondenti alle locazioni RAM 16-19.

PROGRAMMA 1
Copia una parola nel registro 0 e quindi scrive la parola nel secondo Indirizzo nella RAM
( locazione 17 ) e poi nel primo ( locazione 16 ) .

ROM Descrizione Ciclo CPU Azione fase
0100 parola successiva in R0 1 L'indirizzo 0 del contatore di programma viene posto sul bus indirizzi. Si attiva il chip led della ROM fetch
    2 Il primo valore contenuto nella ROM (in locazione 0) posto sul bus di dati (0100). I/O Controlbus impostato su READ.
    3 La parola dal bus dati viene copiata nel registro di istruzioni. L'istruzione viene decodificata.
    4 incremento del program counter
0111 parola di dati per R0 5 indirizzo 1 (dal contatore di programma) posizionato sul bus indirizzi.
    6 valore di indirizzo di ROM 1 (0111) posto sul bus di dati.
    7 incremento del program counter
    8 la parola dati (0111) viene scritta nel registro 0 execute
0000 R0 nella RAM 1 Indirizzo 2 (dal contatore di programma) viene posto sul bus indirizzi fetch
    2 il secondo valore contenuto nella ROM viene posto sul bus di dati (0000). Controlbus impostato su READ
    3 la parola sul bus dati viene copiata nel registro di istruzioni. L'istruzione viene decodificata.
    4 incremento del program counter
0001 R1 in RAM 5 L'indirizzo 3 (dal contatore Prg) posto sul bus indirizzi.
    6 valore in locazione 3 della ROM posto sul bus di dati (0010). La CPU memorizza i dati internamente parola
    7 incremento del program counter
    8 L'indirizzo RAM viene posto sul bus indirizzi. execute
    9 I dati R0 (0111) sono posti sul bus dati
    10 Il bus di controllo impostato su WRITE. I dati vengono scritti indirizzo RAM 17

Come si nota l'istruzione successiva 0000= STO R0 che indica di caricare il contenuto del registro R0 in RAM. Poi viene letta l'istruzione successiva 0000 che indica la locazione 16 della RAM. Il dato 0111 verr successivamente caricato nella locazione 16 della RAM.

PROGRAMMA 2

Il programma deve sommare il valore impostato nella parta IN al valore 3 impostato nellaROM.
A tal fine il registro R1 della ROM viene posto a 3 (0011).
Vengono, qui omessi, i cicli di CPU.

Indirizzo ROM Valore ROM Azione
0 0101 muovi l'istruzione successiva in R1
1 0011 valore numerico 3 immagazzinato nel registro R1
2 1000 valore della porta IN in R0
3 1101 R1+R0 , risultato in R0
4 1011 valore di R0 nella porta OUT
5 0100 terminazione del programma

In figura è mostrato come, impostando 3 nella ROM e 5 in ingresso, otteniamo 8 in uscita.

 

 
edutecnica