以前のブログで、デジタル信号を使用したルーティングとレイアウトをサポートするための2層PCBのルーティングルールを準備する際の基本的なポイントについて説明しました。特に、I2CやSPIのようなデジタルインターフェースをサポートするために必要な基本的なスタックアップとルーティングルールを見てきました。これらのインターフェースを扱う際、いくつかのシンプルなガイドラインがあなたのボードの信号整合性を保証し、EMIを減らすのに役立ちます。
では、USBのようなインピーダンス制御インターフェースはどうでしょうか?インピーダンス制御の必要性、そしてそれをいつ違反できるかを知ることが、2層PCB上でUSBのようなものをルーティングする際の主なポイントです。この記事では、USBのような高速プロトコルをどのようにルーティングすべきかを示します。具体的には、USBデータを運ぶトレースに受け入れることができる長さ制限を含む、ボードのルーティングに必要な重要な設計ルールを見ていきます。このシリーズの前の記事をまだ読んでいない場合は、USBルーティング要件に設定される制限を理解するために必要な概念的な基盤を築くので、ぜひご覧ください。
前回の2層PCBルーティングに関する記事では、インピーダンスマッチングを適用することなく設計できる最長のライン長を決定する手順について見てきました。私たちは、伝送線の長さに沿った入力インピーダンスの偏差をどの程度許容できるかに依存して、長さの限界が決まることを発見しました。特に、信号の移動距離の10%から25%を重要な要因としてトレース長を制限するかどうかによります。
このデモでは、このボード上でのUSB 2.0のルーティングをHigh Speed規格で見てみたいと思います。特定の理由からこの規格に焦点を当てています。USB 2.0(High Speed)は、古いデバイスとの接続性を提供するとともに、高速データ転送率を実現し、Arduinoのような人気のプラットフォームでType Bプラグとしてまだ使用されています。
2つの可能な設計を例示するために、USB 2.0の2つの仕様(Full SpeedとHigh Speed)のデータレートと立ち上がり時間を比較しました:
|
|
|
|
|
|
以下に示すプロセスは、ハイスピードの立ち上がり時間とスキューを持つUSB 2.0信号に対して行われますが、USB 3.0や他の高速インターフェースにも同じプロセスを適用できます。ただし、2層ボード上でのルーティングはすべてのインターフェースに適しているわけではないことを覚えておいてください。例えば、小さな長さの制限とこれらの高速信号からの放射ノイズのため、2層ボード上でDDR4をルーティングすることを推奨する人は私は知りません。
まず、典型的な2層PCB上でUSB信号をルーティングする際のクリティカルレングスを知りたいと思います。Dk = 4.8のFR4材料のコアでは、伝搬遅延は約150 ps/inch、または約6 inches/nsになります。ハイスピード仕様の500 psの立ち上がり時間では、これは立ち上がり時間中の信号伝搬距離が3インチになります。非常に保守的に10%の限界をクリティカルレングスに使用すると、これはクリティカルレングスが0.3インチになります!
ここでルーティングする必要があるトポロジーは、単なる差動ペアを持つシリアルラインです。したがって、3つの要素があります:
Arduinoのようなプラットフォームでこれがどのように行われるか疑問に思うかもしれませんね。以下のAmazonで購入できるArduino Megaの画像をご覧ください。USBコントローラーはコネクターに近い位置に配置されており、間違いなく1インチ以内です。
他のArduinoボードでも同様の配置とルーティングが見られます。コネクター、ケーブル、および受信機との入力インピーダンスの不一致を避けるためには、上記のアドバイスに従って、2層PCB上でルートを短く保つことが望ましいでしょう。しかし、10%の制限を適用するほど保守的である必要はありません。代わりに、25%の制限を採用すれば、0.75インチというはるかに扱いやすいルーティング距離を持つことができ、これは2層PCB上ではるかに管理しやすいです。
これはHigh Speed仕様に関する注意点です。Full Speed仕様では、4 nsの立ち上がり時間に対して、より緩和された2.4インチのクリティカル長(10%限界)または6インチのクリティカル長(25%限界)を持っています。
重要なことは、有効なクリティカル長に対して設定された限界(10%、25%、その他)がなく、PCBのサイズによっては、クリティカル長を超えてしまい、正しいインピーダンスに基づいて設計する必要があるかもしれないということです。限界は複数の要因に依存し、クリティカル長に対する正しいパーセンテージを決定するには、いずれにしても複数のインピーダンス値を計算する必要があります。このクリティカル長に基づいてルールを開発するよりも、必要なUSBインピーダンスに基づいて設計する方が常に簡単です。
次に、ドライバー出力の終端方法を考慮する必要があります。ここではUSBについて具体的に話しているので、USB 2.0の仕様では、インピーダンスを合わせるためにコネクタ近くのD+およびD-ラインに終端抵抗が必要であることに注意してください。これらはUSBトランシーバーのダイに統合されているか、または外部コンポーネントとして必要になる場合があります。典型的な値は15オーム、22オーム、または45オームですが、他の値が使用されることもあります。使用するコンポーネントのデータシートを確認して、必要な終端が何であるかを確認してください。例として、TUSB2077APTR USBハブコントローラーは27オームの終端抵抗を使用しています。これらの外部抵抗が必要かどうかを確認するために、データシートを確認してください。
High Speed規格での100 psのスキュー制限を踏まえると、差動ペア(D+信号とD-信号)の両側の許容される長さの不一致を計算することができます。表面層ルーティングのためのおおよその6 ns/inchの伝搬遅延推定をスキュー制限に乗じると、0.6インチ(600ミル)のトレース長さの差が得られます。これは非常に大きいです!トレース長さのマッチングを許容するための自由度がたくさんあります。しかし、重要な点があります:これにはインターコネクトの全長(あなたのボード + ケーブル + 受信ボード)が含まれます。したがって、安全を期して、ペアを一緒にルーティングすることと、可能な場所で少しの長さマッチングを強制することによって、できるだけスキューを制限するように最善を尽くしてください。これは、USBコントローラチップが一般にD+信号とD-信号をチップの同じエッジに配置するため、かなり簡単です。
長さの差が短い場合、PCBレイアウトのスペースを取るため、長さ調整を実装する必要がないかもしれません。他の機能システムが何をするかを見るために、以下に示されているArduino UNOのPCBレイアウトの画像を見てください(注:これはEagleファイルから変換されました)。画像ではUSBラインが強調表示されています。終端抵抗の各側にわたるこれらのラインの正と負の側の長さを測定すると、長さの差は約180ミルであることがわかります。これが、ArduinoとUSBコネクタの間でこれらのラインが長さマッチングされていない理由です。
この狭いスペースでは、長さの差が約180ミルしかないため、インターフェースは正しく動作します。これは、許容されるスキュー量よりもはるかに小さいです。たとえ最悪のケースのファイバーウィーブ効果が緩いガラスウィーブラミネート上で発生したとしても、全体のスキュー(長さの観点から)は、約230ミル未満の相当量にしかならず、このインターフェースのスキュー許容量よりもはるかに低いままです。
前のブログで指摘したように、High Speed USB 2.0で特性インピーダンスに対応するトレース幅を使用しても、インピーダンス仕様を満たすことはできません。標準的な厚さのPCBで2層の場合、Dk - 4.8に対してトレース幅は約110ミルでした。そのトレース幅で、USB 2.0高速の差動ペアインピーダンス仕様をどうやって達成できるのでしょうか?
実際には、差動ペアのトレースが互いに結合する方法のため、そのトレース幅を使用する必要はありません。厚い2層ボードでレイヤースタックアップ計算機を使用して、マイクロストリップの差動インピーダンスを計算すると、実際に必要なトレース幅ははるかに小さく、スペーシングの関数であることがわかります。2層PCBの例のマイクロストリップラインについて、Altium Designerのレイヤースタックマネージャーは、トレース幅が5ミルのスペーシングで約16ミルであることを教えてくれます。
これらの差動マイクロストリップでは、より細いトレースを使用することができますが、より小さい間隔を使用する必要があります。この設計では、エッチングのためのトレース間クリアランスの限界に近いため、トレース間の5ミルのクリアランスを維持することは、これらのトレース幅で単線仕様と差動仕様の両方を満たしているため問題ありません。単線部分の仕様を満たしていることをどうやって知ることができるのでしょうか?これは、上記のトレース幅は、単一トレースの奇モードインピーダンスであり、特性インピーダンスではないからです!これが、この特定のトレース幅の値を維持し、単独のマイクロストリップの特性インピーダンス値を使用しない理由です。
議論していない代替案があります:共面マイクロストリップ差動ペアの使用です。表面層のマイクロストリップにグラウンドプアを走らせ、下層の信号の下にグラウンドプアを配置することで、9.5ミル幅のトレース、5ミルのトレースギャップ、そしてグラウンドまでの5ミルの間隔で90オームの差動インピーダンスを達成することができます。下記の値から、これらの値でUSB 2.0仕様の必要な90オームインピーダンスにうまく到達していることがわかります。
この配置を使用すると、2層ボードのクリティカルレングス問題やトレース幅問題についてあまり心配する必要がなくなります。ただし、この幅と間隔はルートの長さ全体で維持する必要があります。USBルーティングでは、トレースを差動信号を運んでいるだけの個別の単終端トレースとして扱うため、それらを別々にルーティングすることができます。
ルーティングトポロジーはかなりシンプルです:USBチップから終端/プルアップ/プルダウン抵抗へ、そしてコネクタへ、すべて差動ペアとしてルーティングします。下の画像は、プルアップおよびプルダウン抵抗を備えた高レベルのルーティングトポロジーを示しています。USB 2.0標準に基づいて、下に示すようにいくつかのキャパシタも必要です。
ルーティングは比較的簡単です:各システム部分間で標準の差動ペアルーティング実践に従えば、信号登録やインピーダンスマッチングに問題は生じません。差動ペアラインから直接接続してGND/VCCへの接続を行うプルダウン抵抗とプルアップ抵抗には、短いルートを保ちます。デバイスのアプリケーション回路をデータシートで確認してください。D+/D- ラインには、デバイスに追加の外部キャパシタがある場合があります。これは、上記で引用したTUSB2077Aデバイスで確認できます。
実際の例を、今後のブログでPCBレイアウトで紹介します。今のところ、これを自分で試して、デザインのルーティングができるかどうか確認してみてください。
このブログと前回のブログ投稿で、2層PCB上でUSBのような高速インターフェースを設定してルーティングする際に従うべきいくつかの重要なルーティングルールを見てきました。ここに最終的なルーティングガイドラインを示します:
ここに示されたルーティングガイドラインが常にEMCを保証するわけではありません。設計の他の側面も考慮する必要があり、それらは2層PCBでは時々不十分に行われます。しかし、これらのガイドラインは、フルスピード仕様で作業している場合にEMIを助けることは確かです。個人的には、ボードが大きい場合や量産に入る場合には、シリアルデジタルバスや高速プロトコルに4層PCBを使用することを好みます。
USB 3.0を使用している場合は、高速エッジレートのために長さのマッチングに厳しい要件があり、上記のフルスピード仕様で行ったように、インターフェースをコネクタに近づけて配置する必要があります。
2層PCBやより高度な多層ボードでUSBのようなインターフェースを配線する必要がある場合は、CircuitMakerのPCBレイアウトおよび配線ツールを使用してください。CircuitMakerの全ユーザーは、アイデアから製造までのデザインを進めるために必要な回路図、PCBレイアウト、製造文書を作成できます。また、ユーザーはAltium 365™プラットフォーム上の個人ワークスペースにアクセスでき、そこでデザインデータをクラウドにアップロードして保存し、安全なプラットフォームでウェブブラウザを通じてプロジェクトを簡単に閲覧できます。
今日からCircuitMakerを使い始めて、新しいCircuitMaker Pro from Altiumの登場をお待ちください。