Main Content

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

comm.FMBroadcastModulator

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

説明

comm.FMBroadcastModulator System object™ はオーディオ信号をプリエンファシスし、それをベースバンド FM 信号に変調します。Stereo プロパティが true に設定されていると、オブジェクトはオーディオ入力 (L–R) をベースバンド (L+R) に変調するだけでなく、38 kHz の帯域にも変調します。RBDS プロパティが true に設定されている場合、オブジェクトは 57 kHz でベースバンド RDS/RBDS 信号を変調します。詳細は、アルゴリズムを参照してください。

オーディオ信号を FM 変調するには、次を行います。

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

  2. step を呼び出して、comm.FMBroadcastModulator のプロパティに従い、ブロードキャスト FM 変調をオーディオ信号に適用します。

メモ

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

構築

fmbMod = comm.FMBroadcastModulator は、入力信号を周波数変調する変調器 System object、fmbMod を作成します。

fmbMod = comm.FMBroadcastModulator(demod) はブロードキャスト FM 変調器オブジェクトを作成します。このオブジェクトのプロパティは、対応するブロードキャスト FM 復調器オブジェクト demod によって決まります。

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

プロパティ

SampleRate

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

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

FrequencyDeviation

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

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

FilterTimeConstant

フィルター時定数 (秒)

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

AudioSampleRate

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

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

Stereo

ステレオ動作を設定するフラグ

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

RBDS

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

RBDS が true に設定されている場合、step メソッドはベースバンド RDS/RBDS 波形を 2 番目の入力として受け入れ、オブジェクトは信号を 57 kHz で変調します。既定値は false です。このプロパティは調整不可能です。

RBDSSamplesPerSymbol

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

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

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

既定の設定は 10 です。

メソッド

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.FMModulator に含まれています。

Filtering

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

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

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

オーディオ サンプリング レートに関係なく、信号は 152 kHz の出力サンプリング レートに変換されます。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 信号をコヒーレントに復調できます。多重化ベースバンド信号のスペクトルを示します。

多重化ベースバンド信号の生成に使用される FM ブロードキャスト変調器のブロック線図を示します。L(t) と R(t) は左右のチャネルからの時間領域の波形を示しています。RBDS(t) は RDS/RBDS 信号の時間領域の波形を示しています。

多重化メッセージ信号 m(t) は次式で与えられます。

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

制限

  • RBDStrue の場合、オーディオと RDS/RBDS の両方の入力で次の方程式を満たさなければなりません。

  • オーディオ信号の入力長は、AudioDecimationFactor プロパティの整数倍でなければなりません。RDS/RBDS 信号の入力長は、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 で導入