Voy a hablar de memoria flash de programación, pero una gran cantidad de material será similar a la de EEPROMs (Eléctricamente Borrable Programable ROM), ya que la memoria flash se deriva de EEPROMs a mediados 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é no es un estado predeterminado -- usted no puede arbitrariamente programa en la parte superior de lo que ya está programada a partir de la última vez.
NI el flash es casi siempre elegido para el programa de flash ya que la interfaz es el más adecuado para la colocación de los datos en el mapa de memoria del microcontrolador -- dirección completa y datos de los buses de imitar RAM y permitir el acceso aleatorio a cualquier lugar. Los datos se pueden leer una palabra en un tiempo, donde una palabra se define como la anchura de datos del microcontrolador, generalmente de 8, 16 o 32 bits. NAND flash, por otro lado fue desarrollado para reemplazar las unidades de disco duro y funciona de forma secuencial.
Sin embargo, la programación se vuelve un poco más complicado. Como ya se ha mencionado, el estado predeterminado para NI flash y otros no volátil de los recuerdos como NAND flash, memorias eeprom, e incluso EPROMs es un 1 lógico. Usted no puede programar de 1 a estos dispositivos, sólo puede programa 0. Así, por ejemplo, si usted tiene un byte que contiene 0x0123 y desea cambiar a 0x3210, usted no puede hacerlo directamente, como la escritura de más de un byte en la memoria RAM.
En lugar de ello, los bits en la memoria que debe ser borrado, lo que les sitúa en el valor predeterminado de 1 estado ya se ha mencionado. Esto sólo puede hacerse en bloques, no en las palabras. En el Microchip PIC32, que he trabajado con la mayoría de los últimamente, el tamaño mínimo de bloque que se puede borrar, es de 4096 bytes. Así que si usted quiere cambiar una sola palabra (32 bits), tendría que leer el 4K de memoria, borrar el bloque, a continuación, escribir el 4K de memoria flash, pero incluyendo el nuevo valor de 32 bits según sea necesario. Este borrado puede tomar algún tiempo, una buena parte de un segundo.
La siguiente es una imagen de un flash de celda de memoria. 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 los electrones se eliminan de la puerta flotante, el transistor empieza a conducir, lo que indica un 1. (Esto es por convención-que podría haber sido de otra manera, pero requería de los inversores en todas las líneas de datos.)
![enter image description here]()
Operación de borrado. El estado predeterminado de las celdas de memoria flash (un solo nivel NI el flash de la célula) es 1 porque flotante, puertas de transportar cargas negativas. Borrado de una memoria flash de celda (restablecer un 1) se logra mediante la aplicación de un voltaje a través de la fuente y la puerta de control (palabra de la línea). El voltaje puede estar en el rango de -9V-12V. Y también se aplican alrededor de 6V a la fuente. Los electrones en la puerta flotante son sacados y trasladados a la fuente de túnel cuántico. En otras palabras, los electrones túnel de la puerta flotante a la fuente y sustrato.
Debido a que el borrado de los usos altos voltajes, por lo que el borrado de bloques requiere menos área de la matriz. De modo que los voltajes sólo puede ser aplicada a toda la filas de transistores en un momento.
Para escribir, un flash NOR de la célula puede ser programado, o establecer un 0 por el siguiente procedimiento. Mientras que la escritura, de un alto voltaje de alrededor de 12V se aplica a la puerta de control (palabra de la línea). Si un alto voltaje de alrededor de 7V se aplica a poco (Línea de drenaje de la terminal), un 0 se almacena en la celda. El canal está ahora activada, por lo que los electrones pueden fluir desde la fuente al drenaje. La fuente de corriente de drenaje es lo suficientemente alta como para causar que algunos de los electrones de alta energía para saltar a través de la capa aislante en la puerta flotante a través de un proceso llamado hot-inyección electrónica.
Para la lectura, un voltaje de alrededor de 5V se aplica a la puerta de control y alrededor de 1V a la fuga. 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 NI, es que el número de ciclos de borrado es de alrededor de 1/10 de memoria NAND. Muchas versiones de la PIC32 sólo permitir la memoria flash para ser actualizado 1000 veces, la manera menos la típica de 100.000 ciclos de borrado de memorias eeprom.
Así que no es tan importante si los diseñadores de hecho el estado por defecto es 1 o 0 (se escogió el valor que permite la implementación más sencilla); lo importante es que uno tiene que borrar un bloque de flash primero (que lleva su tiempo), y luego volver a programar el bloque entero (incluso si una sola palabra se va a cambiar (que requiere una cantidad considerable de memoria RAM).
Este bloque de borrado del dispositivo se remonta a la primera EPROMs (Erasable Programmable ROM), la cual procedió EEPROMs El código fue programado en fichas (como el 16KB 27128) y se coloca en los zócalos. Estos chips había una pequeña ventana en la parte superior que permite que la luz brille en el molde. Cuando el programa tuvo que ser cambiado, las fichas se colocan en una UV borrador por 20 minutos o así, que iba a borrar todo el chip. A continuación, el chip podría ser programado con el nuevo programa.
Algunos EEPROMs requieren de borrar de bloques de memoria antes de programación; otros permiten la escritura de un byte en un momento (la EEPROM controlador en realidad se borra el primer byte y de los programas).