Frage:
Wie man die Frequenz meiner Uhr mit digitalem Design verdoppelt
George.K
2014-05-12 19:11:27 UTC
view on stackexchange narkive permalink

Ich versuche, die Frequenz meiner Uhr nur mit Gates, Flip-Flops oder was auch immer zu verdoppeln, aber leider erhalte ich ein Signal, dessen Tastverhältnis weit von 50% entfernt ist. Leider muss ich mein System mit FPGA entwickeln, aber der Chip, mit dem ich arbeite, unterstützt keine PLL. Bevor ich versuche, mit einer anderen Karte zu arbeiten, möchte ich sichergehen, dass ich nicht die doppelte Frequenz meines Eingangstakts erhalten kann. Die Eingangsfrequenz meines Systems beträgt 10 MHz und ich möchte ein Signal von 20 MHz erzeugen. Ich habe es mit der angeschlossenen Schaltung gemacht und ich habe es auch gemessen, aber das Tastverhältnis ist überhaupt nicht zufriedenstellend. Bitte ich würde mich freuen, wenn jemand etwas vorschlagen könnte, das hilfreich sein könnte.

Hier ist die Schaltung, die ich verwendet habe.

Schematic

Fünf antworten:
Andy aka
2014-05-12 19:28:36 UTC
view on stackexchange narkive permalink

Ich versuche, die Frequenz meiner Uhr nur mit Gates, Flip-Flops oder was auch immer zu verdoppeln.

Beginnen Sie mit einem 20-MHz-Takt (der unter dem Dach "was auch immer" steht) und Reduzieren Sie es auf 10 MHz, wo es mit einem Flip-Flop-Taktteiler benötigt wird.

Dies ist bei weitem der beste Ansatz.
Leider ist das einzige Eingangstaktsignal, das ich habe, 10 MHz, was bedeutet, dass ich nicht viele Dinge tun kann, außer zu versuchen, die Frequenz zu verdoppeln ....
Warum können Sie keinen 20-MHz-Oszillator bekommen?
Weil ich auf meinem System nur 10 MHz Eingang bekomme und es das Taktsignal ist, das ich verwenden muss ... Auch wird es für Videosignale verwendet ....
Michael Karas
2014-05-12 19:28:20 UTC
view on stackexchange narkive permalink

Eine PLL ist im Allgemeinen erforderlich, um das zu erreichen, was Sie tun möchten. Der Versuch, nur Logik zu verwenden, erfordert das Hinzufügen einiger zusätzlicher Verzögerungen über R / C-Zeitkonstanten, um die 2x-Impulse auf ein Tastverhältnis von nahezu 50% zu bringen. Dies geschieht jedoch im Allgemeinen nicht innerhalb eines FPGAs, ohne dass einige Signale an die Pins des Teils gesendet werden, an dem die R / C angeschlossen und dann in andere Pins zurückgeführt werden kann. Eine weitere Einschränkung besteht darin, dass ein solches Schema bei einem Tastverhältnis von 50% nicht richtig ist und für einen gegebenen Satz von R / C-Werten nur in einem bestimmten engen Bereich der Eingangsfrequenz nützlich ist.

Das ursprüngliche Design hatte diese Art von "analoger" Lösung, die in den meisten Fällen in Ordnung ist ... Die pll ist die beste Idee, aber das fpga-Board von Altera, das ich habe, unterstützt pll nicht, bevor ich mein fpga-Board in ein fpga änderedas hat pll's ich möchte herausfinden, ob es einen Weg gibt, es mit Toren zu erreichen und so weiter ...
Wie berechnen Sie die Werte für den R / C-Satz des R / C-Schaltkreises?
Sie können die R / C-Verzögerung auf etwa das 0,5-fache der halben Taktperiode des gewünschten Ausgangstakts schätzen.Ein Ausgangspunkt könnte die Verwendung eines Verzögerungswerts = 1,5 * R * C sein, wobei die Verzögerung in Sekunden, R in Ohm und C in Farad angegeben ist.Der 1,5-Multiplikator ist nur eine Schätzung des Ausgangspunkts und hängt vollständig von den Schwellenwerten des Eingangslogikpegels des FPGA ab.Dies hängt von einer sekundären Ordnung in Bezug auf Temperatur, E / A-Pin-Ausbreitungsverzögerungen des FPGA und Symmetrie des niedrigen zu hohen gegenüber dem hohen zu niedrigen Ansprechverhalten des FPGA-Eingangs ab.Das R / C wird als Tiefpass angeschlossen (siehe unten).
(Fortsetzung von oben) Filter - R in Reihe vom FPGA-Ausgang, dann C nach GND.Der gemeinsame Punkt des RC wird wieder mit dem Eingang des FPGA verbunden.Sie müssen den Ausgang des FPGA mit einer Kopie des Eingangstakts mit niedrigerer Frequenz ansteuern (der hoffentlich ein Tastverhältnis von 50% hat).Kombinieren Sie dann die verzögerte Version dieser Uhr am Eingang in Ihrer 2x-Schaltung.
Wenn ich es richtig verstanden habe, haben Sie geschrieben: Verzögerung (Sek.) = 0,5 * (1/2 (0,05 * 10 ^ -6)) wobei 0,05 * 10 ^ -6 Sek. Die Periode der ist20 MHz (gewünschte Leistung).Wenn ja, ist das nächste, einfach mein Board mit diesen Werten zu testen.Aber noch etwas mehr ... Gibt es eine mathematische Form oder was auch immer, um den Faktor K = 1,5 zu berechnen: Multiplikator, der von einigen Dingen abhängt?
philfr
2014-05-13 01:15:10 UTC
view on stackexchange narkive permalink

Das Verdoppeln der Frequenz kann so einfach sein:

enter image description here

dank der Gate-Ausbreitungsverzögerung (ich habe dies tatsächlich verwendet, um einen TRS-80 zu übertakten, als ich es war jung).

Die Lösung des Tastverhältnisproblems könnte (ungefähr) durch Ändern der Anzahl der in Reihe geschalteten Gates erfolgen, würde jedoch nur für eine Frequenz funktionieren (und wäre wahrscheinlich empfindlich gegenüber den Eigenschaften der Komponenten, der Temperatur usw. .)

Sie können die Frequenz zweimal verdoppeln und einmal mit einem Flip-Flop teilen, um ein perfekt quadratisches Signal zu erhalten, wie Andy sagte.

Sie können U2-U4 auch durch einen Widerstand ersetzen. Die Eingangskapazität von U1 bildet ein RC-Filter. Aber wäre das immer noch "digitales Design"?
Vielen Dank philfr!Leider mache ich immer diese Art von Simulationen mit fpga und so etwas kann nicht simuliert werden, also kann ich nicht weiter damit gehen ...
supercat
2014-05-12 22:21:45 UTC
view on stackexchange narkive permalink

Um die Frequenz eines angelegten Eingangstakts sauber zu verdoppeln, wäre eine PLL, FLL oder eine andere solche Schaltung erforderlich. Je nachdem, was Sie versuchen, müssen Sie jedoch zwei Taktereignisse als Reaktion auf einen externen Taktreiz generieren, über den Sie keine Kontrolle haben. Zwei Ansätze, die ich "Putt-Putt-Wait" und "Putt-" nenne. Putt-Skip "ist möglicherweise besser.

Für" Putt-Putt-Skip "benötigen Sie einen freilaufenden Oszillator, der mehr als dreimal (vorzugsweise mehr als viermal) so schnell wie der Eingangstakt läuft . Zählen Sie, wie viele Impulse am Eingangstakt empfangen und wie viele ausgegeben wurden. Zwischenspeichern Sie bei jedem Takt des lokalen Oszillators die Anzahl der Zählungen vom Referenzeingang und geben Sie einen Impuls aus, wenn die zuvor zwischengespeicherte Anzahl nicht der Hälfte der ausgegebenen Impulse entspricht. Beachten Sie, dass das Basieren des Ausgangsimpulses auf der zuvor zwischengespeicherten Anzahl die Phasenverzögerung eines zusätzlichen lokalen Takts erhöht, jedoch die Möglichkeit der Ausgabe metastabiler oder "runt" -Taktimpulse vermeidet.

Für "Putt-Putt" -wait ", Sie benötigen einen Oszillator, der reibungslos gestartet und gestoppt werden kann; Der Oszillator sollte immer dann laufen, wenn der Referenzzähler nicht der Hälfte der ausgegebenen Impulse entspricht, und anhalten, wenn er gleich ist. Wenn der Oszillator reibungslos starten und stoppen kann, kann dieser Ansatz eine konsistentere Phasenbeziehung zwischen den Eingangs- und Ausgangswellenformen ergeben als Putt-Putt-Skip. Es kann auch energieeffizienter sein.

Beide Ansätze liefern Ausgänge, deren Phasenbeziehung im Verhältnis zur Referenzwelle nicht so sauber ist wie eine PLL oder FLL , die Zeit hatte, eine Sperre zu erlangen . Wenn andererseits der Referenzuhr gestartet und gestoppt werden kann, würde eine PLL oder FLL jedes Mal, wenn die Referenzwelle stoppt und neu startet, eine bestimmte Zeit benötigen, um eine Sperre wieder zu erlangen, und bis die Sperre wiedererlangt wurde, wäre ihre Ausgangsphase im wesentlichen zufällig relativ zur Eingabe. Im Gegensatz dazu geben die Putt-Putt-Skip- oder Putt-Putt-Wait-Ansätze ein Paar von Impulsen aus, die in genau definierten Fenstern jedem empfangenen Eingangstaktimpuls folgen, unabhängig davon, ob diese Impulse einen kontinuierlichen Zug bilden oder periodisch starten und stoppen .

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

Um die Taktfrequenz nur mit Logikgattern zu verdoppeln, kann man sie einfach durch einen Puffer mit einer Ausbreitungsverzögerung von einem Viertel der Taktperiode leiten und dann einfach beide Takte xnor xnor, um die doppelte Frequenz zu erhalten.

Das hat philfr vor fast 6 Jahren vorgeschlagen, und das OP fand die Antwort nicht hilfreich.Sie sollten sich die anderen Antworten ansehen, bevor Sie Ihre eigenen hinzufügen.


Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...