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
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 ...
@ 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
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
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.
Nachtrag: "rotokoll" soll natürlich "Protokoll" heißen :-)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.