0.1. I dispositivi seriali
0.1 I dispositivi seriali
La comunicazione seriale tra due dispositivi può essere caratterizzata da diverse modalità operative:
- Simplex, che prevede che i dispositivi siano collegati da una linea mono-direzionale, poiché i ruoli di ricevitore e trasmettitore sono sempre svolti dagli stessi dispositivi;
- Half-duplex che prevede che i dispositivi siano collegati da una linea bi-direzionale che non consente la comunicazione contemporanea nelle due direzioni, poiché il ruolo di ricevitore o trasmettitore può essere svolto a turno da uno dei due dispositivi;
- Full-duplex prevede che i dispositivi siano collegati da una linea bi-direzionale che consente la comunicazione contemporanea nelle due direzioni, poiché il ruolo di ricevitore o trasmettitore può essere svolto contemporaneamente da entrambi i dispositivi.
Nella comunicazione seriale orientata ai caratteri, le informazioni da trasmettere sono organizzate in una sequenza ordinata di caratteri, ognuno dei quali codificato da una parola di 7 o 8 bit. Inoltre, i caratteri coinvolti nella trasmissione seriale devono essere strutturati sotto forma di un messaggio composto da tre campi:
- L’intestazione (header) comprende tutti i caratteri necessari per inizializzare una comunicazione seriale, includendo i caratteri di sincronismo e di inizio testo;
- Corpo (body) include i caratteri che rappresentano le vere e proprie informazioni da trasmettere;
- Coda (trailer) contiene i caratteri necessari per terminare una comunicazione seriale, includendo il carattere di fine testo, gli eventuali caratteri di ridondanza, e il carattere di fine turno per i canali half-duplex.
Il messaggio viene trasmesso un carattere alla volta, a partire dal primo carattere dell’intestazione, e ciascun carattere viene trasmesso dal bit meno significativo al più significativo, generando un segnale logico corrispondente al valore del bit inviato in quell’istante, secondo una cadenza temporale prefissata. L’informazione così trasmessa può venire ricostruita nella sequenza dei bit da un sistema ricevente che sia in grado di campionare il segnale ricevuto con un clock locale con la medesima frequenza di trasmissione e sincronizzato anche in fase.
La trasmissione seriale dei singoli caratteri di un messaggio richiede implica la serializzazione dei bit che compongono il dato trasmesso nel dispositivo trasmettitore e la parallelizzazione nel dispositivo ricevitore. In una trasmissione orientata al carattere, ogni carattere è convertito dalla sua forma parallela in cui è presente in un registro di buffer alla forma seriale da immettere sulla linea di trasmissione e viceversa. Per operare questa conversione parallelo-serie e serie-parallelo, è necessario disporre di particolari dispositivi basati su shift register a 8 bit di tipo parallel-in/serial-out (per il trasmettitore) e di tipo serial-in/parallel-out (per il ricevitore).
Il trasferimento di un carattere può essere realizzato collegando l’uscita serial-out del trasmettitore con l’ingresso serial-in del ricevitore e sincronizzando la parallelizzazione dei bit campionati dal ricevitore con la serializzazione dei bit inviati dal trasmettitore.
Una semplice soluzione consiste nel dotare il trasmettitore e il ricevitore di un unico clock comune, in modo da sincronizzare la serializzazione dei bit in trasmissione sul 10.1. I dispositivi seriali (b) tempificazione dei caratteri tra-(a) modello logico della trasmissione seriale smessi a partire da clock Tx Figura 0.1 fronte di salita del clock e il campionamento dei bit in ricezione sul fronte di discesa del clock, così come mostrato in figura 0.1.
Per consentire un corretto trasferimento dei dati, i clock di trasmissione e quello di ricezione devono avere la stessa frequenza e fase. In generale, nella trasmissione seriale i singoli apparati sono dotati di clock autonomo, stabile in frequenza e sincronizzato in fase ad ogni trasmissione di carattere, in grado di realizzare lo stesso campionamento in trasmissione e ricezione.
In fig. 0.1 è mostrato un campionamento con riferimento al dato binario “01001101” effettuato sul fronte di discesa del clock.
I meccanismi di sincronizzazione dei flussi dati e di sincronizzazione dei clock è legato alla tipologia di trasmissione sincrona o asincrona utilizzata. Nella trasmissione sincrona la sincronizzazione avviene con riferimento a blocchi di caratteri mentre per quella asincrona avviene carattere per carattere secondo la modalità Start-Stop di seguito discussa.
0.1.1 Comunicazione asincrona
Nella comunicazione asincrona di tipo Start-Stop la trasmissione dei dati è effettuata carattere per carattere. Ciascuno di essi è codificato su 5, 6, 7, 8 bit (il tipo di codifica adottato è indipendente dal meccanismo di trasmissione; una codifica ampiamente adottata è, ad esempio, quella ASCII per dati su 7 bit) ed è trasmesso all’interno di un frame di bit, in cui sono presenti ulteriori bit adibiti alla sincronizzazione e al controllo della parità.
Il campionamento della cella da inviare è effettuato alla frequenza del clock di trasmissione Clk_Tx così come quello di ricezione Clk_Rx.
In assenza di trasmissione la linea è posta nello stato di “idle” caratterizzato dalla presenza di un livello “1” logico continuo. All’atto della trasmissione di un carattere τ si esce da tale stato e si pone la linea a “0” logico per la durata di una cella bit. →1 0
Tale bit è detto di “Start” e la variazione del fronte del livello logico della linea genera l’evento che avvia, nella corretta fase, il treno di impulsi di clock usati per campionare il frame di dati da trasmettere.
Alla cella del bit di “Start” seguono le celle (5, 6, 7 o 8) del carattere, un’eventuale τ 1, 5τ cella dedicata ad un bit di parità e, per ultima una cella di durata di , o 2τ , posta al valore logico “1” e detta di “Stop” che chiude la trasmissione del frame riposizionando la linea nello stato di idle. Si evidenzia che tra la trasmissione di un 20.1. I dispositivi seriali Figura 0.2: Cella di trasmissione asincrona campionata carattere e il successivo la linea deve permanere in stato di idle almeno per la durata di una cella di stop.
Onde garantire un’adeguata stabilità nella frequenza di campionamento, questa è c16f 64f effettuata mediante un clock operante ad una frequenza superiore, o . c c16f
In fig. 0.3 è mostrato il campionamento di un frame in ricezione con un clock per c una trasmissione caratterizzata da un frame composto da 9 bit: 1 start+7dato+1stop. →1 0
Riconosciuta la transizione dello start bit, punto (A) in figura, il ricevitore 16x9 = 144 abilita il clock locale a trasmettere un treno di impulsi. Tali impulsi sono [8, (8 + contati da un contatore che abilita il campionamento secondo la sequenza 16), ..., (8 + 7x16), 8 + 8x16)] riportata in figura. In tal modo la linea è campionata al centro di ognuna delle 9 celle bit e ciò garantisce la corretta lettura dei valori della linea anche in presenza di un piccolo errore di fase. Al termine del campionamento del frame, il ricevitore ne verifica la correttezza strutturale (presenza di 8 bit e dello stop bit, che chiude il frame) e riprende il riconoscimento della variazione del fronte dello stato di idle verso il successivo start bit. In caso di mancato riscontro dello stop bit, il circuito provvede a generare un segnale di errore di frame. Altri errori monitorati e segnalati sono quello di parità (se adottata nel frame) e quello detto di “overrun” che consiste nella mancata lettura di un carattere presente sul registro a scorrimento che lo parallelizza bufferizzandolo prima che sia arrivato il primo bit di start del successivo carattere.
0.1.2 Comunicazione sincrona
La comunicazione seriale sincrona presenta dei fattori di efficienza migliori rispetto a quella asincrona a scapito di una maggiore complicazione circuitale dei sistemi trasmittenti e riceventi. Essa migliora l’efficienza di trasmissione riducendo il numero di bit di controllo necessari a gestire la trasmissione stessa. Ciò è ottenuto trasmettendo blocchi di dati fissi (trasmissione a blocchi) o variabili (trasmissione bit-oriented, si ammette cioè la possibilità di trasmettere dati rappresentati da stringhe binarie anche di lunghezza variabile) in un unico frame, realizzando un flusso di dati continuo “sincrono”, cioè la cui sincronizzazione è garantita da meccanismi che mantengono in fase 30.1. I dispositivi seriali Figura 0.3: Campionamento di un frame il clock per tutta la durata del blocco trasmesso. Si provvede, inoltre, a eliminare la trasmissione di start e stop bit e il bit di parità per ogni carattere sostituendolo con un controllo di errore legato al blocco ottenuto mediante codici a ridondanza ciclici (CRC).
Nella comunicazione seriale sincrona, l’intero messaggio è trasmesso come un flusso continuo destrutturato di bit, senza alcun delimitatore di caratteri. La discriminazione fra i vari caratteri (se necessaria) è ottenuta successivamente alla ricezione dando struttura al flusso di bit ricevuto mediante azioni di conteggio e selezione in hardware dei bit utili che codificano i vari caratteri.
Non disponendo più dei bit di start e stop per la rifasatura del clock di ricezione, la sincronizzazione di bit può essere ottenuta o con un clock esterno fornito al ricevitore dal trasmettitore oppure con un clock interno stabile in frequenza e tale da garantire l’aggancio di fase per tutta la durata di un messaggio e dotato di un meccanismo di rifasatura.
L’impossibilità di eliminare completamente i fenomeni di deriva nel tempo sugli oscillatori implica che la sincronizzazione con aggancio di fase sia basata sulla capacità del ricevitore di “autosincronizzare” il proprio clock di campionamento con le transizioni →1 0 presenti nel messaggio stesso. In particolare, l’aggancio di fase può essere ottenuto prevedendo all’inizio, e periodicamente all’interno del messaggio, l’inserimento di speciali caratteri di sincronismo, codificati in modo da assicurare una presenza sufficientemente elevata di transizioni di livello. Una volta che il carattere di sincronismo viene riconosciuto, il clock di campionamento del ricevitore viene abilitato fino ad una nuova fase di sincronizzazione attivata dal ricevimento di un opportuno carattere di sincronizzazione (tale carattere, in uno dei protocolli sincroni più diffusi, il BSC IBM, è il 16 esadecimale che corrisponde alla stringa binaria 00010110 e ad un segnale nella linea della forma di quello riportato in figura:
La tabella di seguito mostra la codifica dei caratteri di controllo presenti nel codice ASCII ove sono anche indicati taluni caratteri utilizzati nella trasmissione sincrona di tipo BSC fra cui il Sync prima indicato.
Quando è necessario inserire il carattere di sincronismo all’interno del messaggio, esso viene posto in posizioni prefissate