40個のシフトレジスタをチェーンすると、どのような問題が発生する可能性がありますか?


16

40 x 74HC595シフトレジスタをチェーン化することを計画しています。74HC595のチェーン全体は、5 Vマイクロコントローラーによって制御され、これによりSDICLOCKおよびLATCH信号が生成されます。

以下の図に示すように、各シフトレジスタとマイクロコントローラには独自のPCBがあります。

図

機械的な制約のため、各シフトレジスタ間の距離は約30 cm(12インチ)になるため、制御信号は約の距離に沿って移動します。12 m(40フィート)。それに加えて、システム全体が非常にノイズの多い環境(蛍光灯、電源ケーブルなど)に取り付けられます。

私の懸念は、制御信号が非常にうるさくなり、シフトレジスタが間違ったものを出力する可能性があることです。私は考えていました:

  • 各ボードのバッファーICを使用して、制御信号をバッファーします。どちらをお勧めしますか?
  • 信号用のボード間にシールドケーブルを使用する
  • CLOCK可能な限り周波数を下げる。レジスタの内容を1日に数回更新するだけです。

上記の解決策は良いことですか?信号線の(潜在的な)ノイズを最小限に抑えるには、他に何ができますか?


3
これは、40個のシフトレジスタに代わるCPLDの素晴らしい候補のように聞こえます。
ジョエルB

2
@JoelB CPLDにぴったりのように聞こえるかもしれませんが、それはメインボード(CPLD)からあらゆる場所に320(= 40 * 8)の信号を送ることを意味します。私の場合、その環境にインストールするのは非常に難しいでしょう。保守が非常に困難になります。さらに、信号は短くなりますが、ノイズにさらされます。
m。アリン

1
@Joel-Digikeyは、320個のI / Oを備えた少数のCPLDのみをリストし、それらはすべてBGAです。40'595よりも高価であり、m.Alinのように、分散信号の利点がないと言います。論理的な観点からは、これはCPLDにとって完璧な仕事ですが、実際的ではありません。
-stevenvh

2
@ m.Alin-あなたはまったく正しい。40個のシフトレジスタを読み取り、CPLDと入力しました。質問を十分に読んだ後、あなたはそれをどのようにやっているかが理にかなっています。
ジョエルB

回答:


14

各ボードの入力でシュミットトリガーバッファーを使用します。たとえば、ノイズがクロックに誤ったパルスを与えないように、信号をクリーンアップします。74LVC3G17はトリプル非反転バッファです。

また、バッファされた信号を次のボードに渡します。そうしないと、すべての入力が並列になり、駆動しているマイクロコントローラーのファンアウトを超える可能性があります(特に総容量負荷について考えています)。クロックとラッチ信号のデイジーチェーンは、チェーン全体にリップル遅延を与えますが、データも同様に遅延し、とにかく低速に移行する予定です。


1
@ m.Alin-はい、プッシュ/プルステージは問題ありません。しかし、駆動能力だけでなく、特にシュミットトリガーのヒステリシスのために、バッファーを強くお勧めします。
-stevenvh

2
@Saad-バッファが信号をケーブルに送るということですか?良いことは、それがノイズを減らす低インピーダンスを提供することです。そこならなり、受信側で雑音であるあなたは、送信側のそれについて何もすることはできません。したがって、良好なノイズ耐性を必要とするのは受信機であり、シュミットトリガーが提供します。
-stevenvh

1
@Saad-はい。ただし、この場合はやり過ぎのようです。ワイヤの長さはわずか30 cmで、各ボードにリピーター/バッファーが既にあります。
-stevenvh

1
@stevenvhはい、私は一般的に話していました。あなたの投稿には豊富な情報があり、私はほとんど常に新しいことを学びます!この場合、「ドーターボード」に接続するケーブルに接続するコントローラーボードにバッファーがあります。私はあまりノイズを期待していないので、自分のアレンジにとどまるかもしれません。私のソースが8つのデバイス(8pFの入力容量+トレースとケーブルの容量)を駆動しないように、そこにバッファしかありません。
サアド

1
@Saad-花をありがとう!:-)ケーブルの静電容量に注意してください。特に1メートル以上の場合は注意してください。経験則:100 pF / m、これは入力容量をはるかに超えています。
-stevenvh

9

発生する可能性のある問題は、次のSRが次のSRクロックの前にクロックするため、次のSRが間違ったデータをクロック入力することです。このための(標準?)ソリューションは、最後のSRからクロックを配線することです。

3つの信号線すべてに対して、各ボードに(シュミットトリガー?)バッファーを追加することを検討します。

(編集)クロック周波数を下げても効果はありません(最初から高すぎない限り)。クロック周波数をどの程度低く選択しても、クロックエッジで発生する可能性のある問題は、いずれにしても発生します。


8

シフトレジスタをチェーン化する際の最大の問題は、各ボードがデータの受信に使用するクロックと前のボードからのデータの変更との間のタイミング関係を予測できるようにすることです。74HC595の出力がクロックと同じエッジで変化するという事実は、その点で少し面倒です。クロック信号は各ボードを通過するときにバッファする必要があり、1つのボードの74HC595から送信されるデータ信号は、クロックバッファよりもわずかに長い時間だけ遅延するバッファを通過させる必要があります。

または、立ち下がりクロックエッジでデータ出力が変化する74HC4094のようなシフトレジスタを使用するか、ボードの最後の74HC595の出力と次のボードの出力の間にフリップフロップを追加して、そのフリップフロップを使用することができます。 74HC595を駆動するクロックの立ち下がりエッジで出力をラッチします(おそらく、2つのインバーターにクロックを渡してバッファーし、反転クロック信号をフリップフロップに供給します)。

使用する74HC595出力の数が、チップで提供される数よりも1つ(またはそれ以上)少ない場合(たとえば、2つの74HC595を搭載したボードで実際に15の出力しか必要ない場合)、ボード上の最後の74HC595他のクロックから反転したクロックですが、信号が非反転クロック74HC595と反転クロック74HC595の間を通過するたびに1つの74HC595出力を使用するとコストがかかります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.