Dieses Projekt ist zwar nicht sehr groß aber trotzdem etwas Besonderes. Zum Einen ist es Teil einer jahrelang vorbereiteten Restaurierung zum Anderen ist anscheinend noch niemand bis jetzt auf die Idee gekommen, einen 5V NVRAM durch einen 3,3V FRAM zu ersetzen bzw. das zu veröffentlichen.
Problembauteile NVRAM
Wer alte Geräte lange Zeit erhalten will, trifft immer wieder auf Chips mit integrierter Lithium-Batterie von „Dallas Semiconductor“, die im Jahr 2001 von „Maxim Integrated“ gekauft wurden, die wiederum 2021 von „Analog Devices“ gekauft wurden. Dabei handelt es sich meist um NVRAMs (non-volatile RAM) oder RTCs (Real-Time-Clocks) mit NVRAM. Die im Chip-Gehäuse integrierte Batterie ermöglicht, dass die Daten im RAM auch nach Abschaltung der Betriebsspannung erhalten bleiben und die RTC weiterläuft. Ein ebenfalls integrierter NVRAM-Controller sorgt für die Umschaltung zwischen Batterie und Betriebsspannung sowie für Datenschutz beim Ein- und Ausschalten.
Grundsätzlich ist das eine sehr praktische Lösung, da man ein einzelnes Bauteil verwenden kann anstatt einer ganzen Schaltung nebst Batterie. Fatal ist allerdings, wenn nach erfahrungsgemäß etwa 20 Jahren die eingebaute Batterie erschöpft ist. Fast immer ist damit das ganze Gerät nicht mehr funktionsfähig. Die Bauteile werden selbstverständlich nicht mehr produziert. Auch die im Internet gehandelten Restposten sind entweder schon zu alt oder noch häufiger gefälscht. Ich habe selbst zwei Fälschungen erworben. Somit ist der Ersatz mit dem Originalteil keine Option.
Ersatzmöglichkeiten
Der Ersatz von RTC und NVRAM unterscheidet sich erheblich.
Den NVRAM kann man durch einen entsprechen SRAM mit NVRAM-Controller und Batterie ersetzen. Dazu sind einige Beispiele im Netz zu finden.
Eine andere Variante ist der Ersatz durch FRAM, ein Speicher, der sich wie RAM beliebig schreiben lässt, den Inhalt aber auch ohne Betriebsspannung behält. Auch hierzu gibt es Beispiele mit den FRAM-Typen FM16(W)08 und FM18(W)08 mit 64kBit bzw. 256kBit Größe. Der Charme dieser Lösung ist, dass keine Batterie nötig ist und damit der Speicher wartungsfrei bleibt. Leider sind die beiden genannten FRAM-Typen zwar pinkompatibel mit den Dallas NVRAMs, werden aber etwas anders angesteuert. Damit funktioniert der Austausch leider nicht in allen Geräten.
Eine RTC lässt sich nicht so einfach ersetzen. Die RTC bildet die Uhrzeit auf einen Speicherbereich ab, auf den wie auf „normalen“ RAM zugegriffen wird. Dabei muss der Chip das geforderte Timing exakt einhalten. Das lässt sich nur mittels Dual-Port RAM sicherstellen. Passende Schaltungen habe ich allerdings nicht gefunden. Das wäre mal ein kleines Projekt für die Zukunft. Derzeit gibt es nur die Möglichkeit, eine alte RTC mechanisch aufzubohren und von außen eine neue Lithium-Batterie anzuschließen. Oder man verwendet einen kompatiblen RTC-Chip, der noch als Restposten verfügbar ist. Soweit ich weiß geht das nur für einen DS1486, der durch einen DS1386G incl. RAM und Batterie ersetzt wird.
DS1250Y/DS1650Y FRAM Ersatz
Nun zum corpus delicti. Das Bauteil DS1250Y von „Dallas Semiconductor“ ist ein 4MBit NVRAM. Die pinkompatible Variante DS1650Y verfügt zusätzlich über die Möglichkeit, einzelne Speicherbereiche per Software mit einem Schreibschutz zu versehen. Damit kann der DS1650Y den DS1250Y ersetzen. Umgekehrt geht das nicht in jedem Fall, sondern nur dann, wenn die Software das Schreibschutz-Feature nicht benutzt oder nicht davon abhängt.
Eine kurze Bauteilrecherche nach parallelen 4MBit FRAM fördert lediglich ein einziges Produkt zu Tage, den FM22L16-55-TG. Unglücklicherweise arbeitet der mit maximal 3,3V und hat 16 Bit Datenbreite im Gegensatz zu 5V und 8 Bit beim DS1250Y.
Da fehlen also noch einige Teile, um den FM22L16 anzupassen: Etwas Logik, Level-Shifter, ein Spannungsregler und ein wenig Hirnschmalz. Schwierig beim Entwurf war auch, dass die ganze Schaltung auf eine Platine mit der Größe des Originalteils passen muss.
Schaltung
Nach einigen Tagen Datenblätter lesen und verstehen und Schaltbilder malen war die Schaltung fertig.
Zum Einsatz kommen ein bidirektionaler Level-Shifter 74LVC8T245 für den Datenbus, ein MCP1700T-3302E Low-Dropout Spannungsregler für die 3,3V Stromversorgung, ein paar Universal Single-Gates für die Steuerlogik sowie Schottky-Dioden und LEDs für die unidirektionalen Level-Shifter der Adress- und Steuerleitungen.
In der ersten Version hatte ich die Pullup-Widerstände R3 bis R5 vergessen was dazu führte, dass die Daten verändert wurden, wenn man den Baustein aus dem Programmiergerät entfernt hat. Ansonsten funktioniert die Schaltung tadellos und erfüllt problemlos die Anforderungen an das Timing des Originals.
Die Unidirektionalen Level-Shifter mit Schottky-Diode plus LED sind noch speziell und auf meinem Mist gewachsen. Ich habe die Schaltung simuliert und festgestellt, dass dieser einfache Weg sicher und schnell funktioniert.
Der Plan ist hier als pdf verfügbar.
Aufbau
Die Schaltung findet auf einer doppelseitigen Platine Platz, die allerdings ca. 1mm breiter ist als das Original Bauteil. In den meisten Geräten ist aber ausreichend Platz dafür vorhanden.
Gerber Files zur privaten Nachbestellung befinden sich hier. Üblicherweise bestelle ich bei JLCPCB. Dort kann man das zip einfach hochladen zum Bestellen. Die Bauteilliste und den Bestückungsplan habe ich hier hinterlegt.
Der Rest folgt als kurze Bildergeschichte:
I used the files to make an FRAM replacement for the DS1650Y in my Tektronix TDS524 oscilloscope. It works great. Many thanks for the design. It is good to be free from a battery based solution.
Hi Terry,
thank you very much for the first feedback, glad to hear that all worked out and for the verification of the design.
All the best,
Uwe
Hi Uwe,
Many thanks for DS1250Y replica based on FRAM solved by shottky-LED shifting trick.
Now about the DS1486, I do not understand your comment why it is impossible, what is the topic of dual-port ?
On a side note, wether dual-port issue or not, the key question first would be how to power any quartz, any clock generator to mimic RTC via FRAM or other concept. One way or the other, one needs a battery to keep time running.
Kind regards, Albert (tantratron)
Hi Albert,
it is not possible to mimic the timing of a parallel RTC with a microcontroller. I don’t know any microcontroller which is able to react in some nanoseconds to asynchronous I/O requests. That’s why you have to use dual port RAM with non blocking updates and independent timing on both sides.
In any case you need some kind of power source for the RTC. It could be a battery or possibly a super cap.
Best regards,
Uwe