Forum: FPGA, VHDL & Co. SPI Interface


von Marvin (Gast)


Lesenswert?

Hallo,

ich arbeite gerade an einem SPI-Interface (Master+Slave), das zwei FPGAs 
über ein max. 20cm langes Kabel verbindet. Der Takt in dem einen FPGA 
sind 33MHz, der andere läuft auf 45MHz. Weiß jemand, wie schnell man das 
SPI-Interface laufen lassen kann (33MHz Master), damit man die Daten mit 
den 45MHz (Slave) noch sauber samplen kann?

- Marvin -

von bone (Gast)


Lesenswert?

ggt = grösster gemeinsamer teiler (nur vermutung, wäre aber mein ansatz)

von Marvin (Gast)


Lesenswert?

> ggt = grösster gemeinsamer teiler (nur vermutung, wäre aber mein ansatz)

Das glaub ich nicht, dass das wirklich notwendig ist. Ich hätte eher so 
Richtung Nyquist (=45MHz/2) oder zur Sicherheit 45MHz/4 getippt. Aber 
ich hab da halt leider keine Erfahrungswerte.

- Marvin -

von Matthias (Gast)


Lesenswert?

Bei SPI überträgst du den Takt doch mit, genau das ist doch der große 
Vorteil. Du kannst also 33MHz Takt nutzen. Der Slave sampelt die Daten 
dann genau mit diesem Takt. Um sie weiterzuverarbeiten ist es sinnvoll 
die Daten im Slave bei 33MHz innen FIFO zu schieben udn sie auf der 
andern Seite mit 45MHz wieder auszulesen, um mit dem Gesamtsystem 
synchron zu sein.

von Marvin (Gast)


Lesenswert?

Das hatte ich schonmal probiert ist aber kräftig nach hinten 
losgegangen. Das Problem war, das der Master (war ein Microcontroller) 
den SCK nicht kontinuierlich übertragen hatte und dann meine ganze Logik 
dann mit dem letzten Empfangenen Bit einfach stehengeblieben ist. Okay 
aber hier kann ich den 33MHz Takt kontinuerlich laufen lassen, weils ich 
ja auch der Master bin.

Und die empfangenen Daten in die 45MHz einsynchronisieren ist trivial.

Mit einem Fifo hab ich es noch nicht ausprobiert, aber das werd ich mir 
auch mal anschauen.

- Marvin -

von Dirk (Gast)


Lesenswert?

Hallo, bei dem AVR Mikrocontroller kann die HW SPI im SlaveModus einen 
maximalen Takt von f/4, weil die Daten 4 Fach oversampelt werden.


Gruß,
Dirk

von Falk B. (falk)


Lesenswert?

@ Marvin

>den SCK nicht kontinuierlich übertragen hatte und dann meine ganze Logik

Das ist ja auch normal bei SPI. EIne Taktflanke=1 Bit. Und wenn nix 
übertragen wird dann gibts halt keine Taktflanken.

>dann mit dem letzten Empfangenen Bit einfach stehengeblieben ist. Okay
>aber hier kann ich den 33MHz Takt kontinuerlich laufen lassen, weils ich
>ja auch der Master bin.

Da musst du aber ein Chip select benutzen und in dem Moment 
deaktivieren.

>Und die empfangenen Daten in die 45MHz einsynchronisieren ist trivial.

Ach so? Warum fragst dann?

>Mit einem Fifo hab ich es noch nicht ausprobiert, aber das werd ich mir
>auch mal anschauen.

Genau DAS ist die solide Lösung mit maximalen Timingreserven.

@ Dirk

>Hallo, bei dem AVR Mikrocontroller kann die HW SPI im SlaveModus einen
>maximalen Takt von f/4, weil die Daten 4 Fach oversampelt werden.

Stimmt, wobei mir bis heute nicht klar ist, warum das so gemacht wird. 
Wahrscheinlich wollten die Entwikcler kein zweites Taktnetz auf dem uC?

MFg
Falk

von Dirk (Gast)


Lesenswert?

>Stimmt, wobei mir bis heute nicht klar ist, warum das so gemacht wird.
>Wahrscheinlich wollten die Entwikcler kein zweites Taktnetz auf dem uC?

Ich vermute eher um Glichtes besser zuverarbeiten, weil nachdem 
Abtasttheorem benoetigt man nur ein zweifaches oversampeln, aber ab 
einigen MHz duerften die Glichtes so groß sein das man eine vierfache 
Abtastung benoetigt.


Gruß,
Dirk

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.