Elettronica applicata/Collegamenti seriali: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nuova pagina: {{subst:affianca| {{subst:img|Protocollo SPI con CS multipli.png|Configurazione con CS multipli}} {{subst:img|Protocollo SPI con CS singolo.png|Dispositivi collegabili in cascata co...
 
Nessun oggetto della modifica
Riga 1:
{{Elettronica applicata}}
{{subst:affianca|
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.
{{subst:img|Protocollo SPI con CS multipli.png|Configurazione con CS multipli}}
 
{{subst:img|Protocollo SPI con CS singolo.png|Dispositivi collegabili in cascata con un unico CS|ultima=x}}
;Interferenze
}}
* connessioni parallele: '''diafonia''' = interferenze tra conduttori vicini;
* connessioni seriali: '''interferenza intersimbolica''' ({{tooltip|ISI|InterSymbolic Interference}}) = interferenze nel tempo tra un bit e l'altro.
 
[[File:Serial transmission rate.png|thumb|left]]
 
;Sincronizzazione
In una trasmissione seriale i clock del trasmettitore e del ricevitore devono essere sincronizzati:
* sincronizzazione a livello di bit: devono essere risconosciuti 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.
{{clear|left}}
__TOC__
{{clear|right}}
==Sincronizzazione a livello di bit==
===Clock unico generato dal trasmettitore===
[[File:TX-generated single clock.png|thumb]]
 
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====
Il '''protocollo {{tooltip|SPI|Serial Peripheral Interface}}''' 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:
<table border=0 style="border-collapse: collapse; text-align: center; margin-left: auto; margin-right: auto">{{#if:|<caption>'''{{{titolo}}}'''</caption>}}<tr>
<td>{{#if:|{{#if:Configurazione con CS multipli|[[File:Protocollo SPI con CS multipli.png|thumb|center|{{{dim}}}|Configurazione con CS multipli]]|[[File:Protocollo SPI con CS multipli.png|thumb|center|{{{dim}}}]]}}|{{#if:Configurazione con CS multipli|[[File:Protocollo SPI con CS multipli.png|thumb|center|Configurazione con CS multipli]]|[[File:Protocollo SPI con CS multipli.png|thumb|center]]}}}}</td><!--
-->{{#if:||<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>}}
<td>{{#if:|{{#if:Dispositivi collegabili in cascata con un unico CS|[[File:Protocollo SPI con CS singolo.png|thumb|center|{{{dim}}}|Dispositivi collegabili in cascata con un unico CS]]|[[File:Protocollo SPI con CS singolo.png|thumb|center|{{{dim}}}]]}}|{{#if:Dispositivi collegabili in cascata con un unico CS|[[File:Protocollo SPI con CS singolo.png|thumb|center|Dispositivi collegabili in cascata con un unico CS]]|[[File:Protocollo SPI con CS singolo.png|thumb|center]]}}}}</td><!--
-->{{#if:x||<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>}}
</tr></table>
{{clear}}
===Clock unico generato dal ricevitore===
[[File:RX-generated single clock.png|thumb]]
 
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.
{{clear}}
===Clock indipendenti===
[[File:Modem sincrono.png|thumb|250px|Modem sincrono]]
 
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<nowiki>'</nowiki>'''apertura''' del '''diagramma a occhio''', affinché siano garantiti il corretto riconoscimento degli stati logici e i tempi di set-up e di hold:
[[File:Diagramma a occhio.png|thumb|center|Il diagramma a occhio è ottenuto dalla sovrapposizione di tutti i possibili andamenti del segnale al lato ricevitore]]
{{clear}}
 
==Sincronizzazione a livello di carattere==
La sincronizzazione a livello di carattere serve per riconoscere dove inizia e dove finisce ogni byte:<ref>Qui per semplicità si parla di byte, che sono composti da 8 bit, ma in realtà può essere scelto un qualsiasi numero di bit.</ref>
* 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===
[[File:Trasmissione seriale asincrona.png|thumb|250px|Sequenza di caratteri in una trasmissione seriale asincrona]]
 
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.
 
[[File:UART.png|thumb|left]]
 
L<nowiki>'</nowiki>'''{{tooltip|UART|Universal Asynchronous Receiver/Transmitter}}''' è 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.
 
[[File:UART with double-register serializers.png|thumb|100px]]
 
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==
<references />
[[Categoria:Elettronica applicata|Collegamenti seriali]]