mikrocontroller.net

Forum: FPGA, VHDL & Co. SPI Interface


Autor: Marvin (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 -

Autor: bone (Gast)
Datum:

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

Autor: Marvin (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 -

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Marvin (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 -

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.