exponenta event banner

коммуникация. RBDSWaveformGenerator

Формирование формы сигнала RDS/RBDS

Описание

comm.RBDSWaveformGenerator Система object™ генерирует конфигурируемые стандартные формы сигналов RDS/RBDS основной полосы в MATLAB ®. Формы сигналов RDS/RBDS дополняют FM-радиостанции дополнительной текстовой информацией, такой как название песни, имя исполнителя и описание станции. Сигнал RDS/RBDS находится в полосе 57-kHz радиосигнала FM основной полосы частот.

Этот объект используется для генерации формы сигнала, содержащей информацию RadioText Plus (RT +), и регистрации пользовательской реализации кодирования для приложения открытых данных (ODA). Можно также указать время, данные и тип программы. Объект поддерживает короткий, прокручиваемый 8-символьный текст и более длинный 32-символьный или 64-символьный текст.

Для генерации сигналов RDS/RBDS основной полосы частот:

  1. Создать comm.RBDSWaveformGenerator и задайте свойства объекта.

  2. Звонить step для формирования формы сигнала.

Примечание

В качестве альтернативы вместо использования step для выполнения операции, определенной объектом System, можно вызвать объект с аргументами, как если бы это была функция. Например, y = step(obj,x) и y = obj(x) выполнять эквивалентные операции.

Строительство

rbdsgen = comm.RBDSWaveformGenerator создает объект генератора формы сигнала RDS/RBDS, rbdsgen, используя свойства по умолчанию.

rbdsgen = comm.RBDSWaveformGenerator(Name,Value) задает дополнительные свойства с помощью Name,Value пар. Неопределенные свойства имеют значения по умолчанию.

Пример:

rbdsgen = comm.RBDSWaveformGenerator( ...
     'GroupsPerFrame',20,'SamplesPerSymbol',10, ...
     'SendRadioTextPlus',true);

Свойства

развернуть все

Если свойство указано как настраиваемое, его значение можно изменить, даже если объект заблокирован.

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

Число групп на выходной кадр, указанное как скалярное целое число. Каждая группа имеет длину 104 символа (бита).

Радиотекст, передаваемый с группами типа 2A, задаваемый как вектор символов длиной до 64 символов. Объект передает указанный текст по четыре символа одновременно, используя группы 2A типов.

Настраиваемый: Да

Метка службы программы, определяемая как вектор символов длиной до восьми символов. Эта информация передается в виде краткого текста с группами типов 0A, по два символа за раз.

Настраиваемый: Да

Код идентификации программы (PI), заданный как 16-битный вектор строки. В Северной Америке PI-код передает письма вызова станции. Примеры букв вызова: 'WABC' и 'KXYZ'.

Для генерации североамериканских PI-кодов для букв вызова станции используйте callLettersToPICode способ.

Тип программы, определяемый как вектор символов, содержащий одно из 31 значений, разрешенных стандартом RDS/RBDS. Список типов программ, разрешенных стандартом RDS/RBDS в Северной Америке, см. в [1].

Настраиваемый: Да

Имя типа программы, определяемое как вектор символов длиной до восьми символов. Этот текст дополнительно характеризует вид программы, например, 'Football' для типа программы 'Sports'. Объект передает имя типа программы с помощью групп 10A типов. Если это свойство пустое, то группы 10A не создаются.

Настраиваемый: Да

Параметр для объявления даты и времени, указанный как false или true. При установке для этого свойства значения true, одна 4A группа периодически генерируется каждые 685 групп (один раз в минуту).

Альтернативные частоты, определяемые как вектор строки в МГц. Эта информация передается с группами 0A типа. Он указывает другие передатчики, транслирующие ту же самую программу в той же самой или смежных областях приема. С помощью этой информации приемники могут переключаться на другую частоту с лучшим приемом.

Возможность передачи информации RadioText Plus (RT +), заданной как скалярная логическая. При установке для этого свойства значенияtrueинформация RT + ODA объявляется группами типа 3A. Кроме того, типы контента RT +, указанные вRadioTextType1, RadioTextType2и две подстроки RT +, индексированные RadioTextIndices передаются с группой 11A типа открытого формата.

Тип содержимого первой подстроки RT +, указанный как символьный вектор. Допустимые значения - это имена классов, указанные в стандарте RT +. Для получения дополнительной информации см. [2].

Настраиваемый: Да

Тип содержимого второй подстроки RT +, указанный как символьный вектор. Допустимые значения - это имена классов, указанные в стандарте RT +. Для получения дополнительной информации см. [2].

Настраиваемый: Да

Начальный и конечный индексы подстрок RT +, задаваемые как матрица положительных целых чисел 2 на 2. Первый столбец индексирует начало каждой подстроки RT +. Второй столбец индексирует конец каждой подстроки.

Настраиваемый: Да

Методы

callLettersToPICodeПреобразование североамериканских букв вызова в двоичный PI-код
registerODAРегистрация пользовательской реализации кодирования для ОПР
шагФормирование формы сигнала RDS/RBDS
Общие для всех системных объектов
release

Разрешить изменение значения свойства объекта системы

reset

Сброс внутренних состояний объекта System

Примеры

свернуть все

Генерируют основную форму сигнала RBDS, ЧМ модулируют форму сигнала звуковым сигналом, а затем демодулируют форму сигнала.

Каждый кадр формы сигнала RBDS содержит 19 групп с длиной группы 104 бита (символа) каждая. Установите количество выборок на символ RBDS равным 10. Поэтому число выборок в каждом кадре формы сигнала RBDS равно 104 x 10 x 19 = 19 760. Согласно стандарту RBDS, битрейт составляет 1187,5 Гц. Таким образом, частота выборок RBDS = 1187,5 выборок на символ RBDS. Установите частоту кадров звука 40 x 1187,5 = 47 500.

groupLen = 104;
sps = 10;
groupsPerFrame = 19;
rbdsFrameLen = groupLen*sps*groupsPerFrame;
afrRate = 40*1187.5;
rbdsRate = 1187.5*sps;
outRate = 4*57000;

afr = dsp.AudioFileReader('rbds_capture_47500.wav','SamplesPerFrame',rbdsFrameLen*afrRate/rbdsRate);
rbds = comm.RBDSWaveformGenerator('GroupsPerFrame',groupsPerFrame,'SamplesPerSymbol',sps);

fmMod = comm.FMBroadcastModulator('AudioSampleRate',afr.SampleRate,'SampleRate',outRate,...
    'Stereo',true,'RBDS',true,'RBDSSamplesPerSymbol',sps);
fmDemod = comm.FMBroadcastDemodulator('SampleRate',outRate,...
    'Stereo',true,'RBDS',true,'PlaySound',true);
scope = timescope('SampleRate',outRate,'YLimits',10^-2*[-1 1]);

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

for idx = 1:7
    input = afr();                         % get current audio input
    rbdsWave = rbds();                     % generate RBDS info at the same configured rate
    yFM = fmMod([input input], rbdsWave);  % FM modulate stereo audio with RBDS info
    rcv = awgn(yFM, 40);                   % add noise
    [audioRcv, rbdsRcv] = fmDemod(rcv);    % FM demodulate the audio and RBDS waveforms
    scope(rbdsRcv);
end

Создать comm.RBDSWaveformGenerator Системные object™ с 20 группами на кадр и 10 выборками на символ. Добавьте в форму сигнала информацию Radio Text plus (RT +), такую как имя исполнителя и песня, название. Укажите начало и конец подстрок RT + с помощью RadioTextIndices собственность.

rbds = comm.RBDSWaveformGenerator('GroupsPerFrame',20,'SamplesPerSymbol',10,...
    'SendRadioTextPlus', true);
rbds.RadioText = 'MyArtist - MySongTitle';
rbds.RadioTextType1 = 'Item.Artist';
rbds.RadioTextType2 = 'Item.Title';
rbds.RadioTextIndices = [1 8; 12 22]; 
for idx = 1:10
    rbds.step();
end

Зарегистрируйте пользовательскую реализацию кодирования для приложения открытых данных (ODA) с помощью registerODA способ comm.RBDSWaveformGenerator object™ системы. Установите идентификатор ODA в значение 'CD46', который является идентификатором канала сообщений трафика. Присвоенный тип группы - 8A.

rbds = comm.RBDSWaveformGenerator();
odaID = 'CD46';
allocatedGroupType = '8A';

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

mainProcessingFcn = @CustomODAEncodingMain;
fcn3A             = @CustomODAEncoding3A;
registerODA(rbds,odaID,allocatedGroupType,mainProcessingFcn,fcn3A);
s = info(rbds);
s.ODAMap
ans=2×1 struct array with fields:
    ID
    GroupType
    FunctionMain
    Function3A

Формирование формы сигнала RBDS с информацией о дате и времени, типе программы и альтернативных частотах. comm.RBDSWaveformGenerator возразите группам типа 4A использования для даты и информации времени, группам типа 10A для получения информации о типе программы и группам типа 0A для альтернативных частот. Просмотрите форму сигнала в анализаторе спектра.

rbds = comm.RBDSWaveformGenerator('GroupsPerFrame',1000);
scope = dsp.SpectrumAnalyzer('SampleRate',1187.5*rbds.SamplesPerSymbol,'YLimits',[-140 20]);
rbds.SendDateTime = true;          % send type 4A groups
rbds.ProgramType = 'Sports';
rbds.ProgramTypeName = 'Football'; % send type 10A groups
rbds.AlternativeFrequencies = [99.1 102.5]; % info sent in type 0A groups
wave = rbds.step();
scope(wave)

Алгоритмы

развернуть все

comm.RBDSWaveformGenerator генерирует сигналы в соответствии со стандартом RDS/RBDS [1]. Стандарт RDS/RBDS состоит из трех уровней: физического уровня, уровня канала передачи данных, сеансового и прикладного уровня.

Ссылки

[1] Национальный комитет по радиосистемам. Стандарт RBDS США: спецификация системы данных радиовещания (RBDS). Ассоциация электронной промышленности и Национальная ассоциация телерадиовещателей. 9 апреля 1998 года.

[2] Westdeutscher Rundfunk WDR, Nokia и Institut für Rundfunktechnik IRT. Спецификация RadioText Plus (RT +), версия 2.1. 2006.

Расширенные возможности

.
Представлен в R2017a