7.4. Множественный доступ с кодовым разделением
Основные принципы
Множественный доступ с кодовым разделением (code division multiple access — CDMA) является одним из методов уплотнения с использованием расширенного спектра. Рассмотрение принципов работы CDMA начнем с информационного сигнала со скоростью передачи D. В соответствии со схемой, индивидуальной для каждого пользователя и именуемой пользовательским кодом, каждый бит данных разбивается на k элементарных сигналов. Канал, используемый для передачи данных, характеризуется скоростью передачи kD элементарных сигналов/с. Рассмотрим в качестве примера вариант k = 64. Для простоты код будем рассматривать как последовательность значений "1" и "−1". На рис. 7.10 изображены коды трех пользователей (А, В, С), каждый из которых использует в процессе связи приемник базовой станции R. Код пользователя А имеет вид сА = <1, −1, −1, 1, −1, 1>. Для пользователей В и С коды равны, соответственно, сB = <1, 1, −1, −1, 1, 1> и сC = <1, 1, −1, 1, 1, −1>.

Рис. 7.10. Пример CDMA
Рассмотрим процесс связи пользователя А с базовой станцией. Предполагается, что базовой станции известен код А. Для простоты будем считать, что процесс связи является синхронизированным, т.е. что базовой станции известны моменты времени, в которые следует ожидать код. Для передачи одного бита информации А передает свой код в виде последовательности элементарных сигналов <1, −1, −1, 1, −1, 1>. Бели передаваемый бит является нулем, пользователь передает код-дополнение ("1" заменяется "−1" и наоборот) <−1, 1, 1, −1, 1, −1>. Приемник базовой станции декодирует последовательности элементарных сигналов. В нашем примере для декодирования полученной последовательности элементарных сигналов d = <d1, d2, d3, d4, d5, d6> приемник R использует следующую функцию (предполагается, что необходимо установить связь с пользователем и, код которого <cl, с2, с3, с4, с5, с6> известен приемнику):
Su(d) = dl × cl + d2 × c2 + d3 × c3 + d4 × c4 + d5 × c5 + d6 × c6.
Индекс и в Su(d) означает, что нас интересует пользователь и. Применим эту формулу для пользователя А (рис. 7.10). Если А пересылает бит со значением 1, тогда последовательность d равна <1, −1, −1, 1, −1, 1>. Подставив соответствующие значения, получим выражение для SA(d):
SA(l, −1, −1, 1, −1, 1) = 1 × 1 + (−1) × (−1) + (−1) × (−1) + 1 × 1 + (−1) × (−1) + 1 × 1 = 6.
Если пользователь А пересылает бит со значением 0 (d= <−1, 1, 1, −1, 1, −1>), выраже-ние изменится следующим образом:
SA(−1, 1, 1, −1, 1, −1) = (−1) × 1 + 1 × (−1) + 1 × (−1) + (−1) × 1 + 1 × (−1) + (−1) × 1 = −6.
Обратите внимание, что независимо от структуры передаваемой последовательности d, состоящей из "1" и "−1", всегда выполняется неравенство −6 < SA(d) < 6. Максимальные значения 6 и −6 соответствуют прямому и дополнительному коду пользователя А. Таким образом, если значение SA равно 6, это означает, что от пользователя А получен бит, равный 1. При SA, равном −6, считается, что пользователь А передает бит со значением О. Все прочие значения SA соответствуют либо сеансам передачи других пользователей, либо ошибке. Итак, в чем смысл приведенного примера? Ответ на вопрос очевиден, если рассмотреть декодирование сигнала пользователя B с помощью кода SA (т.е. декодирование производится посредством неправильного кода). Если пользователь B пересылает бит 1, последовательность d равна <1, 1, −1, −1, 1, 1>. Тогда
SA(1, 1, −1, −1, 1, 1) = (−1) × 1 + (−1) × (−1) + 1 × (−1) + 1 × 1 + (−1) × (−1) + (−1) × 1 = 0.
Таким образом, нежелательный сигнал пользователя B не виден вообще. Легко проверить, что если B будет пересылать бит со значением 0, декодер снова даст результат SA = 0. Если пользователи А и В одновременно передают сигналы sA и sB, соответственно, а декодер приемника является линейным, то имеет место равенство SA(sA + sB) = SA(sB) + SA(sB) = SA(sA). Равенство справедливо, поскольку при использовании кода А декодер попросту игнорирует сигналы пользователя В. Коды пользователей А и В, для которых выполняется условие SA(cB) = SB(cA) = 0, называются ортогональными. Такие коды достаточно удобно использовать, однако на практике достичь полной ортогональности сложно. В большинстве случаев при X ≠ Y абсолютное значение SX(cY) мало, но не равно нулю. Таким образом, легко различить варианты X ≠ Y и X = Y. В нашем примере SA(cC) = SC(cA) = 0, а SB(cC) = SC(cB) = 2. В последнем случае сигнал пользователя C не будет полностью отфильтрован декодером и внесет незначительный вклад в декодированный сигнал. С помощью декодера Su приемник может выделить сигнал, переданный и, даже если в рассматриваемой ячейке одновременно передают собственные сигналы еще несколько пользователей.
Результаты приведенного выше обсуждения обобщаются в табл. 7.1.
На практике приемник CDMA способен либо полностью отфильтровать побочные сигналы пользователей, либо вклад таких сигналов выражается в шуме незначительной мощности. В то же время система связи может выйти из строя, если одновременно с пользователем, сигнал которого пытается получить приемник, доступ к тому же каналу пытаются получить множество других пользователей или если один либо несколько мешающих сигналов имеют слишком большую мощность (например, из-за нахождения пользователя близко к приемнику), что называется "проблемой расположения" (near/far problem).
Таблица 7.1. Пример CDMA
|
а) Коды пользователей | |||||||
|
Пользователь А |
1 |
−1 |
−1 |
1 |
−1 |
1 |
|
|
Пользователь В |
1 |
1 |
−1 |
−1 |
1 |
1 |
|
|
Пользователь C |
1 |
1 |
−1 |
1 |
1 |
−1 |
|
|
б) Передача сигнала пользователем А | |||||||
|
Передача (бит данных = 1) |
1 |
−1 |
−1 |
1 |
−1 |
1 |
|
|
Кодовое слово приемника |
1 |
−1 |
−1 |
1 |
−1 |
1 |
|
|
Умножение |
1 |
1 |
1 |
1 |
1 |
1 |
= 6 |
|
Передача (бит данных = 0) |
−1 |
1 |
1 |
−1 |
1 |
−1 |
|
|
Кодовое слово приемника |
1 |
−1 |
−1 |
1 |
−1 |
1 |
|
|
Умножение |
−1 |
−1 |
−1 |
−1 |
−1 |
−1 |
=−6 |
|
в) Передача сигнала пользователем В; приемник пытается восстановить передачу пользователя А | |||||||
|
Передача (бит данных =1) |
1 |
1 |
−1 |
−1 |
1 |
1 |
|
|
Кодовое слово приемника |
1 |
−1 |
−1 |
1 |
−1 |
1 |
|
|
Умножение |
1 |
−1 |
1 |
−1 |
−1 |
1 |
= 0 |
|
г) Передача сигнала пользователем С; приемник пытается восстановить передачу пользователя В | |||||||
|
Передача (бит данных =1) |
1 |
1 |
−1 |
1 |
1 |
−1 |
|
|
Кодовое слово приемника |
1 |
1 |
−1 |
−1 |
1 |
1 |
|
|
Умножение |
1 |
1 |
1 |
−1 |
1 |
−1 |
= 2 |
|
д) Передача сигнала пользователями В и С; приемник пытается восстановить передачу пользователя В | |||||||
|
В (бит данных =1) |
1 |
1 |
−1 |
−1 |
1 |
1 |
|
|
С (бит данных =1) |
1 |
1 |
−1 |
1 |
1 |
−1 |
|
|
Суммарный сигнал |
2 |
2 |
−2 |
0 |
2 |
0 |
|
|
Кодовое слово приемника |
1 |
1 |
−1 |
−1 |
1 |
1 |
|
|
Умножение |
2 |
2 |
2 |
0 |
2 |
0 |
= 8 |

Рис. 7.11. CDMA в среде DSSS
CDMA для системы DSSS
Рассмотрим CDMA как систему DSSS-BPSK. На рис. 7.11 приводится пример такой системы с п пользователями, которые для передачи применяют индивидуальные, взаимно ортогональные псевдослучайные последовательности (сравните с рис. 7.7). В процессе передачи сигнала определенным пользователем последовательность данных di(t) модулируется согласно схеме BPSK. Полученный сигнал с шириной полосы Ws умножается на код расширения пользователя ci(t). Все сигналы (а также шум) поступают на антенну приемника. Предположим, что приемник пытается восстановить данные, полученные от пользователя 1. Полученный сигнал умножается на код расширения пользователя 1, после чего демодулируется. В результате ширина полосы этой части суммарного сигнала, соответствующей пользователю 1, уменьшается пропорционально скорости передачи данных и становится равной полосе исходного сигнала до расширения спектра. Поскольку остальная часть суммарного сигнала ортогональна коду расширения пользователя 1, она будет по-прежнему иметь ширину полосы Ws. Таким образом, энергия нежелательных сигналов распределена по широкой полосе спектра, а искомый сигнал сконцентрирован в узкой полосе. Если в контуре демодулятора присутствует полосовой фильтр, искомый сигнал можно успешно восстановить.
Литература: В. Столингс, “Беспроводные линии связи”, Издательский дом «Вильямс», Москва, 2003.
