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
> 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
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
>> 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
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.
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.