Forum: Mikrocontroller und Digitale Elektronik Multiplexer Ausschläge beim Schalten


von Raphael R. (raphael_r)


Lesenswert?

Hallo,

erst mal sry für den Titel aber etwas Besseres fällt mir einfach nicht 
ein.
Zu Beginn: Ich bin in der Thematik kein Vollprofi. Ich habe im Studium 
damit ein wenig Kontakt gehabt und hin und wieder bastel ich halt ein 
wenig. Habt also bitte Nachsicht mit mir.

Ich bin vor einer Weile auch die Videos von Ben Eater gestoßen, in denen 
er eine ganz einfach 8-Bit CPU auf Steckboards baut (www.eater.net). In 
der Theorie weiß ich, wie eine CPU arbeitet, welche Architekturen es 
gibt usw... Aber so was mal vor sich zusammen zu stecken fand ich dann 
schon sehr faszinierend. Da ich die meisten Teile auch schon hatte, baue 
ich seine Videos also gerade nach.

Ich bin gerade beim RAM und hier kann man per Schalter auswählen, ob er 
vom Bus aus beschrieben werden soll, oder via DIP Switch von Hand: 
https://www.youtube.com/watch?v=Vw3uDOUJRGw&t=6s
Das Umschalten wird über Multiplexer (74ls157) geregelt. Genau bei 
diesen Multiplexern liegt nun das Problem beim Umschalten zwischen den 
beiden Inputs, die während dessen High sind, kommt es manchmal aber 
nicht immer zu einem kurzen Low, wodurch mein RAM mit Müll beschrieben 
wird.

Bei meiner Suche bin ich auf das Video hier gestoßen, das genau das 
Problem mit Minimalbeispiel zeigt: 
https://www.youtube.com/watch?v=9-_mTj23wJ8

Ich hatte auch überlegt, ob die IC's einfach schlecht sind, und habe von 
einem anderen Hersteller 4zu1 Multiplexer ausprobiert, die zeigen aber 
genau das gleiche Verhalten.

Ein Wegdämpfen der Spikes via RC ist leider auch keine Lösung, da der 
Befehl zum Schreiben später von der Clock kommt.

Ich denke, die Lösung wird relativ einfach sein, aber mein beschränktes 
Wissen setzt mir da leider grenzen. Es wäre Super, wenn mir hier jemand 
helfen könnte.

Vielen Dank und Gruß,
Raphael

von Baku M. (baku)


Lesenswert?

Schaltplan?
(Erster!)

von Dergute W. (derguteweka)


Lesenswert?


von Peter D. (peda)


Lesenswert?

Z.B. mit einem Latch (74HC573) kann man die Daten und Adressen wärend 
des Schreibimpulses stabil halten.
2 Latches kann man auch über /OE multiplexen.

von Harlekin (Gast)


Lesenswert?

Raphael R. schrieb:
> Das Umschalten wird über Multiplexer (74ls157) geregelt. Genau bei
> diesen Multiplexern liegt nun das Problem beim Umschalten zwischen den
> beiden Inputs, die während dessen High sind, kommt es manchmal aber
> nicht immer zu einem kurzen Low, wodurch mein RAM mit Müll beschrieben
> wird.

Das Write-Enable des RAM darf erst gesetzt werden, wenn die Adresse und 
die Daten konstant sind. Mit dem Umschalten der Adressquelle, werden die 
Adressen geändert. Also sind diese nicht konstant. Somit muss 
Write-Enable disabled sein. ==> Problem gelöst.

von Raphael R. (raphael_r)


Lesenswert?

Vielen Dank für die Antworten!

Ich bin schon immer schlecht im erklären gewesen. Ich möchte nicht 
schreiben!
Der RAM wird beschrieben, wenn Write-Enable auf low gesetzt wird. Die 
beiden Schreibsignale, zwischen denen ich hin- und herschalte, sind zum 
Zeitpunkt des hin- und herschaltens allerdings high und trotzdem wurde 
geschrieben, weil der Multiplexer beim Schalten kurz low ausgegeben hat. 
Allerdings eben auch nur manchmal.
Ich habe mittlerweile herausgefunden, dass großzügiges Verteilen von 
Pullup Widerständen das Problem behebt. Laut den Tutorials sollten die 
nicht notwendig sein, da in den IC's intern bereits welche vorhanden 
sind. Allerdings habe ich mittlerweile einige Beschreibungen gefunden, 
die genau das gleiche sagen: https://www.youtube.com/watch?v=n71zgHrWBUk

Für das Video zu dem Bypass Capacitor möchte ich mich besonders 
bedanken! Ich hatte zwar hier und da bereits welche verteilt. Aber immer 
nur einen. Jetzt habe ich auch so was immer im Hinterkopf!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.