comm.FMBroadcastModulator

Модулируйте широковещательно передает звуковой сигнал FM

Описание

comm.FMBroadcastModulator Система object™ предварительно подчеркивает звуковой сигнал и модулирует его на основополосный сигнал FM. Для получения дополнительной информации смотрите раздел Algorithms.

Модулировать широковещательную передачу звуковой сигнал FM:

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

  2. Вызовите объект с аргументами, как будто это была функция.

Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты?

Создание

Описание

fmbmodulator = comm.FMBroadcastModulator создает широковещательный Системный объект модулятора FM.

пример

fmbmodulator = comm.FMBroadcastModulator(Name,Value) свойства наборов с помощью одних или нескольких аргументов name-value. Например, 'SampleRate',400e3 задает частоту дискретизации 400 кГц.

fmbmodulator = comm.FMBroadcastModulator(fmbdemodulator) свойства наборов на основе настройки входа comm.FMBroadcastDemodulator Системный объект, fmbdemodulator.

Свойства

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

Если в противном случае не обозначено, свойства являются ненастраиваемыми, что означает, что вы не можете изменить их значения после вызова объекта. Объекты блокируют, когда вы вызываете их, и release функция разблокировала их.

Если свойство является настраиваемым, можно изменить его значение в любое время.

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты.

Частота дискретизации выхода модулятора в Гц в виде положительной скалярной величины. Частота дискретизации должна быть больше дважды отклонения частоты (то есть, SampleRate > 2×FrequencyDeviation).

Типы данных: double

Пиковое отклонение частоты выходного сигнала в Гц, заданном положительная скалярная величина. Отклонение частоты должно быть меньше половины частоты дискретизации (то есть, FrequencyDeviation <SampleRate/2).

Системная полоса пропускания B T = 2× (FrequencyDeviation + B M), где B M является полосой пропускания сообщения в Гц. Для получения дополнительной информации смотрите раздел Algorithms.

Стандарты телерадиовещания FM задают значение 75 кГц в Соединенных Штатах и 50 кГц в Европе.

Типы данных: double

Предварительный акцент highpass фильтрует постоянную времени в секундах в виде положительной скалярной величины. Стандарты телерадиовещания FM задают значение 75 μs в Соединенных Штатах и 50 μs в Европе.

Типы данных: double

Частота дискретизации входного звукового сигнала в Гц в виде положительной скалярной величины.

Типы данных: double

Опция, чтобы включить модуляцию стерео в виде логического 0 ложь) или 1 TRUE).

  • Установите это свойство на false для монофонических звуковых сигналов.

  • Установите это свойство на true для стереофонических звуковых сигналов. Объект модулирует аудиовход (LR) в полосе на 38 кГц в дополнение к модуляции звукового сигнала в основной полосе (L + R).

Для получения дополнительной информации смотрите раздел Algorithms.

Типы данных: логический

Опция, чтобы включить RDS (или RBDS) модуляция формы волны в виде логического 0 ложь) или 1 TRUE). Если вы устанавливаете это свойство на true, объект принимает основополосный RDS (или RBDS) форма волны как ее второй вход и модулирует RDS (или RBDS) сигнал на уровне 57 кГц. Для получения дополнительной информации смотрите раздел Algorithms.

Типы данных: логический

Сверхдискретизация фактора RDS (или RBDS) входной сигнал в виде положительного целого числа. Частота дискретизации RDS (или RBDS) широковещательные данные составляет 1 187,5 Гц. RDS (или RBDS) частота дискретизации сигнала является RBDSSamplesPerSymbol × 1187.5 Гц.

Зависимости

Чтобы включить это свойство, установите RBDS свойство к true.

Типы данных: double

Использование

Описание

пример

outsig = fmbmodulator(audiosig) предварительно подчеркивает входной звуковой сигнал и модулирует предварительно подчеркнутый сигнал на модулируемый FM основополосный звуковой сигнал.

пример

outsig = fmbmodulator(audiosig,rbdssig) также модулирует основополосный сигнал RBDS на уровне 57 кГц. Чтобы включить этот синтаксис, установите RBDS свойство к true.

Входные параметры

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

Звуковой сигнал в виде одной из этих опций.

  • N - вектор-столбец элемента для моно сигналов — Если вы устанавливаете Stereo свойство к false, необходимо задать звуковой сигнал как вектор-столбец. N является количеством отсчетов в звуковом сигнале.

  • M-by-N матрица для сигналов стерео — M является количеством стереоканалов. N является количеством отсчетов в звуковом сигнале на канал.

Для получения информации об ограничениях длины сигнала смотрите Ограничения.

Если вы устанавливаете Stereo свойство к true, звуковой сигнал должен иметь по крайней мере два канала, и Системный объект выполняет стерео, кодирующий после фильтрации перед акцентом.

Типы данных: double | single
Поддержка комплексного числа: Да

RBDS сигнализируют в виде вектор-столбца. Для получения информации об ограничениях длины сигнала RDBS смотрите Ограничения.

Чтобы сгенерировать сигнал RBDS, используйте comm.RBDSWaveformGenerator Системный объект.

Типы данных: double | single
Поддержка комплексного числа: Да

Выходные аргументы

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

Модулируемый FM сгенерированный модулированный сигнал, возвращенный как вектор-столбец комплексных чисел совпадающего типа данных как входной сигнал, audiosig. Продолжительностью этого выхода является length(audiosig) × (SampleRate/AudioSampleRate).

Функции объекта

Чтобы использовать объектную функцию, задайте Системный объект как первый входной параметр. Например, чтобы выпустить системные ресурсы Системного объекта под названием obj, используйте этот синтаксис:

release(obj)

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

infoИнформация о FM широковещательно передала модулятор или демодулятор
stepЗапустите алгоритм Системного объекта
releaseВысвободите средства и позвольте изменения в значениях свойств Системного объекта и введите характеристики
resetСбросьте внутренние состояния Системного объекта

Примеры

свернуть все

Воспроизведите звуковой файл после применения широковещательной модуляции FM и демодуляции с помощью Системных объектов, чтобы обработать данные в потоковом режиме.

Загрузите звуковой файл guitartune.wav при помощи Системы читателя звукового файла object™ с выборками на набор системы координат к 4 410.

audiofilereader = dsp.AudioFileReader('guitartune.wav', ...
    'SamplesPerFrame',4410);

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

fmbMod = comm.FMBroadcastModulator( ...
    'AudioSampleRate',audiofilereader.SampleRate, ...
    'SampleRate',240e3);
fmbDemod = comm.FMBroadcastDemodulator( ...
    'AudioSampleRate',audiofilereader.SampleRate, ...
    'SampleRate',240e3,'PlaySound',true);

Считайте аудиоданные в системах координат длины 4410, примените широковещательную модуляцию FM, демодулируйте сигнал FM и воспроизведите демодулируемый сигнал (demodData).

while ~isDone(audiofilereader)
    audioData = audiofilereader();
    modData = fmbMod(audioData);
    demodData = fmbDemod(modData); % Demodulate and play signal
end

Модулируйте и демодулируйте звуковой сигнал с широковещательным модулятором FM и Системными объектами демодулятора. Постройте частотные характеристики, чтобы сравнить вход и демодулируемые звуковые сигналы.

Загрузите звуковой файл guitartune.wav при помощи Системы читателя звукового файла object™. Установите выборки на систему координат к 44 100, который является достаточно большим, чтобы включать целый звуковой файл.

audiofilereader = dsp.AudioFileReader('guitartune.wav', ...
    'SamplesPerFrame',44100);
x = audiofilereader();

Создайте спектр Системные объекты анализатора, чтобы построить спектры модулируемых и демодулируемых сигналов.

SAaudio = dsp.SpectrumAnalyzer( ...
    'SampleRate',44100, ...
    'ShowLegend',true, ...
    'Title','Audio Signal', ...
    'ChannelNames',{'Input signal' 'Demodulated signal'});
SAfm = dsp.SpectrumAnalyzer( ...
    'SampleRate',152e3, ...
    'Title','FM Broadcast Signal');

Создайте широковещательный модулятор FM и объекты демодулятора. Установите частоту дискретизации выходного звукового сигнала совпадать с частотой дискретизации входного звукового сигнала. Сконфигурируйте демодулятор, чтобы совпадать с заданным модулятором.

fmbMod = comm.FMBroadcastModulator( ...
    'AudioSampleRate',audiofilereader.SampleRate, ...
    'SampleRate',200e3);
fmbDemod = comm.FMBroadcastDemodulator(fmbMod)
fmbDemod = 
  comm.FMBroadcastDemodulator with properties:

            SampleRate: 200000
    FrequencyDeviation: 75000
    FilterTimeConstant: 7.5000e-05
       AudioSampleRate: 44100
             PlaySound: false
                Stereo: false
                  RBDS: false

Длина входа последовательности к объекту должна быть целочисленным кратным фактор децимации. Чтобы определить аудио фактор децимации фильтра в модуляторе и демодуляторе, используйте info объектная функция.

info(fmbMod)
ans = struct with fields:
       AudioDecimationFactor: 441
    AudioInterpolationFactor: 2000
        RBDSDecimationFactor: 19
     RBDSInterpolationFactor: 320

info(fmbDemod)
ans = struct with fields:
       AudioDecimationFactor: 50
    AudioInterpolationFactor: 57
        RBDSDecimationFactor: 50
     RBDSInterpolationFactor: 57

Аудио фактор децимации модулятора является кратным аудио длине системы координат 44 100. Аудио фактором децимации демодулятора является целочисленное кратное эти 200 000 демонстрационных длин последовательности данных модулятора выход.

Модулируйте звуковой сигнал и постройте спектр модулируемого сигнала.

y = fmbMod(x);
SAfm(y)

Figure Spectrum Analyzer contains an axes object and other objects of type uiflowcontainer, uimenu, uitoolbar. The axes object with title FM Broadcast Signal contains an object of type line. This object represents Channel 1.

Демодулируйте модулируемый звуковой сигнал и постройте результирующий спектр. Сравните спектр входного сигнала с демодулируемым спектром сигнала. Спектры подобны за исключением того, что демодулируемый сигнал имеет меньшие высокочастотные компоненты.

z = fmbDemod(y);
SAaudio([x z])

Figure Spectrum Analyzer contains an axes object and other objects of type uiflowcontainer, uimenu, uitoolbar. The axes object with title Audio Signal contains 2 objects of type line. These objects represent Input signal, Demodulated signal.

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

Задайте параметры для формы волны RBDS с 19 группами на систему координат и 10 выборками на символ. Частота дискретизации формы волны RBDS дана 1187.5 x 10. Установите частоту дискретизации звука на 1187.5 x 40.

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

Загрузите звуковой файл guitartune.wav при помощи Системы читателя звукового файла object™ при установке выборок на систему координат. Создайте генератор формы волны RBDS, широковещательный модулятор FM, широковещательный демодулятор FM, и время определяет объем Системных объектов. Сконфигурируйте модулятор, и демодулятор возражает, чтобы обработать звуковой файл стерео и форму волны RBDS.

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. Просмотрите формы волны в осциллографе времени.

for idx = 1:7
    input = afr();                         
    rbdsWave = rbds();                     
    yFM = fmMod([input input],rbdsWave);  
    rcv = awgn(yFM,40);                   
    [audioRcv, rbdsRcv] = fmDemod(rcv);    
    scope(rbdsRcv);
end

Ограничения

  • Если вы устанавливаете RBDS к true, и аудио и RDS (или RBDS) входные параметры должны удовлетворить этому уравнению.

    audioLengthaudioSampleRate=RBDSLengthRBDSSampleRate

  • RDS (или RBDS) частота дискретизации сигнала является RBDSSamplesPerSymbol × 1187.5 Гц.

  • Длина входа RDS (или RBDS) сигнал, rbdssig, должно быть целочисленное кратное RBDSDecimationFactor свойство. Входная длина звукового сигнала, audiosig, должно быть целочисленное кратное AudioDecimationFactor свойство. Для получения дополнительной информации о RBDSDecimationFactor и AudioDecimationFactor, смотрите info объектная функция.

Алгоритмы

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

Широковещательный модулятор FM включает функциональность основополосного модулятора FM, фильтрации перед акцентом и способности передать стереофонические сигналы. Для получения дополнительной информации об алгоритмах, используемых для основной модуляции FM и демодуляции, смотрите comm.FMModulator Системный объект.

Ссылки

[1] Hatai, я., и я. Chakrabarti. “Новый Высокоэффективный Цифровой Модулятор FM и Демодулятор для Программно определяемого Радио и Его Реализации FPGA”. Международный журнал Реконфигурируемого Вычисления (25 декабря 2011): 1-10. https://doi.org/10.1155/2011/342532.

[2] Taub, H. и D. Шиллинг. Принципы Систем связи. Ряд McGraw-Hill в Электротехнике. Нью-Йорк: McGraw-Hill, 1971, стр 142–155.

[3] Der, Лоуренс. "Пример по Частотной модуляции (FM)". Silicon Laboratories Inc., стр 4–8.

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

Представленный в R2015a