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

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

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

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

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

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

Фон

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

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

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

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

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

  3. Частота канала FM

Пример проигрывает полученное аудио по динамикам вашего компьютера.

ПРИМЕЧАНИЕ: Этот пример использует центральную частоту, которая находится вне диапазона настройки PlutoSDR по умолчанию. Кликните по 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. Этот пользовательский интерфейс показывают в следующем рисунке

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

Для просмотра документации необходимо авторизоваться на сайте