Бытовой радиоприемник FM

Этот пример показывает, как создать моно FM или стереоресивер с помощью MATLAB® и Communications Toolbox™. Можно или использовать полученные сигналы или получить сигналы в режиме реального времени с помощью Радио RTL-SDR или Радио ADALM-PLUTO.

Необходимое аппаратное и программное обеспечение

Чтобы запустить этот пример с помощью полученных сигналов, вам нужно следующее программное обеспечение:

Чтобы получить сигналы в режиме реального времени, вам также нужно одно из следующего оборудования:

Для полного списка Communications Toolbox поддерживаемые платформы SDR обратитесь к разделу Supported Hardware Программно определяемого радио (SDR).

Фон

FM, широковещательно передающий модуляцию частоты (FM) использования, чтобы обеспечить высокочастотное распространение звука по широковещательным каналам радио. Предварительный акцент и фильтры de-акцента используются, чтобы уменьшать эффект шума на высоких звуковых частотах. Кодирование стерео включает одновременную передачу обоих левых и правых звуковых каналов по тому же каналу FM [1].

Запустите пример

Введите FMReceiverExample в Окне Команды MATLAB или щелкните по ссылке, чтобы запустить пример. Необходимо ввести следующую информацию, когда вы запускаете пример:

  1. Длительность приема в секундах

  2. Источник сигнала (собранные данные, радио RTL-SDR или радио ADALM-PLUTO)

  3. Частота канала 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. Этот пользовательский интерфейс показывают в следующей фигуре

Выбранная библиография