Main Content

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

comm.RBDSWaveformGenerator

説明

comm.RBDSWaveformGenerator System object™ は、MATLAB® で構成可能な規格準拠のベースバンド RDS/RBDS 波形を生成します。RDS/RBDS 波形は、曲名やアーティスト名、ラジオ放送局の説明などの追加のテキスト情報で FM ラジオ放送局を補足します。RDS/RBDS 信号は、ベースバンド FM 電波信号の 57 kHz の帯域にあります。

このオブジェクトを使用して、RadioText Plus (RT+) 情報を含む波形を生成し、Open Data Application (ODA) のカスタム符号化の実装を登録します。時間、データ、およびプログラム タイプも指定できます。オブジェクトは短いスクロールする 8 文字のテキスト、および長い 32 文字または 64 文字のテキストをサポートします。

ベースバンド RDS/RBDS 波形を生成するには、次を行います。

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

  2. step を呼び出して、波形を生成します。

メモ

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

構築

rbdsgen = comm.RBDSWaveformGenerator は、既定のプロパティを使用して RDS/RBDS 波形発生器オブジェクト rbdsgen を作成します。

rbdsgen = comm.RBDSWaveformGenerator(Name,Value) は、Name,Value ペアを使用して追加のプロパティを指定します。指定していないプロパティは既定値になります。

:

rbdsgen = comm.RBDSWaveformGenerator( ...
     'GroupsPerFrame',20,'SamplesPerSymbol',10, ...
     'SendRadioTextPlus',true);

プロパティ

すべて展開する

プロパティが調整可能としてリストされている場合、その値はオブジェクトがロックされている場合でも変更できます。

シンボルあたりのサンプル数 (ビット)。正の偶数の整数として指定します。サンプルの半分はマンチェスター符号化の 1 つの振幅レベルを表しています。サンプルの残り半分は、逆のレベルを表しています。

出力フレームあたりのグループ数。スカラー整数で指定します。各グループは 104 シンボル長 (ビット) です。

タイプ 2A グループによって伝えられるラジオ テキスト。最大 64 文字の文字ベクトルとして指定します。オブジェクトはタイプ 2A グループを使用して、指定したテキストを一度に 4 文字送信します。

調整可能:あり

プログラム サービスのラベル。最大 8 文字の文字ベクトルとして指定します。この情報は、タイプ 0A グループによって短いテキストとして一度に 2 文字伝えられます。

調整可能:あり

プログラム識別 (PI) コード。16 ビット行ベクトルとして指定します。北米では、PI コードは放送局の呼び出し符号を伝えます。例の呼び出し符号には、'WABC''KXYZ' が含まれています。

放送局の呼び出し符号用に北米の PI コードを生成するには、callLettersToPICode メソッドを使用します。

プログラム タイプ。RDS/RBDS 標準で許可された 31 の値のうちの 1 つを含む文字ベクトルで指定します。RDS/RBDS 標準が北米で許可しているプログラム タイプのリストについては、[1]を参照してください。

調整可能:あり

プログラム タイプ名。最大 8 文字の文字ベクトルとして指定します。このテキストは、プログラム タイプ 'Sports''Football' など、プログラム タイプをさらに特徴づけます。オブジェクトはタイプ 10A グループを使用して、プログラム タイプ名を伝えます。このプロパティが空の場合、10A グループは生成されません。

調整可能:あり

日付と時刻を通知するオプション。false または true として指定します。このプロパティを true に設定すると、685 グループごとに 1 つの 4A グループが定期的に生成されます (1 分に 1 回)。

代替周波数。行ベクトルとして MHz 単位で指定します。この情報はタイプ 0A グループで伝えられます。これは、同じまたは隣接する受信エリアで同じプログラムを放送している他の送信機を示します。この情報を使用して、受信機は受信しやすい別の周波数に切り替えることができます。

RadioText Plus (RT+) 情報を送信するオプション。スカラー論理値で指定します。このプロパティを true に設定した場合、RT+ ODA 情報はタイプ 3A グループで通知されます。さらに、RadioTextType1RadioTextType2、および RadioTextIndices でインデックス付けされた 2 つの RT+ 部分文字列で指定された RT+ コンテンツ タイプは、オープン形式のタイプ 11A グループで伝えられます。

最初の RT+ 部分文字列のコンテンツ タイプ。文字ベクトルとして指定します。許可された値は RT+ 標準で指定されたクラス名です。詳細は、[2]を参照してください。

調整可能:あり

2 番目の RT+ 部分文字列のコンテンツ タイプ。文字ベクトルとして指定します。許可された値は RT+ 標準で指定されたクラス名です。詳細は、[2]を参照してください。

調整可能:あり

RT+ 部分文字列の開始および終了のインデックス。正の整数の 2 行 2 列の行列として指定します。1 列目は各 RT+ 部分文字列の先頭のインデックスを作成します。2 列目は各部分文字列の末尾のインデックスを作成します。

調整可能:あり

メソッド

callLettersToPICode北米の呼び出し符号のバイナリ PI コードへの変換
registerODAODA へのカスタム符号化の実装の登録
stepRDS/RBDS 波形の生成
すべての System object に共通
release

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

reset

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

すべて折りたたむ

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

RBDS 波形の各フレームには、19 のグループが含まれます。グループの長さはそれぞれ 104 ビット (シンボル) です。RBDS シンボルあたりのサンプル数を 10 に設定します。これにより、RBDS 波形の各フレーム内のサンプル数は、104 x 10 x 19 = 19,760 となります。RBDS 標準に従って、ビット レートは 1187.5 Hz となります。そのため、RBDS サンプルレート = 1187.5 x RBDS シンボルあたりのサンプル数となります。オーディオ フレーム レートを 40 x 1187.5 = 47,500 に設定します。

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 復調します。復調した RBDS 波形が時間スコープに表示されます。

for idx = 1:7
    input = afr();                         % get current audio input
    rbdsWave = rbds();                     % generate RBDS info at the same configured rate
    yFM = fmMod([input input], rbdsWave);  % FM modulate stereo audio with RBDS info
    rcv = awgn(yFM, 40);                   % add noise
    [audioRcv, rbdsRcv] = fmDemod(rcv);    % FM demodulate the audio and RBDS waveforms
    scope(rbdsRcv);
end

フレームあたり 20 のグループとシンボルあたり 10 のサンプルをもつ comm.RBDSWaveformGenerator System object™ を作成します。アーティスト名や曲名などの Radio Text plus (RT+) 情報を波形に追加します。RadioTextIndices プロパティを使用して、RT+ 部分文字列の先頭と末尾を示します。

rbds = comm.RBDSWaveformGenerator('GroupsPerFrame',20,'SamplesPerSymbol',10,...
    'SendRadioTextPlus', true);
rbds.RadioText = 'MyArtist - MySongTitle';
rbds.RadioTextType1 = 'Item.Artist';
rbds.RadioTextType2 = 'Item.Title';
rbds.RadioTextIndices = [1 8; 12 22]; 
for idx = 1:10
    rbds.step();
end

comm.RBDSWaveformGenerator System object™ の registerODA メソッドを使用して、Open Data Application (ODA) のカスタム符号化の実装を登録します。ODA ID を 'CD46' に設定します。これはトラフィック メッセージ チャネルの ID です。割り当てられたグループ タイプは 8A です。

rbds = comm.RBDSWaveformGenerator();
odaID = 'CD46';
allocatedGroupType = '8A';

この例では、次のテンプレートをカスタム符号化の実装の開始点として使用しています。

mainProcessingFcn = @CustomODAEncodingMain;
fcn3A             = @CustomODAEncoding3A;
registerODA(rbds,odaID,allocatedGroupType,mainProcessingFcn,fcn3A);
s = info(rbds);
s.ODAMap
ans=2×1 struct array with fields:
    ID
    GroupType
    FunctionMain
    Function3A

日付と時刻の情報、プログラム タイプ、および代替周波数を使用して RBDS 波形を生成します。comm.RBDSWaveformGenerator オブジェクトは、日付と時刻の情報にはタイプ 4A グループ、プログラム タイプの情報にはタイプ 10A グループ、および代替周波数にはタイプ 0A グループを使用します。スペクトル アナライザーに波形が表示されます。

rbds = comm.RBDSWaveformGenerator('GroupsPerFrame',1000);
scope = dsp.SpectrumAnalyzer('SampleRate',1187.5*rbds.SamplesPerSymbol,'YLimits',[-140 20]);
rbds.SendDateTime = true;          % send type 4A groups
rbds.ProgramType = 'Sports';
rbds.ProgramTypeName = 'Football'; % send type 10A groups
rbds.AlternativeFrequencies = [99.1 102.5]; % info sent in type 0A groups
wave = rbds.step();
scope(wave)

アルゴリズム

すべて展開する

comm.RBDSWaveformGenerator は RDS/RBDS 標準[1]に従って波形を生成します。RDS/RBDS 標準は、物理層、データ リンク層、セッションとアプリケーション層の 3 つの層で構成されます。

参照

[1] National Radio Systems Committee. United States RBDS Standard: Specification of the radio broadcast data system (RBDS). Electronic Industries Association and National Association of Broadcasters. April 9, 1998.

[2] Westdeutscher Rundfunk WDR, Nokia, and Institut für Rundfunktechnik IRT. RadioText Plus (RT+) Specification, Version 2.1. 2006.

拡張機能

R2017a で導入