Kaskaden-Schieberegister, die von einem Single-Cycle-Mikrocontroller angesteuert werden

Ich versuche, eine Einheit herzustellen, in der 4 Ziffern in kurzer Zeit von einem Einzelzyklus-Mikrocontroller aktualisiert werden können (vorzugsweise alle Ziffern werden innerhalb von 5 uS aktualisiert).

Meine Schaltung ist wie folgt aufgebaut (ich habe der Einfachheit halber 7-Segment-Anzeigen und Widerstände ausgeschlossen). Die Schieberegister sind 74HC595 und der Multivibrator links ist der CD4538, aber ich denke, ich muss das auf 74HC4538 aktualisieren (bestätigt das jemand?)

Ich habe einen Multivibrator, weil die Schieberegister den Registertakt umschalten müssen, um die neuen Daten anzuzeigen, die hineingeschoben werden. Indem ich also einen hinzufügte, eliminierte ich die Notwendigkeit eines dritten Drahtes vom Mikro, der nur den Wert aktualisiert.

Der Widerstand beträgt 10K und der Kondensator 1nF.

Wenn ich ein langsameres Mikro wie das AT89S52 verwende, das GPIO-Pins bestenfalls 1/2 Mikrosekunde aktualisieren kann (mit 22-MHz-Quarz), dann hat diese Schaltung kein Problem. Aber wenn ich anfange, den Hochgeschwindigkeits-Single-Cycle-Mikrocontroller zu verwenden, könnten GPIO-Pins so schnell wie 20 nS aktualisiert werden.

Was kann ich tun, um diese Schaltung zu verbessern, ohne Teile neu anzuordnen? Soll ich einfach den Multivibrator aufrüsten und den Kondensatorwert senken?

Schieberegister-Timing

Können Sie nicht einfach ein paar NOPs zwischen den Schreibvorgängen an den I/O-Pins hinzufügen?
Müssen Sie die Ausgänge alle 5 us aktualisieren oder einfach alle innerhalb von 5 us für eine viel langsamere Aktualisierungsrate aktualisieren?
Vergessen Sie nicht 0,1 uF-Kappen auf jedem VCC-Pin des Schieberegisters auf Gnd.
Ich habe 45 Schieberegister so verkettet und SPI-Übertragungen von einem Atmel Atmega1284P verwendet, der mit 16 MHz getaktet ist. Der SPI-Takt wurde auf 8 MHz eingestellt, ich konnte sie alle 50 uS aktualisieren (jeweils 17 Takte, also 1,06 uS für jedes gesendete Byte). AT89S52 unterstützt auch SPI-Übertragungen. 4 hätte dann knapp über 4uS bei 16 MHz gedauert. Mit einem 22-MHz-Takt und einem SPI-Takt von 11 MHz sollte 4 eine Berührung über 3 uS erreichen.

Antworten (1)

Beachten Sie, dass der auf diese Weise verwendete 595 ein Problem hat: Der Daisy-Chain-Ausgang ändert sich mit derselben Taktflanke wie der Eingang der nächsten Chip-Samples. Ein Chip, der wirklich für diese Art von Verwendung ausgelegt ist (IIRC gibt es in der CD-Serie), hat einen verzögerten Daisy-Chain-Ausgang.

Sie können dieses Problem mindern, indem Sie:

  • Verzögern der Daisy-Chain-Ausgangsdaten um ein kleines bisschen (RC)
  • Wenden Sie die Uhr umgekehrt an: Verdrahten Sie sie zuerst mit dem letzten Chip in der Kette

Ich verstehe nicht, warum Sie diesen 4538 verwenden. Wenn Sie nur immer die letzten (sich verschiebenden!) Daten an den Ausgängen haben möchten, können Sie SCK und SLK einfach miteinander verbinden. Abhängig von Ihrem Aktualisierungs-/Leerlaufverhältnis treten Geisterbilder auf.

Ich wollte Flimmern minimieren. Jedes Mal, wenn RCK umgeschaltet wird, wird die Anzeige aktualisiert. Wenn ich die Uhren zusammenbinde, wird die Anzeige für jedes verschobene Bit aktualisiert, was mehr Flimmern bedeutet. Ich habe also ein Timeout erstellt, damit die Anzeige einmal aktualisiert wird, wenn keine Daten mehr verschoben werden.
OK. scheint vernünftig.