Il protocollo I2S (sviluppato da Philips, 1996), rappresenta un sistema flessibile ed efficiente per trasferire dati HiFi su canale digitale.
Ci è stato chiesto più volte come sia possibile trasmettere audio su canale digitale, e quale sia la differenza tra I2S e I2C.
Si tratta di due protocolli seriali con attitudini completamente differenti, come vedremo più avanti. In questo articolo analizzeremo la teoria, mentre nel prosimo dedicato ad I2S vedremo un esempio pratico con ESP32. Si parte!
Introduzione
Nel mercato consumer audio trovano posto molti sistemi audio digitali, inclusi compact disc, nastro audio digitale (DAT), processori digitali del suono (DSP) e suono della TV digitale. I segnali audio digitali in questi sistemi vengono elaborati da una serie di circuiti integrati ad ampia scala di integrazione (V)LSI, come ad esempio:
- convertitori A/D e D/A;
- elaboratori di segnali digitali;
- correzione degli errori per compact disc e registrazione digitale;
- filtri digitali;
- interfacce di ingresso/uscita digitali.
Le strutture di comunicazione standardizzate sono vitali sia per l’apparecchiatura che per il produttore di circuiti integrati, perché aumentano la flessibilità del sistema. A tal fine, è stato sviluppato il bus inter-IC sound (I2 S), un collegamento seriale specifico per l’audio digitale.
REQUISITI DI BASE DEL BUS SERIALE
Il bus deve solo gestire i dati audio, mentre gli altri segnali, come la sub-codifica e il controllo, vengono trasferiti separatamente. Per ridurre al minimo il numero di pin richiesti e mantenere il cablaggio semplice, viene utilizzato un bus seriale a 3 linee costituito da una linea per due canali di dati multiplexati nel tempo, una linea di selezione delle parole e una linea di clock.
Poiché il trasmettitore e il ricevitore hanno lo stesso segnale di clock per la trasmissione dei dati, il trasmettitore come master deve generare il bit clock, il segnale di selezione delle parole e i dati. Nei sistemi complessi, tuttavia, possono esserci diversi trasmettitori e ricevitori, il che rende difficile definire il master. In tali sistemi, di solito c’è un master di sistema che controlla il flusso di dati audio digitale tra i vari circuiti integrati. I trasmettitori, quindi, devono generare dati sotto il controllo di un clock esterno, e quindi agire come slave. La Figura 1 illustra alcune semplici configurazioni di sistema e la temporizzazione dell’interfaccia di base. Si noti che il master di sistema può essere combinato con un trasmettitore o un ricevitore e può essere abilitato o disabilitato sotto il controllo del software o tramite la programmazione dei pin.
I2S BUS
Come mostrato in Figura, il bus ha tre linee:
- continuous serial clock (SCK);
- word select (WS);
- serial data (SD);
mentre il device che genera SCK e WS è il master.
Dati seriali
I dati seriali vengono trasmessi prima in complemento a due con MSB. L’MSB viene trasmesso per primo perché il trasmettitore e il ricevitore possono avere lunghezze di parola diverse. Non è necessario che il trasmettitore sappia quanti bit può gestire il ricevitore, né il ricevitore deve sapere quanti bit vengono trasmessi.
Quando la lunghezza della parola di sistema è maggiore della lunghezza della parola del trasmettitore, la parola viene troncata (i bit di dati meno significativi sono impostati su “0”) per la trasmissione dei dati. Se al destinatario vengono inviati più bit della sua lunghezza di parola, i bit dopo l’LSB vengono ignorati. D’altra parte, se al destinatario vengono inviati meno bit della sua lunghezza di parola, i bit mancanti vengono impostati a zero internamente. In tal modo, MSB ha una posizione fissa, mentre la posizione di LSB dipende dalla lunghezza della parola. Il trasmettitore invia sempre l’MSB della parola successiva un periodo di clock dopo la modifica del WS.
I dati seriali inviati dal trasmettitore possono essere sincronizzati con il fronte finale (da ALTO a BASSO) o con il fronte anteriore (da BASSO ad ALTO) del segnale di clock. Tuttavia, i dati seriali devono essere bloccati nel ricevitore sul fronte di salita del segnale di clock seriale, quindi ci sono alcune restrizioni quando si trasmettono dati sincronizzati con il fronte di salita
Seleziona parola
La parola select line indica il canale trasmesso:
- WS = 0; canale 1 (sinistra);
- WS = 1; canale 2 (a destra).
WS può cambiare sul fronte di discesa o di salita del clock seriale, ma non è necessario che sia simmetrico. Nello slave, questo segnale è bloccato sul fronte di salita del segnale di clock. La linea WS cambia un periodo di clock prima che venga trasmesso l’MSB. Ciò consente al trasmettitore slave di derivare la temporizzazione sincrona dei dati seriali che verranno impostati per la trasmissione.
Inoltre, consente al ricevitore di memorizzare la parola precedente e cancellare l’input per la parola successiva
Timing
Come abbiamo visto, nel formato I2S, qualsiasi dispositivo può fungere da master di sistema, fornendo i necessari segnali di clock. Uno slave di solito deriva il suo segnale di clock interno o da un ingresso di clock esterno. Ciò significa, tenendo conto dei ritardi di propagazione tra il master clock e i segnali dati e/o word-select, che il ritardo totale è semplicemente la somma di:
- il ritardo tra il clock esterno (master) e quello slave orologio interno; e
- il ritardo tra l’orologio interno e i dati e/o segnali di selezione delle parole.
Per i dati e gli ingressi word-select, il ritardo del clock esterno a quello interno non ha alcuna conseguenza perché allunga solo il tempo di configurazione effettivo (vedere la Figura 2). La maggior parte del margine di tempo serve per compensare la differenza tra il ritardo di propagazione del trasmettitore e il tempo necessario per impostare il ricevitore.
Tutti i requisiti di temporizzazione sono specificati in relazione al periodo di clock o al periodo di clock minimo consentito di un dispositivo. Ciò significa che in futuro potranno essere utilizzate velocità dati più elevate.
Join our groups on Telegram…