Voy a hablar sobre 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 más importante, voy a explicar por qué no es un estado predeterminado - se puede no sólo arbitrariamente programa en la parte superior de lo que ya está programado de la última vez.
El flash NOR casi siempre se elige para el programa flash ya que la interfaz es la más adecuada para colocar los datos dentro del mapa de memoria del microcontrolador: la dirección completa y los buses de 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, generalmente de 8, 16 o 32 bits. NAND flash, por otro lado, se desarrolló para reemplazar los discos duros y funciona de forma secuencial.
Sin embargo, la programación se vuelve un poco más complicada. Como ya se mencionó, el estado predeterminado para flash NOR y otras memorias no volátiles como flash NAND, 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 la 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 recientemente, el tamaño mínimo de bloque que se puede borrar es 4096 bytes. Por lo tanto, si desea cambiar una sola palabra (32 bits), tendría que leer el 4K de memoria, borrar el bloque y luego volver a escribir el 4K de memoria en flash pero incluyendo el nuevo valor de 32 bits según sea necesario. Esta eliminación puede llevar algo de tiempo, una buena parte de un segundo.
La siguiente es una imagen de una celda de memoria flash. Flash almacena los datos eliminando o colocando 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 los electrones se eliminan de la puerta flotante, el transistor comienza a conducir, indicando 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).
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. La eliminación 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 palabras). 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 usa altos voltajes, el borrado en bloques requiere menos área de troquel. 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 establecerla en 0 mediante el siguiente procedimiento. Mientras escribe, se aplica un alto voltaje de alrededor de 12V a la puerta de control (línea de palabras). Si se aplica un alto voltaje de alrededor de 7V a la línea de bits (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 drenaje de la fuente 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 5 V a la puerta de control y alrededor de 1 V 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 para 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 en bloque del dispositivo vuelve a las primeras EPROM (ROM programable borrable), que procedió a EEPROM. El código se programó en chips (como el 16KB 27128) y se colocó en zócalos. Estas fichas tenían una pequeña ventana en la parte superior que permitía que la luz brillara en el dado. Cuando se tuvo que cambiar el programa, los chips se pusieron en un borrador de UV durante 20 minutos más o menos, lo que borraría todo el chip. Entonces el chip se programaría con el nuevo programa.
Algunas EEPROM requieren borrar bloques de memoria antes de programar; otros permiten escribir un byte a la vez (el controlador EEPROM en realidad borra primero el byte y lo programa).
0101
a1010
, que tiene que hacer en esta secuencia:0101
-> (borrar) ->1111
-> (sistema de control de 0) ->1010
. O esencialmente, significa que la escritura de 1 y la escritura de 0 se realizan con granularidad diferente .En la memoria flash moderna, no conozco ninguna razón para elegir los ceros por defecto. 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).
No es una buena razón para no añadir convertidores adicionales - que aumentaría el retardo de propagación de la memoria en la CPU. En los microcontroladores, la ruta de datos de flash a 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 lógico tiene más sentido. Y sucede que pasar de uno a cero es mucho, mucho más rápido que pasar de cero a uno, de modo 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. :-)
fuente
No estoy seguro de qué es lo que estás 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:
Si usara 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 me perdí el barco por lo que me preguntabas, también soy bastante nuevo en todo esto.
fuente
Las ROM y PROM de antaño cuando tenían que manipularse agregando metal en la capa de máscara durante la fabricación o quemando en 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 momento 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 dirigían y las palabras de memoria no utilizadas no tendrían diodos en lugar de todos los diodos. La mayoría de los primeros estándares de lógica digital fueron activamente BAJADOS y flotaron alto si no.
fuente