Benvenuti a una nuova puntata del progetto del modulo di calcolo Pi.MX8 SoM! In questo aggiornamento, daremo gli ultimi ritocchi al nostro design PCB e prepareremo il design per la produzione del prototipo.
Nell'ultimo articolo abbiamo completato il routing degli strati di segnale. Questa è stata la parte più dispendiosa in termini di tempo del layout PCB per il modulo Pi.MX8. Tuttavia, abbiamo ancora due compiti davanti a noi che richiedono altrettanta attenzione: il routing dei piani di alimentazione e la regolazione del ritardo del segnale.
Iniziamo con i piani di alimentazione. Di solito preferisco fare la regolazione del ritardo come ultimi passaggi, poiché le meandre necessarie per l'aggiustamento della lunghezza spesso riempiono lo spazio rimanente sulla scheda. Ad esempio, posizionare ulteriori VIA (che a volte possono essere necessarie quando si instradano le reti di alimentazione) potrebbe richiederci di aggiustare le primitive di regolazione della lunghezza per creare lo spazio necessario. Riempendo lo spazio rimanente con le primitive di regolazione della lunghezza per ultime, possiamo evitare ulteriori lavori di rifinitura.
Strati disponibili per i piani di alimentazione
Guardando lo stack dei layer possiamo vedere che abbiamo a disposizione due strati dedicati alle piste di alimentazione. Questi strati sono separati dagli strati di terra adiacenti da un sottile strato di prepreg. Questo impilamento aumenta la capacità del piano a bassa induttanza e può aiutare a diminuire l'impedenza della rete di distribuzione dell'alimentazione (PDN) ad alte frequenze.
Cominciamo a tracciare le piste di alimentazione ad alta corrente. Nel nostro caso, queste sono i binari di alimentazione core e memoria per l'i.MX8 SoC e il controller DRAM con l'IC LPDDR4.
Alimentazione core e memoria PMIC per il SoC
I binari VCC_ARM e VCC_SOC utilizzano il rilevamento remoto, il che significa che il nodo di feedback dei convertitori buck non è collegato ai condensatori di uscita vicino al MIC, ma ai pad di alimentazione dell'i.MX8. Questo serve a compensare la caduta di tensione attraverso il piano di alimentazione o il poligono. Poiché la corrente in questi binari può essere relativamente alta e il PMIC deve regolare queste tensioni con precisione, è importante "misurare" la tensione direttamente al carico. La figura seguente mostra la caduta di tensione attraverso un poligono di alimentazione:
Caduta di tensione attraverso un poligono di alimentazione
Il poligono di alimentazione per il binario VCC_ARM è instradato sullo strato 6. La traccia instradata vicino al contorno del poligono è il segnale di rilevamento remoto. Idealmente, ci piacerebbe misurare la tensione in modo differenziale per compensare gli effetti parassitari introdotti dalla corrente del percorso di ritorno e per rendere il feedback meno suscettibile al rumore, ma nel nostro caso ciò non sarà necessario. Seguiremo le raccomandazioni del progetto di riferimento.
Poligono VCC_SOC
La traccia di feedback utilizza un 'net-tie' vicino ai pin del SoC per collegare la rete di feedback alla rete di alimentazione. Senza usare un net-tie, dovremmo manualmente assicurarci di avere un'isolamento pulito tra la traccia di feedback e il poligono di alimentazione. Questo approccio è incline agli errori. Il net-tie è semplicemente un footprint costituito da un breve segmento di traccia con due piccoli pad alle estremità. Impostando il tipo di componente su net-tie, Altium Designer non genererà un errore di cortocircuito per questo componente.
Il poligono VCC_ARM e il binario di alimentazione della DRAM sono instradati in modo simile sullo Strato 5.
VCC_ARM evidenziato e binario di alimentazione DRAM in viola
I binari di alimentazione rimanenti sono distribuiti sui livelli 5 e 6. I poligoni di alimentazione di sistema da 1,8V e 3,3V coprono l'intera scheda poiché molti componenti connessi a questi binari sono distribuiti su tutta la scheda.
L'ultimo passo della realizzazione dei piani di alimentazione è impostare un'analisi PDN AC e DC e verificare se i risultati rientrano nei limiti di valore dell'impedenza stabiliti dalla guida di progettazione hardware del SoC.
La simulazione AC deve includere i condensatori di disaccoppiamento con un modello equivalente accurato, le caratteristiche di uscita del regolatore buck e la geometria del layout. Non approfondiremo la configurazione della simulazione in questo articolo ma dobbiamo tenerla presente come passaggio di verifica obbligatorio.
Impedenza target dei binari di alimentazione
La simulazione DC richiede solo la geometria del layout e le caratteristiche di carico del SoC come input per calcolare la caduta di tensione attraverso i poligoni di alimentazione e evidenziare aree di densità di corrente eccessiva.
Con il layout della rete di alimentazione completato, possiamo ora passare all'ultimo punto della nostra lista delle cose da fare - la regolazione del ritardo.
Ci sono molte interfacce sul modulo Pi.MX8 che hanno requisiti di tempistica rigorosi e richiedono la regolazione del ritardo. Esamineremo le interfacce più critiche e vedremo come possiamo utilizzare X-Signals per regolare i ritardi anche attraverso diversi componenti.
Iniziamo con l'interfaccia DRAM. La guida alla progettazione hardware i.MX8 fornisce tutte le informazioni di cui abbiamo bisogno per la regolazione del ritardo. Prima di poter procedere con l'aggiustamento di qualsiasi traccia dobbiamo prima verificare se il ritardo del pacchetto è incluso nel simbolo della libreria schematica.
NXP fornisce i tempi di ritardo del pacchetto, che è il tempo che impiega un segnale per viaggiare dalla sfera BGA i.MX8 al chip di silicio. Le diverse lunghezze sull'interposer influenzano il tempo di ritardo totale, quindi è importante prenderle in considerazione.
Ritardo del pin del pacchetto nel simbolo schematica
Possiamo utilizzare l'editor della lista lib schematica per incollare tutti i ritardi dei pin del pacchetto dal documento della guida alla progettazione hardware i.MX8 in una volta sola utilizzando la finestra di dialogo di incolla griglia intelligente.
Ritardi dei pin in formato tabella attraverso la barra degli strumenti SCHLIB List
I requisiti di regolazione del ritardo per l'interfaccia LPDDR4 sono delineati nella guida alla progettazione hardware i.MX8. La guida raggruppa le dipendenze di ritardo in gruppi di clock, controllo/comando e byte. Le finestre temporali per ogni gruppo sono riferite ai segnali di clock e strobe. Tutti i segnali differenziali devono essere abbinati a 1ps tra i segnali complementari nella coppia.
Requisiti di regolazione del ritardo PCB LPDDR4-4000
I segnali nel gruppo indirizzo/comando/controllo devono soddisfare due requisiti temporali. Un requisito definisce il ritardo massimo tra ciascun segnale all'interno del gruppo, mentre il secondo requisito definisce la finestra di ritardo massima dell'intero gruppo riferita al segnale di clock.
Questo è il motivo per cui utilizziamo più gruppi di segnali X per garantire che i segnali corretti siano presi di mira all'interno delle regole di progettazione.
Classi di segnali X per la regolazione del LPDDR4
Quando utilizzo regole di regolazione del ritardo intercalate, mi piace inoltre tenere traccia dei valori totali di ritardo in un foglio Excel a scopo documentativo. Questo passaggio è però opzionale e dipende dalle preferenze personali poiché i requisiti temporali possono essere tutti definiti all'interno della configurazione delle regole di Altium Designer.
Documentazione della regolazione del ritardo in Excel
Una volta definite le classi di segnali X e stabilite le regole di progettazione, possiamo iniziare a regolare il ritardo nel layout. Oltre alla regolazione del ritardo intra-paia, la maggior parte degli aggiustamenti deve essere effettuata sulle linee di indirizzo/comando/controllo:
Regolazione del ritardo delle linee di indirizzo/comando/controllo
Le linee dati stesse richiedono pochissimo o nessun aggiustamento. Intorno alle coppie di segnali di orologio tracciate sullo strato superiore, abbiamo molto spazio che possiamo utilizzare per la regolazione del ritardo:
Regolazione del ritardo dell'orologio sullo strato superiore
Come per la rete di alimentazione, dobbiamo eseguire simulazioni di verifica per l'interfaccia DRAM. Siamo particolarmente interessati a vedere se possiamo rilevare effetti di diafonia poiché parti del routing sono relativamente vicine tra loro. La regola generale è mantenere una distanza di 3 volte lo spessore del dielettrico rispetto alle tracce vicine. Tuttavia, in questo articolo non tratteremo la configurazione e i dettagli della simulazione.
Una volta completata la regolazione del ritardo dell'interfaccia DRAM, diamo un'occhiata ad un'altra applicazione per i segnali X. La scheda PiMX8 ha due interfacce che possono pilotare un display esterno - LVDS e MIPI-DSI.
MIPI-DSI utilizza anche la segnalazione differenziale a bassa tensione (LVDS), quindi possiamo utilizzare un multiplexer per selezionare una di queste interfacce poiché condividono le stesse specifiche hardware. Quando si utilizza un multiplexer per passare da un'interfaccia all'altra, dobbiamo anche essere consapevoli che qualsiasi instradamento effettuato dopo il multiplexer (sul lato comune) influenzerà il ritardo sia dell'interfaccia MIPI-DSI a valle che dell'interfaccia LVDS. Questo può essere preso in considerazione creando una classe X-signal separata per l'interfaccia MIPI-DSI e l'interfaccia LVDS, consentendo maggiore libertà nella regolazione del ritardo sul PCB.
In questo esempio, sarebbe stato forse possibile evitare la necessità di questo approccio se tutto l'instradamento sul lato comune fosse stato regolato su una finestra di ritardo stretta, sia tra coppie che da coppia a coppia. Utilizzando però due classi X-signal separate abbiamo un migliore controllo sul budget temporale di ciascuna interfaccia.
Gli X-signals ci permettono di colmare il divario sul multiplexer e di eseguire la regolazione della lunghezza su ciascuna interfaccia sull'intera lunghezza del segnale prima e dopo il multiplexer.
Lo stesso approccio viene utilizzato sull'interfaccia PCIe per colmare il divario attraverso i condensatori di accoppiamento AC in serie.
LVDS instradato al multiplexer
MIPI-DSI instradato al multiplexer
Tutte le interfacce ad alta velocità sulla scheda Pi.MX8 sono sintonizzate in ritardo utilizzando i segnali X poiché forniscono una lunghezza del percorso del segnale più precisa. Non esamineremo ogni interfaccia separatamente poiché l'impostazione della regola di sintonizzazione del ritardo e l'aggiustamento del routing è un compito ripetitivo che non differisce molto nel suo approccio generale tra le interfacce.
Questo è stato l'ultimo passo nel completare il routing sulla scheda Pi.MX8. La prossima fase consiste nell'eseguire un controllo approfondito delle regole di progettazione ed esportare il set di dati di produzione.
Nel prossimo aggiornamento daremo un'occhiata alle schede e inizieremo ad assemblare alcuni prototipi. Questo sarà l'ultimo passo per alimentare per la prima volta il modulo Pi.MX8, quindi restate sintonizzati!