Hallo zusammen Ich arbeite mit einem CyclonIII und Quartus. Ich möchte meinen ADC und somit auch die Verarbeitungsblöcke mit unterschiedlichen Clocks treiben. Dafür habe ich einen PLL mit 4 Ausgängen erzeugt. Danach wollte ich mit einem Block den korrekten Ausgang anhand von 2 leitungen auswählen. Doch Quartus meinte dies sei nicht optimal weil ein normaler Ausgang kein Clock sein sollte. Somit wollte ich den Block ALTCLKCTRL nehmen und so meinen Clock auswählen. Leider funktioniert dieser Block anscheinend nut mit externen Clock-Eingängen... Gibt es eine geschickte Möglichkeit einen Clock anhand von 2 Leitungen auszuwählen?
Wenn nicht ganz akut zwingende Gründe wie Strom sparen am ADC es erfordern macht man das nicht so, sondern arbeitet intern und am ADC mit vollem Takt und Clock Enable.
Den ADC treibe ich immer mit demselben Clock. Jedoch habe ich eine Kommunikations-Datenraten-abhängige Dezimation. Nach der Daten-Dezimation möchte ich eben mit unterschiedlichen Frequenzen die Signalverarbeitung machen.
R. K. schrieb: > Hallo zusammen > > Ich arbeite mit einem CyclonIII und Quartus. Ich möchte meinen ADC und > somit auch die Verarbeitungsblöcke mit unterschiedlichen Clocks treiben. ... R. K. schrieb: > Den ADC treibe ich immer mit demselben Clock. Jedoch habe ich eine > Kommunikations-Datenraten-abhängige Dezimation. Nach der > Daten-Dezimation möchte ich eben mit unterschiedlichen Frequenzen die > Signalverarbeitung machen. was denn nun, uterschiedliche Clocks am ADC oder Verarbeitung mit unterschiedlicher Abtastrate im FPGA? Ich bin verwirrt... Aber unabhängig ein paar algemeine Tipps: 1) Einen ADC versorgt man, wenn einem die LSBs lieb sind nicht über eine PLL aus einem FPGA heraus. Noch weniger über Nichtclockresourcen aus dem selben. 2) Wenn die Abtastrate am ADC gleich bleibt, spricht nichts dagegen im FPGA alles mit der selben Frequenz laufen zu lassen. Gegebenenfalls packt man ein Clockenablenetzwerk und mit in die Verarbeitung und kann so die Abtastrate (und EMV Austrahlung) im FPGA reduzieren. Literatur findet sich zumeist unter dem Begriff Multicycle(constraints) da hier die Nutzung eines hohen Taktes und einer niedrigeren Verarbeitungsgeschwindigkeit zu relaxten Timinganforderungen führen können (und entsprechend genutzt werden wollen)... Gruß Vanilla
Also sehe ich dies korrekt: Ich nutze den PLL für den ADC (dies kann sich bei einer späteren Implementation auf einem eigenen Board ändern) Die langsameren Clocks für die spätere Verarbeitung kann ich auch mit einem einfachen Logik-Mux zuteilen, welch die Timinganforderungen sowiso erfüllt sind?
R. K. schrieb: > Also sehe ich dies korrekt: > > Ich nutze den PLL für den ADC (dies kann sich bei einer späteren > Implementation auf einem eigenen Board ändern) Ja, wenn dir der Jitter nix ausmacht. Da man die Clock gedoch nicht auf Ausgänge legen soll kann man einen Trick verwenden. Man instantiert ein DDR Outputregister am Ausgang. Ein Eingang wird auf '0', der andere auf '1' gesetzt und mit der Clock getaktet. Dadurch bleibt die Clock da wo sie hingehört, nämlich auf dem internen Clocknetzwerk. > > Die langsameren Clocks für die spätere Verarbeitung kann ich auch mit > einem einfachen Logik-Mux zuteilen, welch die Timinganforderungen sowiso > erfüllt sind? Kannst man (theoretisch) machen. Je nach Taktfrequenz bekommt man dann ein Design was gar nicht tut, dann hast du Glück gehabt. Wahrscheinlicher ist es jedoch, dass dein Design Dinge tut, die es nicht soll das aber sporadisch. Und jede neue Synthese/Place&Route läuft dann so ab. Neues Spiel, neues Glück! Nee, im Ernst. FPGAs habe intern dediziert Netzwerke für bestimmte Signale, z.B. Reset oder auch Clock, wobei das Clocknetzwerk das Wichtigste ist. Dieses Netzwerk versorgt innerhalb des Chips nur die Clockeingänge von Flip-Flops, RAMS, etc. Der Jitter ist minimal und der Delay fest und minmal. In dem Moment in dem du mehrere Clocks auf einen Multiplexer gibst wird das Signal nach dem Multiplexer über das Logik-Netzwerk geroutet und nicht mehr über das Clocknetzwerk. Je nach deiner Logik, die dann an dieser generierten Clock hängt, gibt es einen schönen, großen Fan-Out und für jedes Signal unterschiedliche Laufzeiten. Die sich bei jedem neuen Place & Route auf's neue ändern, d.h. selbst wenn du Glück hast und dein Design tut, nach dem nächsten P&R muss das nicht mehr so sein. Finger weg von Clock-Multiplexern, es sei denn man hat sie im Clock-Netzwerk zur Verfügung (Xilinx hat die, Altera weis ich nicht). Die sollte man aber auch nur verwenden, wenn man die Logik gut unter Kontrolle hat, saubere Resets, etc. Ansonsten wirst du ziemlich schnell Bekanntschaft mit einem Phaenomen machen welches sich "Metastability" nennt. Kein Spass, das ist der Debugging Alptraum schlechthin. Gruss, JD
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.