Main Content

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

OSTBC と TCM の連結

この例では、送信アンテナ 2 つ、受信アンテナ 1 つをもつ多入力多出力 (MIMO) チャネルで情報を伝送するためにトレリス符号化変調 (TCM) と連結された直交空間時間ブロック符号 (OSTBC) について示します。例では、通信 System object™ を使用してこのシステムをシミュレートします。

はじめに

OSTBC [ 1 ]、[ 2 ] は MIMO 無線通信において効果的な手法です。この手法は完全な空間ダイバーシティ数を利用して、シンボル単位で最尤 (ML) 復号化を行います。ただし、符号化ゲインは得られません。受信機の OSTBC のコンバイナーは送信されたシンボルの軟情報を提供し、この情報は外符号の復号化や復調に利用することができます。

TCM [ 3 ] は、符号化と変調を統合して大規模な符号化ゲインを得られるようにするための帯域幅効率化方式です。TCM を内符号と連結すると、通常はパフォーマンスが向上します。

この例では、OSTBC と TCM の連結方式の利点、つまり OSTBC によって得られる空間ダイバーシティ ゲインと TCM によって得られる符号化ゲインについて説明します。比較のため、TCM と OSTBC の一方だけを組み込んだ 2 つの基準システムも示します。基準モデルと比較したときの連結方式のダイバーシティ ゲインと符号化ゲインの優位性は、シミュレーションの結果から明白です。OSTBC と TCM の連結に関する詳細は、[ 4 ] や [ 5 ] などの参考文献を参照してください。

configureTCMOSTBCDemo.m スクリプトは、連結された OSTBC システムをシミュレートするための System object を作成します。また、一部のシミュレーション パラメーターを初期化します。

% Trellis structure of the TCM modulator
trellis = poly2trellis([2, 3], [1, 2, 0; 4, 1, 2]);

% Create System objects of the concatenated OSTBC system and set simulation
% parameters such as SNR and frame length.
configureTCMOSTBCDemo

PSK TCM 変調器と復調器

PSK TCM 変調器 System object は、ランダムなメッセージ データを単位平均エネルギーをもつ PSK コンスタレーションに変調します。TrellisStructure プロパティは、TCM のトレリスを指定する MATLAB® 構造体を受け入れます。ModulationOrder プロパティは PSK コンスタレーションのサイズを指定します。この例ではトレリス状態が 8 つある 8-PSK コンスタレーションに Ungerboeck TCM 方式を使用し [ 3 ]、対応する TrellisStructure プロパティを poly2trellis([2 3], [1 2 0; 4 1 2]) の結果に設定します。このオブジェクトの出力長は 50 であり、2 つの入力ビットがそれぞれ 1 つのシンボルを生成します。

PSK TCM 復調器 System object では、TCM に Viterbi アルゴリズムを使用して、OSTBC コンバイナーからの信号を復号化します。この例では、TerminationMethod プロパティを 'Truncated' に設定します。したがって、各フレームは個別に扱われます。また、TracebackDepth プロパティを 30 に設定します。これは、TCM の拘束長と比べて、損失がほとんどないパフォーマンスを確保するには十分の長さです。

psktcmMod = comm.PSKTCMModulator(trellis, ...
                'TerminationMethod', 'Truncated');
psktcmDemod = comm.PSKTCMDemodulator(trellis, ...
                'TerminationMethod', 'Truncated', ...
                'TracebackDepth', 30, ...
                'OutputDataType', 'logical');

直交空間時間ブロック符号 (OSTBC)

OSTBC 符号化器 System object は、2 つの送信アンテナに Alamouti コード [ 1 ] を使用して、TCM 符号化器からの情報シンボルを符号化します このオブジェクトの出力は 50x2 行列で、各列のエントリは 1 つのアンテナから送信されたデータに対応します。

OSTBC コンバイナー System object は、1 つのアンテナを使用し、チャネル状態情報 (CSI) を利用して受信信号を復号化します。このオブジェクトの step メソッドの出力は送信されたシンボルの推定値を表現します。この推定値は PSK TCM 復調器に送られます。この例では、CSI は受信機側で完全に既知であると仮定します。

ostbcEnc = comm.OSTBCEncoder;
ostbcComb = comm.OSTBCCombiner;

2x1 MIMO フェージング チャネル

2x1 MIMO フェージング チャネル System object では、空間的に独立した、2 つの送信アンテナから 1 つの受信アンテナへのフラット レイリー フェージング チャネルをシミュレートします。

この例では、チャネル オブジェクトの maximumDopplerShift プロパティを 30 に設定します。この値を使用すると、MIMO チャネルが準静的なフェージング チャネルのように動作します。つまり、1 つのフレームの送信中は一定で、複数のフレームの場合は変化します。PathGainsOutputPort プロパティを true に設定して、チャネル パス ゲイン値を CSI の完全な推定値として使用します。さらに、RandomStream プロパティを 'mt19937ar with seed' に設定して、オブジェクトが内蔵の乱数発生器を使用して繰り返し可能なチャネル係数を生成するようにします。2x1 MIMO チャネルには正規化されたパス ゲインがあります。

mimoChan = comm.MIMOChannel(...
                'SampleRate', 1/Tsamp, ...
                'MaximumDopplerShift', maxDopp, ...
                'SpatialCorrelationSpecification', 'None', ...
                'NumReceiveAntennas', 1, ...
                'RandomStream', 'mt19937ar with seed', ...
                'PathGainsOutputPort', true);

OSTBC と TCM の連結

コードのこのセクションは、連結された OSTBC システムの処理ループを呼び出します。メイン ループはデータをフレーム単位で処理します。この場合、送信機は 8-PSK TCM 変調器を使用してランダム データを変調し、Alamouti 符号化を適用します。OSTBC 符号化器からの 2 つの送信信号は 2x1 MIMO レイリー フェージング チャネルを通過し、AWGN で減衰されます。OSTBC コンバイナーは、1 つの受信アンテナを使用し、軟入力を 8-PSK TCM 復調器に提供します。例ではこの復調器の出力を生成されたランダム データと比較して、フレーム誤り率 (FER) を求めます。

ストリーム処理

fer = zeros(3,1);
while (fer(3) < maxNumFrms) && (fer(2) < maxNumErrs)
  data      = logical(randi([0 1], frameLen, 1)); % Generate data
  modData   = psktcmMod(data);                    % Modulate
  txSignal  = ostbcEnc(modData);                  % Apply Alamouti coding
  [chanOut, chanEst] = mimoChan(txSignal);        % 2x1 fading channel
  rxSignal  = awgnChan(chanOut);                  % Add receiver noise
  modDataRx = ostbcComb(rxSignal, ...
                   squeeze(chanEst));             % Decode
  dataRx    = psktcmDemod(modDataRx);             % Demodulate
  frameErr  = any(dataRx - data);                 % Check frame error
  fer       = FERData(false, frameErr);           % Update frame error rate
end

誤り率測定 System object である FERData の step メソッドは、FER 測定値、誤り数、およびフレーム送信の合計数の最新情報を含む 3 行 1 列のベクトルを出力します。FER 値を表示します。

frameErrorRate = fer(1)
frameErrorRate =

    0.1481

フラット フェージング チャネル経由の TCM

例のこのセクションでは、空間時間符号化なしに単入力単出力 (SISO) のフラット レイリー フェージング チャネルを介した連結方式での TCM をシミュレートします。フェージング チャネルの仕様は、前のシステムの 2x1 MIMO フェージング チャネルの 1 つのサブチャネルと同じです。したがって、例のこのセクションではフェージング チャネル System object の NumTransmitAntennas プロパティを、リリースした後に 1 に設定します。また、AWGN チャネル System object の SignalPower プロパティも 1 に設定します。これは、1 つのシンボル期間に送信されるシンボルは 1 つしかないからです。

処理ループを初期化します。

release(mimoChan);
mimoChan.NumTransmitAntennas = 1;
awgnChan.SignalPower = 1;
reset(FERData)
fer = zeros(3,1);

ストリーム処理ループ

while (fer(3) < maxNumFrms) && (fer(2) < maxNumErrs)
  data      = logical(randi([0 1], frameLen, 1)); % Generate data
  modData   = psktcmMod(data);                    % Modulate
  [chanOut, chanEst] = mimoChan(modData);         % SISO fading channel
  rxSignal  = awgnChan(chanOut);                  % Add receiver noise
  modDataRx = (rxSignal.*conj(chanEst)) / ...
              (chanEst'*chanEst);                 % Equalize
  dataRx    = psktcmDemod(modDataRx);             % Demodulate
  frameErr  = any(dataRx - data);                 % Check frame error
  fer       = FERData(false, frameErr);           % Update frame error rate
end

2x1 フラット レイリー フェージング チャネルを介した OSTBC

例のこのセクションでは、前の連結方式での TCM を QPSK 変調に置き換えて、両方のシステムのシンボル (フレーム) レートが同じになるようにします。また、TCM-OSTBC 連結モデルと同じ 2x1 フラット レイリー フェージング チャネルを使用します。QPSK 変調 System object の qpskMod は情報ビットを QPSK コンスタレーションにマッピングし、QPSK 復調 System object の QPSKDemod は OSTBC コンバイナーからの信号を復調します。

処理ループを初期化します。

release(mimoChan);
mimoChan.NumTransmitAntennas = 2;
awgnChan.SignalPower = 2;
reset(FERData)
fer = zeros(3,1);

ストリーム処理ループ

while (fer(3) < maxNumFrms) && (fer(2) < maxNumErrs)
  data      = logical(randi([0 1], frameLen, 1)); % Generate data
  modData   = qpskMod(data);                      % Modulate
  txSignal  = ostbcEnc(modData);                  % Apply Alamouti coding
  [chanOut, chanEst] = mimoChan(txSignal);        % 2x1 fading channel
  rxSignal  = awgnChan(chanOut);                  % Add receiver noise
  modDataRx = ostbcComb(rxSignal, ...
                   squeeze(chanEst));             % Decode
  dataRx    = qpskDemod(modDataRx);               % Demodulate
  frameErr  = any(dataRx - data);                 % Check frame error
  fer       = FERData(false, frameErr);           % Update frame error rate
end

前の処理ループの前後に for ループを追加して、1 組の SNR 値についてシミュレーションを実行します。SNR 値を (10:2:24) dB、誤りの目標数を 1,000、最大送信回数を 5e6 にして、シミュレーションをオフラインで実行します。このシミュレーションの結果を次の図に示します。

まとめ

この例では、System object をいくつか利用して、2x1 フラット レイリー フェージング チャネル経由で TCM に連結された OSTBC をシミュレートしました。SISO フラット フェージング チャネル経由で TCM システムをモデル化し、同じ 2x1 フラット レイリー フェージング チャネル経由で OSTBC システムをモデル化するようにこの基本システムを変更しました。誤り率測定 System object で得られた FER 曲線を使用して、システム パフォーマンスを測定しました。この例では、この連結方式で TCM 方式より大幅に優れたダイバーシティ ゲインと、Alamouti コードより約 2 dB 上回る符号化ゲインが得られることを示しました。

付録

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

参考文献

  1. S. M. Alamouti, "A simple transmit diversity technique for wireless communications," IEEE® Journal on Selected Areas in Communications, vol. 16, no. 8, pp. 1451-1458, Oct. 1998.

  2. V. Tarokh, H. Jafarkhami, and A. R. Calderbank, "Space-time block codes from orthogonal designs," IEEE Transactions on Information Theory, vol. 45, no. 5, pp. 1456-1467, Jul. 1999.

  3. G. Ungerboeck, "Channel coding with multilevel/phase signals," IEEE Transactions on Information Theory, vol. IT-28, no. 1, pp. 55?67, Jan. 1982.

  4. S. M. Alamouti, V. Tarokh, and P. Poon, "Trellis-coded modulation and transmit diversity: Design criteria and performance evaluation," in Proceedings of IEEE International Conference on Universal Personal Communications (ICUPC'98), Florence, Italy, vol. 1, Oct. 5-9, 1998, pp. 703-707.

  5. Y. Gong and K. B. Letaief, "Concatenated space-time block coding with trellis coded modulation in fading channels," IEEE Transactions on Wireless Communications, vol. 1, no. 4, pp. 580-590, Oct. 2002.