www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Kommunikation uC -> FPGAs


Autor: ampa (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich hab eine Frage bezueglich des "Timings" von Mikrocontrollern. Habe 
bisher Erfahrung mit FPGA-"Programmierung" aber noch nicht mit uC.

Also, es geht darum, dass ein ARM auf einem Board einige 
Kommunikationsschnittstellen steuert. Die Controller dafuer sind soweit 
vorhanden.
Es werden Daten ueber eine Ethernet-Schnittstelle per TCP/IP empfangen 
und in einen angeschlossenen RAM geschrieben.
Nun moechte ich ueber eine andere Schnittstelle mehrere FPGAs 
anschliessen, an welche bestimmte Daten davon gesendet werden. Ein 
Protokoll dazu kann selbst ausgedacht werden. Allerdings muss ich dafuer 
etwas zum Verhalten des uC wissen.

Also, gesendet wird moeglichst ohne Rueckleitung von den FPGAs, es gibt 
einfach nur ein enable und einen Datenpaketbroadcast mit einem Header 
ueber den der angesprochene FPGA dann seine Daten erkennt (Header+Daten 
ca. 50 Bit).
Im FPGA-Denken wuerde ich nun Taktflanken im Protokoll definieren und 
z.B. sagen, enable geht auf high und ein Datenpaket wird komplett 
uebertragen, ein Datenbit pro Clockcycle bis enable wieder low ist.
Geht das ueberhaupt mit einem uC oder laeuft das eher asynchron zum FPGA 
bzw. braucht mehrere Takte um z.B. ein Bit rauszusenden oder muss den 
Takt mitsenden oder wie auch immer? Also kann ich ein derartiges 
Kommunikationsverhalten voraussetzen oder muss man das anders machen?

Ich muss am Ende nicht das uC-Programm schreiben aber dem dafuer 
Zustaendigen sagen, was ich wie brauche aber dazu muss ich erstmal 
wissen was moeglich ist.
Vielen Dank.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ ampa (Gast)

>ich hab eine Frage bezueglich des "Timings" von Mikrocontrollern. Habe
>bisher Erfahrung mit FPGA-"Programmierung" aber noch nicht mit uC.

Hmm.

>Nun moechte ich ueber eine andere Schnittstelle mehrere FPGAs
>anschliessen, an welche bestimmte Daten davon gesendet werden. Ein

Wieviele Daten sollen in welcher Zeit transoportiert werden?
Wieviele FPGAs werden denn angeschlossen?

Spontan würde ich sagen, dass entweder SPI oder memory mapped IO in 
Frage kommen.

SPI

MfG
Falk

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich würde auch spontan auf SPI tippen.  Wichtig dabei ist, dass du
in Blöcken von 8 Bits arbeitest, da Hardware-SPI-Implementierungen
in der Regel nur ganzzahlige Vielfache von 8 Bits ausgeben können.

Auch wenn du eigentlich nichts zurück geben willst, kann es dabei
sinnvoll sein, den Rückkanal trotzdem zu implementieren.  Damit kann
der steuernde Controller dann (wenn ein bestimmtes, definiertes
Bitmuster als Antwort gesendet wird) feststellen, dass er nicht
,,in die Luft redet''.

Autor: ampa (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Falk,

Danke soweit.
Wieviele FPGAs maximal angeschlossen werden sollen, ist noch nicht ganz 
klar, vier oder acht etwa, wobei nicht alle Plaetze immer belegt sein 
muessen.
Wieviele Daten in welcher Zeit gesendet werden sollen, ist auch erstmal 
nicht wichtig, es geht mir nur um die Synchronisation uC -> FPGA. Der 
FPGA ist dann schon schnell genug, um was mit den Daten anzufangen bevor 
neue kommen.

Autor: ampa (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und danke auch Joerg :-)

Autor: ampa (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Achso, wegen der Daten pro Zeit war die Geschwindigkeit der 
Schnittstelle gemeint, die ist auch erstmal zweitrangig.

Also ich denke ich werde I2C nehmen (unidirektional) oder ist das dafuer 
eher unueblich? Hat das groessere Nachteile gegenueber SPI?

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ampa wrote:

> Also ich denke ich werde I2C nehmen (unidirektional) oder ist das dafuer
> eher unueblich? Hat das groessere Nachteile gegenueber SPI?

Unnützer Stress und fehleranfälliger.  I²C hat Sinn, wenn man entweder
viele Geräte adressieren will (wie im System Management Bus in einem
PC) -- SPI braucht pro Gerät ein "slave select"-Signal, oder wenn der
Slave u. U. lange brauchen kann (Microcontroller), bis er bereit ist.
Zumindest letzteres hast du ja nicht.

Autor: ampa (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Joerg

Wie meinst du das mit dem fehleranfaelligeren I2C?

In meinem Fall waere glaub ich I2C besser, da ich erstens nicht so viel 
Leitungen zur Verfuegung habe (SPI braucht ja viele chip selects) und 
zweitens die Geraete idealerweise ueber eine Adresse ansprechbar sein 
sollten um sie an verschiedene Plaetze der Leitung zu haengen.

Aber lass mich auch belehren, wenn SPI oder andere Varianten besser 
sind.

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]
  • [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.