В этом примере показано, как создать моно FM или стереоресивер с помощью MATLAB® и Communications Toolbox™. Можно или использовать записанные сигналы или получить сигналы в режиме реального времени с помощью Радио RTL-SDR или Радио ADALM-PLUTO.
Чтобы запустить этот пример с помощью записанных сигналов, вам нужно следующее программное обеспечение:
Чтобы получить сигналы в режиме реального времени, вам также нужно одно из следующего оборудования:
Радио RTL-SDR и соответствующее программное обеспечение Communications Toolbox Support Package для Радио RTL-SDR
Радио ADALM-PLUTO и соответствующее программное обеспечение Communications Toolbox Support Package для Радио ADALM-PLUTO
Для полного списка Communications Toolbox поддерживаемые платформы SDR обратитесь к разделу Supported Hardware Программно определяемого радио (SDR).
FM, широковещательно передающий частотную модуляцию (FM) использования, чтобы обеспечить высокочастотное распространение звука по широковещательным каналам радио. Предварительный акцент и фильтры de-акцента используются, чтобы уменьшать эффект шума на высоких звуковых частотах. Кодирование стерео включает одновременную передачу обоих левых и правых звуковых каналов по тому же каналу FM [1].
Введите FMReceiverExample в Окне Команды MATLAB или щелкните по ссылке, чтобы запустить пример. Необходимо ввести следующую информацию, когда вы запускаете пример:
Длительность приема в секундах
Источник сигнала (собранные данные, радио RTL-SDR или радио ADALM-PLUTO)
Частота канала FM
Пример проигрывает полученное аудио по динамикам вашего компьютера.
ПРИМЕЧАНИЕ: Этот пример использует центральную частоту, которая является вне диапазона настройки по умолчанию. Кликните по configurePlutoRadio ('AD9364'), чтобы использовать ваше радио ADALM-PLUTO вне квалифицированного диапазона настройки.
Широковещательная Основополосная Система Демодулятора FM object™ преобразует входной уровень выборки от 228 кГц до 45,6 кГц, уровень выборки для аудио устройства вашего хоста - компьютера. Согласно стандарту телерадиовещания FM в Соединенных Штатах, de-акцент постоянная времени фильтра lowpass установлена в 75 микросекунд. Этот пример обрабатывает полученные моно сигналы. Демодулятор может также обработать сигналы стерео.
Чтобы выполнить декодирование стерео, объект FM Broadcast Demodulator Baseband использует худой фильтр, который выбирает экспериментальный тон на 19 кГц, из которого создается поставщик услуг на 38 кГц. Используя получившийся сигнал поставщика услуг, блок FM Broadcast Demodulator Baseband downconverts сигнал L-R, сосредоточенный на уровне 38 кГц, к основной полосе. Впоследствии, сигналы L-R и L+R проходят через фильтр de-акцента с 75 микросекундами. Блок FM Broadcast Demodulator Baseband разделяет L, и R сигнализирует и преобразует их в звуковой сигнал на 45,6 кГц.
Получатель просит ввод данных пользователем и инициализирует переменные. Затем это вызывает источник сигнала и бытовой радиоприемник FM в цикле. Цикл также отслеживает радио-время с помощью длительности системы координат и потерянных выборок, о которых сообщает источник сигнала.
Выход задержки источника сигнала является индикацией относительно того, когда выборки были на самом деле получены и могут использоваться, чтобы определить, как близко к реальному времени получатель запускается. Значение задержки 1 и потерянное демонстрационное значение 0 указывают, что система запускается в режиме реального времени. Значение задержки больших, чем каждый указывает, что получатель не смог обработать выборки в режиме реального времени. О задержке сообщают в терминах количества систем координат. Это может быть между 1 и 128. Если задержка больше 128, то выборки потеряны.
% Request user input from the command-line for application parameters userInput = helperFMUserInput; % Calculate FM system parameters based on the user input [fmRxParams,sigSrc] = helperFMConfig(userInput); % Create FM broadcast receiver object and configure based on user input fmBroadcastDemod = comm.FMBroadcastDemodulator(... 'SampleRate', fmRxParams.FrontEndSampleRate, ... 'FrequencyDeviation', fmRxParams.FrequencyDeviation, ... 'FilterTimeConstant', fmRxParams.FilterTimeConstant, ... 'AudioSampleRate', fmRxParams.AudioSampleRate, ... 'Stereo', false); % Create audio player player = audioDeviceWriter('SampleRate',fmRxParams.AudioSampleRate); % Initialize radio time radioTime = 0; % Main loop while radioTime < userInput.Duration % Receive baseband samples (Signal Source) if fmRxParams.isSourceRadio if fmRxParams.isSourcePlutoSDR rcv = sigSrc(); lost = 0; late = 1; else [rcv,~,lost,late] = sigSrc(); end else rcv = sigSrc(); lost = 0; late = 1; end % Demodulate FM broadcast signals and play the decoded audio audioSig = fmBroadcastDemod(rcv); player(audioSig); % Update radio time. If there were lost samples, add those too. radioTime = radioTime + fmRxParams.FrontEndFrameTime + ... double(lost)/fmRxParams.FrontEndSampleRate; end % Release the audio and the signal source release(sigSrc) release(fmBroadcastDemod) release(player)
Чтобы далее исследовать пример, можно варьироваться центральная частота радио RTL-SDR или радио ADALM-PLUTO и слушать другие радиостанции.
Можно установить свойство Stereo объекта демодулятора FM к истинному обрабатывать сигналы способом стерео и сравнивать качество звука.
Можно исследовать следующую функцию для деталей системных параметров:
Можно далее исследовать использование сигналов FM пользовательский интерфейс FMReceiverExampleApp. Это приложение позволяет вам выбирать источник сигнала и изменять центральную частоту радио RTL-SDR или радио ADALM-PLUTO. Чтобы запустить приложение, введите FMReceiverExampleApp в Окне Команды MATLAB. Этот пользовательский интерфейс показывают в следующем рисунке