ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

さまざまなイコライザーの BER 性能

この例では、パスバンドにヌル値をもつ静的チャネルにある数種類のイコライザーの BER 性能を示します。この例は、線形イコライザー オブジェクトと判定フィードバック イコライザー (DFE) オブジェクトを構築し、実行します。また、最尤系列推定 (MLSE) イコライザーを初期化し、起動します。MLSE イコライザーでは最初に完全なチャネル認識法が呼び出され、次にわかりやすいが不完全なチャネル推定法が呼び出されます。

シミュレーションが進むと、BER プロットを更新してイコライズ方法の比較分析を行います。また、線形にイコライズされた信号と DFE でイコライズされた信号の信号スペクトルも示します。さらに、相対的なバースト誤りの状況も示して、BER が低いと MLSE アルゴリズムと DFE アルゴリズムの両方にバースト誤りが発生することを示します。特に、DFE の誤り性能はフィードバックされた正しいビットよりも検出されたビットでバーストが多くなります。最後に、"不完全な" MLSE 部分のシミュレーション時に、推定チャネル応答が示され動的に更新されます。

この例を実行するために、チャネル インパルス応答、イコライザーのタップ重みの数、再帰的最小二乗 (RLS) 忘却係数、最小二乗平均 (LMS) ステップ サイズ、MLSE トレースバックの長さ、推定されたチャネル長での誤りや各 Eb/No 値で計算される最大誤り数などのパラメーターを変更することができます。

コードの構成

この例は、他のいくつかのスクリプトと関数に依存して Eb/No 値の範囲でのリンク シミュレーションを実行します。これらのファイルは以下のとおりです。

eqber_adaptive - 線形および DFE イコライザーのリンク シミュレーションを実行するスクリプト。

eqber_mlse - 理想的および不完全な MLSE イコライザーのリンク シミュレーションを実行するスクリプト。

eqber_siggen - パルス整形を行わずにバイナリ位相シフト キーイング (BPSK) 信号を生成し、チャネルで処理してノイズを付加するスクリプト。

eqber_graphics - 線形、DFE、および MLSE イコライザーの性能を示すプロットを生成し、更新する関数。このファイルを表示するには MATLAB® のコマンド ラインで「edit eqber_graphics」と入力します。

スクリプト eqber_adaptive および eqber_mlse は、状態の情報がデータ ブロック間で保持されるように、複数のデータ ブロック全体で適応イコライザーと MLSE イコライザーを使用する方法について説明します。

信号パラメーターとチャネル パラメーター

信号とチャネルに関するパラメーターを設定します。パルス整形のない BPSK、および 5 タップの実数値対称チャネル インパルス応答を使用します (チャネルの詳細は、Digital Communications by J. Proakis, 4th Ed., の第 10.2.3 節を参照してください)。データとノイズ発生器の初期状態を設定します。Eb/No 範囲を設定します。

% System simulation parameters
Fs = 1;           % sampling frequency (notional)
nBits = 2048;     % number of BPSK symbols per vector
maxErrs = 200;    % target number of errors at each Eb/No
maxBits = 1e6;    % maximum number of symbols at each Eb/No

% Modulated signal parameters
M = 2;                     % order of modulation
Rs = Fs;                   % symbol rate
nSamp = Fs/Rs;             % samples per symbol
Rb = Rs*log2(M);           % bit rate

% Channel parameters
chnl = [0.227 0.460 0.688 0.460 0.227]';  % channel impulse response
chnlLen = length(chnl);                   % channel length, in samples
EbNo = 0:14;                              % in dB
BER = zeros(size(EbNo));                  % initialize values

% Create BPSK modulator
hMod = comm.BPSKModulator;

% Specify a seed for the random number generators to ensure repeatability.
rng(12345)

適応イコライザー パラメーター

線形イコライザーと DFE イコライザーのパラメーターを設定します。31 タップ線形イコライザー、および 15 フィードフォワードおよびフィードバック タップ付きの DFE を使用します。最初のデータ ブロックに再帰的最小二乗 (RLS) アルゴリズムを使用して迅速なタップ収束を確保します。その後、最小二乗平均 (LMS) アルゴリズムを使用して実行速度を速めます。

% Linear equalizer parameters
nWts = 31;               % number of weights
algType1 = 'rls';        % RLS algorithm for first data block at each Eb/No
forgetFactor = 0.999999; % parameter of RLS algorithm
algType2 = 'lms';        % LMS algorithm for remaining data blocks
stepSize = 0.00001;      % parameter of LMS algorithm

% DFE parameters - use same update algorithms as linear equalizer
nFwdWts = 15;            % number of feedforward weights
nFbkWts = 15;            % number of feedback weights

MLSE イコライザーとチャネル推定パラメーター、および初期可視化

MLSE イコライザーのパラメーターを設定します。トレースバックの長さにはチャネル インパルス応答の 6 倍の長さを使用します。イコライザーの状態を初期化します。イコライザー モードを [連続] に設定し、複数のデータ ブロックでシームレスなイコライズを行います。チャネル推定法でサイクリック プレフィックスを使用し、接頭語の長さを設定します。チャネルのインパルス応答を推定した長さを実際の長さより 1 サンプル分長くすることを前提にしています。

% MLSE equalizer parameters
tbLen = 30;                     % MLSE equalizer traceback length
numStates = M^(chnlLen-1);      % number of trellis states
[mlseMetric,mlseStates,mlseInputs] = deal([]);
const = constellation(hMod);    % signal constellation
mlseType = 'ideal';             % perfect channel estimates at first
mlseMode = 'cont';              % no MLSE resets

% Channel estimation parameters
chnlEst = chnl;         % perfect estimation initially
prefixLen = 2*chnlLen;  % cyclic prefix length
excessEst = 1;          % length of estimated channel impulse response
                        % beyond the true length

% Initialize the graphics for the simulation.  Plot the unequalized channel
% frequency response, and the BER of an ideal BPSK system.
idealBER = berawgn(EbNo,'psk',M,'nondiff');

[hBER, hLegend,legendString,hLinSpec,hDfeSpec,hErrs,hText1,hText2, ...
  hFit,hEstPlot,hFig,hLinFig,hDfeFig] = eqber_graphics('init', ...
  chnl,EbNo,idealBER,nBits);

RLS および LMS 線形および DFE イコライザー オブジェクトの構築

RLS 更新アルゴリズムを使用して、最初に重みを設定し、その後 LMS アルゴリズムを速度の目的に使用します。

alg1 = eval([algType1 '(' num2str(forgetFactor) ')']);
linEq1 = lineareq(nWts,alg1);
alg2 = eval([algType2 '(' num2str(stepSize) ')']);
linEq2 = lineareq(nWts,alg2);
[linEq1.RefTap,linEq2.RefTap] = ...
    deal(round(nWts/2));    % Set reference tap to center tap
[linEq1.ResetBeforeFiltering,linEq2.ResetBeforeFiltering] = ...
    deal(0);                % Maintain continuity between iterations

dfeEq1 = dfe(nFwdWts,nFbkWts,alg1);
dfeEq2 = dfe(nFwdWts,nFbkWts,alg2);
[dfeEq1.RefTap,dfeEq2.RefTap] = ...
    deal(round(nFwdWts/2)); % Set reference tap to center forward tap
[dfeEq1.ResetBeforeFiltering,dfeEq2.ResetBeforeFiltering] = ...
    deal(0);                % Maintain continuity between iterations

線形イコライザー

線形イコライザーを実行し、各データ ブロックのイコライズされた信号スペクトル、BER、およびバースト誤りの性能をプロットします。Eb/No が増加すると、線形イコライズされた信号スペクトルのヌル値は徐々に大きくなることに注意してください。これは、線形イコライザーには、チャネルを大きなヌル値で適切にイコライズする多くのタップが必要になるという事実を明らかにします。エラーは短い間隔で発生し、そのことがこのような高い誤り率になると予想されることにも注意してください。

適応イコライザーのシミュレーション コードのリストは、eqber_adaptive.m を参照してください。

firstRun = true;  % flag to ensure known initial states for noise and data
eqType = 'linear';
eqber_adaptive;

判定フィードバック イコライザー

DFE を実行し、各データ ブロックのイコライズされた信号スペクトル、BER、およびバースト誤りの性能をプロットします。スペクトル プロットと BER プロットに示すように、DFE は線形イコライザーよりも効果的にチャネルのヌルを緩和できます。特定の Eb/No 値でプロットされた BER ポイントは、すべてのデータ ブロックを更新するため、該当するブロックで収集された誤り数に応じて上下に移動します。DFE のバースト誤りは、正しいビットではなく検出されたビットをフィードバックすることで引き起こされる伝播エラーによることにも注意してください。バースト誤りのプロットは、BER が低下すると、エラー間隔が 5 ビット以下になったときに多数の誤り数が発生することを示します (DFE イコライザーを常時トレーニング モードで実行した場合、バースト誤りはかなり減少します)。

すべてのデータ ブロックの場合、プロットは、エラーがランダムに発生した場合には平均的なエラー間隔になることも示します。

適応イコライザーのシミュレーション コードのリストは、eqber_adaptive.m を参照してください。

close(hFig(ishghandle(hFig)));

eqType = 'dfe';
eqber_adaptive;

完全なチャネル認識の理想的な MLSE イコライザー

完全なチャネル推定を使用して MLSE イコライザーを実行し、各データ ブロックの BER とバースト誤りの性能をプロットします。エラーは非常に集中して発生することに注意してください。BER が低いと特に、エラー間隔が 1 または 2 ビットになるとエラーが多数発生することを確認してください。

MLSE イコライザーのシミュレーション コードのリストは、eqber_mlse.m を参照してください。

close(hLinFig(ishghandle(hLinFig)),hDfeFig(ishghandle(hDfeFig)));

eqType = 'mlse';
mlseType = 'ideal';
eqber_mlse;

不完全なチャネル推定の MLSE イコライザー

不完全なチャネル推定の MLSE イコライザーを実行し、各データ ブロックの BER とバースト誤りの性能をプロットします。これらの結果は理想的な MLSE 結果とかなりの程度で一致しています (送信されたデータ ブロックの FFT がヌル値をもたないように、チャネル推定アルゴリズムはデータから大きな影響を受けます)。推定チャネル プロットが実際のチャネルのスペクトル プロットとどのように比較されるかに注目してください。

MLSE イコライザーのシミュレーション コードのリストは、eqber_mlse.m を参照してください。

mlseType = 'imperfect';
eqber_mlse;

この情報は役に立ちましたか?