2. a.a. 2007/2008
Architettura dei calcolatori
Porta parallela
• Esempio di periferica: la porta parallela Intel 8255
• Gestione differenziata e programmabile di tre porte parallele bidirezionali (input ed output);
tre porte ABC ed un registro di controllo; Il dispositivo occupa 4 locazioni di indirizzo
8
PA0-PA7
CS*
CS* 8
WR**
IOWR* PB0-PB7
RD*
IORD* 8
A0
PC0-PC7
A1
RESET RESET
D0 - D7
8
Interfaccia con la CPU interfaccia con l’esterno
8255
Parte 3
5. a.a. 2007/2008
Architettura dei calcolatori
8255 Programmazione
• Per dettagli si veda il manuale su Web
• Programmazione:
• Lettura / scrittura da ogni porta; (ReadA,B,C, Write A,B,C)
• Programmazione della parola di controllo: modo e direzione per ogni porta; (Write Control)
• Scrittura di un singolo bit (porta C) con Write Control
A1 A0 RD* WR* CS*
x x x x 1 TRI-STATE
x x 1 1 0 TRI-STATE
0 0 0 1 0 Read A
0 0 1 0 0 Write A
0 1 0 1 0 Read B
0 1 1 0 0 Write B
1 0 0 1 0 Read C
1 0 1 0 0 Write C
1 1 1 0 0 Write Control
Parte 3
6. a.a. 2007/2008
Architettura dei calcolatori
PPI 8255
GROUP A
• Struttura interna A
CNTR
D0-D7
DATA
C HIGH
BUF
RD*
WR* READ
C LOW
CS
CS* WRITE
A1 CNTR
A0
GROUP
RESET
B B
CNTR
Modalita’ di trasferimento
1) basic i/o
LA CPU MASTER DECIDE SENZA SINCRONIZZAZIONE I TEMPI DI LETTURA E
SCRITTURA SULLA PORTA
2) strobed i/o
L'INTERFACCIA CON L'ESTERNO E' SINCRONIZZATA DA UN PROTOCOLLO AD
HANDSHAKE
3) strobed I/O bidirezionale
con doppio handshake in trasmissione e ricezione
Parte 3
7. a.a. 2007/2008
Architettura dei calcolatori
Parola di controllo
ESEMPIO:
ESEMPIO
MODE SET FLAG Control Word PORTA C LOW = INPUT
1=ACTIVE
GRUPPO B PORTA C HIGH = OUTPUT
GRUPPO A
PORTA B = OUT MODO 1
PORTA A = IN MODO O
CONTROL WORD
C LOW
= 10010101=95H
MODE SELECTION
1=INPUT
00=MODE 0
0 OUTPUT
0=OUTPUT
A
01=MODE
01 MODE 1
1=INPUT B 1=INPUT
1X=MODE 2
0=OUTPUT 0=OUTPUT
C HIGH
1=INPUT MODE SELECTION
0=OUTPUT 0=MODE 0
1=MODE 1
PORTA C SET/RESET
7 6 5 4 3 2 1 0
NON
1=SET
UTILIZZATI
0=RESET
0 0 0 Bit 0
0 0 1 Bit 1
SET/RESET FLAG
0 1 0 Bit 2
0 ACTIVE
0=ACTIVE 0 1 1 Bit 3
...................... Bit n
1 1 1 Bit 7
Parte 3
10. a.a. 2007/2008
Architettura dei calcolatori
Handshake di scrittura (modo 1)
INTEA= FF 6 del registro
C
INTEB= FF 2 del registro
C
Alcuni pin della porta C
sono usati come segnali di
controllo: in questo caso il
pin esterno corrispondente
è disconnesso dal
flip flop interno della porta C
Out DX,AL
Parte 3
11. a.a. 2007/2008
Architettura dei calcolatori
Handshake di lettura (modo 1)
INTEA= FF 4 del registro C
INTEB= FF 2 del registro C
Parte 3
12. a.a. 2007/2008
Architettura dei calcolatori
Driver della PPI
• Viene considerato rispetto allo spazio di indirizzamento dell’ 8086 ( indirizzi pari cosi’ con il
bus dei dati a 16 bit la parola di controllo e’ sempre collegata dai bit 0..7)
;------------------8255---------------------
;indirizzi e parola di controllo 8255
pio_addr equ ____h ;indirizzo 8255
pio_a_addr equ pio_addr+0;indirizzo porta a
pio_b_addr
i b dd equ pio_addr+2;indirizzo porta b
i dd +2 i di i t
pio_c_addr equ pio_addr+4;indirizzo porta c
pio_contr_addr equ pio_addr+6;indirizzo controllo
pio_contr_word
pio contr word equ 1 1_______b ; b
pio_c_word equ 0000____b ;ind.set/reset porta c
INIZ_55 proc near
mov DX,PIO_CONTR_ADDR
mov AL,PIO_CONTR_WORD
out DX,AL
mov AL PIO C WORD
AL,PIO_C_WORD
out DX,AL
ret
INIZ_55 endp
p
Parte 3
13. a.a. 2007/2008
Architettura dei calcolatori
Driver
assume CS:codice, DS:DATI
CODICE segment
; procedure
INIZ_55 proc
INIZ_55 endp
START:
mov ax DATI
ax,DATI
; strobe su porta c
mov ds,ax
mov dx,pio_contr_addr
mov ax,STACK_S
mov al, C2_ON
mov ss,ax
,
out dx,al
td l
mov sp,offset S_TOP
mov al, C2_OFF
out dx,al
;inizializzazione 8255
jp
jmp START
call INIZ_55 CODICE ends
;carico i valori che voglio vedere sui END START
mov al, PORTAA_WORD
mov dx pio a addr
dx,pio_a_addr
out dx,al
Parte 3