Endlich war meine Z80-Speicherkarte fertig, aber ich war enttäuscht, dass sie nicht richtig funktionierte (einfacher NOP-Test mit den an einige LEDs angeschlossenen Adressleitungen), da der Zähler schnell außer Kontrolle geriet, anstatt sich zu erhöhen, wie es sein sollte. Ich bin jedoch nicht derjenige, der aufgibt und nach etwa dreißig Minuten Kontinuitätstest, um keine Kurzschlüsse und alle korrekten Verbindungen aufzudecken, überlegte ich schließlich, ob der SRAM-Chip mit allen gespeicherten Nullen eingeschaltet wird. Ich bin mir durchaus bewusst, dass SRAM (sofern es nicht nicht flüchtig ist, was mein bestimmter Chip nicht ist) bei einem Stromausfall seinen gesamten Inhalt verlieren wird, aber ich war immer davon ausgegangen, dass er mit Nullen gefüllt sein würde (dh "leer"), wenn er wieder hergestellt wird Leistung. Der von mir verwendete SRAM scheint bei jedem Zurücksetzen der Stromversorgung nach dem Zufallsprinzip mit Einsen und Nullen gefüllt zu sein. Es merkt sich nie irgendwelche Daten, aber es wird nicht leer geladen. Dies ist kein wirkliches Problem, da ich einfach ein kleines Programm im ROM schreiben kann, um beim Einschalten alle Nullen in den RAM zu laden, obwohl ich immer noch wissen möchte, ob das SRAM so funktionieren sollte oder nicht. Vielen Dank!
Edit: Ich habe vergessen zu erwähnen, dass das System nach dem Laden der Nullen in den SRAM einwandfrei funktionierte, also war dies tatsächlich das Problem.
Antworten:
Sofern Sie keinen Grundzustand programmiert haben, ist dieser mehr oder weniger zufällig. Dies kann jedoch bei verschiedenen SRAM-Implementierungen variieren. Sie sagen auch "leer". Einige mögen denken, dass der Zufall "leerer" ist als alle Nullen.
Der SRAM-Speicher speichert den Speicher zwischen den Wechselrichtern.
Dies bildet ein bistabiles System (zwei sehr stabile Zustände, die durch Metastabilität voneinander getrennt sind). Beim Einschalten sind die Back-to-Back-Wechselrichter kurzzeitig metastabil.
Dies liegt daran, dass beim Hochfahren der Spannung (nach dem Einschalten) sowohl der NMOS als auch der PMOS der Back-to-Back-Inverter gleich eingeschaltet sind und beide Bitknoten auf der Hälfte der Versorgungsspannung halten (dies ist der metastabile Zustand). Irgendwann drückt oder zieht ein thermisches Rauschen (oder irgendein Prozess, der Variationen einführt) diesen Wert ein wenig nach unten oder oben. Zu diesem Zeitpunkt rasten die Bitknoten in einen ihrer bistabilen Zustände ein.
In der Tat gibt es sogar ein Papier "Power-Up-SRAM-Status als identifizierender Fingerabdruck und Quelle wahrer Zufallszahlen".
Eine sehr hilfreiche Handlung, die in dem Papier enthalten ist, ist unten. Die gepunktete Linie stellt den Spannungsanstieg dar:
Abhängig davon, wie jeder Bitknoten in dem SRAM, den Sie aktuell verwenden, hergestellt wurde, kommt es zu mehr oder weniger einer der beiden oben genannten Situationen. In beiden Fällen sehen die anfänglichen Ausgaben mehr oder weniger zufällig aus, es sei denn, Sie haben den SRAM absichtlich verzerrt. In der linken Situation würde jedes nachfolgende Einschalten mehr zufällige Muster erzeugen. In der rechten Situation wäre der Start scheinbar zufällig. Weitere Einschaltvorgänge würden jedoch dazu führen, dass der SRAM dazu neigt, bestimmte Zustände zu fördern.
quelle
Nachdem ich viele Jahre mit SRAM gearbeitet habe, kann ich Ihnen sagen, dass es mit scheinbar zufälligen Inhalten hochgefahren wird, obwohl ich Geräte gesehen habe, die jedes Mal mit fast den gleichen zufällig aussehenden Inhalten hochgefahren werden. Wenn der Ausschaltzyklus kurz genug ist (abhängig von den Stromversorgungseigenschaften und der Anzahl und dem Wert der Überbrückungskondensatoren), können große Fragmente zuvor geschriebener Daten während der Ausschaltzyklen im SRAM verbleiben - obwohl der Inhalt beschädigt wird.
quelle
Ein einzelnes Bit ist in einem SRAM in einer Schaltung von 6 oder mehr Transistoren gespeichert. Wenn Sie ein definiertes Power-On-Reset-Verhalten für den SRAM wünschen, benötigt jede RAM-Zelle nur mehr als 6 Transistoren. Die benötigte Chipfläche wird wesentlich größer und die SRAM-Chips werden teurer. Dies ist ein paralleler Power-On-Reset aller Bits gleichzeitig. Ein serieller Reset würde einen Oszilator, einen Adressenzähler und genügend Zeit während des Hochfahrens erfordern, um alle RAM-Bits oder Bytes nacheinander zurückzusetzen. Wenn der Prozessor auf den SRAM zugreift, bevor das Zurücksetzen beim seriellen Einschalten abgeschlossen ist, können Fehler auftreten und Daten können verloren gehen oder geändert werden.
Es gibt Programmierumgebungen für Mikroprozessoren mit detaillierter Speicherzuordnung mehrerer RAM-Bereiche. Sie können einen Bereich mit oder ohne Power-On-Reset definieren, wie von der Anwendung gefordert. Es sind mehrere verschiedene Bereiche innerhalb desselben SRAM möglich. Es ist nicht immer notwendig, den gesamten SRAM beim Programmstart zurückzusetzen.
quelle