Hallo zusammen Ich habe zwei LVDS-Signal-Paare (clk, davlid) welche ich redundant auf jeweils zwei FPGA-Eingangspaare schalten möchte um je eine Anzahl Datensignale zu verarbeiten. LVDS-Maximalspeed ist 750 MHz. Ist so ein Konstrukt (LVDS zu zwei Senken) grundsätzlich böse, oder kann man da was machen? Falls letzteres: Was wäre beim Layout zu beachten (vielleicht gibt's irgendwo Guidelines für solche Fälle)? Merci für Ideen!
Die saubere Lösung wäre ein LVDS 1:2 Buffer. Wozu soll das denn gut sein? Du kannst doch auch das Signal intern nach dem LVDS Eingangsbuffer verteilen. Und 750MHz? Das ist sportlich, welches FPGA schafft das extern?
Hier ein AN von Intersil zu dem Thema: http://www.intersil.com/content/dam/Intersil/documents/an17/an1787.pdf
Christian R. schrieb: > Du kannst doch auch das Signal intern nach dem LVDS Eingangsbuffer > verteilen. Ich will damit LVDS-Serdes betreiben. Das eine der Signale ist der zu verwendende Clock. Den kann ich nicht einfach so intern weiterverteilen.
P. K. schrieb: > Christian R. schrieb: >> Du kannst doch auch das Signal intern nach dem LVDS Eingangsbuffer >> verteilen. > > Ich will damit LVDS-Serdes betreiben. Das eine der Signale ist der zu > verwendende Clock. Den kann ich nicht einfach so intern weiterverteilen. Und warum kannst du nicht nach dem Serdes weiterverteilen? LVDS ist für Punkt zu Punkt Verbindungen gedacht, und je höher die Geschwindigkiet ist, desto kritischer ist das. Ohne einen Fanout Buffer wird das schwierig, die AN von Intersil (sehe Posting von steve) macht das zwar passiv, aber da kommt an den Eingängen nur noch der halbe Pegel an. Die 750 MHz kommen mir auch sehr hoch vor, meinst du 750 MBits/s? Ersteres braucht einen FPGA der Oberklasse, letzteres ist auch mit Low-End FPGA's ala MachXO2 möglich.
P. K. schrieb: > Ich will damit LVDS-Serdes betreiben. Das eine der Signale ist der zu > verwendende Clock. Meint du diese Xilinx Lösung, wo zwei ISERDES (Master/Slave) an einem Pin hängen? Das geht doch ohne externe Verteilung... Schreib mal genau, was du vorhast, ich hab einige Erfahrung mit den Xilinx SERDES (Spartan 6 und Artix 7), nicht dass du völlig auf dem Holzweg bist...
Lattice User schrieb: > meinst du 750 MBits/s? Ja genau, sorry für die ungenaue Beschriebung (der Clock selbst läuft mit maximal 375 MHz). FPGA ist (jetzt noch) ein Arria V. Der Clock soll auf rx_in des altlvds_rx_component, das heisst es muss alles in derselben Peripherieclockdomain passieren, wenn ich mit einem Clock auskommen soll. Das Ganze auf zwei verschiedene Peripherieclockdomains zu verteilen (mit je einem clk, dvalid Input) wäre die bequemste Lösung gewesen, aber nach obenstehenden Antworten macht das aus Board-Layout-Sicht wohl wenig Sinn...
Was spricht dagegen die parallelen Ausgabedaten des ALTLVDS_RX einfach in zwei Module zu führen? Dies ist doch wesentlich nahestehender als die externe Verzweigung um dann zwei ALTLVDS_RX zu brauchen? Sobald du die Daten einmal im FPGA hast ist das Verteilen und weiterverarbeiten doch ein Leichtes! Ich kann mir dennoch gut vorstellen dass dies bei so wenig Datenleitungen und der moderaten Taktfrequenz von 350 MHz noch funktionieren mag. Einfach auf zwei nebeneinanderliegende Pin-Paare routen und den Abschlusswiderstand extern zwischen die Pins - bei einer DDR3 Baumstrutkur funktioniert das ja auch. Du kannst dir ja die Situation mal ins Hyperlynx ziehen und simulieren. Beachte aber, dass der ArriaV Limitierungen in den dedizierten LVDS-Taktnetzen hat.
Erwin schrieb: > Beachte aber, dass > der ArriaV Limitierungen in den dedizierten LVDS-Taktnetzen hat. Und schon hat sich Münchhausen an seinem eigenen Zopf zum Sumpf herausgezogen. Diese Limitierungen standen ja am Anfang dieser Frage: P. K. schrieb: > Der Clock soll auf rx_in des altlvds_rx_component, das heisst es muss > alles in derselben Peripherieclockdomain passieren, wenn ich mit einem > Clock auskommen soll. Weil ich aber nur auf gengenüberliegenden Banks gesamthaft genügend LVDS-RX-Paare hatte, hätte ich den LVDS_RX_CLK auf beiden Seiten als Eingang haben müssen. Ein kleiner Handstand in der Bank-Aufteilung scheint das Problem nun zu erledigen, sodass ich genügend LVDS-RX-Paare auf einer Seite habe (beim Arria 10 wird alles besser, hoffentlich).
Was ist eigentlich deine Motivation zwei Dateneingänge für identische Daten zu nutzen?
Erwin schrieb: > Was ist eigentlich deine Motivation zwei Dateneingänge für identische > Daten zu nutzen? Lies den Thread nochmals aufmerksam durch, vielleicht kommst Du darauf. Falls nicht: Ich beabsichtigte nie, identische Dateneingänge zu nutzen, sondern Clock und DataValid doppelt zu haben, um eine grosse Anzahl dazu synchroner LVDS-Daten-Paare aufzuteilen und auf zwei getrennten, weit entfernten Banks/Serdes bearbeiten zu können.
Haben die da etwa den selben Stuss gebaut wie am Spartan 6? Der ist an genau der Stelle auch extremst beschränkt. Nur eine halbe Bank kann mit dem schnellen Takt die Serdes bedienen....krank. Zum Glück gabs dann den Artix.
Christian R. schrieb: > Haben die da etwa den selben Stuss gebaut wie am Spartan 6? Naja, optimal ist es nicht. Es gibt halt sehr viele "entweder - oder" Bedingungen. Mein Design war ursprünglich mal dazu ausgelegt ein Daten-I/F ohne grosse Anstrengung der zukünftigen Datenquelle anpassen zu können (wie aktuell von massiv parallel auf eine nicht ganz so grosse Anzahl LVDS-Paare) ohne den Rest des Boards neu layouten zu müssen. Da muss ich jetzt betreffend "minimal-invasive Änderung" Abstriche machen und einige Banks generell neu ordnen.
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.