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