Коды для системы CDMA — ключевое понятие, поскольку эта технология основана на кодовом разделении каналов. Применение в CDMA кодовых последовательностей позволяет более эффективно, чем с помощью других технологий доступа, бороться с помехами и замираниями в радиоканале (см. «Сети», 2000, № 10, с. 18 и № 11, c. 22).
Вполне правомочен вопрос, а не излишне ли использование в CDMA дополнительного кодирования и перемежения символов? Нельзя ли обойтись обработкой тех кодовых последовательностей, которые и без того передаются по радиоканалу? Теоретически, это возможно, но лишь тогда, когда все услуги имеют одинаковые показатели качества сервиса (QoS). На деле же типы передаваемой информации разнообразны (речь, факсимильные сообщения, короткие сообщения, мультимедиа, потоки Internet-данных), и каждому из них соответствуют различные показатели QoS, скорость, допустимая задержка и т.д.
Кодирование и перемежение служат для повышения достоверности приема сигналов в условиях воздействия помех и при замираниях полезного сигнала.
Канальное кодирование
Считается, что чем больше избыточных символов вводится в сигнал, тем больше его база и тем выше корректирующая способность кода. Однако это утверждение справедливо лишь отчасти. Суть в том, что один из основных показателей качества передачи — отношение сигнал/шум Eb/No (где Eb — энергия сигнала на бит, Nо — спектральная плотность шума) — можно повысить и без кодирования, только за счет увеличения длительности сигнала. Применение кодирования (а как следствие, усложнение аппаратуры) оправданно лишь в тех случаях, когда оно позволяет получить существенный выигрыш в величине отношения Eb/No.
Отметим, что для каналов со случайным характером ошибок (обычно с аддитивными помехами типа «белого шума») практический интерес представляют лишь несколько кодов из десятков известных. Наиболее часто разработчики используют три вида кодов: сверточные, Рида-Соломона и турбокоды.
Сочетание нескольких схем помехоустойчивого кодирования позволяет учесть различные условия эксплуатации. Так, сверточный код обычно используется для передачи речевого трафика, когда вероятность ошибки на бит может быть достаточно большой. При передаче данных, когда требуется более высокая надежность, применяются так называемые каскадные коды, в которых внешним обычно является код Рида—Соломона, а внутренним — сверточный.
Процедура кодирования в CDMA-системах выполняется в два этапа. На первом нивелируются различия в отношениях сигнал/шум Eb/No (эта функция аппаратно реализуется с помощью кодера) различных типов трафика, а на втором согласуются скорости (аппаратно реализуется с помощью схем повторения и исключения бит).
Устранение различий в отношении сигнал/шум. В CDMA-кодере могут использоваться одна или две из четырех типичных кодирующих цепочек (рис. 1): сверточное кодирование, каскадное кодирование (внешний код Рида—Соломона + перемежение внешнего кода + сверточный код), турбокодирование и специальное кодирование. Первая из них, как уже отмечалось, используется для кодирования речевых сигналов, две следующие — данных, а последняя, согласно ее названию, — специальных сигналов.
Кодирование речи имеет ряд принципиальных особенностей. Прежде всего, необходимо обеспечить интерактивную связь в режиме реального времени, при которой задержка, связанная с обработкой информации, не должна превышать допустимой величины. Используемые в CDMA речевые кодеки основаны на различных модификациях алгоритма CELP (линейное предсказание с кодовым возбуждением), который позволяет добиться не только эффективного сжатия речевого сигнала, но и кодирования с заданным отношением сигнал/помеха при вероятности ошибки не более 10-3.
В отличие от речевых кодеров, «источники» данных, как правило, не имеют собственных (встроенных) процедур кодирования. Повышение помехоустойчивости оборудования, предназначенного для передачи такой информации, решается на канальном уровне (модель OSI); при этом вероятность ошибки должна быть не более 10-6.
В проектах новых CDMA-стандартов, в том числе на системы 3-го поколения, используются эти же схемы кодирования. Необходимо отметить, что если параметры сверточных кодов для них практически унифицированы (кодовое ограничение K=9, скорость кодирования R=1/3, 1/2), то характеристики турбокодов различаются. Так, в проекте cdma2000 турбокоды с параметрами K=4 и R=1/4 (1/3, 1/2) используются, в тех случаях, когда скорость передачи составляет не менее 14,4 кбит/с. В технологии UTRA/W-CDMA предполагается применять турбокодирование при больших скоростях передачи данных (32 кбит/с и выше); при этом характеристики кодов будут уже иными: K=3 и R=1/3 или 1/2.
Выбор скорости кодирования ниже R=1/4 невыгоден, так как реально достижимый выигрыш в величине отношения сигнал/шум оказывается незначительным, а сложность декодирования резко возрастает по мере снижения скорости кодирования. Например, для сверточного кода с K=9, R=1/4 по сравнению с кодом K=9, R=1/2 превышение составляет около 0,5 дБ.
Следует отметить, что два рассмотренных случая (передачи речи и данных с QoS, определяемым вероятностью ошибки на бит 10-3 и 10-6) не исчерпывают всего спектра возможных кодов. Иногда для расширения функциональных возможностей радиоинтерфейса требуется адаптировать определенный класс кодов к конкретному виду передачи информации, для чего используются специальные коды. Одним из типичных примеров специальных кодов является неравномерная защита от ошибок, необходимая для некоторых типов речевых кодеков. Возможны и другие варианты специального кодирования.
Согласование скоростей. Когда устранены различия по показателю сигнал/шум для разных видов информации, начинается второй этап кодирования. Основная его цель — обеспечить согласование между переменными скоростями передачи логических каналов и фиксированной скоростью на входе широкополосного CDMA-модулятора. Если мультиплексируются потоки, для которых заданы одинаковые показатели QoS, процедура согласования не нужна. Она необходима только при передаче данных с различными требованиями к обслуживанию.
Согласование скоростей может быть статическим и динамическим, т.е. изменяющимся от кадра к кадру. Статическое согласование осуществляется достаточно редко, обычно при добавлении или удалении канала. При этом преследуется цель изменить скорость кодированного потока таким образом, чтобы можно было использовать стандартные средства мультиплексирования данных. Согласование реализуется с помощью двух процедур: n-кратного повторения кодированных символов и периодического исключения («выкалывания») каждого j-го символа (puncturing). Далее эти процедуры согласования будут пояснены на конкретных примерах кодирующих цепочек.
Динамическое согласование каналов осуществляется после операции мультиплексирования и позволяет обеспечить соответствие мгновенной скорости группового транспортного канала пропускной способности физического канала.
Если объем передаваемой информации слишком велик и превышает максимальную пропускную способность канала, то данные разбиваются на блоки меньшего размера и операции кодирования и перемежения для них выполняются независимо. Такую процедуру также принято относить к согласованию скоростей.
Перемежение
Какие бы совершенные коды с исправлением ошибок не использовались в каналах с замираниями, они не могут гарантировать высокой достоверности приема. Основная причина — резкое снижение корректирующих способностей кодов при появлении в канале пакетов ошибок, вызванных сильными помехами и замираниями. Попытки создания специальных кодов, способных исправлять подобные серии ошибок, предпринимались неоднократно (коды Хагельбаргера, Файера и т.п.), однако из-за огромной вычислительной сложности, экспоненциально возрастающей с увеличением длины пакета ошибок, они не нашли практического применения.
Из этой ситуации был найден достаточно неожиданный и простой выход: выполнение операции декодирования в два этапа позволяет почти полностью избавиться от помех. На первом этапе производится декорреляция пакетов ошибок, в результате которой они преобразуются в группу случайных (обычно одиночных) ошибок. На втором этапе сигнал обрабатывается с помощью классических методов борьбы со случайными ошибками (сверточные коды, турбокоды), что приводит к их полному подавлению.
Для борьбы с замираниями и возникновением связанных с ними пакетов ошибок служит процедура перемежения. Она состоит в перестановке символов кодированной последовательности до ее модуляции и восстановлении исходной последовательности после демодуляции. Перестановка позволяет так разнести рядом стоящие символы, чтобы они оказались разделены группой других символов, передаваемых в том же блоке данных. Данная операция не вносит избыточности, а только изменяет порядок следования символов или бит. Однако чем больше глубина перемежения (т.е. максимальное расстояние, на которое разносятся соседние символы входной последовательности), тем больше задержка.
Поясним идею перемежения на примере многошагового перемежителя (MIL, Multi-Stage Interliving). Принцип его работы достаточно прост. Исходная кодовая последовательность из L символов разбивается на M блоков по N символов в каждом и преобразуется в матрицу размером L=[NxM], где N — число символов в строк, а M — число столбцов. Операция блочного перемежения заключается в последовательной построчной записи входных данных и считывании этой информации по столбцам. В результате порядок следования символов в выходной последовательности будет изменен, например k-я строка матрицы будет выглядеть как {k, M+k, 2M+k,...(N-1)(M+k)}. Из приведенной записи видно, что два любых соседних символа входной последовательности будут разнесены в радиоканале на M-1 символ.
Максимальное расстояние, на которое разносятся соседние символы (т.е. глубина перемежения) определяется как d=TM (где T — длительность символа). Если время, в течение которого происходил сбой сигнала, меньше глубины перемежения, любой пакет ошибок будет преобразован в группу из M одиночных ошибок, которые легко устраняются сверточным кодом.
В общем случае выбор глубины перемежения зависит от двух факторов. С одной стороны, чем больше расстояние между соседними символами, тем большей длины пакет ошибок может быть исправлен. С другой стороны, чем больше глубина перемежения, тем сложнее аппаратно-программная реализация оборудования и больше задержка сигнала.
Различают внешнее и внутреннее перемежение. Внутреннее перемежение обычно осуществляется в пределах одного кадра, внешнее — в пределах интервала из нескольких кадров (обычно размером от 10 до 80 мс).
Кодирующие цепочки
Уникальность технологии, использующей кодовое разделение каналов (CDMA) состоит в том, что каждый логический канал отображается на физический индивидуальным образом. Таким образом, этот канал отличается от других не только своими функциональными возможностями и скоростью, но и типом используемого кода и его параметрами.
IS-95. Для защиты от ошибок в системах этого стандарта используется сверточное кодирование с внутриканальным перемежением. В передающем тракте базовой станции (линия «вниз») реализованы три кодирующие цепочки (см. таблицу): для синхроканала (SYNC), пейджингового канала (PCH), основного и вспомогательного каналов трафика (FCH/SCH). На линии «вверх» (к мобильной станции) используются две цепочки — для канала доступа (ACH) и канала трафика (FCH/SCH). Непрерывно излучаемый пилотный сигнал не требует применения дополнительных кодов.
В состав каждой кодирующей цепочки входят сверточный кодер с параметрами K=9, R=1/2 (базовая станция) и K=9, R=1/3 (мобильная станция), повторитель и блочный перемежитель (глубина перемежения 20 мс). Коэффициент повторения при различных конфигурациях канала трафика равен 2, 4 или 8. При максимальной скорости входного потока символы не повторяются.
Каналы, в которых используются различающиеся коды и законы перемежения, имеют разные уровни мощности при приеме, а следовательно, разные вероятности ошибок при приеме.
cdma2000. Помехоустойчивое кодирование в системе cdma2000 реализуется с помощью сверточных и турбокодов. Сверточный код используется во всех каналах F-FSH и F-SCH, а также в других каналах со скоростью ниже 14,4 кбит/с (при более высоких скоростях сверточный код хотя и применим, но не так эффективен, как турбокоды).
Принципы формирования сигналов и параметры кодирования в каналах SYNC, PCH, ACH практически одинаковы с применяемыми в системах на базе IS-95. Основное отличие состоит в том, что скорость передачи данных по каналу доступа ACH составляет 9,6 или 4,8 кбит/с (более низкая из этих скоростей назначается по команде базовой станции в случае ухудшения условий приема).
При кодировании любого из CDMA-каналов (рис. 2) образуются четыре кодирующие цепочки. Их структура определяется скоростью входного потока и может динамически изменяться в зависимости от помеховой обстановки и условий распространения радиоволн. Каждая кодирующая цепочка состоит из кода обнаружения ошибок CRC (6—12 бит), восьми конечных бит (они необходимы для упрощения процедуры декодирования сверточного кода), сверточного кода с параметрами K=9, R=1/3, повторителей (n=2, 4, 8), блоков «вырезания» бит и внутрикадрового перемежителя (20 мс).
UTRA/W-CDMA. Для более эффективного использования физического канала CDMA-системы при передаче низкоскоростной информации предусматривается мультиплексирование нескольких низкоскоростных потоков данных в одном физическом канале. Параметры кодирования для всех транспортных каналов, кроме выделенного DCH, одинаковы (K=9, R=1/2). Для выделенного канала DCH при скорости передачи информации более 32 кбит/с используется турбокод K=3, R=1/3.
В технологии W-CDMA глубина перемежения, избираемая для транспортных каналов, зависит от величины допустимой задержки. В спецификациях указаны четыре значения: 10 мс (перемежение в пределах кадра), 20, 40 и 80 мс.
ОБ АВТОРЕ
Леонид Невдяев (leonn@networld.ru) — независимый автор.
Показатель | Прямой канал | Обратный канал | |||
SYNC | PCH | FCH/SCH | ACH | FCH/SCH | |
Входная скорость, бит/с | 1200 | 2400, 4800, 9600 | 1200, 2400, 4800, 9600 | 4800 | 1200, 2400, 4800, 9600 |
Параметры сверточного кода | R=1/2, k=9 | R=1/2, k=9 | R=1/2, k=9 | R=1/3, k=9 | R=1/3, k=9 |
Скорость на выходе сверточного кодера, бит/с | 2400 | 4800, 9600, 19 200 | 2400, 4800, 9600, 19 200 | 14 400 | 3600, 7200, 14 400, 28 800 |
Скорость на выходе повторителя, бит/с | 4800 | 19 200 | 19 200 | 28 800 | 28 800 |
Глубина блочного перемежения, мс | 20 | 20 | 20 | 20 | 20 |