CRC < Technische Inform. < Praktische Inform. < Hochschule < Informatik < Vorhilfe
|
Ich habe diese Frage auch im folgenden fremden Forum gestellt:
Hallo nochmal,
Ich habe versucht die CRC Prüfsumme für das Datenwort 10011000 mit
dem Generatorpolynom 1011 rauszukriegen:
[Dateianhang nicht öffentlich]
Aber leider kriege ich nicht den gleichen Rest raus wie
bei der Division nach der Schulmethode. Da kriege ich
nämlich 100 raus.
Wie ihr seht, habe ich das Ganze bei Takt 6 abgebrochen,
da die Schaltung bei Takt 7 und Takt 8 ihren Zustand
nicht mehr verändert.
Weiß vielleicht jemand von euch, wo im obigen Ablauf
der Fehler steckt?
Vielen Dank nochmal!
Viele Grüße
Karl
Dateianhänge: Anhang Nr. 1 (Typ: gif) [nicht öffentlich]
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 12:32 Mo 09.08.2004 | Autor: | Karl_Pech |
Hi,
Ich habe es gerade noch einmal versucht. Es hat aber trotzdem nicht geklappt.
Als CRC-Prüfsumme kriege ich nun 101 statt 100 raus.
Ich hab' die Schaltung ein wenig verkürzt und gehe folgendermaßen
vor:
1.) letzte (vorderste) Zelle auf den Wert der vorletzten setzen
2.) Wert der vorletzten Zelle = Wert der Vordersten XOR Wert der Ersten
3.) Wert der ersten Zelle = Wert der Letzten XOR Eingabebit
4.) Gehe zu 1 bis alle Bits des Datenwortes eingelesen worden sind.
Hier ist mein Versuch:
[Dateianhang nicht öffentlich]
Vielen Dank für eure Mühe!
Viele Grüße
Karl
[P.S. Das Datenwort ist natürlich 10011. Ich muß aber
000 anhängen, nicht wahr? ]
Dateianhänge: Anhang Nr. 1 (Typ: gif) [nicht öffentlich]
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 17:56 Do 12.08.2004 | Autor: | Karl_Pech |
Tja, wollte euch nur mitteilen, daß mich dieses Thema (CRC) und
Hamming-Code immer noch interessieren, obwohl es jetzt natürlich
nicht mehr dringend ist.
Vielen Dank!
|
|
|
|
|
Hi Karl,
Wie es mir scheint, sind da mehrere Fehler drin.
Erstens:
Das Generatorpolynom Deiner ersten Schaltung lautet:
[mm] $(11011)_2 \hat{=} x^4+x^3+x+1$
[/mm]
Zweitens:
Deine Nachricht lautete ja
[mm] $(10011000)_2$
[/mm]
Dadurch, dass Dein Generatorpolynom fünf Stellen hat, mußt Du vier Nullen an Deine Nachricht anhängen, bevor Du die Rechnungen durchführst.
Also ergibt sich die folgende Ausgangssituation:
[mm] $($10011000[green]0000[/green]$)_2$
[/mm]
Demnach kann Dein Rest niemals drei Stellen haben!
Darüberhinaus brauchst Du nur stur nach der XOR-Logik arbeiten, sofern beide Zeichenketten gleichlang sind.
Z.B.:
Wird $10011$ mit $10011$ zu $00000$
Wird $11001$ mit $10011$ zu $01010$
ABER:
$00111$ mit $10011$ bleibt speziell in diesem Fall $00111$ (Weil dieser Nachrichtenabschnitt zwei Stellen kleiner ist als das Generatorpolynom und somit nicht "reinpasst"!)
Dann rechne ich mal beide Polynome und gebe Dir eine neue Testaufgabe, damit Du es einüben kannst (wenn Du willst):
Nachricht: [mm] $(10011000)_2$; [/mm] Generatorpolynom: [mm] $(10011)_2$
[/mm]
$100110000000$
[mm] $\underline{10011}$
[/mm]
$00000$
$000000$
[mm] $\underline{10011}\qquad(Diese\ [/mm] und\ die\ nachfolgende\ Zeile\ sollten\ eigentlich\ eine\ Stelle\ nach\ rechts\ gerueckt\ werden...)$
[mm] $\underline{\underline{00000}}$ [/mm] An dieser Stelle sieht man bereits, dass der Rest gleich null sein wird! Normalerweise schiebt die Hardware alle Stellen nach, was aber in diesem Fall nichts am Ergebnis ändert.
Die übertragene Nachricht lautet Also (blau = "ursprüngliche Nachricht" und grün = "Rest"):
[mm] $($[blue]10011000[/blue][green]0000[/green]$)_2$
[/mm]
Jetzt kommen wir zum nächsten Polynom:
Nachricht: [mm] $(10011000)_2$; [/mm] Generatorpolynom: [mm] $(11011)_2$
[/mm]
Ausgangssituation:
$100110000000$
[mm] $\underline{11011}$
[/mm]
$01000$
$[...]$
Da beim Vorrechnen die Übersichtlichkeit leiden würde, schreibe ich nur das Ergebnis hin:
Rest: [mm] $(1011)_2$
[/mm]
Die übertragene Nachricht lautet also:
[mm] $($[blue]10011000[/blue][green]1011[/green]$)_2$
[/mm]
Meine Aufgabe für den Fall, dass Du noch üben möchtest:
Nachricht: [mm] $(1010001101)_2$; [/mm] Generatorpolynom: [mm] $x^5+x^4+x^2+1$
[/mm]
Wenn Du noch Fragen haben solltest, dann stelle diese bitte hier.
Natürlich kannst Du Dir auch selbst eine Aufgabe stellen, die ich nachrechnen würde.
Viele Grüße
Veandune
|
|
|
|
|
Hallo Veandune,
Danke für deine Antwort. Aber ich habe im Grunde versucht folgende
Rechnung durch die XOR-Schaltung zu realisieren:
[Dateianhang nicht öffentlich]
Und die Schaltung habe ich deshalb folgendermaßen aufgebaut:
[Dateianhang nicht öffentlich]
Und deshalb bestand auch der Rest aus 3 Bits. Und trotzdem
funktionierte es nicht mit der Schaltung, wie du ja an meinen Versuchen
sehen konntest. Was könnte ich da nur falsch gemacht haben?
Trotzdem vielen Dank für dein Interesse!
Viele Grüße
Karl
Dateianhänge: Anhang Nr. 1 (Typ: gif) [nicht öffentlich] Anhang Nr. 2 (Typ: gif) [nicht öffentlich]
|
|
|
|
|
Hi Karl,
zufälligerweise habe ich letztes Semester auch zwangsweise eine Einführung in CRC erhalten, weshalb ich ziemlich sicher sagen kann, dass entweder Deine Schaltung (in Bezug auf Dein Generatorpolynom):
[Dateianhang nicht öffentlich]
oder die Erklärung meines Professors falsch ist.
Denn ich habe gelernt, dass man diese Schaltung mit einem zusätzlichen Bit vorneweg beschreiben muß, demnach also diese Schaltung ein fünfstelliges und kein vierstelliges Generatorpolynom darstellt.
Deshalb lautet das zugrundeliegende Generatorpolynom Deiner Schaltung nach meinen Informationen nicht [mm] $(1011)_2$ [/mm] sondern [mm] $(11011)_2$!
[/mm]
Nach meiner Vorlesung zu urteilen, müßte Deine Schaltung wie folgt aussehen, um das Generatorpolynom [mm] $(1011)_2$ [/mm] zu erzeugen:
-[]-[]-(+)-[]-(+)<-- Bitstream
| ^ ^
| | |
----------------
Eben auch weil meine Skizze drei Bits (dargestellt als "[]") für das spätere "Ablesen" zeigt, kann man davon ausgehen, dass das Generatorpolynom bei meiner Skizze vierstellig ist und demnach die Informationen meiner Vorlesung korrekt sind und folglich die Schaltung für Dein Generatorpolynom falsch umgesetzt wurde.
Vielleicht hilft Dir das weiter. Ansonsten stelle bitte weiterhin Fragen, denn nur so kann Dir auch geholfen werden.
Solltest Du bei meiner Skizze den Fehler finden, dann informiere mich bitte auch darüber.
Bis bald
Vean
|
|
|
|
|
Hallo Veandune,
Tut mir Leid, aber ich habe irgendwie die "alte Version der Schaltung hochgeladen", obwohl ich schon eine neuere Version gemacht habe.
Jedenfalls kannst du alle Bilder außer diesem hier:
[Dateianhang nicht öffentlich]
ignorieren. Das scheint bisher mein "bester" Versuch bei der Kodierung von 10011 mit dem Generatorpolynom 1011 gewesen zu sein. Jedenfalls scheint die Schaltung dort auch deiner ASCII-Schaltung zu entsprechen. Ich habe beim oberen Bild jeden Takt, den ich dort gemacht habe, durchnummeriert. Vielleicht könntest du mir sagen, bei welchem Takt bei mir etwas schief läuft?
Danke für deine Hilfe und Geduld!
Viele Grüße
Karl
Dateianhänge: Anhang Nr. 1 (Typ: gif) [nicht öffentlich]
|
|
|
|
|
Hi Karl,
> Jedenfalls scheint die Schaltung dort auch deiner
> ASCII-Schaltung zu entsprechen. Ich habe beim oberen
> Bild jeden Takt, den ich dort gemacht habe,
> durchnummeriert. Vielleicht könntest du mir
> sagen, bei welchem Takt bei mir etwas schief läuft?
Ja, Du hast recht: das ist die Schaltung, die ich mit meiner ASCII-Skizze gemeint habe!
Wenn Du aber nur mit dem Schaltplan arbeitest, wirst Du sehr schnell den Durchblick verlieren und dann zu falschen Ergebnissen kommen.
Deshalb nummeriere ich die drei Bits von rechts nach links mit [mm] $c_0$, $c_1$ [/mm] und [mm] $c_2$ [/mm] und lege folgende Zuordnung (gemäß der Schaltung) fest:
[mm]
\begin{tabular}{|l|c|c|c|}\hline
\text{Takt} & c_2 & c_1 & c_0\\\hline\hline
i & c_{20} & c_{10} & c_{00}\\\hline
i+1 & c_{21}:=c_{10} & c_{11}:=(c_{20}\oplus c_{00}) & c_{01}:= (c_{20}\oplus\text{Input-Bit}_0)\\\hline
i+2 & c_{22}:=c_{11}(=(c_{20}\oplus c_{00})) & c_{12}:=(c_{21}\oplus c_{01})(=((c_{10})\oplus(c_{20}\oplus\text{Input-Bit}_0))) & c_{02} := (c_{21}\oplus\text{Input-Bit}_1)\\\hline
i+3 & ... & ... & ...\\\hline
... & & & \\\hline
\end{tabular}
[/mm]
Das sieht jetzt sehr verwirrend aus, aber wenn Du diese Tabelle einfach mal durchgehst wirst Du entdecken, dass die Indizes bei dem "Input-Bit" und die Zweitindizes der $c$'s nur den Takt symbolisieren, aus dem sie stammen.
Hierbei ist dem Takt $i$ die $0$, dem Takt $i+1$ die $1$ und dem Takt $i+2$ die $2$ zugeordnet.
Wenn Du diese Tabelle nicht verstehst, dann lasse sie einfach links liegen und beachte sie nicht weiter, denn so wichtig ist diese Zusammenstellung nun wieder auch nicht!
Dafür ist aber die nun folgende Tabelle zur Problemlösung relativ wichtig zu nehmen. Die oben genannte Tabelle dient lediglich zum einfacheren Ausfüllen der nun folgenden Tabelle.
Durch die oben aufgestellten "Regeln" lassen sich nämlich die Takte in der kommenden Tabelle nun vereinfacht herleiten und führen zu folgender Auflistung:
[mm]
\begin{tabular}{|r||c|c|c|c||c|c|}\hline
\text{Takt} & \text{Input-Bit} & c_2 & c_1 & c_0 & c_2\oplus c_0 & c_2\oplus\text{Input-Bit}\\\hline\hline
0 & 1 & 0 & 0 & 0 & 0 & 1 \\\hline
1 & 0 & 0 & 0 & 1 & 1 & 0 \\\hline
2 & 0 & 0 & 1 & 0 & 0 & 0 \\\hline
3 & 1 & 1 & 0 & 0 & 1 & 0 \\\hline
4 & 1 & 0 & 1 & 0 & 0 & 1 \\\hline
5 & 0 & 1 & 0 & 1 & 0 & 1 \\\hline
6 & 0 & 0 & 0 & 1 & 1 & 0 \\\hline
7 & 0 & 0 & 1 & 0 & 0 & 0 \\\hline
8 & - & 1 & 0 & 0 & & \\\hline
\end{tabular}
[/mm]
Den Takt 0 nennt man hierbei auch "Initialisierung"! Wichtig hierbei ist, dass nach dem vollständigen "einshiften" der Bitfolge quasi noch ein Takt für die "Stabilisierung" benötigt wird.
Demnach kann das endgültige Ergebnis hier erst in Takt 8 abgelesen werden.
> Danke für deine Hilfe und Geduld!
Kaum der Rede wert!
Durch Deine Fragen werde ich wohl in Zukunft das CRC-Verfahren nicht mehr explizit wiederholen müssen.
Viele Grüße
Vean
EDIT:
Da bei Dir die Initialisierung mit "Takt 1" benannt wurde, solltest Du darauf achten, dass z.B. mein "Takt 0" Deinem "Takt 1" entspricht.
D.h. beim Vergleichen der Ergebnisse, hast Du ab meinem "Takt 3" (also Deinem "Takt 4") den Fehler gemacht.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 16:04 Mo 23.08.2004 | Autor: | Karl_Pech |
Hallo Veandune,
Vielen Dank nochmal für deine ausführliche Hilfe!
Noch etwas: Wie soll ich am Besten mit den Bildern dieser Diskussion verfahren? Wenn ich sie jetzt gleich lösche, verliert der Thread an Aussagekraft.
Viele Grüße
Karl
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 16:12 Mo 23.08.2004 | Autor: | Marc |
Hallo Karl,
Find ich gut, dass du daran denkst
Lade die Bilder doch (bitte) auf die Vorhilfe hoch, und zwar so:
1. Klicke bei deinen Artikeln auf "Dateianhänge verwalten und hochladen"
2. Lade die Bilder hoch
2. Editiere deine Beiträge, und füge an Stelle der Bild-Urls ein [ img]1[/img], [ img]2[/img] (ohne Leerzeichen) etc.
Viele Grüße,
Marc
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 16:35 Mo 23.08.2004 | Autor: | Veandune |
Hi Karl,
> Vielen Dank nochmal für deine ausführliche Hilfe!! ;)
Gern geschehen. Hauptsache ist, dass es Dir auch etwas gebracht hat und Du jetzt das verstehst, was Du wissen wolltest.
Falls Du noch weitere Fragen haben solltest, dann immer her damit!
Viele Grüße
Vean
P.S.: Wow, marc! Das nenne ich eine prompte Antwort. Ich hätte diese Fragen an Dich weitergeleitet, aber Du warst da (wiedermal) schneller. Da kann ich nur sagen: Top!
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 11:18 Fr 27.08.2004 | Autor: | Karl_Pech |
Hallo Zusammen,
Ich habe meine Artikel jetzt verändert und die Bilder auf eurem Server abgelegt. Vean, wenn du willst, kannst du deine Beiträge jetzt auch entsprechend anpassen.
Grüße
Karl
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 23:07 So 07.11.2004 | Autor: | Veandune |
Mir ist leider jede Menge dazwischengekommen, deshalb passe ich meine Artikel so spät an. Entschuldigt bitte diese Verspätung.
Leider schaffe ich es nicht, Karls Bilder bei mir einzubauen.
Kann mir vielleicht irgendjemand verraten, was ich falsch mache?
Ich kann die Bilder nicht mit den Befehlen (img), (url=1) oder (img) 1 (/img) verlinken (natürlich eckige Klammern bei den Befehlen).
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 00:44 Mo 08.11.2004 | Autor: | Marc |
Hallo Veandune,
> Leider schaffe ich es nicht, Karls Bilder bei mir
> einzubauen.
> Kann mir vielleicht irgendjemand verraten, was ich falsch
> mache?
>
> Ich kann die Bilder nicht mit den Befehlen (img), (url=1)
> oder (img) 1 (/img) verlinken (natürlich eckige Klammern
> bei den Befehlen).
Du willst also ein Bild, das an einen von Karls Artikeln angefügt ist, in deinem eigenen Artikel einbauen?
Schaue dir dazu am einfachsten den Quelltext des entsprechenden Artikels an, dort erscheint das für dieses Bild einzufügende "Tag".
(Es enthält u.a. die Information, in welchem Artikel sich das Bild befindet).
Falls das gar nicht deine Frage war -- schlag' mich.
Viele Grüße,
Marc
|
|
|
|