Hallo, ich bin wieder einmal auf der Suche nach Bauteilen. Und zwar such ich einen SRAM der so ähnlich angesteuert wird wie ein DRAM es soll aber ein SRAM sein, weil ich mich nicht um Refresh kümmern möchte. Das soll also so aussehen: - 8 Datenleitungen - 2 Latchselectleitungen - WR,RD,CS oder R/W (egal wie genau) Mit den Latchselectleitungen soll man auswählen können ob man über die 8 Datenleitungen das obere, mittlere, untere Adressbyte setzen will oder Daten aus der Speicherzelle lesen bzw hineinschreiben will. Die Adresse soll außerdem noch Autoincrement besitzen. D.h., dass nach jedem Lese- bzw. Schreibzugriff der Adresszeiger automatisch um eins erhöht wird. Als zweites suche ich noch einen DualRAM. D.h., ein RAM bei dem Adress-, Daten- und Steuer-Leitungen doppelt vorhanden sind, aber auf die gleiche Speichermatrix zugreifen. Kennt ihr solche RAMs? Wo kann man die kaufen? Welche Bezeichnung? Datenblatt?
Wie wäre es mit einem CPLD ? Der macht sowas, wenn du das alles programmiert. Auf einer Seite die 8 Bit Daten und die Steuersignale rein, auf der anderen Seite hängt ein SRAM oder DRAM dran. Den Rest erledigt der CPLD...
Ja das würde ich ja gerne, aber ich habe noch nicht mit CPLD-Programmierung angefangen. Es hat aber noch einen anderen Grund, warum ich das nicht so machen will wie du das beschreibst. Und zwar würde man da 2 Bauteile mit vielen Anschlüssen nehmen (ziemlich sperrig). Mir geht es darum, das alles kompakt und ohne viele Leiterbahnen hin zu bekommen.
Hi. Interessante Sache, was du da suchst. Falls es solche SRAM's wirklich geben sollte (hab von sowas noch nie gehört), wäre ich natürlich auch interessiert. Da aber bei SRAMs die inneren Struktur wesentlich mehr Platz brauchen als DRAMs, bezweifle dass es entsprechende SRAMs mit deinen Anforderungen gibt. Anscheinend suchst du ja Speicher in der Größe von 16MB (24 bit Adressen). Als Alternative würde ich mich entweder um ein Flash-ROM (wenn nicht ständig geschrieben werden soll) umsehen, oder du machst dir mit nem FPGA einen kleinen Controller, der bei nem DRAM den Refresh macht und nach außen hin dein gewünschtes Interface zur Verfügung stellt (wäre meine bevorzugte Lösung). mfg Andreas -- Andreas Auer aauer1 (at) sbox.tugraz.at Student of Telematics http://home.pages.at/aauer1 Graz University of Technology
SRAM als eierlegende Wollmilchsau... Hast Du schon mal bei (RAM-)Chip-Herstellern (z.B. Cypress, Infineon) geguckt? So einen Baustein finde ich auch interessant, nur woher nehmen. Mir fällt auch irgendwie keine Anwendung ein, wo man sowas schon benutzt. Entweder hat man eine Logik vor Standard-RAM-Bausteinen (CPLD, FPGA) oder man braucht diese Funktionalität nicht. Die anderen RAM-Bausteine, die du suchst nennen sich DUAL-PORT-RAM. Cypress hat da einen 9Mbit-Chip (CY7C0853V [256K x 36Bit]) herausgebracht. Kostenpunkt $98 pro 10.000 Stk (Stand: Juni 2004)... Chip-Hersteller können dir bestimmt auch Bezugsquellen verraten... Gruß Rahul
Ich glaube nicht, daß es sowas exotisches gibt. SRAMs sollen doch schnell sein und das würde man mit umständlichen Multiplexen ja zunichte machen. Wenns Dir aber nur aufs Pin sparen ankommt, vielleicht ist mein 2-Draht SRAM ja die Lösung: http://www.specs.de/users/danni/appl/hard/sram/sram.htm Peter
Gerade durch das Autoincrement wäre der doch wieder schnell, aber nur wenn man hintereinander stehende Daten lesen/schreiben will (externer Programmspeicher für µC). 2-Draht will ich nicht nehmen. (zu langsam)
"2-Draht will ich nicht nehmen. (zu langsam)" Ja dann komm doch endlich mal ausm Knick mit konkreten Zahlen (wieviel MB, wieviel ns) !!! Muß man Dir denn alles erst aus der Nase ziehen ? Ich habe den Eindruck, Du fragst einfach mal nur so ins Blaue hinein, ohne Dir erstmal die geringsten Gedanken über Dein Projekt gemacht zu haben. Wie soll denn Dir einer raten ohne die allergeringsten Angaben ? In jedem Fall wirst Du Dir für sowas extrem Exotisches ein eigenes Interface basteln müssen (µC, CPLD, FPGA). Bedenke, die SRAMs sind "Abfall" der Computerindustrie. Was da nicht gebraucht wird, wird auch nicht hergestellt oder ist exorbitant teuer. Peter P.S.: Langsam hat doch überhaupt nichts mit 2-Draht zu tun, z.B. USB: 480Mbits/s
S-RAM mit Latch gabs mal, speziell für die MCS-51 Controller, so konnte man sich den 74373 sparen. Ist aber IMHO schon lange, lange abgekündigt. Ich sehe leider schwarz für Dich - Deine Anforderungen sind doch etwas sehr speziell.
Mit 2-Draht zu langsam meine ich zu langsam über µC ansteuerbar. Ich wollte so etwas an einem µC als externen Programmspeicher anschließen und auf dem µC läuft ein Befehlsinterpret. Und dann noch eine Soundkarte bauen mit µC und Datenbus, an dem µC, DAC, dieser Speicher dran hängen. Da lohnt sich auch das Autoincrement um nicht immer die Adresse neu setzen zu müssen. Der DualportRAM soll für einen Grafikkarte genutzt werden: PORT1 -> Monitor PORT2 -> µC
@peter dannegger: Es ist doch quatsch hier ganz genaue Zahlen (MB, ns) zu nennen, wenn es so wenige Typen davon gibt, dass es schwierig ist überhaupt so etwas zu bekommen. Ich würde mich für alle Typen mit diesen Eigenschaften interessieren.
"Es ist doch quatsch hier ganz genaue Zahlen (MB, ns) zu nennen" Es ist jedenfalls größerer Quatsch, immer erst hinterher den Ratgebenden zu sagen, warum das nicht geht. Die haben nämlich dann kein Lust mehr, den Quatsch weiter mitzumachen. Von ganz genau war auch nie die Rede, aber man muß schon die minimalen Anforderungen wissen. Peter
Von Dallas gabs mal (oder gibts immer noch ?) einen Dual Port SRAM mit gemultiplextem Adress/Datenbus. Leider nur 256Bytes... Gibts hier keinen, der auf nem CPLD, FPGA usw. sowas programmieren könnte ?
Also das wäre mit einem CPLD nun wirklich das kleinste Problem. Brauchst ja nur einen Multiplexer. Dabei muss das Timing aber gut abgestimmt werden, da der CPLD ja selbst nur einen der beiden Ports gleichzeitig bedienen kann.
Stimmt... die Programmierung deiner Anforderung ist für einen CPLD echt das geringst. Und wenn du schon dabei bist einen kleinen "Computer" zu bauen, würd ich auch gleich mal die Prozessorarchitektur dazu auf einen FPGA mitentwwickeln. Dadurch kannst wesentlich mehr an Performance rausholen (vorausgesetzt der Prozessor ist richtig designed). Da kannst da so nette Sachen wie Cache Memory und Pipelining einbauen (kleine Infos am Rande)! Ich denke ja mal, du machst das ganze nicht auf Grund eines "Auftrags", sondern aus eigenem Interesse (Lerneffekt). Und wenn du schon verstehen willst, wie ein Computer aufgebaut ist, dann könntest ja ganz unten anfangen! mfg Andreas -- Andreas Auer aauer1 (at) sbox.tugraz.at Student of Telematics http://home.pages.at/aauer1 Graz University of Technology
@Stefan: Die Geschwindigkeit macht schon einen großen Unterschied. Die Frage ist hier nämlich, ob Deine Anforderungen wirklich Sinn machen. So braucht man z.B. für eine Grafikkarte kein Dualport-RAM, wenn man die Schreibzugriffe im unsichtbaren Teil des Bildes macht. Ob das geht hängt aber von den Anforderungen ab. Einen externen Programmspeicher kann man z.B. durch ein serielles Flash realisieren. Die Befehlsinterpretation ist auch nicht übermäßig schnell, da sollte man auch ganz normale Latches an ein normales SRAM anschließen können. Markus
Mal ein Beispiel zu Grafik ohne Dual-Port-Ram: Beim C-64 wurde das genauso gemacht, wie Markus vorschlägt. Der 6510-Prozessor hatte pro Takt eine Pause von einem halben Takt, in der er nicht auf den Bus zugriff (hatte mit sich selbst genug zu tun g). Während dieser Taktpause griff der Video-Chip auf den RAM zu. Dies war auch der Grund, weshalb der NTSC-C64 schneller war, als der PAL-C64...
@Markus: Das mit den Latches ist zwar schön und gut, aber ich will ja Autoincrement, also müsste ich counter mit load-Funktion nehmen. Die haben aber immer nur 4 Bit. Bei einem RAM mit 16 Adressbits währen das dann 4 Stück (mit je 14(?) Pins) + RAM mit nochmal 32 Beinchen. Das sind dann 88 Pins und Eine große Platine. (sieht sehr nach retro-Computing aus ;)
Naja, sieht halt momentan nicht danach aus, als könnte man das zu vernünftigen Preisen, wenn überhaupt, kriegen.
Aber warum nicht? (fast) Alle DRAMs werden ja so angesteuert. Warum dann nicht auch SRAM?
[ ..... ] > Der DualportRAM soll für einen Grafikkarte genutzt werden: > PORT1 -> Monitor > PORT2 -> µC Such mal nach Vram, da wird immer eine komplette dram zeile/spalte paralell in ein Schieberegister geschrieben, das Schieberegister wird mit dem Videotakt seriell rausgeschrieben. Refresh hast du automatisch durch das Erzeugen des Videosignals.
VRAMs sind wiklich tolle Dinger, aber die werden nichtmehr produziert, seit es SDRAM gibt... Immerhin 30-80B/s waren mit den VRAMs möglich.
"Aber warum nicht?" Wird ja langweilig, wie er überhaupt nicht kapieren will, daß bisher alle sagen, sowas exotisches gibt es nicht. "Alle DRAMs werden ja so angesteuert" Und immer diese Rumreiterei auf den armen DRAMs, die werden doch völlig anders angesteuert. Byteweises Daten-,Adreßmultiplex mit Autoincrement hat kein DRAM. Peter
FPGA hätte den Vorteil, dass der Dualram schon on-board ist, zumindest bei den Xilinx Spartan-II und Nachfolger, sowie Virtex ist das so. cu joern
"Alle DRAMs werden ja so angesteuert" Wenn du dir die innere Architektur eines DRAMs ansiehst, dann wirst du merken, dass es absolut anders aussieht. Deshalb sind DRAMs 1. wesentlich billiger als SRAMs (vom Speicherplatz her gesehen) 2. können sie größere Mengen an Daten aufnehmen, da nur ein Transistor pro Bit benötigt wird, wohingegen du mindestens 2 bei SRAMs brauchst. Ich steh noch immer auf den Standpunkt, dass du dir schnell mal nen FPGA ansehen sollst. So ein Ding ist die eierlegende Wollmilchsau! mfg Andreas -- Andreas Auer aauer1 (at) sbox.tugraz.at Student of Telematics http://home.pages.at/aauer1 Graz University of Technology
Es geht noch einfacher: Wie wäre es mit einem LCD Controller ?!? Da braucht man nur 8 Daten, 1 Adress und 2-3 Steuerleitungen um 64kByte zu adressieren. Autoincrement ist auch schon eingebaut. z.B. ein SED1330 ist schnell genug für einen AVR. Am ISA Bus lief das Ding zumindest problemlos... Und ganz nebenbei kann man sich die Daten auch noch grafisch darstellen lassen...
Hallo Stefan! 1. > Mit den Latchselectleitungen soll man auswählen können ob man über die > 8 Datenleitungen das obere, mittlere, untere Adressbyte setzen will > oder Daten aus der Speicherzelle lesen bzw hineinschreiben will. und > Ich wollte so etwas an einem µC als externen Programmspeicher anschließen > und auf dem µC läuft ein Befehlsinterpret. Und dann noch eine > Soundkarte bauen mit µC und Datenbus, an dem µC, DAC, dieser Speicher > dran hängen. Da lohnt sich auch das Autoincrement um nicht immer die Adresse neu setzen zu müssen. Mir erschließt sich der Sinn der Sache nicht. Du setzt das high-Adressbyte, im nächsten Prozessorbefehl(szyklus) dann das middle-, im dritten das low-Adressbyte und im vierten liest Du Dein erstes Datenbyte. Gut, die nächsten 255 Byte kommen bei Deinem Speicher dann schnell. Das braucht im ungünstigen Fall vier Prozessorbefehl/e(-szyklen) (z.B. Peripherie-Operationen), um ein Byte zu holen. Wenn ein µC (der in der Lage ist, externen Speicher zu adressieren) auf externen Speicher zugreift, setzt er von sich aus immer eine (meist 16 bit-) Adresse. Das geht auch sehr schnell, nämlich mit einem Prozessorbefehl(szyklus). Die meisten µCs besitzen zudem Schleifen- bzw. vergleichbare Befehle, um mehr als ein Byte zu bewegen. Das entspricht Deinem gewünschten Auto-Inkrement. Auch größere Speicherbereiche (mehr als der Prozessor selbst adressieren kann) lassen sich über Speicherbanking ansprechen. Welcher µC soll es denn überhaupt werden? 2. Statt der gesuchten Dual-port-Rams könnte man auch Fifos nehmen, z.B. die von IDT 7206 oder CY7C425. Allerdings bezweifle ich auch hier, daß das geplante Projekt sinnvoll ist. Hier ist entweder ganz klassisch eine gesteuerte Zählerschaltung nutzbar, die den Speicher im gewünschten Bildschirm-timing durchtaktet und das jeweils geholte Byte dann seriell auf den Monitor ausschiebt - in der Zwischenzeit kann der µC den Speicher schreiben - oder es ist ein spezieller Grafikcontroller mit Standard-RAM viel sinnvoller als ein Dualport-RAM. Wenn bei der Zählervariante der µC zu langsam ist beim Schreiben, (Störungen bei der Anzeige, Bildaufbau ist zu sehen) nimmt man etwas größeren Speicher und schaltet diesen seitenweise um. (paging - mehrere Seiten, die man wechselweise auf den Monitorausgang schalten kann) Dann wird auf die nicht angezeigte Seite das Bild fertig beschrieben, anschließend umgeschaltet.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.