Varicode

Varicode ist eine Entropiekodierung, das heißt, der Kode häufig vorkommender Zeichen ist kürzer als bei selteneren Zeichen – ähnlich dem Morsecode. Dadurch erhöht sich der Datendurchsatz. Varicode wird primär zur Datenübertragung auf Kurzwelle mit dem Modus PSK31 im Amateurfunkdienst verwendet. Varicode wurde 1997 von Peter Martinez (G3PLX) entwickelt um Text effizienter zu übertragen.

Varianten

Ursprünglich wurde nur ASCII unterstützt, deutsche Umlaute waren z. B. nicht darstellbar. 1998 verwendeten erste Programme den 8-Bit-Code ISO 8859-1, wobei die neuen 128 Zeichen der Reihe nach aus dem Standard übernommen und nicht nach der Häufigkeit sortiert wurden. Mittlerweile unterstützen fast alle Programme zur (De-)Modulation von PSK31 / PSK63 256 Zeichen (8 Bit). Die digitale Betriebsart PSK31 und die schnellere Variante PSK63 verwenden zur Kompression der Nachrichten Varicode.

Aufbau

Da die Kodes nur aus 0 und 1 bestehen, handelt es sich um einen Binärcode. Um die Fano-Bedingung zu erfüllen, wurden drei Regeln aufgestellt.

  • Nach jeder Nachricht folgt „00“ als Trennzeichen.
  • „00“ kommt in keiner Nachricht vor.
  • Jede Nachricht beginnt mit einer „1“ und endet mit einer „1“.

Nach diesen Regeln wurden den häufigsten ASCII-Zeichen die kürzesten Kodes zugewiesen. Beginnend mit dem Leerzeichen, wobei die 1 vom Start und Ende zusammenfällt. Danach folgen „e“ (11), „o“ (111), „t“ (101) und hauptsächlich Kleinbuchstaben, anschließend Großbuchstaben, Zahlen, Sonder- und Steuerzeichen. Im Folgenden sind die primären Kodierungstabellen zusammengestellt:

VaricodeOctDecHexAbkürzungBeschreibung
1010101011000000NULNull character
1011011011001101SOHStart of Header
1011101101002202STXStart of Text
1101110111003303ETXEnd of Text
1011101011004404EOTEnd of Transmission
1101011111005505ENQEnquiry
1011101111006606ACKAcknowledgment
1011111101007707BELBell
1011111111010808BSBackspace
11101111011909HTHorizontal Tab
11101012100ALFLine feed
1101101111013110BVTVertical Tab
1011011101014120CFFForm feed
11111015130DCRCarriage return
1101110101016140ESOShift Out
1110101011017150FSIShift In
10111101110201610DLEData Link Escape
10111101010211711DC1Device Control 1 (XON)
11101011010221812DC2Device Control 2
11101011110231913DC3Device Control 3 (XOFF)
11010110110242014DC4Device Control 4
11011010110252115NAKNegative Acknowledgement
11011011010262216SYNSynchronous Idle
11010101110272317ETBEnd of Trans. Block
11011110110302418CANCancel
11011111010312519EMEnd of Medium
1110110111032261ASUBSubstitute
1101010101033271BESCEscape
1101011101034281CFSFile Separator
1110111011035291DGSGroup Separator
1011111011036301ERSRecord Separator
1101111111037311FUSUnit Separator
11101101011771277FDELDelete

Darstellbare Zeichen

VaricodeOktalDezimalHexZeichen
10403220SP
1111111110413321!
1010111110423422"
1111101010433523#
1110110110443624$
10110101010453725%
10101110110463826&
1011111110473927'
111110110504028(
111101110514129)
101101111052422A*
111011111053432B+
1110101054442C,
110101055452D-
1010111056462E.
110101111057472F/
1011011106048300
1011110106149311
1110110106250322
1111111106351333
10111011106452344
10101101106553355
10110101106654366
11010110106755377
11010101107056388
11011011107157399
11110101072583A:
110111101073593B;
111101101074603C<
1010101075613D=
111010111076623E>
1010101111077633F?
 
VaricodeOktalDezimalHexZeichen
10101111011006440@
11111011016541A
111010111026642B
101011011036743C
101101011046844D
11101111056945E
110110111067046F
111111011077147G
1010101011107248H
11111111117349I
111111101112744AJ
101111101113754BK
11010111114764CL
10111011115774DM
11011101116784EN
10101011117794FO
110101011208050P
1110111011218151Q
101011111228252R
11011111238353S
11011011248454T
1010101111258555U
1101101011268656V
1010111011278757W
1011101011308858X
1011110111318959Y
1010101101132905AZ
111110111133915B[
111101111134925C\
111111011135935D]
1010111111136945E^
101101101137955F_
 
VaricodeOktalDezimalHexZeichen
10110111111409660'
10111419761a
10111111429862b
1011111439963c
10110114410064d
1114510165e
11110114610266f
101101114710367g
10101115010468h
110115110569i
1111010111521066Aj
101111111531076Bk
110111541086Cl
1110111551096Dm
11111561106En
1111571116Fo
11111116011270p
11011111116111371q
1010116211472r
1011116311573s
10116411674t
11011116511775u
111101116611876v
110101116711977w
1101111117012078x
101110117112179y
1110101011721227Az
10101101111731237B{
1101110111741247C|
10101101011751257D}
10110101111761267E~

Zeichenlängen

Beginnend mit dem Ein-Bit-Code „1“ können gültige Varicode-Werte gebildet werden, indem einem kürzerer Code ein „1“ oder „10“ vorangestellt wird. Somit ist die Anzahl der Codes der Länge n gleich der Fibonacci-Zahl Fn. Bei der Übertragung sind die Codes aufgrund des abschließenden Trennzeichens mit „00“ um zwei Bit länger.

ASCII-Zeichen sortiert nach der Länge im Varicode
BitsCodesASCII-Zeichen
11SP
21e
32o t
43a i n
55LF CR l r s
68- c d f h m p u
713, . = A E I S T b g v w y
821HT ( ) 0 1 2 3 : B C D F G L M N O P R k x
934! " # $ ' * + / 4 5 6 7 8 9 ; < > H J K Q U V W X Y [ \ ] _ j q z |
1040NUL SOH STX ETX EOT ENQ ACK BEL BS VT FF SO SI DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EOM SUB ESC FS GS RS US % & ? @ Z ^ ` { } ~ DEL

Literatur

  • Peter Hatzold: Digitale Kommunikation über Funk, Franzis, ISBN 3-7723-5154-9

Weblinks