Ciclo di blocco di tutte le fasi digitali


9

Sto cercando di implementare un blocco di fase in un FPGA senza utilizzare alcun componente esterno (diverso dall'ADC). Per semplicità, è sufficiente bloccare a un semplice impulso binario. La frequenza dei segnali è ~ 0,1-1% dell'orologio. Non riesco a utilizzare i PLL dell'orologio di bordo perché sono in genere:

  1. Non configurabile (impostato durante la sintesi).
  2. Jittery.
  3. Non supportare la frequenza di cui ho bisogno.

Ho smistato la letteratura e ho trovato alcuni loop binari con blocco di fase. Soprattutto un design "rubare le pulsazioni" a cui posso pubblicare un link se lo desidero. Ho implementato e sintetizzato con un certo successo, ma la sua gamma di jitter e lock non era buona come pubblicizzata. Ho anche avuto successo usando un DVCO esterno, ma preferirei poter implementare tutto su chip.

Sarebbe utile un progetto di circuito digitale o anche un suggerimento nella giusta direzione (ho sbattuto la testa contro questo per un po '), un'implementazione FPGA comprovata sarebbe meravigliosa ma non prevista.

AGGIUNTO 10-27-2010

L'attuale design DPLL che ho usato ha un "filtro a camminata casuale" come filtro loop (non il "furto di impulsi" descritto in precedenza, passando attraverso le mie note che non funzionavano bene), che quindi porta gli impulsi di clock al DCO . L'intervallo di blocco viene impostato tramite divisore nel DCO. La sensibilità del loop viene stabilita variando la lunghezza della camminata casuale.

Il documento in cui si trova questo è citato alla fine di questo post. Dopo aver implementato alcune parti di me stesso, ho scoperto che in realtà era già implementato su OpenCores, tuttavia risulta che negli ultimi mesi il progetto è stato eliminato ma ho i file Verilog salvati se qualcuno li desidera.

Yamamoto, H .; Mori, S .; , "Prestazioni di tutti i loop binari quantizzati digitali quantizzati con una nuova classe di filtri sequenziali", Comunicazioni, Transazioni IEEE su, vol.26, n. 1, pagg. 35-45, gennaio 1978

doi: 10.1109 / TCOM.1978.1093972

URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=1093972&isnumber=23895


1
Si prega di fare un collegamento al design "pulse steal" - non c'è motivo di non farlo.
Kevin Vermeer,

Risposte:


6

Potete pubblicare maggiori dettagli riguardo la frequenza target, la larghezza di banda jitter e loop (tempo di assestamento richiesto)? Inoltre, che tipo di oscillatore vuoi usare (esterno con un DAC, con / senza dithering?, Un contatore / accumulatore digitale su chip)?

Se sei soddisfatto di un "oscillatore" digitale (cioè un accumulatore traboccante) e il suo jitter, il resto del circuito può essere abbastanza semplice:

  • un contatore (PFD) che conta il numero di cicli tra il riferimento e l'uscita PLL (facoltativamente divisa),
  • un filtro digitale: qualsiasi cosa farà supponendo che faccia l'integrazione (un accumulatore) e che abbia uno zero (meno (o più?) un'uscita PFD ridimensionata) per stabilizzare il loop, opzionalmente uno o più poli sopra la larghezza di banda del loop per ridurre la il valore di controllo "ripple" alla frequenza di riferimento (è importante solo se fref
  • i bit più significativi dell'uscita del filtro digitale (valore di controllo DVCO) sono dati come input all'accumulatore a straripamento (DVCO).

Per quanto riguarda la larghezza di banda del loop, se non imposta dal tempo di assestamento, deciderlo in base ai contributi di rumore di tutti i componenti.

  • Se il jitter proviene principalmente dal riferimento o da PFD, utilizzare una larghezza di banda inferiore,
  • Se il rumore proviene dall'oscillatore, aumentalo.

Nel caso in cui il segnale di riferimento sia modulato in fase o in frequenza, utilizzare una larghezza di banda del loop inferiore alla frequenza più piccola del segnale che modula il riferimento.

Le tecniche più complicate vengono utilizzate se la frequenza di uscita è vicina o uguale alla frequenza di clock e / o se è richiesto il jitter basso o l'intervallo di blocco molto veloce. Forse nel tuo caso non sono necessari, inoltre potrebbero non essere adatti a un'implementazione FPGA.


Se si desidera, ad esempio, moltiplicare la frequenza di un segnale in ingresso stabile per 16 e si ha un orologio che è veloce rispetto a quello, quale vantaggio c'è nell'utilizzare un filtro digitale rispetto alla misurazione del numero di orologi tra ciascun fronte e il precedente uno, e capire quale frequenza si dovrebbe emettere in modo che l'impulso di uscita che dovrebbe coincidere con il successivo fronte di clock in ingresso lo farà? Se il jitter del clock di input non è altro che un ciclo di clock, il jitter di output dovrebbe essere altrettanto buono. Un tale schema potrebbe iniziare a produrre un output pulito non appena ha ottenuto il secondo impulso di input.
supercat

1

Se riesci a tollerare un po 'di jitter ma per lo più hai bisogno solo di un clock preciso rispetto a un orologio per il recupero dei dati, potresti voler implementare qualcosa come il PLL standard CAN (inizia a pagina 67 di quel PDF). Funziona in base a un contatore di overflow che dovrebbe essere sintonizzato nominalmente correttamente, ma sincronizza fino ai bordi nel flusso di impulsi in ingresso.

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.