Instradamento del clock da 30 MHz a più schede


9

Sto usando il driver LED TLC5945 . Il microcontrollore (sto usando LPC1343 ) deve fornire un orologio per il suo timer / contatore PWM interno. La velocità di clock massima consentita è specificata come 30 MHz.

Avrò diverse schede con TLC5945 daisychained. Le schede saranno collegate tramite connettori scheda-scheda o cavi a nastro corti, la larghezza di una scheda è di 10 cm. Ne avrò un massimo di 4 collegati in serie.

Probabilmente non userò 30MHz completi, ma comunque voglio farlo nel modo giusto - come instradare / condizionare il segnale di clock mantenendolo intatto?

Se aggiungo un buffer come 74HC245 sull'output di ogni scheda, otterrò un ritardo di 10 ns dopo ogni buffer, non lo voglio. Dovrei usare buffer di clock "zero delay" specializzati? Che tipo di regime di disdetta dovrei impiegare?


2
Un singolo ciclo a 30 MHz è ~ 33 ns. Essere fuori di 1/3 di un singolo ciclo per scheda è un grosso problema?
Toby Lawrence,

1
Che bella domanda e risposte. Ogni risposta aggiunge alla soluzione, senza ripetere nessuna delle precedenti!
Vorac,

Risposte:


20

30 MHz sono sufficienti per trattare il segnale come un problema di linea di trasmissione. Dovrai prestare attenzione al layout della scheda in tutto il design, inclusi e in particolare i connettori. Dovrai portare pin di terra extra insieme al tuo segnale a 30 MHz, o possibilmente usare connettori speciali.

Avrai bisogno di informazioni sul layout della tua scheda, il numero di strati e potresti aver bisogno di coordinarti con il produttore della scheda previsto in modo che possano indirizzare una specifica impedenza caratteristica per te o semplicemente ottenere parametri come le costanti dielettriche.

Sembra che tu sia a conoscenza di molti di questi problemi, ma ho pensato che fosse meglio affrontarli, perché se non stai attento potresti ottenere un design che sia funzionale ma emette molta RF e non riuscirai mai a superare un Test EMI.

Linee guida per l'instradamento del segnale:

  • Calcola l'impedenza e la larghezza della traccia.
  • Instrada prima i tuoi orologi.
  • Se possibile, non instradare mai il segnale attraverso una via. Se necessario, posizionare i condensatori di bypass vicino alla via.
  • Se possibile / applicabile, instradare il segnale attraverso uno strato interno (in modo che terra esterna e piani di potenza possano funzionare come una sorta di gabbia di Faraday). In questo caso, il segnale deve essere instradato su uno strato tranne per i via che deve accedere ai chip.
  • Il segnale non arriva mai da nessuna parte senza un piano di massa (o in senso stretto, un piano di riferimento).
  • Il segnale non attraversa mai un confine tra i piani di potenza.
  • Quando si passa attraverso un connettore, circondarlo di terra.
  • In un collegamento a margherita, instradare direttamente agli ingressi del clock senza utilizzare gli stub, se possibile. Schema della catena a margherita senza tronconi da Altera PDF
  • Incrocia altri segnali in modo perpendicolare.
  • Se altri segnali devono viaggiare con esso, dai loro spazio. Quattro volte la larghezza della traccia.
  • Utilizzare una terminazione parallela a terra con una resistenza uguale all'impedenza caratteristica della microstriscia / striscia, oppure una terminazione della sorgente se il segnale ha una sola destinazione. Per una discussione vedi questa domanda correlata .

Naturalmente, in un progetto del mondo reale, potresti dover rompere alcune di queste linee guida.

La maggior parte di queste regole deriva dall'osservazione che alle alte frequenze, la corrente di ritorno proverà a spostarsi vicino al segnale, quindi è necessario fornire un percorso per la corrente di ritorno. Se la corrente di ritorno è fisicamente separata, si sta creando un'antenna parassita. Il piano di massa (o potenza!) Che fornisce un percorso per la corrente di ritorno è chiamato riferimento. Non lasciare il piano di riferimento. Se si deve passare attraverso una via, il piano di riferimento cambia. Il condensatore di bypass è impostato tra i piani di riferimento vecchi e nuovi.

I connettori rappresenteranno un problema, perché probabilmente avranno un'impedenza diversa dal PCB, quindi causeranno riflessi e degraderanno il segnale. Un'opzione potrebbe essere quella di utilizzare un connettore a impedenza controllata che corrisponda all'impedenza della scheda.

Per quanto riguarda il firmware, potrebbe essere necessario sperimentare la potenza dell'unità per controllare la velocità dei bordi. La massima forza motrice è spesso la risposta sbagliata. Il fornitore IC dovrebbe essere in grado di fornire un modello IBIS , con il quale è possibile simulare il circuito per stimare l'integrità del segnale. A rigor di termini, non è la frequenza di clock che causa l'integrità del segnale o i problemi di compatibilità elettromagnetica, ma la velocità dei bordi (il tempo di transizione tra alto e basso) perché i bordi veloci si manifestano come transitori a banda larga nel dominio della frequenza. La riduzione della forza motrice e / o della velocità di risposta ridurrà la frequenza dei bordi e ridurrà le emissioni armoniche, mentre (probabilmente) aumenterà il jitter di clock. Controllare i fogli dati per vedere qual è la velocità limite accettabile per i ricevitori dell'orologio.

La mia sensazione è che se fai i compiti, probabilmente non avrai bisogno di alcun tipo di ripetitore di segnale. Consideriamo ad esempio SCSI, che è un enorme bus parallelo ad alta velocità distribuito su cavi a circa 100 MHz. Se possibile, considera di investire in un programma come HyperLynx per simulare il layout.

Altera ha una guida eccellente per i problemi di routing ad alta velocità.


Grazie per grandi approfondimenti. Dalla tua risposta ho capito che non c'è modo di farlo con le tavole incise fai-da-te?
miceuz,

@miceuz: Beh, se si tratta di un progetto hobby, allora non sei così preoccupato per EMC, quindi forse. Il consenso emergente è che questo sarebbe difficile per gli ingegneri senior per avere ragione, e provare a farlo fai-da-te non rende nulla di più facile. D'altra parte, è possibile ridurre la frequenza di clock se in questo caso non funziona. Proverei a trovare un layout alternativo per ridurre la lunghezza del collegamento a margherita.
jbarlow,

Voterei questo due volte se potessi.
Renan,

10

Non ti farà del male fare tutte le cose che suggeriscono Jbarlow e David, ma lasciami provare a renderti le cose un po 'più facili (o forse più difficili, perché sto per dire che probabilmente puoi cavartela molto delle cose, ma non lo prometto ).

Una regola empirica classica è che puoi considerare un circuito come un circuito aggregato se nessuna di queste dimensioni è più lunga di 1/10 della lunghezza d'onda del segnale di frequenza più alto di interesse. Se si tratta di un circuito aggregato, puoi considerare le tue tracce solo come connessioni tra elementi discreti. Se non si tratta di un circuito aggregato, è necessario preoccuparsi degli effetti del circuito distribuito e considerare le tracce come linee di trasmissione.

Stai parlando di una frequenza di clock di 30 MHz, corrispondente a una lunghezza d'onda di 10 m. Se si propaga attraverso FR4, questa lunghezza d'onda sarà ridotta a circa 4,7 m. E una lunghezza del circuito di 40 cm. Quindi per il fondamentale del segnale di clock sei proprio sul bordo della vecchia regola empirica.

Problema: non devi solo preoccuparti della frequenza di clock, ma quante armoniche di quella frequenza devono essere trasmesse per dare il tempo di salita e discesa che desideri. Se rallenti deliberatamente i bordi che trasmetti , puoi probabilmente cavartela solo con la 1a e la 3a armonica (David ha accennato a questo quando ha menzionato che non utilizzava necessariamente la massima forza motrice).

Ciò fornisce una frequenza di interesse massima di 90 MHz e una lunghezza d'onda corrispondente (in FR4) di circa 1,6 m. Quindi la distanza critica è di 16 cm. Ciò significa che nel complesso si desidera fornire un percorso di ritorno strettamente accoppiato, degnare le tracce come linee di trasmissione e terminare con un'impedenza appropriata, ecc.

Ma probabilmente non devi pagare un extra per l'impedenza controllata. Se si progetta con tracce superiori alla larghezza minima disponibile dal proprio fornitore, (diciamo 8 o 10 mil), le tolleranze normali molto probabilmente ti daranno prestazioni adeguate.

E se lungo la strada devi passare attraverso una via, o attraversare un breve spazio nel piano di massa, o non riesci a mettere un condensatore di bypass proprio accanto a una parte di carico, non sudare troppo. Se vuoi far passare le tue tracce direttamente da connettore a connettore, con alcuni stub di pochi cm per raggiungere i chip di carico su ogni scheda, andrà bene. Se la lunghezza della parte incontrollata del percorso (o della fessura nel piano di massa) è inferiore a pochi cm, non rovinerà la tua giornata. Anche se è di 10 cm, è probabile che tu riesca a cavarsela, ma non sfidare la fortuna.

Ad esempio, questo significa che quando ci si collega tra le schede, non è necessario un connettore controllato ad impedenza ad alto costo. Anche un paio di centimetri di cavo a nastro andrà bene. Una serie di fili terra-segnale-terra o segnale-terra-segnale-terra nel nastro è una buona idea, ma non preoccuparti dei cavi a coppia intrecciata o coassiali accoppiati ad impedenza.

Per un altro, se si decide di utilizzare un buffer su ciascuna scheda, ciò consentirebbe di trattare il circuito su ciascuna scheda (a una lunghezza di 10 cm) come un circuito a blocchi. Dovrai gestire l'inclinazione del buffer, come descritto da David, e dovrai limitare i tempi di salita e di discesa di ciascun buffer, ma otterrai molta flessibilità nel layout su ciascuna scheda senza comprometterne la funzionalità. Detto questo, più fai per mantenere i tuoi percorsi di ritorno vicini alle tracce del segnale, meno probabilità avrai di avere una brutta sorpresa quando si tratta di test EMC.


6

Penso che la risposta di @ jbarlow sia abbastanza precisa. Voglio aggiungerne un po ', ma non mi preoccuperò di ripetere ciò che ha detto.

L'unica cosa su cui non sarei d'accordo con @jbarlow è l'uso dei ripetitori o il buffering di tutti i segnali. Quello che dice è corretto, "se fai i compiti ...". Ma questo è il problema, fare i compiti. Puoi farlo, ma avrai bisogno di cavi e connettori relativamente costosi, e poi sarà solo "davvero difficile".

Non sembra che l'aggiunta di 10 ns di ritardo per bufferizzare l'orologio su ogni PCB sia davvero un problema. È difficile per me dirlo con certezza dato che hai lasciato fuori molti dettagli sugli altri segnali come BLANK e XLAT. Ma anche se si tratta di un problema, puoi sempre bufferizzare TUTTI i segnali. Tutte le porte del 74xx245 tenderanno ad avere lo stesso ritardo (o almeno simile), quindi i tempi complessivi sul driver LED rimarranno buoni.

(Nota: controllare i fogli dati. Un buon chip elencherà due diversi numeri di ritardo di propagazione. Uno per un singolo gate e un altro che mostra la differenza o l'inclinazione in ritardo tra le porte all'interno dello stesso chip. Non credetemi. dovrà ancora fare una corretta analisi dei tempi.)

Ottenere la terminazione e l'impedenza dei segnali tra i PCB è fondamentale per far funzionare questo progetto. Il controllo dell'impedenza nei cavi a più conduttori è sempre difficile e far passare un singolo segnale attraverso più PCB e cavi richiede solo problemi. Avrai una variazione di impedenza in molti punti lungo la lunghezza del segnale, il che creerà problemi di integrità del segnale. Il buffering di tutti i segnali tra i PCB aiuterà a gestirlo. Almeno la lunghezza della traccia e le variazioni di impedenza su ciascun segnale saranno ridotte al minimo.

L'uso di buffer di ritardo zero non è necessario e potrebbe effettivamente peggiorare le cose (e renderlo più costoso). I buffer zero delay sono in realtà Phase-Locked-Loops (PLL) e richiedono un design accurato per funzionare perfettamente. Nella maggior parte dei casi questo non è un grosso problema, ma potrebbe sicuramente essere un problema se il tuo orologio non è perfetto. Sarebbe meglio evitare questi per questa applicazione. Inoltre, un buffer a ritardo zero non è adatto per il buffering di qualsiasi cosa diversa da un clock in esecuzione continua, quindi non aiuta a bufferizzare altri segnali.


Punti eccellenti. Concordo sul fatto che l'approccio ai segnali bufferizzati è probabilmente molto più sicuro e ha maggiori probabilità di successo.
jbarlow,

In che modo buffer ant termina il segnale? È MCU-> Buffer-> Termine serie-> cavo-> Buffer-> TLC5945-> Buffer-> termine serie-> cavo ... o MCU-> Buffer-> Termine serie-> cavo-> TLC5945-> Buffer -> termine serie-> cavo ... ovvero devo bufferizzare i segnali da entrambe le estremità del cavo o posso inoltrare su buffer e terminazione per funzionare sia per connettore / cavo che per la scheda che verrà dopo?
miceuz,

@miceuz Idealmente, lo bufferizzeresti due volte su ogni scheda. Una volta quando il segnale entra nella scheda da un connettore. Un'altra volta quando il segnale lascia la scheda sull'altro connettore. In pratica, farlo una volta è probabilmente sufficiente. Quindi sarebbe MCU-> Cavo-> LED-> termine-> buf-> cavo-> led-> termine-> buf-> cavo-> ecc. Si noti che la terminazione della serie di sorgenti funziona solo se si dispone di un singolo carico sul segnale, cosa che non si verifica. Hai sia un chip driver LED che un buffer. Dovresti guardare la terminazione CA, che ha una resistenza e un cappuccio in serie a terra all'estremità opposta.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.