Moin zusammen, ich hatte eine Diskussion mit einem Kollegen zum Thema VHDL Design. Wir haben eine Reihe von Komponenten, die Daten miteinander austauschen und synchron aus der gleichen Taktquelle versorgt werden. Er vertritt die Meinung, dass eine Komponente die Daten auf der fallenden Flanke auf z.B. ein Signal oder einen Bus geben sollte, während die andere Komponente diese auf der steigenden Flanke abrufen soll, damit die Daten sicher anstehen, wenn der Zugriff erfolgt. Ich bin der Meinung, dass es ausreicht beide Komponenten ihre Daten auf der steigenden Flanke abgeben und lesen zu lassen, da das Synthesetool (in dem Fall die Xilinx ISE 14.7 für einen Spartan6) die Laufzeiten bereits mit einbezieht und darauf auslegt. Eine solche fallend-schreiben-steigend-lesen Methode würde ja quasi zu einem Dual Data Rate auf dem Bus führen und damit es nur schwerer machen ein ordentliches Timing ohne Verletzung von Setupzeiten zu erzeugen. Wer hat recht? Wie ist eure Meinung dazu? Habt ihr Quellen, aus denen hervor geht, dass die eine oder andere Lösung sinnvoll/sinnfrei ist? Gruß, Björn
Alles im selben Chip? Dann (wenn es geht) alles mit dem gleichen Takt und der selben Flanke versorgen. Duke
Innerhalb des selben Chips ist das der Sinn und Zweck von Timing Constraints. Solange die eingehalten werden, kann man die Flip Flops gefahrlos mit der selben Flanke betreiben. Hier mal eine Quelle: >The PERIOD constraint on a clock net analyzes all delays on all paths that >terminate at a >pin with a setup and hold analysis relative to the clock net. A typical >analysis includes the >data paths of: >• Intrinsic Clock-to-Out delay of the synchronous elements >• Routing and Logic delay >• Intrinsic Setup/hold delay of the synchronous elements https://www.xilinx.com/support/documentation/sw_manuals/xilinx11/ug612.pdf Wenn man unterschiedliche Flanken verwendet, halbiert man sogar die verfügbare Zeit für die Übertragung zwischen den Flip-Flops.
:
Bearbeitet durch User
Björn V. schrieb: > Ich bin der Meinung, dass es ausreicht beide Komponenten ihre Daten auf > der steigenden Flanke abgeben und lesen zu lassen Also deine Frage ließt sich etwas missverständlich daher will ich das nur etwas klarstellen. Wir betrachten also immer die Strecke zwischen zwei Registern (Flipflops). Bei einer Taktflanke übernimmt das FF die am Eingang anliegenden Daten auf den Ausgang. Das FlopFlop dannach hat aber gerader ersten die "alten" Daten des ersten Flipflops übernommen. Deine Beschreibung ließt sich so als würdest du denken bei einer Taktflanke "gibt" man ein Signal auf den Bus und "ließt" es exakt gleichzeitig. Das ist NICHT so, im Prinzip ließt das nächste FF die Daten genau einen Takt "später". Das mit dem Steigende/Fallende ist in den meisten praktischen Anwendungen eher unüblich. DualDataRate sorgt ja eher dafür das eine Taktperiode nur die Hälfte eines 1-0 Taktzykluses dauert, aber das Prinzip ist wieder das selbe.
Oder um es kurz zu sagen: mit steigender und fallender Flanke im selben Design arbeiten nur die, die das Prinzip "Synchrones Design" noch nicht ganz verstanden haben. Ich bezahle den FPGA Hersteller dafür, dass er eine sauber balancierte Taktverteilung implementiert. So gut, dass der Takt überall gleichzeitig anliegt und ich keine Race-Condition bekomme.
:
Bearbeitet durch Moderator
Björn V. schrieb: > Er vertritt die Meinung, dass eine Komponente die Daten auf der > fallenden Flanke auf z.B. ein Signal oder einen Bus geben sollte, > während die andere Komponente diese auf der steigenden Flanke abrufen > soll, damit die Daten sicher anstehen, wenn der Zugriff erfolgt. Falls dein Kollege einen Hintergrund im ASIC Design hat, dann könnte es sein, dass er Konzepte wie dual-phase Clocks in den FPGA übersetzten möchte. Dual-Phase Clocking ist eine Technik wo es anstatt einem Clocktree zwei davon gibt. Beide Clocks sind synchron zu einander und 180° Phasenverschoben. Im RTL Design wird eine Stufe mit der ersten Clock und die nachfolgende Stufe mit dem Phasenverschobenen Takt versorgt. Die dazu nötigen sehr genauen Timings dieser zwei Clocktrees sind eigentlich nur im Full-custom Design erreichbar und es wird daher immer seltener verwendet. Intel war lange Zeit ein Verfechter dieser Methode, scheint aber auch umgeschwenkt zu haben (Hat jemand vielleicht sogar eine Quelle dafür für mich?)
Denn letztlich läuft das lediglich darauf hinaus, dass quasi die Taktfrequenz des Designs verdoppelt wird. Und dann mit Multi-Cycle-Pfaden gearbeitet wird. Das über das gesamte FPGA durchzuziehen, ist enorm fehlerträchtig und handarbeitsaufwändig.
Meiner Meinung nach ist hier wichtig, dass SETUP und HOLD Zeiten der Signale es erlauben, alle Flip-Flops mit gleichem Takt zu versorgen.
Vielen Dank an alle! Die meisten Meinungen decken sich also mit meiner Vermutung. Es handelt sich in der Tat um eine FPGA-interne Logik in verschiedenen Komponenten. Dass z.B. Interfaces wie SPI mit unterschiedlichen Flanken Daten auf die MISO und MOSI, ist ja verständlich, aber wir haben wirklich nur VHDL Blöcke. Die Anmerkung mit dem Dual-Phase Clock ist interessant zu wissen, aber leider liegt der Fall hier in der Tat nicht vor. Besten Dank an Felix für die Nennung einer belastbaren Quelle! Ich werde das Thema damit bewaffnet noch einmal aufwärmen.
Christoph Z. schrieb: > Intel war lange Zeit ein Verfechter dieser Methode, > scheint aber auch umgeschwenkt zu haben (Hat jemand vielleicht sogar > eine Quelle dafür für mich?) ich vermute, du meinst damit LSSD (level sensitive scan design). Gabs/gibts auch bei IBM, da waren am Master-Latch 2 Takte: Master-Takt und Scan-Takt. Am 2. Latch dann Slave-Takt. Wurde auch im Standart-Zell Design verwendet, Clock-Tree war da aber echt happig...
Björn V. schrieb: > Dass z.B. Interfaces wie SPI mit unterschiedlichen Flanken Daten auf die > MISO und MOSI, ist ja verständlich Und der Takt dort ist nicht mal ein richtiger Takt, sondern lediglich ein Signal, das einsynchronisiert gehört wie jedes andere Signal.
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.