Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

デジタル ビデオ放送 - ケーブル (DVB-C)

この例では、デジタル テレビ信号のケーブル システム通信用 ETSI (欧州電気通信標準化機構) EN 300 429 規格 [ 1 ] の一部を示します。この例では、Communications System object を使用して、デジタル ビデオ放送 - ケーブル (DVB-C) 送信機から受信機のチェーンをシミュレートします。

はじめに

DVB-C 規格には、デジタル オーディオおよびビデオ ストリームの MPEG-2 または MPEG-4 ファミリを使用する、ケーブル線によるデジタル テレビ信号の送信について記載されています。この例では、この規格の一部をモデル化します。データのストリームはリード・ソロモン符号と単一搬送波 QAM 変調を使用して送信されます。この規格は送信機の設計について規定し、受信機の最小性能要件を設定しています。

この例の目的は以下のとおりです。

  • 実現可能な送受信機設計の主要部分をモデル化 (MPEG-2 トランスポート パケット データを使用して 64-QAM モードで動作)

  • DVB-C (または同類の) システム設計のための主要な Communications Toolbox™ System object の使用方法を説明

  • テスト対象システムの大きなコンポーネントをモデル化するための、他の System object を含む高位の System object の作成を説明

  • モデルがシステム パフォーマンス要件を満たすかどうかを判断するための誤り統計を生成

  • さまざまな数のテスト実行に対応できるテスト ハーネスの作成を示す。この場合、この対応を利用して単一の EbNo のみが指定される 1 つのモードをサポートし、スペクトルと散布図を観察します。また、BER 曲線を生成するために、複数の EbNo が指定されるモードもサポートします。

初期化

commdvbc_init.m スクリプトはシミュレーション パラメーターを初期化し、構造体 prmDVBC を生成します。この構造体のフィールドは現在のところ DVB-C システムのパラメーターです。

commdvbc_init
% The fields of this structure are the parameters of the DVB-C system at
% hand.
prmDVBC
prmDVBC = 

  struct with fields:

             bitsPerByte: 8
             bitsPerMTpl: 6
     MPEG2DatRateBitPerS: 9600000
     rawMPEG2DataPcktLen: 184
     MPEG2TrnsprtPcktLen: 188
    MPEG2TrnsprtFramePer: 1.5667e-04
     MPEG2PcktsPerSprFrm: 8
     MPEG2TrnsSuperFrame: 1504
      PRBSSeqPeriodBytes: 1503
       PRBSSeqPeriodBits: 12024
        RSCodewordLength: 204
       CableChanFrameLen: 272
      CableChanFrmPeriod: 1.5667e-04
      RCosineSampsPerSym: 8
       CableSymbolPeriod: 7.1998e-08
       RCosineFilterSpan: 16
     TxRxSymbolSampDelay: 288
     DeintrlvrAlignDelay: 192
        QAMSymbolMapping: [44 45 41 40 52 54 62 60 46 47 43 ... ] (1x64 double)
     ConvIntlNumBranches: 12
       ConvIntlCellDepth: 17

テスト対象システムの実行

テスト対象システムのメイン ループは、パケット単位でデータを処理します。ここでは、8 つのパケットで 1 つのスーパーフレームを形成します。MATLAB® コードの代わりに、生成されたコードを使用するため、useCodegen=true に設定します。生成されたコードを作成するため、MATLAB 変数 compileIt を true に設定します。

テスト対象システムのコード アーキテクチャ

この例では、ケーブル事業者から顧客のセット トップ ボックスへのリンクをモデル化します。このリンクのモデルは runDVBCSystemUnderTest 関数に含まれます。データ処理ループは 5 つの主要な部分に分けられます。System object™ を使用して、このリンクの 5 つのコンポーネントをそれぞれモデル化しました。それらのオブジェクトは以下の通りです。

1) DVBCSource: generates the bitstream
2) DVBCTransmitter: contains the transmitter (encoding, modulation, filtering, etc.)
3) DVBCReceiver: contains the receiver
4) DVBCBER: calculates error rates
5) DVBCScopes: optional object that provides visualization

runDVBCSystemUnderTest の内部ループはこれらのオブジェクトを使用します。

テスト対象システムで for ループを使用して、固定数のスーパーフレームを処理できます。または、シミュレートされた誤りと送信されたビット数に基づき、while ループを使用してシミュレーションの長さを制御できます。ここでは、目標の誤り数を 100、目標の最大送信数を 1e6 とし、後者を実行しました。

while (berEnd2End(2) < totalErrors) && (berEnd2End(3) < totalBits)
    txBytes = dvbcSource();                          % Source
    [txPckt, modTxPckt] = dvbcTX(txBytes);           % Transmitter
    chPckt = awgn(txPckt,SNR(n),sigPower);           % Channel
    [rxBytes, modRxPckt, rxPcakt] = dvbcRX(chPckt);  % Receiver
    [berEnd2End, berDemod] = ...
      dvbBER(txBytes,rxBytes,modTxPckt,modRxPckt);   % BER
    if useScopes
        runDVBCScopes(dvbcScope,txPckt,chPckt,rxPckt);
    end
end

個々のコンポーネントの説明

MPEG-2 ベースバンド物理インターフェイス - データ ソース

このセクションでは、ランダム データとヘッダー ビットを生成し、ヘッダー同期バイトを追加します。各スーパーフレームの最初のパケットは、ヘッダー同期バイトのビット補数を使用します。このコンポーネントのコードは DVBCSource.m に含まれています。

Transmitter Baseband Processing

このセクションは疑似ノイズ シーケンスを使用して、データをランダム化します。送信機により RS 符号化と畳み込みインターリーブが適用されます。関数 convertBytesToMTuplesDVBCDemo.m は 8 ビット バイトを 64 QAM 変調の 6 ビット チャンクに変換します。変調後、8x オーバーサンプリングのルート レイズド コサイン フィルターをデータ ストリームに適用します。このコンポーネントのコードは DVBCTransmitter.m に含まれています。

チャネル

信号は AWGN チャネルを通して、関数 awgn を使用して送信されます。

Receiver Baseband Processing

このセクションでは、受信したシンボルを復調し、関数 convertMTuplesToBytesDVBCDemo.m を使用して、6 ビット チャンクをバイトに変換します。フィルター処理により遅延が発生するため、この例では遅延 System object の hPacketSync を使用して、受信したバイトをパケット エッジに同期させます。インターリーブ遅延は複数のパケット サイズであるため、パケット エッジへの同期化は十分です。受信機は RS 復号化器 System object を使用し、パケットで同期のバイトをデインターリーブします。例では単一の PN シーケンス発生器を使用するため、復号化されたデータをスーパーフレーム エッジに同期させてからデランダム化します。この例は、送受信されたチャネル信号スペクトルを示します。最後に、送信されたビットと受信したビットの他に、変調器入力と復調器出力も比較し、ビット エラー レートを求めます。このコンポーネントのコードは DVBCReceiver.m に含まれています。

BER の計算

ビット エラー レートを計算するため、このコンポーネントは受信され復号されたビットを比較し、これらを送信ビットと比較します。このコンポーネントのコードは DVBCBER.m に含まれています。

可視化

オプションの計測機能により可視化が実現されます。このコンポーネントのコードは DVBCScopes.m に含まれています。

テスト対象システムの実行開始

まず、適切に動作することを確認するため、単一の EbNo と可視化を有効にして、テスト対象システムを実行します。

totalErrors = 100;
totalBits = 1e6;
EbNo = 16.5;
useScopes = true;
useCodegen = false;
compileIt = false;
if compileIt
    % Make EbNo input var-size row vector (max length = 100)
    codegen runDVBCSystemUnderTest -report -args {coder.Constant(useScopes),coder.Constant(prmDVBC), coder.Constant(num), 1, coder.typeof(EbNo,[1 100],[false true]), 1, 1}
end
if useCodegen
    % Constant inputs do not appear in call to generated code version
    [berEnd2End, berDemod] = runDVBCSystemUnderTest_mex(useScopes, prmDVBC, num, sigPower, EbNo, totalErrors, totalBits);
else
    [berEnd2End, berDemod] = runDVBCSystemUnderTest(useScopes, prmDVBC, num, sigPower, EbNo, totalErrors, totalBits);
end

BER 曲線

次に、EbNo のベクトルと可視化を無効にして、テスト対象システムを再実行し、BER 曲線を生成します。

エラー レート測定オブジェクト (berEnd2End と berDemod) を呼び出すと、BER 測定値、エラー数、およびビット送信の合計数の更新情報を含む 3 行 1 列のベクトルを出力します。エンドツーエンドの BER とともに、復調器の出力時に BER を表示します。

EbNo = 11.5:0.5:14.5;
useScopes = false;
useCodegen = false;
compileIt = false;
if compileIt
    % Make EbNo input var-size row vector (max length = 100)
    codegen runDVBCSystemUnderTest -report -args {coder.Constant(useScopes),coder.Constant(prmDVBC), coder.Constant(num), 1, coder.typeof(EbNo,[1 100],[false true]), 1, 1}
end
if useCodegen
    % Constant inputs do not appear in call to generated code version
    [berEnd2End, berDemod] = runDVBCSystemUnderTest_mex(useScopes, prmDVBC, num, sigPower, EbNo, totalErrors, totalBits)
else
    [berEnd2End, berDemod] = runDVBCSystemUnderTest(useScopes, prmDVBC, num, sigPower, EbNo, totalErrors, totalBits)
end
%
plotDVBCResults(EbNo, berEnd2End, berDemod);
berEnd2End =

    0.0148
    0.0170
    0.0075
    0.0069
    0.0011
    0.0001
    0.0000


berDemod =

    0.0149
    0.0135
    0.0088
    0.0072
    0.0043
    0.0028
    0.0017

まとめ

この例ではいつくかの System object を利用して、AWGN チャネルでの DVB-C 通信システムの一部をシミュレートしました。ランダム化、符号化、およびインターリーブなど、DVB-C システムの一部をモデル化する方法を示しました。また、送信機と受信機を同期させるために、遅延 System object を使用しました。エラー レート測定 System object で得られた BER 曲線を使用して、システム パフォーマンスを測定しました。

付録

この例では以下のスクリプトと補助関数が使用されています。

参考文献

  1. ETSI Standard EN 300 429 V1.2.1: Digital Video Broadcasting (DVB); Framing structure, channel coding and modulation for cable systems, European Telecommunications Standards Institute, Valbonne, France, 1998.