mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik FPGA->RS232 PC, wie Variablen und Werte auseinander halten


Autor: Lukas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Bin leider noch ein ziemlicher Neuling in der FPGA Welt.

Nun habe ich aber erfolgreich einen Cylone2 dazu gebracht per SPI einen 
ADC auszulesen und per Serieller die Daten an den PC zu senden. freu

Als nächsten Schritt habe ich nun mehrere Variablen die ich übertragen 
möchte.

Jetzt rätsle ich nur in welchem "Format" ich Daten übertragen soll, 
sodass ich Sie am PC auch wieder richtig zuordnen kann.

Ich könnte zum Beispiel einen ganzen String übertragen wie 
"Variable_1=247 Variable_2=135"
Mir würde aber auch eine Kurzform genügen: "12C2" (12=Variablen ID 
C2=Wert)
Leider kann ich dann am PC nicht mehr feststellen ob 12 oder C2 die 
Variablen ID ist, falls ein Paket verloren geht.
Einen ganzen String zu übertragen ist (für mich) in VHDL auch nicht so 
einfach ;)

Könnte natürlich auch zuerst eine Anfrage vom PC schicken "bitte schick 
mir Variable 12, dass wäre aber auch wider unnötige Arbeit da der FPGA 
entscheiden soll was der PC wann bekommt. -.-

Eigentlich müsste für eine eindeutige Identifizierung der Variablen 
name/code immer länger sein als der größte Wert...

Wie löst Ihr dieses Problem, wie macht man so eine Übertragung am 
saubersten?

Hoffe ich hab mein Problem überhaupt verständlich formuliert ;)

Danke für alle Tipps
Schönen Abend
lg Lukas

Autor: Lehrmann Michael (ubimbo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich würde dir einfach anraten das parity-Bit zu nutzen. Zusätzlich 
könnte man noch überlegen (wenns wirklich so genau sein muss ob man 
hashen könnte). Alternaiv alles gleich zweimal senden ...

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  Lukas (Gast)

>Jetzt rätsle ich nur in welchem "Format" ich Daten übertragen soll,
>sodass ich Sie am PC auch wieder richtig zuordnen kann.

Nimm ASCII. Das ist einfach und zu Debugzwecken menschenlesbar.

>Mir würde aber auch eine Kurzform genügen: "12C2" (12=Variablen ID
>C2=Wert)
>Leider kann ich dann am PC nicht mehr feststellen ob 12 oder C2 die
>Variablen ID ist, falls ein Paket verloren geht.

Genau. Deshalb erstmal ASCII.

12C2<RET>

>Einen ganzen String zu übertragen ist (für mich) in VHDL auch nicht so
>einfach ;)

Wo ist das Problem? Für jede 8 Bit Variable müssen zwei Bytes erzeugt 
werden. Das kann man mit einer kleinen State Machine. Siehe 
Festkommaarithmetik. In VHDL ist das sogar einfacher, eine einfach 
Tabelle/Dekoder mit 16 Werteb wandelt von BCD in ASCII.

>Eigentlich müsste für eine eindeutige Identifizierung der Variablen
>name/code immer länger sein als der größte Wert...

Nö.

MG
Falk

Autor: Knut _x (_knut_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Danke für Eure Antworten.


Ich glaub da muss ich dann wohl wirklich zu ASCII greifen -.-
Oder ich Bau mir gleich vernünftige Pakete, hmm...

Danke nochmals

lg Lukas

Autor: peterguy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du solltest dir ein eigenes, kleines rotokoll definieren. Jeder 
Datenwert den du schickst kommt in ein Paket, daß entsprechend dem 
Protokoll aufgebaut ist

Darin enthalten sein sollte
- Länge (evtl. optional wenn über die ID bestimmbar)
- ID
- Daten

Beide Seiten (PC und FPGA) müssen natürlich wissen, welche ID zu welchen 
Daten gehört, sonst macht das ganze keinen Sinn.

Autor: peterguy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nachtrag: "rotokoll" soll natürlich "Protokoll" heißen :-)

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.