www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Daten von Schnittstelle in einen Speicher schreiben


Autor: G. B. (geri)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen

Ich möchte einem FPGA über eine serielle Schnittstelle Parameter
übergeben.
Die Receive-Routine verwaltet dazu ein Flag RxDataAvailabe. Man weiss
damit, dass neue gültige Daten da sind.

Die Routine sollte für diverse Projekte möglichst flexibel sein.

Was haltet ihr von der folgenden Lösung?:

1.) Im FPGA wird ein Speicherbereich Names DataRec definiert (siehe auch
Bild):
reg [7:0] DataRec [0:255];

2.) mittels einer State-Maschine werden die Daten, wenn RxDataAvailable 
gesetzt ist, der RS232 gelesen und in einen Zwischenpuffer (InputBuf) 
geschrieben. Die Daten bestehen aus
Byte StartByte
Byte Datenlänge
Byte Adresse
Byte[20] Data; // maximal 20 Byte lang

3.) Nachdem die Daten vorhanden sind wird der Inhalt von InputBuf nach
DataRec kopiert.

4.) Der Datenzugriff erfolgt im FPGA dann schliesslich z.B über
AdjustValue=DataRec[AdjAddress];

Im ähnlichen Stil könnte man evtl. beim Lesen vorgehen.

Dünkt Euch dieses Konzept praktisch oder würdet ihr anderweitig 
vorgehen?


Vielen Dank für Euer Feedback

Geri

Autor: Tom Nachdenk (tom-nachdenk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klingt für mich so als wenn Du einen Microcontroller im FPGA 
nachbildest, der dann 'klassisch' Daten empfängt die dann der 
Apllikationslogik übergeben werden. Warum nicht eine SPI-Schnittstelle? 
1. Byte Adresse und dann je nach dem Datenbytes hinterher. Je nach dem 
dann Autoinkrement beim Adresszähler falls mehrere Paramater übergeben 
werden.... Dagegen spricht aus meiner Sicht eigentlich nur das Du ggf. 
die Daten vom PC empfangen willst und der kein 'native' SPI hat.
Evtl. definierst Du in dem 1 Byte 1 Bit für Lesen (Daten werden dann 
auch seriell herausgeschoben) und 1 Bit für Autoincrement an/aus je nach 
dem ob weitere Zugriffe dann auf das nächste Byte zugreifen sollen oder 
das gleiche (ggf Doppelbyte für 16 Bit Wörter).

Autor: G. B. (geri)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Tom

Vielen Dank für Deine Rückmeldung. Die RS232 war hier eigentlich nur 
exemplarisch gedacht. Es könnte, wie du sagst auch die SPI, I2C oder 
eine andere Schnittstelle sein.

Fragwürdig ist für mich das Konzept an sich. Irgendwie möchte ich 
Parameter im FPGA setzen und nachdem diese gesetzt sind eine Operation 
ausführen (z.B. eine Temperatur regeln oder einen PWM-Ausgang gemäss 
Vorgabe setzen).

Du hast auch recht, diese Lösung verwende ich beim Mikrocontroller. Sie 
funktioniert dort sehr gut:). Prinzipiell müsste das Konzept auch beim 
FPGA funktionieren. ..ob es aber vielleicht eine professionellere Lösung 
gäbe..:)?

Ach ja, das CMD-Byte wäre hier eigentlich nicht erforderlich. Vielleicht 
aber in der Zukunft praktisch:)

Beste Grüsse

Geri

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.