Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

comm.FMBroadcastDemodulator

ブロードキャスト FM 信号の復調

説明

comm.FMBroadcastDemodulator System object™ は、複素ベースバンド FM 信号を復調し、ディエンファシス フィルターを使用して信号をフィルター処理して、オーディオ信号を生成します。Stereo プロパティが true に設定されている場合、オブジェクトはステレオ復号化を実行します。RBDS プロパティが true に設定されている場合、オブジェクトは RDS/RBDS 波形の復調も行います。詳細は、アルゴリズムを参照してください。

複素ベースバンド FM 信号を復調するには、次を行います。

  1. comm.FMBroadcastDemodulator オブジェクトを定義して設定します。構築を参照してください。

  2. step を呼び出して、comm.FMBroadcastDemodulator のプロパティに従い、複素ベースバンド FM 信号を復調します。

メモ

R2016b 以降では、step メソッドを使用して、System object によって定義された演算を実行する代わりに、引数を関数であるかのように使ってオブジェクトを呼び出すことができます。たとえば、y = step(obj,x)y = obj(x) は同等の演算を実行します。

構築

fmbDemod = comm.FMBroadcastDemodulator は、入力信号の周波数復調を行う復調器 System object、fmbDemod を作成します。

fmbDemod = comm.FMBroadcastDemodulator(Name,Value) は、指定の各 Name プロパティを指定の Value に設定して、FM 復調器オブジェクト fmbDemod を作成します。(Name1,Value1,...,NameN,ValueN) のように、追加の名前と値のペアの引数を任意の順番で指定できます。

fmbDemod = comm.FMBroadcastDemodulator(MOD) は、FM 復調器オブジェクト fmbDemod を作成します。このオブジェクトのプロパティは対応する FM 変調器オブジェクト MOD によって決まります。

プロパティ

SampleRate

入力信号のサンプルレート (Hz)

入力信号のサンプルレートを Hz 単位で、正の実数スカラーとして指定します。既定値は 240e3 です。このプロパティは調整不可能です。

FrequencyDeviation

出力信号周波数のピーク偏差 (Hz)

FM 復調器の周波数偏差を Hz 単位で、正の実数スカラーとして指定します。既定値は 75e3 です。システムの帯域幅は、周波数偏差とメッセージ帯域幅の合計の 2 倍と等しくなります。FM ブロードキャストの業界標準では、米国では 75 kHz、ヨーロッパでは 50 kHz の値が規定されています。このプロパティは調整不可能です。

FilterTimeConstant

ディエンファシス フィルターの時定数 (秒)

ディエンファシス ローパス フィルターの時定数を正の実数スカラーとして指定します。既定値は 7.5e-05 です。FM ブロードキャストの業界標準では、米国では 75 μs、ヨーロッパでは 50 μs の値が規定されています。このプロパティは調整不可能です。

AudioSampleRate

出力信号のオーディオ サンプルレート (Hz)

出力オーディオのサンプルレートを正の実数スカラーで指定します。既定値は 48000 です。このプロパティは調整不可能です。

PlaySound

チャネルを有効または無効にする文字ベクトル

既定のオーディオ デバイスで出力信号を再生するには、このプロパティを true に設定します。既定の設定は false です。このプロパティは調整不可能です。

BufferSize

オーディオ デバイスのバッファー サイズ

オブジェクトがオーディオ デバイスとの通信に使用するバッファーのサイズ (サンプル単位) を、正のスカラー整数で指定します。既定の設定は 4096 です。このプロパティは PlaySoundtrue である場合のみ使用できます。このプロパティは調整不可能です。

Stereo

ステレオ オーディオを有効または無効にするフラグ

ステレオ オーディオ信号を復調するには、このプロパティを true に設定します。入力信号がモノラルの場合は false に設定します。既定の設定は false です。このプロパティは調整不可能です。

RBDS

RDS/RBDS 波形を復調するフラグ

RBDStrue に設定されている場合、step メソッドの 2 番目の出力はベースバンド RDS/RBDS 波形です。既定値は false です。このプロパティは調整不可能です。

RBDSSamplesPerSymbol

RDS/RBDS 出力のオーバーサンプリング係数

RDS/RBDS 出力のサンプル数を正の整数で指定します。RDS/RBDS サンプルレートは、RBDSSamplesPerSymbol × 1187.5 Hz で求められます。RDS/RBDS 標準によれば、各ビットのサンプルレートは 1187.5 Hz です。

このプロパティは RBDStrue に設定した場合にのみ適用されます。

既定の設定は 10 です。

RBDSCostasLoop

RDS/RBDS 信号の位相を復元するオプション

Costas ループを RDS/RBDS 信号の位相の復元に使用するかどうかを指定します。19 kHz パイロット トーンの第 3 高調波の位相で 57 kHz RDS/RBDS 信号をロックしないラジオ放送局では、このオプションを true に設定します。

このプロパティは RBDStrue に設定した場合にのみ適用されます。

既定値は false です。

メソッド

infoFM ブロードキャスト復調器に関するフィルター情報
stepFM ブロードキャスト復調の適用
すべての System object に共通
release

System object のプロパティ値の変更の許可

reset

System object の内部状態をリセットします。

reset を使用するとき、このメソッドは、前に処理されたフレーム内の最後のシンボルのウィンドウ処理されたサフィックスをリセットします。

すべて折りたたむ

FM ブロードキャスト変調器オブジェクトおよび FM ブロードキャスト復調器オブジェクトを使用して、ストリーミング オーディオ信号を変調および復調します。既定のオーディオ デバイスを使用してオーディオ信号を再生します。

メモ: この例は R2016b 以降でのみ動作します。それ以前のリリースを使用している場合、それぞれの関数の呼び出しを等価な step 構文で置き換えてください。たとえば、myObject(x) は step(myObject,x) になります。

オーディオ ファイル リーダー System object™ を作成し、ファイル guitartune.wav を読み取ります。

audio = dsp.AudioFileReader('guitartune.wav','SamplesPerFrame',4410);

FM ブロードキャスト変調器オブジェクトと FM ブロードキャスト復調器オブジェクトを作成します。入力信号のサンプルレートと一致するように AudioSampleRate プロパティを設定します。変調器の指定されたサンプルレートと一致するように、復調器の SampleRate プロパティを設定します。復調器の PlaySound プロパティを true に設定してオーディオ再生を有効にします。

fmbMod = comm.FMBroadcastModulator('AudioSampleRate',audio.SampleRate, ...
    'SampleRate',240e3);
fmbDemod = comm.FMBroadcastDemodulator( ...
    'AudioSampleRate',audio.SampleRate, ...
    'SampleRate',240e3,'PlaySound',true);

フレーム長が 4410 のオーディオ データを読み取って FM ブロードキャスト変調を適用し、その FM 信号を復調してオーディオ入力を再生します。

while ~isDone(audio)
    audioData = audio();
    modData = fmbMod(audioData);
    demodData = fmbDemod(modData);
end

基本的な RBDS 波形を生成し、オーディオ信号を使用してそれを FM 変調してから復調します。

メモ: この例は R2017a 以降でのみ動作します。

フレームあたり 19 のグループとシンボルあたり 10 のサンプルをもつ RBDS 波形を作成します。RBDS 波形のサンプルレートは、1187.5 x 10 で求められます。オーディオ サンプルレートを 1187.5 x 40 に設定します。

groupLen = 104;
sps = 10;
groupsPerFrame = 19;
rbdsFrameLen = groupLen*sps*groupsPerFrame;
afrRate = 40*1187.5;
rbdsRate = 1187.5*sps;
outRate = 4*57000;

afr = dsp.AudioFileReader('rbds_capture_47500.wav','SamplesPerFrame',rbdsFrameLen*afrRate/rbdsRate);
rbds = comm.RBDSWaveformGenerator('GroupsPerFrame',groupsPerFrame,'SamplesPerSymbol',sps);

fmMod = comm.FMBroadcastModulator('AudioSampleRate',afr.SampleRate,'SampleRate',outRate,...
    'Stereo',true,'RBDS',true,'RBDSSamplesPerSymbol',sps);
fmDemod = comm.FMBroadcastDemodulator('SampleRate',outRate,...
    'Stereo',true,'RBDS',true,'PlaySound',true);
scope = timescope('SampleRate',outRate,'YLimits',10^-2*[-1 1]);

現在のオーディオ入力を取得します。オーディオと同じに構成されたレートで RBDS 情報を生成します。RBDS 情報を使用してステレオ オーディオを FM 変調します。加法性ホワイト ガウス ノイズを付加します。オーディオと RBDS 波形を FM 復調します。時間スコープに波形が表示されます。

for idx = 1:7
    input = afr();
    rbdsWave = rbds();
    yFM = fmMod([input input], rbdsWave);
    rcv = awgn(yFM, 40);
    [audioRcv, rbdsRcv] = fmDemod(rcv);
    scope(rbdsRcv);
end

アルゴリズム

FM ブロードキャスト復調器には、ベースバンド FM 復調器、ディエンファシス フィルター処理およびステレオ信号受信機能があります。基本的な FM 変調および FM 復調を制御するアルゴリズムは comm.FMDemodulator に含まれています。

Filtering

FM は高周波ノイズを増幅し、全体的な S/N 比を低下させます。これを補正するため、FM 変調の前に FM ブロードキャスターはプリエンファシス フィルターを挿入して高周波数成分を増幅させます。FM 受信機は、FM 復調器の後に逆数ディエンファシス フィルターを使用して高周波ノイズを減衰させ、フラットな信号スペクトルを復元します。

プリエンファシス フィルターには、次で与えられるハイパス特性伝達関数があります。

ここで、τs はフィルター時定数です。時定数は、ヨーロッパでは 50 μs、米国では 75 μs です。同様に、ローパス ディエンファシス フィルターの伝達関数は次で与えられます。

44.1 kHz のオーディオ サンプルレートに対して、ディエンファシス フィルターは次のように応答します。

ステレオと RDS/RBDS FM — 信号の多重化

FM ブロードキャスト復調器は、ステレオおよびモノラルの動作をサポートします。ステレオ送信をサポートするため、左 (L) と右 (R) のチャネル情報 (L+R) がスペクトルのモノラル部分 (0 ~ 15 kHz) に割り当てられます。(L-R) 情報は、38 kHz の副搬送波信号を使用して、ベースバンド スペクトルの 23 ~ 53 kHz 領域に振幅変調されます。多重化された信号内の 19 kHz のパイロット トーンにより、FM 受信機はステレオ信号と RDS/RBDS 信号をコヒーレントに復調できます。

多重化ベースバンド信号 m(t) のスペクトルを示します。

m(t) は次式で与えられます。

ここで、C0、C1、C2 はゲインです。適切な変調レベルを生成するために、これらのゲインが (L(t)±R(t)) 信号、19 kHz のパイロット トーン、RDS/RBDS 副搬送波の振幅をそれぞれスケーリングします。

復調器は、中心周波数 19 kHz、38 kHz、57 kHz の 3 つのバンドパス フィルターと、カットオフ周波数 3 dB の 15kHz のローパス フィルターに m(t) を適用します。19 kHz のバンドパス フィルターは、パイロット トーンを変調信号から抽出します。復元されたパイロット トーンの周波数は 2 倍および 3 倍になり、38 kHz と 57 kHz の信号を生成します。これは (L – R) 信号と RDS/RBDS 信号をそれぞれ復調します。ステレオ音声を生成する左右のチャネルをスケーリングしたものを生成するため、(L + R) 信号と (L – R) 信号が加算および減算されます。RDS/RBDS 信号は 57 kHz 信号とミキシングすることで復元されます。

FM ブロードキャスト復号化器のブロック線図を示します。

制限

入力長は AudioDecimationFactor プロパティの整数倍でなければなりません。RBDStrue に設定されている場合、追加の入力長は RBDSDecimationFactor の整数倍でなければなりません。これら 2 つのプロパティの詳細については、info メソッドを参照してください。

参照

[1] Chakrabarti, I. H., and Hatai, I. “A New High-Performance Digital FM Modulator and Demodulator for Software-Defined Radio and Its FPGA Implementation.” International Journal of Reconfigurable Computing. Vol. 2011, No. 10.1155/2011, 2011, p. 10.

[2] Taub, Herbert, and Donald L. Schilling. Principles of Communication Systems. New York: McGraw-Hill, 1971, pp. 142–155.

[3] Der, Lawrence. “Frequency Modulation (FM) Tutorial”. FM Tutorial. Silicon Laboratories Inc., pp. 4–8.

拡張機能

R2015a で導入