коммуникация. 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 = dsp.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 = 2x1 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