Erstellen Sie eine Verzögerung, die kürzer als eine Taktperiode in CPLD ist

Ich habe mehrere Peripheriegeräte, die an CPLD angeschlossen sind. Sie alle haben unterschiedliche Ausbreitungsverzögerungen, und um dies zu kompensieren, möchte ich eine Verzögerung von etwa 10–15 ns in die CPLD-Logik einführen. Im Detail sollte clkOUT dem clkIN um etwa 10 ns nacheilen. Ist es möglich, ein Verhaltensmodell in VHDL zu beschreiben? Irgendwelche Vorschläge? clkIN = 10MHz.

CoolRunner-II

Antworten (2)

Nein, asynchrone Verzögerungen sind keine synthetisierbaren Konstrukte in einem HDL.

Wenn Sie jedoch nicht viel Genauigkeit benötigen, können Sie künstlich eine lange Reihe von Gattern (z. B. Inverter oder Puffer) spezifizieren und dann Synthesebeschränkungen verwenden, um zu verhindern, dass sie wegoptimiert werden.

Ist es möglich, Synthesebeschränkungen nur für einzelne Zeilen im Code festzulegen, oder gelten sie für das gesamte Modell?
Beschränkungen basieren normalerweise nicht auf "Codezeilen", sondern auf spezifischen Signalen. Sie ordnen jedem der Signale zwischen den Toren die Eigenschaft "Keep" zu.
Wenn Sie Ersatzstifte haben, können Sie die Ein- und Ausgangspuffer verketten. Es sollte Ihnen mehr Verzögerung für weniger Elemente in Ihrem CoolRunner II geben. Eindeutige Pin-Namen geben Ihnen eine Granularität von einem Puffer anstelle von zwei Invertern.
Die Idee ist richtig. Hier konnte ich das Problem lösen

Die Antwort von Dave Tweed ist richtig, obwohl mir aufgefallen ist, dass die Lösung, die Sie in den Xilinx-Foren gefunden haben, erfordert, dass Sie zusätzliche Ausgangspins an Tri-State-Gattern verwenden, um zu verhindern, dass die Synthese Ihre Zwischengatter entfernt. Für solch eine kleine Änderung können Sie den Xilinx FPGA Editor verwenden, um das synthetisierte Design manuell zu manipulieren. Eine Anleitung finden Sie hier .

Ich bin mir nicht sicher, welche Art von Ressourcen Sie in Ihrem CPLD zur Verfügung haben (ich arbeite normalerweise mit großen FPGAs mit vollem Funktionsumfang), aber Sie könnten auch ein MMCM/PLL oder ähnliches verwenden, um einen Ausgangstakt mit einem bestimmten Phasenversatz neu zu generieren (Unter-1-Zyklus-Verzögerung).

Interessant. Es wird einige Zeit dauern, bis ich verstehe, wie man es richtig benutzt.