Main Content

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

comm.EyeDiagram

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

説明

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

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

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

  2. 関数と同様に、引数を指定してオブジェクトを呼び出します。

System object の機能の詳細については、System object とはを参照してください。

作成

説明

ed = comm.EyeDiagram は既定のプロパティ値を使用してアイ ダイアグラム System object を作成します。

ed = comm.EyeDiagram(Name,Value) は、1 つ以上の名前と値のペア引数を使用してプロパティを設定します。各プロパティ名を一重引用符で囲みます。指定していないプロパティは既定値になります。

例: comm.EyeDiagram('SampleRate',2,'DisplayMode','2D color histogram')

プロパティ

すべて展開する

特に指定がない限り、プロパティは "調整不可能" です。つまり、オブジェクトの呼び出し後に値を変更することはできません。オブジェクトは呼び出すとロックされ、ロックを解除するには関数 release を使用します。

プロパティが "調整可能" の場合、その値をいつでも変更できます。

プロパティ値の変更の詳細については、System object を使用した MATLAB でのシステム設計を参照してください。

アイ ダイアグラム ウィンドウのタイトル。文字ベクトルとして指定します。

調整可能: Yes

データ型: char

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

データ型: double

シンボルあたりのサンプル数。正の整数として指定します。

調整可能: Yes

データ型: double

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

調整可能: Yes

データ型: double

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

調整可能: Yes

データ型: double

表示するトレース数。正の整数として指定します。

調整可能: Yes

依存関係

このプロパティを有効にするには、DisplayMode プロパティを 'Line plot' に設定します。

データ型: double

アイ ダイアグラムの表示モード。次のいずれかの値として指定します。

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

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

調整可能: Yes

データ型: char

アイ ダイアグラム測定を有効化するオプション。true または false として指定します。このプロパティを true に設定すると、測定ペインとアイ ダイアグラムでの計算が表示されます。

調整可能: Yes

データ型: logical

バスタブ曲線可視化を有効化するオプション。'None''Horizontal''Vertical' または 'Both' として指定します。

調整可能: Yes

依存関係

このプロパティを有効にするには、EnableMeasurements プロパティを true に設定します。

データ型: char

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

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

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

  • ヒストグラムの重ね合わせを表示しないようにするには、このプロパティを 'None' に設定します。

調整可能: Yes

依存関係

このプロパティを有効にするには、DisplayMode プロパティを '2D color histogram' に、EnableMeasurements プロパティを true に設定します。

データ型: char

振幅レベルのしきい値 (ボルト単位)。実数値のスカラーとして指定します。このプロパティは水平ヒストグラム (ジッター) の異なる信号領域を分離します。ジッター ヒストグラムはこのプロパティが変更されるとリセットされます。

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

調整可能: Yes

依存関係

このプロパティを有効にするには、EnableMeasurements プロパティを true に設定します。

データ型: double

アイパターン レベルを計算する時間範囲。2 要素の行ベクトルとして指定します。ベクトル値をシンボル区間のパーセンテージとして指定します。

調整可能: Yes

依存関係

このプロパティを有効にするには、EnableMeasurements プロパティを true に設定します。

データ型: double

立ち上がりおよび立ち下がり遷移の振幅レベル。2 要素の行ベクトルとして指定します。ベクトル値をアイパターン振幅のパーセンテージとして指定します。このプロパティが変更されると、立ち上がりおよび立ち下がりしきい値のクロッシング ヒストグラムがリセットされます。

調整可能: Yes

依存関係

このプロパティを有効にするには、EnableMeasurements プロパティを true に設定します。

データ型: double

水平クロッシングの振幅許容誤差 (ボルト単位)。実数値のスカラーとして指定します。この値を増加させると、ノイズによるスプリアス クロッシングの許容誤差が大きくなります。このプロパティが変更されると、ジッターと立ち上がりおよび立ち下がりヒストグラムがリセットされます。

調整可能: Yes

依存関係

このプロパティを有効にするには、EnableMeasurements プロパティを true に設定します。

データ型: double

アイの測定に使用されるビット誤り率 (BER)。範囲 [0, 0.5] のスカラーとして指定します。System object はこの値を使用してランダム ジッター、総ジッターアイパターンの水平開口部およびアイパターンの垂直開口部を計測します。

調整可能: Yes

依存関係

このプロパティを有効にするには、EnableMeasurements プロパティを true に設定します。

データ型: double

バスタブ曲線の開口部を計算するための BER 値。範囲 [0, 0.5] の要素のベクトルとして指定します。アイパターンの水平開口と垂直開口は、このプロパティで指定した各値に対して計算されます。

調整可能: Yes

依存関係

このプロパティを有効にするには、EnableMeasurements プロパティを true に、ShowBathtub プロパティを 'Both''Horizontal'、または 'Vertical' に設定します。

データ型: double

測定から破棄される初期データの持続時間 (秒)。非負のスカラーとして指定します。

依存関係

このプロパティを有効にするには、EnableMeasurements プロパティを true に設定します。

データ型: double

オーバーサンプリング方式。'None''Input interpolation' または 'Histogram interpolation' として指定します。

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

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

調整可能: Yes

依存関係

このプロパティを有効にするには、DisplayMode プロパティを '2D color histogram' に設定します。

データ型: char

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

調整可能: Yes

依存関係

このプロパティを有効にするには、DisplayMode プロパティを '2D color histogram' に設定します。

データ型: char

Color fading。true または false として指定します。画面上に最初にプロットされた時点から時間間隔が開くにつれて点の色を薄くするには、このプロパティを true に設定します。このアニメーションはオシロスコープに似ています。

調整可能: Yes

依存関係

このプロパティを有効にするには、DisplayMode プロパティを 'Line plot' に設定します。

データ型: logical

信号の虚数部の表示。true または false として指定します。入力信号の虚数部または直交成分を表示するには、このプロパティを true に設定します。

調整可能: Yes

依存関係

このプロパティを有効にするには、EnableMeasurements プロパティを false に設定します。

データ型: logical

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

調整可能: Yes

データ型: double

アイ ダイアグラムのグリッド表示を有効化するオプション。true または false として指定します。アイ ダイアグラムにグリッドを表示するには、このプロパティを true に設定します。

調整可能: Yes

データ型: logical

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

調整可能: Yes

データ型: double

使用法

構文

説明

ed(x) は入力信号 x をアイ ダイアグラムに表示し解析します。

入力引数

すべて展開する

アイ ダイアグラムで解析され表示される入力信号。ベクトルまたは行列として指定します。x は、実数または複素数のベクトル、または実数の 2 列の行列にすることができます。

データ型: double
複素数のサポート: あり

オブジェクト関数

オブジェクト関数を使用するには、System object を最初の入力引数として指定します。たとえば、obj という名前の System object のシステム リソースを解放するには、次の構文を使用します。

release(obj)

すべて展開する

showスコープ ウィンドウの表示
hideスコープ ウィンドウを非表示にする
horizontalBathtub水平方向のバスタブ曲線
verticalBathtub垂直方向のバスタブ曲線
jitterHistogramジッター ヒストグラム
noiseHistogramノイズ ヒストグラム
measurementsアイ ダイアグラム測定のパラメーター
stepSystem object のアルゴリズムの実行
releaseリソースを解放し、System object のプロパティ値と入力特性の変更を可能にします。
resetSystem 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 の指定に一致します。

詳細

すべて展開する

参照

[1] Stephens, Ransom. "Jitter analysis: The dual-Dirac model, RJ/DJ, and Q-scale." Agilent Technical Note (2004).

[2] Ou, N., T. Farahmand, A. Kuo, S. Tabatabaei, and A. Ivanov. “Jitter Models for the Design and Test of Gbps-Speed Serial Interconnects.” IEEE Design and Test of Computers 21, no. 4 (July 2004): 302–13. https://doi.org/10.1109/MDT.2004.34.

拡張機能

R2016b で導入