My Singing Monsters прохождение (Мои поющие монстры). Секреты и читы My Singing Monsters Относительный код друга


Преобразование цифрового сигнала к виду, позволяющему передавать его с наименьшими энергетическими затратами, малым уровнем, называется преобразованием к коду передачи, а сами коды - линейными или кодами передачи. Как было отмечено в подразделе 4.1.2. при линейном кодировании желательно убрать постоянную составляющую сигнала и обеспечить условие выделения тактовой частоты для синхронизации.

К таким кодам относятся блочные, биимпульсные коды, коды СМI, МЧПИ и др.

Линейные коды делятся на однополярные и биполярные. Однополярные используются в основном в волоконно-оптичес-ких линиях связи (ВОЛС), биполярные – в кабельных системах, радиорелейных линиях (РРЛ).

Однополярные коды делятся на NRZ и RZ коды:

· NRZ – без возврата к нулю, т.е. значение сигнала не возвращается к нулю за время передачи символа (рисунок 4.17).


· RZ – с возвратом к нулю, т.е. за время передачи символа сигнал меняет свое значение и возвращается к нулю (рисунок 4.18).


В кодах RZ полоса частот увеличивается в два раза относительно кодов NRZ, за счет уменьшения длительности импульса t и.

Для того, чтобы убедиться в этом, рассмотрим спектры (рисунок 4.20) элементарных сигналов, соответствующих NRZ и RZ кодам (рисунок 4.19).


На графике наглядно видно, что спектр NRZ кода в два раза шире, т.е. NRZ сигнал занимает полосу частот в два раза больше, чем RZ сигнал.

К биполярным кодам относятся коды с чередованием полярности импульсов (ЧПИ), т.е. каждый четный импульс меняет полярность. Эти коды бывают также NRZ и RZ:

NRZ ЧПИ (рисунок 4.21).


Энергетические показатели данного кода и всех биполярных лучше, чем любого из выше рассмотренных, т.к. в сигнале отсутствует постоянная составляющая, однако, частота тактовой синхронизации в нем не содержится, что резко ограничивает применимость кода. Этот код не позволяет выделить тактовую частоту.

RZ ЧПИ (рисунок 4.22).


Он, и ему подобные, чаще всего применяются при передаче цифровых сигналов по электрическим кабелям и РРЛ, поскольку и электрический кабель, и РРЛ легко позволяют передавать отрицательную полярность импульсов.

В кодах ЧПИ для передачи двух символов (1 и 0) используется три состояния (1, 0 и –1), т.е. существует избыточность. Эту избыточность используют для обнаружения ошибок. В соответствии с принятым алгоритмом формирования кода в нем не могут следовать подряд два импульса одной полярности.

К биполярным кодам относятся также блочные коды, но здесь иначе используется избыточность ЧПИ. В качестве примера приведем троичный код 4ВЗТ (В – binary), (Т – ternary), когда в трех импульсах передается четыре двоичных символа с использованием специальных кодовых комбинаций (блоков) (см. Таблицу 4.1).

Нетрудно видеть, что число возможных сочетаний уровней передачи 3 3 =27 больше набора кодовых комбинаций 2 4 =16 и это обосновывает возможность такой кодировки. Остающаяся избыточность (16<27) позволяет реализовать несколько вариантов кода.

Таблица 4.3 - Код 4В3Т

Таким образом, вместо каждых четырех импульсов нужно передавать в линию только три. Появляется возможность вместо каждого четвертого импульса цифрового потока передать дополнительные символы, т.е. увеличить объем передаваемой информации и тем самым выиграть в скорости передачи информации.

Рассмотрим биимпульсные коды . Здесь каждый символ представляется одним биполярным импульсом (рисунок 4.23).


Приведем пример абсолютного биимпульсного кода (рисунок 4.24):


К достоинствам этого кода относятся:

Возможность выделения тактовой частоты;

Отсутствие постоянной составляющей.

А к недостаткам:

Отсутствие избыточности;

Возможность неправильного приема символа, т.к. импульсы отличаются только фазой. Если произойдет случайный «переброс» фазы, то весь сигнал поменяет полярность. Чтобы этого избежать, вводят относительный биимпульсный код. В этом случае приведенная выше последовательность будет выглядеть так, как показано на рисунке 4.25.


При этом принятый импульс считается единицей, если произошла смена фаз, и нулем – если нет.


Рассмотрим спектр биимпульсного сигнала (рисунок 4.26).

Рисунок 4.26 – Спектр биимпульсного сигнала

Из графика видно, что в данном сигнале отсутствует постоянная составляющая. А так как именно постоянная составляющая требует большой мощности, то можно сделать вывод, что данный сигнал наиболее экономичен с точки зрения энергетики. К тому же отсутствие постоянной составляющей уменьшает такой отрицательный фактор, как дрейф нуля.

Коды СМI - это сочетание ЧПИ и биимпульсных кодов. Также как в NRZ ЧПИ происходит изменение полярности каждого четного единичного импульса, но при этом еще происходит замена нуля одним биполярным импульсом, как в биполярных кодах. При этом последовательность, приведенная при рассмотрении биимпульсных кодов, будет такой, как показано на рисунке 4.27, и нулю соответствует биполярный импульс.


На практике часто применяют МЧПИ коды (модифицированный ЧПИ). Причиной их создания стала проблема выделения тактовой частоты при появлении в кодовой комбинации нескольких нулей подряд. В этих кодах вместо нулей добавляются определенные кодовые комбинации, которые удаляются после выделения тактовой частоты. Для того чтобы они легко удалялись, необходимо, чтобы они сбивали привычное чередование импульсов. Примером такого кода является код HDB-3 . Число 3 здесь указывает на то, что допускается количество нулей не больше трех.

Комбинация 0000 заменяется на комбинацию 000V или В00V, где «В» и «V» = +(–) 1. Рассмотрим правила составления этого кода:

1. Полярность «В» всегда противоположна полярности предыдущего импульса, а полярность «V» – совпадает.

2. Если число единиц в предыдущей пачке четное, то вводится В00V, если нечетное – 000V. Под пачкой понимается последовательность импульсов между двумя паузами с числом нулей больше трех.

Например, двоичная комбинация, показанная на рисунке 4.28:


После применения к ней описанного правила, код приобретет вид, показанный на рисунке 4.29:

Рис.2.9. Код с инверсией токовых посылок

Код с поразрядно чередующейся инверсией (ADI)

При построении низкий потенциал представляется элементом , а высокий – элементом . Построение кода ADI начинают с низкого потенциала. При смене полярности в исходной двоичной последовательности уровень кода остается постоянным, а при повторении полярности предыдущего символа происходит смена полярности кода. Пример кодирования показан на рис.2.10.


Для передачи логического нуля используется элемент , а для передачи логической единицы – элемент . Пример кодирования показан на рис.2.11.

Рис.2.11. Абсолютный биимпульсный код

Относительный биимпульсный код (ОБС)



Для формирования кода используются элементы или . Нулевой уровень кодируется изменением предыдущего состояния; а единичный - сохранением состояния. Пример кодирования показан на рис.2.12.

Рис.2.12. Относительный биимпульсный код

Код Миллера (ML)

Код Миллера является двоичным двухуровневым кодом. При кодирования каждый тактовый интервал делится пополам.

Принятие решения о выборе следующего элемента кодовой последовательности осуществляется на основе графа, представленного на рис.2.13. Узлами графа являются возможные текущие состояния кодовой последовательности. Направление перехода от текущей вершины выбирается на основании анализа последующего элемента в исходной двоичной последовательности. Элементы новой текущей вершины графа являются элементами кода. Кодирование начинается всегда с вершины "11".


В построении кода участвуют элементы , , и . Пример кодирования показан на рис.2.14.

Рис.2.14. Код Миллера

Код DMI

В коде DMI двоичный нуль в исходной двоичной последовательности заменяется элементами и , а двоичная единица – поочередно элементами и . Причем если единица кодировалась элементом , то следующий за ней нуль кодируется элементом , а если единица кодировалась элементом , то следующий за ней нуль кодируется элементом . Начинают построение с положительного потенциала. Пример кодирования показан на рис.2.15.

Рис.2.15. Код DMI

Код H

В коде двоичный нуль в исходной двоичной последовательности заменяется поочередно элементами и , а двоичная единица – поочередно элементами и . Начинают построение с положительного потенциала. Пример кодирования показан на рис.2.16.

Внести немного разнообразия в игры на андроид устройстве позволяет игра My Singing Monsters или Мои поющие монстры . Это очень симпатичный гибрид стратегии и тамагочи, позволяющий совместить логику и умиление очаровательными монстриками и отвлечься от поиска "запчастей" к своему ноутбуку на http://100detaley.ru/catalog/category/247/ . Очень разные и такие интересные монстры обитают на островах этй игры. Они ещё и поют, не забывайте!

My Singing Monsters - игра, донат присутствует. В ваше распоряжение попадает этакий очень развитый тамагочи, в котором питомцев может быть ну очень много, и в ваших силах создать для них идеальные условия. Мудро правьте на каждом из островов игры и сможете узнать его мелодию. В том и интерес игры Мои поющие монстры, чтобы полностью развить все острова и узнать, как поёт живое на них в единой гармонии.

Красивый мультяшный мир, милые персонажи, простор для развития и изучения нового мира делают My Singing Monsters для андроид отличным способом отдохнуть. Играть в Моих поющих монстров достаточно просто и нескучно, и каждый раз есть, с чем познакомиться: новый монстрёныш, его песенка (у каждого своя), новые предметы "быта", устройства и здания. Обновления стоят игровых денег, заработать их предлагают разными способами, в том числе и неигровыми - например, загрузить и установить какое-нибудь приложение (у каждого приложения своя "цена"). С прохождением My Singing Monsters вы можете ознакомиться в нашем видеообзоре.

И вот ещё несколько советов по прохождению Моих поющих монстров :

  • Как только вы подселили на остров нового монстра, вся информация о нём становится доступна, так что можно сразу же узнать, что новосёлу нужно для счастья, что именно лучше всего строить и размещать вокруг.
  • Выполняйте задания, особенно вначале - это помогает быстро развиться и подарит бесплатную еду.
  • Чтобы разводить монстров, будущие "молодожёны" должны быть достаточно взрослыми - их нужно усовершенствовать до конца (да и вообще, большие и счастливые монстры зарабатывают больше денег). Обращайте внимание на элементы каждого монстра: новый вид получится только если они не совпадают, иначе "родится" копия мамочки с папочкой. Эту информацию можно посмотреть в меню покупки или под информационной областью. С монстром связано от одного до четырёх элементов - ветер, снег, дождь, земля, растения.
  • Совершенствуйте пекарни и вообще всё, связанное с едой - монтрам нужно кушать. Можно, конечно, накупить кучу еды за настоящие деньги - но тут уж дело вкуса, жадности и здравого смысла.
  • Как можно скорее установите шахту. Каждые 24 часа она будет приносить вам два бесплатных изумруда.
  • Купив несколько островов, вы получите новые возможности для выведения неведомых доселе пород. Но перемещать монстров с одного острова на другой пока нельзя.

Алгоритм относительного кодирования (преобразования двоичной последовательности абсолютного кода (L-кода) в соответствующую последовательность относительного кода (М-кода) определяется выражением

где а i - i-й элемент последовательности L-кода,

b i и b i-1 - i-й и предшествующий (i-1)-й элементы последовательности М-кода.

Алгоритм обратного преобразования от М-кода к L-коду определяется выражением

Кодер и декодер относительного кода изображены на рисунке 15. Элемент задержки ЭЗ имеет время задержки t З =t Э. Эту роль в реальных кодерах выполняет тактируемый D-триггер.

Рисунок 15

На рисунке 16 приведены временные диаграммы, наглядно представляющие процессы кодирования и декодирования. Следует заметить, что кодером относительного кода может служить синхронный (тактируемый) Т-триггер.

Рисунок 16

Замечательным свойством относительного кода является независимость результата декодирования от прямого или инверсного представления М-кодированной последовательности на входе декодера. Это подтверждается следующими преобразованиями:

1. на входе декодера прямая последовательность М-кода

при этом на выходе декодера

2. на входе декодера инвертированная последовательность М-кода

при этом на выходе декодера

Это свойство относительного кода используется при формировании относительно - фазоманипулированного радиосигнала (ОФМ) и его соответствующей демодуляции.

Если двоичную последовательность, представленную L-кодом подать на фазовый модулятор некоторого гармонического колебания, имеющего частоту f 0 , то на его выходе получим двухпозиционный фазоманипулированный радиосигнал ФМ-2. Для его демодуляции на приемной стороне радиоканала необходимо располагать опорным колебанием, синхронным и синфазным с несущим гармоническим колебанием для когерентной демодуляции в фазовом демодуляторе. Получить такое опорное колебание от автономного генератора на приемной стороне невозможно. Передавать опорное несущее колебание по отдельному радиоканалу экономически невыгодно. Поэтому в реальных системах радиосвязи его получают из принимаемого сигнала. Однако, выделить его непосредственно линейными частотно-избирательными цепями не представляется возможным, так как при равновероятном появлении "0" и "1" в передаваемой последовательности гармоника несущего колебания в принимаемом радиосигнале отсутствует. Несмотря на это, информация о частоте несущего колебания в амплитудном спектре принимаемого сигнала все же есть в неявном виде. Она содержится в его гармонических составляющих, расположенных симметрично относительно частоты f 0 . Благодаря этому при нелинейном преобразовании принимаемого радиосигнала, например при возведении его в квадрат, в спектре преобразованного таким образом радиосигнала появляются комбинационные частоты гармоник принимаемого радиосигнала, в том числе суммарная симметричных гармоник относительно f 0

где дf - интервал между симметричными гармониками и частотой f 0 .

Эту гармонику удвоенной несущей частоты можно просто выделить линейным узкополосным фильтром, настроенным на частоту 2f 0 , либо системой фазовой автоматической подстройки частоты (ФАПЧ) местного генератора, настроенного приблизительно на 2f 0 . Разработано много различных схем выделения удвоенной несущей частоты с последующим делением ее на два для получения опорного колебания с частотой f 0 . Наиболее известные - это схемы Сифорова, Пистолькорса и Костаса. Не останавливаясь на принципах их работы, достоинствах и недостатках, следует отметить общую особенность описанного способа получения колебания с частотой f 0 - это деление частоты 2f 0 на два.

При любом делении частоты некоторого колебания на целое число m выходное колебание может иметь начальные фазы

где i=0,1,2…(m-1).

При этом нет никакого устойчивого признака получения одного из возможных значений начальной фазы. Поэтому деление 2f 0 на два приводит к получению опорного колебания с начальной фазой, равной 0 относительно несущего колебания или с фазой р. В первом случае на выходе фазового демодулятора будет формироваться передаваемая двоичная последовательность, а во втором - ее инверсная копия. Этот режим работы демодулятора является нежелательным и называется "обратной работой демодулятора".

Реальные системы радиосвязи работают чаще всего при уровнях входного радиосигнала близких к предельно малым, либо в условиях многолучевого распространения радиоволн с изменяющимися случайно характеристиками по всем лучам. Это приводит к большому диапазону изменения уровня входного радиосигнала на приемной стороне радиоканала. В этих условиях даже, если первоначально верно сфазировать несущее и опорное колебания, то после кратковременного снижения входного уровня радиосигнала до порогового значения и ниже нет никакой гарантии, что после этого не возникнет режим "обратной" работы демодулятора.

В цифровых системах связи, использующих маркерный метод групповой синхронизации, в непрерывную двоичную последовательность информационных символов периодически включают некоторую кодовую комбинацию, называемую маркером. Если этот маркер имеет автокорреляционную функцию типа "кнопки", то при его опознании на приемной стороне можно по полярности пика опознанного маркера судить о режиме работы демодулятора на данный момент:

Если пик АКФ положителен, то демодулятор работает нормально;

Если же пик АКФ отрицателен, то имеет место "обратная" работа демодулятора, и тогда принятый после этого маркера фрагмент двоичной последовательности необходимо проинвертировать.

В таком варианте построения режим работы демодулятора контролируется точечно. На интервале между маркерами такой контроль отсутствует.

Для устранения возможной обратной работы демодулятора в системах радиосвязи с фазовой манипуляцией применяют относительную фазовую модуляцию (называемую иногда фазоразностной модуляцией) при которой фаза каждого последующего символа фазоманипулированного сигнала меняется в зависимости от фазы предыдущего, например, по такому правилу:

Если на вход модулятора поступает нулевой символ, то его фаза на выходе модулятора совпадает с фазой предыдущего элемента радиосигнала;

Если же на вход модулятора поступает единичный символ, то его фаза на выходе модулятора изменяется на противоположное значение по сравнению с фазой предыдущего элемента радиосигнала.

При демодуляции такого сигнала необходимо сравнивать фазы предыдущего и последующего элементов радиосигнала.

Описанные процедуры модуляции и демодуляции сложно реализуемы непосредственно. В современных радиосистемах относительно-фазоманипулированный (ОФМ) радиосигнал обычно формируется с использованием транскодера, превращающего двоичную последовательность L-кода в последовательность М-кода, которая манипулирует фазу несущего колебания. Это колебание относительно L-последовательности представляет собой ОФМ. На приемной стороне осуществляется демодуляция в фазовом демодуляторе с использованием описанной выше процедуры выделения опорного колебания. При этом возможен эффект обратной работы демодулятора относительно последовательности М-кода. Однако последующая операция относительного декодирования позволяет сформировать последовательность L-кода всегда совпадающей с отправляемой двоичной последовательностью.

Сочетание относительного кодера и абсолютного фазового модулятора образует относительный фазовый модулятор. Аналогично, абсолютный фазовый демодулятор с включенным последовательно с ним относительным декодером образуют относительный фазовый демодулятор.

Функциональные схемы относительных фазового модулятора и демодулятора в системе связи приведены на рисунке 17.


Рисунок 17

На этом рисунке ОК и ОДК - относительный кодер и относительный декодер соответственно, ФМ и ФДМ - фазовый модулятор и фазовый демодулятор соответственно, ГВЧ - генератор высокой частоты, ФОН - формирователь опорного напряжения, ОМ - относительный модулятор, ОДМ - относительный демодулятор.

Казалось бы проблема устранения эффекта обратной работы решена простыми средствами. Однако это не так. Платой за полученный результат является удвоение ошибок, возникающих в канале связи, так как одиночные входные ошибочные символы на входах сумматора по модулю два относительного декодера появляются дважды - по незадержанному и по задержанному направлениям (рисунок 15).

Для устранения этого неприятного явления надо исключить одиночные ошибки в канале связи до относительного декодера. Это можно осуществить включая на выходе относительного кодера корректирующий кодер, формирующий код, исправляющий одиночные ошибки, и соответствующий декодер на входе относительного декодера. Это существенно усложняет формирующую и обрабатывающую аппаратуру, тем более, что корректирующее кодирование и декодирование удобно выполнять в параллельном формате кодовых комбинаций, а относительное кодирование-декодирование - в последовательном формате. При этом включение контрольных разрядов в кодовые комбинации корректирующего кода ощутимо снижают скорость передачи информации.

Другой платой за устранение эффекта обратной работы можно считать увеличение мощности передатчика, снижающее вероятность появления одиночных ошибок до значения вероятности появления двойных ошибок при прежней мощности. Этот путь представляется менее затратным.

Это продолженеие статьи о помехоустойчивом кодировании, которая очень долго лежала в черновиках. В прошлой части нет ничего интересного с практической точки зрения - лишь общие сведения о том, зачем это нужно, где применяется и т.п. В данной части будут рассматриваться некоторые (самые простые) коды для обнаружения и/или исправления ошибок. Итак, поехали.

Попытался все описать как можно легче для человека, который никогда не занимался кодированием информации, и без каких-либо особых математических формул.

Когда мы передаем сообщение от источника к приемнику, при передаче данных может произойти ошибка (помехи, неисправность оборудования и пр.). Чтобы обнаружить и исправить ошибку, применяют помехоустойчивое кодирование, т.е. кодируют сообщение таким образом, чтобы принимающая сторона знала, произошла ошибка или нет, и при могла исправить ошибки в случае их возникновения.

По сути, кодирование - это добавление к исходной информации дополнительной, проверочной, информации. Для кодирования на передающей стороне используются кодер , а на принимающей стороне - используют декодер для получения исходного сообщения.
Избыточность кода - это количество проверочной информации в сообщении. Рассчитывается она по формуле:

k/(i+k) , где
k - количество проверочных бит,
i - количество информационных бит.
Например, мы передаем 3 бита и к ним добавляем 1 проверочный бит - избыточность составит 1/(3+1) = 1/4 (25%).

Код с проверкой на четность

Проверка четности – очень простой метод для обнаружения ошибок в передаваемом пакете данных. С помощью данного кода мы не можем восстановить данные, но можем обнаружить только лишь одиночную ошибку.

В каждом пакет данных есть один бит четности , или, так называемый, паритетный бит . Этот бит устанавливается во время записи (или отправки) данных, и затем рассчитывается и сравнивается во время чтения (получения) данных. Он равен сумме по модулю 2 всех бит данных в пакете. То есть число единиц в пакете всегда будет четно . Изменение этого бита (например с 0 на 1) сообщает о возникшей ошибке.
Ниже показана структурная схемы кодера для данного кода

и и декодера

Пример:

Начальные данные: 1111
0 (1 + 1 + 1 + 1 = 0 (mod 2))
Принятые данные: 10 110 (изменился второй бит)
Как мы видим, количество единиц в принятом пакете нечетно, следовательно, при передаче произошла ошибка.

Как говорилось ранее, этот метод служит только для определения одиночной ошибки. В случае изменения состояния двух битов, возможна ситуация, когда вычисление контрольного бита совпадет с записанным. В этом случае система не определит ошибку, а это не есть хорошо. К примеру:
Начальные данные: 1111
Данные после кодирования: 11110 (1 + 1 + 1 + 1 = 0 (mod 2))
Принятые данные: 100 10 (изменились 2 и 3 биты)
В принятых данных число единиц четно, и, следовательно, декодер не обнаружит ошибку.

Так как около 90% всех нерегулярных ошибок происходит именно с одиночным разрядом, проверки четности бывает достаточно для большинства ситуаций.

Код Хэмминга

Как говорилось в предыдущей части, очень много для помехоустойчивого кодирования сделал Ричард Хэмминг . В частности, он разработал код, который обеспечивает обнаружение и исправление одиночных ошибок при минимально возможном числе дополнительных проверочных бит. Для каждого числа проверочных символов используется специальная маркировка вида (k, i), где k - количество символов в сообщении, i - количество информационных символов в сообщении. Например, существуют коды (7, 4), (15, 11), (31, 26). Каждый проверочный символ в коде Хэмминга представляет сумму по модулю 2 некоторой подпоследовательности данных. Рассмотрим сразу на примере, когда количество информационных бит i в блоке равно 4 - это код (7,4), количество проверочных символов равно 3. Классически, эти символы располагаются на позициях, равных степеням двойки в порядке возрастания:
первый проверочный бит на 2 0 = 1;
второй проверочный бит на 2 1 = 2;
третий проверочный бит на 2 2 = 4;

но можно и разместить их в конце передаваемого блока данных (но тогда формула для их расчета будет другая).
Теперь рассчитаем эти проверочные символы:
r1 = i1 + i2 + i4
r2 = i1 + i3 + i4
r3 = i2 + i3 + i4

Итак, в закодированном сообщении у нас получится следующее:
r1 r2 i1 r3 i2 i3 i4

В принципе, работа этого алгоритма разобрана очень детально в статье Код Хэмминга. Пример работы алгоритма , так что особо подробно описывать в этой статье не вижу смысла. Вместо этого приведу структурную схему кодера:

и декодера


(может быть, довольно запутано, но лучше начертить не получилось)

E0,e1,e2 опрделяются как функции, зависящие от принятых декодером бит k1 - k7:

e0 = k1 + k3 + k5 + k7 mod 2
e1 = k2 + k3 + k6 + k7 mod 2
e2 = k4 + k5 + k6 + k7 mod 2

Набор этих значений e2e1e0 есть двоичная запись позиции, где произошла ошибка при передаче данных. Декодер эти значения вычисляет, и если они все не равны 0 (то есть не получится 000), то исправляет ошибку.

Коды-произведения

В канале связи кроме одиночных ошибок, вызванных шумами, часто встречаются пакетные ошибки, вызванные импульсными помехами, замираниями или выпадениями (при цифровой видеозаписи). При этом пораженными оказываются сотни, а то и тысячи бит информации подряд. Ясно, что ни один помехоустойчивый код не сможет справиться с такой ошибкой. Для возможности борьбы с такими ошибками используются коды-произведения. Принцип действия такого кода изображён на рисунке:


Передаваемая информация кодируется дважды: во внешнем и внутреннем кодерах. Между ними устанавливается буфер, работа которого показана на рисунке:

Информационные слова проходят через первый помехоустойчивый кодер, называемый внешним, т.к. он и соответствующий ему декодер находятся по краям системы помехоустойчивого кодирования. Здесь к ним добавляются проверочные символы, а они, в свою очередь, заносятся в буфер по столбцам, а выводятся построчно. Этот процесс называется перемешиванием или перемежением .

При выводе строк из буфера к ним добавляются проверочные символы внутреннего кода. В таком порядке информация передается по каналу связи или записывается куда-нибудь. Условимся, что и внутренний, и внешний коды – коды Хэмминга, с тремя проверочными символами, то есть и тот, и другой могут исправить по одной ошибке в кодовом слове (количество «кубиков» на рисунке не критично - это просто схема). На приемном конце расположен точно такой же массив памяти (буфер), в который информация заносится построчно, а выводится по столбцам. При возникновении пакетной ошибки (крестики на рисунке в третьей и четвертой строках), она малыми порциями распределяется в кодовых словах внешнего кода и может быть исправлена.

Назначение внешнего кода понятно – исправление пакетных ошибок. Зачем же нужен внутренний код? На рисунке, кроме пакетной, показана одиночная ошибка (четвертый столбец, верхняя строка). В кодовом слове, расположенном в четвертом столбце - две ошибки, и они не могут быть исправлены, т.к. внешний код рассчитан на исправление одной ошибки. Для выхода из этой ситуации как раз и нужен внутренний код, который исправит эту одиночную ошибку. Принимаемые данные сначала проходят внутренний декодер, где исправляются одиночные ошибки, затем записываются в буфер построчно, выводятся по столбцам и подаются на внешний декодер, где происходит исправление пакетной ошибки.

Использование кодов-произведений многократно увеличивает мощность помехоустойчивого кода при добавлении незначительной избыточности.

P.S.: Плотно занимался этой темой 3 года назад, когда писал дипломный проект, возможно что-то упустил. Все исправления, замечания, пожелания - пожалуйста через личные сообщения