SRAM ist beim Einschalten nicht leer, ist das normal?

19

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.

KeatonB
quelle
7
Sie können SRAM Power Up verwenden, um Zufallszahlen zu generieren. Dies machen wir im Allgemeinen, wenn wir nur einen zufälligen Startwert benötigen.
b degnan
6
@bdegnan Vielleicht einmal. Der Einschaltzustand des SRAM ist in der Regel für ein bestimmtes Teil etwas vorhersehbar.
Duskwuff

Antworten:

36

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.

einfacher Sram

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.

  • Als ein Beispiel betrachte man Q.=Q.=Vsupply2
  • Als nächstes einige thermische Rauschen auf Q erhöht die Spannung auf bis Vsupply2+δ
  • Vsupply2Vsupply2-δ
  • Als nächstes schaltet der PMOS ein wenig mehr ein (und der NMOS schaltet mehr aus), da die Spannung am Gate des ansteuernden Q-Knotens des FET abnimmt. Dies führt dazu, dass Q weiter ansteigt. Dadurch wird Q 'schnell auf 0 und Q auf 1 gesetzt.

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:

Metastabilität beim Einschalten

  • Links ist alles gleich. In diesem Fall versetzt eine zufällige Änderung aufgrund der Temperatur oder einer anderen Anzahl von Faktoren den Bitknoten in den einen oder anderen Zustand.
  • Auf der rechten Seite befindet sich ein Bitknoten, der (absichtlich oder auf andere Weise) verzerrt ist, um die Initialisierungswahrscheinlichkeit in einem bestimmten Zustand zu erhöhen.

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.

jbord39
quelle
Du weißt, ich dachte eigentlich, das wäre der Grund, warum es zufällig geladen wird. Ich habe ein NOR-Latch als Teil einer Schaltung verwendet und es wurde beim Einschalten nach dem Zufallsprinzip zurückgesetzt. Vielen Dank!
KeatonB
Ich dachte, Sie könnten SRAM-Chips so entwickeln, dass sie in einem bekannten Zustand hochfahren. Können Sie?
John Dvorak
2
@ JanDvorak: Ja, das kannst du. Dies bedeutet jedoch nicht, dass dies häufig gemacht wird, insbesondere in SRAM, das nicht anwendungsspezifisch ist. Ich würde denken, es kostet mehr und zu welchem ​​Zweck? Es wird selten der gleiche Ausgangszustand sein, der für alle Verbraucher erforderlich ist.
jbord39
@ jbord39 Könnte mir das helfen, den Bootloader in den Speicher zu laden und einen zusätzlichen ROM-Chip zum Laden des Betriebssystems zu vermeiden? Würde es helfen, die Kosten zu senken?
John Dvorak
2
@JanDvorak: Für bestimmte Anwendungen können die Bitzellen verzerrt oder vorgespannt sein, um in bestimmten Zuständen zu starten. Aber wirklich die Kosten lohnen sich nicht, denn jeder Kunde würde andere Ausgangszustände benötigen. Es ist viel einfacher und kostengünstiger, es nur mit externen Schaltkreisen (z. B. ROM) zu initialisieren. Ich vermute, sie könnten programmierbare Schaltkreise einbauen, mit denen Sie in den gewünschten Anfangszuständen oder in einem anderen Schema brennen können. Das klingt aber nur dann teuer, wenn Sie eindeutig schon die Schaltkreise zum Schreiben / Lesen im RAM haben. Schreiben Sie einfach Ihren gewünschten Status.
jbord39
5

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.

Scottie Verde
quelle
2

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.

Uwe
quelle
3
Wenn einige der Transistoren etwas größer als andere sind, werden die Wahrscheinlichkeiten von Einsen gegen Nullen verschoben. An vielen Stellen werden die Transistoren innerhalb der Herstellungstoleranzen abgeglichen, was bedeutet, dass einige Bits gegen Nullen vorgespannt werden, während andere gegen Einsen vorgespannt werden. Ich bezweifle, dass die Größenunterschiede sehr groß sein müssten, um das Startverhalten überwiegend in eine Richtung zu beeinflussen. RAM-Hersteller könnten die Dinge leicht konsistent beeinflussen, wenn es einen Grund dafür gäbe, aber ein RAM, der unausgeglichen ist, würde zusätzlichen Strom verbrauchen, um die Zelle in die ungünstige Richtung zu schalten.
Supercat