Hallo zusammen!
Die SPI-Kommunikation zwischen Master und mehreren Slaves soll über LVDS
erfolgen. Das Prizip ist in der angehängten Skizze zu sehen.
Die Verbindung wird über abgeschirmte Kabel mit verdrillten Aderpaaren
realisiert. Kabellänge bis zu 10 m. Datenrate bis 50 MBit/s, später
vielleicht mehr. Auf der Slave-Platine wird es einen Stecker zum
Zuführen und einen zum Weiterleiten der SPI-Signale geben. Somit führt
ein Kabel vom Master zum ersten Slave, ein weiteres vom ersten Slave zum
nächsten usw.
Die Länge der Stichleitungen ist auf die Leiterbahnlänge vom Stecker zum
Treiber/Receiver begrenzt (einige cm) und damit vernachlässigbar. Auf
den Slave-Platinen werden Pads zum Terminieren der Leitungspaare
vorgesehen und die vom Master aus gesehen letzte Platine wird mit 100
Ohm Abschlußwiderstand bestückt. Die MISO-Leitung wird beidseitig
terminiert, weil z.B. beim Senden durch den 1. Slaves das Signal in
beide Richtungen (zum Master und zum letzten Slave) läuft. Dazu werden
masterseitig und slaveseitig Abschlußwiderstandspads vorgesehen.
An den Leitungen SS1/2, MOSI und CLK gehen die Signale nur in eine
Richtung (vom Master zu den Slaves) und es handelt sich dann um eine
Punkt-zu-Punkt-Verbindung. Daher können hier Standard
LVDS-Treiber/Receiver eingesezt werden. Bei MISO dagegen geht das Signal
unter Umständen in beide Richtungen (siehe oben). Deswegen sind hier
Multipoint LVDS-Treiber (M-LVDS) nötig. Beim Receiver bin ich mir noch
unsicher. Wenn LVDS-Receiver problemlos M-LVDS Signale empfangen können
ist hier die Verwendung eines normalen LVDS-Receivers möglich.
Denkbar wäre noch die Verwendung eines Serializers mit LVDS-Übertragung
wie z.B. MAX 9205-9208. Damit könnten die Signale SS, MOSI und CLK
zusammengefasst auf einem Leitungspaar übertragen werden.
Und nun würde ich mich freuen, wenn ihr eure Bewertung zu diesem Konzept
gebt. Ist es praktisch umsetzbar und sinnvoll oder habe ich etwas nicht
berücksichtig, woran das ganze scheitert?
Ich danke für jeden Hinweis!!!
Mein letzter Post, mit dem ich diesen Thread nach oben holen wollte,
wurde gelöscht. Ich verstehe aber nicht, was ich damit falsch gemacht
habe. Wenn der Thread eine Zeit lang nicht beantwortet wurde (aufgrund
anderer interessanten Threads oder weil niemand gerade da war, der sich
mit dem Thema auskennt) so geht der Thread unter und wird dann nicht
mehr beantwortet. Wie soll man das Problem denn lösen, wenn nicht den
Thread einfach wieder holen?
Hallo
Wollte ich auch mal machen...
Habs dann gelassen weil es bei mir nicht zwingend notwendig war.
50MBit/s und dass via SPI finde ich sehr schwer realisierbar (ich bin
aber noch am Anfang meines Berufslebens)
Was für ein Baustein kann den 50MBit/s?
LVDS ist soweit ich weiß eine Punkt zu Punkt Verbindung -->
Stichleitungen wie Du sie ja haben wirst gehen nicht.
--> Somit solltest für jeden Slave eigene LVDS-Transmitter auf der
Masterseite vorsehen.
Vielleicht hilfts
VG
Herki
noips schrieb:> Mein letzter Post, mit dem ich diesen Thread nach oben holen wollte,> wurde gelöscht. Ich verstehe aber nicht, was ich damit falsch gemacht> habe.
Beiträge à la "Push" oder "thread mal nach oben holen" sind hier
unerwünscht.
Die Anzahl der auf der ersten Seite stehenden Threads ist begrenzt, wenn
jeder, der eine unbeantwortete Frage hat, diese immer "nach oben holt",
dann wird das ganze reichlich nutzlos.
Und wenn keiner eine Antwort auf Deine Frage hat, dann ist das so, einen
Anspruch auf Beantwortung hast Du nicht.
M. R. schrieb:> Stichleitungen wie Du sie ja haben wirst gehen nicht.> --> Somit solltest für jeden Slave eigene LVDS-Transmitter auf der> Masterseite vorsehen.
Soviel ich weiß, sind kurze Stichleitungen erlaubt (habe ich irgend wo
gelesen, wobei ich nicht sicher bin, dass sich dass auf LVDS bezogen
hat).
> Was für ein Baustein kann den 50MBit/s?
Dieser ADC z.B. : ADS8327> Habs dann gelassen weil es bei mir nicht zwingend notwendig war.> 50MBit/s und dass via SPI finde ich sehr schwer realisierbar
Diese Datenrate als SPI wurde bei uns mit FPGAs als Master und Slave
schon realisiert und geht teilweise schon gut, allerdings nicht über 10
m und ist noch in der Etwicklungsphase. Ein ziemliches Problem ist dabei
das Delay (Logik-, Routing- und Leitung-/Kabel-Delays) in dem
MISO-Signal. Die fallende Flanke am CLK kommt durch die Delays am Slave
verzögert an und die Slave-Daten kommen noch mehr verzögert zurück am
Master an. Wenn die Daten nicht noch t_su (Setup Time) vor der
steigenden Flanke ankommen, dann liest der Master was falsches ein. Aber
wir haben Lösungsansätze dazu.
Um dieses Phasenproblem beim Taktsignal zu lösen kann der aktive Slave
den Takt zusammen mit den Daten wieder zurück schicken, d.h. der Master
hat einen Taktausgang für seinen Transmitter und einen Takteingang für
seinen Receiver.
> d.h. der Master hat einen Taktausgang für seinen Transmitter und einen> Takteingang für seinen Receiver.
Von dieser Möglichkeit habe ich früher auch schon gehört. Der Nachteil
hier ist noch eine CLK-Leitung im Kabel, Stecker und auf PCB,
zusätzliche Treiber-Bausteine zum Umkehren des CLK und ein
(zusätzlicher) Takteingang am Master.
Da der Master in diesem Fall ein FPGA ist, kann man selbst an dem
"rumdrehen". Der Ansatz war, die MISO-Daten entsprechend verzögert
einzulesen. Unser FPGA-Mann sagt, es ist kein Problem.
@ A. K. (prx)
Was meinst du eigentlich zu diesem Konzept? Ist die Übertragung vom
Master an mehrere Slaves per LVDS (welches eigentlich Punkt-zu-Punkt
ist) machbar? Was ist mit der schon angesprochenen
Stichleitungsproblematik?
Danke!
noips schrieb:> Was meinst du eigentlich zu diesem Konzept?
Sorry, Hochfrequenz auf langen Strecken liegt etwas ausserhalb meiner
Kompetenz.
Prinzipiell möglich ist es jedoch, immerhin arbeitete Parallel-SCSI ab
Ultra2 mit LVD bis 12m auch nicht anders. Mit gewissen Einschränkungen -
siehe dort.
Hab hier ein Application Report von TI, in dem es teilweise um dieses
Thema geht. Nur wird hier SPI mit nur einem Slave (also Punkt zu Punkt
und nicht Bus) behandelt.
Zurück zu den Stichleitungen. Entsprechend dem Artikel
Wellenwiderstand treten Reflektionen auf, wenn die Leiterbahn so
lang ist, dass die Signallaufzeit darauf länger als 1/6 der Anstiegszeit
ist. Jetzt habe ich eine Worst Case Rechnung gemacht:
t_rise_min / t_fall_min 0.2 ns (bei schnellsten mir bakannten LVDS)
Sign.-Geschw. Leiterbahn 15 cm/ns (worst case siehe
Wellenwiderstand)
Zulässige Stichleitungslänge ohne Reflektionen:
l_zul = (0.2 ns * 15 cm/ns) / 6 = 0.5 cm !!!
Das heißt, meine Leiterbahnen vom Stecker-Pin bis zum Receiver-Baustein
(Stichleitung) dürfen nicht länger als 0.5 cm sein. Sonst gibt es
Reflektionen!
Sehe ich es richtig?
noips schrieb:> t_rise_min / t_fall_min 0.2 ns (bei schnellsten mir bakannten LVDS)
Gibt es einen zwingenden Grund, weshalb du dir mit Gigahertz-tauglichen
LVDS Transceivern für 50MHz Signale selbst auf die Füsse treten willst?
> Das heißt, meine Leiterbahnen vom Stecker-Pin bis zum Receiver-Baustein> (Stichleitung) dürfen nicht länger als 0.5 cm sein.
Oder du sorgst für langsamere an die angepeilte Datenrate angepasste
Flanken.
> Gibt es einen zwingenden Grund, weshalb du dir mit Gigahertz-tauglichen> LVDS Transceivern für 50MHz Signale selbst auf die Füsse treten willst?
So zwingend sind die Gründe nicht. Zum einen können die LVDS-fächigen
I/O-Paare des FPGAs gleich verwendet werden und nur für die restlichen
Signale wären dann Treiber nötig (Kosten und Platz auf dem Board). Zum
anderen sind die LVDS-Bausteine etwas günstiger als bustaugliche M-LVDS.
> Oder du sorgst für langsamere an die angepeilte Datenrate angepasste> Flanken.
Darauf läuft es wohl hinaus. Hier wird wohl M-LVDS die richtige Wahl
sein. Bei diesen Bausteinen sind die Flanken auf über 1 ns spezifiziert,
um Stichleitungen zu ermöglichen.
Also ich halte das Konzept ein SPI-Signal differenziell zu uebertragen
um Stoerungen auf den Leitungen zu vermeiden fuer brauchbar und klug.
Genauer gesagt ist das ja nichts anderes als RS422.
Unklug ist es natuerlich wenn man Bustreiber verwendet die deutlich
schneller sind als man es benoetigt.
Es gibt aber noch einen weiteren Punkt an den du offenbar noch keinen
Gedanken verschwendet hat. Potentialunterschiede. Bei 10m Kabel kann das
gehen, es kann aber auch nicht gehen. Abhaengig von Geraet und Umgebung.
Da solltest du jedenfalls mal drueber nachdenken.
Olaf
> Oder du sorgst für langsamere an die angepeilte Datenrate angepasste> Flanken.
Was würde sich denn noch dafür eignen. RS-485 gibt es zwar auch welche
mit 50 MHz aber es ist schon die Grenze und außerdem sind die nicht
gerade stromsparend, es wird ein Interface-Board mit 8 SPI-Kanälen
werden.