Silicon MOS 8255
Silicon Mos 8255 interfaccia di I/O al bus di sistema
Il data sheet completo è reperibile al
http://www.intel.com/design/periphrl/datashts/
Silicon Mos 8255
• L’8255 è un dispositivo, programmabile, di I/O progettato inizialmente per essere usato con i microprocessori 8008 e 8080, ma ancora
utilizzato.
• La sua funzione è quella di interfacciare i dispositivi periferici al bus di sistema.
• L’8255 è disponibile a 40-pin DIP o a 44-pin
plastic leaded chip carrier (PLCC) package. Noi esamineremo quello a 40 pin.
Caratteristiche del 8255
• 24 Pins di I/O programmabili.
• Completamente TTL compatibile.
• Completamente compatibile con le
famiglie dei microprocessori MCS
TM-8 e MCS
TM-80.
• Bit Set/Reset diretto
• 40-Pin Dual In-Line Package.
Descrizione dei Pins
• I 24 pins di I/O sono
divisi in 3 porte distinte:
Port A
Port A, Port B e Port C, Port B Port C, 3 I/O latch buffer
3 I/O latch buffer.
• Port C può essere divisa in due Porte di 4 bit:
Porta C lower (PC0-3) e Porta C upper (PC4-7).
4039 3837 3635 3433 3231 3029 2827 2625
2322 21 24 PA3PA2
PA1PA0 RDCS GND A1
PC7A0 PC6PC5 PC4PC0 PC1PC2
PB0PB1 PB2 PC3
PA4PA5 PA6PA7 RESETWR
D0 D1 D2D3 D4D5 D6D7 PB7Vcc
PB5PB4 PB3 PB6
82558255
12 34 56 78 109 1211 1314 1516
1819 20 17
• RD (Read Control) : Si tratta di un input che assume il valore basso
quando la CPU effettua una operazione di lettura.
Descrizione dei Pins
12 34 56 78 109 1112 1314 1516
1819 20 17
4039 3837 3635 3433 3231 3029 2827 2625
2322 21 24 PA3PA2
PA1PA0 RDCS GND A1
PC7A0 PC6PC5 PC4PC0 PC1PC2
PB0PB1 PB2 PC3
PA4PA5 PA6PA7 RESETWR
D0 D1 D2D3 D4D5 D6D7 PB7Vcc
PB5PB4 PB3 PB6
82558255
• WR (Write Control): Input che assume un valore basso quando la CPU
effettua una operazione di scrittura.
RD WR
Descrizione dei pins
• CS (Chip Select): Un valore basso su questo input attiva l’8255 per rispondere ai
segnali di RD e WR.
Altrimenti tali segnali vengono ignorati.
12 34 56 78 109 1112 1314 1516
1819 20 17
4039 3837 3635 3433 3231 3029 2827 2625
2322 21 24 PA3PA2
PA1PA0 RDCS GND A1
PC7A0 PC6PC5 PC4PC0 PC1PC2
PB0PB1 PB2 PC3
PA4PA5 PA6PA7 RESETWR
D0 D1 D2D3 D4D5 D6D7 PB7Vcc
PB5PB4 PB3 PB6
82558255
CS
Descrizone di Pins
• A1-0 (Address): questi input, in concomitanza con i
segnali RD e WR, seleziona una delle tre Porte oppure il Control Word Registers.
12 34 56 78 109 1112 1314 1516
1819 20 17
4039 3837 3635 3433 3231 3029 2827 2625
2322 21 24 PA3PA2
PA1PA0 RDCS GND A1
PC7A0 PC6PC5 PC4PC0 PC1PC2
PB0PB1 PB2 PC3
PA4PA5 PA6PA7 RESETWR
D0 D1 D2D3 D4D5 D6D7 PB7Vcc
PB5PB4 PB3 PB6
82558255
A1 A0
Descrizione dei Pins
0 0 1 0 0 Data Bus - Port A
0 1 1 0 0 Data Bus - Port B
1 0 1 0 0 Data Bus - Port C
1 1 1 0 0 Data Bus - Control Word
A1 A2 RD WR CS Output Operation(Write)
X X 1 1 0 Data Bus - 3° stato
X X X X 1 Data Bus - 3° stato
A1 A2 RD WR CS Funzioni disabilitate
0 0 0 1 0 Port A - Data Bus
0 1 0 1 0 Port B - Data Bus
1 0 0 1 0 Port C - Data Bus
1 1 0 1 0 Control Word - Data Bus
A1 A2 RD WR CS Input Operation(Read)
Descrizione dei Pins
• D7-0 (Data Bus): Bus bidirezionale a tre stati, connette l’8255 al bus di sistema.
12 34 56 78 109 1112 1314 1516
1819 20 17
4039 3837 3635 3433 3231 3029 2827 2625
2322 21 24 PA3PA2
PA1PA0 RDCS GND A1
PC7A0 PC6PC5 PC4PC0 PC1PC2
PB0PB1 PB2 PC3
PA4PA5 PA6PA7 RESETWR
D0 D1 D2D3 D4D5 D6D7 PB7Vcc
PB5PB4 PB3 PB6
82558255
• RESET: Un valore alto su questo input azzera i
registri di controllo e tutti i ports vengono impostati in modalità input mode.
RESET
Block Diagram
DATA BUS BUFFER
GROUP B
CONTROL
RESET RD WR A1 A0
Bidirezionale Data Bus
D7 - D0
I/O PA7 - PA0
I/O PC7 - PC4
I/O PC3 - PC0
I/O PA7 - PA0
GROUP A
CONTROL
GROUP A PORT C
UPPER
4 bit
GROUP B PORT C LOWER
4 bit
READ WRITE CONTROL
LOGIC
GROUP A PORT A
8 bit
GROUP B PORT B
8 bit
Mondo Esterno
Verso la CPU
Control Word
• La funzione di ciascun Porta è
programmata dal software di sistema. Ciò avviene tramite la CPU che invia una
control word al Data Buffer dell’8255.
• La control word contiene informazioni ( il modo, il bit set, il bit reset ecc.) per
l’inizializzazione delle funzionalità
dell’8255.
Modalità
• I 24 pins di I/O possono essere programmati in due gruppi di 12 (Gruppo A e Gruppo B) in 3 modi base di operare:
• Modo O - Basic Input/Output
• Modo 1 - Strobed Input/Output
• Modo2 - Bi-directional Bus
Modo 0 - Basic Input/Output
• In Modo 0, ciascun gruppo di 12 può essere programmato in insiemi di 4 e 8 per l’input e l’output.
8255
DATA BUS CONTROL BUSADDRESS BUS
D7 - D0
RD -WR A0 - A1
8 4 4 8
PB7 - PB0 PC3 - PC0 PC7 - PC4 PA7 - PA0
B C
A
I/O I/O I/O I/O
Modo 1 - Strobed Input/Output
• In Modo 1 ciascun gruppo può essere
programmato per avere 8 linee di input o output.
Tre dei rimanenti 4 pins sono usati per
l’handshaking e il controllo dell’interrupt.
8255
DATA BUS CONTROL BUSADDRESS BUS
D7 - D0
RD -WR A0 - A1
8 8
B C
A
I/O I/O
Modo 2 - Bi-directional Bus
• Nel Modo 2, otto linee (Port A) sono usate per un bus bidirezionale e cinque ( 4 Port C upper + 1 Port C lower) per handshaking.
8255
DATA BUS CONTROL BUSADDRESS BUS
D7 - D0
RD -WR A0 - A1
8
C A
Bi - Directional
I/O Control
Selezione dei Modi
• Quando il segnale di input RESET assume un valore alto tutte le ports saranno settate in input mode: le 24 linee saranno mantenute a un livello logico “uno” dall’ internal bus hold device.
• Quando il segnale di reset viene rimosso l’8255 può rimanere in input mode, senza aver bisogno di una ulteriore inizializzazione.
• Durante l’esecuzione del programma di sistema più di un modo può essere selezionato usando le appropriate istruzioni.
Selezione dei Modi
• La programmazione dei modi del Gruppo A e del Gruppo B possono essere combinati, così che le loro funzionalità possono essere compatibili per tutti i dispositivi di I/O.
• Per esempio il gruppo B può essere programmato in modo 0 per il controllo di un semplice
interruttore o di un display; mentre il gruppo A
può essere programmato in modo 1 per il controllo di una tastiera.
Mode Definition Format
• Le funzionalità del gruppo B vengono
programmate attraverso i primi tre bit della
control word (bit 0, 1, 2).
D7 D6 D5 D4 D3 D2 D1 D0
Port C (lower) 1 = INPUT 0 = OUTPUT PORT B
1 = INPUT 0 = OUTPUT Mode Selection 0 = Mode 0
1 = Mode 1
Gruppo B
Mode Definition Format Gruppo B
Control Word
D7=1
D7 D6 D5 D4 D3 D2 D1 D0
Port C (upper) 1 = INPUT
0 = OUTPUT PORT A
1 = INPUT 0 = OUTPUT Mode Selection 00 = Mode 0 01 Mode 1 1x mode 2
Gruppo A
Mode Definition Format Gruppo A
Control Word
D7=1
Set/Reset del singolo bit
• Gli 8 bits di Port C possono essere settati o resettati usando un’operazione di output (operazione di Bit Set/Reset).
D7 D6 D5 D4 D3 D2 D1 D0
Control Word Bit Set/Reset 1 = SET
0 = RESET
0 1 2 3 4 5 6 7 0 1 0 1 0 1 0 1 0 0 1 1 0 0 1 1 0 0 0 0 1 1 1 1
b1 b2 b3
Bit Select
BIT SET/RESET FLAG 0 = ACTIVE
Interrupt Control Functioms
• Quando l’8255 è programmato per operare in
modo 1 o in modo 2, i segnali di controllo possono essere usati come segnale per la richiesta di
interrupt alla CPU.
• Il segnale di richiesta di interrupt, generato dalla Port C può essere inibito o attivato dal settaggio o resettaggio dell’INTE flip-flop associato, usando la funzione di Bit Set/Reset di Port C.
Mode 0 - Basic I/O
• Il modo 0 prevede semplici operazioni di input e output per ciascuna delle tre porte.
• Non è richiesto l’handshaking, il dato è semplicemente scritto o letto da una
specifica porta.
Modo 0 (Basic Input)
tHR
tRA
Modo 0 Basic Output
Tempo in cui il dato di output rimane stabile nel buffer dopo che WR è stato disattivato.
Modo 1 (Strobed I/O)
• Questa configurazione prevede per l’I/O dei dati, attraverso una specifica porta, l’utilizzo di segnali di controllo e di stato.
• In modo 1, Port A e Port B usano le linee
di Port C per generare o ricevere questi
segnali di handshaking.
Mode1 input (Port A)
PC4 PC5
PC3
Inte 8
A STBA
IBFA
INTRA 2 I/O
RD
PA7 . PA0
0 1 1 1/0 X X X 1
D6 D5 D4 D3 D2 D1 D0 D7
PC6,7 PC6,7
1=INPUT 0=OUTPUT
Mode1 input (Port B)
PC4 PC5
PC3
Inte 8
B STBB
IBFB
INTRB RD
PB7 . PB0
X X X X 1 1 X 1
D6 D5 D4 D3 D2 D1 D0 D7
Segnali di controllo dell’input per il Modo 1
• STB (Strobe Input). Un valore basso su questo input carica il dato nell’input latch.
• IBF (Input Buffer Full F/F). Un valore alto su questo output indica che il dato è stato caricato
nell’input latch. IBF è settato quando il segnale di input STB viene attivato, mentre viene resettato durante la fase crescente del segnale RD.
Segnali di controllo dell’input per il Modo 1
• INTR (Interrupt Request).Un valore alto su questo output può essere usato per inviare un interrupt alla CPU, quando un device di input richiede un
servizio.
• INTR è settato quando i segnali STB, IBF e INT assumono tutti e tre valore alto.
• INTR è resettato durante la fase di discesa del segnale RD.
– INT A: Controllato dal bit set/reset di PC4 – INT B: Controllato dal bit set/reset di PC2
Modo 1 Strobed Input
tST
tSIB tSIT tRIT
tRIB
tPH tPS
STB IBF INTR
RD
Input dalla Periferica
Mode 1 output (Port A)
PC7 PC6
PC3
8 InteA
OBFA ACKA
INTRA WR 2
PA7 . PA0
0 1 0 1/0 X X X 1
D6 D5 D4 D3 D2 D1 D0 D7
PC4,5 PC4,5
1=INPUT 0=OUTPUT
Mode 1 output (Port B)
PC1 PC2
PC0
8 InteB
OBFB ACKB
INTRB WR
PA7 . PA0
X X X X 1 0 X 1
D6 D5 D4 D3 D2 D1 D0 D7
Segnali di controllo dell’output per il Modo 1
• OBF (Output Buffer Full F/F). Questo output
assumerà un valore basso per indicare che la CPU ha scritto il dato sulla porta in questione. L’OBF sarà settato dal segnale WR durante la sua fase di crescita.
• ACK (Acknowledge Input). Un valore basso su questo input informa l’8255 che il dato per la Port
A o per la Port B, è stato accettato.
• Si tratta di una risposta del device periferico per indicare che ha ricevuto il dato di output della CPU.
Segnali di controllo dell’output per il Modo 1
• INTR(Interrupt Request). Un valore alto su questo output può essere usato come interrupt alla CPU, quando un output device accetta un dato che gli è stato trasmesso dalla CPU.
• INTR è settato quando ACK e OBF e INTE assumono tutti e tre il valore uno.
• E’ resettato durante la fase di crescita di WR.
– INTE A: controllato dal bit set/reset di PC6. – INTE B: è controllato dal bit set/reset di PC2.
Modo 1 strobed output
WR
OBF
INTR
ACK
OUTPUT
tWIT
tAK tAIT tAOB
tWB tWOB
Mode 2 (Bidirectional Bus)
• Il modo 2 è una configurazione, usata sola per Port A, in grado di comunicare con
device periferici o strutture attraverso un singolo bus di 8 bit , per trasmettere e
ricevere dati (bus di I/O bidirezionale).
• I segnali di hanshaking hanno la funzione di
disciplinare il flusso all’interno del bus.
Mode Port A
PC3
PC7 PC6
PC4 PC5
INTE 1 INTE
2
INTRA
OBFA ACKA
STBA
PC2-0 I/O
IBFA PA7 -PA0 8
1 X X X 1/01/01/0 1
D6 D5 D4 D3 D2 D1 D0 D7
PC2-0
1 = INPUT 0 = OUTPUT PORT B
1 = INPUT 0 = OUTPUT GROUP B MODE 1 = INPUT
0 = OUTPUT
WR RD
Segnali di controllo il Modo 2 (operazioni di output)
• INTR (Interrupt request). Un valore alto su questo output può essere usato per inviare un interrupt alla CPU per richiedere
operazioni di input o di output.
• OBF (Output Butter Full). Un valore basso
su questo input indica che la CPU ha scritto
il dato sulla Port A
Segnali di controllo il Modo 2 (operazioni di output)
• ACK (Acknowledge). Un valore basso su questo input attiva il tri-state del buffer di Port A in stato di output per inviare in uscita il dato.
• In caso contrario il tri-state del buffer sarà in stato di alta impedenza.
• INTE 1 (The INTE Flip Flop Associato con
OBF). Controllato dal bit/set reset di PC
6.
Segnali di controllo il Modo 2 (operazioni di input)
• STB (Strobe Input). Un valore basso su questo input carica il dato nel input latch.
• IBF (Input Buffer Full F/F). Un valore alto su questo output indica che il dato è stato caricato sul latch di input.
• INTE 2 (The INTE Flip-Flop Associato with
IBF). Controllato dal bit set/reset di PC
4.
WR OBF INTR ACK STB
IBF
Periferical Bus
RD
tWOB
tAOB
tAK
tKD tAD
tPS tSIB
tST
tPH tRB