FPGA->RS232 PC, wie Variablen und Werte auseinander halten

Gast #1704655
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
#1704743
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
Gast #1706044
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.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.