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

comm.EyeDiagram

時間領域信号のアイ ダイアグラムの表示

説明

アイ ダイアグラム System object™ は変調された信号の複数のトレースを表示して、アイ ダイアグラムを生成します。このオブジェクトを使用して、パルス整形やチャネル歪みの影響などの信号の変調特性を表示できます。アイ ダイアグラムは信号特性を測定し、水平方向と垂直方向のバスタブ曲線をプロットできます。このとき、ジッターとノイズはデュアルディラック モデル [1] に従っています。

入力信号のアイ ダイアグラムを表示するには、次を行います。

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

  2. step を呼び出して、信号のアイ ダイアグラムを表示します。

メモ

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

構築

ed = comm.EyeDiagram は、既定のプロパティを使用して、アイ ダイアグラム オブジェクト ed を返します。

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

:

ed = comm.EyeDiagram('DisplayMode','2D color histogram', ...
                          'OversamplingMethod','Input interpolation');

プロパティ

すべて展開する

アイ ダイアグラム ウィンドウに表示される名前。文字ベクトルとして指定します。調整可能。

入力信号のサンプルレート (Hz)。正の実数スカラーとして指定します。

シンボルあたりのサンプル数。正の整数スカラーとして指定します。調整可能。

最初の点をプロットする前に省略するサンプル数。非負の整数スカラーとして指定します。不規則な動作を避けるため、オフセットは SamplesPerSymbolSamplePerTrace の積より小さい値を指定します。

トレースあたりのシンボル数。正の整数スカラーとして指定します。アイの測定を求めてバスタブ曲線を可視化するには、既定値の 2 を使用します。調整可能。

表示するトレース数。正の整数スカラーとして指定します。このプロパティは、DisplayMode プロパティが 'Line plot' として指定されている場合に使用可能です。調整可能。

アイ ダイアグラムの表示モード。'Line plot' または '2D color histogram' として指定します。調整可能。

  • 'Line plot' を指定すると、最後の TracesToDisplay のトレースそれぞれについて 1 本のラインをプロットして、トレースを重ね合わせます。

  • '2D color histogram' を指定すると、カラー グラデーションにより、入力が異なる時間値と振幅値に一致する頻度が示されます。

アイ ダイアグラム測定の有効化。論理スカラーとして指定します。調整可能。

バスタブ曲線可視化の有効化。'None''Horizontal''Vertical' または 'Both' として指定します。このプロパティは、EnableMeasurementstrue である場合に使用できます。調整可能。

ヒストグラムの重ね合わせ。'None''Jitter''Noise' のいずれかとして指定します。

  • 水平ヒストグラムをアイ ダイアグラムと重ね合わせるには、このプロパティを 'Jitter' に設定します。

  • 垂直ヒストグラムをアイ ダイアグラムと重ね合わせるには、このプロパティを 'Noise' に設定します。

このプロパティは、DisplayMode'2D color histogram' で、EnableMeasurementstrue の場合に使用できます。調整可能。

振幅レベルのしきい値 (V)。スカラーとして指定します。このプロパティは水平ヒストグラム (ジッター) の異なる信号領域を分離し、EnableMeasurementstrue の場合に使用できます。このプロパティは調整可能ですが、プロパティが変更されると、ジッター ヒストグラムがリセットされます。

非ゼロ復帰 (NRZ) 信号の場合は DecisionBoundary を 0 に設定します。ゼロ復帰信号 (RZ) の場合は DecisionBoundary を最大振幅の半分に設定します。

アイパターン レベルを計算する時間範囲。2 要素ベクトルとして指定します。値はシンボル区間のパーセンテージとして表されます。このプロパティは、EnableMeasurementstrue である場合に使用できます。調整可能。

立ち上がりおよび立ち下がり遷移の振幅レベル。2 要素ベクトルとして指定します。これらの値はアイパターン振幅のパーセンテージとして表されます。このプロパティは、EnableMeasurementstrue である場合に使用できます。このプロパティは調整可能ですが、プロパティが変更されると、立ち上がりおよび立ち下がりしきい値のクロッシング ヒストグラムがリセットされます。

水平クロッシングの振幅許容誤差 (V)。スカラーとして指定します。ヒステリシスを増加させ、ノイズによるスプリアス クロッシングの許容誤差を大きくします。このプロパティは、EnableMeasurementstrue である場合に使用できます。このプロパティは調整可能ですが、プロパティが変更されると、ジッターと立ち上がりおよび立ち下がりヒストグラムがリセットされます。

アイの測定に使用される BER。0 から 0.5 の非負のスカラーとして指定します。値は、ランダム ジッター、総ジッター、アイパターンの水平開口部およびアイパターンの垂直開口部を測定するために使用されます。このプロパティは、EnableMeasurementstrue である場合に使用できます。調整可能。

バスタブ曲線の開口部を計算するための BER 値。0 から 0.5 の範囲の要素をもつベクトルとして指定します。アイパターンの水平開口と垂直開口は、このプロパティで指定した各値に対して計算されます。このプロパティは EnableMeasurementstrue で、ShowBathtub'Both''Horizontal' または 'Vertical' の場合に使用できます。調整可能。

測定から破棄される初期データの持続時間 (秒)。非負のスカラーとして指定します。このプロパティは、EnableMeasurementstrue である場合に使用できます。

オーバーサンプリング方式。'None''Input interpolation' または 'Histogram interpolation' として指定します。このプロパティは、DisplayMode'2D color histogram' である場合に使用できます。調整可能。

できるだけ迅速にアイ ダイアグラムをプロットするには、OversamplingMethod'None' に設定します。オーバーサンプリングを行わないことの難点は、トレースあたりのサンプル数が少ない場合にプロットがピクセル化して見えることです。

使用するトレースあたりのサンプル数が少ない場合に、より滑らかでピクセル化の少ないプロットを作成するには、OversamplingMethod'Input interpolation' または 'Histogram interpolation' に設定します。[Input interpolation] の方が高速な内挿法で、S/N 比 (SNR) が高い場合には良好な結果が得られます。SNR が低い場合には各ヒストグラムの範囲の中心方向へのバイアスが生じるため、このオーバーサンプリング方式は推奨されません。[Histogram interpolation] は他の手法ほど高速ではありませんが、SNR が低い場合でも良好な結果が得られます。

ヒストグラムのカラー スケール。'Linear' または 'Logarithmic' として指定します。ヒストグラムの特定の領域に不均衡な数の点が含まれている場合には、このプロパティを変更します。'Logarithmic' オプションは、鋭いピークをもち、信号が特定の時間値と振幅値に繰り返し一致するアイ ダイアグラムに使用します。このプロパティは、DisplayMode'2D color histogram' である場合に使用できます。調整可能。

退色。論理スカラーとして指定します。画面上に最初にプロットされた時点から時間間隔が開くにつれて点の色を薄くするには、このプロパティを true に設定します。このアニメーションはオシロスコープに似ています。このプロパティは、DisplayMode'Line plot' である場合に使用できます。調整可能。

信号の虚数部の表示。論理スカラーとして指定します。入力信号の虚数部または直交成分を表示するには、このプロパティを true に設定します。このプロパティは、EnableMeasurementsfalse である場合に使用できます。調整可能。

アイ ダイアグラムの Y 軸の範囲 (V)。2 要素ベクトルとして指定します。最初の要素は ymin に対応し、2 番目の要素は ymax に対応します。2 番目の要素は最初の要素より大きい値でなければなりません。調整可能。

アイ ダイアグラムでのグリッド表示の有効化。論理スカラーとして指定します。アイ ダイアグラムにグリッドを表示するには、このプロパティを true に設定します。調整可能。

スコープ ウィンドウの位置 (ピクセル)。[left bottom width height] の形式の 4 要素ベクトルとして指定します。調整可能。

メソッド

hideスコープ ウィンドウを非表示にする
horizontalBathtub水平方向のバスタブ曲線
jitterHistogramジッター ヒストグラム
measurementsアイ ダイアグラム測定のパラメーター
noiseHistogramノイズ ヒストグラム
resetアイ ダイアグラム オブジェクトの状態のリセット
showスコープ ウィンドウを表示する
step入力信号のアイ ダイアグラムをプロットする
verticalBathtub垂直方向のバスタブ曲線
すべての System object に共通
release

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

すべて展開する

サンプルレートおよびシンボルあたりの出力サンプル数のパラメーターを指定します。

fs = 1000;
sps = 4;

送信フィルターおよびアイ ダイアグラム オブジェクトを作成します。

txfilter = comm.RaisedCosineTransmitFilter('OutputSamplesPerSymbol',sps);
ed = comm.EyeDiagram('SampleRate',fs*sps,'SamplesPerSymbol',sps);

ランダムなシンボルを生成して QPSK 変調を適用します。次に変調信号をフィルター処理し、アイ ダイアグラムを表示します。

data = randi([0 3],1000,1);
modSig = pskmod(data,4,pi/4);

txSig = txfilter(modSig);
ed(txSig)

S/N 比 (SNR) 条件が異なる場合に、2 次元ヒストグラムに対する異なる内挿法の影響を示します。

GMSK 変調器 System object およびアイ ダイアグラム System object を作成します。2 次元カラー ヒストグラムでアイ ダイアグラムを表示するよう指定し、信号の実数部と虚数部をプロットします。

gmsk = comm.GMSKModulator('PulseLength',3);
ed = comm.EyeDiagram('DisplayMode','2D color histogram', ...
    'ShowImaginaryEye',true,'YLimits',[-2 2]);

バイポーラ データを生成し、GMSK 変調を適用します。

d = 2*randi([0 1],1e4,1)-1;
x = gmsk(d);
%Pass the signal through an AWGN channel having a 25 dB SNR and with a fixed seed for repeatable results.
randStream = RandStream('mt19937ar','Seed',5489);
y = awgn(x,25,'measured',randStream);

アイ ダイアグラムを表示します。

ed(y)

トレースあたりのサンプル数が少ない場合 (16)、内挿がないため区分的に連続した動作が生じます。

区分的に連続した動作を補正するために、OversamplingMethod プロパティを 'Input interpolation' に設定します。オブジェクトをリセットして、アイ ダイアグラムを表示します。

ed.OversamplingMethod = 'Input interpolation';
reset(ed)
ed(y)

内挿によってアイ ダイアグラムが平滑化されます。

ここで、SNR が 10 dB の AWGN チャネル経由で GMSK 変調信号を渡します。アイ ダイアグラムを表示します。

y = awgn(x,10,'measured',randStream);
reset(ed)
ed(y)

垂直方向の縞模様は入力内挿の結果ですが、低 SNR 条件では精度が限られます。

OversamplingMethod プロパティを 'Histogram interpolation' に設定します。アイ ダイアグラムをプロットします。

ed.OversamplingMethod = 'Histogram interpolation';
reset(ed)
ed(y)

ヒストグラム内挿法はすべての SNR 値に対して有効なため、アイ ダイアグラムのプロットが正確に表示されるようになりました。この方法では実行時間が長くなります。

デュアルディラック入力信号のアイ ダイアグラムを可視化します。アイの測定を計算し、水平方向および垂直方向のバスタブ曲線を可視化します。水平 (ジッター) ヒストグラムを重ね合わせます。

サンプルレート、シンボルあたりのサンプル数、トレース数を指定します。

fs = 10000;
sps = 200;
numTraces = 2000;

次のプロパティをもつアイ ダイアグラム オブジェクトを作成します。

  • 2 次元カラー ヒストグラム表示

  • 対数カラー スケール

  • ジッター ヒストグラムの重ね合わせ

  • 水平方向および垂直方向のバスタブ曲線

  • Y 軸の範囲 [-1.3 1.3]

  • より大きなウィンドウの高さ

ed = comm.EyeDiagram('SampleRate',fs,'SamplesPerSymbol',sps,'SampleOffset',sps/2, ...
    'DisplayMode','2D color histogram','ColorScale','Logarithmic', ...
    'EnableMeasurements',true,'OverlayHistogram','Jitter', ...
    'ShowBathtub','Both','YLimits', [-1.3 1.3]);
ed.Position = ed.Position + [0 0 0 120];

デュアルディラックおよびランダム ジッターをもつ波形を生成します。立ち上がりおよび立ち下がり時間として 3 ms を指定します。

src = commsrc.pattern('SamplesPerSymbol',sps,'RiseTime',3e-3,'FallTime', 3e-3);
src.Jitter = commsrc.combinedjitter('RandomJitter','on','DiracJitter','on', ...
    'DiracDelta',[-10e-04 10e-04],'RandomStd',5e-4);

トレースごとに 2 つのシンボルを生成します。

symbols = src.generate(numTraces*2);

40e3 シンボルのパケットのデータを処理し、ノイズを追加してアイ ダイアグラムを表示します。

for idx = 1:(numTraces-1)/100
    x = symbols(1+(idx-1)*100*2*sps:idx*100*2*sps); % Read 40,000 symbols
    y = awgn(x,30);                                 % Add noise
    ed(y);                                          % Display eye diagram
end

デュアルディラックおよびランダム ジッターをもつ波形のアイ ダイアグラムを表示します。ジッターおよびノイズ ヒストグラムをプロットします。

サンプルレート、シンボルあたりのサンプル数、トレース数のパラメーターを指定します。

fs = 1000;
sps = 200;
numTraces = 1000;

アイ ダイアグラム オブジェクトを作成します。

ed = comm.EyeDiagram('SampleRate',fs,'SamplesPerSymbol',sps,'SampleOffset',sps/2, ...
    'DisplayMode','2D color histogram','ColorScale','Logarithmic', ...
    'EnableMeasurements',true,'YLimits',[-1.2 1.2]);

デュアルディラックおよびランダム ジッターをもつ波形を生成します。立ち上がりおよび立ち下がり時間として 3 ms を指定します。

src = commsrc.pattern('SamplesPerSymbol',sps,'RiseTime',3e-3,'FallTime', 3e-3);
src.Jitter = commsrc.combinedjitter('RandomJitter','on','DiracJitter','on', ...
    'DiracDelta',[-10e-04 10e-04],'RandomStd',5e-4);

トレースごとに 2 つのシンボルを生成します。

x = src.generate(numTraces*2);

結果が繰り返されるようにする場合は、固定シードを使用して AWGN チャネルを介して信号を渡します。

randStream = RandStream('mt19937ar','Seed',5489);
y = awgn(x,30,'measured',randStream);
ed(y)

jitterHistogram メソッドを使用して、各ビンのジッター ヒストグラム数を計算します。ヒストグラムをプロットします。

jbins = jitterHistogram(ed);
plot(jbins)

noiseHistogram メソッドを使用して、各ビンのノイズ ヒストグラム数を計算します。ヒストグラムをプロットします。

nbins = noiseHistogram(ed);
plot(nbins)

デュアルディラックおよびランダム ジッターをもつ波形のアイ ダイアグラムを表示します。水平方向および垂直方向のバスタブ曲線を生成してプロットします。

サンプルレート、シンボルあたりのサンプル数、トレース数のパラメーターを指定します。

fs = 1000;
sps = 200;
numTraces = 1000;

アイ ダイアグラム オブジェクトを作成します。

ed = comm.EyeDiagram('SampleRate',fs,'SamplesPerSymbol',sps,'SampleOffset',sps/2, ...
    'DisplayMode','2D color histogram','ColorScale','Logarithmic', ...
    'EnableMeasurements',true,'ShowBathtub','Both','YLimits',[-1.2 1.2]);

デュアルディラックおよびランダム ジッターをもつ波形を生成します。立ち上がりおよび立ち下がり時間として 3 ms を指定します。

src = commsrc.pattern('SamplesPerSymbol',sps,'RiseTime',3e-3,'FallTime', 3e-3);
src.Jitter = commsrc.combinedjitter('RandomJitter','on','DiracJitter','on', ...
    'DiracDelta',[-5e-04 5e-04],'RandomStd',2e-4);

トレースごとに 2 つのシンボルを生成します。

x = src.generate(numTraces*2);

結果が繰り返されるようにする場合は、固定シードを使用して AWGN チャネルを介して信号を渡します。

randStream = RandStream('mt19937ar','Seed',5489);
y = awgn(x,30,'measured',randStream);

アイ ダイアグラムを表示します。

ed(y)

アイ ダイアグラムの水平方向のバスタブ データを生成します。曲線をプロットします。

hb = horizontalBathtub(ed)
semilogy([hb.LeftThreshold],[hb.BER],'b',[hb.RightThreshold],[hb.BER],'b')
grid
hb = 

  1x13 struct array with fields:

    BER
    LeftThreshold
    RightThreshold

アイ ダイアグラムの垂直方向のバスタブ データを生成します。曲線をプロットします。

vb = verticalBathtub(ed)
semilogx([vb.BER],[vb.LowerThreshold],'b',[vb.BER],[vb.UpperThreshold],'b')
grid
vb = 

  1x13 struct array with fields:

    BER
    UpperThreshold
    LowerThreshold

標準偏差が 2e-4 のランダム ジッターをもつ組み合わせジッター オブジェクトを作成します。

jtr = commsrc.combinedjitter('RandomJitter','on','RandomStd',2e-4);

ランダム ジッターおよび 3 ms の立ち上がり時間と立ち下がり時間をもつ NRZ 信号を生成します。

genNRZ = commsrc.pattern('Jitter',jtr,'RiseTime',3e-3,'FallTime',3e-3);
x = generate(genNRZ,2000);

結果が繰り返されるようにする場合は、固定シードを使用して AWGN チャネルを介して信号を渡します。

randStream = RandStream('mt19937ar','Seed',5489);
y = awgn(x,30,'measured',randStream);

アイ ダイアグラム オブジェクトを作成します。測定を有効にします。

ed = comm.EyeDiagram('SamplesPerSymbol',genNRZ.SamplesPerSymbol, ...
    'SampleRate',genNRZ.SamplingFrequency,'SampleOffset',genNRZ.SamplesPerSymbol/2, ...
    'EnableMeasurements',true,'DisplayMode','2D color histogram', ...
    'OversamplingMethod','Input interpolation','ColorScale','Logarithmic','YLimits',[-1.2 1.2]);

立ち下がりおよび立ち下がり時間を計算するために、アイパターン レベルとアイパターン振幅の測定から立ち上がりおよび立ち下がりしきい値を決定します。アイ ダイアグラムをプロットし、これらのパラメーターを計算します。

ed(y)

再度、アイ ダイアグラム オブジェクトを介して信号を渡し、立ち上がりおよび立ち下がり時間を測定します。

ed(y)
hide(ed)

measurements メソッドを使ってデータを表示します。

eyestats = measurements(ed);
riseTime = eyestats.RiseTime
fallTime = eyestats.FallTime
riseTime =

    0.0030


fallTime =

    0.0030

測定値は 3 ms の指定に一致します。

Measurements

すべて展開する

[測定値] パネルを開くには、[アイの測定] ボタンをクリックするか、ツール バー メニューから [ツール]、[測定値]、[アイの測定] を選択します。

アイパターン レベルはデータ ビットを表すために使用する振幅レベルです。表示される NRZ 信号の場合、レベルは –1 V および +1 V です。アイパターン レベルは、アイパターン レベル境界内の 2 次元ヒストグラムを平均して計算されます。

アイパターン振幅は、2 つのアイパターン レベルの平均値の間の距離 (V) です。

アイパターン高さは、アイパターン レベル上限の μ – 3σ とアイパターン レベル下限の μ + 3σ の間の距離です。μ はアイパターン レベルの平均で、σ は標準偏差です。

垂直開口部は、BER しきい値に対応する 2 点間の距離です。たとえば、BER しきい値が 10–12 の場合、これらの点は各アイパターン レベルから 7σ の距離に相当します。

アイパターン SNR は、各アイパターン レベルに対応する垂直方向の標準偏差の差に対するアイパターン レベルの差の比率です。

ここで、L1 および L0 は上限および下限のアイパターン レベルの平均を表し、σ1 および σ0 はその標準偏差を表します。

Q ファクターは、アイパターン SNR と同じ式を使用して計算されます。ただし、垂直方向のヒストグラムの標準偏差は、デュアルディラック解析で計算されたものと置き換えられます。

クロッシング レベルは、アイパターン クロッシングが発生する振幅レベルです。

クロッシング時間はクロッシングが発生する時間です。時間は水平方向 (ジッター) のヒストグラムの平均値として計算されます。

アイパターン遅延は 2 つのクロッシング時間の間の中間点です。

アイパターン幅は、左側クロッシング時間の μ + 3σ と右側クロッシング時間の μ – 3σ の間の水平方向距離です。μ はジッター ヒストグラムの平均値、σ は標準偏差です。

水平開口部は、BER しきい値に対応する 2 点間の距離です。たとえば、BER が 10–12 の場合、これらの 2 点は各クロッシング時間から 7σ の距離に相当します。

立ち上がり時間は、アイ ダイアグラムで定義される低しきい値と高しきい値の間の平均時間です。既定のしきい値は、アイパターン振幅の 10% および 90% です。

立ち下がり時間は、アイ ダイアグラムで定義される高しきい値と低しきい値の間の平均時間です。既定のしきい値は、アイパターン振幅の 10% および 90% です。

確定的ジッター (DJ) は、デュアルディラック ヒストグラムの 2 つのピーク間の距離です。DJ の確率密度関数 (PDF) は 2 つのデルタ関数で構成されます。

ランダム ジッター (RJ) は、ジッターの境界のないガウス成分です。ジッターのランダム成分は、指定された平均偏差 σ をもつ平均がゼロのガウス確率変数としてモデル化されます。ランダム ジッターは次のように計算されます。

ここで、次の式が成り立ちます。

BER は指定された BER しきい値です。ρ は左側および右側ディラック関数の振幅で、ジッター ヒストグラムのビンのカウント数から決定されます。

総ジッター (TJ) は、確定的ジッターとランダム ジッターの和です (たとえば、TJ = DJ + RJ)。

総ジッターの PDF は、DJ PDF と RJ PDF の畳み込みです。

RMS ジッターは、判定境界における水平 (ジッター) ヒストグラムから計算されるジッターの標準偏差です。

ピーク間ジッターは、各クロッシング時間の水平ヒストグラムに含まれる左側と右側の非ゼロ値間の最大水平距離です。

プログラムの構成

Scope プロパティは、コールバックを使用するか、または、プログラムによる Scope ブロックの制御 (Simulink)で説明されているように、スクリプト内でスコープ構成オブジェクトを使用してプログラムで構成できます。

参照

[1] Stephens, Ransom. "Jitter Analysis: The Dual-Dirac Model, RJ/DJ, and Q-Scale." Agilent Technologies Whitepaper. December 2004.

拡張機能

参考

System object

ブロック

関数

R2016b で導入