comm.RBDSWaveformGenerator

Сгенерируйте RDS/RBDS сигнал

Описание

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

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

Сгенерировать основополосные RDS/RBDS сигналы:

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

  2. Вызовите step сгенерировать форму волны.

Примечание

В качестве альтернативы вместо того, чтобы использовать step метод, чтобы выполнить операцию, заданную Системным объектом, можно вызвать объект с аргументами, как будто это была функция. Например, 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. Если это свойство пусто, то никакие группы на 10 А не сгенерированы.

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

Опция, чтобы рекламировать дату и время в виде любого false или true. Когда вы устанавливаете это свойство на true, одна группа на 4 А периодически генерируется каждые 685 групп (однажды минута).

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

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

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

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

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

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

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

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

Методы

callLettersToPICodeПреобразуйте североамериканские позывные в бинарный код PI
registerODAУкажите пользовательскую реализацию кодирования для ODA
сбросСбросьте состояния объекта генератора формы волны RBDS
шагСгенерируйте RDS/RBDS сигнал

Примеры

свернуть все

Сгенерируйте основную форму волны RBDS, FM модулируют форму волны со звуковым сигналом, и затем демодулируют форму волны.

Каждая система координат формы волны RBDS содержит 19 групп с длиной группы 104 битов (символы) каждый. Определите номер выборок на символ RBDS к 10. Поэтому количество выборок в каждой системе координат формы волны RBDS является 104 x 10 x 19 = 19,760. Согласно стандарту RBDS, битрейт составляет 1 187,5 Гц. Так, частота дискретизации RBDS = 1 187,5 x выборок на символ 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. FM модулирует аудио стерео с формой волны RBDS, добавляет шум, и FM демодулирует аудио и формы волны 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 выборками на символ. Добавьте Радио-текст плюс (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™. Установите ID ODA на 'CD46', который является ID для канала сообщения трафика. Выделенный тип группы составляет 8 А.

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 Плюс (RT +) Спецификация, Версия 2.1. 2006.

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

Смотрите также

Объекты

Введенный в R2017a