본문 바로가기
Memory Device를 Control 한다는 것

Memory Device를 Control 한다는 것은 양방향 Device를 Control한다는 것과 같은 말이에요. 쓰기도 가능하고, 읽기도 가능하다는 얘기죠. 앞의 Device의 예에서는 CS와 Data의 관계만 들여다 봤는데, 종합적인 Device에 관한 얘기를 하려고 하는 거지요. Memory Device가 일반 Device와 다른 점은 읽기/ 쓰기가 가능하고, Address를 input으로 가진 다는 점이에요.

위의 그림은 RAM의 모양새에요. 기본적으로 Address Line 24개와 이 있고요, Data Line 16개가 있고요, Chip Select (CS/)가 있고요, OE (Output enable)이 있습니다. 그렇다 치고요. Data Line은 16개가 있으니 한번에 16bit, 2 byte를 읽을 수 있는 Memory이구요, Address는 24개가 있으니 2^24개 만큼의 Address를 구별해서 input으로 넣을 수 있어요. 그리고 CS는 RAM이 동작하게 하기 위한 Switch이고요, OE/은 output enable pin이라고 해서 Memory 입장에서는 Output을 하게 되면 MCU입장에서는 읽어가는 거구요, Output을 안 하면 MCU 입장에서는 쓸 수 (Write) 있다는 걸 의미합니다.
 
다시 이 RAM의 동작을 정리하면, 16bit Data로, 2^24개 만큼의 크기를 갖는다고도 볼 수 있겠네요.
 
2^25개 만큼의 크기는 16진수로는 0x800000 만큼의 크기이고요, (16MB). 한 주소가 2byte씩 이니까, 최종 16MB까지 저장 가능한 메모리라고 보면 되겠습니다요.
 
이걸 Device와 똑같은 원리로 읽기 동작상황을 접근해 보면요,
 
① 야~ 내가 너 쓸꺼야~ Switch를 켜고~
② Read를 해볼까?
② 주소는 말이지 0x2번지야 Address line에 약속된 전압이 없고 없고...없고.. 마지막에 ...하나 있고를 전달해 주고
③ 그럼 뭐가 들어 있었는지 Data line에 있겠지? 이거 가져갈께.
④ 야~ 고맙다, 잠시 쉬어~
 
라는 스토리인데 이걸 좀더 유식한 형태로 만들면 다음과 같아요.
 
① CE/ 를 Low로 만든다.
② OE을 High로 만든다. 실은 메모리는 Default로 Read Mode니까 OE는 High Default라고 봐야 합니다.
③ Address Line에 읽기 원하는 주소를 binary 형태로 흘려준다
④ Data Line에 뜬 16bit Data를 읽어 간다
⑤ CE 또는 CS를 HIGH로 만든다.
 
 
반대로, 쓰기 (Write) 상황이 되면 뭐가 달라질까요? OE의 control이 달라집니다. OE는 High일때 읽기 가능이니까, Low로 떨어트리면 Write하겠다는 의미로 받아들여지는 게 통상적이에요. Write와 Read용 pin이 따로 나와 있는 경우도 있습니다만, 뭐, 굳이 두 개까지 쓸 필요는 없으니까요. 보통 OE이 MCU에 연결 될때 MCU측에서는 WE/ (Write Enable/)로 표현되어 있는 게 상식이죠. ㅋ
 
① 야~ 내가 너 쓸꺼야~ Switch를 켜고~
② Write 를 해볼까?
② 주소는 말이지 0x2번지야 Address line에 약속된 전압이 없고 없고...없고.. 마지막에 ...하나 있고를 전달해 주고
③ 자 Data line에 저장할 내용을 올려줄께. 이거 가져가
④ 야~ 고맙다, 잠시 쉬어~
 
오 비슷하죠? 또 한번 유식하게~
 
① CE/ 를 Low로 만든다.
② OE을 Low로 만든다.
③ Address Line에 읽기 원하는 주소를 binary 형태로 흘려준다
④ Data Line에 뜬 16bit Data를 읽어 간다
⑤ CE 또는 CS를 HIGH로 만든다.
 
어떻습니까, 이렇게 접근하니까 간단하죠.
 

 이렇게 해서 Memory Mapped I/O와 Memory Device Control에 대한 얘기를 해 보았는데요, 모든 Device는 이것이 기본이 되어 Control 가능하답니다. 자, 잘 알아 두자고요.

Linked at 친절한 임베디드 시스템 개발자.. at 2009/10/01 12:45

... ⓒ Memory Device를 Control 한다는 것 ... more

Commented by 권상우 at 2009/09/16 21:13
잘 봤습니다..
그런데, 쓰기(write) 설명 " ④ Data Line에 뜬 16bit Data를 읽어 간다 "
에서 읽어간다가 아니라 쓴다 아닌가요..?
Commented by 히언 at 2009/09/17 00:27
으악! 그르네요. ~
하지만, (메모리가) Data Line에 뜬 16bit Data를 읽어간다~
하면 말 되죠~ 으하하~
※ 이 포스트는 더 이상 덧글을 남길 수 없습니다.
친절한 임베디드 시스템 개발자 되기 강좌 글 전체 리스트 (링크) -



댓글





친절한 임베디드 개발자 되기 강좌 글 전체 리스트 (링크) -