banner
Centro notizie
Esperienza pluriennale insieme ad attrezzature all’avanguardia

PCIe per hacker: Link Anatomy

Aug 20, 2023

L'ultima volta abbiamo esaminato le coppie di differenza, le loro nozioni di base, le regole di routing e le famigerate tolleranze di PCIe quando si tratta di coppie di differenza. Ora, diamo un'occhiata ai segnali esatti che fanno funzionare PCIe, oltre a darti una panoramica di quali socket puoi collegare PCIe.

Separo i socket PCIe in due categorie: socket desktop, che sono i soliti socket PCIe 1x, 16x o forse x4 che vediamo sulle schede madri desktop - e socket mobili: mPCIe e M.2. Ci sono anche prese come ExpressCard che si trovano ancora su alcuni portatili più vecchi, ma hanno decisamente perso la loro rilevanza. Sui dispositivi mobili, M.2 è la via da seguire quando si tratta di PCIe: se sei interessato, ho già scritto una breve serie parlando di tutto ciò che riguarda M.2.

Su questi socket, la maggior parte dei segnali saranno opzionali e alcuni segnali saranno specifici del socket, ma ci sono alcuni segnali richiesti in qualsiasi dispositivo PCIe. Naturalmente, il primo gruppo di segnali richiesti sono gli stessi differenziali PCIe.

Qualsiasi interfaccia PCIe ha due tipi di coppie differenziali: TX e RX; per un collegamento x1, avrai una coppia di diff TX e una coppia di diff RX, mentre un collegamento x16 ne richiede sedici ciascuna. Come ci si potrebbe aspettare, RX da un lato si connette a TX dall'altro e viceversa: è proprio come UART, ma piccante. Naturalmente, se stai realizzando un extender PCIe o un adattatore socket-to-socket di qualche tipo, non è necessario eseguire alcuno scambio. Se stai progettando una scheda per uno degli standard di estensione che trasportano PCIe, la denominazione abituale è lato host. Ad esempio, supponiamo che tu stia inserendo un controller IC Ethernet PCIe su un PCB che si collega a una presa PCIe desktop: collega TX e RX della scheda socket PCIe rispettivamente a RX e TX del tuo chip Ethernet.

Se ci sono forti indicazioni che questa convenzione è stata violata, non preoccuparti: assicurati di confrontarla con un host o dispositivo esistente e vedi se sei in grado di determinare se la denominazione è come previsto o addirittura, inaspettatamente, invertita. Ancora una volta, è proprio come UART! Detto questo, sono presenti anche condensatori di accoppiamento CA posizionati in serie su entrambe le linee TX e RX. Nello specifico, nel caso delle schede di estensione PCIe, siano esse M.2 o PCIe desktop, la convenzione le posiziona sulle linee dispositivo-TX (host-RX) sulla scheda del dispositivo e sul lato host-TX (dispositivo-RX) su il consiglio ospitante. Già solo questo rappresenta una piacevole divergenza dall'UART per quanto riguarda la progettazione e il reverse engineering.

Il terzo tipo di coppia di differenze, invariabilmente presente, è REFCLK, una coppia di differenze di clock da 100 MHz. È un orologio veloce e non sono sicuro del suo scopo completo, ma a quanto pare gioca un ruolo nella decodifica dei dati su TX e RX, in particolare nel recupero del clock, rimanendo vitale nonostante sia ordini di grandezza più lento della gamma GBit larghezza di banda delle coppie PCIe TX e RX. A differenza di RX e TX, non è possibile scambiare la polarità REFCLK volenti o nolenti. D'altra parte, non farà molto male se si fa passare REFCLK attraverso una serie di via o due nel caso in cui sia necessario capovolgerlo: sono solo 100 MHz. Ricordati di rispettare le tue coppie di differenza e sarai bravo.

REFCLK è necessario, tranne che, in teoria, ci sono casi in cui è possibile ometterlo, richiedendo che entrambe le estremità del collegamento PCIe supportino il recupero di questo clock dai dati passati attraverso le coppie RX e TX o generino il proprio REFCLK. Sembra abbastanza realistico, ma le implementazioni PCIe senza REFCLK non sono realmente disponibili. Perfino SD-Express, uno standard recente che porta PCIe su schede SD per velocità di accesso incredibilmente elevate, non ha seguito questa strada: l'unica implementazione senza REFCLK disponibile per i consumatori in circolazione è SATA-Express, uno standard che è diventato obsoleto da M.2 non appena le schede madri con porte SATA-Express sono arrivate sugli scaffali dei negozi. Allo stato attuale, se vuoi che il tuo collegamento PCIe funzioni, hai assolutamente bisogno di REFCLK.

E ora parliamo un po' di più dei condensatori. Ne hai bisogno sia su TX che su RX affinché il collegamento funzioni, con intervalli da 75 nF a 265 nF a seconda della generazione del collegamento PCIe: 200 nF è un buon valore a tutto tondo e 100 nF funzionerà in un attimo. Oltre a questo, scegli il pacchetto 0402 o 0201 e praticamente è tutto. REFCLK in genere non ha bisogno dei condensatori, ma neanche questi dovrebbero causare danni e alcuni dispositivi potrebbero richiederli. Inoltre, c'è qualcosa di sconcertante: c'è stato almeno un caso documentato di un SSD WD economico prodotto in serie che apparentemente ometteva i suoi condensatori sul lato TX, non riuscendo a inizializzarsi con una scheda host PCIe personalizzata fino a quando non venivano aggiunti condensatori aggiuntivi sul lato della scheda madre. Non è qualcosa che dovresti fare per impostazione predefinita, ma semplicemente una peculiarità che un produttore ha avuto il coraggio di creare.