Finalmente había terminado mi placa de memoria Z80, pero me decepcionó ver que no funcionaba correctamente (prueba NOP simple con las líneas de dirección conectadas a algunos LED) ya que el contador rápidamente se salió de control en lugar de incrementarse como debería. Sin embargo, no soy de los que se dan por vencidos y después de unos treinta minutos de pruebas de continuidad para descubrir que no había cortocircuitos y todas las conexiones adecuadas, finalmente pensé en comprobar si el chip SRAM se estaba encendiendo con todos los 0 almacenados. Soy muy consciente de que SRAM (a menos que no sea volátil, que mi chip en particular no lo es) perderá todo su contenido al perder energía, pero siempre supuse que estaría lleno de 0 (es decir, "vacío") cuando recuperó poder. La SRAM que estoy usando parece llenarse aleatoriamente con 1 y 0 cada vez que se restablece la alimentación. Nunca recuerda ningún dato, pero no se está cargando vacío. Esto no es realmente un problema, ya que simplemente puedo escribir un pequeño programa en la ROM para cargar todos los 0 en la RAM al encenderla, aunque todavía me gustaría saber si la SRAM debería funcionar así 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.
A menos que tengas 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 "más vacío" que todos los 0.
La memoria SRAM almacena memoria en inversores espalda con espalda.
Esto forma un sistema biestable (dos estados muy estables con metaestabilidad dividiéndolos). Por lo tanto, al encenderse, los inversores espalda con espalda son brevemente metaestables.
Esto sucede porque a medida que aumenta el voltaje (desde que se enciende), tanto el NMOS como el PMOS de los inversores espalda con espalda estarían "igualmente" encendidos, manteniendo ambos nodos de bits a la mitad del voltaje de suministro (este es el estado metaestable). Eventualmente, algún ruido térmico (o cualquier proceso que introduzca variación) empuja o empuja este valor hacia abajo o hacia arriba un poco. En este punto, los nodos de bits se ajustan a uno de sus estados biestables.
De hecho, incluso hay un documento "Estado de SRAM de encendido como huella dactilar de identificación y fuente de números aleatorios verdaderos"
Una trama muy útil contenida en el documento se encuentra a continuación. La línea punteada representa el aumento de la tensión de alimentación:
Dependiendo de cómo se fabricó cada bitnodo 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 parecerán más o menos aleatorias. En la situación de la mano izquierda, cada encendido posterior generaría más patrones aleatorios. En la situación de la mano derecha, el inicio inicial sería aparentemente aleatorio. Pero más potenciadores harían que la SRAM tendera a promover ciertos estados.
Habiendo trabajado con SRAM durante muchos años, puedo decirles que se encenderá con contenidos aparentemente aleatorios, aunque he visto dispositivos que se encienden con casi los mismos contenidos aleatorios cada vez. Si el ciclo de apagado es lo suficientemente corto (según las características de la fuente de alimentación y la cantidad y el valor de los capacitores de derivación), pueden permanecer grandes fragmentos de datos escritos previamente en la SRAM a través de los ciclos de encendido, aunque el contenido se dañará.
Un solo bit se almacena en una SRAM en un circuito de 6 o más transistores. Si desea un comportamiento de reinicio de encendido definido para la SRAM, cada celda de RAM necesitaría solo más de 6 transistores. El área de chips 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 restablecimiento en serie requeriría un oscilador, 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 encendido en serie, pueden ocurrir 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 iniciar el programa.
b degnan
usuario39382