Hallo liebe microcontroller user !!! Also erstmal ich bin neu hier von daher ein schönen Grüß an alle ;) ! So nun zu meinem Problem ich möchte gerne einen Hamming-Codierer und einen Hamming-Decodierer in VHDL realisieren. So nun gleich im Vorraus ich brauche keine erkläfrung zum hamming code selbst sondern mir geht es einzig allein um die Umsetzung in VHDL .... So nun zur aufgaben Stellung vorgegeben ist die enity und es soll einzig allein die Architecture umgesetzt werden es dürfen keine Prozesse verwendet werden und alle funktionen sollen mit nebenläufigen Anweisungen und einfacher Verknüpfungen wie OR AND XOR umgesetzt werden.... SO nun habe ich das ganze mal angefangen (hier mal ein link zu nopaste.info denke das ist schöner wie alles hier rein zu quetschen) Codierer: http://nopaste.info/5cda9ba637.html so mein problem ist nun hier im Codierer müsste ich ja eigentlich nur meine Prüfbits berechnen diese würde ich ja in Prosa form bzw laut definition durch die XOR weiße verknüpfung der einzelnen Datenbits berechenen also zB. C1= XOR(d3, d5, d7, d9, d11) in c1 dürfen ja eben nur die ungeraden vorkommen mein problem ist jetzt aber hier in meinem beispiel habe ich ja eben nur Schalter0-3 mit dennen ich das datenwort eingebe deshalb und aus aus lauter Verzweiflung ;) habe ich diese auch mit XOR verknüpft was aber sicher falsch ist weil ich muss ja erstmal prüfen welches Datenbit wo vorkommt damit ich auch sicherstellen kann das zB. C1 auch wirklich nur ungerade vorkommen wie mache ich das ??? soweit klar ? So nun wenn ich diese berechnet habe muss ich die ja über den outbus ausgeben wie mache ich das ??? Als nächstes der Decodierer: http://nopaste.info/6bc87f741d.html erstmal zu erklärung der Decodierer empfängt ja erstmal die prüfbits c1-c8 vom codierer und berechnet aus dem erhaltenen Datenwort nochmals neue prüfbits c1neu-c8neu nun vergleicht er c1empf-c8empf mit den neuberechneten prüfbits c1neu-c8neu mit einer XOR verknüpfung hierdurch entsteht ein pointerwort p0-p3 so wenn p0-p3 = 0 ist dann kam kein fehler vor da die prüfbits gleich sind wenn aber eine 1 oder zwei 1en vorkommen ist ein fehler aufgetreten nun wird der index der fehlerhaften prüfbits aufaddiert also zB. c4=fehler und c2fehler dann wird 4+2=6 gerechnet also weiß ich das datenbit d6 falsch ist und dies kann ich nun durch niegieren korrigieren !!! hoffe das ist soweit klar ??? jetzt wie setze ich das in VHDL um nun muss ich ja hier irgenwie die empfangenen prüfbits abfangen und speichern um sie vergleichen zu können außerdem muss ich die neuen berechnen jetzt habe ich hier aber nur den inbus den ich hier wahrscheinlich auch falsch mit xor verknüpfe um die neuen prüfbits zu erechnen wie kann ich das anders machen ??? dann muss ich die neuen prüfbits mit den empfangenen vergleichen und mein pointerwort erstellen was durch die when anweißungen geschieht !!! wenn ich das gemacht habe setze ich nun die signale ok0-3 wenn z.b p0 gleich 0 ist wird ok0 auf 0(für richtig) gesetzt andern fals auf 1 (für falsch) wenn ich p0 jetzt aber 1 wäre dann müsste ich das ja korriegieren dazu müsste ich aber erstmal wieder herauskommen welches datenbit denn falsch ist wie mache ich das ???? und wie korriegiere ich das ganze dann ??? nachdem ich das ganze gemacht habe muss ich das ganze ja wieder weiterschicken (soll auf einer 7 segment anzeige ausgegeben werden) !!!! So ihr seht fragen über fragen habe noch nie mit VHDL gearbeitet und muss das hier so schnell wie möglich fertig bekommen und abgeben deswegen bitte ich um schnelle antwort !!!!!! Wäre echt dankbar wenn vieleicht jemand den Code überarbeiten könnte bzw mit ein fertiges Beispiel zeigen könnte oder Tipps geben kann einfach um jede hilfe dankbar!!!!! Danke im Vorraus Mit freundlichen Grüßen !
Manuel D. schrieb: > hier mal ein link zu nopaste.info denke das ist > schöner wie alles hier rein zu quetschen Du kannst den VHDL-Code hier anhängen. Gib dann der Datei die Endung .vhd, dann gibts ein hübsches Syntax-Highlighting dazu... > erstmal zu erklärung der Decodierer empfängt ja erstmal die prüfbits > vom codierer und berechnet aus dem erhaltenen Datenwort nochmals neue > prüfbits c1neu-c8neu nun vergleicht er c1empf-c8empf mit den > neuberechneten prüfbits c1neu-c8neu mit einer XOR verknüpfung hierdurch > entsteht ein pointerwort p0-p3 so wenn p0-p3 = 0 ist dann kam kein > fehler vor da die prüfbits gleich sind wenn aber eine 1 oder zwei 1en > vorkommen ist ein fehler aufgetreten nun wird der index der fehlerhaften > prüfbits aufaddiert also zB. c4=fehler und c2fehler dann wird 4+2=6 > gerechnet also weiß ich das datenbit d6 falsch ist und dies kann ich > nun durch niegieren korrigieren in c1 dürfen ja eben nur die ungeraden > vorkommen mein problem ist jetzt aber hier in meinem beispiel habe ich > ja eben nur Schalter0-3 mit dennen ich das datenwort eingebe deshalb und > aus aus lauter Verzweiflung habe ich diese auch mit XOR verknüpft was > aber sicher falsch ist weil ich muss ja erstmal prüfen welches Datenbit > wo vorkommt damit ich auch sicherstellen kann das zB. C1 auch wirklich > nur ungerade vorkommen wie mache ich das ??? soweit klar ? Rhabarberrhabarberrhabarber??? soweit klar ? Satzzeichen dienen der Gliederung eines Textes und tragen wie die Großschreibung zur Lesbarkeit bei... > und es soll einzig allein die Architecture umgesetzt werden Klar, denn das ist ja auch meist die Hauptarbeit... > ich brauche keine erkläfrung zum hamming code selbst Ja, mir würde eine kurze Erklärung dieses Codes bei der Beantwortung deiner Frage aber helfen... Also: was kommt bei dir da im Coder rein? Was soll da rauskommen? > ??? > !!!!!! > !!!!! Warum funktioniert deine Shift-Taste bei den Interpunktionszeichen? > So ihr seht fragen über fragen Wobei hier die meisten nicht direkt mit VHDL zu tun haben... > habe noch nie mit VHDL gearbeitet und > muss das hier so schnell wie möglich fertig bekommen und abgeben > deswegen bitte ich um schnelle antwort !!!!!! Wenn nur VHDL das Problem ist: wie würdest du denn das z.B. in C programmieren? > Wäre echt dankbar wenn vieleicht jemand den Code überarbeiten könnte bzw > mit ein fertiges Beispiel zeigen könnte oder Tipps geben kann einfach um > jede hilfe dankbar!!!!! Vermutlich wäre es hilfreich, wenn du einfach die ganze Schulaufgabe hier posten würdest... :-/
Danke für die Antwort .... Doch das ganze hat was mit VHDL zu tun in C würde ich das ganze Datenwort vermutlich einfach mit Bitshiftern zerlegen um meine Datenbits zu bekommen der rest wäre einfach! Eine Erklärung zum Code findest du hier : http://de.wikipedia.org/wiki/Hamming-Code Werde mir in Zukunft mühe geben meine Texte deutlicher und leserlicher zu schreiben.... Hoffe das hilft dir jetzt bei der Beantwortung der Frage.
Manuchao F. schrieb: > Werde mir in Zukunft mühe geben meine Texte deutlicher und leserlicher > zu schreiben.... Deine Umwelt wird es dir danken... ;-) > Doch das ganze hat was mit VHDL zu tun in C würde ich das ganze > Datenwort vermutlich einfach mit Bitshiftern zerlegen um meine > Datenbits zu bekommen der rest wäre einfach! In VHDL ist das nicht komplizierter, ich schaffe gerade nur mental die Abbildung deiner Entity zurm Hamming-Code nicht. Was sollen die Schalter1..4 und was der Codebus? Zeig doch mal deinen Coder, wei du den in C beschreiben würdest... Du kannst auch eine Wahrheitstabelle aufschreiben, denn mit 4 Eingangswerten sind das gerade mal 16 Tabelleneinträge...
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.