Welche Probleme könnten beim Verketten von 40 Schieberegistern auftreten?

16

Ich plane, 40 x 74HC595 Schieberegister miteinander zu verketten . Die gesamte Kette der 74HC595s wird durch eine 5 V - Mikrocontroller gesteuert werden, die den Willen erzeugen SDI, CLOCKund LATCHSignale.

Jedes Schieberegister und der Mikrocontroller haben eine eigene Platine, wie in der folgenden Abbildung dargestellt:

Diagramm

Aufgrund mechanischer Zwänge beträgt der Abstand zwischen den einzelnen Schieberegistern etwa 30 cm, so dass die Steuersignale eine Strecke von ungefähr 30 km zurücklegen. 12 m. Außerdem wird das gesamte System in einer sehr lauten Umgebung montiert (in der Nähe von Leuchtstofflampen, Netzkabeln usw.).

Ich befürchte, dass die Steuersignale sehr verrauscht sind und die Schieberegister möglicherweise die falschen Werte ausgeben. Ich dachte an:

  • Verwenden Sie einen Puffer-IC auf jeder Karte, um die Steuersignale zu puffern. Welches würden Sie empfehlen?
  • Verwenden Sie für die Signale abgeschirmte Kabel zwischen den Platinen
  • Verringern Sie die CLOCKFrequenz so weit wie möglich. Ich muss den Inhalt der Register nur einige Male am Tag aktualisieren.

Sind die oben genannten Lösungen eine gute Sache? Was kann ich noch tun, um das (potenzielle) Rauschen in den Signalkabeln auf ein Minimum zu reduzieren?

m.Alin
quelle
3
Dies klingt nach einem fantastischen Kandidaten für eine CPLD anstelle der 40 Schieberegister.
Joel B
2
@JoelB Es mag sich nach einer guten Anpassung für eine CPLD anhören, aber das würde bedeuten, dass 320 (= 40 * 8) Signale von der Hauptplatine (CPLD) überall hin gesendet werden. In meinem Fall wäre es sehr schwierig, sie in dieser Umgebung zu installieren. und es wird sehr schwer zu pflegen sein. Außerdem sind die Signale zwar kürzer, aber dennoch Rauschen ausgesetzt.
m.Alin
1
@Joel - Digikey listet nur einige CPLDs mit 320 I / Os auf und alle sind BGAs. Sie sind auch teurer als 40 '595 und wie m.Alin sagt, haben Sie nicht den Vorteil der verteilten Signale. Aus logischer Sicht ist dies ein perfekter Job für eine CPLD, aus praktischer Sicht weniger.
Stevenvh
2
@ m.Alin - Du hast vollkommen recht. Ich habe gerade 40 Schieberegister gelesen und CPLD eingegeben. Nachdem Sie die Frage gründlich gelesen haben, ist es sinnvoll, wie Sie es tun.
Joel B

Antworten:

14

Verwenden Sie Schmitt-Trigger-Puffer an den Eingängen jeder Karte. Sie bereinigen die Signale, so dass beispielsweise durch Rauschen keine falschen Impulse auf die Uhr gegeben werden. Der 74LVC3G17 ist ein dreifacher nicht invertierender Puffer.

Leiten Sie die gepufferten Signale auch an die nächste Karte weiter. Ansonsten wären alle Eingänge parallel und Sie könnten das Fan-Out des ansteuernden Mikrocontrollers überschreiten (ich denke besonders an die kapazitive Gesamtlast). Die Verkettung von Clock- und Latch-Signalen führt zu einer Ripple-Verzögerung in der gesamten Kette, die Daten jedoch auch, und Sie planen sowieso eine niedrige Geschwindigkeit.

stevenvh
quelle
1
@ m.Alin - Ja, eine Push-Pull-Bühne wäre in Ordnung. Ich würde die Puffer jedoch dringend empfehlen, nicht nur für die Antriebsleistung, sondern insbesondere für die Hysterese des Schmitt-Triggers , mit der falsche Taktimpulse vermieden werden, die durch Rauschen um die Schwelle verursacht werden.
Stevenvh
2
@ Saad - Du meinst der Puffer treibt das Signal zum Kabel? Das Gute ist dann, dass es eine niedrige Impedanz liefert, die das Rauschen reduziert. Aber wenn es auf der Empfängerseite Rauschen geben würde , können Sie auf der Senderseite nichts dagegen tun. Es ist also der Empfänger, der eine gute Störfestigkeit benötigt, die der Schmitt-Trigger bietet.
Stevenvh
1
@ Saad - Ja, aber in diesem Fall scheint es übertrieben: Die Drähte sind nur 30 cm lang, und auf jeder Platine befindet sich bereits ein Repeater / Buffer.
Stevenvh
1
@ stevenvh Ja, ich habe allgemein gesprochen. Ihre Beiträge enthalten eine Fülle von Informationen und ich lerne fast immer etwas Neues! In diesem Fall habe ich Puffer auf einer Controller-Karte, die mit einem Kabel verbunden sind, das mit einer "Tochterkarte" verbunden ist. Ich erwarte nicht viel Lärm, also bleibe ich vielleicht bei meinem Arrangement. Ich habe dort nur Puffer, damit meine Quelle nicht 8 Geräte ansteuert (mit 8pF Eingangskapazität + Trace- und Kabelkapazität).
Saad,
1
@ Saad - Danke für die Blumen! :-) Behalten Sie die Kapazität des Kabels im Auge, besonders wenn es länger als ein Meter ist. Faustregel: 100 pF / m, das ist viel mehr als die Eingangskapazität.
Stevenvh
9

Das Problem, das auftreten kann, besteht darin, dass einige SR-Takte vor den nächsten SR-Takten liegen, so dass die nächsten SR-Takte die falschen Daten eintakten. Eine (Standard-?) Lösung hierfür besteht darin, die Uhr ab der letzten SR zu verdrahten.

Ich würde in Betracht ziehen, für alle 3 Signalleitungen an jeder Platine einen (schmit-trigger?) Puffer hinzuzufügen.

(Bearbeiten) Das Verringern der Taktfrequenz hilft nicht (es sei denn, es war zu Beginn viel zu hoch). Die Probleme, die Sie haben können, treten an den Taktflanken auf, die Sie ohnehin haben werden, egal wie niedrig Sie Ihre Taktfrequenz wählen.

Wouter van Ooijen
quelle
8

Das größte Problem beim Verketten von Schieberegistern besteht darin, sicherzustellen, dass die zeitliche Beziehung zwischen dem von jeder Karte verwendeten Takt zum Empfangen von Daten und der Änderung der Daten von der vorherigen Karte vorhersehbar ist. Die Tatsache, dass sich der Ausgang des 74HC595 auf derselben Flanke wie die Uhr ändert, ist in dieser Hinsicht etwas ärgerlich. Ich würde vorschlagen, dass das Taktsignal gepuffert wird, während es durch jede Karte geht, und dass das Datensignal, das aus dem 74HC595 einer Karte kommt, durch einen Puffer geleitet wird, der es um eine Zeit verzögert, die etwas länger als der Taktpuffer ist.

Alternativ könnten Sie ein Schieberegister wie das 74HC4094 verwenden , dessen Datenausgang sich mit der fallenden Taktflanke ändert, oder Sie könnten ein Flip-Flop zwischen dem Ausgang des letzten 74HC595 auf der Platine und der nächsten Platine einfügen und dieses Flip-Flop haben Zwischenspeichern des Ausgangs an der fallenden Flanke des Takts, der den 74HC595 ansteuert (eventuell den Takt durch zwei Inverter leiten, um ihn zu puffern und das invertierte Taktsignal dem Flip-Flop zuzuführen).

Wenn die Anzahl der 74HC595-Ausgänge, die Sie verwenden, um eins (oder mehr) niedriger ist als die Anzahl der von Ihren Chips gelieferten Ausgänge (z. B. auf einer Karte mit zwei 74HC595-Ausgängen benötigen Sie nur 15 Ausgänge), können Sie die letzten 74HC595-Ausgänge auf einer Karte mit Strom versorgen ein Takt, der von den anderen invertiert ist, aber dies würde Sie die Verwendung eines 74HC595-Ausgangs für jedes Mal kosten, wenn das Signal zwischen einem nicht invertierten Takt 74HC595 und einem invertierten Takt 74HC595 durchläuft.

Superkatze
quelle