mikrocontroller.net

Forum: FPGA, VHDL & Co. VHDL-Synthese: Clock oder kein Clock?


Autor: hyperb (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Leute

Wie erkennt das Synthesetool im Webpack von Xilinx eigentlich ob es
sich bei Signalen um Clock-Signale handelt oder nicht?

Und kann ich das auch selbst bestimmen?

Danke

Autor: Rooney Bob (rooney)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich nehme an dadurch, dass du im Webpack ein Signal, nennen wir es jetzt
einfach MCLK, deines VHDL Design auf einen speziellen Pin des CPLDs oder
FPGAs (Clockeingang) legst (Assign Package Pins). Welcher Pin das ist
erfährst du im Datenblatt deines Bausteins.

Autor: FPGAküchle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hm, was in VHDL 'event abgefragt wird, ist ein clock. das ist das
hauptkriterium.

Und was in den timingconstraints (ucf file) mit period bezeichnet
wird.
Aber wenn es nicht an den clk eingang von FF,BRAM's,etc ('event
risineg_edge, etc) gehts, dann sit es auch kein clock.

Autor: Bustle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...das ist doch eine etwas komische Frage. Ein Clock ist ja auch nichts
weiteres wie ein Signal, nur mit einem (mehr oder weniger) konstantem
wechsel.

Im ucf-File kannst du die Taktrate festlegen um das Design im z.B. FPGA
danach auszulegen.

Jedes Signal kannst du mit rising_edge abfragen. (also kannst du die
"Taktsignale" selbst bestimmen)

Gruß
Bustle

Autor: Rooney Bob (rooney)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Irrtum, es macht einen Unterschied ob du eine Clockleitung nimmst oder
nicht!!!! FPGAs und CPLDs haben einen Clocktree der für die Verteilung
des Clocksignals herangezogen wird. Dieser Clocktree ermöglicht es,
dass Macrozellen synchron getaktet werden. Das Clocksignal ist also
nicht gleich wie ein "herkömmliches" Signal.

Die Abfrage 'event soll also nur für das Taktsignal verwendet werden.
Um Taktflanken auf "herkömmlichen" Signalen zu erkennen, kann man
Edge-Detektoren implementieren, die vom Clock getaktet werden.

Autor: hyperb (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also erstma danke für eure schnellen Antworten.

Dass Clock oder nicht Clock davon abhängt, ob ich das Signal speziellen
Pins zuordne, ist falsch.
Mit scheint es sogar so zu sein, dass die timing constraints bei der
Synthese gar nicht berücksichtigt werden...


Auch komisch:

process (Takt)
begin
    if (Takt = '1') and (Takt'event)
  then
      --bla <= Takt;
      Ausgang <= "01010101";
  end if;
end process;

Ohne Kommentar (also mit "bla <= Takt"): Takt ist Clock Signal
Mit Kommentar (also ohne "bla <= Takt"): Takt ist kein Clock Signal

Autor: FPGAküchle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
#Mit scheint es sogar so zu sein, dass die timing constraints bei der
#Synthese gar nicht berücksichtigt werden...

Korrekt timing constraints (*.ucf) fliessen in der regel erst beim
Place und route ein.

Es gibt spezielle syntheseconstraints, da weiss ich aber auch nicht
weiter

#process (Takt)
#begin
#    if (Takt = '1') and (Takt'event)
#  then
#      --bla <= Takt;
#      Ausgang <= "01010101";
#  end if;
#end process;

#Ohne Kommentar (also mit "bla <= Takt"): Takt ist Clock Signal
#Mit Kommentar (also ohne "bla <= Takt"): Takt ist kein Clock Signal


Das wird optimiert zu konstanten Wert am Ausgang, da ist kein takt mehr
nötig.

Autor: Rooney Bob (rooney)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na sicher hängt das von dem Pin ab, deswegen gibt es dedizierte
Takteingänge bei diesen Logikbausteinene!!! Was hätten die sonst für
eine Sinn?
Du kannst natürlich jeden Eingang als Takteingang verwenden, aber so
was macht man nicht, da Clockleitungen "spezielle" Leitungen mit
"speziellen" Properties sind. Wenn ich also spezielle Leitungen für
den Takt habe dann ist es auch sinnvoll diese zu verwenden.

In einem ordentlichen VHDL Design sollen keine "gated" Clocks
verwendet werden!!!!

Autor: T.M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn man externe Signale, die nicht an einem Clockpin hängen als Takt
verwendet, wird sich das Synthese/Implementierungswerkzeug aber schön
beschweren. Bei der 7.2 Version der ISE war es eine Warnung, kann sogar
sein, dass bei der 8.1 Version der ISE mit einem Error an der Stelle
Schluß ist. Man könnte höchstens diese Pins intern dann auf einen
Clockbuffer hängen, der einen Zugang zum Clocktree darstellt. Nur sind
diese Buffer oft schon den Clockeingängen zugeordnet, lassen sich also
nicht einfach nach Lust und Laune verwenden. Meist ist Anzahl Clockpins
= Anzahl Clockbuffer. Wenn man intern kombin. erzeugte Signale als Clock
an FF oder anderen synchronen Schaltungen verwendet ist das "nur"
schlechter Stil und führt zu Warnungen und asychronen Designs.


T.M.

Autor: hyperb (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ist die gängige Methode, dass man bei Clock Signalen ...'event
benutzt - dann erkennt das Synthesetool das Signal als Takt. Und wenn
man kein Clock Signal wünscht, das 'event einfach vermeidet?

Mfg

Autor: T.M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie kein Clock wünschen?
Du meinst rein kombinatorische Prozesse? Oder willst du Signale, die
kein Clock sind, auf Flanken abfragen? Dazu kann man sich mit kleinen
Tricks mithilfe von verzögerten Signalen behelfen. Man fragt einfach
das aktuelle und das vertögerte Signal ab, zB:
IF (wert_aktuell = '1' AND wert_verzoegert = '0') THEN   --
steigende Flanke
  ...
ELSIF (wert_aktuell = '0' AND wert_verzoegert = '1') THEN   --
fallende Flanke
  ...
END IF;
Die verzögerten Signale erstellt man einfach mit einem FF.


T.M.

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.