Свёрточный код. Рекуррентные (сверточные) коды. Отрывок, характеризующий Свёрточный код

В противоположность классическим алгебраическим блочным кодам, ТК следует отнести к случайным кодам. Один из вариантов построения кодера ТК представлен на рис. 1.21.

Рис. 1.21. Схема простейшего турбокодера

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

Кодер содержит два параллельно соединенных сверточных кодера. Отличие кодера 1 от кодера 2 заключается в том, что в первом кодере имеется систематический выход, через который в канал связи поступает информационная последовательность. Это обеспечивает систематическое представление кодовой последовательности. Скорость кодеров равна 1/2. Это означает, что общая скорость кодера ТК равна 1/3, поскольку на выходах 1 и 2 формируются только проверочные биты. Выбор битов с выхода перемежителя может подчиняться псевдослучайному закону и соответствовать заданной функции , следовательно, информационный блок должен быть введен в перемежитель до начала процедуры кодирования. С выхода всего турбо-кодера на модулятор сначала поступает бит с систематического выхода верхнего кодера, а затем два проверочных бита: сначала с 1 кодера, затем – со второго. Анализ многочисленных результатов экспериментальных ис­следований ТК, выполненных различными авторами, показал, что структура перемежителя сравнительно слабо влияет на его эффек­тивность такого кодирования. Те же результаты свидетельствуют о пропорциональном увеличении эффективности ТК с ростом как длины кодового ограни­чения сверточного кода, так и длины перемежителя. В любом случае благодаря использованию систематических сверточных кодеров в кодовом блоке можно явно выделить систематическую и проверочную части. Более того, можно считать, что в канал связи передаются два кодовых блока: первый кодовый блок, состоящий из информационной части и проверочной части кодера 1, и второй кодовый блок, состоящий из перемешанной информационной части и проверочной части кодера 2. Ясно, что передавать перемешанную (систематическую) часть второго кодового блока в канал связи нет смысла. Для ее восстановления в декодере можно использовать опе­рацию обратную операции перемежения информационной части кодового блока (деперемежения), соответствующую функции . Традиционно в соответствии со схемой представленной на рис. 1.15 избыточные коды подбираются по кри­терию максимума минимального расстояния . При этом, однако, достижение больших значений связано со значительным усложнением процедуры декодирования. Эффективность же ТК определяется, в основном, не параметром , а средним значением расстояний между кодовыми блоками , поскольку в процессе кодирования присутствует элемент псевдослучайного выбора, задаваемый функцией перемежителя. Благодаря особенностям формирования кодовых блоков из двух практически независимых частей, величина их суммы будет заметно больше, чем исходного сверточного кода. Это достигается за счет применения рекурсивной схем кодера, получившей свое название от рекуррентных регистров сдвига, имеющих обратную связь через схему неравнозначности. Рекурсивная схема кодера показана на рис. 1.22.

Рис. 1.22. Схема рекурсивного кодера сверточного кода

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

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

Рис. 1.23. Диаграмм состояний рекурсивного кодера сверточного кода

При декодировании из общего потока данных выделяют два кодовых блока, причем информационные части этих двух блоков в силу систематического кодирования и с учетом перемежения идентичны. Это обстоятельство позволяет использовать два декодера, каждый из которых производит декодирование своего кодового блока. Поскольку информационные части каждого из двух кодовых блоков идентичны, декодированную информацию первого (второго) декодера с учетом перемежения можно использовать в качестве априорной информации для второго (первого) декодера с целью уточнения результата декодирования, тем самым как бы замыкая обратную связь между декодерами двух кодовых блоков. Подобную операцию можно производить многократно. В этом и состоит принцип итеративного декодирования. Примерная структурная схема декодера ТК показана на рис. 1.24.

Рис. 1.24. Схема простейшего турбодекодера

Декодер для каждой итерации представляет собой каскадное соединение двух элементарных декодеров: первого и второго. Каждый из этих декодеров выносит решение о переданном символе на основе критерия максимальной апостериорной вероятности, чем обеспечивается минимум вероятности ошибочного декодирования каждым элементарным декодером. На первой итерации от демодулятора на вход первого декодера поступают оценки (мягкие решения) символов от демодулятора систематической и первой проверочной частей первого кодового блока. На выходе первого декодера формируется оценка (мягкое решение) информационного символа, которая затем используется в качестве априорной информации о нем для второго декодера. Этот декодер производит оценку символа с выхода деперемежителя на основе проверочной части второго кодового слова. На второй и последующих итерациях декодирования эта оценка обновляется и используется как априорная информация о переданном сим­воле для первого декодера. Таким образом, на вход каждого из двух элементарных декодеров поступают мягкие решения, результат декодирования на выходе элементарного декодера – также мягкое решение. По этой причине такие схемы по­лучили название декодеров с мягким входом и мягким выходом (Soft Input Soft Output -SISO). Именно такой декодер обозначен на рис. 1.3. Изложенный алгоритм декодирования оказался чрезвычайно эффективным, и каждая последующая ите­рация увеличивает априорную информацию о переданном символе. При этом, первое и второе итеративные преобразования обеспечивают траектории близкие к траектории и только на 18 итерации декодер приближается к траектории .

Окончание процесса декодирования происходит либо после вы­полнения заданного количества Q итерационных циклов, либо после того, как величина поправки результата декодирования достигнет установленного порога. Вычислительная сложность турбо-декодера в расче­те на один информационный бит не зависит от длины информационного блока . В этом смысле ТК подобен сверточному коду. В то же время, с ростом , для ТК, как для всех блочных кодов, возрастает требуемый объем памяти декодера и, соответственно, время задержки декодирования . Компаниями France Telecom и Telediffusion de France запа­тентован широкий класс ТК. Более того, ТК утверждены для по­мехоустойчивого кодирования несколькими стандартами космичес­кой связи, а также мобильной связи третьего поколения .

Схема кодирования, с кодерами на 16 состояний (К=5), максимальной длиной перемежения 16384 и кодовыми скоростями R = 1/2; 1/3; 1/4; 1/6 утверждена в 1999 г. аме­риканским комитетом CCSDS (Consultative Committee for Space Data Systems) в стандарте передачи телеметрической информации с кос­мических аппаратов. В феврале 2000 г. консорциум DVB утвер­дил ТК в стандарте DVB-RCS для передачи информации по обратному спутниковому каналу (Return Channel for Satellite - RCS), т.е. в направлении от спутника к абоненту. ТК формируются на основе циклического рекурсивного систематического сверточного кодера (Circular Recursive Systematic Convolutional – CRSC). Использование стандарта совместно с вещательным стандартом DVB-S позволяет проектировать полноценную широкополосную систему спутникового интерактивного цифрового телевидения. Компанией Turbo Concept в партнерстве с европейским спутниковым оператором Eutelsat разработан турбо-декодер ТС1000 в соответствии со стандартом DVB-RCS. Использование ТК принято также в новом стандарте спутниковой системы связи Inmarsat. В универсальных мобильных системах (IMT-2000) третьего поколения (3G), предназначенных для передачи и приема мультимедийной информации, ТК также получили широкое применение. В стандарте CDMA-2000 для высокоскоростного режима передачи информации (больше 14.4 кбит/с) как к абоненту (forward link), так и от абонента (reverse link) используется ТК с восемью состояни­ями (К = 4) и кодовыми скоростями = 1/2; 1/3; 1/4. В стандарте UMTS для высокоскоростного режима передачи информации (больше 32 кбит/с) и приема с высоким качеством (BER около 106) используется ТК с восемью состояниями (К = 4) и двумя кодовыми скоростями = 1/2 и = 1/3.

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

Кодер использует элементов памяти , при этом ясно, что скорость кода равна 1/2, так как на каждый введенный информационный символ выдаются два кодовых символа. Кодер, использующий т элементов памяти, называется в дальнейшем кодер памяти т. В общем случае, сверточный кодер скорости k/п использу­ет к регистров сдвига, один регистр на один вводимый информационный символ. Под скоростью кода в теории кодирования понимается отношение . Более точное наименование параметра – относительная скорость кода , поскольку за единицу времени кодер принимает на вход информационных разрядов и трансформирует их в разрядов избыточного кода. Кодер памяти и скорости двоичного сверточного ко­да можно рассматривать также как дискретную линейную инвариантную во времени систему. Это означает, что отклик кодера на нулевую последовательность, в которой имеется единственная единица, т.е. выход кодера, полученный для входной последова­тельности , полностью определяет код. Стрелка вправо символизирует, что единица от источника информации первой поступит на вход кодера. Рассмотрим сверточный кодер, показанный на рис. 1.12.

Рис. 1.12. Кодер сверточного кода

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

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

Сверточный кодер памяти и скорости 1/n может быть задан также диаграммой состояний (см. рис. 1.13). В такой диаграмме должно быть состоя­ний.

Рис. 1.13. Диаграмма состояний сверточного кодера памяти 3 и скорости 1/2

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

По-видимому, метка ребер вида 1/00, 1/11, 1/00 или 0/11 нейтральна, когда символы на выходе одинаковы , но следует быть точным в представлении последовательности символов в метках вида 1/01, 1/10 или 0/10, 0/01, когда .

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

Табл. 1.8 Представление выходной последовательности кодера (7,5)

Номер такта работы декодера

Значение информационного символа

Состояние

Вид последовательности

на выходе кодера

00 01 11

10 00 01 11

10 10 00 01 11

00 10 10 00 01 11

01 00 10 10 00 01 11

11 01 00 10 10 00 01 11

11 11 01 00 10 10 00 01 11

11 11 11 01 00 10 10 00 01 11

В табл. 1.8 жирным шрифтом выделены двоичные символы, которые на предыдущих шагах работы кодера были первыми отправлены в канал связи, курсивом показаны символы, которые формирует кодер на очередном шаге своей работы. Сверточный кодер является линейной постоянной во вре­мени системой, импульсный отклик которой задан набором генераторов кода .

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

для . С помощью этих генераторов выходную последо­вательность кода можно записать как

при (1.18)

Выходные последовательности , равны дискретной свертке входной последовательности с генераторами кода . Уравнение (1.2) в ма­тричной форме имеет вид

где G – порождающая матрица сверточного кода.

В частности, для сверточного кода памяти т и скорости 1/2 имеем

.

Это, так на­зываемая, ленточная матрица с шириной ленты равной тп, для кода памяти т и скорости 1/п. В представленной матрице сохраняется требование об очередности следования двоичных символов в канал связи. Поэтому первый элемент матрицы находится в первой строке справа. Поступления новых значений приводит к наращиванию номеров столбцов матрицы слева, а номера строк увеличиваются снизу. Например, для кодера, представленного на рис. 1.10, и порождающая матрица имеет вид

. (1.20)

Пусть информационная последовательность имеет вид: , тогда произведение вектора на матрицу представляется последовательность двоичных символов (1.21)

, (1.21)

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

Рис. 1.14. Путь на треллис-диаграмме сверточного кода при m = 3

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

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

Состояние элемента памяти изменяется под воздействием бит от источника информации. Данные, поступающие в канал связи на каждом шаге диаграммы сохраняют временную последовательность, как это показано на первом шаге диаграммы. В ходе обработки любых данных кодер начинает свою работу в точке 00. Дальнейшее движение по диаграмме зависит от данных источника информации. Приняв от него на первом шаге 1, регистр памяти переходит в состояние 100. Как было показано выше, в канал связи будут переданы данные сначала с выхода кодера и только потом с выхода . После отправки данных в канал связи информация в регистре сдвигается на один шаг вправо, следовательно, последние две ячейки памяти будут иметь состояние 10, что отражает ребро графа переходных состояний кодера. Следует заметить, что сигналы на выходе элемента памяти компенсируются специальной схемой гашения и в дальнейшей работе кодера участия не принимают.

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

Принцип работы декодера иллюстрируется на рис. 1.15.

Рис. 1.15. Принцип работы декодера сверточного кода

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

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

Работа декодера начинается с левого верхнего узла решетки (также как и работа кодера). В этой точке треллис-диаграммы декодер анализирует ситуацию, когда кодер мог находиться в состоянии 000 и на его входе появился 0. Таким образом, в канал связи кодер мог отправить значения 00. Сравнивая эти показатели с показателями, которые реально принял приемник (данные из канала связи соответствуют значениям 11), декодер устанавливает вес этого пути. Это осуществляется путем поразрядного сложения по 2 данных из канала связи и данных выработанных декодером для данного ребра, т.е. 1100=11 и вес этого пути равен 2 (в результате сложения оказалось, что оба разряда равны единице).

Декодер проверяет второй предположительный вариант действия кодера, когда состояние его элементов памяти могло соответствовать значениям 100. В этой ситуации кодер должен был отправить в канал связи пару бит 11. Тогда вес этого ребра равен 0, т.е. зафиксировано полное совпадение информации, принятой из канала связи и информации, которая появляется на выходе декодера в состоянии 100.

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

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

На практике для декодирования сверточных кодов наи­большее распространение получил алго­ритм Витерби, предложенный в 70-х го­дах прошлого столетия, и несколько модификаций алгорит­ма последовательного декодирования. Подобные коды используются практически во всех стандартах консорциума DVB (Digital Video Broadcasting) и являются стандартом для многих спутниковых цифровых систем (например, Inmarsat и Intelsat).

Систематические коды

Систематическими кодами называются блочные (n , k ) коды, у которых k (обычно первые) разряды представляют собой двоичный неизбыточный код, а последующие r– контрольные разряды сформированы путем линейных комбинаций над информационными.

Основное свойство систематических кодов: сумма по модулю два двух и более разрешенных кодовых комбинаций также дает разрешенную кодовую комбинацию.

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

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

Образующая матрица М состоит из единичной матрицы размерностью k ×k и приписанной к ней справа матрицы дополнений размерностью k ×r :

Размерность матрицы дополнений выбирается из выражения (12.8) или (12.9). Причем вес w (число ненулевых элементов) каждой строки матрицы дополнений должен быть не меньше, чем d min – 1.

Проверочная матрица N строится из образующей матрицы следующим образом. Строками проверочной матрицы являются столбцы матрицы дополнений образующей матрицы. К полученной матрице дописывается справа единичная матрица размерностью r ×r . Таким образом, проверочная матрица размерностью r ×k имеет вид:

(12.12)

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

Пример 12.1. Получить алгоритм кодирования в систематическом коде всех четырехразрядных кодовых комбинаций, позволяющий исправлять единичную ошибку. Таким образом, задано число информационных символов k = 4 и кратность исправлений S = 1. По выражению (12.9) определим число контрольных символов:

Минимальное кодовое расстояние определим из выражения (12.6):

Строим образующую матрицу:

Проверочная матрица будет иметь вид

Обозначим символы, стоящие в каждой строке, через Символы и примем за контрольные, так как они будут входить только в одну из проверок.

Составим проверки для каждого контрольного символа. Из первой строки имеем

(12.13)

Из второй строки получим алгоритм для формирования контрольного символа a 6:

(12.14)

Аналогично из третьей строки получим алгоритм для формирования контрольного символа :

(12.15)

Нетрудно убедиться, что все результаты проверок на четность по выражениям (12.13)–(12.15) дают нуль, что свидетельствует о правильноcти составления образующей и проверочной матриц.

Пример 12.2. На основании алгоритма, полученного в примере 12.3, закодировать кодовую комбинацию в систематическом коде, позволяющим исправлять одиночную ошибку. По выражениям (12.13), (12.14) и (12.15) найдем значения для контрольных символов и :

(12.16)

Таким образом, кодовая комбинация F (X ) (10.16) в систематическом коде будет иметь вид

F (X ) = 1 1 0 1 0 1 0 . (12.17)

На приемной стороне производятся проверки Si принятой кодовой комбинации, которые составляются на основании выражений (12.13), (12.14) и (12.15):

Если синдром (результат проверок на четность) S 1 S 2 S 3 будет нулевого порядка, то искажений в принятой кодовой комбинации F ’(X) нет. При наличии искажений синдром S 1 S 2 S 3 указывает на искаженный символ.

Рассмотрим всевозможные состояния S 1 S 2 S 3:

S 1 S 2 S 3

0 0 0 – искажений нет,

1 0 0 – искажен символ а 5 ,

0 1 0 – искажен символ а 6 ,

0 0 1 – искажен символ а 7 ,

1 1 0 – искажен символ а 2 ,

0 1 1 – искажен символ а 1 ,

1 1 1 – искажен символ а 4 ,

1 0 1 – искажен символ а 3 . (12.19)

Пример 12.3. Кодовая комбинация F (X ) = 1 1 0 1 0 1 0 (пример 12.2) при передаче была искажена и приняла вид F ′(X ) = 1 1 1 1 0 1 0 = а 1 а 2 а 3 а 4 а 5 а 6 а 7 . Декодировать принятую кодовую комбинацию.

Произведем проверки согласно выражениям (10.18):

Полученный синдром S 1 S 2 S 3 = 101 согласно (10.19) свидетельствует об искажении символа а 3 . Заменяем этот символ на противоположный и получаем исправленную кодовую комбинацию F (X ) = 1 1 0 1 0 1 0, а исходная кодовая комбинация имеет G (X ) = 1 1 0 1, что совпадает с кодовой комбинацией, подлежащей кодированию в примере 12.2.

Рекуррентные коды

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

Рассмотрим процесс кодирования на примере кодовой комбинации, приведенный на рис. 12.4 (верхняя строка), если шаг сложения b = 2. Процесс образования контрольных символов показан на этом же рисунке (нижняя строка).

Кодирование производимое кодером, схема которого приведена на рис. 12.5. Как видно из рисунка 12.6 входные символы задерживаются на 2b тактов, что эквивалентно дописыванию 2b нулей перед входной кодовой комбинацией (рис. 12.4).



Рис. 12.4. Схема построения рекуррентного кода

Кодирование и декодирование производятся с помощью регистров сдвига и сумматоров по модулю два.

На выходе кодирующего устройства (рис. 12.5) получим последовательность символов

1 0 0 0 1 1 1 0 0 0 1 1 1 1 1 0 0 1 0 0 1 1 . (12.20)

Эта последовательность поступает в дискретный канал связи.

Структурная схема декодера приведена на рис. 12.6.

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



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

Устройство разделения (рис. 12.4) разделяет последовательность (12.21) на информационные последовательности:


и контрольные символы:

Последовательности символов (12.22) и (12.23) содержат ошибочные символы, которые подчеркнуты сверху. Формирователь контрольных символов из (10.22), по тем же правилам, что и при кодировании входной комбинации, выдает последовательность символов

0 0 1 0 0 1 0 0 0 0 1, (12.24)

которая в сумме по модулю два с последовательностью (10.23) дает исправляющую последовательность

0 0 1 1 0 0 1 0 1 0 0. (12.25)

Исправляющая последовательность (12.25) подается на инвертор, который выдает последовательность (12.26) и одновременно поступает на устройство задержки на b и 2b тактов. На выходе устройств задержки появляются последовательности (12.27) и (12.28) соответственно. На выходе схемы совпадения получаем последовательность (10.29)

1 1 0 0 1 1 0 1 0 1 1 … (12.26)
. . 0 0 1 1 0 0 1 0 1 … (12.27)
. . . . 0 0 1 1 0 0 1 … (12.28)
0 0 0 0 0 0 0 0 0 0 1 … (12.29)

Точки в последовательностях слева обозначают задержку символов на соответствующее число тактов. Единица на выходе схемы совпадения возникает только в тех случаях, когда на все его три входа подаются единицы. Она представляет собой команду исправить ошибку. Исправленная последовательность вырабатывается устройством коррекции в виде суммы по модулю два последовательности (12.29) и (12.22), задержанной на b тактов:

. (12.30)

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

После автоматического исправления последовательность (12.30) совпадает с последовательностью на рис. 12.4 (верхняя строка). Как следует из (12.29), на пути информационных символов включено 3b = 6 ячеек регистра сдвига. При этом для вывода всех ошибочных символов необходим защитный интервал 6b + 1 = 13 символов.

Рассмотренный код позволяет исправлять пакет ошибок длиной l = 2b = 4.

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

Сверточные коды

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

При использовании сверточных кодов поток данных разбивается на гораздо меньшие блоки длиной k символов (в частном случае k 0 = 1 ), которые называются кадрами информационных символов .

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

Основными характеристиками сверточных кодов являются величины:

k 0 – размер кадра информационных символов;

- n 0 – размер кадра кодовых символов;

- m – длина памяти кода;

- k = (m+1) × k 0 – информационная длина слова;

- n = (m+1) × n 0 – кодовая длина блока.

Кодовая длина блока – это длина кодовой последовательности, на которой сохраняется влияние одного кадра информационных символов .

Наконец, сверточный код имеет еще один важный параметр – скорость R = k/n, которая характеризует степень избыточности кода, вводимой для обеспечения исправляющих свойств кода.

Как и блочные, сверточные коды могут быть систематическими и несистематическими и обозначаются как линейные сверточные (n,k)– коды.

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

Примеры схем кодеров для систематического (8,4) и несистематического сверточных (6,3) –кодов приведены на рис. 12.7 и 12.8.

Ля того, чтобы схема рис. 12.8 стала систематической, надо убрать один сумматор. Корректирующие свойства от того не изменятся, но у несистематического кода свёртка больше – это выгодно и нет информации в открытом виде.

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

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

Импульсная переходная характеристика фильтра (ИПХ )(а кодер сверточного кода, по сути дела, является фильтром) есть реакция на единичное воздействие вида = (10000..... Для кодеров, изображенных на рис. 12.7 и 12.8, соответствующие импульсные характеристики будут иметь вид:

H 1 = (11.00.00.01.00.00… , (12.31)

H 2 = (11.10.11.00.00.00… . (12.32)

Еще одна форма задания сверточных кодов – это использование порождающих полиномов, однозначно связанных с ИПХ эквивалентного фильтра:

H 1 (x) = 1 + x + x 7 , (12.33)

H 2 (x) = 1 + x + x 2 + x 4 + x 5 . (12.34)

При этом кодовая последовательность F(x)на выходе сверточного кодера получается в результате свертки входной информационной последовательности G(x) с импульсной переходной характеристикой H .

Рассмотрим примеры кодирования последовательностей с использованием импульсной характеристики эквивалентного фильтра.

Пусть G(x)=(110 ... , тогда для кодера с ИПХH 1 = (11.00.00.01.00.00....

11.00.00.01.00.00…
11.00.00.01.00…

F(x) = 11.11.00.01.01.00.00… ,

или G(x) = (1011000…

11.00.00.01.00.00.00…
11.00.00.01.00…
11.00.00.01…

F(x) = 11.00.11.10.00.01.01.00… .

Иногда удобнее рассматривать полный порождающий полином сверточного кода P(x) как совокупность нескольких многочленов меньших степеней, соответствующих ячейкам выходного регистра кодера. Так, для кодера рис. 10.8 соответствующие частичные порождающие полиномы будут следующими:

P 1 (x) = 1 + x + x 2 , (12.35)

P 2 (x) = 1 + x 2 . (12.36)

Пусть, например, кодируется последовательность G(x) = (1010 … .

Тогда на входе 1 ключа DA1 при кодировании будет последовательность F 2 (x) = (11011000…, а на входе 2 – F 2 (x) = (10001000… .

Легко заметить, что при этом справедливы равенства

F 1 (x) = G(x) × P 1 (x), (12.37)

F 2 (x) = G(x)× P 2 (x). (12.38)

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

3.5. Сверточные коды

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

Код образуется следующим образом. В каждый i-й тактовый момент времени на вход кодирующего устройства поступает k символов сообщения

Выходные символы формируются с помощью рекуррентного соотношения из К символов, поступивших на вход в данный и предшествующие моменты времени,

, где коэффициенты преобразования.

Сверточными коды называют потому, что выходные символы КУ можно рассматривать как свертку импульсной характеристики КУ и входной информационной последовательности.

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

Сверточный код имеет избыточность .

Типичные значения: k, n = 1,2,…,8. К = 3…10. = 1/4,…, 7/8.

Сверточный код может быть задан несколькими способами:

1) применением рекуррентных соотношений, определяющих выходные символы по известным входным;

2) с помощью производящего полинома . Степень полинома определяет число блоков выходных символов, которые зависят от информационных.

3) с использованием графа и кодовой решетки, а также порождающей и проверочной матриц.

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

Формирование сверточного кода

Рассмотрим структуру кодера на примере сверточного кода со скоростью 1/2. Сверточный кодер с кодовым ограничением представляет собой регистр сдвига с ячейками. Выходные символы кодовой последовательности образуются суммированием по модулю 2 символов с определенным образом выбранных ячеек. На рис.3.4.1 представлен пример сверточного кодера со скоростью 1/2. На вход кодера поступают информационные символы и для каждого информационного символа на выходах двух сумматоров по модулю 2 формируются два выходных символа. Связи между ячейками регистра и сумматорами можно описать порождающими многочленами. В данном примере верхний и нижний сумматоры описываются полиномами ,

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

Назовем импульсной характеристикой кодера реакцию кодера на появление на входе информационной последовательности вида 1000..., т. е. = 1. Тогда реакция кодера на произвольную последовательность может быть представлена как результат суммирования по модулю 2 сдвигов импульсной характеристики. Таким образом, выходная последовательность может рассматриваться как свертка информационной последовательности с импульсной характеристикой кодера . Соответственно, порождающая матрица кодера может быть представлена в виде последовательности строк, элементами которых являются соответствующим образом сдвинутые символы импульсной характеристики. Поскольку информационная последовательность для сверточных кодов не разбивается на блоки, и длина кодовых слов не ограничена, порождающая матрица сверточного кода иногда называется полубесконечной.

В нашем примере импульсная характеристика имеет вид 110111000..., порождающая матрица соответственно

Кодовое слово, соответствующее произвольной входной последовательности , получается в результате умножения вектора-строки на матрицу : .


Удобно связь между входной и выходной последовательностями сверточного кодера описывать с помощью кодового дерева. При этом каждое ребро дерева отождествляется с определенным входным символом – верхнее ребро всегда с нулевым, нижнее – с единичным. Для нашего примера кодовое дерево представлено на рис.3.4.2. Каждая ветвь дерева задает выходную последовательность, соответствующую определенной входной. С ростом числа входных символов число возможных ветвей (путей) растет экспоненциально, что ограничивает практические возможности использования дерева. Можно, однако, заметить, что структура дерева сверточного кода является периодической. На рис. 5.5 каждая вершина кодового дерева обозначена числом от 0 до 3 в соответствии с содержимым двух левых ячеек кодового регистра в данной вершине дерева (младший разряд записывается левее). Это число называется состоянием кодера. Периодичность структуры дерева состоит в том, что ребра, выходящие из любых вершин, отражающих одинаковое состояние, полностью тождественны. Так, одинаковыми являются верхнее и нижнее поддеревья на уровне 3. На уровне 4 имеется четыре одинаковых куста по четыре вершины в каждом и т. д.

Материал из Википедии - свободной энциклопедии

История возникновения

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

Связь j-го сумматора по модулю 2 описывается j-ой порождающей последовательностью:

G j =(g j0 , g j1 ,g j2 ,…,g jm-1), (4.1)

где g_{ij} = \begin{cases}

1,&\text{if stage i of register tied with XOR gate}\\ 0,&\text{in other cases}

\end{cases} (4.2)

Типичные параметры сверточных кодов: k, n= 1,2,…,8; R=k/n=1/4,…,7/8; m=2,…,10.

Способ задания сверточных кодов

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

Порождающий многочлен полностью определяет структуру двоичного кодера сверточного кода . В отличие от блоковых кодов , каждый из которых описывается лишь одним порождающим многочленом , сверточный код описывается несколькими порождающими многочленами. Количество многочленов, которыми описывается сверточный код, определяется количеством выходных символов n. Представим последовательность информационных символов, поступающих на вход кодера, в виде многочлена: A(X) = a_{0} + a_{1}X + a_{2}X^2 + ... , где X i - символ оператора задержки на i тактов работы сдвигающего регистра, a i = {0,1} - информационные двоичные символы. Многочлены, описывающие n последовательностей кодовых символов, поступающих на вход коммутатора кодера, а затем в канал связи, имеют вид: B_{j}(X) = b_{0}^j + b_{1}^jX + b_{2}^jX^2 + ..., где b_{i}^j = \left\{ {0;1} \right\} двоичные кодовые символы на j-ом входе коммутатора кодера.

j-й порождающий многочлен сверточного кода имеет вид: G_{j}(X) = g_{0} + g_{1}X + g_{2}X^2 + ... g_{m-1}X^{m-1}, где g_{i} = {0 ; 1} двоичные коэффициенты, равные 1, если i-я ячейка сдвигающего регистра через схему суммирования связана с j-ым коммутатором кодера, и равны 0 в противном случае. Причем, в силу линейности сверточного кода и принятых обозначений получаем: B_j(X) = G_j(X) A(X).

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

В общем случае последовательность коэффициентов j-ого производящего многочлена будет иметь вид: G^j = {g_0^j , g_1^j , ... , g_{m-1}^j} и совпадает с порождающей последовательностью кода (4.1). Тогда, если A={a_0 , a_1 , a_2 , ...} - последовательность кодируемых символов, а B_{j}={b_{0}^j , b_{1}^j , b_{2}^j , ...} - последовательность кодовых символов на j-ом входе коммутатора кодера, то для любого из них, появляющегося в \mu-й момент времени (\mu = 0, 1, 2... ), можно записать:

b_{\mu}^{j} = \sum^{m-1}_{i=0} {a_{\mu-i}g_i^j} Таким образом, каждый кодовый символ выходной последовательности кодера сверточного кода определяется сверткой кодируемой информационной и порождающей последовательности, что и обуславливает название сверточных кодов . Сверточные коды являются частным случаем итеративных или рекуррентных кодов.

Применение

Сверточные коды используются для надежной передачи данных: видео, мобильной связи, спутниковой связи. Они используются вместе с кодом Рида - Соломона и другими кодами подобного типа. До изобретения турбо-кодов такие конструкции были наиболее действенными и удовлетворяли пределу Шеннона. Также свёрточное кодирование используется в протоколе 802.11a на физическом MAC-уровне для достижения равномерного распределения 0 и 1 после прохождения сигнала через скремблер , вследствие чего количество передаваемых символов увеличивается в два раза и, следовательно, мы можем добиться благоприятного приема на принимающем устройстве.

См. также

Напишите отзыв о статье "Свёрточный код"

Примечания

Литература

  • Галлагер Р. Теория информации и надёжная связь. - М .: Советское радио, 1974. - 720 с.
  • Морелос-Сарагоса Р. Искусство помехоустойчивого кодирования. Методы, алгоритмы, применение / пер. с англ. В. Б. Афанасьева . - М .: Техносфера, 2006. - 320 с. - (Мир связи). - 2000 экз. - ISBN 5-94836-035-0 .
  • Финк Л. М. Теория передачи дискретных сообщений. - М .: Сов. радио, 1963. - 576 с.
  • Никитин Г. И. Сверточные коды: Учебное пособие. - СПб. : Сов. радио, 2001. - 78 с.
  • Ошибка Lua: attempt to index local "entity" (a nil value).

Отрывок, характеризующий Свёрточный код

Они помолчали. Князь Андрей смотрел близко в эти зеркальные, непропускающие к себе глаза и ему стало смешно, как он мог ждать чего нибудь от Сперанского и от всей своей деятельности, связанной с ним, и как мог он приписывать важность тому, что делал Сперанский. Этот аккуратный, невеселый смех долго не переставал звучать в ушах князя Андрея после того, как он уехал от Сперанского.
Вернувшись домой, князь Андрей стал вспоминать свою петербургскую жизнь за эти четыре месяца, как будто что то новое. Он вспоминал свои хлопоты, искательства, историю своего проекта военного устава, который был принят к сведению и о котором старались умолчать единственно потому, что другая работа, очень дурная, была уже сделана и представлена государю; вспомнил о заседаниях комитета, членом которого был Берг; вспомнил, как в этих заседаниях старательно и продолжительно обсуживалось всё касающееся формы и процесса заседаний комитета, и как старательно и кратко обходилось всё что касалось сущности дела. Он вспомнил о своей законодательной работе, о том, как он озабоченно переводил на русский язык статьи римского и французского свода, и ему стало совестно за себя. Потом он живо представил себе Богучарово, свои занятия в деревне, свою поездку в Рязань, вспомнил мужиков, Дрона старосту, и приложив к ним права лиц, которые он распределял по параграфам, ему стало удивительно, как он мог так долго заниматься такой праздной работой.

На другой день князь Андрей поехал с визитами в некоторые дома, где он еще не был, и в том числе к Ростовым, с которыми он возобновил знакомство на последнем бале. Кроме законов учтивости, по которым ему нужно было быть у Ростовых, князю Андрею хотелось видеть дома эту особенную, оживленную девушку, которая оставила ему приятное воспоминание.
Наташа одна из первых встретила его. Она была в домашнем синем платье, в котором она показалась князю Андрею еще лучше, чем в бальном. Она и всё семейство Ростовых приняли князя Андрея, как старого друга, просто и радушно. Всё семейство, которое строго судил прежде князь Андрей, теперь показалось ему составленным из прекрасных, простых и добрых людей. Гостеприимство и добродушие старого графа, особенно мило поразительное в Петербурге, было таково, что князь Андрей не мог отказаться от обеда. «Да, это добрые, славные люди, думал Болконский, разумеется, не понимающие ни на волос того сокровища, которое они имеют в Наташе; но добрые люди, которые составляют наилучший фон для того, чтобы на нем отделялась эта особенно поэтическая, переполненная жизни, прелестная девушка!»
Князь Андрей чувствовал в Наташе присутствие совершенно чуждого для него, особенного мира, преисполненного каких то неизвестных ему радостей, того чуждого мира, который еще тогда, в отрадненской аллее и на окне, в лунную ночь, так дразнил его. Теперь этот мир уже более не дразнил его, не был чуждый мир; но он сам, вступив в него, находил в нем новое для себя наслаждение.
После обеда Наташа, по просьбе князя Андрея, пошла к клавикордам и стала петь. Князь Андрей стоял у окна, разговаривая с дамами, и слушал ее. В середине фразы князь Андрей замолчал и почувствовал неожиданно, что к его горлу подступают слезы, возможность которых он не знал за собой. Он посмотрел на поющую Наташу, и в душе его произошло что то новое и счастливое. Он был счастлив и ему вместе с тем было грустно. Ему решительно не об чем было плакать, но он готов был плакать. О чем? О прежней любви? О маленькой княгине? О своих разочарованиях?… О своих надеждах на будущее?… Да и нет. Главное, о чем ему хотелось плакать, была вдруг живо сознанная им страшная противуположность между чем то бесконечно великим и неопределимым, бывшим в нем, и чем то узким и телесным, чем он был сам и даже была она. Эта противуположность томила и радовала его во время ее пения.
Только что Наташа кончила петь, она подошла к нему и спросила его, как ему нравится ее голос? Она спросила это и смутилась уже после того, как она это сказала, поняв, что этого не надо было спрашивать. Он улыбнулся, глядя на нее, и сказал, что ему нравится ее пение так же, как и всё, что она делает.
Князь Андрей поздно вечером уехал от Ростовых. Он лег спать по привычке ложиться, но увидал скоро, что он не может спать. Он то, зажжа свечку, сидел в постели, то вставал, то опять ложился, нисколько не тяготясь бессонницей: так радостно и ново ему было на душе, как будто он из душной комнаты вышел на вольный свет Божий. Ему и в голову не приходило, чтобы он был влюблен в Ростову; он не думал о ней; он только воображал ее себе, и вследствие этого вся жизнь его представлялась ему в новом свете. «Из чего я бьюсь, из чего я хлопочу в этой узкой, замкнутой рамке, когда жизнь, вся жизнь со всеми ее радостями открыта мне?» говорил он себе. И он в первый раз после долгого времени стал делать счастливые планы на будущее. Он решил сам собою, что ему надо заняться воспитанием своего сына, найдя ему воспитателя и поручив ему; потом надо выйти в отставку и ехать за границу, видеть Англию, Швейцарию, Италию. «Мне надо пользоваться своей свободой, пока так много в себе чувствую силы и молодости, говорил он сам себе. Пьер был прав, говоря, что надо верить в возможность счастия, чтобы быть счастливым, и я теперь верю в него. Оставим мертвым хоронить мертвых, а пока жив, надо жить и быть счастливым», думал он.

В одно утро полковник Адольф Берг, которого Пьер знал, как знал всех в Москве и Петербурге, в чистеньком с иголочки мундире, с припомаженными наперед височками, как носил государь Александр Павлович, приехал к нему.
– Я сейчас был у графини, вашей супруги, и был так несчастлив, что моя просьба не могла быть исполнена; надеюсь, что у вас, граф, я буду счастливее, – сказал он, улыбаясь.
– Что вам угодно, полковник? Я к вашим услугам.
– Я теперь, граф, уж совершенно устроился на новой квартире, – сообщил Берг, очевидно зная, что это слышать не могло не быть приятно; – и потому желал сделать так, маленький вечерок для моих и моей супруги знакомых. (Он еще приятнее улыбнулся.) Я хотел просить графиню и вас сделать мне честь пожаловать к нам на чашку чая и… на ужин.
– Только графиня Елена Васильевна, сочтя для себя унизительным общество каких то Бергов, могла иметь жестокость отказаться от такого приглашения. – Берг так ясно объяснил, почему он желает собрать у себя небольшое и хорошее общество, и почему это ему будет приятно, и почему он для карт и для чего нибудь дурного жалеет деньги, но для хорошего общества готов и понести расходы, что Пьер не мог отказаться и обещался быть.
– Только не поздно, граф, ежели смею просить, так без 10 ти минут в восемь, смею просить. Партию составим, генерал наш будет. Он очень добр ко мне. Поужинаем, граф. Так сделайте одолжение.
Противно своей привычке опаздывать, Пьер в этот день вместо восьми без 10 ти минут, приехал к Бергам в восемь часов без четверти.
Берги, припася, что нужно было для вечера, уже готовы были к приему гостей.
В новом, чистом, светлом, убранном бюстиками и картинками и новой мебелью, кабинете сидел Берг с женою. Берг, в новеньком, застегнутом мундире сидел возле жены, объясняя ей, что всегда можно и должно иметь знакомства людей, которые выше себя, потому что тогда только есть приятность от знакомств. – «Переймешь что нибудь, можешь попросить о чем нибудь. Вот посмотри, как я жил с первых чинов (Берг жизнь свою считал не годами, а высочайшими наградами). Мои товарищи теперь еще ничто, а я на ваканции полкового командира, я имею счастье быть вашим мужем (он встал и поцеловал руку Веры, но по пути к ней отогнул угол заворотившегося ковра). И чем я приобрел всё это? Главное умением выбирать свои знакомства. Само собой разумеется, что надо быть добродетельным и аккуратным».
Берг улыбнулся с сознанием своего превосходства над слабой женщиной и замолчал, подумав, что всё таки эта милая жена его есть слабая женщина, которая не может постигнуть всего того, что составляет достоинство мужчины, – ein Mann zu sein [быть мужчиной]. Вера в то же время также улыбнулась с сознанием своего превосходства над добродетельным, хорошим мужем, но который всё таки ошибочно, как и все мужчины, по понятию Веры, понимал жизнь. Берг, судя по своей жене, считал всех женщин слабыми и глупыми. Вера, судя по одному своему мужу и распространяя это замечание, полагала, что все мужчины приписывают только себе разум, а вместе с тем ничего не понимают, горды и эгоисты.
Берг встал и, обняв свою жену осторожно, чтобы не измять кружевную пелеринку, за которую он дорого заплатил, поцеловал ее в середину губ.
– Одно только, чтобы у нас не было так скоро детей, – сказал он по бессознательной для себя филиации идей.
– Да, – отвечала Вера, – я совсем этого не желаю. Надо жить для общества.
– Точно такая была на княгине Юсуповой, – сказал Берг, с счастливой и доброй улыбкой, указывая на пелеринку.
В это время доложили о приезде графа Безухого. Оба супруга переглянулись самодовольной улыбкой, каждый себе приписывая честь этого посещения.
«Вот что значит уметь делать знакомства, подумал Берг, вот что значит уметь держать себя!»
– Только пожалуйста, когда я занимаю гостей, – сказала Вера, – ты не перебивай меня, потому что я знаю чем занять каждого, и в каком обществе что надо говорить.
Берг тоже улыбнулся.
– Нельзя же: иногда с мужчинами мужской разговор должен быть, – сказал он.
Пьер был принят в новенькой гостиной, в которой нигде сесть нельзя было, не нарушив симметрии, чистоты и порядка, и потому весьма понятно было и не странно, что Берг великодушно предлагал разрушить симметрию кресла, или дивана для дорогого гостя, и видимо находясь сам в этом отношении в болезненной нерешительности, предложил решение этого вопроса выбору гостя. Пьер расстроил симметрию, подвинув себе стул, и тотчас же Берг и Вера начали вечер, перебивая один другого и занимая гостя.
Вера, решив в своем уме, что Пьера надо занимать разговором о французском посольстве, тотчас же начала этот разговор. Берг, решив, что надобен и мужской разговор, перебил речь жены, затрогивая вопрос о войне с Австриею и невольно с общего разговора соскочил на личные соображения о тех предложениях, которые ему были деланы для участия в австрийском походе, и о тех причинах, почему он не принял их. Несмотря на то, что разговор был очень нескладный, и что Вера сердилась за вмешательство мужского элемента, оба супруга с удовольствием чувствовали, что, несмотря на то, что был только один гость, вечер был начат очень хорошо, и что вечер был, как две капли воды похож на всякий другой вечер с разговорами, чаем и зажженными свечами.
Вскоре приехал Борис, старый товарищ Берга. Он с некоторым оттенком превосходства и покровительства обращался с Бергом и Верой. За Борисом приехала дама с полковником, потом сам генерал, потом Ростовы, и вечер уже совершенно, несомненно стал похож на все вечера. Берг с Верой не могли удерживать радостной улыбки при виде этого движения по гостиной, при звуке этого бессвязного говора, шуршанья платьев и поклонов. Всё было, как и у всех, особенно похож был генерал, похваливший квартиру, потрепавший по плечу Берга, и с отеческим самоуправством распорядившийся постановкой бостонного стола. Генерал подсел к графу Илье Андреичу, как к самому знатному из гостей после себя. Старички с старичками, молодые с молодыми, хозяйка у чайного стола, на котором были точно такие же печенья в серебряной корзинке, какие были у Паниных на вечере, всё было совершенно так же, как у других.

Пьер, как один из почетнейших гостей, должен был сесть в бостон с Ильей Андреичем, генералом и полковником. Пьеру за бостонным столом пришлось сидеть против Наташи и странная перемена, происшедшая в ней со дня бала, поразила его. Наташа была молчалива, и не только не была так хороша, как она была на бале, но она была бы дурна, ежели бы она не имела такого кроткого и равнодушного ко всему вида.
«Что с ней?» подумал Пьер, взглянув на нее. Она сидела подле сестры у чайного стола и неохотно, не глядя на него, отвечала что то подсевшему к ней Борису. Отходив целую масть и забрав к удовольствию своего партнера пять взяток, Пьер, слышавший говор приветствий и звук чьих то шагов, вошедших в комнату во время сбора взяток, опять взглянул на нее.
«Что с ней сделалось?» еще удивленнее сказал он сам себе.
Князь Андрей с бережливо нежным выражением стоял перед нею и говорил ей что то. Она, подняв голову, разрумянившись и видимо стараясь удержать порывистое дыхание, смотрела на него. И яркий свет какого то внутреннего, прежде потушенного огня, опять горел в ней. Она вся преобразилась. Из дурной опять сделалась такою же, какою она была на бале.
Князь Андрей подошел к Пьеру и Пьер заметил новое, молодое выражение и в лице своего друга.
Пьер несколько раз пересаживался во время игры, то спиной, то лицом к Наташе, и во всё продолжение 6 ти роберов делал наблюдения над ней и своим другом.
«Что то очень важное происходит между ними», думал Пьер, и радостное и вместе горькое чувство заставляло его волноваться и забывать об игре.
После 6 ти роберов генерал встал, сказав, что эдак невозможно играть, и Пьер получил свободу. Наташа в одной стороне говорила с Соней и Борисом, Вера о чем то с тонкой улыбкой говорила с князем Андреем. Пьер подошел к своему другу и спросив не тайна ли то, что говорится, сел подле них. Вера, заметив внимание князя Андрея к Наташе, нашла, что на вечере, на настоящем вечере, необходимо нужно, чтобы были тонкие намеки на чувства, и улучив время, когда князь Андрей был один, начала с ним разговор о чувствах вообще и о своей сестре. Ей нужно было с таким умным (каким она считала князя Андрея) гостем приложить к делу свое дипломатическое искусство.