플래시 메모리 프로그래밍에 대해 이야기 하겠지만 플래시 메모리는 1980 년대 중반 EEPROM에서 파생 되었기 때문에 많은 자료가 EEPROM (Electrically Erasable Programmable ROM)과 유사합니다. 아래에서 설명하는 것처럼 물리적 관점에서 기본 상태는 1입니다. 그러나 더 중요한 것은 기본 상태 가 왜 있는지 설명 할 것입니다. 지난 번부터 이미 프로그래밍 된 것 위에 임의로 프로그래밍 할 수는 없습니다.
인터페이스는 마이크로 컨트롤러의 메모리 맵 내에 데이터를 배치하는 데 가장 적합하기 때문에 거의 항상 프로그램 플래시에 대해 NOR 플래시가 선택됩니다. 데이터는 한 번에 한 단어 씩 읽을 수 있으며, 여기서 단어는 마이크로 컨트롤러의 데이터 폭 (일반적으로 8, 16 또는 32 비트)으로 정의됩니다. 반면 NAND 플래시는 하드 드라이브를 교체하고 순차적으로 작동하도록 개발되었습니다.
그러나 프로그래밍은 조금 더 복잡해집니다. 이미 언급했듯이 NOR 플래시 및 NAND 플래시, EEPROM 및 EPROM과 같은 기타 비 휘발성 메모리의 기본 상태는 논리 1입니다. 이러한 장치에는 1을 프로그래밍 할 수 없으며 0 만 프로그래밍 할 수 있습니다. 예를 들어 0x0123을 포함하는 바이트가 있고 0x3210으로 변경하려는 경우 RAM의 바이트를 덮어 쓰는 것과 같이 직접 수행 할 수 없습니다.
대신 메모리의 비트를 지워야하므로 이미 언급 한 기본 1 상태가됩니다. 이것은 단어가 아닌 블록에서만 수행 할 수 있습니다. 가장 최근에 작업 한 Microchip PIC32에서 지울 수있는 최소 블록 크기는 4096 바이트입니다. 따라서 한 단어 (32 비트) 만 변경하려면 4K의 메모리를 읽고 블록을 지우고 4K의 메모리를 플래시에 다시 써야하지만 필요한 경우 새 32 비트 값을 포함해야합니다. 이 지우기에는 약간의 시간이 걸릴 수 있습니다.
다음은 플래시 메모리 셀의 사진입니다. Flash는 플로팅 게이트에서 전자를 제거하거나 배치하여 데이터를 저장합니다. 전자가 플로팅 게이트에 존재하면 트랜지스터를 통해 전류가 흐르지 않고 0을 나타냅니다. 전자가 플로팅 게이트에서 제거되면 트랜지스터가 전도를 시작하여 1을 나타냅니다. 다른 방법이지만 모든 데이터 라인에 인버터가 필요했습니다.)
작업을 지 웁니다. 플로팅 게이트는 음전하를 갖지 않기 때문에 플래시 메모리 셀 (단일 레벨 NOR 플래시 셀)의 기본 상태는 1입니다. 플래시 메모리 셀 소거 (1로 재설정)는 소스 및 제어 게이트 (워드 라인)에 전압을 적용하여 달성됩니다. 전압의 범위는 -9V ~ -12V입니다. 또한 소스에 약 6V를 적용하십시오. 플로팅 게이트의 전자는 양자 터널링에 의해 풀링되어 소스로 전달됩니다 . 다시 말해, 전자는 플로팅 게이트에서 소스 및 기판으로 터널링한다.
소거는 고전압을 사용하므로 블록 단위로 소거 할 경우 다이 면적이 줄어 듭니다. 따라서 전압은 한 번에 전체 행의 트랜지스터에만 적용될 수 있습니다.
쓰기 를 위해 다음 절차에 따라 NOR 플래시 셀을 프로그래밍하거나 0으로 설정할 수 있습니다. 기록하는 동안, 약 12V의 고전압이 제어 게이트 (워드 라인)에인가된다. 비트 라인 (드레인 단자)에 약 7V의 고전압이인가되면 셀에 0이 저장된다. 이제 채널이 켜지므로 전자가 소스에서 드레인으로 흐를 수 있습니다. 소스-드레인 전류는 일부 고 에너지 전자가 핫-전자 주입이라 불리는 프로세스를 통해 절연 층을 통해 플로팅 게이트로 점프하도록 충분히 높다.
판독을 위해, 약 5V의 전압이 제어 게이트에인가되고 약 1V가 드레인에인가된다. 메모리 셀의 상태는 드레인과 소스 사이에 흐르는 전류에 의해 구별된다.
비 휘발성 메모리의 사용 수명은 소거 주기로 측정됩니다. NOR의 단점은 소거주기의 수가 NAND 메모리의 약 1/10이라는 것입니다. PIC32의 많은 버전은 플래시 메모리를 EEPROM의 일반적인 100,000 회 지우기주기보다 1000 배만 업데이트 할 수 있습니다.
따라서 설계자가 기본 상태를 1 또는 0으로 설정 한 경우 (가장 쉬운 구현을 허용하는 값을 선택) 중요하지 않습니다. 중요한 것은 플래시 블록을 먼저 지우고 (시간이 걸리는) 단일 단어가 변경 되더라도 (대량의 RAM이 필요한 경우에도) 전체 블록을 다시 프로그래밍해야한다는 것입니다.
이 장치 지우기 블록은 첫 번째 EPROM (Erasable Programmable ROM)으로 돌아갑니다. EEPROMs 코드는 16KB 27128과 같은 칩으로 프로그래밍되어 소켓에 배치되었습니다. 이 칩들은 위에 작은 창문이있어서 다이에 빛을 비출 수있었습니다. 프로그램을 변경해야 할 때 칩을 UV 지우개에 20 분 정도 넣어 칩 전체를 지 웁니다. 그런 다음 새 프로그램으로 칩을 프로그래밍합니다.
일부 EEPROM은 프로그래밍 전에 메모리 블록을 지워야합니다. 다른 것들은 한 번에 바이트 쓰기를 허용합니다 (EEPROM 컨트롤러는 실제로 바이트를 먼저 지우고 프로그램합니다).