비 휘발성 메모리의 대부분이 기본 상태로 논리 1을 갖는 이유는 무엇입니까?


14

임베디드 응용 프로그램에서 EEPROM 및 FLASH 메모리와 같은 비 휘발성 메모리를 사용 했으며 항상 사용하지 않는 메모리 (EEPROM / FLASH) 비트 위치가 항상 1기본적으로 설정되어 있음을 발견 했습니다. 왜 이것이 대신 사용 0됩니까?

예를 들어, 0 번째 주소 (메모리의 첫 바이트)와 같은 주소는 사용자가 기록하지 않은 경우 항상 저장 0xff하고 저장 하지 않습니다 0x00. 왜 메모리 칩을 만든 사람들이 그렇게 유지 했습니까? 기본 메모리 위치를 유지 0xff하여 제조업체에게 이점이나 중요한 점을 제공 할 것입니다.

메모리 칩에서이 구조의 이유는 무엇입니까?

답변:


20

플래시 메모리 프로그래밍에 대해 이야기 하겠지만 플래시 메모리는 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 컨트롤러는 실제로 바이트를 먼저 지우고 프로그램합니다).


2
이것은 비 휘발성 메모리에 액세스하는 방법에 대한 훌륭한 개요이지만 실제로 지워진 상태가 '0'이 아닌 '1'인 이유를 설명하지는 않습니다.
akohlsmith

1
@akohlsmith 더 자세한 정보를 추가했습니다. 그러나 실제 문제는 기본 셀이 1인지 0인지 여부가 아닙니다. 이것은 각 데이터 라인에 인버터를 놓는 것만으로도 역전 될 수 있습니다. 실제 문제는 처음에 기본 상태가있는 이유입니다. 즉, 1이 아닌 0을 쓸 수 있습니다. 후자는 블록에서 지우기가 필요합니다.
tcrosley

1
동의하지 않습니다. 질문은 왜 지워진 상태가 '명확한'보다는 '설정된'이유에 대해 매우 구체적으로 보입니다. 당신의 답변)
akohlsmith

1
@akohlsmith 나는 컨벤션에 의해 설정 상태가 일반적으로 1이며 실제로 개별 셀이 작동하는 방식이라는 것에 동의합니다. 그것을 뒤집는 데 약간의 추가 하드웨어가 필요하지 않으므로 그렇게 할 필요가 없었습니다. 1 기본값은 좋았습니다.
tcrosley

이것은 좋은 대답입니다. 그러나 나는 말하면 이해하기가 더 쉬울 것이라고 생각합니다.이 장치에 1을 프로그래밍 할 수 없으며 0 만 프로그래밍 할 수 있습니다. 1을 프로그래밍하려면 장치를 지우고 전체 블록을 기본 1 상태로 복원 한 다음 필요에 따라 0을 프로그래밍해야합니다. . 예를 들어에 프로그래밍 0101하려면 -> (erase)-> -> (program 0 's)-> 1010순서로 수행해야 합니다. 또는 본질적으로 이는 1의 쓰기와 0의 쓰기가 다른 세분성으로 수행됨을 의미 합니다 . 010111111010
smwikipedia

4

현대 플래시 메모리에서는 0보다 큰 값을 기본값으로 선택해야 할 이유가 없습니다. 판독은 차동 전류 감지 증폭기를 통해 수행되므로 원칙적으로 양쪽에서 출력을 얻을 수 있습니다. (첫 번째 EEPROM에는 더 간단한 읽기 회로가 있었을 수도 있습니다. 확실하지 않습니다.)

이다 는 CPU에 메모리에서 전파 지연을 증가 할 것 - 별도의 인버터를 추가하는 안 좋은 이유는. 마이크로 컨트롤러에서 플래시 -CPU 데이터 경로는 새로운 명령을 가져 오는 데 걸리는 시간을 결정하므로 전체 시스템 성능에 큰 영향을 미칩니다.

디지털 회로 설계자들은 종종 0을 클리어 / 리셋 / 지우기를 의미합니다. 그러나 플래시 트랜지스터와 읽기 회로는 아날로그입니다. 이러한 관점에서, 플래시 트랜지스터의 전도 상태를 논리적 인 것으로 기술하는 것이 더 의미가있다. 그리고 1에서 0으로가는 것이 0에서 1로가는 것보다 훨씬 빠르므로 0은 "삭제 된"상태가되고 0은 "프로그램 된"상태가됩니다.

짧은 버전 : 반도체 물리학 자와 아날로그 회로 설계자는 디지털 직관에 신경 쓰지 않습니다. :-)


1

인용 한 내용이 확실하지 않지만 플래시 메모리에 대한 Wikipedia 페이지 를 벗어나면 플래시 메모리 뒤에있는 하드웨어의 결과 인 것 같습니다.

기본 상태의 단일 레벨 NOR 플래시 셀은 논리적으로 이진 "1"값과 동일합니다. 전류는 적절한 전압을 제어 게이트에 적용하여 채널을 통해 제어 게이트에 흐르기 때문에 비트 라인 전압이 낮아지기 때문입니다. "

다른 유형의 플래시 (예 : NAND)를 사용하는 경우 트랜지스터의 출력 중 하나가 높은 / 낮은 임계 값 전압보다 낮을 때 NAND의 출력이 1이므로 기본 상태는 1이됩니다.

당신이 요구 한 것에 대해 배를 놓친다면 사과 할 것입니다.


1
그러나 셀과 핀 사이에 회로가 ​​있다는 점을 감안할 때 대부분의 논리 구조가 본질적으로 많은 암시 적 반전을 수행하는 것처럼 왜 소거 된 상태가 "1"이 아닌 "0"으로 사용됩니까?
Chris Stratton

귀하의 질문을 잘 이해하지 못합니다. ERASE 상태가 "1"로 사용되지 않습니까? 나는에 대한 질문 ( "EEPROM 메모리 셀의 작동 및 특성"아래).
llee94

셀 자체의 어떤 전기적 상태가 외부 인터페이스 의 어떤 논리적 상태가 거의 임의적으로 보이는지에 해당합니다.
Chris Stratton

1
@ChrisStratton Ilee94는 지워진 상태가 실제로 1이라고 말했다고 생각합니다. 그러나 실제로는 임의적입니다. 인버터를 데이터 라인에 배치하면 설명 된대로됩니다. 기본 상태 인 1은 하드웨어를 덜 요구합니다.
tcrosley

또는 조금 더 많은 하드웨어-실제로 셀과 출력 사이에 암시 적으로 반전되는 회로 요소가 홀수 또는 짝수인지 여부에 달려 있습니다.
Chris Stratton

1

ROM과 PROM은 제조 과정에서 마스크 층에 금속을 추가하거나 프로그래밍 과정에서 금속을 태워서 조작해야했을 때 되돌려졌으며 두 공정 모두 제조시 기본적으로 높은 상태를 유지했습니다. 기본값을 LOW로 설정하면 더 많은 트랜지스터가 필요하고 프로그래밍 편의성 또는 작동 속도가 저하됩니다.

요즘 데이터 경로의 특정 지점에 인버터를 추가 할 수 있기 때문에 이제는 관례가되었습니다.

컨벤션은 데이터 라인을 처리 할 때 데이터 라인을 풀다운하는 다이오드가있는 다이오드 로직 메모리 어레이 시대에 시작되었을 수 있으며 사용되지 않은 메모리 워드에는 모든 다이오드 대신 다이오드가 없습니다. 대부분의 초기 디지털 로직 표준은 적극적으로 낮게 끌어 당겨졌으며 그렇지 않은 경우 높게 떠 올랐습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.