アイダイアグラム シミュレーター 戻る
電気・通信

アイダイアグラム シミュレーター

高速デジタル信号の品質を一目で表す「アイダイアグラム」をブラウザで再現するツールです。ビットレート・立ち上がり時間・ジッタ・振幅ノイズを変えると、多数の単位区間を重ね描きしたアイがリアルタイムで開いたり閉じたりし、アイ開口高さ・開口幅・Q値が分かります。

パラメータ設定
ビットレート
Mbps
1秒間に送るビット数。UI = 1/ビットレート
立ち上がり/立ち下がり時間
ps
エッジの遷移にかかる時間。遅いほどアイを左右から削る
タイミングジッタ(RMS)
ps
エッジ時刻のばらつき。アイを左右に押しつぶす
振幅ノイズ(RMS)
%
フルスイングに対する電圧雑音。アイを上下に押しつぶす
計算結果
アイ開口高さ (%)
アイ開口幅 (% of UI)
ビット周期 UI (ps)
ピークピークジッタ (ps)
品質係数 Q
アイの判定
アイダイアグラム — 単位区間の重ね描き

多数の単位区間(UI)を重ね描きしたアイ。中央の開いた領域がアイ開口で、縦が振幅マージン、横がタイミングマージンです。色は緑=大きく開く/橙=狭い/赤=閉じている。

アイ開口 vs タイミングジッタ
アイ開口高さ vs 振幅ノイズ
理論・主要公式

$$\text{UI}=\frac{1}{\text{bit rate}},\qquad Q=\frac{\mu_1-\mu_0}{\sigma_1+\sigma_0}$$

UI はビット周期(単位区間)。Q は信号レベルの分離量をノイズの広がりで割った品質係数で、アイ開口高さは振幅方向のノイズマージン、アイ開口幅はタイミング方向のマージンを表します。

$$\text{アイ開口高さ}=\frac{\min(\text{1レベル})-\max(\text{0レベル})}{\text{フルスイング}}\times 100\,\%$$

サンプリング時点で重ねた波形のうち、最も低い1と最も高い0の差をフルスイングで割った値。これが大きいほど振幅ノイズに強いリンクです。

$$\text{BER}\approx\frac{1}{2}\,\text{erfc}\!\left(\frac{Q}{\sqrt{2}}\right),\qquad J_{pp}\approx 6.6\,\sigma_{\text{jitter}}$$

ビット誤り率 BER は Q 値で決まり、Q≈6 で BER≈10⁻⁹。ピークピークジッタ J_pp は RMS ジッタの約6.6倍として見積もります。

アイダイアグラムとは

🙋
「アイダイアグラム」って、なんだか目みたいな模様が出てくる図ですよね。あれって何を見ているんですか?
🎓
そう、見た目どおり「目(アイ)」の形が出るからアイダイアグラムって呼ぶんだ。やっていることはシンプルで、受信したデジタル波形を1ビットの周期ごとにバサバサと切り出して、何百枚も同じ場所に重ねて描くだけ。オシロスコープをビットのクロックでトリガすると勝手にこうなる。重ねた結果、中央にぽっかり開いた領域ができる。その開き具合が、信号の品質そのものなんだよ。
🙋
開いていれば良くて、閉じていれば悪い、ということですか?でも、なんで重ねるだけで品質が分かるんでしょう?
🎓
いい質問だね。受信機はビット周期の真ん中あたりで「いま1か、0か」を判定する。何百本もの波形を重ねたとき、その判定する瞬間に1の束と0の束がしっかり離れていれば、多少波形が暴れても誤判定しない。アイの「縦の開き」がその余裕、つまり振幅のノイズマージンなんだ。左の振幅ノイズのスライダーを上げてみて。アイが上下からつぶれて、緑から橙、赤へと変わっていくのが見えるはずだ。
🙋
本当だ、ノイズを40%にしたらアイが完全に閉じました。じゃあ「横の開き」は何を表しているんですか?
🎓
横の開きはタイミングのマージンだよ。受信機はクロックで「ここだ」というタイミングでサンプルするけど、そのクロックは少しふらつくし、信号のエッジ自体もジッタでばらつく。アイの横幅が広ければ、多少サンプル位置がずれても安全地帯の中。狭ければ、ちょっとずれただけで判定がアウトになる。ジッタのスライダーを200psまで上げると、アイが左右からつぶれて横方向にも閉じるのが分かる。縦と横、両方とも開いて初めて「良いリンク」なんだ。
🙋
立ち上がり時間のスライダーもあります。これはアイにどう効くんですか?
🎓
立ち上がり時間は、波形が0から1へ昇りきるのにかかる時間だ。これが遅いと、波形がまだ昇り切らないうちに次のビットが来てしまう。前のビットの「昇りかけ」が次の判定に残るんだ。これをシンボル間干渉(ISI)と呼ぶ。ISIはアイを左右の斜面から削るので、開口幅が狭くなる。だから高速リンクほど、ドライバを速く・配線を短く・損失を小さくして、立ち上がりを鋭く保つことが大事になる。
🙋
最後に出てくる「Q値」って何ですか?アイ開口とは別物なんですか?
🎓
Q値は、アイ開口を「数値1個」で表したものだと思えばいい。信号の1と0がどれだけ離れているかを、ノイズの広がりで割った比だ。Q = (μ1−μ0)/(σ1+σ0) だね。これが大事なのは、Q値からビット誤り率(BER)が直接計算できるから。ざっくりQがおよそQ≈6で1000ビットに1個どころか10億ビットに1個の誤り、Q≈7で1兆ビットに1個。だから実務では「アイが開いて見える」だけでなく、Q値が6や7を超えているかどうかでリンクの合否を判定するんだ。

よくある質問

アイダイアグラム(アイパターン)は、受信したデジタル波形を1ビット周期(単位区間 UI)ごとに切り出し、何百〜何千個も重ね描きした図です。オシロスコープをビットクロックでトリガし、連続する単位区間を画面上で重ねると、中央に「目(アイ)」のような開いた領域が現れます。アイが大きく開いていれば信号品質が良く、閉じていれば受信機がビットエラーを起こすことを意味します。高速デジタルリンクの健全性を一目で判断できる、シグナルインテグリティの最重要ツールです。
アイ開口高さはアイ中央の縦方向の開きで、サンプリング時点における最も低い「1」と最も高い「0」の電圧差です。これは振幅方向の余裕(ノイズマージン)で、受信機が1を0と誤判定するまでに許容できる振幅ノイズの量を表します。アイ開口幅はアイの横方向の開きで、ゼロクロス時刻のばらつきから求まり、UIに対する割合で表します。これはタイミング方向の余裕で、サンプリングクロックがどれだけずれても正しく判定できるかを表します。
Q値は信号レベルの分離量をノイズの広がりで割った無次元量で、Q ≈ (μ1−μ0)/(σ1+σ0) で定義されます。μ1・μ0 は1レベル・0レベルの平均、σ1・σ0 はそれぞれのノイズ標準偏差です。Q値はビット誤り率(BER)と直結し、ガウスノイズを仮定すると BER ≈ 0.5·erfc(Q/√2) です。Q≈6 で BER≈10⁻⁹、Q≈7 で BER≈10⁻¹² に相当します。一般の高速リンク認証ではQ値6〜7以上を目標にします。
アイを閉じさせる要因は大きく3つです。第一に立ち上がり時間が遅いとシンボル間干渉(ISI)が起き、波形が遷移し切る前に次のビットへ移るためアイが左右から削られます。第二に振幅ノイズ(熱雑音・クロストーク・電源変動)はアイを上下に押しつぶし、開口高さを下げます。第三にタイミングジッタはエッジ時刻をばらつかせ、アイを左右に押しつぶして開口幅を下げます。アイが完全に閉じると受信機は必ずビットエラーを起こします。

実世界での応用

高速シリアルリンクの認証:USB、PCI Express、Ethernet(10G/25G/100G)、SATA、HDMI、DisplayPort といった高速インターフェースは、規格ごとにアイダイアグラムのマスク(テンプレート)が定められています。受信したアイがこのマスクに触れないこと、規定のアイ開口高さ・開口幅を満たすことが、相互接続の合格条件です。コンプライアンステストでは専用のオシロスコープで何百万ビットものアイを取得し、規格適合を判定します。

DDR メモリインターフェースの検証:DDR4/DDR5 のような高速パラレルメモリでは、データ信号(DQ)とストローブ信号(DQS)のタイミング関係がアイダイアグラムで評価されます。アイ開口幅はセットアップ/ホールド時間の余裕に直結し、開口が足りないと読み書きエラーが発生します。基板設計では配線長を揃え、終端を最適化してアイを最大化します。

光通信システムの品質管理:光ファイバ通信では、受信した光信号を電気に変換した後のアイダイアグラムから、送信器の品質や伝送路の劣化を評価します。Q値やアイ開口は、光信号対雑音比(OSNR)や分散の影響を反映します。波長分散やモード分散が大きいとアイが閉じるため、分散補償の効果もアイで確認します。

シグナルインテグリティ解析(CAE)との連携:基板や配線の伝送特性(Sパラメータ)を回路シミュレータに取り込み、チャネルを通過した後のアイダイアグラムを計算することができます。本ツールのような簡易モデルで「立ち上がりやジッタがどのくらいでアイが閉じるか」の感覚をつかんでおくと、IBIS-AMI モデルを使った詳細なリンクシミュレーションの結果を読み解きやすくなります。

よくある誤解と注意点

まず多い誤解が、「アイが開いて見えれば合格」というものです。オシロスコープで数千ビットを重ねたアイは確かに開いて見えても、それは「観測した範囲で」開いていたにすぎません。ビットエラー率 10⁻¹² を保証するには 1兆ビット規模の観測が必要で、現実には不可能です。そこで実務では、Q値や統計的な外挿(BERコンター、バスタブ曲線)を使って、ごく稀に起こる最悪のビットまで含めたアイ開口を推定します。少数の波形で開いて見えるアイと、規格が要求するアイは別物だと意識してください。

次に、「ジッタはすべて同じ」だと思い込むこと。本ツールではジッタを一つのRMS値として扱い、ピークピーク値を約6.6倍で見積もっています。これはランダムジッタ(熱雑音由来でガウス分布する成分)には妥当ですが、実際のジッタにはデターミニスティックジッタ(決定論的ジッタ=ISI、デューティ歪み、周期的ジッタなど、上限のある成分)も含まれます。決定論的ジッタはピークピーク値が観測ビット数によらず一定で、ランダムジッタは観測するほど大きく見えます。両者を分離して評価しないと、必要なジッタバジェットを見誤ります。

最後に、「アイ開口高さだけ見て開口幅を軽視する」という落とし穴。振幅が十分でも、タイミングマージンが足りなければリンクは失敗します。特に最近の高速リンクでは、配線損失による立ち上がりの鈍りとISIが支配的で、縦より横のアイが先に閉じることが珍しくありません。さらに PAM4 のような多値変調では1つの信号に複数のアイが積み重なり、各アイの高さは2値(NRZ)の3分の1しかありません。変調方式によってアイの見方そのものが変わる点にも注意が必要です。

使い方ガイド

  1. ビットレート範囲(brRange)を設定。PCIe 5.0なら32 GT/s、USB 3.1なら10 Gbpsを入力
  2. ライズタイム(rtRange)とフォールタイムをps単位で指定。DDR5メモリなら200ps以下が目安
  3. ジッタ(jtRange)をUI(Unit Interval)の%で入力。一般的なデバイスは3~8% pp
  4. ノイズパワー(npRange)をmV単位で設定してシミュレーション実行
  5. リアルタイム波形でアイ開口幅・高さを確認し、Q値が7以上を目安に品質判定

具体的な計算例

PCIe 5.0システム(32 GT/s)を想定:ビット周期UI=31.25ps、ライズタイム=180ps、ジッタ6% pp=1.875ps、ノイズ30mVとすると、アイ開口高さは約65%、アイ開口幅は約45% of UIとなります。Q値が8.2に達して「合格」判定となり、リンク品質は十分。これに対しジッタを8%に増やすとQ値は6.1低下し、マージン不足で要改善となります。

実務での注意点