Main Content

comm.FMBroadcastDemodulator

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

説明

comm.FMBroadcastDemodulator System object™ は、複素ブロードキャスト FM 変調信号を復調し、ディエンファシス フィルターを使用して信号をフィルター処理して、オーディオ信号を生成します。詳細については、アルゴリズムの節を参照してください。

ブロードキャスト FM オーディオ信号を復調するには、次を行います。

  1. comm.FMBroadcastDemodulator オブジェクトを作成し、そのプロパティを設定します。

  2. 関数と同様に、引数を指定してオブジェクトを呼び出します。

System object の機能の詳細については、System object とは を参照してください。

作成

説明

fmbdemodulator = comm.FMBroadcastDemodulator は、FM ブロードキャスト復調器 System object を作成します。

fmbdemodulator = comm.FMBroadcastDemodulator(Name,Value) は、名前と値からなる 1 つ以上の引数を使用してプロパティを設定します。たとえば、'SampleRate',400e3 はサンプル レートを 400 kHz に指定します。

fmbdemodulator = comm.FMBroadcastDemodulator(fmbmodulator) は、入力 comm.FMBroadcastModulator System object fmbmodulator の構成に基づいてプロパティを設定します。

プロパティ

すべて展開する

特に指定がない限り、プロパティは "調整不可能" です。つまり、オブジェクトの呼び出し後に値を変更することはできません。オブジェクトは呼び出すとロックされ、ロックを解除するには関数 release を使用します。

プロパティが "調整可能" の場合、その値をいつでも変更できます。

プロパティ値の変更の詳細については、System object を使用した MATLAB でのシステム設計を参照してください。

復調器の入力のサンプル レート (Hz 単位)。正のスカラーとして指定します。サンプル レートは周波数偏差の 2 倍より大きくなければなりません (つまり、SampleRate > 2×FrequencyDeviation)。

データ型: double

入力信号周波数のピーク偏差 (Hz 単位)。正のスカラーとして指定します。周波数偏差はサンプル レートの半分より小さくなければなりません (つまり、FrequencyDeviation < SampleRate/2)。

システムの帯域幅は BT = 2×(FrequencyDeviation + BM) です。ここで、BM はメッセージ帯域幅 (Hz 単位) です。詳細については、アルゴリズムの節を参照してください。

FM ブロードキャストの業界標準では、米国では 75 kHz、ヨーロッパでは 50 kHz の値が規定されています。

データ型: double

ディエンファシス ハイパス フィルターの時定数 (秒単位)。正のスカラーとして指定します。FM ブロードキャストの業界標準では、米国では 75 μs、ヨーロッパでは 50 μs の値が規定されています。

データ型: double

ステレオ復調を有効にするオプション。logical 0 (false) または 1 (true) として指定します。

  • false — 出力はモノラル オーディオです。

  • true — オブジェクトはステレオ復号化を実行し、ステレオ オーディオを出力します。

詳細については、アルゴリズムの節を参照してください。

データ型: logical

オーディオ再生を有効にするオプション。logical 0 (false) または 1 (true) として指定します。コンピューターに接続されている既定のオーディオ デバイスで出力信号を再生するには、このプロパティを true に設定します。

データ型: logical

出力オーディオ信号のサンプル レート (Hz 単位)。正のスカラーとして指定します。

データ型: double

バッファー サイズ (サンプル単位)。正の整数として指定します。このプロパティは、System object がオーディオ デバイスとの通信に使用するバッファー サイズを指定します。

依存関係

このプロパティを有効にするには、PlaySound プロパティを true に設定します。

データ型: double

RDS (または RBDS) 波形復調を有効にするオプション。logical 0 (false) または 1 (true) として指定します。このプロパティを true に設定すると、オブジェクトは RDS (または RBDS) 波形を復調します。詳細については、アルゴリズムの節を参照してください。

データ型: logical

RDS (または RBDS) 出力信号のオーバーサンプリング係数。正の整数として指定します。RDS (または RBDS) ブロードキャスト データのサンプル レートは 1187.5 Hz です。RDS (または RBDS) 信号のサンプル レートは RBDSSamplesPerSymbol × 1187.5 Hz です。

依存関係

このプロパティを有効にするには、RBDS プロパティを true に設定します。

データ型: double

RDS (または RBDS) 信号の位相を復元するオプション。logical 0 (false) または 1 (true) として指定します。

Costas ループを使用して RDS (または RBDS) 信号の位相を復元するには、このプロパティを true に設定します。19 kHz パイロット トーンの第 3 高調波によって位相で 57 kHz RDS (または RBDS) 信号をロックしないラジオ局では、Costas ループは RDS (または RBDS) 信号の位相の復元に役立ちます。

依存関係

このプロパティを有効にするには、RBDS プロパティを true に設定します。

データ型: logical

使用法

説明

audiosig = fmbdemodulator(insig) は、FM 変調されたベースバンド オーディオ信号を復調し、ディエンファシス フィルターを使用してこの信号をフィルター処理して、オーディオ信号を生成します。

[audiosig,rbdssig] = fmbdemodulator(insig) は、ベースバンド RBDS 信号も 57 kHz で変調します。この構文を有効にするには、RBDS プロパティを true に設定します。

入力引数

すべて展開する

FM 変調されたベースバンド オーディオ信号。列ベクトルとして指定します。信号長の制限の詳細については、制限を参照してください。

データ型: double | single
複素数のサポート: あり

出力引数

すべて展開する

オーディオ信号。列ベクトルまたは M 行 N 列の行列として返されます。M はステレオ チャネルの数です。N はチャネルあたりのオーディオ信号のサンプル数です。出力のデータ型は、入力信号 insig のデータ型と同じです。

Stereo プロパティを true に設定した場合、オーディオ信号には少なくとも 2 つのチャネルが必要になり、System object はステレオ符号化をディエンファシス フィルター処理の前に実行します。出力の長さは N × (AudioSampleRate/SampleRate) です。

RBDS 信号。入力信号と同じデータ型の列ベクトルとして返されます。

データ型: double | single
複素数のサポート: あり

オブジェクト関数

オブジェクト関数を使用するには、System object を最初の入力引数として指定します。たとえば、obj という名前の System object のシステム リソースを解放するには、次の構文を使用します。

release(obj)

すべて展開する

infoFM ブロードキャスト変調器または復調器に関する情報
stepSystem object のアルゴリズムの実行
releaseリソースを解放し、System object のプロパティ値と入力特性の変更を可能にします。
resetSystem object の内部状態のリセット

すべて折りたたむ

ストリーミング モードでデータを処理する System object を使用して FM ブロードキャスト変調および復調を適用した後に、オーディオ ファイルを再生します。

オーディオ ファイル guitartune.wav を読み込むには、フレームあたりのサンプル数が 4410 に設定されているオーディオ ファイル リーダー System object™ を使用します。

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

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

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

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

while ~isDone(audiofilereader)
    audioData = audiofilereader();
    modData = fmbMod(audioData);
    demodData = fmbDemod(modData); % Demodulate and play signal
end

RBDS 波形を生成し、オーディオ信号を使用して RBDS 波形を FM ブロードキャスト変調してから、FM 信号を FM ブロードキャスト復調します。

フレームあたり 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;

オーディオ ファイル guitartune.wav を読み込むには、フレームあたりのサンプル数を設定したオーディオ ファイル リーダー System object™ を使用します。RBDS 波形発生器、FM ブロードキャスト変調器、FM ブロードキャスト復調器、および時間範囲の System object を作成します。ステレオ オーディオ ファイルと RBDS 波形を処理するように変調器オブジェクトと復調器オブジェクトを構成します。

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

制限

入力信号 insig の長さは、AudioDecimationFactor プロパティの整数倍でなければなりません。RBDS プロパティを true に設定した場合、入力信号 insig の長さは、RBDSDecimationFactor の整数倍でもなければなりません。AudioDecimationFactor プロパティと RBDSDecimationFactor プロパティの詳細については、オブジェクト関数 info を参照してください。

アルゴリズム

すべて展開する

FM ブロードキャスト復調器には、ベースバンド FM 復調器、ディエンファシス フィルター処理およびステレオ信号受信機能があります。基本的な FM 変調および復調に使用されるアルゴリズムの詳細については、comm.FMDemodulator System object を参照してください。

参照

[1] Hatai, I., and I. Chakrabarti. “A New High-Performance Digital FM Modulator and Demodulator for Software-Defined Radio and Its FPGA Implementation.” International Journal of Reconfigurable Computing (December 25, 2011): 1-10. https://doi.org/10.1155/2011/342532.

[2] Taub, H., and D. Schilling. Principles of Communication Systems. McGraw-Hill Series in Electrical Engineering. New York: McGraw-Hill, 1971, pp. 142–155.

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

拡張機能

バージョン履歴

R2015a で導入