Ich hatte endlich meine Z80-Speicherplatine fertiggestellt, aber ich war enttäuscht, als ich sah, dass sie nicht richtig funktionierte (einfacher NOP-Test mit den Adressleitungen, die mit einigen LEDs verbunden waren), da der Zähler schnell außer Kontrolle geriet, anstatt wie erwartet zu inkrementieren. Ich bin jedoch nicht jemand, der aufgibt, und nach etwa dreißig Minuten Durchgangsprüfung, um keine Kurzschlüsse und alle ordnungsgemäßen Verbindungen aufzudecken, dachte ich schließlich daran, zu überprüfen, ob der SRAM-Chip mit allen gespeicherten Nullen eingeschaltet wurde. Ich bin mir bewusst, dass SRAM (es sei denn, es ist nicht flüchtig, was mein spezieller Chip nicht ist) bei einem Stromausfall seinen gesamten Inhalt verliert, aber ich hatte immer angenommen, dass es mit Nullen (dh "leer") gefüllt wäre, wenn es wiederhergestellt würde Energie. Der von mir verwendete SRAM scheint bei jedem Zurücksetzen der Stromversorgung zufällig mit Einsen und Nullen gefüllt zu sein. Es merkt sich nie irgendwelche Daten, aber es wird nicht leer geladen. Dies ist nicht wirklich ein 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 gerne wissen würde, ob das SRAM so funktionieren sollte oder nicht. Danke!
Bearbeiten: Ich habe vergessen zu erwähnen, dass das System nach der Verwendung des ROM zum Laden von Nullen in den SRAM einwandfrei funktionierte, also war dies tatsächlich das Problem.
Wenn Sie keinen Anfangszustand programmiert haben, ist dieser mehr oder weniger zufällig. Obwohl dies bei verschiedenen SRAM-Implementierungen variieren kann. Du sagst auch "leer". Einige mögen denken, dass random "blanker" ist als alle Nullen.
SRAM-Speicher speichert Speicher auf Back-to-Back-Wechselrichtern.
Dies bildet ein bistabiles System (zwei sehr stabile Zustände, die durch Metastabilität getrennt sind). Beim Einschalten sind die Back-to-Back-Wechselrichter also kurzzeitig metastabil.
Dies geschieht, weil beim Anstieg der Spannung (vom Einschalten) sowohl NMOS als auch PMOS der Back-to-Back-Inverter "gleich" eingeschaltet sind und beide Bitknoten auf der halben 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. An diesem Punkt schnappen die Bitnodes in einen ihrer bistabilen Zustände ein.
Tatsächlich gibt es sogar ein Papier „Power-Up SRAM State as an Identifying Fingerprint and Source of True Random Numbers“
Ein sehr hilfreiches Diagramm, das in dem Papier enthalten ist, ist unten. Die gepunktete Linie stellt den Anstieg der Versorgungsspannung dar:
Je nachdem, wie jeder Bitnode im SRAM, den Sie derzeit verwenden, hergestellt wurde, erhalten Sie am Ende mehr oder weniger eine der beiden oben genannten Situationen. In beiden Fällen würden die anfänglichen Ausgaben mehr oder weniger zufällig aussehen, 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 anfängliche Start scheinbar zufällig. Aber weitere Powerups würden dazu führen, dass der SRAM dazu tendiert, bestimmte Zustände zu fördern.
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 hochfahren. Wenn der Ausschaltzyklus kurz genug ist (abhängig von den Eigenschaften der Stromversorgung und der Anzahl und dem Wert der Überbrückungskondensatoren), können große Fragmente zuvor geschriebener Daten durch Ausschaltzyklen im SRAM verbleiben – obwohl der Inhalt beschädigt wird.
Ein einzelnes Bit wird 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, würde jede RAM-Zelle nur mehr als 6 Transistoren benötigen. Die benötigte Chipfläche wird wesentlich größer und die SRAM-Chips werden teurer. Dies ist ein paralleles Power-On-Reset aller Bits zur gleichen Zeit. Ein serielles Zurücksetzen würde einen Oszillator, einen Adresszähler und genügend Zeit während des Einschaltens erfordern, um alle RAM-Bits oder -Bytes sequentiell zurückzusetzen. Wenn der Prozessor auf das SRAM zugreift, bevor das serielle Power-On-Reset abgeschlossen ist, können Fehler auftreten und Daten können verloren gehen oder geändert werden.
Es gibt Programmierumgebungen für Mikroprozessoren mit detaillierter Speicherabbildung mehrerer RAM-Bereiche. Sie können je nach Anwendung einen Bereich mit oder ohne Power-On-Reset definieren. Mehrere unterschiedliche Bereiche innerhalb desselben SRAM sind möglich. Es ist nicht immer notwendig, das gesamte SRAM beim Programmstart zurückzusetzen.
b degnan
Benutzer39382