Allgemeines zur Eingabe von
Polynomen
Liste der irreduziblen Polynome
Arbeiten mit mehreren Fenstern
Es soll ein Programm zur Unterstützung der Vorlesung „Codierungstheorie und Kryptographie“ bei Herrn Prof. Dr. Peter entwickelt werden. Das Programm soll die Möglichkeit bieten, Codes mit definierten Eigenschaften zu entwerfen und Codeworte anhand dieser Codes zu überprüfen und ggf. zu korrigieren.
Hamming-Code, Abramson-Code, Fire-Code, BCH-Code
1. Potenzreste für primitive, irreduzible Generatorpolynome ermitteln.
2. Erzeugen von Codes mit definierten Eigenschaften
2.1.
Hamming-Code
2.1.1. Generatorpolynom wird vorgegeben
2.1.2. Ermitteln der Codeeigenschaften (n,m,k)
2.2.
Abramson-Code
2.2.1. Konstruktion des Codes bei gegebenem G1(u)
2.2.2. Ermitteln der Codeeigenschaften
2.3.
Fire-Code
2.3.1. Konstruktion des Codes bei gegebenem G1(u) und wahlweise
2.3.1.1. K2 oder
2.3.1.2. b
2.3.2. Ermitteln der Codeeigenschaften
2.4.
BCH-Code
2.4.1. Konstruktion des Codes bei gegebenem G1(u) und e
2.4.2. Ermitteln der Codeeigenschaften
2.4.3. Beschränkung: Wurzel a=u
2.4.4. Bildung von G2(u), ..., Ge(u)
3. Für Hamming-, Abramson- und Fire-Code zusätzlich
3.1.1. Prüfschema erstellen
3.1.2. Prüfen, ob ein Codewort richtig ist
3.1.3. Ein falsches Codewort korrigieren, wahlweise per
3.1.3.1. Schieberegister oder
3.1.3.2. Prüfschema
Implementiert wird dieses Projekt in der Programmiersprache Delphi.
Dieses Programm wurde im Rahmen einer Studienarbeit im Studiengang Medizinische Informatik an der Fachhochschule Heilbronn / Universität Heidelberg zur Unterstützung der Vorlesung "Codierungstheorie und Kryptographie" entwickelt.
Das Programm bietet die Möglichkeit, Codes mit definierten Eigenschaften zu entwerfen und Codeworte anhand dieser Codes zu überprüfen und ggf. per Schieberegister oder per Prüfschema zu korrigieren.
Bei den meisten Fenstern erhält man durch Klick auf das rote Fragezeichen
eine Hilfestellung.
Polynome (z. B. u6 + u4 + u3 + u + 1) können im Programm auf verschiedene Arten eingegeben werden:
Dieses Programm muß nicht extra installiert werden. Es reicht aus, die Datei „CT.EXE“ durch Doppelklicken zu starten.
Nach Programmstart erscheint ein Informationsfenster. Dort einfach auf „OK“ klicken.
Das Hauptfenster erscheint:
Ganz oben ist das Menü zu sehen. Hier sind alle Aktionen erreichbar. Rechts sind 2 der vorhandenen à„Tools“ eingeblendet. Zum einen der à„Codewandler“, zum anderen eine à„Liste der irreduziblen Polynome“ bis u6.
Dieses Fenster berechnet die Codeeigenschaften eines eingegebenen Polynoms als Hamming-Code. Das Polynom muß primitiv sein. Die Eingabe kann sowohl in Polynom- als auch in Binärdarstellung erfolgen.
Berechnet werden: Grad k, Codewortlänge n, Kontrollstellen k und Nachrichtenstellen m.
Danach kann man mit diesen Parametern ein à„Schieberegister“ oder ein à„Prüfschema“ aufrufen, um Codeworte mit diesem Code zu untersuchen.
Dieses Fenster berechnet aus einem eingegebenen Polynom G1(u) das Generatorpolynom G(u) und seine Codeeigenschaften als Abramson - Code. Das Polynom muß primitiv sein. Die Eingabe kann sowohl in Polynom- als auch in Binärdarstellung erfolgen.
Berechnet werden: Generatorpolynom G(u) = G1(u) * (u+1), Codewortlänge n, Kontrollstellen k und Nachrichtenstellen m.
Danach kann man mit diesen Parametern ein à„Schieberegister“ oder ein à„Prüfschema“ aufrufen, um Codeworte mit diesem Code zu untersuchen.
Dieses Fenster berechnet die Codeeigenschaften eines eingegebenen Polynoms als Fire-Code (G(u) = G1(u) * (uk2 + 1))
Zusätzlich muß noch entweder k2 oder b (Fehlerbüschellänge, die noch korrigiert werden kann) eingegeben werden. Die jeweils fehlende Größe (k2 oder b) wird berechnet. G1(u) muß primitiv sein. Die Eingabe kann sowohl in Polynom- als auch in Binärdarstellung erfolgen.
Berechnet werden: Generatorpolynom G(u), k2 oder b, Codewortlänge n, Kontrollstellen k und Nachrichtenstellen m.
Danach kann man mit diesen Parametern ein à„Schieberegister“ oder ein à„Prüfschema“ aufrufen, um Codeworte mit diesem Code zu untersuchen.
Dieses Fenster berechnet die Generatorpolynome für BCH-Codes. Man muß das Generatorpolynom G1(u) (für e = 1) eingeben und die maximal gewünschte Fehlerzahl e, die noch korrigierbar sein soll. Die Wurzel ist mit a = u fest vorgegeben.
Nach Klick auf „Codeeigenschaften berechnen" werden alle Teilpolynome von G1(u) bis Ge(u) angezeigt und danach die Generatorpolyome für alle e. Zusätzlich wird jeweils die Anzahl der Kontrollstellen k und Nachrichtenstellen m angezeigt. Bleiben im Codewort keine Nachrichtenstellen mehr über (weil die Kontrollstellen die Codewortlänge übersteigen), so bricht der Berechnungsalgorithmus ab.
Der Codewandler kann Codes von Polynom- in Binärdarstellung und umgekehrt umwandeln. Er erscheint bei Programmstart automatisch rechts oben.
Dies ist eine Liste der irreduziblen Polynome bis u6 in Binärdarstellung. Außerdem wird bei den einzelnen Polynomen angegeben, ob sie primitiv sind oder nicht.
Diese Liste ist hilfreich, da man primitive, irreduzible Polynome bei der Eingabe von Generatorpolynomen braucht. Sie erscheint bei Programmstart automatisch am rechten Bildschirmrand.
In diesem Fenster können Sie Sich die Potenzreste zu einem Generatorpolynom anzeigen lassen.
Die Eingabe kann sowohl in Polynom- als auch in Binärdarstellung erfolgen. Das Programm zeigt Ihnen ebenfalls, ob das eingegebene Polynom primitiv ist.
Das lineare, rückgekoppelte Schieberegister kann man auf zwei Wegen erreichen:
Beim Schieberegister müssen Sie zuerst ein Codewort oben eingeben und dann das Schieberegister mit dem entsprechenden Button initialisieren. Ohne Eingabe liegt am Codeworteingang immer eine 0 an.
Mit den Buttons „ein Schritt vor" und „ein Schritt zurück" können Sie jeweils einen Takt vor bzw. zurück takten. „n-mal takten" taktet das Schieberegister entsprechend der Codewortlänge n. „Endergebnis" schließlich taktet das Schieberegister solange bis eine Analyse vorliegt.
Dabei können folgende Ergebnisse erreicht werden:
- Das Codewort ist korrekt.
- Das Codewort ist fehlerhaft, kann aber nicht korrigiert werden.
- Das Codewort ist fehlerhaft und korrigierbar. Die fehlerhaften Stellen sowie das korrigierte Codewort werden angezeigt.
Das Prüfschema kann man auf zwei Wegen erreichen:
Oben sehen Sie das Prüfschema zu Ihrem eingegebenen Generatorpolynom. Geben Sie jetzt bitte ein Codewort ein und klicken dann auf „1. Fehlersyndrom berechnen".
Wenn es sich um ein fehlerhaftes Codewort handelt, erscheint das bei der Division berechnete Fehlersyndrom rechts und Sie können es im Prüfschema suchen lassen (durch Anklicken von „2. in Prüfschema suchen").
Wird es gefunden, so werden die Fundstellen angezeigt und das eingegebene Codewort an den entsprechenden Stellen korrigiert.
Dieses Programm kann im Prüfschema nur mit Büschellängen bis b = 3 arbeiten!
Man kann alle Fenster mehrfach aufrufen (hier z. B. das Fenster zur Berechnung der Potenzreste) und auch mit verschiedenen Fenstern gleichzeitig arbeiten, wie oben zu sehen.
Fenster lassen sich auch außerhalb des Arbeitsbereichs verschieben. Es erscheinen dann horizontale und vertikale Bildlaufleisten.
Kai Lemke oder Kai Lemke
Lerchenstr. 7 Sollbrüggenstr. 84
74072 Heilbronn 47800 Krefeld
Tel: 07131 / 993489 Tel: 02151 / 593093
kalemke@stud.fh-heilbronn.de kai.lemke@gmx.de