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
шагСгенерируйте RDS/RBDS сигнал
Характерный для всех системных объектов
release

Позвольте изменения значения свойства Системного объекта

reset

Сбросьте внутренние состояния Системного объекта

Примеры

свернуть все

Сгенерируйте основную форму волны 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