Forum: FPGA, VHDL & Co. SPI Schnittstelle zwischen uC und FPGA Virtex 4


von you2 (Gast)


Lesenswert?

Hallo Ihr lieben und hilfsbereiten Menschen hier!

Folgende Situtaion:

Ich möchte eine SPI Schnittstelle zwischen einen uC und einem FPGA 
herstellen. Das FPGA (Virtex 4, Ev.-Board ML402,) soll von einem uC 
Daten über SPI erhalten.
Programmiert werden soll dies über die Simulink Xilinx Blocksets.
So jetzt habe ich mir die Grundlagen für die SPI angelesen und wollte 
nur noch mal nachfrage, ob ich es soweit richtig verstanden habe.

Mein uC ist Master, mein FPGA= Slave.
Es werden 4 Datenleitungen benötigt.
1. MOSI =Daten vom uC zum FPGA
2. MIS0 = Daten aus FPGA zum uC (brauch ich den überhaupt, wenn das FPGA 
eh nur Daten empfangen soll??)

3. SCK = Die Clock zur synchronisierung der Datenleitungnen usw.
4. SS oder CS = Chip Select. WEnn SS = --|___ (fallende Flanke) Begin 
der Datenübertragung.


So, jetzt muss ich doch eigentlich immer den Takt vom SCK übernehmen, 
die DAten lesen, ablegen... und dass alles wenn bei SS/CS eine fallende 
Flanke ankommt!? Korrekt!

Mehr muss ich doch eigentlich nicht beachten!? Die Snchronistation 
erfolgt durch SCK und das war es doch?!


DANKE

von Rick Dangerus (Gast)


Lesenswert?

Wie schnell, wie oft und wie viele Daten möchtest Du denn übertragen?

zu 2.: Nein, brauchst Du nicht.

Ansonsten fast richtig:

> So, jetzt muss ich doch eigentlich immer den Takt vom SCK übernehmen,
Ja, aber am besten Einsynchronisieren und auf die Flanke detektieren 
(VHDL Flankenerkennung).

> die DAten lesen, ablegen... und dass alles wenn bei SS/CS eine fallende
> Flanke ankommt!? Korrekt!
Was meinst Du? Bit oder Byte?

> Mehr muss ich doch eigentlich nicht beachten!? Die Snchronistation
> erfolgt durch SCK und das war es doch?!
Achtung. SS/CS nicht SCK ist Deine Synchronisation. Damit weiß der FPGA 
wann das erste Datum kommt. Wenn Du es komplizierter machen willst, 
kannst Du auch auf ein entsprechendes Syncwort im Datenstrom 
detektieren.

Rick

von you2 (Gast)


Lesenswert?

Alles klar, dann habe ich es ja soweit.
Wie schnell ich die Datenübertragen möchte? Gute Frage?
Ein Datenpaket beinhlatet eine 17Bit Adresse + 6Bit Data. Es soll ein 
320x240 RGB-Bild übertragen werden. Die Farbwerte für R:G:B sind auf 6 
Bit (2:2:2) begrenzt worden. eventuell wird das noch erweitert.

Wie errechne ich denn die möglich SPI-Geschwindigkeit???
Der uC hat einen System Clock von 40MHz. Ich habe gelesen, dass es auch 
möglich ist, nicht nur 8 Bit sondern bis zu 32 Bit aufeinmal zu 
übertragen! Wie wirkt sich das denn auf die BAudrate aus?????


DANKE

von Roger S. (edge)


Lesenswert?

you2 wrote:
> Ein Datenpaket beinhlatet eine 17Bit Adresse + 6Bit Data. Es soll ein
> 320x240 RGB-Bild übertragen werden. Die Farbwerte für R:G:B sind auf 6
> Bit (2:2:2) begrenzt worden. eventuell wird das noch erweitert.

Du koenntest, falls die Daten mehrheitlich linear uebertragen werden, 
ein auto-increment einfuehren und so entweder an Geschwindigkeit oder 
Farben gewinnen.

Cheers, Roger

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.