Hallo, gibt es eine Infoseite wo man HEX Formate usw. auch als Anfänger kapiert ? Ich kenn mich null aus damit. Welches Format oder Darstellung ist das zb.: 80 04 bf 11 01 2b und wie errechnet man dazu die checksumme ? Wie würde z.B. "Hallo" in diesem Format aussehen ? Gibt es dafür einen Umwandler ? Klar, für den einen oder anderen ist das logisch aber ich finde keinen Weg da mal was zu lernen. Vielen Dank schon mal ! M.f.G. Jürgen
ok, vielen Dank ! Die Tabelle ist optimal, aber wie man die checksumme errechnet hab ich noch nicht geschnallt ;-(
Hallo Jürgen,
ich habe selbst auch ein bisschen Zeit gebraucht um mich mit dem
berechnen der CRC anzufreunden. Also: Für jede CRC gibt es ein
Generator-Polynom.
Das von Ethernet ist sehr lang, es beginnt mit x^32 und hat viele
weitere x hoch irgendwas. Das vom ISDN D-Kanal kann man noch
hinschreiben:
x^16 + x^12 + x^5 + 1
Nun wird jedes vorhandene "x hoch irgendwas" eine 1, bzw. für nicht
vorhandene ein Null notiert. Daraus folgt bei dem ISDN Polynom vom Grad
16 (Grad = höchste Potenz):
10001000000100001.
Nun werden an das Ausgangsdatenwort so viele Nullen angehängt, wie der
Grad des Polynoms beträgt (sprich hier 16 Nullen anhängen, bei Ethernet
32).
Als nächstes erfolgt die Berechnung. Dabei rechnet man im sogenannten
Galois Körper. Was das ist, ist eigentlich egal... Fakt ist, man muss
das Datenwort, mit den angehängten Nullen durch das Generatorpolynom
teilen.
Dabei wird beim subtrahieren ein XOR benutzt.
Also mal eine komplette Bsp.-Rechnung mit einem kürzeren Polynom:
Generatorpolynom: x^2+1 => 101 (Grad 2)
Nutzdaten: 10101101 => wegen Grad 2, zwei Nullen dran: 1010110100
Nun wie in der Schule:
1010110100 : 101 = 10001110
101
---
000
000
---
001
000
---
011
000
---
110
101
---
111
101
---
100
101
---
010
000
---
10
Evtl. ist aufgefallen, das ich 100 - 101 (also biteise XOR) genommen
habe. Das darf man aber tatsächlich machen. Wichtig ist hier, dass das
erste Bit eine 1 ist. Als Rest bleibt schließlich eine 10!
Diese 10 wird nun an die zu übertragenden Nutzdaten angehängt =>
10101101 | 10
So... zur Übung kannst du jetzt 10101101 | 10 mal durch ds Generator
Polynom teilen. Wenn du alles richtig machst kommt als Rest 00. Das
heißt dann, das kein(e) Bit(s) unterwegs gekippt sind. Viel Spaß...
uiuiui da wird wird mein Kopf noch öfters rauchen :-) naja, werd ich schon noch checken... Gibt es für Bascom einen script wie man sowas auch ausrechnen lassen kann ? Wichtig ist für mich dieses 2-stellen HEX Format wie ich es oben schon erwähnt habe. M.f.G. Jürgen
Auf der Wikipedia Seite stehen einige Codebeispiele, evtl. helfen die weiter. Zum "zweitstelligen Hexformat": Normal denken und arbeiten alle Rechnersysteme binär, also nur mit 1 oder 0. Um Buchstaben binär zu codieren wird wie oben erwähnt meistens die ASCII Tabelle verwendet. Dein H,a,l,l,o wäre also ein: 01001000, 01100001, 01101100, 01101100, 01101111. Da binär nicht so kompakt zu schreiben ist, greift man auf die hexadezimale Schreibweise zurück. Hier gibt es 0-F (also 0,1,2,3,4,5,6,7,8,9, 10 (A), 11(B), 12 (C), 13 (D), 14 (E) und 15 (F)) als Symbol . Von binär nach hex (und umgekehrt) kann man einen einfachen Trick anwenden: Vier Binärstellen bilden immer eine Hexstelle. Also für das Hallo: 0100 1000, 0110 0001, 0110 1100, 0110 1100, 0110 1111 => 4 8 6 1 6 C 6 C 6 F => 48 61 6C 6C 6F Um deine Eingangsfrage voll zu beantworten: Man kann selbstverständlich für das ASCII/binärkodierte "Hallo" auch die CRC Prüfsumme berechnen. Ich habe den Rechner im vorherigen Post mit dem binären Hallo als Nutzdaten und dem Generatorpolynom vom Grad 16 aus dem vorherigen Post gefüttert. Das Nutzdatenwort war: 01001000, 01100001, 01101100, 01101100, 01101111 Nach der Division bleibt ein Rest von: 1010010001101001 Also: CRC Prüfsumme anhängen und nochmal in Hex hinschreiben: 0100,1000,0110,0001,0110,1100,0110,1100,0110,1111 | 1010,0100,0110,1001 48 61 6C 6C 6F | A4 69
hey super, jetzt bin ich um einiges schlauer. Vielen vielen dank für die ausführlich Erklärung (so das ich es auch verstehe). Jetzt muß ich nur doch die Sache mit der Prüfsumme "üben" Ich hab zu dem Thema noch was gefunden: http://www.goblack.de/desy/mc8051chip/ide8051/dos-ide/d51Tx_5.htm
1 | Bildung der Prüfsumme |
2 | Zur Bildung der Prüfsumme werden die uncodierten Bytes herangezogen. |
3 | Alle Bytes werden addiert, dann wird diese Summe von 0 abgezogen, |
4 | was bei mehren Bytes typischerweise eine grosse negative Zahl ergibt, |
5 | die ihrerseits mehrere Bytes füllt. Von dieser Zahl, bzw. ihren |
6 | Ablagebytes ist nur der Teil interessant, welcher sich in dem niedrigsten |
7 | Byte der Ablage befindet. Dieser Teil entspricht der gesuchten Prüfsumme. |
8 | |
9 | Beispiel: die 6 zu übertragenden Bytes mögen 8A | 4C | 39 | 56 | 9B | C3 |
10 | lauten. Dann ergibt sich die Prüfsumme aus der Rechnung ... |
11 | 0-( 8A+ 4C + 39 + 56 + 9B + C3) = 0- 8A - 4C - 39 - 56 - 9B - C2 = FD3C |
12 | |
13 | Ohne weitere Rechnung lässt sich die Prüfsumme als 3C ermitteln, denn FD3C |
14 | benötigt zwei Bytes in der Ablage und in dem niederwertigen Byte soll sich |
15 | die Prüfsumme befinden. Dies wäre dann 3C. |
16 | Die Moduloberechnung ergäbe das gleiche Ergebnis, denn die Restwertrechnung .. |
17 | FD3Ch mod 100h fragt nach dem Rest der Division von FD3Ch : 100h was |
18 | ebenfalls 3Ch ergibt. In FD3Ch ist 100h genau FDh mal enthalten, als Rest |
19 | bleibt 3Ch. |
was ist das dann ?
0fh wrote: > So... zur Übung kannst du jetzt 10101101 | 10 mal durch ds Generator > Polynom teilen. Wenn du alles richtig machst kommt als Rest 00. Das > heißt dann, das kein(e) Bit(s) unterwegs gekippt sind. Viel Spaß... Kannst du bitte die Formel zu Überprüfung der Daten genauer erklären? Ist es etwa 10101101 / (10 * Generatorpolynom)?
@Jürgen H. Ar(1) = 1 Ar(2) = 2 Ar(3) = 3 J = Crc8(ar(1) , 3) 'calculate value which is 216 W = Crc16(ar(1) , 3) '24881 L = Crc32(ar(1) , 3) '494976085
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.