exponenta event banner

Широковещательный приемник FM

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

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

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

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

Полный список платформ SDR, поддерживаемых Communications Toolbox, см. в разделе «Поддержка аппаратного обеспечения MATLAB и Simulink для SDR» Программного радио (SDR).

Фон

ЧМ-вещание использует частотную модуляцию (ЧМ) для обеспечения высокоскоростной передачи звука по широковещательным радиоканалам. Фильтры предварительного акцентирования и снятия акцентирования используются для уменьшения влияния шума на высокие звуковые частоты. Стереокодирование обеспечивает возможность одновременной передачи как левого, так и правого аудиоканалов по одному и тому же ЧМ-каналу [1].

Выполнить пример

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

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

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

  3. Частота ЧМ-канала

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

ПРИМЕЧАНИе.В этом примере используется центральная частота, выходящая за пределы диапазона настройки PlutoSDR по умолчанию. Щелкните Настроить (Configure) PlutoRadio (AD9364), чтобы использовать радио ADALM-PLUTO вне допустимого диапазона настройки.

Структура приемника

Система FM Broadcast Demodulator Baseband System object™ преобразует входную частоту дискретизации 228 кГц в 45,6 кГц, частоту дискретизации аудиоустройства главного компьютера. В соответствии со стандартом ЧМ-вещания в Соединенных Штатах постоянная времени фильтра нижних частот для снятия акцента устанавливается равной 75 микросекундам. В этом примере обрабатываются принятые моносигналы. Демодулятор также может обрабатывать стереосигналы.

Для выполнения стереодекодирования объект основной полосы частот широковещательного демодулятора ЧМ использует пиковый фильтр, который выбирает пилот-тон 19 кГц, из которого создается несущая 38 кГц. Используя результирующий сигнал несущей, блок основной полосы частот широковещательного демодулятора ЧМ преобразует с понижением частоты сигнал L-R, центрированный на частоте 38 кГц, в основную полосу частот. После этого сигналы L-R и L + R проходят через 75 микросекундный фильтр снятия акцента. Блок основной полосы частот широковещательного демодулятора ЧМ разделяет сигналы L и R и преобразует их в аудиосигнал 45,6 кГц.

Пример кода

Приемник запрашивает пользовательский ввод и инициализирует переменные. Затем он вызывает источник сигнала и приемник ЧМ-вещания в цикле. Петля также отслеживает время радиосвязи, используя длительность кадра и потерянные выборки, сообщенные источником сигнала.

Выходной сигнал задержки источника сигнала является указанием того, когда выборки были фактически приняты, и может использоваться для определения того, насколько близко к реальному времени работает приемник. Значение задержки 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 объекта демодулятора ЧМ значение true.

Для получения подробной информации о системных параметрах можно ознакомиться со следующей функцией:

Далее можно изучить сигналы FM с помощью пользовательского интерфейса FMReceiverExampleApp. Это приложение позволяет выбрать источник сигнала и изменить центральную частоту радио RTL-SDR или радио ADALM-PLUTO. Чтобы запустить приложение, введите FMReceiverExampleApp в окне команд MATLAB. Этот пользовательский интерфейс показан на следующем рисунке

Избранная библиография