Objective-C :: Aufgabe #152

0 Lösungen

Gray-Code bei Analog-Digital-Konvertierung

Anfänger - Objective-C von hollst - 15.04.2017 um 15:00 Uhr
Bei der Analog-Digital-Konvertierung sollte die Abtastfrequenz in der Regel
wesentlich höher sein als die zeitliche Änderung des Messsignals (Nyquist-Kriterium).
Aus diesem Grunde ergeben zwei benachbarte Abtastungen zumeist entweder den gleichen (Digital)wert
oder einen um +/- 1 geänderten Wert. Ist dies nicht der Fall, so kann man mit sehr hoher
Wahrscheinlichkeit von einem Fehler bei der Messung (größer Rauscheinfluss) oder bei der Analog-
Digital-Konvertierung ausgehen.

Fehler bei der Analog-Digital-Konvertierung können bevorzugt dann entstehen, wenn bei einer
Messwertänderung um +/- 1 gleichzeitig mehrere Binärwerte switschen müssen. Z. B. bei einem
Messwert 7, der sich auf 8 ändert (7 -> 8) ändert sich der Binärwert von 0111 -> 1000, d. h.
es müssen quasi parallel vier Bits gekippt werden.

Um diese Fehlerquelle zu minimieren, werden die Messwerte zumeist nicht direkt in eine
Binärzahl konvertiert, sondern zunächst in den sogenannten Gray-Code. Der Gray-Code garantiert, dass sich bei
einer Messwertänderung um +/- 1 nur ein einziges Bit im Code ändert.

Das Kodierungsschema lässt sich u. a. leicht aus folgender Tabelle ableiten:

Dezimal Binär-Code Gray-Code

00 0000 0000
01 0001 0001
02 0010 0011
03 0011 0010
04 0100 0110
05 0101 0111
06 0110 0101
07 0111 0100
08 1000 1100
09 1001 1101
10 1010 1111
11 1011 1110
12 1100 1010
13 1101 1011
14 1110 1001
15 1111 1000

Wie ersichtlich, switscht bei der Gray-Kodierung lediglich ein Bit, wenn sich die Dezimal-Kodierung
um eine Einheit ändert.

Der Gray-Code geht auf einen Herren namens Frank Gray (1887 -1969) zurück, der sich den Code 1953
patentieren ließ, obwohl er in der Mathematik längst bekannt war. Aus meiner Sicht eine sehr bedenkliche Patenterteilung.

Die Programmierungsaufgabe besteht darin ein Programm zu schreiben,
das ein positives Integer entgegennimmt und die Gray-Code-Folge zurückgibt.

Optional kann auch die inverse Transformation programmiert werden.

Lösungen:

Für diese Aufgabe gibt es noch keine Lösung.