¿Por qué la mayoría de las memorias no volátiles tienen un 1 lógico como estado predeterminado?

He usado memoria no volátil , como EEPROM y memoria FLASH, en aplicaciones integradas y siempre he encontrado que las ubicaciones de bits de memoria no utilizada (EEPROM/FLASH) siempre están configuradas 1de manera predeterminada. ¿Por qué se usa esto en lugar de 0?

Por ejemplo, una dirección, digamos la dirección 0 (primer byte de la memoria), si el usuario no la escribe, siempre almacena 0xffy no 0x00. ¿Por qué la gente que construyó los chips de memoria los mantuvo así? Estoy seguro de que mantener la ubicación de memoria predeterminada 0xffproporcionaría alguna ventaja o algo importante para el fabricante.

¿Cuál es la razón detrás de esta estructura en los chips de memoria?

Respuestas (4)

Voy a discutir la programación de la memoria flash, pero una gran cantidad de material será similar a las EEPROM (ROM programable borrable eléctricamente), ya que la memoria flash se derivó de las EEPROM a mediados de la década de 1980. Como se describe a continuación, desde un punto de vista físico, el estado predeterminado es 1. Pero lo que es más importante, voy a explicar por qué hay un estado predeterminado: no puede simplemente programar arbitrariamente sobre lo que ya estaba programado la última vez.

El flash NOR casi siempre se elige para el flash del programa, ya que la interfaz es la más adecuada para colocar los datos dentro del mapa de memoria del microcontrolador: los buses de dirección completa y datos imitan la RAM y permiten el acceso aleatorio a cualquier ubicación. Los datos se pueden leer una palabra a la vez, donde una palabra se define como el ancho de datos del microcontrolador, normalmente 8, 16 o 32 bits. NAND flash, por otro lado, fue desarrollado para reemplazar los discos duros y funciona secuencialmente.

Sin embargo, la programación se vuelve un poco más complicada. Como ya se mencionó, el estado predeterminado para NOR flash y otras memorias no volátiles como NAND flash, EEPROM e incluso EPROM es un 1 lógico. No puede programar 1 en estos dispositivos, solo puede programar 0. Entonces, por ejemplo, si tiene un byte que contiene 0x0123 y desea cambiarlo a 0x3210, no puede hacerlo directamente como escribir sobre un byte en RAM.

En cambio, los bits en la memoria deben borrarse, lo que los coloca en el estado predeterminado 1 ya mencionado. Esto solo se puede hacer en bloques, no en palabras. En el Microchip PIC32, con el que he trabajado más últimamente, el tamaño mínimo de bloque que se puede borrar es de 4096 bytes. Entonces, si quisiera cambiar solo una palabra (32 bits), tendría que leer los 4K de memoria, borrar el bloque y luego volver a escribir los 4K de memoria en la memoria flash, pero incluyendo el nuevo valor de 32 bits según sea necesario. Este borrado puede llevar algún tiempo, una buena parte de un segundo.

La siguiente es una imagen de una celda de memoria flash. Flash almacena los datos quitando o poniendo electrones en la puerta flotante. Cuando los electrones están presentes en la puerta flotante, no fluye corriente a través del transistor, lo que indica un 0. Cuando se eliminan los electrones de la puerta flotante, el transistor comienza a conducir, lo que indica un 1. (Esto es por convención, podría haber sido el de otra manera, pero requeriría inversores en todas las líneas de datos).

ingrese la descripción de la imagen aquí

Operación de borrado. El estado predeterminado de las celdas de memoria flash (una celda flash NOR de un solo nivel) es 1 porque las puertas flotantes no tienen cargas negativas. El borrado de una celda de memoria flash (restablecimiento a 1) se logra aplicando un voltaje a través de la fuente y la puerta de control (línea de palabra). El voltaje puede estar en el rango de -9V a -12V. Y también aplique alrededor de 6V a la fuente. Los electrones en la puerta flotante se extraen y se transfieren a la fuente mediante túneles cuánticos . En otras palabras, los electrones hacen un túnel desde la puerta flotante hasta la fuente y el sustrato.

Debido a que el borrado utiliza altos voltajes, el borrado en bloques requiere menos área de matriz. Por lo tanto, los voltajes solo se pueden aplicar a filas completas de transistores a la vez.

Para escribir, se puede programar una celda flash NOR o configurarla en 0 mediante el siguiente procedimiento. Mientras escribe, se aplica un alto voltaje de alrededor de 12 V a la puerta de control (línea de palabra). Si se aplica un alto voltaje de alrededor de 7 V a la línea de bit (terminal de drenaje), se almacena un 0 en la celda. El canal ahora está encendido, por lo que los electrones pueden fluir desde la fuente hasta el drenaje. La corriente de fuente-drenaje es lo suficientemente alta como para hacer que algunos electrones de alta energía salten a través de la capa aislante hacia la puerta flotante a través de un proceso llamado inyección de electrones calientes.

Para la lectura, se aplica un voltaje de alrededor de 5V a la puerta de control y alrededor de 1V al drenaje. El estado de la celda de memoria se distingue por la corriente que fluye entre el drenaje y la fuente.

La vida útil de la memoria no volátil se mide en términos de ciclos de borrado. La desventaja de NOR es que el número de ciclos de borrado es aproximadamente 1/10 del de la memoria NAND. Muchas versiones del PIC32 solo permiten que la memoria flash se actualice 1000 veces, mucho menos que los típicos 100 000 ciclos de borrado de las EEPROM.

Por lo tanto, no es tan importante si los diseñadores hicieron que el estado predeterminado sea 1 o 0 (eligieron el valor que permitió la implementación más fácil); lo importante es que primero hay que borrar un bloque de flash (lo que lleva tiempo) y luego reprogramar todo el bloque (incluso si se cambia una sola palabra (lo que requiere una cantidad sustancial de RAM).

Este borrado de bloques del dispositivo se remonta a las primeras EPROM (ROM programable borrable), que procedían de las EEPROM. El código se programaba en chips (como el 27128 de 16KB) y se colocaba en los zócalos. Estos chips tenían una pequeña ventana en la parte superior que permitía que la luz brillara en el dado. Cuando había que cambiar el programa, los chips se colocaban en un borrador UV durante unos 20 minutos, lo que borraba todo el chip. Entonces el chip sería programado con el nuevo programa.

Algunas EEPROM requieren el borrado de bloques de memoria antes de la programación; otros permiten escribir un byte a la vez (el controlador EEPROM en realidad borra el byte primero y luego lo programa).

Esta es una excelente descripción general de cómo se accede a las memorias no volátiles, pero en realidad no aborda POR QUÉ el estado borrado es '1' y no '0'.
@akohlsmith Agregué esa información para que sea más completa. Pero el problema real no es si la celda predeterminada es un 1 o un 0; esto podría revertirse simplemente poniendo inversores en cada línea de datos. El problema real es por qué existe un estado predeterminado en primer lugar; es decir, puede escribir un 0 en lugar de un 1; este último requiere borrar en bloques.
No estoy de acuerdo, la pregunta parecía bastante específica sobre por qué el estado borrado está 'establecido' en lugar de 'borrado'; de todos modos, me encanta tu respuesta y +1 de mí (no es que sea alguien, solo un extraño de Internet al azar al que le gusta Tu respuesta)
@akohlsmith Estoy de acuerdo con usted en que, por convención, los estados establecidos suelen ser 1 y, de hecho, así es como funcionan las celdas individuales. Se necesitaría algo de hardware adicional (no mucho) para revertirlo, y no había necesidad de hacerlo: 1 ya que el valor predeterminado estaba bien.
Esta es una respuesta genial. Pero creo que será más fácil de entender si dice: no puede programar 1 en estos dispositivos, solo puede programar 0. Si desea programar 1, debe borrar los dispositivos y restaurar todo el bloque al estado predeterminado de 1, y luego programar 0 según sea necesario. . Por ejemplo, para programar 0101a 1010, tienes que hacer en esta secuencia: 0101->(borrar)-> 1111->(programar 0's)-> 1010. O esencialmente, significa que la escritura de 1 y la escritura de 0 se realizan con una granularidad diferente .

En la memoria flash moderna, no conozco ninguna razón para elegir unos sobre ceros como valor predeterminado. Las lecturas se realizan a través de amplificadores de detección de corriente diferencial, por lo que, en principio, podría tomar la salida de cualquier lado. (Las primeras EEPROM podrían haber tenido circuitos de lectura más simples, no estoy seguro).

Hay una buena razón para no agregar inversores adicionales: aumentaría el retraso de propagación de la memoria a la CPU. En los microcontroladores, la ruta de datos de la memoria flash a la CPU tiene un gran efecto en el rendimiento general del sistema, ya que determina cuánto tiempo lleva obtener nuevas instrucciones.

Los diseñadores de circuitos digitales a menudo esperan que cero signifique borrar/restablecer/borrar. Pero los transistores flash y los circuitos de lectura son analógicos. Desde ese punto de vista, describir el estado de conducción del transistor flash como uno lógico tiene más sentido. Y da la casualidad de que pasar de un uno a cero es mucho, mucho más rápido que pasar de cero a uno, por lo que uno se convierte en el estado "borrado" mientras que el cero se convierte en el estado "programado".

Versión corta: los físicos de semiconductores y los diseñadores de circuitos analógicos no se preocupan por sus intuiciones digitales. :-)

No estoy seguro de qué está citando, pero al salir de la página de Wikipedia para la memoria flash, parece ser el resultado del hardware detrás de la memoria flash:

Una celda flash NOR de un solo nivel en su estado predeterminado es lógicamente equivalente a un valor binario "1", porque la corriente fluirá a través del canal bajo la aplicación de un voltaje apropiado a la puerta de control, de modo que el voltaje de la línea de bits se reduzca".

Si tuviera que usar otro tipo de flash, por ejemplo, NAND, el estado predeterminado sería 1 porque la salida de NAND es 1 cuando cualquiera de las salidas de los transistores está por debajo de su voltaje de umbral alto/bajo.

Disculpas si perdí totalmente el tren en lo que estabas preguntando, también soy bastante nuevo en todo esto.

Pero dado que hay un circuito entre las celdas y los pines, que como la mayoría de las construcciones lógicas probablemente realiza inherentemente una serie de inversiones implícitas, ¿por qué el estado borrado se usa necesariamente como un "0" y no como un "1"?
No entiendo muy bien su pregunta: ¿el estado ERASE no se usa como "1"? Pregunto con respecto a esto (bajo "FUNCIONAMIENTO Y CARACTERÍSTICAS DE LA CELDA DE MEMORIA EEPROM").
Qué estado eléctrico de la celda en sí corresponde a qué estado lógico de la interfaz externa parece casi arbitrario, ya que hay múltiples, probablemente implícitamente, elementos de circuito de inversión entre los dos.
@ChrisStratton Creo que Ilee94 dijo que el estado borrado es en realidad un 1. Pero en realidad es arbitrario: si coloca inversores en las líneas de datos, sería como lo describió. 1 como estado predeterminado simplemente requiere un poco menos de hardware.
O un poco más de hardware: realmente depende de si hay un número par o impar de elementos de circuito de inversión implícita entre la celda y la salida.

Las ROM y PROM de hace mucho tiempo tenían que manipularse agregando metal en la capa de máscara durante la fabricación o quemándolo durante la programación y ambos procesos tenían un estado alto predeterminado cuando se fabricaban. Tenerlos predeterminados en BAJO habría costado más transistores, reducido la conveniencia de programación o la velocidad de operación de alguna manera.

Desde entonces, se ha convertido en una convención porque sería posible agregar un inversor en algún punto de la ruta de datos en estos días.

La convención puede haber comenzado en los días de las matrices de memoria lógica de diodos que tenían diodos para extraer líneas de datos cuando se direccionaban y las palabras de memoria no utilizadas no tenían diodos en lugar de todos los diodos. La mayoría de los primeros estándares lógicos digitales se bajaron activamente y flotaron alto si no.