Ich plane, 40 x 74HC595- Schieberegister miteinander zu verketten. Die gesamte Kette von 74HC595 wird von einem 5-V-Mikrocontroller gesteuert, der die SDI
, CLOCK
& LATCH
-Signale erzeugt.
Jedes Schieberegister und der Mikrocontroller verfügen über eine eigene Leiterplatte, wie im folgenden Diagramm dargestellt:
Aufgrund mechanischer Einschränkungen beträgt der Abstand zwischen den einzelnen Schieberegistern etwa 30 cm (12 Zoll), sodass die Steuersignale über eine Entfernung von etwa 12 m (40 Fuß). Außerdem wird das gesamte System in einer sehr lauten Umgebung montiert (in der Nähe von Leuchtstofflampen, Stromkabeln usw.)
Meine Sorge ist, dass die Steuersignale sehr laut sind und die Schieberegister möglicherweise die falschen Dinge ausgeben. Ich dachte an:
CLOCK
Frequenz so weit wie möglich. Ich muss den Inhalt der Register nur ein paar Mal am Tag aktualisieren.Sind die oben genannten Lösungen sinnvoll? Was kann ich noch tun, um das (potenzielle) Rauschen in den Signalleitungen auf ein Minimum zu reduzieren?
Verwenden Sie Schmitt-Trigger-Puffer an den Eingängen jeder Karte. Sie werden die Signale bereinigen, damit zum Beispiel kein Rauschen falsche Impulse auf der Uhr gibt. Der 74LVC3G17 ist ein dreifacher nicht invertierender Puffer.
Leiten Sie auch die gepufferten Signale an die nächste Platine weiter. Andernfalls wären alle Eingänge parallel und Sie könnten den Fan-Out des ansteuernden Mikrocontrollers überschreiten (ich denke insbesondere an die gesamte kapazitive Last). Die Daisy-Chain von Clock- und Latch-Signalen führt zu einer Welligkeitsverzögerung in der gesamten Kette, aber die Daten werden dies auch tun, und Sie planen sowieso eine niedrige Geschwindigkeit.
Das Problem, das auftreten kann, besteht darin, dass einige SR vor dem nächsten SR takten, so dass der nächste SR die falschen Daten eintakten wird. Eine (Standard-?) Lösung dafür ist, die Uhr ab dem letzten SR zu verdrahten.
Ich würde in Betracht ziehen, auf jeder Karte einen (Schmit-Trigger?) Puffer für alle 3 Signalleitungen hinzuzufügen.
(Bearbeiten) Das Verringern der Taktfrequenz hilft nicht (es sei denn, sie war von Anfang an viel zu hoch). Die Probleme, die Sie haben können, treten an den Taktflanken auf, die Sie sowieso haben werden, egal wie niedrig Sie Ihre Taktfrequenz wählen.
Das größte Problem bei der Verkettung von Schieberegistern besteht darin, sicherzustellen, dass die zeitliche Beziehung zwischen dem Takt, der von jeder Platine zum Empfangen von Daten verwendet wird, und der Änderung der Daten von der vorherigen Platine vorhersagbar ist. Etwas ärgerlich ist in diesem Zusammenhang die Tatsache, dass sich der Ausgang des 74HC595 mit der gleichen Flanke wie der Takt ändert. Ich würde vorschlagen, dass das Taktsignal gepuffert werden sollte, wenn es durch jede Platine geht, und dass das Datensignal, das aus dem 74HC595 einer Platine kommt, durch einen Puffer geleitet werden sollte, der es um eine etwas längere Zeit als der Taktpuffer verzögert.
Alternativ könnten Sie ein Schieberegister wie das 74HC4094 verwenden , dessen Datenausgang sich an der fallenden Taktflanke ändert, oder Sie könnten ein Flipflop zwischen dem Ausgang des letzten 74HC595 auf der Platine und der nächsten Platine hinzufügen und dieses Flipflop haben Verriegeln Sie seinen Ausgang auf der fallenden Flanke des Takts, der die 74HC595 ansteuert (möglicherweise den Takt durch zwei Inverter leiten, um ihn zu puffern und das invertierte Taktsignal an das Flip-Flop zu liefern).
Wenn die Anzahl der 74HC595-Ausgänge, die Sie verwenden, um einen (oder mehr) kleiner ist als die von Ihren Chips gelieferte Anzahl (z. B. auf einer Platine mit zwei 74HC595 benötigen Sie tatsächlich nur 15 Ausgänge), können Sie den letzten 74HC595 auf einer Platine damit versorgen eine von den anderen invertierte Uhr, aber das würde Sie die Verwendung eines 74HC595-Ausgangs für jedes Mal kosten, wenn das Signal zwischen einer nicht invertierten Uhr 74HC595 und einer invertierten Uhr 74HC595 durchläuft.
Joel B
m.Alin
stevenvh
Joel B