Forum: FPGA, VHDL & Co. SPI neu syncronisieren / regenerieren


von Fabian -. (fabian-leuchte1)


Lesenswert?

Hallo zusammen,
ich suche eine einfache Möglichkeit (fertiges IC) ein SPI Signal wieder 
zu regenerieren.
Bei gegebener Anwendung läuft auf Grund der Leitungslängenunterschiede 
Signal und Takt langsam auseinander.

Der normale Weg wäre also z.b. auf einem FPGA mit PLL den Takt zu 
gewinnen, dann das Datensignal einzusyncronisieren und anschließend 
wieder beides syncron ausgeben.

Kennt jemand ein IC welches dies bereits fertig bietet?

gruß

von Strubi (Gast)


Lesenswert?

Hi,

Fabian -. schrieb:
> Hallo zusammen,
> ich suche eine einfache Möglichkeit (fertiges IC) ein SPI Signal wieder
> zu regenerieren.
> Bei gegebener Anwendung läuft auf Grund der Leitungslängenunterschiede
> Signal und Takt langsam auseinander.
>

Das hört sich sehr merkwürdig an. Du meinst schon, was man im Englischen 
unter "Skewing" versteht, ne? Da müsstest Du ja unterschiedliche 
Ausbreitungsgeschwindigkeiten auf deinen Leitungen haben. Bei welchen 
Frequenzen liegst du da?

> Der normale Weg wäre also z.b. auf einem FPGA mit PLL den Takt zu
> gewinnen, dann das Datensignal einzusyncronisieren und anschließend
> wieder beides syncron ausgeben.
>
> Kennt jemand ein IC welches dies bereits fertig bietet?
>

Nicht für sowas, und ich könnte mir vorstellen, dass manche FPGAs 
billiger sind. Ein MachXO2 ist IMHO der günstigste SerDes (aber man muss 
ihn halt programmieren). Ausserdem brauchst du für dein SPI-Protokoll 
irgend einen Sync a la HDMI. Und den SPI-Takt kannst du nicht einfach 
mit der PLL extrahieren, da nicht kontinuierlich beim SPI. Wenn du die 
jeweiligen Phasenunterschiede kennst und die Frequenz einigermassen 
human ist, kannst du es nur mit digitalen/programmierbaren Delays 
machen.

Gruss,

- Strubi

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Fabian -. schrieb:
> ein SPI Signal
Gibts dazu nähere Infos?
Wie schnell?
Wie sieht die Topologie aus?
Warum verschieben sich Takt und Daten?
Hast du flache Flanken oder Klingeln auf dem Bus?

von user (Gast)


Lesenswert?

Oder ist das signal nur verschliffen? Dann hilft ein Schnitt-Trigger

von Fabian -. (fabian-leuchte1)


Lesenswert?

Hallo,
Ich habe Daten und Clock bei 25MHz. 5V Pegel.
Die Flanken sind in soweit sauber, es geht nicht darum die 
Signalqualität zu verbessern sondern Laufzeitunterschiede auszugleichen.
Bei dieser Anwendung sitzen viele Treiber hintereinander, somit ist die 
Signalqualität kein Thema. Allerdings hat dieser Aufbau über die ganze 
Strecke hinweg Leitungsunterschiede im Bereich von Metern, somit ist der 
Laufzeitunterschied wieder ein Thema.
Einfach ein Stück Leitung mit reinlöten ist keine Lösung ;-)

von Mitlesa (Gast)


Lesenswert?

Verstehe ich es richtig?

Es soll also Pfusch am Bau mit Pfusch am Bau behoben werden.

von Fabian -. (fabian-leuchte1)


Lesenswert?

naja wenn man es so nennen will ja.

wobei das eigentlich mit einem einfach fifo funktionieren sollte oder?
die Ausgabe ist ja wieder syncron zum Takt.

: Bearbeitet durch User
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Fabian -. schrieb:
> wobei das eigentlich mit einem einfach fifo funktionieren sollte oder?
Das wird aber interessant, wenn auch MISO Probleme macht...
Ist dir schon klar, dass SPI eingentlich nur gekoppelte Schieberegister 
sind? Wo soll da ein Ffo Platz haben?

In dieser Situation würde ich mir mal Gedanken zum Thema 
"Signalintegrität" machen und untersuchen, warum dein SPI Probleme hat.

von Klakx (Gast)


Lesenswert?

Ich denke mal für große Entfernungen sollte man überlegen, ob man nicht 
vielleicht eine Brücke mit einem anderen geeigneteren Protokoll zwischen 
beide spi Knoten setzt.

von berndl (Gast)


Lesenswert?

Fabian -. schrieb:
> Hallo,
> Ich habe Daten und Clock bei 25MHz. 5V Pegel.
> Die Flanken sind in soweit sauber, es geht nicht darum die
> Signalqualität zu verbessern sondern Laufzeitunterschiede auszugleichen.
> Bei dieser Anwendung sitzen viele Treiber hintereinander, somit ist die
> Signalqualität kein Thema. Allerdings hat dieser Aufbau über die ganze
> Strecke hinweg Leitungsunterschiede im Bereich von Metern, somit ist der
> Laufzeitunterschied wieder ein Thema.

Sorry, aber 25MHz heisst 40ns Periodendauer, da SPI mit der einen Flanke 
Daten losschickt, mit der anderen Flanke Daten erwartet (Sicht Master), 
bleiben dir also 20ns fuer die gesamte Uebertragungsstrecke.
Da du 5V erwaehnst sowie viele Treiber dazwischen, hast du mal 
ausgerechnet, das da so an Laufzeit zusammenkommt (Datenblaetter lesen)?
Nur mal so als Daumenregel: Das Signal schafft Pi*Daumen 15cm pro ns, 
deine Treiber haben xx ns Delay.
Nur mal so als Beispiel: Wir arbeiten mit ca. 5m Leitungslaenge, die SPI 
laeuft ueber LVDS Treiber. Bei ca. 5MHz ist da einfach Ende Gelaende 
fuer zuverlaessigen Betrieb. Kann man in etwa verdoppeln, wenn der SPI 
Master ein FPGA ist und man beim Empfang der Daten "quasi bescheisst" 
(mit der falschen Flanke empfaengt).
Da du ueber die "Meter" bisher nix gesagt hast, ist das schwer 
abzuschaetzen, aber bei den Frequenzen wird das echt spassig...

von Sym (Gast)


Lesenswert?

Manche SPI Master haben die Möglichkeit die Capture-Flanke nach hinten 
zu verschieben, um somit die Laufzeit zum Slave, durch den Slave und 
zurück auszugleichen. D.h. man tauscht damit Hold- gegen Setupzeit aus.

Für entfernungsunabhängige Interfaces sollte man besser Source-synchrone 
Interfaces verwenden, wo Takt und Daten von derselben Quelle kommen bzw. 
selbstgetaktete Interfaces, Z.B. mit 8B10B Codierung.

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
Noch kein Account? Hier anmelden.