Elettronica applicata/Collegamenti seriali
Un bus parallelo è complesso: i segnali di temporizzazione viaggiano allo stesso tempo in parallelo alle informazioni, quindi è necessario tenere in conto lo skew per garantire i minimi tempi di setup e di hold. Un collegamento seriale si basa sul trasferimento sequenziale: i segnali di temporizzazione e le informazioni viaggiano sullo stesso filo in tempi diversi, quindi l'ordine con cui i dati vengono inviati viene sempre mantenuto al ricevitore, e inoltre un minor numero di conduttori riduce il consumo e il costo. Un ciclo di trasferimento parallelo era sufficiente per far arrivare i bit tutti insieme al ricevitore, mentre il trasferimento sequenziale introduce una latenza perché i bit vengono inviati uno dopo l'altro.
- Interferenze
- connessioni parallele: diafonia = interferenze tra conduttori vicini;
- connessioni seriali: interferenza intersimbolica (ISI) = interferenze nel tempo tra un bit e l'altro.
- Sincronizzazione
In una trasmissione seriale i clock del trasmettitore e del ricevitore devono essere sincronizzati:
- sincronizzazione a livello di bit: devono essere riconosciuti i bit distinti tra loro;
- sincronizzazione a livello di carattere: devono essere riconosciuti l'inizio e la fine dei byte;
- sincronizzazione a livello di messaggi: riguarda il riconoscimento ad alto livello.
Sincronizzazione a livello di bit
[modifica | modifica sorgente]Clock unico generato dal trasmettitore
[modifica | modifica sorgente]Il clock è unico e si trova al lato trasmettitore → bisogna tenere conto solo delle variazioni del tempo di trasmissione (skew) tra i dati e il clock, perché il clock e i dati viaggiano nella stessa direzione.
Protocollo SPI
[modifica | modifica sorgente]Il protocollo SPI viene usato soprattutto per la comunicazione tra processore e periferici: il master tramite il chip select (CS) seleziona lo slave, invia ad esso dei dati di comando e lo slave restituisce al master dei dati in una sorta di anello:
Clock unico generato dal ricevitore
[modifica | modifica sorgente]Il clock è unico e si trova al lato ricevitore → bisogna tenere in conto delle variazioni di due tempi di trasmissione (due skew): uno per il clock dal ricevitore al trasmettitore, l'altro per i dati dal trasmettitore al ricevitore. Il ricevitore può regolare la velocità dei dati.
Clock indipendenti
[modifica | modifica sorgente]Nella realtà è impossibile realizzare due clock perfettamente isofrequenziali → serve inviare insieme ai dati delle informazioni di sincronizzazione.
I dati di informazione durante la trasmissione sono soggetti a variazioni nel tempo (sfasamenti dovuti allo skew) e in ampiezza (rumori, distorsioni, ISI, variazioni della pendenza dei fronti) → la transizione LH del clock al lato ricevitore (anch'esso soggetto a skew e a jitter) deve avvenire entro l'apertura del diagramma a occhio, affinché siano garantiti il corretto riconoscimento degli stati logici e i tempi di set-up e di hold:
Sincronizzazione a livello di carattere
[modifica | modifica sorgente]La sincronizzazione a livello di carattere serve per riconoscere dove inizia e dove finisce ogni byte:[1]
- collegamenti seriali asincroni: la trasmissione è discontinua, cioè tra un byte e l'altro ci possono essere dei momenti in cui la linea è a riposo;
- collegamenti seriali sincroni: la trasmissione è continua, e tra un byte e l'altro può essere prevista una sequenza di bit riservata alla sincronizzazione.
Trasmissione seriale asincrona
[modifica | modifica sorgente]Quando la linea è a riposo assume uno stato prestabilito che si mantiene costante; ogni byte deve essere preceduto da un bit di start che assume lo stato opposto a quello della linea a riposo, e deve essere seguito da qualche bit di stop che assume lo stato a riposo.
Il numero di bit per carattere non deve essere eccessivo per garantire l'apertura nel diagramma ad occhio.
RS 232 è lo standard per le interconnessioni a livello fisico che usano la trasmissione seriale asincrona, ed è progettato per interconnettere i computer ai modem.
L'UART è un dispositivo in grado di trasmettere dei byte in modo asincrono tramite un collegamento seriale:
- lato trasmettitore: un registro PISO converte i byte in sequenze di bit, e vengono inseriti i bit di start e di stop;
- lato ricevitore: un registro SIPO converte le sequenze di bit in byte, e un modulo deve riconoscere i bit di start e di stop e al momento giusto generare il clock per il registro SIPO.
I serializzatori a due registri aumentano la flessibilità:
- lato trasmettitore: mentre il registro PISO sta trasmettendo, un registro SISO può memorizzare il byte successivo da trasmettere;
- lato ricevitore: mentre il registro SIPO sta ricevendo, un registro PIPO può memorizzare il byte precedente in attesa di essere letto da un dispositivo esterno.
Note
[modifica | modifica sorgente]- ↑ Qui per semplicità si parla di byte, che sono composti da 8 bit, ma in realtà può essere scelto un qualsiasi numero di bit.