Personal computer/Mapping/Interfacce: differenze tra le versioni
m Annullate le modifiche di 151.16.109.168, riportata alla revisione precedente di Cloish |
|||
Riga 75: | Riga 75: | ||
'''10010101'''. |
'''10010101'''. |
||
=== PIC(Programmable Interrupt Controller) |
=== PIC 8259 (Programmable Interrupt Controller)=== |
||
L'integrato 8259 riesce a gestire singolarmente fino a 8 |
L'integrato 8259 riesce a gestire singolarmente fino a 8 richieste di interruzioni da dispositivi esterni (IR0..IR7),e fino a 64 con un utilizzo di altri 8 8259 in cascata. |
||
+----------------+ |
+----------------+ |
||
Riga 97: | Riga 97: | ||
INT Interrupt verso il processore |
INT Interrupt verso il processore |
||
INTA* Interrupt Acknowledge |
INTA* Interrupt Acknowledge |
||
SP/EN* In buffered mode lo programma a master o slave in unbuffered |
|||
A0 Bit di indirizzamento |
A0 Bit di indirizzamento |
||
CAS[0..2] Usati dal 8259 Master per selezionare l'8259 Slave (Per utilizzo in cascata) |
CAS[0..2] Usati dal 8259 Master per selezionare l'8259 Slave (Per utilizzo in cascata) |
||
Riga 102: | Riga 103: | ||
Caratteristiche generali: |
Caratteristiche generali: |
||
* L'8259 occupa due byte nello spazio di indirizzamento, utilizzati per la programmazione |
* L'8259 occupa due byte nello spazio di indirizzamento, utilizzati per la programmazione |
||
* Possibilità i mascherare le |
* Possibilità i mascherare le richieste di interruzione dall'esterno |
||
* Possibilità di modificare le |
* Possibilità di modificare le priorità di gestione delle interruzioni dei dispositivi |
||
* L'8259 non ha il segnale di RESET ergo al riavvio della macchina rimane la sua programmazione interna (non una di default |
* L'8259 non ha il segnale di RESET ergo al riavvio della macchina rimane la sua programmazione interna (non una di default come nei normali dispositivi), deve essere necessariamente riprogrammato in fase di avvio del sistema insieme agli altri dispositivi se si vuole un comportamento diverso. |
||
Funzionamento Interno: |
Funzionamento Interno: |
||
All'interno l'8259 ha 3 registri da 8 bit |
All'interno l'8259 ha 3 registri da 8 bit non indirizzabili dal processore ma riservati per la gestione interna. |
||
* IMR (Interrupt Mask Register) è utilizzato per mascherare le |
* IMR (Interrupt Mask Register) è utilizzato per mascherare le richieste di interruzione |
||
* IRR (Interrupt Request Register) quando le |
* IRR (Interrupt Request Register) quando le richieste arrivano all' 8259 vengono campionate in questo registro |
||
* ISR ( |
* ISR (In Service Register) in modalità normale EOI memorizza quale interruzione è eventualmente in servizio |
||
Contiene anche una rete combinatoria |
Contiene anche una rete combinatoria |
||
* Priority Resolution che si occupa di gestire la corretta gestione tra i registri. |
* Priority Resolution che si occupa di gestire la corretta gestione tra i registri e risolvere i conflitti. |
||
Programmazione del PIC: |
Programmazione del PIC: |
||
I due Byte di indirizzo, sono utilizzati per la programmazione dell'8259 con diverse parole di controllo le Interrupt Control Word ICW1,ICW2,ICW3(master e slave),ICW4 e OCW1,OCW2 |
I due Byte di indirizzo, sono utilizzati per la programmazione dell'8259 con diverse parole di controllo le Interrupt Control Word ICW1,ICW2,ICW3(master e slave),ICW4 e OCW1,OCW2. |
||
La programmazione avviene in maniera sequenziale, la prima control word ha il bit4=1 e A0=0 , l'8259 capisce così che lo stiamo riprogrammando, le prossime saranno la ICW2, ICW3(se siamo in configurazione Master/Slave) e la ICW4. |
|||
Le OCW1 e OCW2 sono utilizzate per il normale funzionamento, la prima stabilisce quali interrupt sono mascherati ovvero non vengono considerati e la seconda può modificare l'ISR e modificare la gestione delle priorità delle IR. |
|||
Per A0=0 |
Per A0=0 |
Versione delle 01:04, 18 ott 2008
Le interfacce di I/O permettono la comunicazione tra CPU e dispositivi periferici. Qualsiasi dispositivo di interfacciamento ha quindi due interfacce, una rivolta verso il bus di sitema e quindi standard, l'altra specifica per il dispositivo periferico e quindi dipendente dal tipo di unità.
Per quanto riguarda un'interfaccia ad 8 bit, considerando soltanto la parte rivolta verso il bus dati, saranno sicuramente presenti i pin:
+----------------+ <-> | D[0..7] | --> | CS* | --> | RD* | --> interfaccia verso la periferica --> | WR* | --> | A[0..n-1] | +----------------+ D[0..7] 8 bit dati CS* Chip Select Se basso l'interfaccia è stata indirizzata RD* Read Utilizza l'interfaccia in lettura WR* Write Utilizza l'interfaccia in scrittura A[0..n-1] n bit di indirizzo
RS 232
8250 - Interfaccia Seriale
8255 - Interfaccia Parallela
L'interfaccia parallela 8255 gestisce tre porte bidirezioanli (input/output) in 3 modalità di funzionamento: è quindi un'interfaccia programmabile. Dispone di 4 registri interni per lo scanbio di:
- dati (un registro in ingresso ed uno in uscita)
- informazioni di controllo, programmazione (un registro)
- informazioni di stato
Avendo soltanto quattro porte, i bit di indirizzo sono due (A0 e A1), con le configurazioni:
A0 A1 0 0 Porta A 0 1 Porta B 1 0 Porta C 1 1 Registro di controllo
I pin di comunicazione del bus sono in tri-state, sia quando il CS* è al valore logico alto (è un segnale attivo basso), sia quando entrambi i segnali RD* e WR* sono alti.
Le tre modalità di funzionamento sono:
- Modo 0: Basic Input/Output La CPU legge/scrive sulle porte senza alcun meccanismo di sincronizzazione con l'unità periferica collegata all'interfaccia parallela.
- Modo 1: Strobed Input/Output La CPU si sincronizza al dispositivo periferico tramite un protocollo di handshake attraverso l'interrupt.
- Modo 2: Strobed Bi-directional I/O La comunicazione tra CPU e dispositivi è bidirezionale.
Tutte le tre porte possono essere programmate in modalità 0, mentre solo A e B possono esserlo in modalità 1. La porta C avrà sui bit da 4 a 7 (PC7-4) i segnali per la gestione del protocollo di handshake, se la porta A è in modalità 1; e sui bit da 0 a 3 (PC3-0) i segnali per la gestione del protocollo di handshake, se la porta B è in modalità 1.
Il registro di controllo conterrà una control word i cui bit sono:
D0 parte bassa della porta C 1 input 0 output D1 porta B 1 input 0 output D2 seleziona della modalità 0 mode 0 1 mode 1 D3 parte alta della porta C 1 input 0 output D4 porta A 1 input 0 output D5-D6 seleziona della modalità 00 mode 0 01 mode 1 1x mode 2 D7 mode set flag 1 active
Per cui, se volessimo programmare i pin “liberi” della porta C (lower) in input, la porta B in modo 1-output, i pin “liberi” della porta C (upper) in output, e la porta A in modo 0-input, avremo:
10010101.
PIC 8259 (Programmable Interrupt Controller)
L'integrato 8259 riesce a gestire singolarmente fino a 8 richieste di interruzioni da dispositivi esterni (IR0..IR7),e fino a 64 con un utilizzo di altri 8 8259 in cascata.
+----------------+ --> | CS* IR0| <-- --> | A0 IR1| <-- --> | WR* IR2| <-- --> | RD* IR3| <-- <-> | D[0..7] IR4| <-- <-- | INT IR5| <-- --> | INTA* IR6| <-- --> | SP/EN* IR7| <-- --> | CAS[0..2] | +----------------+ D[0..7] 8 bit dati CS* Chip Select Se basso l'interfaccia è stata indirizzata RD* Read Utilizza l'interfaccia in lettura WR* Write Utilizza l'interfaccia in scrittura IR[0..7] Interrupt Request(riconoscimento richeste a livello o fronte) INT Interrupt verso il processore INTA* Interrupt Acknowledge SP/EN* In buffered mode lo programma a master o slave in unbuffered A0 Bit di indirizzamento CAS[0..2] Usati dal 8259 Master per selezionare l'8259 Slave (Per utilizzo in cascata)
Caratteristiche generali:
- L'8259 occupa due byte nello spazio di indirizzamento, utilizzati per la programmazione
- Possibilità i mascherare le richieste di interruzione dall'esterno
- Possibilità di modificare le priorità di gestione delle interruzioni dei dispositivi
- L'8259 non ha il segnale di RESET ergo al riavvio della macchina rimane la sua programmazione interna (non una di default come nei normali dispositivi), deve essere necessariamente riprogrammato in fase di avvio del sistema insieme agli altri dispositivi se si vuole un comportamento diverso.
Funzionamento Interno:
All'interno l'8259 ha 3 registri da 8 bit non indirizzabili dal processore ma riservati per la gestione interna.
- IMR (Interrupt Mask Register) è utilizzato per mascherare le richieste di interruzione
- IRR (Interrupt Request Register) quando le richieste arrivano all' 8259 vengono campionate in questo registro
- ISR (In Service Register) in modalità normale EOI memorizza quale interruzione è eventualmente in servizio
Contiene anche una rete combinatoria
- Priority Resolution che si occupa di gestire la corretta gestione tra i registri e risolvere i conflitti.
Programmazione del PIC:
I due Byte di indirizzo, sono utilizzati per la programmazione dell'8259 con diverse parole di controllo le Interrupt Control Word ICW1,ICW2,ICW3(master e slave),ICW4 e OCW1,OCW2. La programmazione avviene in maniera sequenziale, la prima control word ha il bit4=1 e A0=0 , l'8259 capisce così che lo stiamo riprogrammando, le prossime saranno la ICW2, ICW3(se siamo in configurazione Master/Slave) e la ICW4. Le OCW1 e OCW2 sono utilizzate per il normale funzionamento, la prima stabilisce quali interrupt sono mascherati ovvero non vengono considerati e la seconda può modificare l'ISR e modificare la gestione delle priorità delle IR.
Per A0=0
- ICW1 conterrà una control word i cui bit sono:
D0 ICW4 (sempre a 1 nel 8088/8086) D1 1 singolo 0 cascata D2 N/C D3 1 sensibile ai livelli 0 sensibile ai fronti D4 1 D5-D7 N/C
Per A0=1
- ICW2 conterrà una control word i cui bit sono:
D0-D2 N/C D3-D7 contengono la parte alta dell'interrupt type (gli altri 3 vengono aggiunti in base all'interruzione)
- ICW4 conterrà una control word i cui bit sono:
D0 (sempre a 1 nei Pentium/Amd) D1 1 AEOI 0 EOI D2 0 Slave 1 Master D3 Buffered Unbuffered D4 0 Normal Mode 1 Special fully nested mode D5-D7 0 sempre