Was für ein µC ist dafür zuständig? Ist es nur einer, oder sind es zwei unabhängige?
Hi,
Ich benötige bei meinem nächsten Projekt zwei RAMs. Dabei soll eines Bilddaten ausgeben, das andere soll beschrieben werden. Soweit kein Problem.
Aber: Ich muss im Betrieb hin und her wechseln, also:
1.) ramA: Bilddaten, ramB: wird beschrieben
danache:
2.) ramA: wird beschrieben, ramB: Bilddaten
Ich muss also die Adresseingänge und die Datenausgänge hin und her wechseln. Mir fielen dazu nur umständliche Schaltungen mit UNDs und ODERs ein, geht das ganze vielleicht auch wesentlich einfacher?
Gruß, CowZ
Was für ein µC ist dafür zuständig? Ist es nur einer, oder sind es zwei unabhängige?
Steuern soll das ganze ein (einer also ) Mikrocontroller.
Dabei soll die Adresse vom Bildram von einer externen Quelle (Zähler und Clock oder so) kommen. Diese externe Quelle wird aber auch von dem einen Mikrocontroller gesteuert.
edit:
Hier nochmal verdeutlicht, was ich machen möchte: Flussdiagramm
Ich habe zwei RAMs, RAM A und RAM B.
Ich habe quasi zwei Betriebszustände:
Zustand A:
RAM A bekommt seine Adresse direkt vom Mikrocontroller. Dabei werden die "Speicherdaten" in das RAM geschrieben.
RAM B bekommt seine Adresse von einem Zählbaustein. Es liefert seine Daten an einen DAC.
Zustand B:
Wie Zustand A, nur sind die beiden RAMs vertauscht.
Nun ist meine Frage, wie ich die "Switch"s am besten realisiere.
Ich brauche folgende Switches:
Einen der: Zwei Signale (µC, Zähler => RAM A, RAM B) von zwei Quellen auf zwei Ausgänge schaltet.
Und einen der: Ein Signal (RAM -> ADC) von zwei Quellen auf einen Ausgang schaltet.
Und einen der: Ein Signal (µC -> RAM) von einer Quelle von zwei Ausgänge schaltet.
Dabei muss gewechselt werden können und die letzten beiden müssen kombinierbar sein (dürfen also keinen Kurzschluss etc. bilden)
Gruß, CowZ
Hallo
Für so was gibt es Multiplexer.
Z.B 74257, 74604 oder auch 'selbst gemacht' mittels GAL oder CPLD.
Mit freundlichen Grüßen
Benno
Wo man nicht mit Vernunft handelt, da ist auch Eifer nichts nütze; und wer hastig läuft, der tritt fehl.
Ein König richtet das Land auf durchs Recht; wer aber viel Steuern erhebt, richtet es zugrunde
Du bräuchtest eigentlich ein Dualport-RAM, dass du dann in zwei Hälften teilst, die deinen beiden RAMs entsprechen würden. Dann musst du beim "RAM-Wechsel" nur an beiden Ports die höchste Adressleitung umschalten, damit greifen µc und DAC dann jeweils auf die andere Hälfte zu.
Hi,
danke für die Antworten.
@uwegw: Dualport-RAMs scheinen zwar wirklich genau das zu sein, was ich brauche, aber ich finde keines bei Reichelt. Und die Conradsuche spuckt bei den Suchbegriffen "Dualport RAM" ne USB- und ne PS/2-Buchse aus... Habe ich da was übersehen, und es gibt sie doch bei Reichelt/Conrad? (mindestens 2x 16kiB)
@Yossarian:
Der 257 ist schonmal der eine Teil, den ich Suche
Den 604 finde ich nicht. Ich bräuchte ja quasi einen 2 zu 1 Demultiplexer, oder?
Ein selbermachen mit GAL oder CPLD kommt für mich momentan nicht in Frage. Würde das gerne mit Standardbauteilen machen.
Gruß, CowZ
Hallo CowZ!
Die Dualport-RAMs sind manchmal bei Ebay zu kaufen, muss man aber Glück haben oder lange warten. Beim Reichelt und Conrad gibt´s sie nicht.
Die Adressleitungen kann man tatsächlich mit entsprechender Anzahl von Multiplexer z.B. 74XXX157 umschalten.
Das Problem beim Umschalten zwei RAMs gibt es vor allem bei der Dataleitungen, da sie bidirectional sind. Das könnte man machen durch umschalten der "/EN" und "DIR" Eingänge der Bustreiber 74XXX245. Der "/EN" wählt den aktiven Treiber aus und "DIR" legt die Richtung der Daten fest. Um Daten von 2 RAMs in beiden Richtungen umzuschalten werden 4 solche Treiber benötigt.
Wenn die Richtung der Daten von/zu bestimmten dessen Sender/Empfänger sich nicht ändert kann man Bustreiber 74XXX244 anwenden.
MfG
Hi,
Dann schließe ich Dualport-RAMs mal aus, soll auch nachbaubar sein. Schade.
Mal schauen, das mit den ganzen Logikbausteinen wird glaub ich zuviel Hardware.
Bei meinem Projekt geht es darum, ein PAL-Signal auszugeben. Die Pixeldaten müssen dabei mit einer Frequenz von mindestens 2,5MHz ausgegeben werden (128Pixel in 52µs). Die AVRs mit ihren maximal 16 (bzw. 20MHz) kommen da imho nicht in Frage, wenn sie gleichzeitig die Bilddaten empfangen müssen, zumal sie ja auch keine 16kiB-SRAM haben.
Fällt euch eine Lösung für dieses Problem ein? Im Internet finde ich nur Beispiele, wo einfache Bilder erzeugt werden, aber keine Bilder mit 8-bit Tiefe, die von außen empfangen werden.
Ich spiele mittlerweile mit dem Gedanken hierfür einen ARM mit 55MHz einzusetzen.
Gruß, CowZ
Hallo CowZ!
Vielleicht wäre hardwaremässig einfacher anstatt Adressmultiplexer zwei Adresszähler die am Anfang gelöscht werden einzusetzen, da braucht man nur zwei Leitungen (CLR und CLK) zu steuern, was die Hardware vereinfacht und der Prozessor braucht sich mit der ganze Adresse nicht beschäftigen. Deine Daten sind sowieso sequenziell. Hier kann man zwei 74XXX393 pro RAM nehmen, die bis 16-bit Adresse generieren können.
Also ich glaube, dass sich die ganze Hardware des Umschalters in dem Fall mit 8 Bausteinen realisieren lässt.
MfG
Hallo
Schau Dir den CBT3244 mal an.
Mit freundlichen Grüßen
Benno
Wo man nicht mit Vernunft handelt, da ist auch Eifer nichts nütze; und wer hastig läuft, der tritt fehl.
Ein König richtet das Land auf durchs Recht; wer aber viel Steuern erhebt, richtet es zugrunde
Lesezeichen