티스토리 뷰

EEPROM이란?

EEPROM을 설명하기에 앞서 우선 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보다는 훨씬 느리므로 사용하는데 한계는 있다.


이제 EEPROM을 어떻게 사용하는지 알아보겠다. 시중에는 두가지 방식의 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)


각 신호에 대한 더 자세한 정보는 여기서 볼 수 있다. :  http://ww1.microchip.com/downloads/en/DeviceDoc/21929A_kr.pdf


맨 처음 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 신호와 사이클 수는 똑같다. 다만 주소데이터는 보내지 않고, 주소 데이터 뒤에 쓸 데이터 정보만 보내는 것이 차이점이다.


항상 지우기/쓰기 신호를 보내기 전에 EWEN신호를 보내고, 지우기/쓰기를 끝낸 다음에는 EWDS 신호를 보내야 한다는 것을 기억하도록 하자.


직렬 통신(I2C)

참고로 Atmel의 AT24시리즈 등의 제품은 직렬 통신 중에서도 I2C 통신을 이용한다. 위의 3가닥 신호선 방식과는 다르게, 2가닥의 신호선만 사용한다. 다만 앞의 방식보다는 조금 느리다. (앞의 방식은 최대 2Mhz, I2C방식은 최대 1Mhz)


I2C방식의 통신은 인터넷에 좋은 글들이 많이 올라와있다. 

다음과 같은 글을 참고하면 도움이 될 것이다. : http://realsys.co.kr/data/arm/9.I2C_EEP%EC%82%AC%EC%9A%A9.pdf



위 배치도는 I2C방식을 이용하는 EEPROM인 AT24C1024이다. 다른 I2C 통신 기기와 비슷한 모습을 볼 수 있다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함