www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Spartan 3: Warnung Gated clock


Autor: Alexander Mundry (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich bin in VHDL leider noch ein blutiger Anfänger. Deshalb bräuchte ich
mal wieder eure Hilfe.

Ich verwende das Spartan 3 Starter Kit (Xilinx) mit dem FPGA XC3S200.
Auf dem Board ist ein 50 MHz Quarz verbaut, den ich gerne auch nutzen
und runterteilen würde, um die gewünschte Frequenz zu erhalten.

Konkret wollte ich ein Lauflicht programmieren, das 8 LEDs innerhalb
von 1 Sek. durläuft.

Ich habs wie folgt versucht: (auch wenn hier 10Hz rauskommen sollten!)

Clk         - 50MHz Clock
Counter     - Zähler vom Typ "integer range 4999999 downto 0"
Enable      - Enable-Signal für die nachfolgenden Logikblöcke

if (clk'event and clk = '1') then
   if (Counter = 0) then
      Counter <= 4999999;
      Enable <= '1';
   else
      Counter <= Counter - 1;
      Enable <= '0';
   end if
end if;

if (Enable = '1') then
...       -- weiter Quellcode


nach der Compilierung erhalte ich folgende Warnung:

"DesignRules:372 - Netcheck: Gated clock. Clock _n0010 is sourced by a
combinatorial pin. This is not good design practice. Use the CE (Clock
Enable) pin to control teh loading of data into the flip-flop."

Jetzt meine Frage:
Was will mir diese Meldung "Gated Clock" sagen und wie kann ich diese
vermeiden? D.h. wie kann ich den Clock-Enable-Pin (CE) im Bsp. des
Lauflichts verwenden.

Für jede Antwort bin ich sehr dankber. Vielleicht hat auch jemand einen
Quellcode für ein Lauflicht (Spartan 3) den er mir evtl. zur Verfügung
stellen kann.

Danke!!!

Gruß Alex

Autor: FPGA-User (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Alex,

das ist ganz einfach, Du musst die Abfrage nur oben
in den Prozess reinschreiben oder nimmst einen
neuen Prozess, der wieder mit CLK getaktet wird.
Ich würde Variante  1 bevorzugen:


if rising_edge(clk) then
   if (Counter = 0) then
      Counter <= 4999999;
      Enable <= '1';
   else
      Counter <= Counter - 1;
      Enable <= '0';
   end if

   if Enable = '1' then
      -- hier den Code für das Lauflicht einfügen
   end if;
end if;

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

Lauflicht kann ich nicht bieten , aber dieses Tutorial ist fuer VHDL
und Spartan3 Starterkit.

http://www.derepas.com/fabrice/hard/

Gruß,

Dirk

Autor: Daniel R. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Alex,
im Anhang ein kompletter VHDL-Code +Constraints-File für Spartan 3
Startek Kit +Test-Bench für ein Lauflicht. Desweiteren wird die Anzahl
der leuchtenden LEDs auf dem 7-Segment Display angezeigt. Das Lauflicht
läuft glaub ich sogar vorwärts bis LED7 an ist....diese blinkt dann noch
einmal und es läuft wieder rückwärts bis LED0 an ist...diese blinkt
einmal und es läuft wieder vorwärts usw...

Da ich auch Anfänger bin, und das auch eines meiner ersten "Projekte"
war, ist der Code wahrscheinlich anfängertypisch (wenn nicht, dann wäre
ich auch nicht böse.... im Gegenteil).
Aber wenn jemand mal ein wenig Zeit hat, kann er den Code ja mal
anschauen und mir sagen, wie das einfacher zu lösen ist. Ich kann mir
nicht vorstellen, dass mein Lösungsweg perfekt ist (wenn doch, dann
mach ich hier gleich mal einen Freudensprung).


Nochmal zum Code selbst: Die Signalbezeichnungen wie z.B. clk_10Hz
stimmen nicht. Am Anfang waren es mal 10Hz aber ich glaub inzwischen
hab ich das wieder geändert....ist doch schon wieder ein paar Wochen
her. Was ich damit sagen will: Lass dich durch die Signalnamen nicht
beeinflussen.
Das UCF-File stimmt mit dem XILINX SPARTAN 3 STARTER KIT (welches
wirklich ausgezeichnet ist) überein, d.h. du kannst direkt mein
UCF-File nehmen und brauchst die Pins nicht mehr festzulegen.


Viel Spaß damit!
Gruß Daniel!

Autor: Alexander Mundry (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

vielen Dank für die Antworten. Werde diese sofort mal anschauen.

Dieses Forum ist einfach Klasse. Suche schon seit Tagen nach einer
Antwort auf meine Frage.

Vielen Dank

Gruß
Alex

Autor: Daniel R. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Alex
...und funktionierts???

Autor: Alexander Mundry (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habs gerade ausprobiert!

Funktionier hervorragend.

Danke noch mal an Alle.


Gruß
Alex

Autor: Alexander Mundry (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Zusammen,

ich hab jetzt von DCM (Digital Clock Management) gehört. So wie sich
das anhört ist das ein relativ mächtiges "Tool" mit
Frequenzvervielfachung, Phasenverschiebungen, ....

Wie kann ich das in meinen VHDL-Code einbinden? Benötige ich da eine
Library oder muuss ich da irgendwelche Register setzen? ???

Vielleicht kann mir jmd. etwas über DCM erzählen und/oder evtl. ein
kleines Quellcode-Bsp. zur Verfügung stellen, anhand dessen ich mich da
etwas einarbeiten kann.

Bin für jede Info sehr dankbar!


Vielen Dank Leute,

Gruß
Alex

Autor: Patric (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Vielleicht kann mir jmd. etwas über DCM erzählen und/oder evtl. ein
> kleines Quellcode-Bsp. zur Verfügung stellen, anhand dessen ich mich
> da etwas einarbeiten kann.

Lesen musst du schon selbst:
http://www.xilinx.com/bvdocs/appnotes/xapp462.pdf

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.