Berechnung CRC mit XORs

Gast #4262449
Lesenswert?

Hallo
eine CRC Berechnung(nach der Standardpolynomdivision) lässt sich ja in 
ein Schieberegister und XOR's an den entsprechenden Stellen nachstellen.

Bin ich richtig in der Annahme(ich habs jetzt 3mal auf Papier 
durchgerechnet) das man die Zwischenwerte der Polynomdivision mit dieser 
Lösung NICHT rausbekommt(also z.B. den 2ten Berechnungsschritt)?

mit Standardpolynomdivision meine ich den Weg, bei dem man ans Ende der 
Daten noch soviele 0en hängt wie der Grad des Generatorpolynoms siehe 
http://www.flechtmann.net/crc/index.php

Danke für die Info
Gast #4262461
Lesenswert?

Naja ich würde gerne die Zwischenwerte der Polynomdivision irgendwann im 
Register stehen haben.
Z.B.
Genpolynom : 1101 = x³ + x² + 1
Daten: 1010

Polynomdivision

1010 0000 : 1101 = 1101
1101
----
 111 0
 110 1
 --- -
 011 0 <- Diesen Wert würde ich gerne in meinem Register stehen haben
 ....
 -----
      001 <- Berechneter CRC

Das Register ist ein ein normales Schieberegister mit XOR.
In dem Register steht aber dieser Zwischenwert niemals drin(zumindest 
nicht eindeutig bestimmbar), wenn ich mich nicht täusche?!
Angehängte Dateien:
#4262467
Lesenswert?

udir schrieb:
> In dem Register steht aber dieser Zwischenwert niemals drin(zumindest
> nicht eindeutig bestimmbar)

Sicher, wenn Du den Abbruch machst, nachdem im entsprechenden Schritt 
der Shift und das "herunterholen" schon durchgeführt wurde, der nächste 
XOR mit dem Generatorpolynom noch nicht. Eine Möglichkeit, Deinen CRC an 
der passenden Stelle abzubrechen mußt Du so oder so selbst 
implementieren - normalerweise interessieren die Zwischenergebnisse 
niemand, weswegen sie aus Effizienzgründen ständig überschrieben werden.

Was ist der Zweck der ganzen Übung?

Edit: Es dämmert.... Du willst Die Zwischenergebnisse aus einer 
Hardwareschaltung herausbekommen?
#4262473
Lesenswert?

udir schrieb:
> Das Register ist ein ein normales Schieberegister mit XOR.
> In dem Register steht aber dieser Zwischenwert niemals drin(zumindest
> nicht eindeutig bestimmbar), wenn ich mich nicht täusche?!

???
Warum sollte das nicht so sein?
Anders wäre doch das Endergebnis gar nicht zu berechnen.
Wenn du dich für den Registerinhalt während eines Zwischenschrittes der 
Berechnung interessierst, musst du den Registerinhalt eben zum richtigen 
Zeitpunkt in ein 2. Register kopieren. Da bleibt der Wert dann bis zum 
Ende der Berechnung erhalten.
Gast #4262478
Lesenswert?

Walter T. schrieb:
> udir schrieb:
>> In dem Register steht aber dieser Zwischenwert niemals drin(zumindest
>> nicht eindeutig bestimmbar)
>
> Sicher, wenn Du den Abbruch machst, nachdem im entsprechenden Schritt
> der Shift und das "herunterholen" schon durchgeführt wurde, der nächste
> XOR mit dem Generatorpolynom noch nicht. Eine Möglichkeit, Deinen CRC an
> der passenden Stelle abzubrechen mußt Du so oder so selbst
> implementieren - normalerweise interessieren die Zwischenergebnisse
> niemand, weswegen sie aus Effizienzgründen ständig überschrieben werden.
>
> Was ist der Zweck der ganzen Übung?
>
> Edit: Es dämmert.... Du willst Die Zwischenergebnisse aus einer
> Hardwareschaltung herausbekommen?

Ja, ich dachte ich habs irgendwie verständlich erklärt...
#4262479
Lesenswert?

Edit: Es dämmert.... Du willst Die Zwischenergebnisse aus einer 
Hardwareschaltung herausbekommen? Dein "Register" ist das 
Schieberegister, aus denen die Daten herausgetaktet werden?

Da in der Hardwareschaltung ohnehin immer nur 1 Bit pro Schritt ist, 
mußt Du, um die bitseriellen Daten wieder parallel herzustellen, einen 
parallelen Zwischenspeicher hinzufügen.

Und Deine Schaltung entspricht eben auch nicht der "komplett"-Division, 
sonderm dem Aufteilen Deiner Division in Einzelstellendivisionen.
Gast #4262501
Lesenswert?

Walter T. schrieb:
> udir schrieb:
>> Hmmm... genau da hackts. Ich komm einfach nicht drauf, wie ich das
>> umsetzen kann...
>
> Ich glaub es hackt...
>
> ...damit bleibt die ursprüngliche Frage:
>
> Walter T. schrieb:
>> Was ist der Zweck der ganzen Übung?

Ich hab ja nicht gefordert das mir bei der Umsetzung jemand hilft...

Sinn der Übung: Ich will die Zwischenschritte der Polynomdivision haben. 
Ob und inwieweit das Sinn macht bleibt meine Sache
Gast #4262514
Lesenswert?

Joe F. schrieb:
> udir schrieb:
>> Ich komm einfach nicht drauf, wie ich das
>> umsetzen kann...
>
> In was denn?
> Auf dem Papier?
> In C?
> In Verilog/VHDL?
> In CMOS?

Papier zuerst, aber es soll in VHDL umgesetzt werden(sprich auf Papier 
nach den Regeln, wie es effizient(d.h. mit Shiftregistern und XORs) 
umgesetzt werden kann)

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