Question:
Comment doubler la fréquence de mon horloge en utilisant la conception numérique
George.K
2014-05-12 19:11:27 UTC
view on stackexchange narkive permalink

J'essaye de doubler la fréquence de mon horloge en utilisant uniquement des portes, des bascules ou autre mais malheureusement j'obtiens un signal dont le rapport cyclique est loin de 50%. Malheureusement, je dois développer mon système en utilisant FPGA mais la puce avec laquelle je travaille ne prend pas en charge une PLL donc avant d'essayer de travailler avec une autre carte, je veux être sûr que je ne peux pas obtenir la double fréquence de mon horloge d'entrée. La fréquence d'entrée de mon système est de 10 MHz et je souhaite émettre un signal de 20 MHz. Je l'ai fait en utilisant le circuit ci-joint et je l'ai également mesuré mais son cycle de service n'est pas du tout satisfaisant. S'il vous plaît, j'apprécierais si quelqu'un pouvait suggérer quelque chose qui pourrait être utile.

Voici le circuit que j'ai utilisé.

Schematic

Cinq réponses:
Andy aka
2014-05-12 19:28:36 UTC
view on stackexchange narkive permalink

J'essaie de doubler la fréquence de mon horloge en utilisant uniquement des portes, des bascules ou autre

Commencez avec une horloge de 20 MHz (qui relève du parapluie "peu importe") et réduisez-le à 10 MHz là où c'est nécessaire en utilisant un diviseur d'horloge à bascule.

C'est de loin la meilleure approche.
Malheureusement, le seul signal d'horloge d'entrée que j'ai est de 10 MHz, ce qui signifie que je ne peux pas faire beaucoup de choses sauf d'essayer de doubler la fréquence ....
Pourquoi ne pouvez-vous pas obtenir un oscillateur 20 MHz?
Parce que sur mon système, je n'obtiens qu'une entrée de 10 MHz et c'est le signal d'horloge que je dois utiliser ... Il est également utilisé pour les signaux vidéo ....
Michael Karas
2014-05-12 19:28:20 UTC
view on stackexchange narkive permalink

Une PLL est généralement nécessaire pour réaliser ce que vous voulez faire. Essayer d'utiliser uniquement la logique pour ce faire nécessite l'ajout de délais supplémentaires via les constantes de temps R / C pour amener les 2x impulsions à près de 50% du cycle de service. Cependant, cela ne se produira généralement pas à l'intérieur d'un FPGA sans amener certains signaux aux broches sur la partie où le R / C peut être connecté puis réinjecté dans d'autres broches. Une autre limitation est qu'un tel schéma ne sera pas correct sur un cycle de service de 50% et pour un ensemble donné de valeurs R / C ne sera utile que dans une plage étroite particulière de fréquences d'entrée.

La conception originale avait ce genre de solution `` analogique '' qui dans la plupart des cas est ok ... Le pll est la meilleure idée mais la carte fpga d'Altera que j'ai ne supporte pas pll donc avant de changer ma carte fpga en fpgaqui a des pll je veux savoir s'il existe un moyen d'y parvenir avec des portes et ainsi de suite ...
En ce qui concerne l'ensemble des R / C du circuit R / C, comment calculez-vous les valeurs?
Vous pouvez approximer le retard R / C à environ 0,5 fois la période de demi-horloge de l'horloge de sortie souhaitée.Un point de départ pourrait être d'utiliser une valeur de retard = 1,5 * R * C où le retard est en secondes, R est en ohms et C est en Farads.Le multiplicateur de 1,5 n'est qu'une estimation du point de départ et dépend entièrement des niveaux de seuil de niveau logique d'entrée du FPGA.Il dépend d'un ordre secondaire de la température, des délais de propagation des broches d'E / S du FPGA et de la symétrie de la réponse faible à élevée par rapport à la réponse élevée à faible de l'entrée FPGA.Le R / C serait connecté en tant que passe-bas (suite ci-dessous)
(Suite ci-dessus) filtre - R en série à partir de la sortie FPGA puis C vers GND.Le point commun du RC se reconnecte à l'entrée du FPGA.Vous devez piloter la sortie du FPGA avec une copie de l'horloge d'entrée de fréquence inférieure (qui, espérons-le, a un cycle de service de 50%).Combinez ensuite la version retardée de cette horloge à l'entrée de votre circuit 2x.
Si je l'ai bien compris, vous avez écrit que: delay (sec) = 0,5 * (1/2 (0,05 * 10 ^ -6)) où le 0,05 * 10 ^ -6 sec est la période du20 Mhz (sortie souhaitée).Si c'est le cas, la prochaine chose est simplement de tester ma carte avec l'ensemble de ces valeurs.Mais quelque chose de plus ... Y a-t-il une forme mathématique ou autre pour calculer le facteur K = 1,5: Multiplicateur qui dépend de certaines choses ??
philfr
2014-05-13 01:15:10 UTC
view on stackexchange narkive permalink

Doubler la fréquence peut être aussi simple que ceci:

enter image description here

grâce au délai de propagation de la porte (je l'ai en fait utilisé pour overclocker un TRS-80 quand j'étais young).

La résolution du problème du cycle de service pourrait se faire (approximativement) en modifiant le nombre de portes en série, mais ne fonctionnerait que pour une fréquence (et serait probablement sensible aux caractéristiques des composants, à la température, etc. .)

Vous pouvez doubler la fréquence deux fois et la diviser une fois avec une bascule pour obtenir un signal parfaitement carré, comme l'a dit Andy.

Vous pouvez également remplacer U2-U4 par une résistance, la capacité d'entrée de U1 formera un filtre RC ... mais serait-ce toujours du «design numérique»?
Merci beaucoup philfr!Malheureusement, je fais toujours ce genre de simulations en utilisant fpga et quelque chose comme ça ne peut pas être simulé, donc je ne peux pas aller plus loin avec ça ...
supercat
2014-05-12 22:21:45 UTC
view on stackexchange narkive permalink

Pour doubler proprement la fréquence d'une horloge d'entrée appliquée, il faudrait un circuit PLL, FLL ou autre. Selon ce que vous essayez de faire, cependant, si vous devez générer deux événements d'horloge en réponse à un stimulus d'horloge externe sur lequel vous n'avez aucun contrôle, deux approches que j'appelle «putt-putt-wait» et «putt- putt-skip "pourrait être mieux.

Pour" putt-putt-skip ", vous avez besoin d'un oscillateur libre qui tourne plus de trois fois (de préférence plus de quatre fois) plus vite que l'horloge d'entrée . Comptez combien d'impulsions ont été reçues sur l'horloge d'entrée et combien ont été émises. Sur chaque horloge de l'oscillateur local, verrouillez le nombre de comptages de l'entrée de référence et émettez une impulsion si le comptage précédemment verrouillé n'est pas égal à la moitié du nombre d'impulsions en sortie. Notez que baser l'impulsion de sortie sur le compte précédemment verrouillé ajoutera une valeur d'horloge locale supplémentaire de retard de phase, mais évitera toute possibilité de sortie d'impulsions d'horloge métastables ou "runt".

Pour "putt-putt -wait ", vous avez besoin d'un oscillateur qui peut être démarré et arrêté en douceur; l'oscillateur doit fonctionner chaque fois que le nombre de références n'est pas égal à la moitié du nombre d'impulsions en sortie, et s'arrêter chaque fois qu'il est égal. Si l'oscillateur peut démarrer et s'arrêter en douceur, cette approche peut produire une relation de phase plus cohérente entre les formes d'onde d'entrée et de sortie que ne le ferait putt-putt-skip. Il peut également être plus économe en énergie.

Ces deux approches produiront des sorties dont la relation de phase n'est pas aussi claire par rapport à l'onde de référence que le serait une PLL ou FLL qui a eu le temps d'acquérir un verrou . D'autre part, si l'horloge de référence peut être démarrée et arrêtée, une PLL ou FLL nécessiterait un certain temps pour réacquérir un verrou à chaque fois que l'onde de référence s'arrête et redémarre, et jusqu'à ce que le verrou soit réacquis, sa phase de sortie serait essentiellement aléatoire par rapport à l'entrée. En revanche, les approches putt-putt-skip ou putt-putt-wait produiront une paire d'impulsions qui suivent dans des fenêtres bien définies chaque impulsion d'horloge d'entrée reçue, que ces impulsions forment un train continu ou qu'elles démarrent et s'arrêtent périodiquement. .

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

Pour doubler la fréquence d'horloge en utilisant uniquement des portes logiques, on peut simplement la faire passer à travers un tampon avec un délai de propagation égal à un quart de la période d'horloge, puis simplement xnou les deux horloges pour obtenir le double de la fréquence.

C'est ce que philfr a proposé il y a près de 6 ans, et le PO n'a pas trouvé la réponse utile.Vous devriez regarder les autres réponses avant d'ajouter les vôtres.


Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...