複数のボードを介した30MHzクロックのルーティング


9

TLC5945 LEDドライバを使用しています。マイクロコントローラー(私はLPC1343を使用しています)は、その内部PWMタイマー/カウンターにクロックを提供する必要があります。最大許容クロック速度は30MHzと指定されています。

TLC5945をデイジーチェーン接続したボードをいくつか用意します。ボードは、ボード間コネクターまたは短いリボンケーブルを介して接続されます。1つのボードの幅は10cmです。最大4つを直列に接続します。

たぶん、私はフル30MHzを使用しないでしょうが、それでも正しく実行したいのですが、クロック信号をルーティング/調整してそのままにするにはどうすればよいですか?

すべてのボードの出力に74HC245のようなバッファを追加すると、すべてのバッファの後に10nsの遅延が発生します。それは望ましくありません。専用の「ゼロ遅延」クロックバッファーを使用する必要がありますか?どのような終了方法を採用する必要がありますか?


2
30MHzでの単一サイクルは約33nsです。ボードごとのシングルサイクルの1/3のずれは大きな問題ですか?
Toby Lawrence

1
すばらしい質問と回答です。以前の答えを繰り返すことなく、すべての答えがソリューションに追加されます!
Vorac

回答:


20

30 MHzで十分ですが、信号を伝送ラインの問題として扱う必要があります。特にコネクタを含め、デザイン全体のボードレイアウトに注意を払う必要があります。30 MHz信号とともに追加のグランドピンを用意するか、特別なコネクタを使用する必要があります。

ボードのレイアウト、層の数に関する情報が必要です。特定の特性インピーダンスをターゲットにできるように、または誘電率などのパラメーターを取得するために、目的のボードメーカーと調整する必要がある場合があります。

これらの問題の多くを認識しているように聞こえますが、注意深く対処することをお勧めします。注意しないと、機能するがRFを多く放出し、 EMIテスト。

信号をルーティングするためのガイドライン:

  • インピーダンスとトレース幅を計算します。
  • 最初にクロックをルーティングします。
  • 可能であれば、ビアを介して信号をルーティングしないでください。必要な場合は、バイパスコンデンサをビアの近くに配置します。
  • 可能/該当する場合は、信号を内部層にルーティングします(これにより、外部のグランドプレーンと電源プレーンが一種のファラデー箱として機能できるようになります)。この場合、信号は、チップにアクセスするために必要なビアを除いて、1つのレイヤーでルーティングする必要があります。
  • 信号は、グラウンドプレーン(厳密に言えば、リファレンスプレーン)なしではどこにも行きません。
  • 信号が電源プレーン間の境界を超えることはありません。
  • コネクタを通過するときは、アースで囲みます。
  • デイジーチェーンでは、可能であればスタブを使用せずにクロック入力に直接配線します。 アルテラのスタブなしのデイジーチェーンの図PDF
  • 垂線で他の信号を交差させます。
  • 他の信号が一緒に移動する必要がある場合は、それらにクリアランスを与えます。トレースの幅の4倍。
  • マイクロストリップ/ストリップラインの特性インピーダンスに等しい抵抗を使用して接地への並列終端を使用するか、信号の宛先が1つだけの場合はソース終端を使用します。議論については、この関連質問を参照してください。

もちろん、実際の設計では、これらのガイドラインのいずれかを破る必要があるかもしれません。

これらのルールのほとんどは、高周波ではリターン電流が信号の近くを移動しようとするため、リターン電流のパスを提供する必要があるという観察に基づいています。リターン電流が物理的に分離されている場合は、無給電アンテナを作成しています。リターン電流の経路を提供するグラウンド(または電源!)プレーンは、リファレンスと呼ばれます。参照面から離れないでください。ビアを通過する必要がある場合、参照面が変化します。バイパスコンデンサは、新旧の基準面の間に設定されます。

コネクタはPCBとは異なるインピーダンスを持っている可能性が高く、反射を引き起こして信号を劣化させるため、問題が発生します。1つのオプションは、ボードのインピーダンスと一致するインピーダンス制御コネクターを使用することです。

ファームウェア側では、エッジレートを制御するためにドライブ強度を試す必要がある場合があります。多くの場合、最大駆動力は間違った答えです。ICベンダーは、回路をシミュレーションしてシグナルインテグリティを推定できるIBISモデルを提供できる必要があります。厳密に言えば、信号の完全性やEMCの問題を引き起こすのはクロック周波数ではなく、高速エッジが周波数領域で広帯域トランジェントとして現れるため、エッジレート(高と低の間の遷移時間)です。ドライブ強度やスルーレートを下げると、エッジレートが下がり、高調波放射が減りますが、(おそらく)クロックジッタが増えます。データシートをチェックして、クロックのレシーバーの許容エッジレートを確認してください。

私の考えでは、宿題をやるなら、おそらく信号中継器は必要ないでしょう。たとえば、約100 MHzのケーブルで分散された巨大な高速パラレルバスであるSCSIを考えます。可能であれば、HyperLynxなどのプログラムに投資してレイアウトをシミュレートすることを検討してください。

アルテラは、高速配線の問題に関する優れたガイドを提供しています。


素晴らしい洞察をありがとう。あなたの答えから、私はこれをDIYエッチングボードで引き離す方法はないと思いますか?
miceuz

@miceuz:まあ、それが趣味のプロジェクトなら、あなたはEMCについてそれほど心配していません。コンセンサスが浮上しているのは、これは上級エンジニアが正しく理解するのが難しいことであり、DIYを実行しようとしても簡単にはなりません。一方、この場合はうまくいかない場合は、クロック周波数を下げることができます。デイジーチェーンの長さを短くするために、別のレイアウトを探します。
jbarlow

できればこれを2回賛成します。
Renan

10

jbarlowとDavidが提案するすべてのことをするのにあなたを傷つけるつもりはありませんが、あなたのために少し簡単にする(またはおそらくもっと難しくする)ようにしましょう。物事の、しかし私は約束するつもりはありません)。

古典的な経験則では、対象の最高周波数信号の波長の1/10を超える長さの回路がない場合、回路を集中回路と見なすことができます。集中回路の場合は、トラックを個別の要素間の単なる接続と見なすことができます。集中回路でない場合は、分散回路の影響を心配する必要があり、トレースを伝送線路と見なす必要があります。

10 mの波長に対応する30 MHzのクロック周波数について話しています。FR4を伝搬する場合、この波長は約4.7 mに減少します。そして回路長は40cm。つまり、クロック信号の基本については、古い経験則の端にいます。

問題:クロック周波数を気にする必要はありませんが、必要な立ち上がり時間と立ち下がり時間を与えるために、その周波数の高調波をいくつ送信する必要があるかを考えます。送信するエッジを故意に遅くすると、1次と3次の高調波だけで問題が解決する可能性があります(Davidは、必ずしも最大のドライブ強度を使用しているわけではないと述べたときに、これについて言及しました)。

これにより、対象となる最大周波数は90 MHz、対応する波長(FR4の場合)は約1.6 mになります。したがって、臨界距離は16 cmです。つまり、全体として、密結合のリターンパスを提供したり、線路を伝送線路として認識したり、適切なインピーダンスで終端したりする必要があります。

しかし、おそらくインピーダンスを制御するために追加料金を支払う必要はありません。ベンダーから入手可能な最小幅(たとえば、8ミルまたは10ミル)を超えるトレースを使用して設計する場合、通常の許容誤差で十分なパフォーマンスが得られる可能性があります。

途中でビアを通過したり、グランドプレーンの短いギャップを越えたりする必要がある場合、またはバイパスコンデンサを負荷部分のすぐ隣に配置できない場合は、あまり汗を流さないでください。数cmのスタブが各ボードのロードチップに到達するように、コネクタからコネクタに直接トラックを走らせたい場合は、問題ありません。パスの制御されていない部分(またはグランドプレーンのスロット)の長さが数cm未満であれば、1日が台無しになることはありません。たとえ10cmであっても、それでうまくいく可能性が高いですが、運を押さないでください。

たとえば、これは、ボード間を接続するときに、高コストのインピーダンス制御コネクターが不要であることを意味します。数センチのリボンケーブルでも大丈夫です。リボン内のワイヤーの接地信号接地または接地信号信号接地パターンは良いアイデアですが、インピーダンスが一致したツイストペアケーブルや同軸ケーブルについて心配する必要はありません。

もう1つは、各ボードでバッファを使用することにした場合、それにより、各ボードの回路(長さ10 cm)を集中回路として扱うことができます。Davidが説明したように、バッファースキューを管理する必要があり、各バッファーの立ち上がり時間と立ち下がり時間を制限する必要がありますが、機能を低下させることなく、各ボードのレイアウトで多くの柔軟性を得ることができます。とはいえ、リターンパスを信号トレースに近づけるようにすればするほど、EMCテストに関して厄介な驚きが生じる可能性は低くなります。


6

@jbarlowの答えはかなり適切だと思います。私はそれにいくつか追加したいのですが、彼の言ったことを繰り返し言うつもりはありません。

@jbarlowをオンにすることに同意しない唯一のことは、リピーターの使用、またはすべての信号のバッファリングです。彼が言うことは正しい、「あなたが宿題をするなら...」。しかし、それが問題です。宿題をやっています。あなたはそれを行うことができますが、比較的高価なケーブルとコネクタが必要になります-そして、それは「本当に難しい」だけです。

各PCBのクロックをバッファするために10 nsの遅延を追加することが実際に問題であるとは思われません。BLANKやXLATのような他の信号に関する多くの詳細を省略しているので、はっきりと言うのは難しいです。しかし、それが問題であっても、いつでもすべての信号をバッファリングできます。74xx245のすべてのゲートは同じ遅延(または少なくとも同様)になる傾向があるため、LEDドライバーでの全体的なタイミングは良好なままです。

(注:データシートを確認してください。適切なチップには、2つの異なる伝播遅延数がリストされています。1つは個々のゲート用で、もう1つは同じチップ内のゲート間の遅延の違いまたはスキューを示しています。私の言葉は使わないでください。それでも適切なタイミング分析を行う必要があります。)

PCB間の信号の終端とインピーダンスを取得することは、この設計を機能させるために重要です。多芯ケーブルのインピーダンスの制御は常に困難であり、単一の信号を複数のPCBとケーブルに通すことは問題を引き起こしているだけです。信号の長さに沿った多くのポイントでインピーダンスが変化し、シグナルインテグリティの問題が発生します。PCB間のすべての信号をバッファリングすると、これを管理するのに役立ちます。少なくとも各信号のトレース長とインピーダンスの変化は最小限に抑えられます。

ゼロ遅延バッファの使用は必須ではなく、実際には事態を悪化させる可能性があります(そしてより高価になります)。ゼロ遅延バッファーは、実際にはフェーズロックループ(PLL)であり、完全に機能するには注意深い設計が必要です。ほとんどの場合、これは大した問題ではありませんが、時計が完全でない場合は確かに問題になる可能性があります。このアプリケーションでは、これらを回避することをお勧めします。さらに、ゼロ遅延バッファーは、継続的に実行されるクロック以外のバッファーには適していません。そのため、他の信号のバッファーには役立ちません。


優れた点。バッファリングされた信号のアプローチはおそらくより安全で成功する可能性が高いことに同意します。
jbarlow

信号をバッファリングして終端するにはどうすればよいですか?それはMCU->バッファ->シリーズターム->ケーブル->バッファ-> TLC5945->バッファ->シリーズターム->ケーブル...またはMCU->バッファ->シリーズターム->ケーブル-> TLC5945->バッファか->シリーズ用語->ケーブル...つまり、ケーブルの両端からの信号をバッファリングする必要がありますか、それともコネクタとケーブルと次に来るボードの両方で機能するようにバッファと終端でリレーできますか?
miceuz

@miceuz理想的には、各ボードで2回バッファリングします。信号が1つのコネクタでボードに入ると1回。信号がもう一方のコネクタでボードを離れるとき。実際には、おそらく1回で十分です。したがって、それはMCU-> Cable-> LED-> term-> buf-> cable-> led-> term-> buf-> cable-> etcになります。source-series-terminationは、信号に単一の負荷がある場合にのみ機能し、そうではないことに注意してください。LEDドライバーチップとバッファーの両方があります。遠端で接地に直列に接続された抵抗とキャップを備えたAC終端を見てください。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.