このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
デジタル ビデオ放送 - ケーブル (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 曲線を使用して、システム パフォーマンスを測定しました。
付録
この例では以下のスクリプトと補助関数が使用されています。
参考文献
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.