2017-03-10 6 views

Antwort

2

Sie können nicht um einen Bruchteil einer Taktperiode zuverlässig mit digitaler Elektronik verzögern. (Ob Sie codieren es in VHDL oder Verilog oder Palasm oder Ella oder was auch immer, ist irrelevant.)

Sie können eine Taktverzögerung von grob 1/2T, wenn Sie die entgegengesetzte Flanke des Takt verwenden, aber auch das ist nicht zuverlässig. Dabei gehen Sie davon aus, dass das Tastverhältnis des Taktes nahe bei 50:50 liegt und dies unabhängig von der Versorgungsspannung, der Düsentemperatur (Temperatur des tatsächlichen Siliziums) oder der Prozessecke (Geschwindigkeitsklasse des FPGAs) der Fall ist).

Die einzige Möglichkeit, um weniger als 1/2T zu verzögern, ist es, die Tatsache auszunutzen, dass jedes Logikgatter eine Verzögerung hat. Dies ist jedoch eine sehr unzuverlässige Methode, da diese Verzögerung mit der Versorgungsspannung, der Düsentemperatur und der Prozessecke sehr unterschiedlich ist. Zum Beispiel einfach um den Faktor 3.

Also, wenn Sie etwas um 1/4T zuverlässig verzögern möchten, benötigen Sie eine Uhr mit der Periode 1/4T.

+0

Eine Uhr, die ich für meine winzige 8bit-CPU brauche, sollte drei Ausgänge haben: 1- clk (Originaluhr mit Periode T). 2- Aktivieren Sie die Uhr (ist '1' auf 3/4 T und '0' auf 1/4 T). 3 Uhr stellen (ist nur auf 1/4T in der Mitte der Periode). Wenn eine 1/4T-Verzögerung möglich wäre, könnte ich die erwähnten Freigabe- und Einstell-Takte aus dem ursprünglichen Takt herausnehmen, indem ich den Verzögerungstakt mit dem ursprünglichen Takt andoße und anordne. Aber wie kann ich es jetzt tun, wenn es nicht möglich ist? fühle mich enttäuscht ... – argasm

+1

Dann, warum nicht ein 'clk' an die CPU mit einer Taktperiode von' 4 * T' und produzieren Ihre Freigabesignale mit FFs getakteten @ '1/T' Frequenz? – rascob

1

Wie und ob dies möglich ist, hängt von Ihrer Zieltechnologie ab und davon, wo und warum Sie die Uhr verzögern möchten.

In einem FPGA müssen Uhren und Daten an den Eingängen und Ausgängen häufig verzögert werden. Speziell bei Xilinx-FPGAs gibt es gehärtete Makros namens IDELAY und ODELAY, die Ihnen erlauben, dies zu tun. Die documentation kann mehr Details zur Verfügung stellen.

Der Phasenversatz kann auch in Ihrer Logik mithilfe eines PLL/MMCM/DCM (ein anderes gehärtetes Makro zum Synthetisieren verschiedener Takte von einem einzelnen Eingangstakt) ausgeführt werden, um den mit einem 90-Grad-Versatz phasenverriegelten Takt zu regenerieren. Auch hier kann die documentation Ihnen weitere Einblicke geben.

Die Dokumentation, die ich verlinkt habe, ist spezifisch für Xilinx 7-Serie FPGAs, aber es gibt ähnliche Dokumente für die meisten Hersteller und FPGA-Familien. Wenn Sie dies stattdessen in einem ASIC machen möchten, haben Sie wahrscheinlich kein Glück, etwas Analoges zu vermeiden, da beide gehärteten Makros intern auf analoge Teile angewiesen sind, nur keine Teile, die Sie entwerfen müssen.

Verwandte Themen