EEP롬
EEP롬(EEPROM, Electrically EPROM, Electrically erasable programmable read-only memory)은 전기 공급이 끊긴 상태에서도 장기간 기억하는 비휘발성 기억 장치이다. 기록된 데이터를 지우고 쓰는 것이 가능하다. 칩을 구성하는 소자의 전하를 전기적으로 변화시킴으로써 데이터를 기록하거나 지울 수 있다. 변경할 필요성이 있는 LCD패널, 전화기, 전자레인지,자동세탁기 등 가전제품이나 민수용 통신기기에 많이 쓰인다.
개요[편집]
이스퀘어피롬이라고 부르기도 한다. 전기적인 신호를 이용하여 기억된 내용을 지우고 다시 기록할 수 있는 롬이다. 자외선을 쓰지 않고도 내용을 지운 다음 재기록 할 수 있기 때문에 매우 편리하다. 제품에 따라서는 롬 라이터 없이 기록이 가능한 제품도 있다. 예전엔 메인보드의 ROM으로 EEPROM을 써서 바이오스 펌웨어를 저장했었다.
세대가 올라갈수록 바이오스 저장용 롬도 종류가 계속 바뀌는데, 먼 옛날에는 아예 엄청 큰 IC형 롬이었다가 펜티엄 3 정도부터 사각형 롬을 사용하더니 대략 샌디브릿지부터는 3.5V DIP8 타입 롬을 사용한다. 그러다가 250 보드 이후부터는 보드에 실장되는 1.8V 200mil SOP8 타입이 주로 사용되는중. 노트북은 슬림해야해서 일찌감치 SOP8을 썼다.
UEFI로 넘어온 요즘은 용량과 가격 문제로 펌웨어 저장장치를 플래시 메모리 모듈로 많이 넘어왔지만. 용량보다 안정성이 필요한 분야에는 아직도 많이 쓰인다.
이처럼 플래시 메모리에 밀려 점점 사용 빈도가 낮아지고 있는 제품이다. 그러나 플래시 메모리보다 제어가 매우 쉽고 기록 후 데이터를 유지할 수 있는 수명이 길고 쓰기 가능 횟수가 플래시 메모리보다 훨씬 많다. EEPROM 중에는 수십년 수명에 쓰기가 수천만번까지 가능한 제품도 있다. 소용량의 제품은 가격이 저렴하다. 그래서 밥솥이나 냉장고 같은 가전제품이나 1990년대 기술에 기반한 일부 라디오, 카세트(예: PLL 라디오 튜너 내장 워크맨)에는 아직도 현역으로 쓰이고 있으며 주로 임베디드 시스템용 마이크로컨트롤러(주로 메모리 통합 제품)에 데이터 저장용으로 소용량(몇백~몇 KB 정도) 포함되는 경우도 많다. 또한 작은 크기의 디지털 센서들은 메모리를 플래시를 사용하지 않고 대부분 EEPROM을 사용한다.
역사[편집]
Hughes Aircraft의 엘리 하라이(Eli Harari)는 1977년 얇은 부동 게이트를 통한 파울러 노드하임 터널링을 이용하여 EEPROM을 발명했다. 그는 그 뒤 최초의 EEPROM 장치 개발에 착수하였고, 1983년 인텔의 George Perlegos가 인텔 2816이라는 제품을 처음 개발하였다.
- ROM의 변천 과정
ROM은 Read-only memory의 줄임말로, 말 그대로 읽기만 가능한 메모리라는 뜻이다. 하지만 이건 아주 옛날 이야기고, 최근 생산되는 대부분의 ROM은 적어도 한번 이상은 정보를 수정 가능하게끔 되어있다.
ROM이 처음 세상에 등장했을 때는 공장에서 제조될때 바로 데이터가 저장되어 고정된 채 생산되었다. 그랬기 때문에 후에 데이터를 변경하는 것이 불가능 했다. 여기서 한발자국 더 나아간 것이 PROM이다. PROM(Programmable ROM)은 이름에서 보다시피 '프로그래밍 가능한' 롬이다. 프로그래밍 가능하다는 것은 내부의 회로를 변경해서 데이터를 수정할 수 있다는 말이다. 그러나 내부의 퓨즈를 끊어서 정보를 저장하는 방식이기 때문에 한번 데이터를 설정하면 그 이후에는 변경하지 못한다.
이것을 보완해서 나온 것이 EPROM(Erasable PROM)이다. EPROM은 자외선을 이용해서 정보를 지우며, 여러번 썼다 지웠다 할 수 있다. EPROM을 다시 보완해서 나온 것이 오늘 살펴볼 EEPROM이다. 자외선을 이용해서 정보를 지워야 하는 EPROM과는 다르게 전기적으로 지웠다 썼다 할 수 있기 때문에 쓰는 속도가 매우 빠르고, 전용 롬라이터(롬을 기록할 수 있도록 해주는 장비)가 없어도 손쉽게 다룰 수 있다. 심지어 EEPROM을 RAM의 대용으로 사용하는 경우도 있다. 예를 들어 Atmega328같은 마이컴에는 내부에 약 1kb정도의 EEPROM이 있는데, RAM용량이 부족한 경우 RAM대용으로 상수나 자주 사용하지 않는 변수 등을 여기에 담아서 활용하기도 한다. 물론 RAM보다는 훨씬 느리므로 사용하는데 한계는 있다.
특징[편집]
UVEPROM이 자외선을 쏘며 내용을 지우는 반면 EEPROM은 전기적으로만 지울 수 있는 PROM으로 칩의 한 핀에 전기적 신호를 가해줌으로써 내부 데이터가 지워지게 되어 있는 롬이다. 데이터를 삭제하기 위한 전용 이레이저가 따로 필요하지 않으며 하나의 롬 라이터를 사용해서 쓰고 지울 수 있다. 그러나 EEPROM은 전기를 노출시킴으로써 한 번에 1 바이트씩만 지울 수 있기 때문에 플래시 메모리와 비교하면 매우 느리며 반복 기록 횟수에 제한이 있는데 약 10만 번 정도이다.
EEPROM은 인터페이스에 따라 직렬 버스와 병렬 버스로 나뉜다.
- 직렬 버스
- 보통 SPI나 I²C, 1-Wire 인터페이스로 8핀 패키지로 구성된다.
- 동작에 OP-Code, 주소, 데이터의 3 단계가 필요하다.
- 병렬 버스
- 보통 8비트 데이터 버스로 칩 셀렉트와 쓰기 방지 핀을 가지고 있다.
- 단순하고 빠르게 작동되지만 크기가 크고 핀 수(32개 이상)가 많다.
EEPROM은 모뎀이나 비디오 카드, 메인보드, SCSI 컨트롤러 등에서 사용된다. 모뎀의 경우에는 내부에 사용자가 AT명령을 통해서 설정한 상태가 전원을 껐다 켠 후에도 그대로 유지되는데. 이것은 EEPROM에서 그 상태를 저장해 놓기 때문이다. 대부분의 비디오카드, 메인보드, SCSI 컨트롤러 등에서 EEPROM을 사용해 점퍼없이 설정상태를 저장한다.
사용방법[편집]
병렬 통신[편집]
아래는 256Kb(256k x 8)의 용량을 가진 병렬 통신 방식의 AT27C020의 핀이다. 딱봐도 핀이 매우 많다.
A0~A17 : 주소
O0~O7 : 데이터주소
CE : 칩 활성화주소
OE : 출력 활성화주소
PGM : 프로그램 Strobe
- 읽기 과정
CE핀과 OE핀 모두 Active-Low이므로 우선 두 핀 모두 High를 입력한다. 맨 처음에 할 것은 주소 핀에 원하는 주소값을 입력하는 것이다. 주소값의 입력이 끝났다면 CE핀에 Low를 입력한다. 이렇게 하면 EEPROM이 활성화 될 것이다. 그 다음에는 OE핀에 LOW를 입력한다. OE핀을 LOW상태로 두면 출력이 활성화 될 것이다. 이렇게 하면 데이터 핀에 원하는 데이터를 받아볼 수 있다.
- 쓰기 과정
읽기 과정과 마찬가지로, Active-Low인 핀들을 모두 High 상태로 유지한다. (CE,OE,PGM) 그다음 CE에 low를 입력해 칩을 활성화 시켜준다. 그다음 원하는 데이터를 데이터 핀에 입력시켜준다. 저장하고 싶은 데이터를 모두 세팅했다면 그 다음에는 PGM핀에 Low를 입력한다. 이 과정으로 데이터가 ROM에 저장되는 것이다. 이때 만드시 OE핀은 High를 유지하고 있어야 한다는 것을 기억해야 한다. 읽기가 끝날때 까지는 대략 100us정도의 시간이 소요된다. (이 시간은 EEPROM마다 다를 수 있으니 데이터시트를 반드시 확인하도록 한다.) 이 시간이 끝나면 PGM핀에 다시 High를 입력하면 된다.
직렬 통신[편집]
위에서 본 병렬 통신 EEPROM의 가장 큰 문제는 핀의 숫자가 너무 많다는 것이다. 그렇기 때문에 핀 숫자를 하나라도 더 줄여야 하는 마이컴 입장에서는 사용하기 매우 부담스럽다. 직렬 통신 방식의 EEPROM을 이용하면 핀 숫자를 줄일 수 있다. 다만 병렬 방식에 비해서 속도가 조금 더 느리다는 단점은 있다. 직렬 통신방식의 EEPROM도 통신 인터페이스에 따라 여러 종류가 있다.
아래는 약 1kb(64k x 16)의 용량을 가진 직렬 통신 방식의 AT93C46E이다. 위의 EEPROM과 같은 ATmel社의 제품이다.
핀을 보면 위의 병렬통신 방식보다 훨씬 핀 수가 적은 것을 알 수 있다.
CS : 칩 셀렉트
SK : 통신 클럭
DI : 데이터 입력
DO : 데이터 출력
직렬 통신 방식의 EEPROM은 총 7가지 종류의 신호를 받는다.
READ : 읽기 신호
WRITE : 쓰기 신호
ERASE : 지우기 신호
EWEN : 지우기/쓰기 활성화(erase/write enable)
EWDS : 지우기/쓰기 비활성화(erase/write disable)
ERAL : 전체 지우기(erase all)
WRAL : 전체 쓰기(write all)
맨 처음 EEPROM에 전원이 인가된다면, EEPROM의 상태는 EWDS 상태이다. 즉, 지우기/쓰기가 비활성화 되어있는 상태이며 읽기만 가능하다. 쓰기를 하기 위해서는 지우기/쓰기를 활성화 해야 한다. 그러기 위해서는 EEPROM에 EWEN 신호를 보내면 된다.
클럭이 인가되면 먼저 CS(칩 셀렉트)핀에 HIGH를 입력해서 칩을 활성화 시킨다. 그 다음 SK(클럭)에 클럭 신호를 주면서 DI핀에 차례로 1,0,0,1,1 신호를 준다. 최소 필요한 클러 사이클이 9이므로, 1,0,0,1,1 신호를 주고 4번 더 대기한다.(1,0,0,1,1같이 데이터 앞에 보내는 신호를 opcode라고 부른다.) 그 다음 CS(칩 셀렉트)핀에 LOW를 입력했다 HIGH를 입력하면 최종으로 끝난다. 이제 지우기/쓰기가 활성화 되었으므로, 지우기나 쓰기 신호를 주면서 롬에 데이터를 쓰면 된다. 데이터를 쓰는 과정이 끝났다면 원치 않는 데이터가 작성되는 것을 막기 위해 반드시 EWDS 신호를 주도록 한다.
앞서 설명한 EWEN과 비슷한데, 1,0,0,0,0의 순서로 신호를 주는 것이 차이점이다.
읽기, 지우기/쓰기 과정을 화살표로 그리면 다음과 같다.
읽기 : EWDS 신호 -> READ신호
지우기/쓰기 : EWEN 신호 -> WRITE/ERASE/ERAL/WRAL 등 읽기/쓰기 신호 -> EWDS 신호
이제 지우기/쓰기 과정에 대해서 설명하도록 하겠다.
위는 WRITE신호의 타이밍도이다. 먼저 CS에 HIGH, DI에 1,0,1을 입력한 뒤 주소를 끝에서 부터(A0~A14까지 있으면 A14~A0까지)입력하고, 데이터 또한 마찬가지로 끝에서 부터 입력한다. 그 다음에 CS 핀을 껐다 다시 키면 쓰기가 진행된다. EEPROM이 데이터를 쓰는 동안에는 DO에 LOW가 출력될 것이고(Busy상태), 쓰기가 끝난다면 HIGH가 출력 될 것이다.
ERASE신호도 WRITE신호와 비슷하다. 다만 1,0,1이 아니라 1,1,1의 신호를 주고, 주소 정보만 보내주면 된다.
ERAL(전체 지우기)같은 경우에는 1,0,0,1,0 신호를 보낸다. ERAL 신호의 사이클 수는 ERASE와 동일하다.
WRAL(전체 쓰기)같은 경우에는 1,0,0,0,1의 신호를 보낸다. WRITE 신호와 사이클 수는 똑같다. 다만 주소데이터는 보내지 않고, 주소 데이터 뒤에 쓸 데이터 정보만 보내는 것이 차이점이다.
참고자료[편집]
- "EEPROM", 《위키백과》
- "ROM", 《나무위키》
- "EEPROM", 《한경 경제용어사전》
- kcal2845 , 〈EEPROM이란? EEPROM 사용하는 방법〉, 《티스토리》, 2019-01-21
같이 보기[편집]