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
, CLOCK
und LATCH
Signale.
Jedes Schieberegister und der Mikrocontroller haben eine eigene Platine, wie in der folgenden Abbildung dargestellt:
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
CLOCK
Frequenz 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?
quelle
Antworten:
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.
quelle
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.
quelle
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.
quelle