Пример кодирования MaxiCode
Настоящее приложение рассматривает процесс кодирования короткого сообщения "MaxiCode (19 chars)" в символ MaxiCode двумя способами: для увеличения структурированного сообщения носителя в режимах 2 и 3 или в качестве полного сообщения, закодированного в режимах с 3 по 5.
Существуют четыре основных этапа кодирования, два из которых приведены в таблице H.1. Входное сообщение расценивается как последовательность из 19 знаков данных версии КОИ-7 по ИСО 646, которые определены с m1 no m19 (в графе "Обозначение данных" таблицы H.1).
Таблица H.1 - Кодирование кодовых слов и знаков символа для "MaxiCode (19 chars)"
Режимы 2 и 3 | Режимы 4, 5 и 6 | |||||||||||
Обозначение данных | Исходные знаки | Кодовые слова | Знак символа | Подмножество КO* | Знак символа | Подмножество КО* | ||||||
Обозна- чение | Значение | П | ВНЧ | ВЧ | П | ВНЧ | ВЧ | |||||
M | 13 | |||||||||||
Latch В | 63 | |||||||||||
A | 1 | |||||||||||
X | 24 | |||||||||||
I | 9 | |||||||||||
Shift A | 59 | |||||||||||
С | 3 | |||||||||||
О | 15 | |||||||||||
D | 4 | |||||||||||
E | 5 | |||||||||||
Space | 47 | |||||||||||
3 Shift A | 57 | |||||||||||
( | 40 | |||||||||||
1 | 49 | |||||||||||
9 | 57 | |||||||||||
Space | 47 | |||||||||||
С | 3 | |||||||||||
Н | 8 | |||||||||||
А | 1 | |||||||||||
R | 18 | |||||||||||
S | 19 | |||||||||||
Shift A | 59 | |||||||||||
) | 41 | |||||||||||
[Pad] ([ЗАПОЛНИТЕЛЬ]) | 33 | |||||||||||
[Pad] ([ЗАПОЛНИТЕЛЬ]) | 33 | |||||||||||
: | : | : | : | : | : | : | : | |||||
* Подмножества коррекции ошибок - КО: П - первичное, ВНЧ - вторичное нечетное, ВЧ - вторичное четное. |
Этап 1 - Создание последовательности кодовых слов данных
Первый этап является общим и независимым от планируемого режима символа. Используя значения из таблицы приложения А, знаки данных перемежаются командами переключения кодируемых наборов [Shift] ([РЕГИСТР]) и [Latch] ([ФИКСАТОР]), что создает эквивалентную последовательность кодовых слов oт до , как показано в таблице H.1.
Кодирование сообщения "MaxiCode" начинается с кодируемого набора А таким образом, что первый знак "М" кодируется значением 13 (). Так как следующие знаки сообщения - строчные, необходимо перейти, используя знак [Latch], к кодируемому набору В (), в котором кодируют следующие 3 буквы (с по ). Так как за прописной буквой С сразу следуют строчные буквы, перед прописной С используют временный переход к кодируемому режиму А (знак [Shift] (), затем кодирование автоматически возвращается обратно к кодируемому набору В на следующие четыре знака (с по ). Далее используют [Triple Shift A] ([РЕГИСТР НА ТРИ A]) () для кодирования трех знаков данных (с по ) в кодируемом наборе А, затем кодирование снова возвращается к кодируемому набору В для кодирования следующих шести знаков (с по ). В завершение необходим еще один временный переход к кодируемому набору А (знак [Shift]) () для кодирования правой круглой скобки в данных сообщения.
Рекомендации по выбору команд [Shift] и [Latch] для эффективной компоновки сообщений в последовательность кодовых слов приведены в приложении F. Окончательным результатом кодирования сообщения является последовательность кодовых слов, которая длиннее, чем первоначальное сообщение данных, но, как правило, короче необходимой для заполнения области данных символа MaxiCode. При необходимости к окончанию последовательности кодовых слов добавляют кодовые слова [Pad] ([ЗАПОЛНИТЕЛЬ]) для заполнения всех позиций знаков символов данных в символе.
Этап 2 - Присвоение кодовых слов позициям знаков символа
Число кодовых слов данных в символе MaxiCode и их расположение определяет пользователь. Во-первых, пользователь может выбрать отведение области первичного сообщения MaxiCode под структурированное сообщение носителя (режимы 2 и 3), в связи с чем для цепочки кодовых слов данных вместе со стандартной коррекцией ошибок останется доступной только область вторичного сообщения.
Во-вторых, первичное сообщение может быть использовано для увеличения емкости сообщения, тогда пользователь может выбрать во вторичном сообщении как стандартный (режимы 4 и 6), так и расширенный режимы коррекции ошибок. Присвоения знаков символа приведены в таблице H.1 для обоих случаев, где N соответствуют точным позициям знаков, изображенных на рисунке 4.
Выбор режима символа (таблица 4) всегда отражается в четырех битах младшего порядка знака символа . Существуют два различных случая присвоения кодовых слов (режимы 2 и 3 или 4-6):
a) Режимы 2 и 3
Структурированное сообщение носителя в режимах 2 и 3 заполняет знаки символа с по плюс два бита старшего порядка из , вместе с уплотненными данными о месте назначения, как указано в приложении В. Таким образом, последовательность кодовых слов для данных сообщения размещается исключительно во вторичном сообщении, как показано в графе "Режимы 2 и З" таблицы H.1 (от и далее до ). Для исправления ошибок (этап 3) кодовые слова вторичного сообщения разделены на нечетные и четные чередующиеся подмножества, обозначенные соответственно и . Из таблицы H.1 следует, что с кодового слова , соответствующего букве М, начинается нечетное подмножество, а с кодового слова , [Latch В] ([ФИКСАТОР В]) - четное подмножество.
b) Режимы 4, 5 и 6
В режимах с 4-го по 6-й знак символа хранит только значение режима, а следующие девять кодовых слов данных первичного сообщения хранят начало данных сообщения. Остальные кодовые слова данных с и далее размещаются во вторичном сообщении, начиная с . В графе "Режимы 4, 5 и 6" таблицы H.1 указаны эти значения. Можно обнаружить, что кодовые слова первичного сообщения относятся к подмножеству коррекции ошибок , не зависимому от всех подмножеств вторичного сообщения. При необходимости кодовые слова [Pad] ([ЗАПОЛНИТЕЛЬ]) дополняют вторичное сообщение до в режимах 4 и 6 или до в режиме 5.
Этап 3 - Добавление кодовых слов коррекции ошибок
a) Первичное сообщение
Независимо от режима символа, первичное сообщение всегда содержит 10 кодовых слов данных от до (или от до ) и 10 дополнительных кодовых слов исправления ошибки Рида-Соломона от до (или от до ), которые вычисляют в соответствии с 4.10.1.
Хотя математика замкнутого поля Галуа GF(64) является неестественной по отношению к традиционной десятичной математике, этот пример будет продолжен для сравнения с другими компьютерными применениями. Если пользователь выбирает режим 4, последовательность кодовых слов данных в первичном сообщении от до представляется следующим образом:
[04, 13, 63, 01, 24, 09, 59, 03, 15, 04].
Это коэффициенты полинома в поле Галуа GF(64):