mikrocontroller.net

Forum: FPGA, VHDL & Co. CPLD wird durch Taktteilen warm...?


Autor: Bustle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Klaus Falser (kfalser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dein Beispiel ist nicht ganz klar, wo wird der Takt verwendet, in 
default-values mit rising_edge(Takt) oder falling_edge(Takt)?

Autor: Bustle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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;

Autor: Klaus Falser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Bustle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Klaus Falser (kfalser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Bustle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Klaus Falser (kfalser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Bustle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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...

Autor: Klaus Falser (kfalser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Bustle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.