dal 2015 - visita n. 1693
Integrati
Integrati

 

8255 (Programmable Parallel Interface)


Il dispositivo per la comunicazione parallela PPI 8255 (Programmable Parallel Interface) è stato introdotto moltissimi anni orsono, in concomitanza con i primi microprocessori 8080 Intel, per rendere più flessibile l'uso dei propri prodotti. E' ancora molto usato o da solo o, più spesso, integrato assieme ad altri dispositivi di supporto, nei cosiddetti chip multifunzione che affiancano i microprocessori sulle schede madri. Grazie alla sua versatilità è stato utilizzato nelle interfacce più svariate: stampanti, tastiere, display, terminali, convertitori A/D e D/A, floppy, monitor CRT, macchine utensili, etc. Brevemente, è la classica interfaccia tra il microprocessore ed il mondo esterno.

  • Si tratta di un integrato programmabile impaccato in contenitore DIN a 40 pin o in contenitore PLCC a 44 pin. Possiamo subito distinguere due gruppi di pin: 24 (8 per ogni porta) per i collegamenti con il mondo esterno, i restanti per il collegamento con il microprocessore.
    In particolare, appartengono al primo gruppo i segnali PA0..PA7, PB0..PB7, PC0..PC7; fanno parte del secondo gruppo i segnali D0..D7, i 2 pin per l'alimentazione e tutti gli altri segnali di controllo.



Architettura Interna del PPI 8255


Dal punto di vista del programmatore l'8255 si presenta come un insieme di 4 registri a 8-bit, tre corrispondenti alle porte ed uno al Registro di Controllo.
Accedendo ai registri associati alle 3 porte si esegue il trasferimento dati. Accedendo al Registro di Controllo si definisce il modo di funzionamento per ciascuna porta. Il Registro di Controllo può essere solo scritto. I 4 registri sono accessibili tramite i pin D0-7, selezionando quello desiderato tramite i pin A0 e A1.

  • Un buffer bidirezionale a 8-bit di tipo 3-state che rappresenta l'interfaccia tra l'8255 e il bus dati, attraverso il quale vengono trasmessi o ricevuti dati, parole di controllo e informazioni sullo stato del PPI;
  • Un blocco di controllo delle operazioni di lettura/scrittura, realizzato tramite logica cablata, che si occupa di abilitare il funzionamento di dispositivi interni in base alla configurazione dei segnali di comando direttamente gestiti dal processore:
  • Due blocchi di controllo per le porte, che comandano, in base ai segnali provenienti dalla logica di controllo di R/W e alle parole di comando provenienti dalla CPU, rispettivamente il gruppo formato dalla porta A e la parte alta della porta C (gruppo A) e quello formato dalla porta B e la parte bassa della porta C (gruppo B).
    Dal punto di vista della programmazione del dispositivo, questi due blocchi logici di controllo sono visti come un unico registro ad 8-bit, detto registro di controllo, indirizzabile dal microprocessore nell'area di I/O;



Questi i ruoli svolti da ciascuno dei segnali di controllo:



A1A0Registro
00Registro Porta A
01Registro Porta B
10Registro Porta C
11Registro di Controllo

Tabella 1

N.B. Durante le operazioni di acquisizione o invio di dati attraverso le porte del PPI, la logica di controllo si preoccupa di abilitare il trasferimento dati fra il buffer che interfaccia il bus dati con il PPI e i buffer che interfacciano il PPI con il mondo esterno; si garantisce così la sincronizzazione fra il microprocessore e i dispositivi periferici, che in generale lavorano a clock differenti;



Le Modalità di funzionamento del PPI 8255


La programmazione del PPI avviene caricando nel registro di controllo opportuni valori che consentono non solo di selezionare le varie porte come porte di ingresso/uscita, ma anche di definire per ciascuna di esse la modalità di funzionamento, che può essere scelta tra:

Quando il PPI è programmato per operare in modo 1 o 2, alcune linee associate alla porta C possono essere utilizzate per inviare alla CPU delle richieste d'interruzione.
L'abilitazione o l'interdizione all'invio di questi segnali d'interruzione viene controllata tramite appositi flip-flop di inte (Interrupt enable) il cui valore può essere definito tramite le operazioni set/reset che possono essere gestite tramite il registro di controllo.


La Programmazione del PPI 8255


La programmazione del PPI, sia per quanto riguarda la modalità di funzionamento sia per quel che concerne l'abilitazione alle interruzioni, avviene attraverso dei byte che il microprocessore invia all'8255 sul bus dati (D0..D7), indirizzandoli verso il registro di controllo (segnali A0 e A1 entrambi alti).
Il formato di questi byte prende il nome di maschera di controllo, ed ha il formato seguente:



In particolare quando il bit più significativo (D7) vale 1, il byte di controllo consente di impostare le modalità di funzionamento delle tre porte secondo il seguente schema:

D7 1 Preimpostato per la programmazione delle porte
D6-D5 
00
01
10
MA - Modo di funzionamento del gruppo A
MODO 0
MODO 1
MODO 2
D4 
1
0
PA - Direzione del trasferimento per la porta A
INPUT
OUTPUT
D3 
1
0
PCH - Direzione del trasferimento per la parte alta della porta C
INPUT
OUTPUT
D2 
0
1
MB - Modo di funzionamento del gruppo B
MODO 0
MODO 1
D1 
1
0
PB - Direzione del trasferimento per la porta B
INPUT
OUTPUT
D0 
1
0
PCL - Direzione del trasferimento per la parte bassa della porta C
INPUT
OUTPUT
Tabella 2

Quando invece il bit più significativo (D7) assume il valore 0, il byte di controllo permette di modificare il valore dei singoli flip-flop di abilitazione delle interruzioni, usati nelle modalità 1 e 2.



D7 0 Preimpostato per la programmazione dei flip-flop
D6..D4  Non significativi
D3..D1 
000
001
010
...
111
AB - Address Bit, indirizzo di selezione del bit della porta C su cui operare
bit 0
bit 1
bit 2
...
bit 7
D0  DB - Data Bit, bit di dato assegnato al bit indirizzato della porta C
Tabella 3



Le Comunicazioni del PPI 8255



Applicazioni


Nei semplici esempi prospettati supporremo di avere installato un PPI8255 all'indirizzo base 0300h e quindi l'assegnazione degli indirizzi sarà la seguente:

rPA = 0300hrPB = 0301hrPC = 0302hrCTRL = 0303h
  1. Programmare in asm86 un PPI8255, funzionante in modo 0, con PA in output e PB e PC in input. Il problema fondamentale è la preparazione della maschera di programmazione, costituita da 8 bit impostati secondo la tabella 2 e le richieste del problema: D7=1 (Impostazione predefinita), D6=0 e D5=0 (Modo 0 gruppo A), D4=0 (PA in Output), D3=1 (PCH in Input), D2=0 (Modo 0 gruppo B), D1=1 (PB in Input), D0=1 (PCL in Input).
    Pertanto la maschera sarà:   10001011b oppure 8Ah, ed il codice seguente programmerà il PPI8255:
         MOV     AL,8Ah
         MOV     DX,0303h
         OUT     DX,AL
    
  2. Emettere su PA 8 bit di valore 00110101 e leggere lo stato di PB. Dopo aver programmato il PPI8255 come al punto 1, eseguire il codice seguente:
         MOV     AL,35h
         MOV     DX,0300h
         OUT     DX,AL
         MOV     DX,301h
         IN      AL,DX
    
    Il dato 35h verrà emesso su PA, i dati presenti su PB verranno caricati (letti) nel registro AL.


Elettronica
8255
ADC0808
74LS373
74LS245
74LS138



Nelle persone di capacità limitate la modestia è semplice onestà, ma in chi possiede un grande talento è ipocrisia.
Arthur Schopenhauer

Valid CSS!
pagina generata in 0.001 secondi