Interfacce seriali
La necessità di far colloquiare apparecchiature digitali diverse, prodotte da varie Case costruttrici, ha determinato l'esigenza di normalizzare i metodi di interfacciamento definendo delle interfacce standard.
Interfaccia EIA RS-232-C
Lo standard EIA (Electronic Industries Association) RS-232-C definisce, secondo la raccomandazione X.25, la connessione fra un dispositivo terminale (DTE: Data Terminal Equipment) e un dispositivo di comunicazione (DCE: Data Communication Equipment) destinato alla trasmissione e alla ricezione dei dati in formato seriale, con modalità di scambio sincrono o asincrono, in modalità simplex, half-duplex e full-duplex. Da osservare che il CCITT indica questo stesso standard con la sigla V.24.
Questa interfaccia è nata per il collegamento di apparecchiature remote attraverso la rete telefonica, ma, in versioni semplificate, è largamente impiegata per il collegamento non remoto fra calcolatori o fra essi e alcuni organi periferici; in questo secondo utilizzo molte linee previste dallo standard vengono ignorate poiché più non strettamente necessarie.
Lo standard RS-232-C prevede per il collegamento elettrico un cavo e due connettori (maschio/femmina) a 25 contatti. Ciascun contatto, contrassegnato dalla posizione da una sigla alfanumerica (norma EIA) o da una sigla numerica (norma CCITT), è dedicato ad una ben precisa funzione ovvero al trasferimento di un determinato segnale diretto dal DTE al DCE o viceversa. I circuiti di interfaccia possono essere classificati e raggruppati in base alla loro funzione; principalmente si individuano:
- circuiti di massa, costituiti da una linea di riferimento comune per i segnali logici trasmessi (AB) e da un secondo conduttore che deve essere collegato al contenitore dell'apparecchiatura per ragioni di sicurezza (AA);
- circuiti per il trasferimento seriale dei dati dal DTE al DCE (BA) e viceversa (BB);
- segnali di controllo;
- segnali di temporizzazione, che servono a sincronizzare in trasferimento dei dati.
Dispositivi per l'interfacciamento seriale
Per l'implementazione di interfacce seriali sono disponibili in commercio numerosi dispositivi integrati che svolgono le funzioni di controllo e trasmissione richiesti nella maggior parte delle applicazioni.
Nella vasta gamma di dispositivi prodotti, si possono distinguere quelli previsti per la comunicazione asincrona e quelli previsti per la comunicazione asincrona e sincrona. Fra i primi si possono annoverare il classico UART (Universal Asynchronous Receiver Transmitter) che presentano, oltre alle linee di trasmissione seriali, linee per la gestione del colloquio con il modem. Il blocco di trasmissione genera il bit di start e di parità e uno o due bit di stop, e li trasmette insieme ai bit del carattere in sincronismo con un clock. Analogamente, il blocco di ricezione rileva il bit di start, riceve i bit del carattere, in sincronismo con un clock, e controlla la parità segnalando eventuali errori.
Per la trasmissione sincrona devono invece essere impiegati i dispositivi comunemente noti come USART (Universal Synchronous Asynchronous Receiver Transmitter). Nel modo di funzionamento sincrono l'USART rileva sulla linea di ricezione il carattere di sincronismo formato da uno o due byte preprogrammati, dopodiché riceve i bit del messaggio con la cadenza di un clock inviato dal DCE. In trasmissione USART genera il carattere di sincronismo prima di inviare il messaggio, sempre con cadenza fissata dal DCE. Nel modo asincrono il funzionamento è simile a quello illustrato per l'UART.
Di solito i dispositivi integrati non implementano interamente lo standard RS-232 in quanto non forniscono alcuni segnali che, in certi casi, devono essere applicati esternamente.
Generalmente le seriali di un elaboratore sono governate da un chip UART; in commercio attualmente ne esistono di due tipi: dumb UART 8250, 16.450 e FIFO UART 16550A.
Tutti gli UART non elaborano in alcun modo i byte, ma si limitano a trasmetterli e riceverli e a generare un interrupt per la CPU che, a sua volta, si occupa di prelevare il carattere ricevuto dal buffer oppure si occupa di dare all'UART un altro byte da trasmettere.
I chip 8250 e 16.450 hanno un buffer di un solo 1 byte di capacità, questo significa che ad ogni dato ricevuto o trasmesso, si deve generare un interrupt per la CPU. Tutto funziona regolarmente per basse frequenze di trasmissione. Ma, a frequenze elevate, l'overhead della CPU per gestire la comunicazione può diventare talmente gravoso da non lasciare più spazio agli altri processi in esecuzione. In alcuni casi, la CPU non riesce a servire l'interrupt in tempo e il byte ricevuto viene sovrascritto perché questi arrivano troppo velocemente.
Connessione DB25-DB25 |
Connessione DB9-DB25 |
|||
DB25 |
DB25 |
DB9 |
DB5 |
|
1 |
1 |
1 |
20 |
|
2* |
3* |
2* |
2* |
|
3* |
2* |
3* |
3* |
|
4 |
5 |
4 |
6 |
|
5 |
4 |
4 |
8 |
|
6 |
20 |
5 |
7 |
|
7* |
7* |
6 |
20 |
|
8 |
20 |
7* |
5* |
|
20 |
6 |
8 |
4 |
|
20 |
8 |
Schema di connessione dei pin tra due connettori DB25 e tra un DB9 e un DB25 (le connessioni contrassegnate con * sono le minime indispensabili per il collegamento)
I chip 16.550A, invece, sono dotati di un buffer FIFO di 16 byte. Questo significa che possono essere generati interrupt ogni 16 byte ricevuti o trasmessi, e inoltre questi possono essere trasferiti tutti contemporaneamente nella memoria. Si riducono così notevolmente gli interrupt ricevuti dalla CPU e anche il suo overhead, lasciando quindi più spazio agli altri processi in esecuzione. In generale, gli UART 8250 e 16.450 funzionano correttamente fino a velocità di 19.200 bps, oltre potrebbero manifestarsi i già citati fenomeni di perdita dati.
Principali circuiti di interfaccia secondo lo standard RS-232-C
Assegnazioni dei pin sul connettore a 25 contatti per interfaccia seriale RS-232