Interfacciamento PC

Transcript

Interfacciamento PC
Interfacciamento di periferiche
I/O al μP 8088
5.1 Principali segnali della CPU 8086
5.2 Periferiche di I/O e loro gestione
5.3 Collegamento di periferiche di input
5.4 Collegamento di periferiche di output
5.5 Collegamento di periferiche di input e output
5.6 Esempio d'interfacciamento di periferica d'input
con indirizzo selezionabile
5.7 Esempio d'interfacciamento con possibilità di
selezione di più periferiche
5.8 Istruzioni per leggere o scrivere in dato su una
periferica
.
Interfacciamento di dispositivi I/O al μP
5.1
Principali degnali della CPU 8086
-
Bus indirizzi. Il bus è composto da 20 linee unidirezionali, consente di
trasmettere gli indirizzi dal µP alle periferiche.
-
Il Bus dati
Il bus dati è costituito da 16 linee bidirezionali che
permettono lo scambio di dati tra µP e le periferiche.
-
IO/M (Input Output/Memory ), quando il µP esegue una istruzione di
lettura (IN) da una periferica o di scrittura (OUT) in una periferica,
esso va a livello basso; nelle operazioni di lettura e scrittura con la
memoria va a livello alto
-
RD (READ). IL µP quando legge (IN) un dato da dispositivo periferico,
abilitato dal bus indirizzo, esso è a livello basso.
-
WR (WRITE). IL µP quando scrive (OUT) un dato ad un
periferico, abilitato dal bus indirizzo, esso è a livello basso.
dispositivo
DIFFERENZE CPU 8086 / 8088
La CPU8088 è completamente compatibile dal punto di vista software con la
CPU8086. Dal punto di vista hardware sono presenti alcune differenze ad es.
CPU 8088
BUS DATI a 8 bit (le linee comuni
agli indirizzi sono AD0-AD7)
IO/M segnale attivo alto per le
periferiche e basso per le memorie
Segnale BHE non presente
Prof. Francesco Di Sabatino
CPU 8086
BUS DATI a 16 bit (le linee comuni
agli indirizzi sono AD0-AD15
IO/M segnale attivo basso per le
periferiche e alto per le memorie
Il segnale BHE (Bus High Enable)
permette di selezionare un
trasferimento sul BUS DATI di un
solo By te o di due
Sistemi Elettronici Automatici
ITIS-Teramo
69
Interfacciamento di dispositivi I/O al μP
5.2
PERIFERICHE I/O E LORO GESTIONE
Periferica di Input
Periferica che invia, attraverso il Bus Dati, informazioni alla CPU con cui è collegata. (La
CPU effettua una operazione di lettura per acquisire i dati dalla periferica)
Periferica di Output
Periferica che riceve attraverso il bus dati informazioni dalla CPU
(la CPU effettua una operazione di scrittura sulla periferica)
Tutte le volte che una periferica deve essere collegato con al bus dati di un sistema a µP
occorre servirsi di un porto I/O, ad es.
•
per periferiche di input, buffer tree-state monodirezionale o bidirezionale (ad es.74LS244
,.74LS245
•
per periferiche di output, D-FF, ad es. 74LS374, ecc.)
Ciò si rende necessario poiché la periferica non può essere collegata permanentemente al BUS
DATI, ma deve essere collegato soltanto se selezionata, anche per non caricare il bus.
La CPU 8086 accede ad una periferica a seguito di specifiche istruzioni di IN (Input from Port,
leggi un dato da un port d'ingresso) e di OUT (Output to port, invia un dato ad un port d'uscita)
ed utilizza per l'indirizzamento delle periferiche di I/O, solo 16 delle 20 linee del bus indirizzi
(A0-A15), le rimanenti A16-A20 sono forzate a zero logico. Il dato inviato o ricevuto dalla CPU
deve essere memorizzato in AL se ad 8 bit, ed in AX se se è a 16 bit, L'indirizzo della periferica
può essere un dato immediato se occupa 8 bit, altrimenti deve essere caricato nel registro DX
•
IN AL,DX carica in AL il dato letto da una periferica di ingresso il cui indirizzo è
caricato in DX
•
OUT DX,AL invia il valore contenuto un AL alla periferica di uscita il cui indirizzo è
caricato in DX.
Per effettuare la selezione di una periferica deve essere utilizzato insieme alle linee indirizzo,
anche il segnale IO/M (attivo basso quando deve essere selezionata una periferica), RD per le
periferiche di input, WR per le periferiche do output.
La CPU 8086 nelle operazioni di I/O pone
IO/M
L
L
WR
H
L
RD
L
H
Prof. Francesco Di Sabatino
lettura da periferica
scrittura su periferica
Sistemi Elettronici Automatici
ITIS-Teramo
70
Interfacciamento di dispositivi I/O al μP
5.3
COLLEGAMENTO DI PERIFERICHE DI INPUT AL μP 8086
Lo schema in figura permette la scrittura di un dato proveniente dall'esterno (periferica di
ingresso) in un registro nella CPU.
Il funzionamento del sistema à il seguente: non appena vengono eseguite le istruzioni:
MOV DX, FOH
IN AL, DX
la CPU:
- pone sulle linee del BUS INDIRIZZI (A0-A7) il contenuto del registro DX, (nel nostro
caso F0) e porta a livello basso il segnale IO/M e RD.
Quindi l'uscita del circuito di decodifica diventando bassa abilita il buffer e permette cosi' il
trasferimento dell'informazione (lettura) dalla periferica al registro AL.
La selezione dell'indirizzo è stata effettuata negando la le linee del bus degli indirizzi A4,
A5,A6,A7 in modo da attivare il buffer tree-state soltanto per la configurazione di indirizzo
1111 0000 = F0H, cioè per l'indirizzo assegnato alla periferica
A7
1
A6
1
RD
0
IO/M
0
A5
1
A4
1
Y
0
Prof. Francesco Di Sabatino
A3
0
A2
0
A1
0
A0
0
Y
0
EN
0
Sistemi Elettronici Automatici
ITIS-Teramo
71
Interfacciamento di dispositivi I/O al μP
5.4
COLLEGAMENTO DI PERIFERICHE DI OUTPUT AL μP 8086
In fig. è mostrato lo schema di una interfaccia che permette di mandare un dato caricato nel
registro AL ad un dispositivo esterno (periferica).
Il funzionamento del sistema à il seguente: non appena vengono eseguite le istruzioni:
MOV AL, 255
MOV DX, F0H
OUT DX, AL
la CPU:
- pone sulle linee del BUS INDIRIZZI (A0-A7) il contenuto del registro DX (nel nostro
esempio F0H 1111 0000 ) e sul bus dati il contenuto del registro Al (nel nostro esempio 255
1111 1111) e porta a livello basso il segnale IO/M e WR.
Quindi l'uscita del circuito di decodifica passando dal livello logico 1 a 0 comanda il D-FF, che
cattura i dati presenti sul bus dati (1111 1111), li trasferisce alle uscite e li mantiene fino al
successivo comando di clock.
Per quanto riguarda il circuito di decodifica esso è simile a quello visto precedentemente (
interfaccia di input). Se la periferica di uscita ha lo stesso indirizzo di quella d'ingresso, in tale
circuito deve solo sostituirsi il segnale di lettura RD con quello di scrittura WR.
Prof. Francesco Di Sabatino
Sistemi Elettronici Automatici
ITIS-Teramo
72
Interfacciamento di dispositivi I/O al μP
COLLEGAMENTO DI PERIFERICHE DI INPUT e OUTPUT AL μP 8086
5.5
In figura è mostrato lo schema di un’interfaccia di una periferica di input (lettura dati) ed una
di output (scrittura dati). Esaminando il circuito si può osservare che il decoder indirizzo è
unico per le due le periferiche, la linea IO/M è collegata a tutte due le decodifiche, il segnale
RD abilita se basso EN1, mentre WR a livello basso EN2. Non potendo trovarsi mai
contemporaneamente RD e WR nello stesso stato basso le due periferiche, pur avendo uguale
indirizzo F0H, non sono mai abilitate contemporaneamente.
Es. di lettura dalla periferica di ingresso
Non appena vengono eseguite le istruzioni:
MOV DX, F0H
IN AL, DX
la CPU:
•
pone sulle linee del BUS INDIRIZZI (A0 – A7) il contenuto del registro DX, (nel nostro
caso F0 1111 0000 ).
•
porta a livello basso il segnale IO/M e RD
•
porta a livello alto WR
Il circuito di decodifica manda:
•
EN1 a livello basso e EN2 a livello alto.
EN1 diventando bassa abilita il buffer e permette cosi' il trasferimento dell'informazione
(lettura) dalla periferica al registro AL
EN2 non abilita il D-FF e quindi non è in grado di catturare i dati.
Es. di scrittura alla periferica d'uscita
Non appena vengono eseguite le istruzioni:
MOV AL, 255
MOV DX, F0H
OUT AL, DX
la CPU:
•
pone sulle linee del BUS INDIRIZZI (A0-A7) il contenuto del registro DX, (nel nostro
esempio F0H 1111 0000)
•
pone sul bus dati il contenuto del registro Al (nel nostro esempio 255 1111 111 1
Prof. Francesco Di Sabatino
Sistemi Elettronici Automatici
ITIS-Teramo
73
Interfacciamento di dispositivi I/O al μP
•
porta a livello basso il segnale IO/M e WR.
•
porta a livello alto RD
Il circuito di decodifica manda:
•
EN2
a livello basso, mentre EN1 a livello alto.
EN2 passando dal livello logico 1 a 0 comanda il D-FF, che cattura i dati presenti sul bus dati
(1111 1111), li trasferisce alle uscite (scrittura) e li mantiene fino al successivo comando di
clock .
EN1 essendo ha livello alto, non abilita il buffer tree-state, che rimane scollegato.
Prof. Francesco Di Sabatino
Sistemi Elettronici Automatici
ITIS-Teramo
74
Interfacciamento di dispositivi I/O al μP
5.6
ESEMPIO D’INTERFACCIAMENTO DI PERIFERICHE DI INPUT E
OUTPUT CON INDIRIZZO SELEZIONABILE AL μP 8086
L'uso del comparatore permette una decodifica selezionabile, per mezzo di piccoli interruttori
(dip switch)
Come si vede dallo schema in fig. il comparatore è abilitato dal segnale IO/M, in modo che sia
abilitato, solo per le operazioni di lettura e scrittura solo su periferica. Esso compara una parola
di otto bit (le prime otto linee I0-I7 del bus indirizzi) con un'altra sempre ad otto bit (impostata
per mezzo dei dip switch) e fornisce in uscita un livello basso se le due parole, confrontate bit
a bit sono uguali.
ad es. ponendo i dip switch a 11000000
I7
I6
I5
I4
I3
I2
1
1
1
1
0
0
l'indirizzo della periferica è l'indirizzo XF0,
I1
0
I0
0
Decodifica con selezione
dell'indirizzo
(Interfaccia di Input)
Il funzionamento del sistema à il seguente: non appena vengono eseguite le istruzioni:
MOV DX, F0H
IN AL, DX
' oppure ,3F0H; ,2F0H;
Prof. Francesco Di Sabatino
,1F0H
Sistemi Elettronici Automatici
ITIS-Teramo
75
Interfacciamento di dispositivi I/O al μP
la CPU:
- pone sulle linee del BUS INDIRIZZI (A0-A7) il contenuto del registro DX, (nel nostro
caso F0)
-
e porta a livello basso il segnale IO/M, che abilita il comparatore,
-
porta a livello basso RD
Il comparatore andando a livello basso, porta l'uscita del circuito di decodifica (porta OR) a 0,
che abilita il buffer e permette cosi' il trasferimento dell'informazione (lettura) dalla periferica
al registro AL.
•
Dopo la lettura, la CPU disattiva i segnali RD e IO/M e toglie dal bus indirizzo F0H
Prof. Francesco Di Sabatino
Sistemi Elettronici Automatici
ITIS-Teramo
76
Interfacciamento di dispositivi I/O al μP
5.7
INTERFACCIAMENTO AL μP 8086 CON POSSIBILIT6À DI SELEZIONE DI
PIÙ PERIFERICHE
Un integrato che
si presta bene ad effettuare circuiti di
decodifica per selezionare più
periferiche è il decoder.
Ad es. con il 74LS139 (decoder 2 a 4) con esso si possono selezionare fino a 4 periferiche.
distinte
Circuiti di decodifica con
possibilità di selezionare 4
periferiche
INDIRIZZO
USCITA ATTIVA
PERIFERICA
DEL DECODER
0
300H
Y0
0
1
301H
Y1
0
1
0
302H
Y2
0
1
1
303H
Y3
A9
A8
A7
A6
A5
A4
A3
A2
A1
A0
1
1
0
0
0
0
0
0
0
1
1
0
0
0
0
0
0
1
1
0
0
0
0
0
1
1
0
0
0
0
0
Il funzionamento del sistema à il seguente: non appena vengono eseguite le istruzioni:
MOV DX, 300H
IN AL, DX
Prof. Francesco Di Sabatino
Sistemi Elettronici Automatici
ITIS-Teramo
77
Interfacciamento di dispositivi I/O al μP
•
la CPU:
- pone sulle linee del BUS INDIRIZZI (A0-A7) il contenuto del registro
DX, (nel nostro caso 300H cioè 11 0000 0000)
- porta a livello basso il segnale IO/M, che abilita il comparatore,
- porta a livello basso RD
•
Il comparatore andando a livello basso, abilita il decoder, il quale
avendo gli ingressi A
e B entrambi a 0, attiva l'uscita Y0 ( Y0=0).
•
la porta OR, andando a livello basso (RD=0;Y0=0), abilita la porta tree-state (G=0),
permettendo cosi' il trasferimento dell'informazione (lettura) dalla periferica al registro AL.
•
Dopo la lettura, la CPU disattiva i segnali RD e IO/M e toglie dal bus indirizzo 300H
Prof. Francesco Di Sabatino
Sistemi Elettronici Automatici
ITIS-Teramo
78
Interfacciamento di dispositivi I/O al μP
5.8
•
ISTRUZIONI PER
PERIFERICA
LEGGERE
O
SCRIVERE
UN
DATO
SU
UNA
SCRITTURA (TRASMISSIONI DATI AD UNA PERIFERICA)
L’istruzione OUT sia in Assembler che in Basic e outp in C++, consente di scrivere un dato su
una periferica.
Es. Supponendo che 8 led (periferica d’uscita) siano collegati alla Porta B (indirizzo 301H) e
il dato da inviare sia 10101010 (55)H
IN ASSEMBLER
MOV AX, 55 h
MOV DX, 301h
OUT DX, AX
outp (0x30, 0xFF);
OUT &H301, &H55
Prof. Francesco Di Sabatino
‘carica il dato da inviare alla periferica nel registro AX
‘ carica l’indirizzo che seleziona la periferica nel registro DX
‘ invia il dato posto in AX alla periferica.. il cui indirizzo è
posto in DX.
IN C++
' trasmette il dato (FF) alla periferica
il cui indirizzo è 301h
IN BASIC
' trasmette il dato (FF) alla periferica
il cui indirizzo è 301 .
Sistemi Elettronici Automatici
ITIS-Teramo
79
Interfacciamento di dispositivi I/O al μP
•
LETTURA ( RICEZIONI DATI DA UNA PERIFERICA).
Es. Supponendo che la periferica d’ingresso (es. ADC) , sia collegata al Port A (ind. 300H.)
Per leggere lo stato della periferica si fa uso dell’istruzione IN in assembler e INP in C++ e
Basic (In C++ bisogna caricare la libreria dos.h)
MOV DX, 300h
IN AL, DX
N = inp(0x300);
N=INP(&H300)
Prof. Francesco Di Sabatino
IN ASSEMBLER
'carica l'indirizzo che seleziona la periferica nel registro DX
'carica nel registro AL il dato proveniente dalla periferica
(l’indirizzo che seleziona la periferica è posto in DX
IN C++
‘assegna alla variabile N, il dato proveniente dalla periferica il cui
indirizzo è 300H. .
IN BASIC
‘assegna alla variabile N, il dato proveniente dalla periferica il cui
indirizzo è 300H. .
Sistemi Elettronici Automatici
ITIS-Teramo
80