Domanda:
Come raddoppiare la frequenza del mio orologio utilizzando il design digitale
George.K
2014-05-12 19:11:27 UTC
view on stackexchange narkive permalink

Sto cercando di raddoppiare la frequenza del mio clock utilizzando solo gate, flip flop o altro ma sfortunatamente ricevo un segnale il cui duty cycle è lontano dal 50%. Sfortunatamente devo sviluppare il mio sistema usando FPGA ma il chip con cui lavoro non supporta un PLL quindi prima di provare a lavorare con un'altra scheda voglio essere sicuro di non poter ottenere la doppia frequenza del mio clock di ingresso. La frequenza di ingresso del mio sistema è di 10 MHz e voglio fare un segnale di 20 MHz. L'ho fatto utilizzando il circuito allegato e l'ho anche misurato ma il ciclo di lavoro non è affatto soddisfacente. Per favore, apprezzerei se qualcuno potesse suggerire qualcosa che potrebbe essere utile.

Ecco il circuito che ho usato.

Schematic

Cinque risposte:
Andy aka
2014-05-12 19:28:36 UTC
view on stackexchange narkive permalink

Sto cercando di raddoppiare la frequenza del mio clock usando solo gate, flip flop o qualsiasi altra cosa

Inizia con un clock a 20 MHz (che rientra nell'ombrello "qualunque") riducilo a 10 MHz dove è necessario utilizzando un divisore di clock flip-flop.

Questo è di gran lunga l'approccio migliore.
Sfortunatamente l'unico segnale di clock in ingresso che ho è 10 MHz, il che significa che non posso fare molte cose se non cercare di raddoppiare la frequenza ...
Perché non riesci a procurarti un oscillatore da 20 MHz?
Perché nel mio sistema ottengo solo 10 MHz in ingresso ed è il segnale di clock che devo usare ... Inoltre è utilizzato per i segnali video ....
Michael Karas
2014-05-12 19:28:20 UTC
view on stackexchange narkive permalink

Un PLL è generalmente richiesto per ottenere ciò che vuoi fare. Il tentativo di utilizzare solo la logica per fare ciò richiede l'aggiunta di alcuni ritardi extra tramite costanti di tempo R / C per portare gli impulsi 2x fino a un ciclo di lavoro vicino al 50%. Tuttavia ciò non accadrà generalmente all'interno di un FPGA senza portare alcuni segnali ai pin sulla parte in cui l'R / C può essere collegato e quindi reinserito in altri pin. Un'altra limitazione è che tale schema non sarà corretto con un duty cycle del 50% e per un dato insieme di valori R / C sarà utile solo in un particolare intervallo ristretto di frequenza di ingresso.

Il design originale aveva quel tipo di soluzione `` analogica '' che nella maggior parte dei casi è ok ... Il pll è l'idea migliore ma la scheda fpga di Altera che ho non supporta pll quindi prima di cambiare la mia scheda fpga in un fpgache ha pll voglio scoprire se c'è un modo per ottenerlo con i cancelli e così via ...
Per quanto riguarda il set di R / C del Circuito R / C come si calcolano i valori?
È possibile approssimare il ritardo R / C a circa 0,5 volte il periodo di metà clock del clock di uscita desiderato.Un punto di partenza potrebbe essere quello di utilizzare un valore di ritardo = 1.5 * R * C dove il ritardo è in secondi, R è in ohm e C è in Farad.Il moltiplicatore di 1,5 è solo un'ipotesi di punto di partenza ed è completamente dipendente dai livelli di soglia del livello logico di ingresso dell'FPGA.Dipende da un ordine secondario sulla temperatura, sui ritardi di propagazione dei pin I / O dell'FPGA e sulla simmetria della risposta da bassa ad alta rispetto alla risposta da alta a bassa dell'ingresso FPGA.L'R / C sarebbe collegato come passa basso (continua di seguito)
(Continua da sopra) filtro - R in serie dall'uscita FPGA quindi C a GND.Il punto comune dell'RC si collega nuovamente all'ingresso dell'FPGA.È necessario pilotare l'uscita dell'FPGA con una copia del clock di ingresso a frequenza più bassa (che si spera abbia un duty cycle del 50%).Quindi combina la versione ritardata di questo orologio all'ingresso nel tuo circuito 2x.
Se ho capito bene hai scritto che: delay (sec) = 0,5 * (1/2 (0,05 * 10 ^ -6)) dove 0,05 * 10 ^ -6 sec è il periodo del20 Mhz (uscita desiderata).Se è così, la prossima cosa è semplicemente testare la mia scheda con questi valori impostati.Ma qualcosa di più ... Esiste una forma matematica o qualsiasi altra cosa per calcolare il fattore K = 1,5: Moltiplicatore che dipende da alcune cose ??
philfr
2014-05-13 01:15:10 UTC
view on stackexchange narkive permalink

Raddoppiare la frequenza può essere così semplice:

enter image description here

grazie al ritardo di propagazione del gate (in realtà l'ho usato per overcloccare un TRS-80 quando ero young).

Risolvere il problema del duty cycle potrebbe essere fatto (approssimativamente) cambiando il numero di gate in serie, ma funzionerebbe solo per una frequenza (e sarebbe probabilmente sensibile alle caratteristiche dei componenti, alla temperatura, ecc. .)

Potresti raddoppiare la frequenza due volte e dividerla una volta con un flip-flop per ottenere un segnale perfettamente quadrato, come ha detto Andy.

Puoi anche sostituire U2-U4 con un resistore, la capacità di ingresso di U1 formerà un filtro RC ... ma sarebbe ancora "design digitale"?
Grazie mille philfr!Sfortunatamente faccio sempre quel tipo di simulazioni usando fpga e qualcosa del genere non può essere simulato, quindi non posso andare oltre ...
supercat
2014-05-12 22:21:45 UTC
view on stackexchange narkive permalink

Per raddoppiare in modo netto la frequenza di un clock di ingresso applicato richiederebbe un PLL, FLL o un altro circuito simile. A seconda di cosa stai cercando di fare, tuttavia, se hai bisogno di generare due eventi di clock in risposta a uno stimolo di clock esterno su cui non hai controllo, due approcci che chiamo "putt-putt-wait" e "putt- putt-skip "potrebbe essere migliore.

Per" putt-putt-skip ", hai bisogno di un oscillatore a funzionamento libero che funzioni più di tre volte (preferibilmente più di quattro volte) alla velocità del clock di input . Contare quanti impulsi sono stati ricevuti sul clock di ingresso e quanti sono stati emessi. Su ogni clock dall'oscillatore locale, aggancia il numero di conteggi dall'ingresso di riferimento e invia un impulso se il conteggio precedentemente bloccato non è uguale alla metà del numero di impulsi in uscita. Nota che basare l'impulso di uscita sul conteggio precedentemente bloccato aggiungerà un valore di ritardo di fase del clock locale aggiuntivo, ma eviterà ogni possibilità di emettere impulsi di clock metastabili o "runt".

-wait ", hai bisogno di un oscillatore che possa essere avviato e fermato senza problemi; l'oscillatore dovrebbe funzionare ogni volta che il conteggio dei riferimenti non è uguale alla metà del numero di impulsi emessi e fermarsi ogni volta che è uguale. Se l'oscillatore può avviarsi e arrestarsi senza problemi, questo approccio può produrre una relazione di fase più coerente tra le forme d'onda di ingresso e di uscita di quanto farebbe putt-putt-skip. Potrebbe anche essere più efficiente dal punto di vista energetico.

Entrambi questi approcci produrranno output la cui relazione di fase non è così pulita rispetto all'onda di riferimento come sarebbe un PLL o FLL che ha avuto il tempo di acquisire un blocco . D'altra parte, se il clock di riferimento può essere avviato e arrestato, un PLL o FLL richiederebbe un certo periodo di tempo per riacquisire un blocco ogni volta che l'onda di riferimento si arresta e si riavvia, e fino a quando il blocco non viene riacquistato la sua fase di uscita sarebbe essenzialmente casuale rispetto all'input. Al contrario, gli approcci putt-putt-skip o putt-putt-wait produrranno una coppia di impulsi che seguono entro finestre ben definite ogni impulso di clock in ingresso ricevuto, indipendentemente dal fatto che quegli impulsi formino un treno continuo, o che periodicamente si avviino e si fermino .

Mitali Rathod
2020-04-18 13:21:16 UTC
view on stackexchange narkive permalink

Per raddoppiare la frequenza di clock utilizzando solo porte logiche si può semplicemente farla passare attraverso un buffer con un ritardo di propagazione pari a un quarto del periodo di clock e quindi semplicemente xnor entrambi i clock per ottenere il doppio della frequenza.

Questo è ciò che philfr ha proposto quasi 6 anni fa e il PO non ha trovato utile la risposta.Dovresti guardare le altre risposte prima di aggiungere la tua.


Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...