PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wie Datenbus eines SRAMS multiplexen?



p_mork
23.07.2007, 20:37
Hallo,

ich habe 2 Adress- und 2 Datenbusse und 2 SRAMs. Nun möchte ich eine Schaltung aufbauen, womit man die 2 Adress- und Datenbusse an die SRAMs anschließen und die beiden RAMs tauschen kann. Also wenn z.b. ein Pin low ist, dann soll der Adress- und Datenbus Nr 1 an SRAM Nr 1 und Adr.- und D-Bus Nr 2 an das SRAM Nr 2 angeschlossen sein, wenn der Pin high ist, dann Adr+D-Bus Nr 1 an SRAM Nr 2 und Adr+D-Bus Nr 2 an SRAM Nr 1. Das mit dem Adressbus ist kein Problem, da dieser ja nur in eine Richtung geht, der Datenbus ist aber bi-direktional. Alle gewöhnlichen Multiplexer multiplexen auch nur in eine Richtung. Wie kann man es trotzdem realisieren?

MfG Mark

shaun
23.07.2007, 21:54
Aufwändig - Du brauchst halt Bustreiber (74HC245 zB) und musst die Richtung steuern. Aber warum dieser Aufwand? Wahrscheinlich sollen verschiedene ICs auf ein und dasselbe RAM zugreifen - in dem Fall nimmt man eigentlich einen gemeinsamen A- und D-Bus und steuert die Zugriffe über das Timing. Nur bei sehr zeitkritischen Geschichten verwendet man Dual-Port-RAMs, die sich von "beiden Seiten" ansprechen lassen.

vklaffehn
24.07.2007, 07:03
Moin!
Falls Du die beiden SRAMs nicht exakt gleichzeitig ansprechen willst (was ja eh schwiereig ist wegen der sequentiellen Programmabarbeitung), könntest Du einfach beide Busse parallel an beide SRAMs führen und evtl. per Chip Select entsprechend die Bausteine auswählen?
Wofür genau brauchst Du das denn?

MfG
Volker

p_mork
24.07.2007, 08:31
Moinsen,

danke für die Antworten.

Leider muss ich die beiden SRAMs mit beiden Bussen parallel ansprechen können.



Wahrscheinlich sollen verschiedene ICs auf ein und dasselbe RAM zugreifen - in dem Fall nimmt man eigentlich einen gemeinsamen A- und D-Bus und steuert die Zugriffe über das Timing. Nur bei sehr zeitkritischen Geschichten verwendet man Dual-Port-RAMs, die sich von "beiden Seiten" ansprechen lassen.


Das geht leider nicht, denn genau damit ich kein Timing beachten muss will ich das ganze machen. Dual-Port-RAMs wären natürlich ideal, aber ich kenn keine, die sich wie normale SRAMs ansprechen lassen, ausserdem sind sie viel zu teuer.



Wofür genau brauchst Du das denn?

Ich habe die Kamera C3088 von roboter-teile.de. Diese liefert die Pixeldaten mit 8,865 MHz, was für meinen µC zu schnell ist und ich deshalb den Pixeltakt runtersetzen muss. Dann wird die Frame-Rate aber zu gering, etwa 8-10 Bilder/s, was mir aber zu langsam ist. Ausserdem verbraucht der Prozessor viel Rechenzeit, um die Pixel abzuholen und in sein RAM zu schreiben, welches sowieso sehr klein ist. In dieser Zeit kann er z.b. keine weiteren Interrupts verarbeiten. Nun habe ich mir überlegt, folgendes zu machen: die Cam schreibt das Bild automatisch in ein externes SRAM, was auch kein Problem ist. Danach wird dieses SRAM an den Controller geschaltet und an die Cam ein anderes SRAM. Der Controller kann jetzt ungestört die Daten aus dem RAM auslesen, ohne irgendwelches Timing beachten zu müssen. Die Cam schreibt inzwischen parallel in das andere SRAM. Nachdem das Bild verarbetet wurde, wartet der µC, bis das zweite Bild fertig geschrieben wurde und tauscht wieder die beiden RAMs usw. Damit sollen auch deutlich größere Bilder als momentan möglich gemacht werden, weil das externe SRAM beliebig groß sein kann und man deshalb in der Lage ist die ganze Auflösung der Cam zu nutzen.

MfG Mark