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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren