banner
Casa / Blog / PCIe per hacker: il preludio di Diffpair
Blog

PCIe per hacker: il preludio di Diffpair

Sep 10, 2023Sep 10, 2023

PCIe, noto anche come PCI-Express, è un'interfaccia estremamente potente. Quindi vediamo cosa serve per hackerare qualcosa di così potente. All'inizio PCIe può essere un po' intimidatorio, tuttavia è abbastanza semplice iniziare a creare materiale PCIe e l'interfaccia è abbastanza resistente per la tecnologia a livello di hobbista. Arriverà il momento in cui vorremo utilizzare un chip PCIe nei nostri progetti o forse sfruttare la connessione PCIe disponibile su un determinato modulo di calcolo ed è bene assicurarsi di essere pronti per questo.

PCIe è ovunque ormai. Ogni computer moderno è dotato di numerosi dispositivi PCIe che svolgono funzioni cruciali e persino gli iPhone utilizzano PCIe internamente per connettere la CPU con i chip flash e WiFi. Puoi ottenere tutti i tipi di dispositivi PCIe: controller Ethernet, schede WiFi ad alto rendimento, grafica e tutte le unità NVMe economiche che ti forniranno volentieri un sacco di spazio di archiviazione quando connesse tramite PCIe. Se stai hackerando un laptop o un computer a scheda singola e desideri aggiungere un dispositivo PCIe, puoi ottenere un po' di PCIe da uno dei socket che trasportano PCIe o semplicemente attingere a un collegamento PCIe esistente se non c'è presa a cui connettersi. Sono passati due decenni da quando abbiamo iniziato a ottenere dispositivi PCIe: ora PCIe è alla revisione 5.0 ed è chiaro che è qui per restare.

PCIe è un bus punto a punto che collega due dispositivi insieme, al contrario del PCI, un bus più vecchio, che potrebbe collegare una catena di dispositivi sulla scheda madre. Un lato di un collegamento PCIe è un dispositivo e un altro è un host. Ad esempio, in un laptop, la tua CPU avrà più porte PCIe: alcune utilizzate per collegare la GPU, alcune utilizzate per collegare una scheda WiFi, alcune utilizzate per Ethernet e alcune utilizzate per un'unità NVMe.

Ogni collegamento PCIe è costituito da almeno tre coppie differenziali: una è un clock da 100 MHz, REFCLK, che è (quasi) sempre richiesto per un collegamento, e due coppie che formano una corsia PCIe, una per la trasmissione e un'altra per la ricezione. Questo è un collegamento x: puoi anche avere collegamenti 2x, 4x, 8x e 16x, rispettivamente con quattro, otto sedici e trentadue coppie differenziali, più, ancora, REFCLK. Più ampio è il collegamento, maggiore è il suo throughput!

Ora, le larghezze dei collegamenti in PCIe sono un argomento divertente con molti aspetti interessanti, ma prima sarebbe bene assicurarsi di essere sulla stessa pagina quando si tratta di cosa significhi "coppia differenziale" nel contesto di PCIe. Qui su Hackaday, ti abbiamo già parlato del nocciolo della questione delle coppie differenziali: rivisita assolutamente quell'articolo se vuoi conoscere le coppie differenziali in profondità! Qui ti aggiornerò rapidamente sulle nozioni di base e poi ti dirò cosa devi sapere quando lavori specificamente con coppie differenziali per PCIe.

Per dirla semplicemente, una coppia differenziale è composta da due segnali, uno sempre opposto all'altro, uno solitamente indicato come positivo e l'altro come negativo. Ottieni il livello logico del bit trasmesso confrontando i due segnali l'uno con l'altro, invece di confrontare il livello logico di ogni singolo segnale con la massa come facciamo di solito, che viene definito "single-ended". Con una coppia differenziale, i segnali sono vicini gli uni agli altri e sono addirittura intrecciati quando si tratta di cavi e, di conseguenza, qualsiasi interferenza influisce ugualmente sui segnali: poiché i segnali vengono confrontati tra loro per ricevere informazioni, ciò significa che le informazioni ricevute non è influenzato dal rumore sovrapposto su entrambi i segnali. Inoltre, le coppie differenziali fanno sì che i campi magnetici di entrambi i segnali si annullino a vicenda, rendendo il collegamento meno rumoroso.

Di conseguenza, le coppie differenziali consentono di aumentare la velocità di trasmissione senza creare rumore o diventare suscettibili al rumore. Di conseguenza, la stragrande maggioranza delle interfacce ad alta velocità utilizza coppie differenziali: Ethernet, PCIe, HDMI, DisplayPort, LVDS e persino USB, sebbene USB 2 sia solo pseudodifferenziale, USB 3 è veramente differenziale. Anche le interfacce resilienti come RS485 e CAN utilizzano coppie differenziali. Per un hobbista è facile iniziare con coppie differenziali con interfacce come CAN, e anche USB 2 non pone problemi: a brevi distanze, funzionano comunque, nonostante siano segnali differenziali e teoricamente richiedano un trattamento speciale.