Hallo, ich benutze einen CPLD (XC95288XL von Xilinx) eigentlich nur in einem kurzen Startmoment, danach wird er nur noch für eine Taktteilung von 48MHz auf 24MHz benötigt. Der CPLD wird ziemlich warm aber kann das wirklich nur an der Taktteilung liegen? Wie wird ein process mit der "Empfindlichkeitsliste" gehandhabt? Und zwar habe ich da den Takt noch drin anschließend kommt jedoch eine if-Anweisung die den Prozess umgeht... Bsp: proc_bsp : process (Takt) begin if (finish = '0') then ... else (default-values) end if; end process; Kann durch diese Anweisung der CPLD auch "warm" werden? Gruß Bustle
Dein Beispiel ist nicht ganz klar, wo wird der Takt verwendet, in default-values mit rising_edge(Takt) oder falling_edge(Takt)?
sorry, so ist es glaub besser... proc_bsp : process (Takt) begin if (finish = '0') then if (rising_edge (Takt)) then sth <= not sth; end if; else sth <= '0'; end if; end process;
XST wird auch immer besser, wenn er das akzeptiert. Wenn man das umschreibt in : proc_bsp : process (Takt, finish) begin if (finish = '1') then sth <= '0'; elsif (rising_edge (Takt)) then sth <= not sth; end if; end process; dann wird es die Beschreibung eines FF's mit Reset. Dies wäre eigentlich die korrekte Form. Wenn das der ganze Inhalt von deinem CPLD ist, dann sollte es eigenlich nicht sehr warm werden. Mit finish auf 1 sollte auch das interne FF nicht schalten und weniger Strom brauchen, aber im Gegensatz zu den CoolRunner haben die 9500 doch einen beträchtlichen Ruhestrom. Kontrolliere vielleicht nochmals ob Du nicht irgend einen Kurzschluß am Ausgang hast. So viel ich mich erinnere gibt es auch eine Option im Fitter, mit der man die unbenutzten FF in einen Low Power Mode bringen kann. Lauwarm darf Dein CPLD aber immer werden.
Die Option, um unbenutzte FF in einen Low Power Mode zu versetzen habe ich im ISE nirgends gefunden. Jedoch habe ich mal die Einstellung im Fitting für "Marcocell Power Settings" auf "Low" gesetzt und ich denke dadurch etwas an Wärmeverlust gut gemacht zu haben. Jedoch verwende ich intern einen 48MHz Takt. Kann es da zu Problemen kommen? Die ersten Tests zeigen keine Nebenwirkungen. Jedoch kenne ich die Dauertests noch nicht.
Du mußt im UCF-File die 48 MHz als Takt angeben, dann können die Tools berechnen ob das Timing korrekt ist oder nicht. Wenn Du die "Marcocell Power Settings" auf "Timing Driven" setzt, dann sollte der Fitter die Macro-Cell auf langsam (=Low Power) setzen wenn dies vom Timing her möglich ist.
Insgesamt werden in meiner CPLD Logik 222 Makrozellen benötigt. Wenn ich auf "Timing Driven" im Fitter umschalte, dann werden davon nur 6 Makrozellen in den "Low Power Modus" übernommen. Um davon mehr Makrozellen in den "Low Power Modus" zu nehmen, muss ich wahrscheinlich im ucf-File noch detailierter auf die einzelnen Signale eingehen, oder? Muss ich dann jedem (auch reine interne) Signale bei den ich glaub, dass ein "Low Power Modus" sinnvoll ist, diese angeben? so wie NET "counter<20>" PWR_MODE = LOW; ...wäre ziemlich aufwendig
Nein, Du mußt im UCF File eventuell nur genauer angeben, welches Signal mit welcher Frequenz arbeitet. Wenn Dein ganzes Design mit 48 MHZ arbeitet, dann hat der Fitter gefunden daß 216 eben volle Geschwindigkeit brauchen und nur 6 langsamer arbeiten können. Wenn Du die Macrozelle trotzdem manuell auf langsam stellst, dann sollte eigentlich der Fitter mit dem Timing nicht mehr hinkommen.
hmm... Die 48MHz brauche ich nur für zwei Dinge. Einmal leite ich sie unverändert durch den CPLD durch und zum anderen Teile ich sie auf 24MHz runter. Hinzu kommt noch ein 30MHz Takt den ich für die Anfangsphase benötige. Aber es gibt auch einige Logikblöcke im CPLD, welche mit Taktfrequenzen unterhalb von 1MHz arbeiten (bis zu 0,7Hz zur Visualisierung). ...ach, was hier sein kann ist, dass ich diese Taktsignale nicht im ucf angegeben hab, weil ich dachte, dass diese sowieso keine Engpässe darstellen. Ab welcher Taktfrequenz ist es den empfehlsenwert auf "High Power Modus" zu schalten? Ich hab mal was von 20MHz in nem Datenblatt gelesen?! Komisch ist momentan, das alles im "Low Power Modus" läuft. Die Frage für mich ist hier nur, ob das zufällig ist und morgen wieder anders aussehen kann...
Man kann keine Taktfrequenz angeben, ab der es den Standard Power Mode braucht, weil es auch von der Durchlaufzeit durch die Produkt Terme und durch die Verbindungsmatrix ankommt. Wenn Du eine saubere Lösung willst, dann mußt Du die Frequenzen deiner Clocks im UCF_File angeben und das Tool entscheiden lassen, ob genügend Luft für Low Power Mode jeder einzelnen Macrozelle ist.
Jetzt habe ich auch die langsamen Frequenz aller verwendeten Clocks im ucf angegeben. Resultat ist aber etwas merkwürdig. Denn statt der vorhin 6 in den "Low Power Modus" übernommen Makrozellen, werden jetzt nur noch 5 von den ingesamt 222 übernommen... Naja, ganz schlau werde ich jetzt daraus nicht aber wahrscheinlich sollte ich auch zufrieden sein, wenn's läuft wenn ich alle 222 Makrozellen in den "Low Power Modus" nehme. Danke für deine Hilfe Klaus.
@Bustle Dein CPLD ist schon recht gross. Und er zieht auch ordentlich Strom, wenn er nix tut. Siehe Datenblatt 1. Seite. Bei 0 (NULL) MHz zieht das gute Stück bereits ~280mA und das bei 3.3V, macht ~1W. Er basiert eben noch auf later GAL-Technologie. Wenn du fast alle Zellen in den LOW-power Modus schaltest kommst du auf ~120mA (40mW). Nur die Coolrunner und ähnliche Familien (MACH ZEro-Power Von Lattice z.B.) brauchen nur dann Strom, wenn sie wirklich was machen. MFG Falk
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.