USB-PD Decoder
Decodifica e costruisci i Power Data Object (PDO) di USB Power Delivery, con mappa bit-per-bit dei 32 bit e simulazione della negoziazione. Strumento dimostrativo.
1 · PDO esadecimali
Un PDO per riga (con o senza 0x). Sono i Source Capabilities grezzi.
2 · Decodifica
1 · Costruisci un PDO
EPR AVS: tensione minima fissa a 15 V (non codificata).
2 · PDO codificato
— Negoziatore (sink → source)
Simula la richiesta del sink sui PDO della modalità Decode: scegli una tensione/corrente o chiedi la potenza massima.
Cos’è un PDO?
Un Power Data Object (PDO) è una parola da 32 bit con cui una sorgente USB-C dichiara un profilo di alimentazione, i Source Capabilities. I bit 31-30 ne danno il tipo; il sink sceglie un PDO e risponde con un Request Data Object (RDO). Lo strumento decodifica e ricostruisce i PDO, ma non gestisce il livello pacchetto né quello fisico.
Un Power Data Object è una parola da 32 bit con cui una sorgente USB-C dichiara un profilo di alimentazione (i Source Capabilities). I bit 31-30 ne danno il tipo; un sink sceglie un PDO e risponde con un Request Data Object (RDO). Questo strumento decodifica e ricostruisce i PDO, ma non gestisce il livello pacchetto né il livello fisico del protocollo.
Quali sono i tipi di PDO e come si scalano?
Il fattore di scala dipende dalla famiglia: Fixed, Battery e Variable codificano la tensione a 50 mV; la corrente Fixed/Variable a 10 mA, la potenza Battery a 250 mW. Gli APDO PPS e AVS usano 100 mV, con corrente a 50 mA o potenza PDP a 1 W. L’AVS è espresso in potenza perché la corrente varia con la tensione.
Il fattore di scala dei campi dipende dalla famiglia — è l’errore più comune:
| Tipo | bit 31-30 | Tensione | Corrente / Potenza |
|---|---|---|---|
| Fixed Supply | 00 | 50 mV | 10 mA (corrente) |
| Battery | 01 | 50 mV | 250 mW (potenza) |
| Variable | 10 | 50 mV | 10 mA (corrente) |
| SPR PPS (APDO) | 11 · 00 | 100 mV | 50 mA (corrente) |
| EPR AVS (APDO) | 11 · 01 | 100 mV | 1 W (PDP, potenza) |
L’EPR Fixed (28/36/48 V) usa lo stesso encoding del Fixed, con tensione > 20 V. Per il PPS attenzione: lo step di regolazione runtime è 20 mV, ma la codifica dei limiti nell’APDO è a 100 mV — cose distinte. Per l’EPR AVS la corrente disponibile varia con la tensione, perciò l’offerta è espressa in potenza (PDP) e non in corrente.
Struttura del Fixed PDO
Il primo Fixed PDO porta anche i flag di capacità (layout USB-PD R3.1, Source):
b31-30 PDO type (00 = Fixed) b29 Dual-Role Power b28 USB Suspend Supported b27 Unconstrained Power b26 USB Communications Capable b25 Dual-Role Data b24 Unchunked Extended Messages b23 EPR Mode Capable b22 Reserved b21-20 Peak Current b19-10 Voltage (50 mV/unit) b9-0 Max Current (10 mA/unit)
Come funziona la negoziazione PDO → RDO?
Il negoziatore applica una selezione semplificata: per una tensione richiesta preferisce il Fixed esatto, poi un APDO programmabile (PPS/AVS) che copra il valore, infine Variable o Battery; con «potenza massima» sceglie il PDO a potenza disponibile più alta. Non è la macchina a stati del Policy Engine. L’EPR ammette fino a 13 posizioni di PDO.
Il negoziatore qui sopra applica una selezione semplificata: per una tensione richiesta preferisce il Fixed esatto, poi un APDO programmabile (PPS/AVS) che copra il valore, infine Variable/Battery; con «potenza massima» sceglie il PDO a potenza disponibile più alta. Non è la macchina a stati completa del Policy Engine: serve a leggere quale PDO verrebbe scelto e quale RDO ne risulta. L’EPR ammette fino a 13 posizioni di PDO.
Quali sono i limiti dello strumento?
Lo strumento decodifica e codifica solo i PDO/RDO a 32 bit: niente CRC, header di pacchetto o livello fisico BMC. Non verifica la coerenza elettrica reale della sorgente. L’EPR AVS è espresso in potenza (PDP) e la corrente a una data tensione è derivata come P/V. Il negoziatore è una selezione didattica, non la negoziazione USB-PD completa con messaggi e timer.
- Decodifica/codifica solo i PDO/RDO a 32 bit: niente CRC, header di pacchetto o livello fisico BMC.
- Nessuna verifica di coerenza elettrica reale della sorgente: i valori sono quelli dichiarati nei bit.
- L’EPR AVS è espresso in potenza (PDP); la corrente a una data tensione è derivata come P/V.
- Il negoziatore è una selezione didattica, non la negoziazione USB-PD completa con messaggi e timer.
Riferimenti
- USB Power Delivery Specification R3.1 / R3.2 — USB-IF (Source Capabilities, PDO/RDO, APDO).
- Layout flag Fixed PDO allineato a Linux kernel
include/linux/usb/pd.h.