Hallo, ich möchte zwischen zwei unterschiedlichen Takten hin-und herschalten. In meinem VHDL-Code synchronisiere ich erst auf einen Basistakt und will nun zwischen dem Takt1 und einem Takt2 wechseln. Mit dem Auslösen des Triggersignals soll jeweils bei Triggersignal high bzw.low zwischen den beiden Takten hin-und her geschaltet werden. Das habe ich versucht zu machen, jedoch bekomme ich Glitches beim Umschalten. Wie würde ich den sowas sauber lösen?
Ja, habe leider nur einen Cyclone II von Altera auf meinem DE1 Board. Wie ist der BUFGMUX aufgebaut?
Abgesehen davon, dass es vermutlich eine bessere Lösung für dein Problem gibt, als die Takte zu schalten, müsstest du auf jeden Fall auch deine Steuersignale synchronisieren
Mark H. schrieb: > Also auch die nebenläufigen Anweisungen den Prozess packen? Nein, nicht nur. Sondern wie du es mit deinen beiden Takten ja auch schon gemacht hast, auf den Systemtakt synchronisieren.
Mark H. schrieb: > Also auch die nebenläufigen Anweisungen den Prozess packen? Das allein macht auf der Hardware keinen Unterschied! Eine nebenläufige Anweisung ist (ein wenig vereinfacht und abgesehen von den unterschiedlichen Syntaxelementen) nichts anderes als ein Prozess ohne (bzw. mit impliziter) Sensitivliste. Das hier ist beide Male funktionell genau gleich und wird auch genau gleich in Hardware umgesetzt:
1 | -- mit Prozess
|
2 | process (a,b) begin |
3 | z <= a+b; |
4 | end ptorcess; |
5 | |
6 | -- nebenläufige Anweisung
|
7 | z <= a+b; |
Beim Umschalten von Takten hast du kein VHDL-Problem, sondern ein Harwareproblem. Und genau dort muss es gelöst werden. Wobei mich allerdings sehr interessieren würde: Woher kommen die Takte? Was soll damit passieren? Welche Frequenz(en) haben die? Wieviele Takte hast du insgesamt in deinem Design?
Gleich das erste Ergebnis in Google: http://www.vlsi-world.com/content/view/64/47/ Ist zwar Verilog, aber einen guten Entwisckler sollte das egal sein.
Lattice User schrieb: > Ist zwar Verilog, aber einen guten Entwickler sollte das egal sein. Richtig: mir ist Verilog egal... ;-) > Gleich das erste Ergebnis in Google: Das ist eine tolle Beschreibung für ein ASIC, die aber nicht unbedingt für die Umsetzung auf ein FPGA taugt, weil dort die Takterzeugung und -verteilung primär die Sache des FPGA-Herstellers ist. Der macht die Taktnetze und legt sie so aus, dass keine Race-Condition auftreten kann. Und der muss auch Takte umschalten können. Beim ASIC ist das mein eigenes Problem, da bin ich selber der Hersteller...
Lothar Miller schrieb: > Lattice User schrieb: >> Ist zwar Verilog, aber einen guten Entwickler sollte das egal sein. > Richtig: mir ist Verilog egal... ;-) > >> Gleich das erste Ergebnis in Google: > Das ist eine tolle Beschreibung für ein ASIC, die aber nicht unbedingt > für die Umsetzung auf ein FPGA taugt, weil dort die Takterzeugung und > -verteilung primär die Sache des FPGA-Herstellers ist. Der macht die > Taktnetze und legt sie so aus, dass keine Race-Condition auftreten kann. > Und der muss auch Takte umschalten können. Stimmt natürlich, war aber nicht die ursprüngliche Frage, die aber ohne Zweifel falsch gestellt wurde. Der Cyclone II kann es natürlich auch, siehe Fig. 7-11 im Handbuch. Wie man das in VHDL/Verlog verwendet wäre die eigentliche Frage gewesen. Kann ich aber nicht beantworteten. /flame ON Warum veröffentlichen FPGA Hersteller eigentlich Handbücher wenn sie keiner liest? /flame OFF
Lattice User schrieb: > /flame ON > Warum veröffentlichen FPGA Hersteller eigentlich Handbücher wenn sie > keiner liest? > /flame OFF Hypothese: Weil die viel zu viele Seiten haben (mind 3stellig) und das Eigentliche oft "zwischen den Zeilen" steht? So zumindest meine Erfahrung bei Xilinx ;). Da schieb ich das Lesen auch oft nach hinten raus.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.