Cosa sono e come funzionano i protocolli sincroni e asincroni

0
350
4
(2)

Avrete sentito parlare di protocolli di comunicazione sincroni e asincroni (come UART – Universal Asynchronous Receiver and Transmitter), ma sapete cosa significano questi termini? Se non lo sapete, non preoccupatevi perché ne parleremo in questo articolo.

Nella comunicazione digitale, quando si desidera inviare dati da un dispositivo a un altro, è possibile pilotare la linea (o le linee) dei dati di comunicazione con un valore alto (High) (1) o basso (Low) (0). Queste sono tutte le opzioni disponibili. Supponiamo di voler inviare il dato “Hello” da un dispositivo a un altro: utilizzando la codifica ASCII (in cui a ogni lettera dell’alfabeto viene assegnato un numero, poiché i computer lavorano internamente sui numeri), questo sarebbe rappresentato dalla sequenza di numeri:

72 101 108 108 111

o in binario:

01001000 01100101 01101100 01101100 01101111

Se disponiamo di un’unica linea dati (come nel caso dei protocolli di comunicazione più diffusi), possiamo inviare ogni bit uno dopo l’altro, attivando o disattivando la linea dati a seconda del valore del bit da trasmettere. Il segnale per la trasmissione di “Hello” sarebbe quindi simile a quello riportato di seguito (i colori sono stati aggiunti per comodità, i dati binari ovviamente non hanno colori) con i dati trasmessi LSB (Least Significant Bit – Bit meno significativo) per primi (di cui parleremo più avanti).

Hello in formato binario (utilizzando la codifica ASCII), trasmesso LSB (Least Significant Bit) per primo.

Interpretare i dati

Se i dati trasmessi fossero sempre una sequenza alternata di 1 e 0, sarebbe abbastanza facile interpretarli:

ma ovviamente questo non è quasi mai il caso. E se avessimo una sequenza di 4 x 1 seguiti da 4 x 0 (11110000)?

Senza informazioni aggiuntive, come potrebbe il ricevitore capire se questo segnale è 10, 1100, 111000 o 11110000 (o 1111100000, e così via)? È evidente che è necessario qualcosa in più per chiarire la comunicazione.

Sincrono o asincrono

Il problema si risolve con una linea di comunicazione aggiuntiva che indica la temporizzazione di ogni bit sulla linea dati, oppure con il ricevitore che conosce internamente la durata di ogni bit sulla linea dati. La prima opzione, che prevede l’uso di una linea di comunicazione aggiuntiva per indicare la temporizzazione di ciascun bit, è chiamata comunicazione Sincrona. La linea aggiuntiva nella comunicazione sincrona è chiamata linea di clock (perché i clock, gli orologi, sono usati come timer,  per cronometrare le cose). L’ultima opzione, in cui il ricevitore conosce internamente la durata di ciascun bit sulla linea dati, è chiamata comunicazione Asincrona. Con la comunicazione asincrona, sia il ricevitore che il trasmettitore hanno bisogno di un clock interno preciso per tenere il tempo. Il ricevitore e il trasmettitore devono, inoltre, essere impostati per utilizzare la stessa velocità/tempo (baud rate) per comunicare con successo.

La trasmissione sincrona o asincrona si riduce, quindi, al fatto che l’orologio sia esterno (sincrono) o interno (asincrono). Alcuni esempi di protocolli asincroni sono UART, USB, CAN ed Ethernet. Alcuni esempi di protocolli sincroni sono SPI, I2C e DDR.

Pro e contro

Un vantaggio dei protocolli sincroni è che non richiedono che il dispositivo abbia un clock interno molto preciso (più veloce è la comunicazione, più preciso deve essere il clock interno). Per questo motivo, i protocolli di comunicazione sincroni sono spesso utilizzati in piccole periferiche a basso costo, come i sensori. Un altro vantaggio dei protocolli sincroni è che entrambi i lati della comunicazione non devono conoscere in anticipo la velocità dei dati (temporizzazione – timing). Alcuni protocolli sincroni hanno persino una velocità di trasmissione dati variabile e/o possono utilizzare la linea di clock per indicare quando sono ancora occupati, trattenendola fino a quando non sono pronti a ricevere nuovi dati (questa è una caratteristica del protocollo I2C); i protocolli asincroni richiedono una linea di comunicazione aggiuntiva per implementare questa caratteristica (come la linea CTS/RTS in UART).

Un altro esempio di protocollo sincrono è quello SPI.

Un vantaggio dei protocolli asincroni è che richiedono meno linee di comunicazione e, quindi, generano meno rumore elettromagnetico (EMI/EMC).

Poiché con i protocolli asincroni può essere difficile far coincidere esattamente i clock su entrambi i lati, di solito richiedono almeno una transizione sulla linea dati per riallineare i loro clock interni. Questo può far parte del frame del protocollo (come nel caso dell’UART), oppure può essere implementato imponendo l’inserimento di un bit di riempimento di polarità opposta dopo un certo numero di bit consecutivi della stessa polarità (il bit stuffing, bit di riempimento, viene scartato quando il protocollo viene decodificato, come nel caso del protocollo CAN).

Bit Stuffing (aggiunta dei bit a zero ad un flusso di dati numerici)
in CAN dopo 5 bit uguali

Questo è tutto per capire i termini comunicazione sincrona e comunicazione asincrona.

  • Sincrono = Clock (Orologio) esterno
  • Asincrono = Clock (Orologio) interno

Proteus include numerosi dispositivi disponibili per la simulazione nelle librerie di componenti, che coprono sia i protocolli di comunicazione sincrona che asincrona. Inoltre, sono disponibili anche strumenti virtuali che supportano i principali protocolli di comunicazione sincroni e asincroni.

Puoi scaricare la versione demo di Proteus di Labcenter, distribuito in Italia da Galgo Electronics.

All content Copyright Labcenter Electronics Ltd. 2024 – Per l’articolo originale clicca qui

Quanto hai trovato interessante questo articolo?

Voto medio 4 / 5. Numero valutazioni: 2

Ancora nessuna valutazione! Valuta per primo questo articolo.