LVDS auf zwei Eingänge?

OP #4158522
Lesenswert?

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!
Gast #4158716
Lesenswert?

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.
#4158819
Lesenswert?

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...
OP #4159039
Lesenswert?

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...
Gast #4159399
Lesenswert?

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.
OP #4160510
Lesenswert?

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).
OP #4160536
Lesenswert?

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.
OP #4161104
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren