mikrocontroller.net

Forum: FPGA, VHDL & Co. Timing bei Flipflops


Autor: daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

wenn Ausgang Q1 eines DFFs zu einem anderen DFF an den Eingang D2 geht,
dann muss doch immer gelten, dass t_dq > t_hold. Damit würde
Q1 hold_time nach der Taktflanke weiterhin anliegen und D1 erscheint am
Q1 erst nach t propagation delay von d nach q.
Richtig so?

Bevor nun 2-te Taktflanke kommen darf, muss einerseits der neue
Wert durch die kombinatorische Logik durch zum D2(oder wenn direkt
verbunden, einfach durch den Draht) und zum anderen ab diesem
Zeitpunkt muss noch setup_time vergehen.
Ist das korrekt?

Grüsse, daniel

Autor: Morin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> wenn Ausgang Q1 eines DFFs zu einem anderen DFF an den Eingang D2 geht,
> dann muss doch immer gelten, dass t_dq > t_hold.

Ich drück es etwas genauer aus, damit es korrekt wird. t_dq gibt es in 
DFFs nicht, dafür aber t_clk_q, also die Zeit zwischen einer 
Clock-Flanke und dem Ändern des Ausgangs (Änderungen in d bewirken von 
sich aus ja keine Änderung in q). Dann muss

t_clk_q_1 > t_hold_2

sein, wenn die Clock-Flanken gleichzeitig bei den DFFs ankommen 
(andernfalls muss ein entsprechender Versatz addiert werden).

> Damit würde Q1 hold_time nach der Taktflanke weiterhin anliegen

Die hold_time bezieht sich auf das was sein muss (was du sicherstellen 
musst), nicht auf das, was "automatisch so ist". Also eher

"Q1 muss hold_time nach der Taktflanke anliegen" (ohne Bachtung von 
Versatz, komb. Logik und Signallaufzeiten).

> und D1 erscheint am Q1 erst nach t propagation delay von d nach q.
> Richtig so?

Der Teil stimmt so.

> Bevor nun 2-te Taktflanke kommen darf, muss einerseits der neue
> Wert durch die kombinatorische Logik durch zum D2(oder wenn direkt
> verbunden, einfach durch den Draht) und zum anderen ab diesem
> Zeitpunkt muss noch setup_time vergehen.
> Ist das korrekt?

Ja. Im Wesentlichen hast du damit zwei Vorgaben, die du erfüllen musst:

t_clk_to_q_1 + Logik + Leitung + t_setup_2 < Taktperiode
t_clk_to_q_1 + Logik + Leitung > t_hold_2

Autor: daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Morin,

>> t_clk_to_q_1 + Logik + Leitung + t_setup_2 < Taktperiode
>> t_clk_to_q_1 + Logik + Leitung > t_hold_2

sollte das 2-te nicht so sein?
t_clk_to_q_1 + Logik + Leitung > t_hold_1

immerhin muss ja FF1 Signal an alten Wert halten

Gerade habe ich noch gelesen, dass es für t_clk_to_q
2 Fälle unterschieden werden. Einmal für eine Transition von 0 auf 1
und umgekehrt.

Ich frage mich, ob XST das alles so schön berücksichtigt
oder dass es ab und zu sauberes VHDL so umsetzt, dass es aufgrund
unbeachteten Timings nicht funktioniert.

grüsse

Autor: Jan M. (mueschel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>> t_clk_to_q_1 + Logik + Leitung > t_hold_2
>sollte das 2-te nicht so sein?
>t_clk_to_q_1 + Logik + Leitung > t_hold_1
>immerhin muss ja FF1 Signal an alten Wert halten

Die Hold-Zeit ist die Zeit, die das Signal nach der Taktflanke noch 
unverändert anliegen muss, damit der Ausgang sicher schaltet. 
t_clk_to_q_1 + Logik + Leitung ist ja die Zeit, nach der das geänderte 
Signal nach der Taktflanke am 2. FF ankommt. Dessen Hold-Zeit muss 
vorher zuende sein, also > t_hold_2

Autor: daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich bin fälschlicherweise davon ausgegangen, dass es
die Aufgabe von FF1 den alten Wert über hold_time zu halten.
hold_time ist eigentlich dann die Zeit, die FF2 nach der
Flanke braucht und während der Signal sich nicht ändern darf.

Dann verstehe ich wieso es so heisst
t_clk_to_q_1 + Logik + Leitung > t_hold_2

in Worten: der neue Wert darf noch nicht an D2
angekommen sein.

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.