このページは前リリースの情報です。該当の英語のページはこのリリースで削除されています。

FM ブロードキャスト受信機

この例では、MATLAB® および Communications Toolbox™ を使用して FM モノラルまたはステレオ受信機を作成する方法について説明します。取得した信号か、RTL-SDR 無線機または ADALM-PLUTO 無線機を使用してリアルタイムに受信した信号のいずれかを使用できます。

必要なソフトウェアとハードウェア

取得した信号を使用してこの例を実行するには、次のソフトウェアが必要です。

信号をリアルタイムに受信するには、次のいずれかのハードウェアも必要になります。

Communications Toolbox でサポートされる SDR プラットフォームのすべてのリストについては、ソフトウェア無線機 (SDR) のサポートされているハードウェアの節を参照してください。

背景

FM 放送は、周波数変調 (FM) を使用して、ラジオ放送チャネルで忠実度の高い音声送信を提供します。プリエンファシスおよびディエンファシス フィルターが、高い音声周波数でのノイズの影響を軽減するために使用されます。ステレオ符号化によって、同じ FM チャネル [1] で、左右両方のオーディオ チャネルの同時送信が可能になります。

例の実行

MATLAB コマンド ウィンドウで FMReceiverExample と入力するか、リンクをクリックして例を実行します。この例を実行するときには、次の情報を入力する必要があります。

  1. 受信期間の秒数

  2. 信号ソース (取得されたデータ、RTL-SDR 無線機または ADALM-PLUTO 無線機)

  3. FM チャネル周波数

この例では、受信したオーディオをコンピューターのスピーカーで再生します。

メモ:この例では、既定の調整の範囲外である中心周波数を利用します。制約のある調整の範囲外で ADALM-PLUTO 無線機を使用するには [configurePlutoRadio('AD9364')] をクリックします。

受信機の構造

FM Broadcast Demodulator Baseband System object™ は、228 kHz の入力サンプリング レートを 45.6 kHz に変換します。これは、ホスト コンピューターのオーディオ デバイスのサンプリング レートです。米国の FM 放送の規格に従って、ディエンファシス ローパス フィルターの時定数が 75 マイクロ秒に設定されています。この例では、受信されたモノラル信号を処理します。復調器は、ステレオ信号も処理できます。

ステレオ復号化を実行するために、FM Broadcast Demodulator Baseband オブジェクトではピーク フィルターを使用して 19 kHz パイロット トーンを選択します。これは、38 kHz の搬送波を作成する基になります。得られた搬送波信号を使用して、FM Broadcast Demodulator Baseband ブロックは、中心が 38 kHz の L-R 信号をベースバンドにダウンコンバートします。その後に、L-R および L+R 信号が 75 マイクロ秒ディエンファシス フィルターを通過します。FM Broadcast Demodulator Baseband ブロックが L と R 信号を分離し、それらを 45.6 kHz 音声信号に変換します。

コード例

受信機は、ユーザーの入力を求めて、変数を初期化します。次にループで、信号ソースと FM ブロードキャスト受信機を呼び出します。また、このループは、フレーム時間を使用して無線時間を追跡し、さらに信号のソースによって報告された失われたサンプルを追跡します。

信号ソースのレイテンシ出力は、サンプルが実際にいつ受信されたかを示し、実行中の受信機がリアルタイムにどれだけ近いかを判断するために使用できます。レイテンシ値 1 と、失われたサンプル値 0 は、システムがリアルタイムで実行されていることを示します。1 より大きいレイテンシの値は、受信機がリアルタイムにサンプルを処理できなかったことを示します。レイテンシは、フレーム数で報告されます。これは 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 無線機の中心周波数を変えて、他のラジオ局を聴取することもできます。

FM 復調器オブジェクトの Stereo プロパティを true に設定することで、信号がステレオ形式で処理され、音質を比較できます。

システム パラメーターの詳細については、次の関数についての情報を参照してください。

FMReceiverExampleApp ユーザー インターフェイスを使用して、FM 信号をさらに調査することができます。このアプリでは、信号ソースを選択して、RTL-SDR 無線機または ADALM-PLUTO 無線機の中心周波数を変更できます。アプリを起動するには、MATLAB コマンド ウィンドウで FMReceiverExampleApp と入力します。このユーザー インターフェイスは、次の図に示されています。

参考文献