差動信号を扱っていると、一度はやらかすのがこれです。
P/Nを逆に配線してしまう。
ぱっと見は「終わった…」と思いがちですが、実際にはもう少し整理して考えることができます。
特にDDR受信では、データとクロックで影響が異なるのがポイントです。
基板設計の際に注意してほしいものですよね~
結論(先に)
ここでは,立上り側・立下り側の値を2 bitずつ組にして読む場合を考えます.受信モードと後段でのデータの並べ方によって,見える順序は変わります.
- データだけP/N逆
→ ビット反転のみ(順序は変わらない) - クロックだけP/N逆(DDR)
→ 偶奇エッジが入れ替わる(データ順序が崩れる)
前提
本記事では以下の条件を前提とします。
- インタフェース:LVDS
- 受信方式:DDR(立上り・立下りでサンプリング)
- データ列:D1 → D2 → D3 → D4(時間順)
- デバイス:Efinix Titaniumでの動作確認ベース
※一般的なLVDS DDRでも同様の挙動になると考えられますが、最終的にはデバイス依存です。
データだけP/N逆の場合
まずはシンプルなケース。
起きること
差動受信は
Vdiff = Vp - Vn
で判定されます。
P/Nを逆にすると、
Vdiff → -Vdiff
となるため、
👉 論理レベルが反転します。
結果
D1 D2 D3 D4 → ~D1 ~D2 ~D3 ~D4
ここで重要なのは、
- サンプリングタイミングには影響しない
- データの並び順は変わらない
という点です。
つまり、
- 順序:そのまま
- 値:反転
という非常に素直な挙動になります。
クロックだけP/N逆の場合(DDR)
こちらが本題です。
起きること
クロックのP/Nを逆にすると、
👉 クロックが180°位相反転します。
DDRでの影響
DDRでは、
- 立上りエッジで1ビット
- 立下りエッジで1ビット
を取得します。
クロックが反転すると、
👉 どのエッジでどのデータを取得するかが入れ替わる
ことになります。
具体例
元の想定:
立上り → D1
立下り → D2
立上り → D3
立下り → D4
クロック反転後:
立上り → D2
立下り → D1
立上り → D4
立下り → D3
結果
D2 D1 D4 D3
完全にランダムになるわけではなく、
👉 偶数・奇数のペア単位で入れ替わる
という挙動になります。
この「それっぽく見えるけど微妙におかしい」感じが、デバッグをややこしくします。
ここで私もハマりました orz
対処方法
FPGAであれば、一般的には次の対応になります。
- データ逆接
→ NOTで補正 - クロック逆接
→ PLLなどで位相補正、または受信設定で調整
ただし、
- グローバルクロックに載せられるピンか
- PLLに接続可能か
などの制約はあるため、ピン配置の時点で回避できるのがベストです。
まとめ
整理すると次の通りです。
- データP/N逆
→ ビット反転のみ(順序は維持) - クロックP/N逆(DDR)
→ 偶奇エッジ入れ替わり(順序が崩れる)
最後に
この手の問題は、
- テストパターンを流す
- ILAやロジアナで確認する
のが最も確実です。
理屈通りに見えることもあれば、
実装(配線遅延・スキュー・IO設定)依存でズレることも普通にあります。
「なんかそれっぽく動いてるけどおかしい」状態にハマったら、
まずはP/N逆接を疑うのがおすすめです。
良きハッピーハードウェア開発を。
受信モードとデータの並べ方も確認する
上のD2 D1 D4 D3は,立上り側・立下り側の値を2 bitずつ組にして読む説明例です.クロックの極性を変えると,物理的な立上り・立下りと,受信回路が認識するエッジの対応が逆になります.ただし,そこから後段へ出てくるワードの並びは,受信モードと再同期の方法にも依存します.すべてのLVDS受信回路で,この4 bitの並びになると決めつけることはできません.
EfinixのQuantum Titanium Primitives User Guide v4.2のEFX_IDDIOでは,O_HIが立上り側,O_LOが立下り側の取り込みに対応しています.また,IS_CLK_INVERTEDと,DDIO・DDIO_RESYNC・DDIO_PIPEのモードが定義されています.これはプリミティブの仕様であり,この記事の実機で使った設定を示すものではありません.
自分の設計と照合するときは,まず生成された受信回路と設定を確認し,その出力を後段でどの順に並べているか追います.デシリアライザーを使う構成なら,シリアライズ比とワード境界も確認します.0101のような繰り返しだけで判断せず,反転と位置ずれを区別できる既知のテストパターンと照合します.
クロックの補正を入れた場合も,データの並びが戻ったことと,取り込みタイミングが満たされていることは別に確認します.クロックとデータの位相調整については,Efinix AN 044「Aligning LVDS Clock and Data Signals」が参考になります.この追記では,新しい実機波形や測定結果は追加していません.

