SRAM no está en blanco en el encendido, ¿es esto normal?

20

Finalmente, terminé mi tarjeta 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 a medida que debería. Sin embargo, no me rindo y después de unos treinta minutos de pruebas de continuidad para descubrir que no hay cortocircuitos y todas las conexiones correctas, finalmente pensé en comprobar si el chip SRAM se estaba encendiendo con todos los 0s almacenados. Soy consciente de que la SRAM (a menos que sea no 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 llenarse al azar con 1 y 0 cada vez que se reinicia 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 la ROM para cargar todos los 0 en la RAM en el encendido, aunque todavía me gustaría saber si la SRAM debería estar funcionando o no. Gracias!

Editar: olvidé mencionar que después de usar la ROM para cargar 0 en la SRAM, el sistema funcionó bien, así que este fue el problema.

    
pregunta Ki11akd0g

3 respuestas

37

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 la memoria en los inversores inversos.

Estoformaunsistemabiestable(dosestadosmuyestablesconmetastabilidadquelosdivide).Porlotanto,unavezencendidos,losinversoresinversossonmetastables.

Estosucedeporqueamedidaqueaumentaelvoltaje(deseractivado),tantoelNMOScomoelPMOSdelosinversoresbacktobackestarán'igualmente'encendidos,manteniendoambosbitnodesalamitaddelvoltajedesuministro(esteeselestadometaestable).Finalmente,unpocoderuidotérmico(ocualquierprocesoqueintroducevariación)empujaobajaestevalorhaciaarribaohaciaabajounpoco.Enestepunto,losbitnodesencajanenunodesusestadosbiestables.

  • Comoejemplo,considere\$Q=Q'=\frac{V_{supply}}{2}\$
  • Acontinuación,unpocoderuidotérmicoenQaumentaelvoltajehasta\$\frac{V_{supply}}{2}+\delta\$
  • Ahora,laalimentaciónQ'deNMOSseenciendeunpocomás.YlaalimentaciónQ'dePMOSseapagaunpocomás.Entonces,Q'bajade\$\frac{V_{suministro}}{2}\$a\$\frac{V_{suministro}}{2}-\delta\$.
  • Acontinuación,dadoqueelvoltajeenlacompuertadelnodoQdeactivacióndelFETdisminuye,elPMOSseenciendeunpocomás(yelNMOSseapagamás).EstohacequeQaumentemásalaoferta.YestorápidamenteajustaQ'a0yQa1.

Dehecho,inclusohayun documento "Power-Up SRAM State como una identificación Huella digital y fuente de los verdaderos números aleatorios "

Una trama muy útil contenida en el documento está abajo. La línea de puntos representa el aumento de la tensión de alimentación:

  • En el lado izquierdo, todo es igual. En este caso, las variaciones aleatorias debidas a la temperatura u otro número de factores hacen que el bitnodo pase a un estado u otro.
  • En el lado derecho, hay un bitnode que está sesgado (a propósito o no) para que sea mucho más probable que se inicie en un estado particular.

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 la SRAM intencionalmente, las salidas iniciales se verían más o menos aleatorias. En la situación de la izquierda, cada encendido subsiguiente generaría más patrones aleatorios. En la situación de la mano derecha, la puesta en marcha inicial sería aparentemente aleatoria. Pero un mayor número de mejoras causaría que la SRAM tiende a promover ciertos estados.

    
respondido por el jbord39
5

Después de haber trabajado con SRAM durante muchos años, puedo decirle que se activará con contenidos aparentemente aleatorios, aunque he visto dispositivos que se activan con casi el mismo contenido de apariencia aleatoria cada vez. Si el ciclo de apagado es lo suficientemente corto (según las características de la fuente de alimentación y el número y el valor de los condensadores de derivación), grandes fragmentos de datos escritos previamente pueden permanecer en la SRAM a través de los ciclos de alimentación, aunque el contenido se corromperá.

    
respondido por el Scottie Verde
2

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á más de 6 transistores solamente. El área de chips necesaria será sustancialmente mayor y los chips SRAM serán más caros. Esta es una potencia paralela al restablecer todos los bits al mismo tiempo. Un reinicio en serie requeriría un oszilator, un contador de direcciones y el tiempo suficiente durante el encendido para reiniciar todos los bits de RAM o bytes de forma secuencial. Si el procesador accede a la SRAM antes de que finalice el reinicio de la alimentación en serie, pueden producirse errores y los datos pueden perderse o modificarse.

Hay entornos de programación para microprocesadores con mapeo de memoria detallado de varias áreas de RAM. Puede definir un área con o sin un reinicio de encendido según lo requiera la aplicación. Varias áreas diferentes dentro de la misma SRAM son posibles. No siempre es necesario restablecer la SRAM completa en el inicio del programa.

    
respondido por el Uwe

Lea otras preguntas en las etiquetas