La convergenza introdotta dall’interfaccia USB non riguarda solo la trasmissione dei dati. Con i nuovi profili dello standard tutto si alimenterà e si ricaricherà con la porta USB.

Già nel 2007, ben prima dell’avvento della 3.0, il comitato USB IF aveva introdotto una specifica direttiva che prevedeva l’affiancamento delle tradizionali porte USB 2.0 a porte USB per l’alimentazione e la ricarica di dispositivi con correnti superiori a 100 mA. Le porte definite dallo standard erano: 
– charging downstream port (CDP), che permetteva anche il transito dei dati alla velocità tipica della porta USB 2.0 e doveva erogare 900 mA, con una tensione di 5 V; 
– dedicated charging port (DCP), senza transito dati, erogava fino a 1,5 A con una caduta di tensione max di 1,4 V a 5 V. 

Lo strada aperta da questa direttiva mostrava chiaramente fin da allora che l’intento dei costruttori, asiatici in prima linea, era quello 
di convergere sull’impiego di un’unica interfaccia in grado sia di trasferire i dati che di alimentare i dispositivi. Un’ulteriore versione della direttiva, datata 2010, consentiva di alimentare dispositivi che richiedevano fino a 1,5 A anche durante il transito dei dati e fino ad un massimo di 5 A. 
Tuttavia, appariva chiaro che non sarebbe stato possibile continuare su questa strada, perché il limite imposto dai 5 V della porta USB costringeva ad alzare la corrente oltre una soglia di sicurezza accettabile per garantire la potenza necessaria richiesta dai dispositivi slave. 


Per questo motivo, nel luglio del 2012, l’USB IF ha emanato la nuova direttiva USB Power Delivery (USB PD). Questa direttiva è straordinariamente innovativa, poiché presenta 5 possibili profili di impiego delle porte, siano esse USB 3.1 oppure USB tipo C, fornendo un massimo di 100 W di potenza al dispositivo collegato, in quanto sono capaci di erogare fino a 5 A su una tensione di 20 Vc.c. La direttiva USB PD si applica a tutte le componenti di un sistema che sia interconnesso tramite USB, quindi a host, device, hub, cavi e connettori, ed apre la strada a scenari completamente diversi dai precedenti. Ad esempio: 

1) Possibilità di usare una sola porta per connettere e alimentare dispositivi di tipo differente e di produttori diversi; 
2) Gestione ‘bidirezionale’ dell’alimentazione: un monitor collegato alla rete elettrica collegato con un cavo USB può ricaricare un notebook; 
3) Un hub USB PD che abbia collegato un hard disk e un laptop per la ricarica può decidere di erogare temporaneamente meno corrente al laptop, passando su quella porta da un profilo ad un altro, per erogare più potenza all’hard disk (ad esempio, durante la fase di inizio della rotazione); 
4) Possibilità per le periferiche di ‘negoziare’ con l’host solo la fornitura di corrente di cui realmente necessitano.




Le operazioni preliminari

Nella descrizione della fase preliminare e della negoziazione vera e propria, per rendere più comprensibile il processo opereremo alcune necessarie semplificazioni. 
Due porte USB PD collegate tra loro, negoziano il voltaggio, l’intensità di corrente e la direzione della fornitura di potenza attraverso il contatto Vbus (USB type C, USB 3.1 type A e type B) oppure il contatto CC (solo nel caso dell’USB type C). I dati scambiati tra le due porte USB per la negoziazione, che transitano sul Vbus, sono modulati secondo lo schema BFSK (Binary Frequency Shift Keyed), nel quale una portante di frequenza fCarrier e di ampiezza v TX vien modulata sottraendo o sommando una frequenza determinata (fDeviation). Questa modulazione risulta essere molto ‘robusta’ e virtualmente insensibile ai disturbi causati dalla presenza dell’alimentazione sullo stesso conduttore. Lo stato logico 0 è indicato dalla frequenza risultante da fCarrier – fDeviation. 

Lo stato logico 1 dalla frequenza, invece, da fCarrier + fDeviation. 
Invece, quando questi dati transitano sul contatto CC, essi sono modulati in corrente continua secondo la codifica BMC (Biphase Mark Coding), una variante della codifica Manchester. La negoziazione tra due porte USB PD risulta essere composta da una serie di messaggi scambiati, volti a definire quali siano i profili energetici da attivare. 
Ogni messaggio inizia con un pacchetto chiamato SOP (Start of Packet), seguito da un pacchetto di comunicazione vero e proprio (Payload), da un pacchetto di controllo (CRC) e da un pacchetto EOF (End of Packet). 
Ogni negoziazione porta alla ‘stipula di un contratto’ tra le porte, senza il quale non viene autorizzato alcun trasferimento di potenza. In realtà, esistono due tipi di contratti: 

1) Contratto implicito. Un’intesa tra le porte per cui viene settato il voltaggio (5 V, chiamato anche vSafe5V) e la corrente massima caratteristica della porta stessa. Questo contratto ‘preliminare’, viene adottato durante la prima negoziazione (ovvero appena si connettono le porte), oppure quando quando viene collegato a una porta PD un dispositivo a basso consumo energetico, tipo un dispositivo delle generazioni USB precedenti; 
2) Contratto esplicito. In seguito ad uno scambio di messaggi viene settato il voltaggio, la corrente e il verso di trasmissione dell’energia. 

Prima del perfezionamento del contratto esplicito alla connessione tra due porte, oppure quando avviene una richiesta di cambio della direzione del flusso energetico, la porta che fornisce energia deve essere in grado di ‘investigare’ anche le caratteristiche del cavo di collegamento. Ciò è particolarmente importante per il cavo USB type C che deve essere contraddistinto da una specifica indicazione (marcatura elettronica) della capacità di sopportare la corrente di 5 A (infatti, secondo le specifiche, la corrente massima che dovrebbe transitare in un cavo type C è di 3 A). 
Questa indagine avviene tramite l’invio di pacchetti di dati diversi dai precedenti, denominati SOP’, da parte della porta che fornisce energia durante la fase del contratto implicito: tali pacchetti SOP’ sono inviati verso un chip identificativo contenuto in uno dei connettori sul cavo. Come ogni altra comunicazione, anche i pacchetti SOP’ transitano sul canale Vbus o CC.


Le operazioni della porta Source quando si connette un cavo

1) Invia sul contatto Vbus la tensione di 5 V; 
2) Se viene connesso un connettore type A o type B, setta la massima corrente supportata dal tipo di cavo; 
3) Se viene connesso un cavo type C, vengono inviati i SOP’ packets, per verificare se si possano fare transitare 5 A oppure solo 3 A; 
4) Dopo queste operazioni, la porta Source invia periodicamente dei messaggi che indicano la sua capacità di funzionare come USB PD (Source_Capabilites Message); 
5) La porta Source si accorge della presenza di una porta Sink collegata all’altro capo del cavo, se riceve un messaggio di controllo di tipo GoodCRC in risposta. 
Per una porta Source, un contratto esplicito è perfezionato e sussiste quando: 

durante la fase iniziale 
1) La porta Sink scarta correttamente, senza cercare di interpretarli, i SOP’ packets inviati dalla porta Source e volti ad identificare il cavo; 
2) La porta Source riceve un messaggio di tipo Request dalla porta Sink e risponde con messaggio Accept, seguito da un messaggio PS_RDY, in cui, sostanzialmente, si comunica alla porta Sink che la Source è pronta ad erogare tensione e corrente ai valori richiesti; 

durante la fase di Power Delivering 
1) Le porte sono in grado di inviare e ricevere messaggi appropriati; 
2) Da parte delle porte esiste la capacità di gestione dei messaggi inizializzati dai pacchetti di tipo SOP’ con il cavo, senza interferenze con i messaggi inizializzati dai pacchetti SOP scambiati direttamente tra di loro; 
3) La porta Source è in grado di informare la Sink, o viceversa, che la sua capacità di fornire energia o che la richiesta di energia sta cambiando; 
4) La porta Source, dopo un certo periodo di funzionamento, genera dei messaggi Ping se non vengono scambiati altri messaggi (ciò non avviene se la porta sta operando nella modalità vSafe5V, o se viene usato un connettore type C).


Le operazioni della porta Sink quando si connette un cavo

1) Monitora la presenza del vSafe 5V sul Vbus ed attende un messaggio di Source_Capabilities (indicante la presenza di una porta USB PD collegata all’altro capo del cavo); 
2) Se non è ricevuto alcun messaggio, invia essa stessa un messaggio di Hard_Reset, per invitare la porta Source a trasmettere un Source_Capabilites; 
3) Non genera alcune messaggio SOP’ per conoscere il tipo di cavo (è la porta Source che è delegata a questo), ma è in grado di scartare queste comunicazioni; 
4) Se riceve un messaggio di Source_Capabilites risponde con un messaggio GoodCRC. 
Per una porta Sink, un contratto esplicito è perfezionato e sussiste quando: 

durante la fase iniziale 
1) La porta Sink invia un messaggio di tipo Request: se il messaggio è ammissibile, subito dopo riceverà un messaggio di tipo Accept, seguito da un PS_RDY, quando la porta Source sarà pronta ad erogare energia alla potenza richiesta. La porta Sink può eventualmente anche richiedere solo le erogazioni minime richieste dagli standard USB 2.0, USB 3.1, USB Type C 1.0, senza precludersi eventuali future negoziazioni di maggiore potenza; 
2) Una porta Sink che non invii un messaggio Request alla porta Source risulta in errore. 

durante la fase di Power Delivering 
1) Processa e risponde appropriatamente a tutti messaggi ricevuti; 
2) Invia un messaggio Request se la sua richiesta energetica varia. Qualora appaia non in grado di funzionare pienamente secondo le caratteristiche attese, significa che probabilmente è avvenuto un errore di comunicazione e che sta ricevendo un livello energetico inferiore alle sue aspettative; 
3) Se non riceve alcun messaggio dalla porta Source, essa invia un messaggio di Hard_Reset.


Come avviene la negoziazione

Anzitutto, la porta che è destinata a fornire potenza viene definita Source, mentre quella che consuma energia Sink: in ogni collegamento USB PD è stabilito che esista solo una coppia di queste due porte. 
La funzione di swap (inversione) tra il ruolo di chi fornisce energia e di chi la consuma, senza distacco del cavo, è possibile solo quando le porte vengono collegate tramite un cavo USB type C.