Forum: FPGA, VHDL & Co. SPI Constraints


von Ole W. (ole_w)


Lesenswert?

Hallo zusammen!

Aktuell versuche ich einen SPI-Master über LVDS (lange Leitung am 
Ausgang) mit mehreren Slaves zum laufen zu bekommen. Meine Frage hierbei 
wäre: Wie muss ich das SCLK, MOSI, MISO, CS Constrainen? In meinen Augen 
ist das SCLK ja nur ein "Ausgangssignal" und bedarf daher keiner 
Speziellen Routing Ressourcen. Auf der Anderen Seite ist es ja im 
Prinzip dennoch ein Takt, da ja bei SPI mit "dem gleichem" Takt 
eingelesen bzw. rausgeschrieben wird. Das Design Funktioniert soweit auf 
der Hardware nur gibt es eben Warnings für Input/Output Delay und eine 
Warning, dass man noch "generated clocks" Constrainen muss. Wie würde 
ich denn die Delays wählen? Im Datenblatt meiner Chips wird das Timing 
für SPI dargestellt, der Constraint Wizzard von Vivado nimmt jedoch den 
Systemtakt und nicht den SCLK als Referenz an.

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


Lesenswert?

Ole W. schrieb:
> dass man noch "generated clocks" Constrainen muss.
Das muss man nur, wenn man

Ole W. schrieb:
> Aktuell versuche ich einen SPI-Master über LVDS (lange Leitung am
> Ausgang) mit mehreren Slaves zum laufen zu bekommen.
Welche SCLK Frequenz hast du geplant?

> LVDS (lange Leitung am Ausgang)
Wie lang ist die Leitung? Wie sind die Slaves angeschlossen? Wie sieht 
die Terminierung aus?

von Ole W. (ole_w)


Lesenswert?

Lothar M. schrieb:
> Welche SCLK Frequenz hast du geplant?

10 MHz.

Lothar M. schrieb:
> Wie lang ist die Leitung? Wie sind die Slaves angeschlossen? Wie sieht
> die Terminierung aus?

Aktuell N- Slaves. Leitungslänge incl. PCB-Trace 20-30cm. (Multiboard 
Projekt). Nach der Theorie für Wellenausbreitung/Leitungstheorie ist das 
wohl alles noch in Ordnung aber durch die Steilen Flanken hatte ich da 
bedenken. Und durch die Verwendung von LVDS minimiere ich gleichzeitig 
die Störungen von außen. LVDS wird durch einen Buffer vom FPGA(Artix 7) 
auf der einen Seite und dedizierten LVDS Empfängern auf der anderen 
Seite realisiert. Terminiert ist meine ich mit 100 Ohm, Nagel mich aber 
nicht drauf fest hab das Design nicht zur Hand grade.

von Duke Scarring (Gast)


Lesenswert?

Gibt es denn Slaves, die LVDS-SPI-Inputs haben oder ist da noch ein 
Buffer dazwischen?

Da bei mir das FPGA (fast) immer der SPI-Master ist und alle SPI-Signale 
taktsynchron erzeugt werden, konnte ich bisher auf Constraints 
verzichten.
Was ich gelegentlich in der Testbench in einem SPI-Slave-Modell prüfe, 
sind setup-/hold-Zeiten und die SPI-Taktfrequenzen.

Duke

von Ole W. (ole_w)


Lesenswert?

Duke Scarring schrieb:
> Gibt es denn Slaves, die LVDS-SPI-Inputs haben oder ist da noch ein
> Buffer dazwischen?

Da habe ich externe DS90LT012AH (oder so ähnliche) LVDS Reciever 
eingebaut.

von Bongo (Gast)


Lesenswert?

Duke Scarring schrieb:
> Was ich gelegentlich in der Testbench in einem SPI-Slave-Modell prüfe,
> sind setup-/hold-Zeiten

die des (langsamen) slaves nehme ich an ...
weil im FPGA braucht es eigentlich nur korrekte IO Constraints

von Reinhard (Gast)


Lesenswert?

Zum Constrainen gibt's quasi immer dasselbe:
Clock to output delay, min und max
Setup und hold time am Input.
Klar kann man noch IO loads, clock jitter, high/low Time, CS to First 
click Edge usw. machen, aber eines nach dem anderen.

Vom Master geht's source-synchron zum Slave und danach zurück. Je nach 
Board kommen die Lesedaten von Slave ziemlich spät wieder zurück zum 
Master. Man muss also das Timing am Board rechnen und dann sieht man 
auch, was die Maximalfrequenz ist. Dazu kommt auch, dass SPI oftmals nur 
einen Halbtakt für die Lesedaten hat, z.B. rise to fall, was natürlich 
bedeutet, dass die Lesedaten in einem Halbtakt gelatcht werden.

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.