Radio Data System (англ. Radio Data System, RDS) - радиосистема оповещения о дорожной обстановке.

С конца 70-х годов начала материализовываться идея о необходимости помощи водителям в сложных дорожных ситуациях. Сначала в Германии, а потом и других странах Западной Европы. Регулярная передача сообщений о дорожной обстановке сетью FM-радиостанций — это как раз то что нужно, ибо слушают радиоприемник во время поездки почти все. Но хорошо бы еще и предупредить слушателя, что именно эта радиостанция сейчас передает так необходимую ему информацию. И осуществить это желательно специальным управляющим сигналом, особенно если в данный момент он слушает не радио, а магнитофонную запись или компакт-диск. Более пятнадцати лет назад европейский союз радиовещателей (EBU) принял рекомендацию о системе передачи данных (Radio Data System или сокращенно — RDS) радиовещательными станциями, работающими в диапазоне FM (87,5–108 МГц) .

Система предусматривала предоставление слушателям целого ряда новых услуг. Во-первых, возможность оперативного получения информации водителем о заторах и пробках на крупных автомобильных дорогах, возможных путях объезда, метеоусловиях и т. д. Во-вторых — передачу названия принимаемой станции и информации о характере вещания. Радиоприемник должен реагировать на сопровождающие эти сообщения управляющие сигналы автоматически, чтобы не отвлекать водителя от машины. Рекомендация предполагает дальнейшее развитие системы и поэтому содержит еще несколько вариантов использования этого канала передачи данных, которые разделяются на основные, дополнительные и вспомогательные. Экспериментальная эксплуатация этой системы в странах Западной Европы началась с 1986 года. Принцип совмещения канала передачи данных в системе RDS аналогичен используемому при передаче телетекста. Только вместо временного разделения (передача телетекста происходит вместе с синхронизирующими строчными импульсами в начале каждого кадра) в радиовещании используется частотное: для передачи данных выделена узкая полоса вокруг поднесущей 57 кГц. Поскольку эта полоса расположена выше передаваемого стереофонического сигнала, помех обычному радиовещанию не создается. Однако сказанное относится только к системе стереофонического радиовещания с пилот-тоном (CCIR), а потому простой перенос системы в диапазон УКВ (OIRT) просто физически невозможен.

 

С системой RDS (Radio Data System) сталкивался хоть раз каждый, кто видел в автомагнитоле название станции вроде «Дорожное радио». Помимо названия, могут отображаться дополнительные данные — название воспроизводимой песни, температура, частота вещания и т.д. 

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

Продолжение под катом (осторожно много картинок).
 

Введение

Радиостанции FM-диапазона существуют и пользуются популярностью довольно-таки давно. Но со временем стало ясно, что помимо звука, не хватает текстовой информации — названия станции, трека, исполнителя песни. Добавить такую возможность можно было только одним способом — помимо звука передавать дополнительный цифровой канал. Причем передавать так, чтобы с одной стороны, данные было несложно декодировать (вычислительные возможности микросхемы в радиоприемнике довольно ограничены), с другой стороны, чтобы не нарушить совместимости с уже имеющимися в продаже приемниками. Задача была решена, так появился стандарт RDS, принятый в 1990м году.

Спектр современной FM-станции выглядит так:

На картинке можно видеть (слева-направо) 4 основных компонента.
— Звук в формате «моно» (L+R). Вероятно был оставлен для совместимости со старыми приемниками (интересно наблюдать как в подобных стандартах разные технологии «накладываются» друг на друга для обеспечения обратной совместимости).
— Пилот-тон 19КГц. Используется для декодирования стерео-сигнала, для чего частота пилот-тона умножается на 2, и относительно полученной частоты 38КГц разделяются стерео-каналы.
— Стерео звук, второй канал (L-R), находящийся на картинке симметрично относительно 38КГц. 
— Канал RDS, который передается на 3й гармонике пилот-тона, его частота составляет соответственно 19*3 = 57КГц. Им-то мы и займемся. 
 

Модуляция RDS

Для того, чтобы декодировать сигнал, сначала надо понять как он формируется, и здесь довольно-таки много «подводных камней». Основным документом, описывающим RDS, является «EUROPEAN STANDARD EN 50067», eго-то мы и будем изучать. 

RDS-кодер, согласно стандарту, выглядит так:
"

Как можно видеть, сигнал в кодере проходит 5 стадий:

1) Исходный битовый поток. Для его получения RDS-сообщения сначала кодируются в 16-битные пакеты, потом к ним дописывается 10-битный блок контрольной суммы с коррекцией ошибок, в итоге получаются 26-битные блоки, которые и посылаются в кодер. Казалось бы, берем и посылаем? Все сложнее.

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

Единицей кодируется изменение бита, отсутствие изменения кодируется нулем. Это нужно для простой цели — полученный код является независимым к инверсии. Мы можем не знать, что считать «0», а что считать «1», данное кодирование устраняет этот пробел.

Рассмотрим простой пример, пусть передаваемое сообщение — 0010100. Кодируем его по данной таблице, получаем 0011000. 
Для декодирования используется другая таблица:

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

Теперь берем сигнал и посылаем? Еще нет, все сложнее.

3) На предыдущем шаге мы получили битовый сигнал, но проблема состоит в том, что этот сигнал вполне может иметь вид вроде 011000000000011. Электромагнитная волна такой «формы» будет плохо как передаваться, так и декодироваться. Надо получить сигнал как можно ближе к «классической» синусоиде нужной частоты. Для этого используется так называемое «бифазное кодирование» (в русскоязычной литературе часто встречается название «манчестерское кодирование»).
Алгоритмически, оно записывается довольно-таки просто:
0 -> 01
1 -> 10
С его помощью, приведенный выше сигнал 011000000000011 будет представлен как 0110100101010101010101011010, как можно видеть, от длинных одинаковых последовательностей мы избавились.

Сигнал, показанный под номером «5» на схеме кодера — это фактически и есть наши биты после манчестерского кодирования, только кодер в стандарте рассматривался аппаратный. Он работает следующим образом:
— Битовый поток превращается в последовательность коротких импульсов (цифра «3» на картинке)
— Манчестерское кодирование выполняется с помощью задержки сигнала на пол периода и сложения его с противоположным знаком (цифра «4»).
— Полученный сигнал в виде «всплесков» положительных и отрицательных импульсов, подается на ФНЧ (фильтр низких частот), который выделяет огибающую, показанную под цифрой «5».

Вот теперь-то сигнал можно передавать? Да можно. Но не сразу. Исходная частота цифрового сигнала RDS составляет 1187.5Гц, что слишком мало. Полученный сигнал умножается на другой сигнал с частотой 57КГц, что переносит его на заданную частоту, вспоминаем школьную формулу умножения косинусов:

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

Демодуляция

Теперь, поняв как получается сигнал, мы можем приступить к демодуляции сигнала с реальной FM-станции. Для этого нужен SDR-приемник, я использовал HackRF, но подойдет и гораздо более дешевый RTL-SDR, купить который можно за 10$ с бесплатной доставкой на eBay.
 

Шаг 1. WFM-декодер

Т.к. исходный сигнал частотно-модулирован, сначала мы должны получить его в демодулированном виде. Чтобы не писать еще и ЧМ-декодер, воспользуемся пакетом GNU Radio. Запустим GNU Radio Companion и соберем схему, как показано на рисунке.

Мы собираемся принимать FM-станцию на частоте 100.4МГц, для этого мы настраиваем приемник на частоту 99МГц, и программно «сдвигаем» сигнал вверх по частоте на 1.4МГц, домножая его на сигнал с такой частотой. Это сделано потому, что SDR-приемник имеет пик на нулевой частоте относительно центра, и настроиться сразу на станцию мы не можем.

Запускаем «схему», и видим картинку как в учебнике в начале статьи.

Хорошо видны пилот-тон на 19КГц, стерео-сигнал на 38КГц и 2 пика RDS-сигнала вокруг 57КГц. 
 

Шаг 2. Выделение пилот-тона и RDS-сигнала.

Следующим шагом является выделение пилот-тона и сигнала RDS. Для этого используем полосовой фильтр на соответствующие частоты.

Запускаем полученную схему, и видим результат, как в любом «учебнике» по описанию RDS.

Хорошо видны пилот-тон с частотой 19КГц, и 57КГц-сигнал, модулирующий более низкочастотный сигнал с частотой 1187.5Гц.
 

Шаг 3. Выделение низкочастотного сигнала.

Для получения НЧ-сигнала необходимы 2 шага:
3.1) Получение сигнала 57КГц (3й гармоники пилот-тона).
Мы имеем выделенный фильтром сигнал 19КГц, а как получить из него 57КГц? Для этого вспоминаем школьную математику, формулу куба синуса:

Как нетрудно видеть, куб синуса содержит 2 компоненты: sin(a) и sin(3*a). Т.к. мы работаем с «аналоговыми» блоками, берем в GNU Radio 2 блока — умножитель, и фильтр высоких частот. Убрав sin(a) фильтром на 38КГц, получаем искомые 57КГц.
Готовый результат можно видеть на осцилограмме:

3.2) Обратный перенос частоты
При кодировании сигнал переносился с частоты 1187.5Гц вверх, умножением на 57КГц. Теперь выполняем обратную операцию, переносим сигнал «вниз». Для этого еще раз умножаем его на 57КГц-сигнал. По формуле произведения синусов (школьная программа вещь полезная) получаем 2 компоненты — суммы и разности частоты. Нам нужна именно разность, сумму мы отбрасываем с помощью фильтра низких частот.
Все это делается добавлением блоков в GNU Radio, готовый результат показан на картинке:

Зеленым цветом показан «образцовый» сигнал с частотой 1187.5Гц, чтобы видеть что преобразование выполнено правильно.
 

Шаг 4. Демодуляция низкочастотного сигнала

Принцип этой части проще всего проиллюстрировать картинкой из стандарта (блок «biphase symbol decoder»).

Демодуляция бифазного сигнала состоит из 2х частей.
— «Переворачивание» сигнала инвертором. Это нужно для возврата от бифазного кодирования, которое рассматривалось выше, к исходному сигналу. Фактически нужно «перевернуть» каждый второй бит, поэтому процесс синхронизирован с тактовым сигналом.
— Суммирование сигналов за период. Положительная сумма соответствует биту «1», отрицательная «0». 
Кстати, период 1187.5Гц тоже выбран не случайно — это частота пилот-тона 19КГц, деленная на 16. Все сделано для того, чтобы аппаратная реализация декодера в приемнике была как можно проще и соответственно, дешевле. 

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

0
Ваша оценка: Нет

 

ВAZUEV56 аватар

ВAZUEV56
4 Декабрь, 2016 - 12:41

Спасибо за краткое грамотное освещение вопроса-темы...



Ἀλκαῖο аватар

Ἀλκαῖο
4 Декабрь, 2016 - 13:02

где купить эту синезеленую и как ее примастырить в магнитолу?
https://habrastorage.org/files/cee/ab7/8a3/ceeab78a3a524edc9cd7756a99aed...

Голод пережили,разруху пережили ,изобилие тоже переживем. 



Борис Животное аватар

Борис Животное
4 Декабрь, 2016 - 18:09

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



Antony аватар

Antony
4 Декабрь, 2016 - 18:16

А еще пейджеры были, расскажи про них?

Изобретательность — это когда у тебя есть только китайская лапша и степлер, а ты взял и накурился.



Modest аватар

Modest
5 Декабрь, 2016 - 18:51

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



Борис Животное аватар

Борис Животное
6 Декабрь, 2016 - 20:33

Передают некоторые станции только свои название и номер тел.



Отправить комментарий


Новости Ижевска
Новости Можги
Новости Сарапула
Новости Глазова
Новости поселка Ува
Новости поселка Малая Пурга
Новости поселка Ува
Новости поселка Игра
Новости города Чайковский