Hallo Leute! Ich nutze ein mit dem Xilinx CoreGen generiertes Clock-Crossing FIFO. Die Schreiben-Seite wird mit WR_CLK90 getaktet, die Lesen-Seite mit RD_CLK. Das einzige Problem ist, dass mein FULL Signal in einem Zustandsautomaten ausgewertet wird, der nicht mit WR_CLK90, sondern mit einem um 90° phasenverschobenen Clock WR_CLK0 getaktet wird. Meine Frage ist, was in diesem Fall die beste Lösung ist, das FULL Signal von WR_CLK90 nach WR_CLK0 zu transferieren. Brauche ich da zwei Synch-FFs oder gibt es vielleicht eine elegantere Lösung? Evtl. Problem wäre auch, dass die 2 Synch-FFs das FULL Status-Signal um 2 Takte verzögern würden, so dass es in der FSM nicht rechtzeitig ankommt. Danke schon mal für jeden Tipp! Grüße, Anguel
Wozu wertest du ein Full-Flag aus ? Gruß, SuperWilly
Wenn die Phasenbeziehung stabil ist sollte das ohne Synchronisieren möglich sein. Die Schwierigkeit ist da vmtl mehr, dem Tool das mitzuteilen, damit es beim Place and Route darauf achtet. Da muss man sich vmtl die Contraints genau anschauen und überprüfen, dass die Synthese den Pfad wirklich kurz genug gemacht hat, damit es sich ausgeht. lg Matthias
Verwende doch einfach ein AlmostFull-Flag (Schwelle sollte einige Einträge kleiner als Full sein), dann kannst du sicher den Schreibvorgang in den Fifo anhalten. Gruß, SuperWilly
Das Problem war genau, dass die Constraints nicht eingehalten wurden, als ich direkt von clk90 (FIFO) nach clk0 (FSM) gegangen bin. Habe jetzt aber 2 FFs dazwischen gesetzt und es scheint zu gehen. Evtl. reicht auch ein FF, wenn man nicht synchronisieren braucht? Matthias schrieb: > Wenn die Phasenbeziehung stabil ist sollte das ohne Synchronisieren > möglich sein. Die Schwierigkeit ist da vmtl mehr, dem Tool das > mitzuteilen, damit es beim Place and Route darauf achtet. Da muss man > sich vmtl die Contraints genau anschauen und überprüfen, dass die > Synthese den Pfad wirklich kurz genug gemacht hat, damit es sich > ausgeht. > > lg > Matthias
Eigentlich verwende ich schon den PROG_FULL Flag, habe das aber nicht erwähnt, um die Sache nicht unnötig kompliziert zu machen :) Problem war, dass zum Zeitpunkt zu dem der nächste Zustand in der FSM bestimmt wird, die Daten noch immer zum FIFO fließen, so dass dieser noch gar nicht weiß, dass er doch noch PROG_FULL wird. Das macht die Sache etwas komplizierter, werde vermutlich zur Sicherheit den FIFO tiefer machen ;) SuperWilly schrieb: > Verwende doch einfach ein AlmostFull-Flag (Schwelle sollte einige > Einträge kleiner als Full sein), dann kannst du sicher den > Schreibvorgang in den Fifo anhalten. > > Gruß, > SuperWilly
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.