Донские Радиолюбители
16+
главная
новости
статьи
частоты
репитеры
радиоклубы
форум
ссылки
литература
RK6LZQ
Статьи

Статьи : Сигналинг /

DCS (CDCSS, DPL, DQT)

Добавлено пользователем RN6LMR 26.01.2010 в 08:47.
Изменено пользователем RN6LMR 04.02.2024 в 15:02.
Содержание:
Введение
DCS изнутри
Передача DCS
Характеристики модуляции
Декодирование DCS
Дополнительная информация о DCS
Обратные коды DCS
Стандартные коды DCS
Именование DCS производителями
Литература

Введение

CDCSS (Continuous Digital Coded Squelch System — Система Постоянного Цифрового Кодирования Шумоподавителя), также называемая DCS (Digital Coded Squelch — Цифровой Кодированный Шумоподавитель), является цифровой инфразвуковой системой селективного вызова.

DCS изнутри

Структура DCS

DCS представляет собой код, состоящий из 23 битов, постоянно посылаемых в FSK-модуляции со скоростью 134.3 бита в секунду. Каждый бит имеет длительность 7,5 мс с общей длительностью 172,5 мс. Код основан на Golay (23,12) коде, впервые разработанном в 1949 г. Этот код обладает способностью определять и исправлять до трех любых ошибочных бит.
Посылаемый DCS-код представляет из себя из себя восьмеричной число, состоящее из поля данных из 12 бит и вектора четности из 11 бит. В CDCSS используемые 12 бит разделены на 4 восьмеричных октека, первый из которых всегда установлен в 1002 (48) и является неким «флагом», 2-ой, 3-ий и 4-ый октеки образуют номер кода DCS и могут принимать значения от 0002 (08) до 1112 (78) — максимальное число различных значений, которые можно положить в 3 бита октета. Таким образом можно получить 51210 кодов DCS (т.е. от 0008 до 7778). Если вы используете калькулятор, который имеет как восьмеричную, так и десятичную системы счислений (например, калькулятор Windows в режиме «Научный»), вы можете легко конвертировать эти 00088 номера обратно в десятичную систему счисления (7778 = 51110). Помните, что 0008 является действительным кодом DCS, и так же учитывается. Т.е., если вы начнёте отсчет от 010 и досчитаете до 51110, то у вас как раз и получится общее количество значений, равное 51210.

Формат DCS слова таков:

Указание направления -> Выход
PPPPPPPPPPPFFFCCCCCCCCC

Где P — биты паритета, F — фиксированный октек, и C — три октека кода. Так для кода DCS "023" справедливо бинарное слово:


Вычисление битов паритета

Оригинальный алгоритм Golay использует двойной полином для вычисления битов паритета. Однако этот метод занимает слишком много памяти и времени микроконтроллера. Хранение всех 512 23-битовых слов в RAM занимало бы минимум 1472 байт, хранение же только битов паритета в RAM будет занимать минимум 704 байт. Это позволит экономить RAM и время на выполнение вычисления микроконтроллером битов паритета. Этот метод использует короткие вычисления — одно для каждого бита паритета, основанного на выборе битов из 9 битов кода DCS:


P1 = C1 + C2 + C3 + C4 + C5 + C8 (СЛОЖЕНИЕ ПО МОДУЛЮ ДВА [MODULO TWO ADDITION])
P2 = НЕ ( C2 + C3 + C4 + C5 + C6 + C9 )
P3 = C1 + C2 + C6 + C7 + C8
P4 = НЕ ( C2 + C3 + C7 + C8 + C9 )
P5 = НЕ ( C1 + C2 + C5 + C9 )
P6 = НЕ ( C1 + C4 + C5 + C6 + C8 )
P7 = C1 + C3 + C4 + C6 + C7 + C8 + C9
P8 = C2 + C4 + C5 + C7 + C8 + C9
P9 = C3 + C5 + C6 + C8 + C9
P10 = НЕ ( C4 + C6 + C7 + C9 )
P11 = НЕ ( C1 + C2 + C3 + C4 + C7 )


Передача DCS

DCS посылка передается и принимается в формате NRZ (без возврата к нулю), поэтому полярность модуляции здесь важна. В данном случае, "1" определяется восходящим изменением частоты, а "0" — нисходящим изменением. DCS коды, посланные с этой полярностью имеют положительную полярность. Однако некоторые системы радиосвязи используют инверсную полярность (отрицательную), дабы избежать взаимных помех. Такую кодировку называют обратными кодами DCS. По этой причине необходимо использовать обе полярности.
DCS код "+023" будет передан так:


Код DCS посылается непрерывно с началом передачи несущей. Частота передачи составляет 134.4 Гц. Любой передаваемый DCS-код будет вызывать открытие шумоподавителя любой другой радиостанции с установленным CTCSS от 131.8 до 136.5 Гц. Когда пользователь отпускает кнопку PTT, кодер начинает передавать "1" и "0" со скоростью 268.6 бит в секунду на протяжении 180 миллисекунд, после чего передатчик отключается. Это называется "выключающим кодом", необходимым для более быстрого включения шумоподавителя и устранения эффекта "Noise burst" (шум эфира, звучащий из динамика из-за того, что шумоподавитель еще не включился).


Характеристики модуляции

Нормальный диапазон отклонения — от 10% до 20% от номинальной девиации. Большинство систем предназначено для девиации частоты 5 кГц. CDCSS модуляция должна быть на частотах ниже 300 Гц и в приёмнике должна пропускаться через специальный фильтр, пресекающий ее проникновение в УЗЧ приёмника, что могло бы вызвать звучание из динамика постоянного шума на фоне полезного сигнала.

Декодирование DCS

Принимаемый DCS-код может являться допустимым или недопустимым кодом DCS. Октек "100"(с "1" в 12-м бите, "0" в 13-м и 14-м битах) является идентификатором подлинности 23-разрядной посылки кода DCS. Если в принятом DCS-коде в в качестве 4-го октека (12-й...14-й биты) не число 1002, то это недопустимое 23-битное слово DCS-кода.
Оказывается, если по кругу сдвигать все биты в 23-разрядном слове DCS, можно получить более одного правильного (допустимого) кода DCS. Вот пример сдвига по кругу 23-битного DCS слова 0238.

11101100011−100−000/010/011 = 023 (допустимое слово DCS)
11110110001−110−000/001/001 — сдвиг позиции вправо на один бит, нет флага "100"
11111011000−111−000/000/100 — сдвиг позиции вправо на один бит, нет флага "100"
01111101100−011−100/000/010 — сдвиг позиции вправо на один бит, нет флага "100"
00111110110−001−110/000/001 — сдвиг позиции вправо на один бит, нет флага "100"
10011111011−000−111/000/000 — сдвиг позиции вправо на один бит, нет флага "100"
01001111101−100−011/100/000 — сдвиг позиции вправо на один бит = 340 (допустимое слово DCS)
00100111110−110−001/110/000 — сдвиг позиции вправо на один бит, нет флага "100"
00010011111−011−000/111/000 — сдвиг позиции вправо на один бит, нет флага "100"
00001001111−101−100/011/100 — сдвиг позиции вправо на один бит, нет флага "100"
00000100111−110−110/001/110 — сдвиг позиции вправо на один бит, нет флага "100"
00000010011−111−011/000/111 — сдвиг позиции вправо на один бит, нет флага "100"
10000001001−111−101/100/011 — сдвиг позиции вправо на один бит, нет флага "100"
11000000100−111−110/110/001 — сдвиг позиции вправо на один бит, нет флага "100"
11100000010−011−111/011/000 — сдвиг позиции вправо на один бит, нет флага "100"
01110000001−001−111/101/100 — сдвиг позиции вправо на один бит, нет флага "100"
00111000000−100−111/110/110 — сдвиг позиции вправо на один бит = 766 (допустимое слово DCS)
00011100000−010−011/111/011 — сдвиг позиции вправо на один бит, нет флага "100"
10001110000−001−001/111/101 — сдвиг позиции вправо на один бит, нет флага "100"
11000111000−000−100/111/110 — сдвиг позиции вправо на один бит, нет флага "100"
01100011100−000−010/011/111 — сдвиг позиции вправо на один бит, нет флага "100"
10110001110−000−001/001/111 — сдвиг позиции вправо на один бит, нет флага "100"
11011000111−000−000/100/111 — сдвиг позиции вправо на один бит, нет флага "100"
11101100011−100−000/010/011 — сдвиг позиции вправо на один бит = 023 (допустимое слово DCS), то самое, откуда мы начали.

В этом примере видно, что одно и тоже 23-битное слово DCS может иметь три различных возможных кодов DCS (0238, 3408 и 7668). Истинность же здесь в математически рассчитанных проверочных битах (11 бит проверки для каждого правильного 23-разрядное слово DCS), которые всегда совершенно правильны для каждого из этих трех возможных кодов DCS. В выше приведенном примере, биты паритета (проверочные 11 битов) не верны для всех 23-битных слов DCS, кроме изначального 0238. Таким образом 23-битные DCS слова имеют только один правильный код DCS, а другие (до 6 различных кодов DCS) ложны. Всё зависит от конкретной битовой последовательности в каждом отдельном из 51210 23-битных DCS слов.

Альтернативный способ думать об этом множестве кодов, сосуществующих в одном и том же 23-бит потоке данных DCS слова — это думать о 23-х битах, как о просто сдвинутых во времени. Каждый посылаемый бит занимает некоторое количество времени, и просто нужно начинать чтение 23-х битов в разное время. Таким образом, каждый сдвиг из 23 битов можно рассматривать как отдельное дополнительное временное окно на повторённый 23-х битный поток данных слова DCS. Эта концепция может быть полезна, т.к. именно так приёмник и работает с 23-разрядными словами DCS.

23-бит DCS слово передается, как непрерывно повторяющийся 23-х битный поток асинхронных последовательных битов. Возникает очевидный вопрос: "Как узнать, какой бит был послан первым?". Ответа на этот вопрос нет, как и нет абсолютно никакого способа узнать это. Приёмник просто должен прыгнуть в 23-битной DCS битовый поток слов, получить 23 бит и сдвигать их по кругу, пока не найдет флаг 1002. Когда он находит флаг 1002 и DCS код не тот, что он ищет, он может просто продолжить сдвиг 23 битов DCS слова и проверять все возможные правильные коды DCS в этом потоке битов. Конечно же после 22 сдвигов можно будет остановить сдвиг 23-битного DCS слова. Если приёмник не может найти какой-либо код DCS, то он не будет открывать шумоподавитель приёмника.

Опять же, DCS 23 бит слово передается, как непрерывно повторяющийся 23-битовый поток асинхронных последовательных битов. Это означает, что нет явного сигнала тактовой синхронизации между передатчиком и приёмником. Некоторые виды синхронизации требуется для того, чтобы приёмник мог отличить один бит от следующего. Асинхронные протоколы делают это с фиксированным бит-рейтом. Поскольку передатчик и приёмник используют один и тот же бит-рейт, то каждый бит может быть послан передатчиком и успешно декодирован приёмником. Для DCS скорость передачи данных (бит-рейт) составляет 134,3 Гц.

Не существует возможности выяснить, является ли сигнал DCS инвертированным или нет. Более того, нет никакого способа передатчиком сообщить приёмнику о полярности сигнала для его декодирования. Предполагается, что всё работает в "идеальных лабораторных условиях", где передатчик и приёмник дают одинаковую полярность сигнала, который мы ими посылаем и получаем. Если передать 0238 DCS кода, мы и примем 0238 DCS кода, после того, как приёмник сдвигает 23 бита, чтобы найти его.

Обратите внимание, что, хотя мы и передали 0238 DCS кода, мы могли бы получить его в виде DCS кода 3408 или 7668, если мы этого захотим. Отсюда возникает вопрос: "Как мы знаем, какой код использовать?". Единственным ответом на это является соглашение использовать только один код DCS, когда существует множество других возможных кодов DCS (подробнее об этом позже). Другие соответствия кодов DCS (типа 3408 или 7668), так же существующие, просто игнорируются. Это соглашение распространяется только на так называемый "стандартный" набор из 83 кодов DCS, использующийся в телекоммуникационной отрасли.

Это всё было для "идеальных лабораторных условий". Мы же теперь будем погружаться в реальный мир. В реальном мире не существует гарантий того, что передатчик и приёмник будут иметь такую же полярность сигнала. Если вы не используете оборудование того же производителя или даже модель радио для передачи и приёма, то там неизбежно может возникнуть инверсия полярности между ними. Давайте посмотрим, что происходит, когда оборудование инвертирует полярность 23-х битного слова DCS:

11101100011−100−000/010/011 = 023 (допустимое слово DCS)
00010011100−011−111/101/100 — перевернутое 023 слова DCS, где после инверсии флаг "100" отсутствует.

Здесь видно, что после инвертирования допустимого 023 слова DCS, правильный флаг "100" превратился в недопустимый "011". Здесь математические свойства кодов DCS ожидает сюрприз. Если сдвигать инвертированное 23-битное слово DCs (как в примере выше), получаться три допустимых слова DCS, скрывающихся в инвертированного сигнала.

11101100000−100−111/000/111 = 707 (инвертированное слово 023 сдвинуто до первого с флагом "100")
10000010011−100−011/111/101 = 375 (инвертированное слово 023 сдвинуто до второго с флагом "100")
00011111101−100−000/100/111 = 047 (инвертированное слово 023 сдвинуто до третьего с флагом "100")

Это означает, что приёмник, который инвертирует полярность DCS может принять изначальный код DCS 023 как код 7078, 3758 или 0478. Таким образом, если станция передатчика сообщает, что передает DCS код 0238, если запрограммировать приёмник (который инвертирует переданные коды DCS) на приём DCS кода 0238, он не будет соответствовать передаваемому коду и шумоподавитель не откроется. Вот где получается фикция положительной и отрицательной полярности DCS кодов. Я назвал это фикцией, т.к. математическая модель ясна и не имеет ничего общего с положительной или отрицательной полярности. Положительная и отрицательная полярности на самом деле означают, что применяется инвертированный сигнал кода DCS. Однако, если инвертировать правильный код DCS с флагом «100», он всегда превращает его с недопустимым флагом «011» (это означает, что допустимое 23-битное DCS слово не будет допустимым после его инвертирования). Однако, если начать сдвигать инвертированное 23-бит слово DCS, можно найти другие действующие коды DCS. Так же, как и прежде, 11 бит проверки математически верны, когда флаг «100» найден и другое 23-битное слово DCS может иметь от одного до шести действующих кодов DCS внутри него. Тем не менее, реальным решением является повторно инвертировать сигнал DCS внутри приёмника, который будет восстанавливать исходную полярность сигнала кода DCS, который был послан передатчиком (подробнее ниже).

Наиболее важным моментом является то, что все DCS коды обрабатываются таким же образом. Процессор кодов DCS понятия не имеет, была полярность сигнала инвертирована или нет. Он заботится только о флаге «100» и 11 бит проверки, правильно полученных для данного кода DCS. Заботиться о инверсии сигнала должны лишь мы. Если существует необходимость в использовании определенного кода DCS в нашей радиосвязи, необходимо сделать так, что бы код DCS работал правильно.

Типичная запись для нормальной положительной полярности сигнала — это +0238, а −0238 — для инвертированной полярности сигнала. «−» перед кодом DCS означает, что радиоаппаратура перевернула полярность сигнала 23-битного слова DCS. Это инвертирование означает, что каждый бит 12 превращается в бит 02, а каждый бит 02 устанавливается в бит 12.

В приведенном выше примере, где полярность сигнала приёмника противоположна полярности сигнала передатчика, можно просто сообщить приёмнику о необходимости инвертировать полярность сигнала DCS перед его использованием. Это инвертирование инвертирует сигнал (извиняюсь за тавтологию), возвращая его к нормальной полярности. Это самый распространенный способ, применяемый к полярности DCS. Как многие знают, помнят или даже понимают, что DCS коды 0478, 3758 или 7078 могут быть использованы при приёме как инвертированный 0238 DCS код. Ответ на этот вопрос вы не должны знать. Если кто-то говорит вам, что они используют 0238 DCS код при передачи, то вы должны попробовать в приёмнике оба кода +0238 и −0238, чтобы узнать какой из них будет работать.

Передатчик также использует инвертированный сигнал DCS. При настройке в передатчике кода DCS для работы с другими радиостанциями, которые уже используют код DCS (например, 023), было бы не практично, если все остальные будут менять полярность принимаемого кода DCS в соответствии с передатчиком. Опять же, вы должны попробовать передавать оба +0238 и −0238 DCS кода, чтобы узнать с какой полярностью работать со всеми другими уже запрограммированными приёмниками.

Проблема в том, что нет способа узнать, как каждый конкретный передатчик передаёт FM-модулированный сигнал. Также не существует способа узнать, как у каждого конкретного приёмника схема FM-дискриминатора декодирует полярность принимаемого сигнала. Будучи в состоянии применить инверсию к передаваемому сигналу и / или инверсию к принимаемому сигналу является решением для получения системы из различных радиостанций с успехом использовать один и тот же код DCS.

Эффект так называемой полярности DCS является то, что у вас выглядит как набор из 51210 положительных кодов (+0008 до +7778) и то, что выглядит как набор из 51210 отрицательных кодов (−0008 до −7778). На самом деле это иллюзия, т.к. на самом деле есть только 512 общих кодов DCS (от 0008 до 7778). В приведенном выше примере было отмечено, что инвертированный 0238 DCS код может быть принят как 0478, 3758 или 7078 коды DCS. Все эти коды являются положительными кодами DCS, и это только инверсия сигнала напряжения, которое создаёт разницу. Таким образом, в действительности не существует положительного и отрицательного набора кодов DCS. «−» просто показывает, что 23-битный сигнал слова DCS оказался перевернутым схемой радиостанции, а инвертированный сигнал DCS производит разный набор кодов.

Есть четыре уникальных кодов DCS, соответствующих друг другу, когда их 23-битное слово DCS сдвигается так, что не существует соответствий инвертированной полярности. Это 1128, 2508, 5058 и 5128. Когда они инвертированы, не существует соответствия «100» во всем 23-битном слове DCS ( подробнее об этом позже ).

Допустим, у нас есть приёмник, который может отображать реальный принимаемый код DCS. Так как нет способа узнать, соответствует ли полярность приёмника полярности передатчик, то значит, что передатчик может послать один из двух возможных кодов (за исключением четырех уникальных 1128, 2508, 5058 и 5128 DCS кодов, которые не имеют инвертированных соответствий). У моего приёмника DCS дисплей может отобразить как +0238, так и −0478 для одного и того же переданного кода DCS. Если полярность в нашем приёмнике соответствует полярности передатчика, то значит, что передатчик посылает +0238 (без инверсии) или −0478 (с инверсией). Однако, если полярность нашего приёмника противоположна полярности передатчика, то это означает, что передатчик посылает +0478 (без инверсии) или −0238 (с инверсией). Так как наш дисплей показывает нам +0238 и −0478, мы знаем, что эти принимаемые DCS коды будут работать с этим передатчиком. Реальная неопределенность здесь в том, что мы не знаем, какой полярности передатчик по отношению к приёмнику, так что мы не знаем, какой именно код передатчика используется. Один из способов узнать это, если передатчик и приёмник и той же марки и модели радио (тогда они совпадают). Другой способ узнать это — спросить того, кто запрограммировал передатчик и на какой код DCS.

Ниже приведена таблица всех возможных комбинаций полярностей и кодов DCS, которые могут быть отправлены или получены в качестве 0238 кода DCS:

ПолярностьЗапрограммирован на передачуПередан какПолучен какЗапрограммирован на приём
Tx как и Rx+023023023+023
Tx как и Rx+023023023−047
Tx как и Rx−047023023+023
Tx как и Rx−047023023−047
Tx как и Rx−023047047−023
Tx как и Rx−023047047+047
Tx как и Rx+047047047−023
Tx как и Rx+047047047+047
Tx противоположно Rx+023023047−023
Tx противоположно Rx+023023047+047
Tx противоположно Rx−047023047−023
Tx противоположно Rx−047023047+047
Tx противоположно Rx−023047023+023
Tx противоположно Rx−023047023−047
Tx противоположно Rx+047047023+023
Tx противоположно Rx+047047023−047

На самом деле, код 0478 никогда не будет запрограммирована, если известно, что в других станциях запрограммирован 0238 код DCS. Это включено в пример лишь для информации. Помните, что DCS коды 0238, 3408 и 7668 являются взаимозаменяемыми. Кроме того, DCS коды 0478, 3758 и 7078 так же взаимозаменяемы. Тем не менее, мы не учитывали DCS коды 3408, 7668, 3758 и 7078, поскольку они являются синонимами для других 23-разрядных слов DCS. Это означает, что 0238 представляет все три своих кодов DCS, а 047 и представляет все три своих. Это можно назвать "сваливанием в одну кучу соответствующих групп DCS кодов", или даже "группами DCS кодов" (подробнее об этом ниже).

Например, в таблице выше, является очень грязным. Это грязный информация была показана так что вы можете понять, что происходит с кодами DCS и сигнал полярности. Например, если вы не понимаете всю информацию в таблице выше, то вы будете смешивать в таблице ниже, где −023 передается в виде 047. Тем не менее, в реальной жизни все это просто слишком много информации, чтобы иметь дело. Ниже приведена таблица, которая показывает реальный мир общего пользования на неинвертированный и инвертированный коды DCS:

ПолярностьЗапрограммирован на передачуПередан какПолучен какЗапрограммирован на приём
Tx как и Rx+023023023+023
Tx как и Rx−023047047−023
Tx противоположно Rx+023023047−023
Tx противоположно Rx−023047023+023

Обратите внимание, что пользователя радиостанции не волнует как передаются или как принимаются данные. Все пользователь должен знать — это правильный код DCS и как запрограммировать +/− для правильной полярности сигнала.

Используя приведенный выше пример, единственная причина для программирования на передачу кода −0238 — когда в системе связи радиоприёмники других торговых марок или моделей инвертируют полярность сигнала, переданного вашей от вашей радиостанцией. Вам просто нужно на передачу попробовать оба +0238 и −0238 кода, пока вы не найдете, какой из них работает со всеми другими радиостанциями в системе.

Как указывалось ранее, передача и приём кодов DCS происходит в формате NRZ (без возврата к нулю). Проще говоря, это означает, что если передаются три бита 12 подряд, на выходе будет сохраняться одно и тоже значение бита (12) за период времени передачи всех трёх битов 12. Если передаются три бита 02 подряд, на выходе будет сохраняться одно и тоже значение бита (02) за период времени передачи всех трёх битов 02. В Интернете довольно много информации о NRZ кодировании — если вам интересно, можете поискать.

Еще один интересный эффект происходит с DCS при NRZ кодировании: все 23-битные DCS слова делятся на три категории. Каждое 23-битное слово DCS имеет либо 8, 12 или 16 переходов от 02 до 12, и от 12 до 02.

Имейте в виду, основная причина для использования DCS заключается в том, что вы можете иметь уникальный код, для использования его в вашей радиосистеме. Из-за этих многочисленных способов декодирования одного и того же передаваемого кода просто невозможно использовать все 51210 кодов DCS и сохранить их уникальность (существуют 17710 уникальных групп кодов DCS). Тем не менее, за счет сокращения количества кодов DCS, использованы только один из каждой группы кодов. Таким образом можно получить множество используемых групп кодов DCS (т.е. коды DCS могут рассматриваться как "уникальные", если просто игнорировать и не использовать повторяющиеся коды). Большинство производителей используют только от 8310 до 11210 из 17710 уникальных групп кодов DCS. Определённого продвигаемого «стандарта», которому бы придерживались коды DCS, не существует. Поэтому каждый производитель использует сколько кодов, сколько они хотят. Но при этом, всё же видно, что все, кажется, используют один и тот же основной набор из 8310 кодов DCS. Существует 17710 уникальных групп кодов DCS (синхронизирующихся до флага "100" в каждом сдвиге слова DCS, о чём уже упоминалось ранее). Таким образом, большинство из 17710 групп имеет несколько уникальных индивидуальных кодов DCS, которые принадлежат к каждой группе, но при этом остальные дополнительные коды DCS в каждой группе уже не учитываются (всего лишь один код DCS используется для представления всех кодов DCS в данной группе).

Если мы соберём все допустимые коды DCS вместе из существующих групп кодов DCS, у нас получится всего 17710 уникальных групп кодов DCS. Каждая группа кодов DCS будет имеет свой "уникальный код", который определяет всю группу DCS, в то время как другие коды DCS в данной группе игнорируются и не используется. Это существенное уменьшение по сравнению с 51210 кодами DCS. Можно сказать, что эти 17710 кодов являются наиболее помехозащищёнными. Также, количество 177 — довольно изрядное. Тем не менее, некоторые DCS кодов в реальности не используются. Некоторые из них могут мешать декодеру CTCSS или ненадежно декодироваться декодером DCS. Иногда эти трудности декодирования фактически создаются аппаратурой / прошивкой декодирования непосредственно внутри приёмника. Таким образом, в общей сложности получаются 8310 так называемых «стандартных» кодов DCS. Эти так называемые "стандартные" коды DCS должны работать с любой DCS-совместимой радиоаппаратурой и не должны вызывать никаких проблем для детекторов тонов CTCSS, которые работают на тех же суб-частотах. Все так называемые "стандартные" 8310 коды DCS имеют только 8 или 12 переходов уровня сигнала в каждом 23-разрядном слове DCS.

Также следует отметить, что инвертированное 23-бит слово DCS не то же самое, что и инвертированный 9-битный код DCS. Например, если логически инвертировать только 9-битный код DCS 0238, получится код DCS 7548. Тем не менее, код DCS 7548 не имеет ничего общего с кодом DCS 0238 (как показано выше в предыдущих примерах). Т.е. речь идёт не о инвертированных 9-битных кодах DCS, а только о инвертированных 23-битных слов DCS.


Выше на временной диаграмме показаны временные соотношения. На ней вертикальные линии в начале и в конце показывают границы 23-битного слова. Прямоугольные импульсы с частотой 134,3 Гц представляют из себя сигнала закрытия шумоподавителя (reverse burst). Прямоугольные импульсы с частотой 67,15 Гц представляют из себя повторяющиеся 12 и 02 биты при кодировании в NRZ. Это не допустимый код DCS и показан лишь для того, чтобы проиллюстрировать основу кодирование NRZ с непрерывной передачей 12 и 02. Если вы посчитаете, то найдёте здесь 12 "12" битов и 11 "02" битов. Последовательность +023 является фактическим словом DCS для кода 0238. На картинке позиции битов 1, 11, 15 и 23 подписаны. Позиции 11 проверочных битов, 3-х битов флага "100" и 9 бит кода DCS также подписаны. Последовательность +023 просто постоянно повторяется (то есть после 23-го бита, просто возвращается обратно к первому биту и всё начинается заново). Можно насчитать восемь от 02 до 12, и от 12 до 02 переходов в последовательности "023". Также видно, что здесь всего 6 значений 0 (начиная с позиции 13-го бита) и всего 5 значений 1 (начиная с позиции 22-го бита). Таким образом, самый длинный продолжительный интервал без изменения сигнала для приёмника возможно пересинхронизировать асинхронную синхронизацию за шесть циклов с частотой 134,3 Гц. Значения битового двоичного кодирования для +023 показано в нижней части графика. Поскольку это всего лишь рисунок, все прямоугольные края импульсов ровные и чёткие, в отличие от настоящих сигналов DCS с закругленными краями, получающимися при передаче.

Таким образом, если сканирующий приёмник найдёт частоту, где передаётся код DCS, у него нет способа узнать, где именно в потоке бит DCS он находится (то есть он может начать приём с 17-го бита или любого другого бита). Также не существует никаких специальных стартовых или стоповых синхронизирующих кодов, а лишь повторяющийся поток битов. Вот почему синхронизация по флагу "100" является единственным способом определить приёмником начало DCS и получить любой допустимый код DCS. Если бы существовал специальный код синхронизации только для определения начала или конца DCS, добавляемый к слову DCS, то все 512 DCS кодов декодировались бы как уникальные коды, но этого не было сделано. Эта невозможность синхронизации с точным началом каждого слова DCS является основной причиной существования такого большого числа кодов, которые соответствуют друг другу при приёме. Как уже упоминалось выше, существуют 177 групп уникальных групп DCS. Каждая группа состоит из множества отдельных кодов DCS. Не все 177 групп на самом деле используются, поэтому существует так называемый "стандартный" набор из 83 кодов DCS.

Реальный код DCS посылается в обратном порядке, как показано выше. Мы, люди, привыкли писать от большего к меньшему. Т.е. мы пишем девяносто восемь как 98, а не 89. Это было бы заблуждением посылать все двоичные значения DCS в обратном порядке, однако на самом деле именно так DCS через эфир и передаётся. Так, например DCS 023 "11101100011-100-000/010/011" на самом деле передается как "110/010/000-001-11000110111.

Радиостанции с фазовой модуляцией могут иметь проблемы с передачей DCS, поскольку 23 бита кода DCS — это низкоскоростой цифровой сигнал. В общем, фазовые модуляторы не являются оптимальными для данного вида модуляции. К примеру, все мобильные радиостанции Motorola модулируют чистую FM, которая является оптимальной. Тем не менее, для передачи хороших сигналов DCS управление компенсацией передачей должно быть правильно отрегулировано.

Синхронизация всего 23-разрядного слова DCS состоит из 23 отдельных циклов с частотой 134,3 Гц. Достаточно просто разделить 1 на 134,3 циклов / секунд (это дает секунды / цикл) и умножить на 23 цикла, чтобы узнать количество десятых долей секунды требуется на отправку кода DCS. Получится около 0,17125 секунды на 23-разрядное слово DCS. Это означает, что можно передать порядка шести 23-битных DCS слов в секунду.

Ниже приведён список всех 83 групп стандартных DCS кода. В каждой группе, в первой строке приведен список кодов DCS соответствующей нормальной полярности. Вторая строка — это коды DCS соответствующей обратной полярности 23-битного слова DCS. Группы кодов DCS разделены пунктирными линиями. Это полный список всех соответствующих кодов DCS для каждой группы, в том числе тех, которые обычно игнорируются и не используется. Выделенные жирным и синим цветом — коды DCS, которые обычно используются в так называемом "стандартном" наборе из 83 кодов. Напоминаем, хотя игнорируемые коды изображены, это не значит, что система DCS радиостанции может кодировать и декодировать их правильно (использует только стандартные коды). Тем не менее, все математически вычисленные сигналы каждой группы связаны через сдвиг до флага "100" при декодировании инверсии сигнала.

Все числа в настоящем пункте являются десятичными величинами (не путайте любое из этих чисел с восьмеричными величинам). Из 83 уникальных, так называемых "стандартных" кодов, 179 отдельных слов DCS являются взаимосвязанными кодами, которые не используются. Берутся 262 кодов (83 + 179) только для того, чтобы получить 83 уникальных, так называемых "стандартных" кодов. Имейте в виду, что нет определённой организации или компании, определяющей данный список так называемых "стандартных" кодов, так что возможно встретить различные уникальные коды, используемые различными производителями, особенно в более старых радиостанциях.

В наборе стандартных кодов существует одна аномалия, являющаяся группой DCS +172 и −036, которые используются, при этом инвертированная группа с DCS −172 и +036 не используется в стандартном наборе.

Ниже перечислены оставшиеся группы кодов DCS, которые не являются частью так называемого "стандартного" набора из 83 групп кодов, приведённого выше. Некоторые из них используют разные производители (т.е. кодирующее и декодирующее устройство будет работать с выбранными расширенными кодами DCS). Максимальное количество групп, из общего количества групп, равного 177, в настоящее время используются 112 (в том числе 83 стандартных кодов DCS). Остальные коды DCS оказались непригодными для использования.

Совпадение DCS кодов +112 , +250 , +505 и +512 необычно, так как они вообще не имеют соответствий с изменённой полярностью. Если инвертировать любой из этих кодов DCS, то не получится получит флаг "100". Я подозреваю, что это может иметь какое-то отношение к группе, почему эти четыре определенные коды никогда не используются.

Все данные в настоящем пункте являются десятичными значениями (не путайте любое из этих чисел с восьмеричными значениями). Из 94 нестандартных кодов, 156 являются взаимосвязанными кодами, которые не могут быть использованы, так как они не являются уникальными. Из занятых 250 кодов (94 + 156) получаются только 94 уникальных нестандартных кодов. Тем не менее, не существует "стандарта" для определения уникальных кодов для использования. У меня нет никаких списков расширенных кодов DCS (т.е. больше, чем 83 стандартных кодов), которые используются различными производителями (поэтому они не выделены жирным синим, как в списке выше), однако нет никакого смысла в использовании более одного кода в связанной группе. DCS коды с 16 переходами NRZ отмечены жирным красным. Аномальные коды −172 и +036, которые были исключены из так называемого "стандартного" набора выделены жирным синим, поскольку общий код для них уже определён.

Обе полярности всех 512 индивидуальных кодов DCS представлены в двух вышеуказанных списках, за исключением кодов −1128, −2508, −5058 и −5128, которые являются не допустимыми и не использующимися кодами DCS в инвертированном виде. Помните, что фактически код DCS — это восьмеричное число. Коды могут быть легко преобразованы в двоичную путем преобразования каждого из восьмеричных цифр в двоичную и сложением их всех вместе. Большинство программ-калькуляторов умеют преобразовывать из восьмеричной в десятичную системы исчисления. Существует всего 51210 индивидуальных кодов DCS, при этом DCS код +5128 преобразуется в 33010. DCS код +7778 преобразуется в 51110. Нумерация кодов DCS начинается с +0008 и составляет 51210 кодов DCS.

Дополнительная информация о DCS

Ниже приведена различная дополнительная информация по DCS.

Коррекции ошибок DCS:
23-битное слово DCS на самом деле является суб-набором 23-битного кода Голея (Golay). Код DCS состоит из 9 битов данных с фиксированным 3-х битным флагом (1002) — а в сумме 12 битов, образующих 51210 значений. Коды Голея используют все 12 битов данных (12 битов данных позволяют получить до 409610 различных значений). Ценное свойство кодов Голея заключается в возможности обнаружения ошибок в 23-битном коде и исправление некоторых из них. В 23-х битном слове Голея может быть обнаружено и исправлено до 3-х ошибок (включая DCS коды). Коррекция ошибок принятых 23-х битов DCS не запрашивается и её использование строго обязательно. Однако, есть одно интересное свойство исправлений ошибок кодов Голея:

11101100011100000010011 — 23-х битный код Голея для DCS 023
11100000011100000010000 — DCS код 023 подогнан между передачей и приёмом
-------------------------------
00001100000000000000011 — 4 ошибочных бита в принятом слове (расходящиеся с переданным словом)
11100000011100000010000 — неправильно принятое слово
11110001001100000010000 — DCS 020
-------------------------------
00010001010000000000000 — это 3 ошибочных битов из неправильно принятого слова и DCS 020 (это соответствует правилу Голея при исправлении 3-х неправильных битов)

Вышеуказанный принятый код не будет правильным, т.к. код Голея может исправить в 23-разрядном слове до 3-х битов, а у изначального DCS кода 023 аж 4 ошибочных бита. При этом, DCS 020 с 3 искажёнными битами соответствует принятому коду. В итоге, код Голея не смог исправить DCS 023, а DCS 020 смог.

Вот результаты некоторых тестовых данных при ложном декодировании с 4—6 ошибочными битами на 23-битное слово DCS. Каждая ошибка вызвана коррекцией ошибки, возвращающая неверный код DCS (были протестированы все 512 кодов DCS). Кроме того, все коды испытаны при 1 ошибочном бите: Цель этого теста не предполагает исправления более 3 ошибок в 23-битном слове кода DCS, его цель заключается в изучении того, что может произойти, когда коды DCS с ошибочным бит-рейтом неизвестные приёмнику проходят через коррекцию ошибок.

Исправлен 1 битИсправлено 2 битаИсправлено 3 битаОбщие ошибки
до 3 бит ошибок0% ошибок0% ошибок0% ошибок0% ошибок
до 4 бит ошибок0% ошибок0% ошибок68,2% ошибок66,0% ошибок
до 5 бит ошибок0% ошибок94,5% ошибок91,9% ошибок91,4% ошибок
до 6 бит ошибок99,9% ошибок99,9% ошибок99,9% ошибок99,9% ошибок

В левом части таблицы максимальное число ошибок в каждом отдельном принятом коде DCS. Программа коррекции ошибок точно не знает на сколько много ошибок присутствуют в каждом код DCS, а мы знаем, потому что программа, создавшая ошибочные биты, сообщила нам, как много она их создала. Программа коррекции ошибок сообщает нам, сколько ошибочных битов она нашла и исправила. Эта информация представлена в верхней части таблицы, в виде количества исправленных битов. В табличной матрице отображено количество неправильных исправлений ошибок (см. пример выше, где код 0238 был переправлен в код 0208).Таким образом, 0% ошибок означает, что все исправления были верны. Например, "до 4 бит ошибок" могут составить до 68,2% вероятности неправильного исправления при "исправлении 3-х битов", и вернуть неверный код DCS. Были протестированы все 51210 возможных кодов DCS, из которых всего 68,2% ошибок удалось исправить при их количестве, равным 4-м. Большинство ошибок составляют только совокупный процент от общего числа ошибок для всех слов DCS, которые были пропущены через исправление ошибок на каждом уровне битовых ошибок (3, 4, 5 и 6). Например, это говорит нам о том, что если присутствуют до 4 битов ошибок, то 68,2% из трех ошибочных битов исправить не удалось. Однако, если включить все успешные 1 битовые и 2 битовые исправления в столбец «Общие ошибки», то только 66% от общего количества кодов не прошли коррекцию ошибок.

Тест использует несколько перестановок битовых ошибок. Тест обработал 512 DCS кодов через несколько моделей битовых ошибок общим количеством 3295407616 вариаций. Этот тест полностью зависит от используемых алгоритмов, поэтому фактические результаты могут отличаться, но это хорошая главная руководствующая линия. Используя великолепное знание того, что именно оригинальные 23 бит слова кода DCS (радиоприёмник не обладает этим знанием), можно заметить, что до 3 реальных ошибочных битов на 23 бита DCS дает прекрасную точность коррекции ошибок с 0% ошибок. Вероятность ошибки на бит из 4 делают 3 битовую коррекцию ошибок ненадежные на 2/3, в то время как Вероятность ошибки на бит из 5 делает битовые 2 и 3 ненадёжными. А когда на слово уровень ошибок попадает до 6 бит, с точностью можно вообще распрощаться. В таблице это не показано, но там вообще не было нулевого исправления битовой ошибки. Таким образом, даже вероятность ошибки на 6 бит не может создать какой-либо код DCS, которые могли бы сойти за другой код DCS без коррекции ошибок. Все ошибки были исправлены в том неправильном допустимом 23 битном коде DCS. Таким образом, ни один из битов коррекции не произвёл очищение мусора ошибочных результатов.

Поскольку способа точно определить начало 23-х битного CDCSS кода не существует, то и не возможно отличить между собой коды "+023", "+340", "+766", "−047", "−375" или "−707"... т.к. все они сводятся все к тем же самым 23 битам, сдвинутым во времени. Это не позволяет использовать все 512 возможных кодов. Почти все коды DCS имеют дубликаты, так что большинство производителей использует от 83 до 104 кодов, отобранных из числа наименее дублированных и с хорошей помехоустойчивостью.

Обратные коды DCS

Если левый столбец (Код1) принять за стандартный, то правый (Код2) будет инвертированным; если же левый (Код1) принять за инвертированный, то правый (Код2) будет стандартным.

КОД 1КОД 2КОД 1КОД 2КОД 1КОД 2КОД 1КОД 2
023047152115311664466662
025244155731315423503162
026464156265325526506073
031627162503331465516432
032051165251332455523246
036172172036343532526325
043445174074346612532343
047023205263351243546132
051032212356356212565703
053452223134364131606631
054413225122365125612346
065271226411371734624632
071306243351411226627031
072245244025412143631606
073506245072413054632624
074174246523423315654743
114712251165431723662466
115152252462432516664311
116754255446445043703565
122225261732446255712114
125365263205452053723431
131364265156454266731155
132546266454455332732261
134223271065462252734371
143412274145464026743654
145274306071465331754116

Стандартные коды DCS

Таблица всех стандартных CDCSS (DCS) кодов (112 кодов):

КОДКОДКОДКОД
1006291325726685464
2007301345827186465
3015311415927487466
4017321436030688503
5021331456131189506
6023341526231590516
7025351556332591523
8026361566433192526
9031371626533293532
10032381656634394546
11036391726734695565
12043401746835196606
13047412056935697612
14050422127036498624
15051432147136599627
160534422372371100631
170544522573411101632
180654622674412102654
190714724375413103662
200724824476423104664
210734924577431105703
220745024678432106712
231145125179445107723
241155225280446108731
251165325581452109732
261225426182454110734
271255526383455111743
281315626584462112754

Именование DCS производителями

Различные производители именуют CDCSS по разному. На пример Motorola обозначает CDCSS как DPL (Digital Private Line — Цифровая частная линия), Kenwood как DQT (Digital Quiet Talk — Цифровой тихий разговор), General Electric как DCG (Digital Channel Guard — Защита цифрового канала).

Литература

  • mmi-comm.tripod.com/dcs.html,
  • wiki.radioreference.com/index.php/DCS,
  • onfreq.com/syntorx/dcs.html,
    в переводе и с дополнениями от Максима RN6LMR.
  • → 19:36 MSK. Четверг, 05 декабря 2024 г.
        Нашли ошибку? Сообщите вэбмастеру: wеbmаstеr@qrv.su.
    ◊  О проекте QRV.SU.
     Условия использования материалов сайта.
    © При перепечатке материалов ссылка обязательна.
    ® qrv.ru : 2005 — 2006
    ® qrv.su : 2008 — 2024
        Построено на mini.aCMS™.
    radionet
    web-ring: электроника, электронные компоненты и приборы Электроника, электронные компоненты и приборы Случайный Предыдущий Следующий Яндекс цитирования Коллективная радиостанция RK6LZQ радиоклуб Элита Каменск-Шахтинский Коллективная радиостанция RK6LWL радиоклуб Возрождение г. Донецк
    free counters