Finalmente había terminado mi tarjeta de memoria Z80, pero me decepcionó ver que no funcionaba correctamente (prueba simple de NOP con las líneas de dirección conectadas a algunos LED) ya que el contador se salió de control rápidamente en lugar de incrementarse como debería. Sin embargo, no soy uno para rendirme y después de unos treinta minutos de pruebas de continuidad para descubrir que no hay cortocircuitos y todas las conexiones adecuadas, finalmente pensé en verificar si el chip SRAM se estaba encendiendo con todos los 0 almacenados. Soy consciente de que SRAM (a menos que no sea volátil, que no es mi chip en particular) perderá todo su contenido al perder potencia, pero siempre asumí que se llenaría con 0 (es decir, "vacío") cuando se recuperara poder. La SRAM que estoy usando parece estar llena aleatoriamente con 1 y 0 cada vez que se restablece la alimentación. Nunca recuerda ningún dato, pero no se carga vacío. Esto no es realmente un problema, ya que simplemente puedo escribir un pequeño programa en ROM para cargar todos los 0 en la RAM en el encendido, aunque todavía me gustaría saber si así es como debería funcionar la SRAM o no. ¡Gracias!
Editar: Olvidé mencionar que después de usar la ROM para cargar 0 en SRAM, el sistema funcionó bien, por lo que este fue el problema.
Respuestas:
A menos que tenga un estado inicial programado, será más o menos aleatorio. Aunque esto puede variar con diferentes implementaciones de SRAM. También dices "en blanco". Algunos podrían pensar que el azar es "blanco" que todos los 0.
La memoria SRAM almacena memoria en inversores de respaldo a respaldo.
Esto forma un sistema biestable (dos estados muy estables con metaestabilidad que los divide). Por lo tanto, al encender los inversores back to back son brevemente metaestables.
Esto sucede porque a medida que el voltaje aumenta (desde que se enciende), tanto NMOS como PMOS de los inversores de atrás hacia atrás estarían 'igualmente' encendidos, manteniendo ambos bitnodes a la mitad del voltaje de suministro (este es el estado metaestable). Eventualmente, un poco de ruido térmico (o cualquier proceso que introduce variación) empuja o hace que este valor baje o suba un poco. En este punto, los bitnodes entran en uno de sus estados biestables.
De hecho, incluso hay un documento "Power-Up SRAM State como una huella dactilar de identificación y fuente de números aleatorios verdaderos"
Una trama muy útil contenida en el documento está a continuación. La línea de puntos representa el aumento de voltaje de suministro:
Dependiendo de cómo se fabricó cada bitnode en la SRAM que está utilizando actualmente, terminará con más o menos de una de las dos situaciones anteriores. En ambos casos, a menos que haya sesgado intencionalmente la SRAM, las salidas iniciales se verían más o menos aleatorias. En la situación de la izquierda, cada encendido posterior generaría más patrones aleatorios. En la situación de la derecha, el inicio inicial sería aparentemente aleatorio. Pero más potenciadores causarían que la SRAM tienda a ciertos estados.
fuente
Después de haber trabajado con SRAM durante muchos años, puedo decirle que se encenderá con contenidos aparentemente aleatorios, aunque he visto dispositivos que se encienden con casi el mismo contenido de aspecto aleatorio cada vez. Si el ciclo de apagado es lo suficientemente corto (dependiendo de las características de la fuente de alimentación y el número y valor de los condensadores de derivación), grandes fragmentos de datos previamente escritos pueden permanecer en la SRAM a través de los ciclos de encendido, aunque el contenido se corromperá.
fuente
Un solo bit se almacena en una SRAM en un circuito de 6 o más transistores. Si desea un comportamiento definido de reinicio de encendido para la SRAM, cada celda RAM necesitaría más de 6 transistores solamente. El área de chip necesaria será sustancialmente mayor y los chips SRAM serán más caros. Este es un reinicio de encendido paralelo de todos los bits al mismo tiempo. Un reinicio en serie requeriría un oszilator, un contador de direcciones y suficiente tiempo durante el encendido para restablecer todos los bits o bytes de RAM secuencialmente. Si el procesador accede a la SRAM antes de que finalice el reinicio de alimentación en serie, pueden producirse errores y los datos pueden perderse o cambiarse.
Existen entornos de programación para microprocesadores con mapeo de memoria detallado de varias áreas de RAM. Puede definir un área con o sin reinicio de encendido según lo requiera la aplicación. Son posibles varias áreas diferentes dentro de la misma SRAM. No siempre es necesario restablecer toda la SRAM al inicio del programa.
fuente