В этом примере показано, как можно использовать Simulink ® и Communications Toolbox™ для извлечения информации о программе или песне из FM-радиостанций с использованием стандарта RDS или RBDS и, необязательно, стандарта RadioText Plus (RT +). Можно либо использовать захваченные сигналы, либо принимать сигналы в реальном времени с помощью RTL-SDR Radio или ADALM-PLUTO Radio.
Для выполнения этого примера с использованием захваченных сигналов необходимо следующее программное обеспечение:
Для приема сигналов в режиме реального времени необходимо также одно из следующих аппаратных средств:
Радио RTL-SDR и соответствующее программное обеспечение Communications Toolbox Support Package для радио RTL-SDR
Радио ADALM-PLUTO и соответствующее программное обеспечение Communications Toolbox Support Package для радио ADALM-PLUTO
Полный список платформ SDR, поддерживаемых Communications Toolbox, см. в разделе Поддерживаемые аппаратные средства программного обеспечения (SDR).
RBDS и RDS - очень схожие стандарты, определяющие, как дополнить ЧМ радиосигналы дополнительной информацией. RBDS используется в Северной Америке, в то время как RDS первоначально использовался в Европе и эволюционировал до международного стандарта. RBDS и RDS содержат 3 слоя:
Физический уровень (уровень 1)
Уровень канала передачи данных (уровень 2)
Уровень сеанса и представления (уровень 3)

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

Демодуляция ЧМ: После демодуляции ЧМ-сигнала RDS/RBDS-сигнал находится в диапазоне 57 кГц +/- 2,4 кГц:

Следует иметь в виду, что сигнал RDS/RBDS передается с относительно низкой мощностью, поэтому он не всегда виден в ЧМ-спектре, как на приведенном выше рисунке.
ЧМ-сигналы содержат тон пилот-сигнала на частоте 19 кГц, который может использоваться в качестве опорного сигнала фазы и частоты для когерентной демодуляции RDS/RBDS-сигнала на частоте 57 кГц и стереозвука на частоте 38 кГц. Тона пилот-сигнала на частоте 38 кГц и 57 кГц могут генерироваться удвоением и утроением частоты тона пилот-сигнала 19 кГц [2].
Этапы обработки для когерентной демодуляции сигнала RDS/RBDS:
Полосовая фильтрация: PHY-приемник проводит полосовую фильтрацию на частоте 19 кГц и 57 кГц для выделения пилот-тона и сигнала RDS/RBDS соответственно.
Увеличение частоты в три раза: повышение комплексного представления тона пилот-сигнала 19 кГц до 3-й мощности для утроения его частоты и получения тона пилот-сигнала 57 кГц.
Демодуляция AM: символы RDS и RBDS генерируются со скоростью 1187,5 Гц и модулируются AM до несущей 57 кГц. Сигнал RDS/RBDS с частотой 57 кГц может быть когерентно демодулирован несущей с частотой и фазой 57 кГц. Обычно трехчастотный тон пилот-сигнала 19 кГц достаточен для когерентной демодуляции. На следующих рисунках показаны пилот-тоны 19 кГц и 57 кГц, сигнал RDS/RBDS 57 кГц и сигнал RDS/RBDS с AM-демодулированной основной полосой частот.

В то же время существует несколько ЧМ-станций, сигнал RDS/RBDS 57 кГц которых имеет изменяющийся во времени фазовый сдвиг от пилот-тона 19 кГц и его трехчастотный вариант. Приемник PHY содержит контур Костаса для компенсации таких изменяющихся во времени фазовых сдвигов.
Петля Костаса: петля Костаса выполняет 2 ортогональных демодуляции AM, одну демодуляцию с синусом на 57 кГц и другого с косинусом на 57 кГц. Частота дискретизации принимаемого сигнала тщательно выбирается равной 228 кГц, что обеспечивает 4 выборки за цикл 57 кГц. Следовательно, задержка одной выборки пилот-тона 57 кГц приводит к сдвигу фазы на четверть длины волны и позволяет генерировать косинусную волну из синусоидальной волны. Синусоидально демодулированный сигнал соответствует выходному сигналу когерентной демодуляции. Косинусно-демодулированный сигнал используется для обнаружения фазовой ошибки. Произведения сигнала RDS/RBDS 57 кГц с синусоидальными/косинусными волнами фильтруются с помощью фильтра, указанного в п. 1.7 из [1]. Произведение двух выходов фильтра является сигналом ошибки. Чем он больше, тем больше задерживается тон пилот-сигнала 19 кГц, чтобы вести себя более подобно демодулятору на основе косинуса.

Извлечение синхросигналов: Для декодирования двухфазных символов из пилот-тона 19 кГц извлекается синхросигнал, соответствующий частоте символов RDS/RBDS 1187,5 Гц. Обратите внимание, 1187,5 Гц x 16 = 19 кГц. Для учета сдвигов частоты используется частотное разделение для извлечения тактового сигнала из пилот-сигнала 19 кГц. Поскольку операция частотного разделения обеспечивает множество правильных ответов, сигнал RDS/RBDS основной полосы частот служит в качестве обучающих данных, которые помогают в определении требуемого выходного сигнала.
Бифазный декодер символов: RDS и RBDS используют двухфазное
(bi- -L) кодирование, которое широко известно как манчестерское кодирование. В каждом такте символ RDS/RBDS принимает два противоположных значения амплитуды, либо положительное, либо отрицательное, либо положительное. Декодер двухфазных символов сводит на нет второй уровень амплитуды, так что каждый символ сохраняет один и тот же уровень амплитуды на протяжении всего тактового цикла. Новый уровень амплитуды в масштабе тактовой частоты соответствует битовому представлению символа. Следующие два скриншота соответствуют сигналам # 1-6 на рис. 2 из [1].

Для получения битового значения каждого символа форма сигнала интегрируется в течение каждого тактового цикла, и результат сравнивается с нулем (срез).

Наконец, биты дифференциально декодируются для возврата к дифференциальному кодированию в передатчике.
Уровень 2 реализуется с использованием системного блока RBDSDataLinkDecoder. Этот уровень отвечает за синхронизацию и исправление ошибок.
Битовый выход уровня PHY логически организован в 104-битовые группы, содержащие четыре 26-битовых блока. Каждый блок содержит 16-битовое информационное слово и 10 битов четности (см. рис. 8 в [1]). Отдельное 10-битовое слово смещения добавляется по модулю 2 к битам четности каждого блока.
Синхронизация: Изначально границы блока и группы искали исчерпывающе, используя скользящее окно из 104 бит. Для каждого 104-битового окна 4 слова смещения ищут в последних 10 битах каждого 26-битового блока. Слово смещения идентифицируется, если в его блоке не обнаружено битовых ошибок. После идентификации слов смещения достигается синхронизация на уровне группы, и исчерпывающая обработка скользящего окна прекращается. Затем следующие 104 бита будут рассматриваться как следующая группа.
Если будущие группы содержат битовые ошибки и слова смещения не могут быть идентифицированы в их ожидаемой позиции, синхронизация может быть потеряна. В этом случае уровень 2 сначала рассматривает возможность 1-битовых проскальзываний синхронизации, используя тот факт, что первое информационное слово (16 битов) всегда одинаково для всех битовых групп. Если первое информационное слово обнаруживается смещенным на 1 бит (влево или вправо), синхронизация сохраняется, и границы группы соответствующим образом корректируются. Если битовые ошибки сохраняются в течение 25 групповых приемов и в то же время синхронизация не может быть восстановлена с использованием таких 1-битовых сдвигов влево/вправо, то синхронизация теряется, и уровень 2 повторно входит в исчерпывающий поиск синхронизации на основе скользящего окна.
Исправление ошибок: Код исправления ошибок RDS и RBDS представляет собой (26, 16) циклический код, сокращенный от (341, 331). В реализации исправления ошибок используется схема сдвигового регистра, описанная в приложении В к [1].
Уровень 2 удаляет биты четности/смещения, поэтому уровень 3 принимает группы из 64 битов, содержащие четыре 16-битовых блока. Существует до 32 различных типов групп, каждый из которых помечен числом от 0 до 15 и буквой «A» или «B», например, 0B, 2A, 3A. Формат каждой группы может быть фиксированным или абстрактным, если эта группа выделена для приложения открытых данных (ODA, см. список в [3]).
Уровень 3 реализуется с использованием системного блока RBDSSSessionDecoder. Этот блок поддерживает декодирование типов групп 0A, 0B, 2A, 2B, 3A, 4A 10A фиксированного формата.
0A и 0B передают 8-символьную строку, которая обычно изменяется в режиме прокрутки текста.
2A и 2B передают более длинные 64 - или 32-символьные строки.
3A регистрирует ODA и указывает их выделенный тип группы абстрактного формата.
4A передает системное время.
10A далее классифицирует тип программы (например, «Футбол» для типа программы «Спорт»).
Для ODA приемник RDS/RBDS поддерживает декодирование RadioText Plus (RT +) [4]. Это ODA может разбить длинную 32 или 64-символьную строку из групповых типов 2A и 2B на два конкретных типа контента (например, исполнитель и песня).
На следующем снимке экрана показано графическое отображение обработанных данных RDS/RBDS:

Основная информация RDS/RBDS:
Первое поле соответствует типу программы, который передается вторым информационным словом всех типов групп. Если получены 10A типы групп, первое поле также обеспечивает дополнительную характеристику, например, Спорт\Футбол.
Второе поле иллюстрирует 8-символьный текст, передаваемый 0A/0B группами.
Третье поле иллюстрирует более длинный 32/64-символьный текст, передаваемый 2A/2B типами групп.
RadioText Plus (RT +): Этот раздел используется, если какие-либо 3A группы указывают, что RadioText Plus (RT +) ODA [4] использует определенный тип группы абстрактного формата, например, 11A. Затем при приеме этого абстрактного типа группы 32/64-символьный текст, передаваемый группами 2A/2B, будет разделен на две подстроки. Кроме того, две метки будут обновлены для характеристики подстрок (например, Artist и Song).
Приемы типов групп: Таблицы действуют как гистограмма, иллюстрирующая, какие типы групп были приняты от станции и с какой частотой. В результате пользователи могут захотеть посмотреть на записанные данные для получения дополнительной информации, которая не изображена в графическом средстве просмотра (например, системное время в 4A, альтернативные частоты в 0A и т.д.).
Открытые приложения данных (ODA): Если получены какие-либо типы 3A групп, то список обнаруженных ODA обновляется с помощью имени ODA и их выделенного типа группы.
Кроме того, можно установить флажок «Log data to file», чтобы регистрировать дополнительные поля из всех типов групп.
Национальный комитет по радиосистемам, стандарт RBDS Соединенных Штатов, апрель 1998 года
Дер, Лоуренс. «Учебное пособие по частотной модуляции (FM)». Silicon Laboratories Inc.
Национальный комитет по радиосистемам, Список заявок на ОПР в РДС
Спецификация RadioText Plus (RT +)
Джозеф П. Хоффбек, «Обучение коммуникационным системам с помощью Simulink ® и USRP», Ежегодная конференция ASEE, Сан-Антонио, Техас, июнь 2012 г.