Anwendungshandbuch â Rechnen mit ... - Hochschule Trier
Anwendungshandbuch â Rechnen mit ... - Hochschule Trier
Anwendungshandbuch â Rechnen mit ... - Hochschule Trier
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
1<br />
<strong>Anwendungshandbuch</strong> – <strong>Rechnen</strong> <strong>mit</strong> Schieberegisterfolgen<br />
1 Programmbeschreibung<br />
In diesem Teil der Arbeit wird nun der Funktionsumfang des Programmes beschrieben. Es wird<br />
erklärt, wo Funktionen zu finden sind, wie diese benutzt werden können und wie die ausgegebenen<br />
Ergebnisse zustande kommen.<br />
Abbildung 4.1.1 zeigt die grafische Benutzeroberfläche des Programms, wie sie sich direkt nach<br />
Programmstart darstellt. Aus dieser Ansicht heraus können alle Funktionen genutzt und alle<br />
Ergebnisse entnommen werden.<br />
Abbildung 1.1: Startbildschirm des Programms – <strong>Rechnen</strong> <strong>mit</strong> Schieberegisterfolgen<br />
Im linken Abschnitt der Ansicht befinden sich die Anzeige und die Kontrollen für Schieberegister,<br />
Schieberegisterfolgen und deren Statistiken. Der obere Teil dient der Ansicht und Änderung von<br />
linearen Schieberegistern. Direkt darunter wird eine Schieberegisterfolge und deren Kontrollen<br />
dargestellt. Diese beiden Elemente dienen der manuellen Eingabe von Schieberegistern und<br />
Schieberegisterfolgen. Außerdem können hier Folgen aus Schieberegistern und Schieberegister aus<br />
Folgen erzeugt werden, diese können weiter verändert und zwischengespeichert werden. In den<br />
Registern im unteren Teil befinden sich Statistiken und Informationen zu den Schieberegistern und<br />
Folgen, auch hier gibt es noch vereinzelte Möglichkeiten Schieberegister und Folgen zu erzeugen.<br />
Im rechten Abschnitt der Ansicht befindet sich ein Zwischenspeicher für Schieberegister und<br />
Folgen, dazu später mehr.
2<br />
Schieberegister<br />
In diesem Teil wird das Schieberegister dargestellt, <strong>mit</strong> dem aktuell gearbeitet werden kann. Dieser<br />
Teil besteht aus zwei Komponenten, der Anzeige für die grafische Darstellung und den<br />
Kontrollbuttons für das Schieberegister.<br />
Abbildung 1.2: Anzeige und Kontrolle eines Schieberegisters<br />
Die Anzeige dient sowohl der Darstellung eines Schieberegisters <strong>mit</strong> seiner Rückkopplungsfunktion<br />
und dem aktuellen Zustand seiner Speicherzellen, als auch der Manipulation der<br />
Rückkopplungskoeffizienten und Speicherzellen. In Abbildung 4.1.2 ist ein Schieberegister der<br />
Länge 2 dargestellt, dessen Speicherzellen den Nullzustand annehmen und die<br />
Rückkopplungskoeffizienten haben die Werte c 0 = 1 und c 1 = 0. Das Rückkopplungspolynom des<br />
Schieberegisters ist in diesem Fall also f(X) = X 2 + 1. Bei Linksklick auf eine Speicherzelle wird<br />
das Bit, das deren Zustand repräsentiert gekippt. Ebenso kann durch Linksklick auf den Bereich<br />
unterhalb einer Speicherzelle der entsprechende Rückkopplungskoeffizient geändert werden.<br />
Weitere Funktionen werden über die Buttons gesteuert.<br />
• Folge erzeugen:<br />
Das oben dargestellte Schieberegister erzeugt eine neue Folge, die aus der Vorperiode und<br />
der ersten Periode besteht. Ist die erste Periode vollständig erzeugt, bricht die Folge ab. Die<br />
erzeugt Folge wird direkt im darunter liegenden Teil „Folge“ dargestellt. Dieser neuen Folge<br />
wird das aktuelle Schieberegister zugeordnet und es wird für die Berechnung der Statistiken<br />
benutzt. Die lineare Komplexität und die Schrittweise Ausführung des Berlekamp-Massey<br />
Algorithmus kann daher noch nicht angezeigt werden. Um sich diese anzeigen zu lassen,<br />
muss erst ein neues minimales Schieberegister für die Folge berechnet werden.<br />
• Neu:<br />
Es wird ein neues Schieberegister <strong>mit</strong> Rückkopplungspolynom f(X) = X und Nullzustand<br />
erzeugt. Das vorherige Schieberegister wird dabei ohne Rückfrage gelöscht, wenn es nicht<br />
vorher gespeichert wurde.<br />
• Länge inc.:<br />
Die Länge des Schieberegisters wird ums Eins erhöht, dabei wird eine weitere Speicherzelle<br />
<strong>mit</strong> Inhalt Null hinten an das vorhandene Schieberegister angehängt. Das zugehörige<br />
Rückkopplungspolynom wird im Grad um Eins erhöht, es wird jedoch nur der größte<br />
Koeffizient geändert, alle anderen bleiben unverändert. Das oben angezeigte Polynom<br />
f(X) = X 2 + 1 würde also zu f(X) = X 3 + 1 geändert werden. Für das Verlängern besteht<br />
allerdings eine Obergrenze, mehr als 20 Speicherzellen sind nicht möglich.
3<br />
• Länge dec.:<br />
Entsprechend der Funktion „Länge inc.“ wird hier das Schieberegister um Eins gekürzt, es<br />
ist die Umkehrfunktion.<br />
• Vorperiode entf.:<br />
Mit Hilfe diese Buttons kann die Vorperiode, also der nicht rückgekoppelte Anteil eines<br />
Schieberegisters entfernt werden. Dies entspricht der Division des Rückkopplungspolynoms<br />
durch X l , wobei l die Länge der Vorperiode ist. Der Zustand des rückgekoppelten Anteils<br />
des Schieberegisters bleibt dabei unverändert.<br />
• In Zwischenablage:<br />
Das Schieberegister wird in den Zwischenspeicher kopiert, dort wird der aktuelle Zustand<br />
zwar nicht angezeigt, er bleibt aber dennoch erhalten.<br />
• Speichern:<br />
Das Schieberegister kann auch in einer Datei gespeichert werden. Die Datei erhält dabei<br />
immer automatisch die Endung lfsr.<br />
• Laden:<br />
Es ist natürlich auch möglich ein vorher gespeichertes Schieberegister aus einer Datei zu<br />
Laden. Hierbei muss die Datei die Endung lfsr haben, sonst wird eine Fehlermeldung<br />
ausgegeben. Das aktuelle Schieberegister wird hierbei ohne Rückfrage überschrieben.
4<br />
Folge<br />
In diesem Teil wird die Schieberegisterfolge dargestellt, <strong>mit</strong> der gearbeitet werden kann. Auch<br />
dieser Teil besteht aus den beiden Komponenten Ansicht und Kontrolle.<br />
Abbildung 1.3: Anzeige und Kontrolle einer Schieberegisterfolge<br />
Die Ansicht dient sowohl der Darstellung der Folge als auch deren Manipulation. Es werden<br />
maximal die 31 ersten Folgenglieder dargestellt, diese sind farblich gekennzeichnet. Die Bits einer<br />
gegebenenfalls auftretende Vorperiode sind blau, die Bits der ersten Periode schwarz und Bits<br />
weiterer Perioden rot gekennzeichnet. Sollte die dargestellte Folge mehr als 31 Bits enthalten wird<br />
dies durch drei Punkte am Ende bekanntgemacht. Jedes Folgenglied kann durch Linksklick auf das<br />
entsprechende Bit gekippt werden, dabei werden Die Vorperiodenlänge und die Periodenlänge<br />
sofort aktualisiert und entsprechend dargestellt.<br />
Weitere Funktionen werden über die Buttons gesteuert.<br />
• SR erzeugen:<br />
Aus der aktuellen Folge wird durch den Berlekamp-Massey Algorithmus das minimale<br />
Schieberegister berechnet, das diese Folge erzeugt. Das Schieberegister wird anschließend<br />
im Teil „Schieberegister“ angezeigt.<br />
• Neu:<br />
Die aktuelle Folge wird gelöscht und durch die Nullfolge ersetzt. Dies geschieht ohne<br />
Rückfrage, die aktuelle Folge sollte also vorher gespeichert werden.<br />
• Länge inc.:<br />
An die Folge wird ein weiteres Nullbit angehängt und die Länge wird um Eins erhöht. Sollte<br />
die angezeigte Folge länger als 31 sein ist dies nicht sichtbar, wird aber dennoch gemacht.<br />
• Länge dec.:<br />
Das letzte Bit der Folge wird gelöscht und die Länge wird um Eins verringert. Analog zu<br />
„Länge inc.“ wird auch diese Aktion bei langen Folgen durchgeführt, ist aber nicht sichtbar.<br />
• Periode ber.:<br />
Diese Funktion bewirkt, dass von der Folge sowohl die Vorperiode, als auch alle Perioden<br />
ab der zweiten abgeschnitten werden. Es bleibt also nur die erste Periode stehen.<br />
• Vorperiode entf.:<br />
Anders als bei „Periode ber.“ werden hier gegebenenfalls auftretende Perioden nach der<br />
ersten nicht entfernt, sondern es wird ausschließlich die Vorperiode gelöscht. Bei beiden<br />
Funktionen wird die Folgenlänge entsprechen angepasst.
5<br />
• F. ist Periode:<br />
Die Periodenlängen einer Folge werden immer abhängig vom minimalen erzeugenden<br />
Schieberegister berechnet. Dadurch kann eine angezeigte Folge, als Folge bestehend aus<br />
Vorperiode und mehreren Perioden betrachtet werden, obwohl dies evtl. vom Benutzer nicht<br />
so beabsichtigt ist. Mit dieser Funktion kann festgelegt werden, dass alle bekannten<br />
Folgenglieder als erste Periode der Folge betrachtet werden. Ist dies der Fall, wird es Rechts<br />
unten durch den Satz „Die Folgenglieder stellen eine vollständige Periode dar.“ angezeigt.<br />
Nun kann für die Folge ein Schieberegister berechnet werden, dass periodisch nur diese<br />
Sequenz von Folgenglieder erzeugt.<br />
• In Zwischenablage:<br />
Die aktuelle Folge wird in den Zwischenspeicher kopiert. Die hier gespeicherten Folgen<br />
können für die weiter unten beschriebene Kombination von Folgen genutzt werden.<br />
• Speichern:<br />
Die Folge wird in einer Datei gespeichert. Die Dateiendung wird hierbei immer automatisch<br />
auf seq gesetzt.<br />
• Laden:<br />
Gespeicherte Folgen können auch wieder aus einer Datei gelesen werden. Die aktuell<br />
angezeigte Folge wird dabei ohne Rückfrage überschrieben.<br />
Bemerkung:<br />
Jede Veränderung eines Schieberegisters oder einer Folge bewirkt eine sofortige Neuberechnung<br />
aller zur Verfügung stehenden Statistiken und Informationen. Dies kann bewirken, dass selbst<br />
eigentlich einfache Operationen, wie das Kippen eines Folgenbits, Verzögerungen nach sich<br />
ziehen. Diese sollten jedoch immer, abhängig vom eingesetzten Rechner, sehr kurz sein.
6<br />
Folgenstatistik<br />
Im Register „Folgenstatistik“ werden die Eigenschaften der aktuellen Folge angezeigt. Dies sind<br />
jene, die nach S.W. Golomb über die Zufälligkeit einer Folge entscheiden.<br />
Abbildung 1.4: Folgenstatistik<br />
Dieses Register besteht im wesentlichen aus drei Bereichen, der Statistik links oben, der<br />
Autokorrelationsfunktion links unten und der Tabelle der Runhäufigkeiten rechts. Hier werden<br />
ausschließlich Ergebnisse angezeigt, es besteht keine Möglichkeit Folgen in irgendeiner Weise zu<br />
verändern.<br />
Die Statistiken sind grösstenteils selbsterklärend. Zu erwähnen ist jedoch, dass sich die<br />
Schieberegisterlänge, die maximale Periodenlänge und das Rückkopplungspolynom auf das<br />
minimale Schieberegister beziehen, das die dargestellte Folge erzeugt. Dieses muss nicht <strong>mit</strong> dem<br />
im Bereich „Schieberegister“ angezeigten übereinstimmen, das kann jedoch durch „SR erzeugen“<br />
im Bereich „Folge“ jederzeit geändert werden.<br />
Die Autokorrelationsfunktion kann nur berechnet werden, wenn die Folge <strong>mit</strong> vollständiger Periode<br />
vorliegt. Ist dies nicht der Fall wird das durch einen roten Schriftzug angezeigt. Bei sehr langen<br />
Folgen kann es vorkommen, dass alle Werte der Funktion fast Null sind, in der Anzeige ist die<br />
Funktion dann nur sehr schwer zu erkennen. Die Werte können dennoch abgelesen werden, indem<br />
man <strong>mit</strong> der linken Maustaste in das Koordinatensystem klickt. Der Wert der Funktion an der<br />
angeklickten Stelle wird nun gemeinsam <strong>mit</strong> der Verschiebung angezeigt.<br />
Die Tabelle der Runhäufigkeiten ist folgendermaßen zu lesen. Die Länge bezeichnet die Länge der<br />
Blöcke (1-Runs) und Lücken (0-Runs), die dahinter stehenden Zahlen stehen für die Häufigkeit des<br />
entsprechenden Runs <strong>mit</strong> dieser Länge.
7<br />
Lineare Komplexität<br />
Das Register „lineare Komplexität“ stellt die lineare Komplexitätsfunktion, abhängig von der Länge<br />
des betrachteten Anfangsstücks der Folge dar.<br />
Abbildung 1.5: Lineare Komplexität<br />
Dieser Bereich ist sehr einfach aufgebaut und besteht aus zwei Teilen, oben die Anzeige und unten<br />
die Kontrolle. Zur Anzeige ist nur zu sagen, dass die grüne Linie der Geraden n/2 entspricht, an die<br />
sich ein ideales Komplexitätsprofil annähern sollte. Mit den Buttons „Laden“ und „Speichern“<br />
können Komplexitätsprofile in csv-Dateien gespeichert und auch wieder aus ihnen gelesen werden.<br />
Der Button „Datei“ dient zum Umschalten zwischen Komplexitätsprofilen. Es kann zwischen zwei<br />
Profilen hin und her geschaltet werden. Diese sind zum einen das Profil der aktuellen<br />
Schieberegisterfolge und zum anderen ein aus einer csv-Datei geladenes Komplexitätsprofil. Die<br />
Beschriftung des Buttons ändert sich beim Umschalten, so dass der Text immer das Profil, auf das<br />
umgeschaltet werden kann, anzeigt.
8<br />
Schrittweise BMA<br />
Das Register „Schrittweise BMA“ stellt die Ausführung des Berlekamp-Massey Algorithmus, <strong>mit</strong><br />
dem aus der aktuellen Folge das zugehörige minimale Schieberegister berechnet wurde, schrittweise<br />
dar. Da bei jeder Änderung der Folge das minimale Schieberegister neu berechnet wird, ohne das<br />
dieses im Bereich „Schieberegister“ angezeigt wird, muss das dargestellte Ergebnis des Berlekamp-<br />
Massey Algorithmus nicht <strong>mit</strong> dem angezeigten Schieberegister übereinstimmen. Dies kann jedoch<br />
jederzeit durch „SR erzeugen“ im Bereich „Folge“ geändert werden.<br />
Abbildung 1.6: Schrittweise Ausführung des Berlekamp-Massey Algorithmus<br />
Dieses Register besteht aus drei Teilen. Der Anzeige oben, hier werden die Ausführungsschritte des<br />
BMA <strong>mit</strong> der zugehörigen Schleifendurchlaufnummer, linearen Komplexität und dem<br />
Rückkopplungspolynom dargestellt. Die Anzahl der angezeigten Ausführungsschritte muss nicht<br />
zwangsläufig <strong>mit</strong> den tatsächlich ausgeführten Berechnungsschritten übereinstimmen, da die<br />
Anzeige abbricht, sobald das entgültige Schieberegister, welches die Folge erzeugt, angezeigt<br />
wurde. Bei Auswahl eines Schrittes wird das zum Rückkopplungspolynom gehörige Schieberegister<br />
(Mitte) und die bis zu diesem Rechenschritt betrachtete Teilfolge (unten) angezeigt. Mit dem Button<br />
„Anzeigen“ kann das Schieberegister des ausgewählten Rechenschrittes im Bereich<br />
„Schieberegister“ angezeigt werden, um <strong>mit</strong> diesem weiter zu rechnen.
9<br />
Kombination<br />
Das Register „Kombination“ bietet die Möglichkeit, in der Zwischenablage gespeicherte Folgen <strong>mit</strong><br />
linearen und nicht-linearen Funktionen zu kombinieren.<br />
Abbildung 1.7: Kombination von Folgen<br />
Der Aufbau dieses Bereiches ist einfach. Oben befindet sich ein Eingabefeld, in das die<br />
auszuwertende Funktion eingetragen wird. Die Auswertung kann durch drücken von „Return“ oder<br />
durch betätigen des „Ausführen“-Buttons gestartet werden. Anschließend wird ggf. im darunter<br />
liegenden Textfeld eine Erfolgsmeldung ausgegeben. Sie enthält den tatsächlich ausgewerteten<br />
Befehl, eine Liste der verwendeten Folgen <strong>mit</strong> deren Periodenlängen und Komplexitäten und für die<br />
Ergebnisfolge, dessen Periodenlänge und lineare Komplexität. Die Ergebnisfolge selbst wird im<br />
Bereich „Folge“ angezeigt und kann von dort aus weiter bearbeitet werden. Zu beachten ist auch in<br />
diesem Fall, dass eine vorher im Bereich „Folge“ vorhandene Folge ohne Rückfrage überschrieben<br />
wird. In dem Fall, das die Eingabe nicht der vorgegebenen Syntax entspricht, wird im Ausgabefeld<br />
eine Fehlermeldung ausgegeben. Diese Meldung enthält in den meisten Fällen Hinweise auf die Art<br />
des Fehlers. In jedem Fall wird der tatsächlich ausgewertete Befehl bis zum Auftreten des Fehlers<br />
angezeigt, daran kann die Art des Fehlers ebenfalls erkannt werden. Als letztes Element dieses<br />
Registers, gibt es noch den Button „Funktionsverwendung anzeigen“ am unteren Rand. Durch<br />
Betätigung wird im Ausgabetextfeld eine Kurzanleitung zur Syntax der Befehlseingabe angezeigt.<br />
Die Syntax der Befehlseingabe sei auch hier beschrieben. Mit Ausnahme von „not“ sind alle<br />
Funktionen binär und werden <strong>mit</strong> zwei Folgen bzw. einer Folge und einer ganzen Zahl aufgerufen.<br />
Die Rückgabewerte aller Funktionen sind Folgen, daher ist es möglich und auch notwendig die<br />
Funktionen zu schachteln. Die verwendeten Folgen müssen dem Zwischenspeicher entnommen<br />
werden und werden <strong>mit</strong> einem vorangestellten „f“ und ihrer Nummer referenziert. Bei der Eingabe<br />
des Befehls muss nicht auf Leerzeichen geachtet werden, sie können benutzt werden – müssen<br />
jedoch nicht. Allerdings ist darauf zu achten, dass alle Funktionsnamen klein geschrieben werden<br />
müssen. Folgende Funktionen sind definiert:<br />
• Die logischen Funktionen „and“, „or“ und „xor“.<br />
Sie werden bitweise auf die Glieder der Folgen, die ihnen als Argumente übergeben werden,<br />
angewandt. Zum Beispiel „and(f0, xor(f1, xor(f2, f3)))“.
10<br />
• Die logische Funktion „not“.<br />
Dies ist die einzige unäre Funktion und wird auf genau eine Folge angewandt. Die<br />
Ergebnisfolge ist das bitweise Komplement der Eingabefolge.<br />
• Die Schiebeoperationen >.<br />
Sie werden <strong>mit</strong> einer Folge als erstes Argument und einer ganzen Zahl als zweites Argument<br />
aufgerufen. Das zweite Argument gibt an, um wie viele Stellen die Folge in die<br />
entsprechende Richtung verschoben werden soll.
11<br />
Polynomeingabe<br />
In diesem Register kann ein neues Schieberegister durch Angabe seines Rückkopplungspolynoms<br />
erzeugt werden.<br />
Abbildung 1.8: Polynomeingabe<br />
Das Rückkopplungspolynom kann auf zwei Arten angegeben werden.<br />
• Durch Auswahl eines pri<strong>mit</strong>iven Polynoms des Grades 2-20 aus der Liste.<br />
• Durch manuelle Eingabe im dafür vorgesehenen Textfeld unten.<br />
Die Eingabe muss dabei die Form x^a + x^b + ... + x^c + x +1 haben. Auch hier spielen<br />
Leerzeichen keine Rolle. In beiden Fällen, Auswahl und Eingabe, muss abschließen <strong>mit</strong> Betätigung<br />
des „Setzen“-Button oder „Return“ bestätigt werden. Desweiteren befindet sich am untern<br />
Bildschirmrand noch ein Statusfeld, in dem nach der Auswertung der Eingabe eine Erfolgsmeldung<br />
oder eine Fehlermeldung <strong>mit</strong> Art des Fehlers erscheint.
12<br />
Schieberegisterinfos<br />
In diesem Register sind alle Informationen zu dem aktuellen Schieberegister und insbesondere<br />
dessen Rückkopplungspolynom zu finden.<br />
Abbildung 1.9: Schieberegisterinfos<br />
Bei diesem Register handelt es sich wieder um eine reine Ansicht, es können keine Änderungen am<br />
Schieberegister vorgenommen werden. Ganz oben stehen die Eigenschaften des Schieberegisters<br />
bzw. dessen Rückkopplungspolynoms. Die Eigenschaften „irreduzibel“, „pri<strong>mit</strong>iv“ und „Exponent“<br />
beziehen sich natürlich auf das Polynom und die Vorperiode ist der nicht rückgekoppelte Anteil des<br />
Schieberegisters, dies entspricht dem niedrigsten gesetzten Koeffizienten des<br />
Rückkopplungspolynoms. Zum Exponenten sei noch erwähnt, das dieser nur berechnet wird, wenn<br />
das Rückkopplungspolynom irreduzibel ist. Darunter befindet sich die Darstellung des zum<br />
Schieberegister gehörigen Rückkopplungspolynoms. Am unteren Bildschirmrand folgen die<br />
Anzeigen für die irreduziblen Faktoren des Polynoms und der erzeugten Periodenlängen des<br />
Schieberegisters abhängig vom gewählten Startzustand des Registers. Eben diese Anzeige für die<br />
erzeugten Periodenlängen ist die einzige, die nicht automatisch aktualisiert wird, da die Berechnung<br />
bei längeren Schieberegistern <strong>mit</strong> nicht irreduziblen Rückkopplungspolynomen sehr lange dauern<br />
kann. Die Berechnung muss also vom Benutzer selbst <strong>mit</strong> Hilfe des „aktualisieren“-Buttons<br />
angestoßen werden. Allerdings werden die Periodenlängen, aufgrund des hohen Rechenaufwandes,<br />
nur für Schieberegister der Länge 12 oder kleiner berechnet. Zu der Art der Anzeige sei noch<br />
gesagt, dass die vorne stehende Binärzahl den Startzustand des Schieberegisters und die hinten<br />
stehende Zahl die Periodenlänge, der aus dem Startzustand erzeugten Folge, repräsentiert. Stehen<br />
zwischen zwei Einträgen drei Punkte, so werden auch aus den folgenden Startzuständen Folgen<br />
gleicher Periodenlänge erzeugt.
13<br />
Zwischenspeicher<br />
Auf der Rechten Seite des Bildschirms befindet sich der Zwischenspeicher. Hier können jeweils 15<br />
Schieberegister und insbesondere Folgen zwischengespeichert werden. Auf das Kopieren dieser in<br />
den Speicher ist in den entsprechenden Abschnitten bereits eingegangen worden. Alles weitere wird<br />
nun beschrieben.<br />
Der obere Teil ist für Schieberegister reserviert,<br />
sie werden hier durch ihre<br />
Rückkopplungspolynome dargestellt. Durch<br />
Auswahl eines Schieberegisters kann dieses, <strong>mit</strong><br />
Hilfe der Buttons in der Mitte, angezeigt bzw. aus<br />
dem Speicher entfernt werden.<br />
Unten befindet sich der Speicher für die Folgen,<br />
sie werden durch ihre ersten 30 Folgenglieder<br />
repräsentiert. Die voran stehende Nummer wird<br />
zum Referenzieren der Folgen im Register<br />
„Kombination“ benötigt. Analog zum oberen Teil<br />
können auch die ausgewählte Folge, angezeigt<br />
oder entfernt werden.<br />
Die drei Buttons ganz unten dienen dem<br />
Speichern und Laden des Zwischenspeichers in<br />
und aus Dateien. Die Datei erhält dabei<br />
automatisch die Endung clip. Durch den Button<br />
„Neu“ kann der gesamte Speicher geleert werden,<br />
dies geschieht ohne Rückfrage.<br />
Abbildung 1.10: Zwischenspeicher
14<br />
2 Anwendungsbeispiel<br />
In diesem Abschnitt werden nun die Einsatzmöglichkeiten des Programms anhand eines Beispiels<br />
veranschaulicht. Erst werden drei Schieberegisterfolgen aus Schieberegisters <strong>mit</strong> pri<strong>mit</strong>iven<br />
Rückkopplungspolynomen erzeugt, um aus diesen schließlich, <strong>mit</strong> Hilfe der Geffefunktion, eine<br />
neue Folgen zu berechnen.<br />
Zuerst sollte man in den Registern auf „Schieberegisterinfos“ wechseln, um dort das<br />
Rückkopplungspolynom auf Pri<strong>mit</strong>ivität zu prüfen. Nun wird das vorhandene Schieberegister der<br />
Länge 2, <strong>mit</strong> Hilfe des Buttons „Länge inc.“, auf die Länge 5 erweitert. Da das eingestellte<br />
Rückkopplungspolynom f(X) = X 5 + 1 nicht irreduzibel ist, ändern wir es durch einen Linksklick,<br />
oben in der Schieberegisteranzeige auf f(X) = X 5 + X 2 + 1. Dieses Polynom ist, wie in den<br />
Schieberegisterinfos zu erkennen irreduzibel. Nun muss der Zustand des Registers noch vom<br />
Nullzustand, durch Klicken auf eine Speicherzelle, in einen anderen beliebigen Startzustand<br />
geändert und durch „Folge erzeugen“ eine neue Folge erzeugt werden. Wir wählen dieses mal den<br />
Startzustand 10000. Nachdem die Folge erzeugt worden ist, speichern wir sie für späteren Gebrauch<br />
im Zwischenspeicher.<br />
Abbildung 2.1: Neue Folge erzeugt und gespeichert
15<br />
An dieser Stelle kann nun auch die „Folgenstatistik“ eingesehen werden. In Abbildung 4.2.2 ist<br />
deutlich zu sehen, dass die erzeugte Periodenlänge <strong>mit</strong> der maximal möglichen Periode für ein<br />
Schieberegister der Länge 5 übereinstimmt. Auch die drei Golombschen Kriterien für Zufälligkeit<br />
werden von der Folge erfüllt, da die Anzahl der Nullen und Einsen nur um Eins von einander<br />
abweicht, die Autokorrelationsfunktion konstant fast Null ist und auch die Bedingung für<br />
Runhäufigkeiten von der Folge erfüllt wird. Der genaue Wert der Autokorrelationsfunktion kann<br />
durch Linksklick in den Graphen, abhängig von der Verschiebung, abgefragt werden.<br />
(Hier: x=15; C(x) = -0.03225...)<br />
Abbildung 2.2: Folgenstatistik<br />
Da für den Generator von Geffe insgesamt drei Folgen benötigt werden, erzeugen wir nun noch<br />
zwei weitere. Dieses mal wechseln wir in das Register „Polynomeingabe“ und wählen dort aus den<br />
vorgegebenen pri<strong>mit</strong>iven Polynomen eines vom Grad 5 aus. Nachdem wir uns für das Polynom<br />
f(X) = X 5 + X 4 + X 3 + X 2 + 1 entschieden haben, erzeugengen wir daraus durch „setzen“ ein neues<br />
Schieberegister. Anschließend muss wieder der Startzustand festgelegt werden. Dies kann wieder<br />
10000 sein. Nun kann die neue Folgen erzeugt und in den Zwischenspeicher kopiert werden. Diese<br />
Schritte wiederholen wir noch einmal <strong>mit</strong> dem Polynom f(X) = X 5 + X 3 + X 2 + X + 1 und<br />
wiederum dem Startzustand 10000. Nun haben wir die drei benötigten Folge für den Geffegenerator<br />
erzeugt und gespeichert.<br />
Als nächsten Schritt wechseln wir in das Register „Kombination“. Hier können wir nun die<br />
Geffefunktion, unter Verwendung der erzeugten Folgen, berechnen lassen. Zur Erinnerung sei der<br />
Generator von Geffe in Abbildung 4.2.3 noch einmal dargestellt.
16<br />
f0<br />
f1<br />
+<br />
f2<br />
Abbildung 2.3: Generator von Geffe<br />
Die Arbeitsweise des Generators lässt sich anschaulich so beschreiben, dass immer wenn das<br />
<strong>mit</strong>tlere Schieberegister eine Eins liefert, die Ausgabe des oberen Schieberegisters zum Ausgang<br />
durchgeschaltet wird und bei einer Null die des unteren. Die Funktion kann nun direkt aus dem<br />
Schaltbild abgelesen werden. Sie lautet in logischer Schreibweise:<br />
f X 0,<br />
X 1,<br />
X 2<br />
= X 0<br />
∧X 1<br />
∨¬X 1<br />
∧ X 2<br />
<br />
Die Formel kann nun sehr einfach in die Befehlssyntax unseres Programms umgesetzt werden. Sie<br />
lautet nun:<br />
xor(and(f0, f1), and(not(f1) ,f2))<br />
Abbildung 2.4: Kombination von Folgen
17<br />
Nachdem der Befehl im dafür vorgesehenen Textfeld eingetragen worden ist, wird die Berechnung<br />
der Ergebnisfolge entweder durch „Return“ oder den Button „Ausführen“ gestartet. Ist bei der<br />
Eingabe kein Fehler gemacht worden, so erscheint nun im Ausgabefeld eine Erfolgsmeldung. In<br />
dieser werden alle verwendeten Folgen und die Ergebnisfolge, <strong>mit</strong> ihren Periodenlängen und<br />
Komplexitäten noch einmal aufgeführt. Die Ergebnisfolge ist außerdem bereits oben als aktive<br />
Folge gesetzt worden, daher können nun auch alle zugehörigen Statistiken, einschließlich des<br />
Komplexitätsprofils, eingesehen werden.