임베디드 시스템에 대한 관심이 점점 커지면서 임베디드 시스템의 메모리 한계 때문에 새로운 저장 장치에 대한 요구도 커져 가고 있다.
디지털 카메라와 캠코더, MP3 플레이어 등 대용량 저장 장치에 대한 요구가 증가하면서 휴대가 용이한 소형 저장 장치들에 대한 관심이 나날이 높아지고 있는 것이다. 그 중 SD/MMC 카드의 경우는 물리적인 크기가 작아 휴대가 용이하고 용량도 점점 커지는 추세이며, ‘Secure Digital Card’라는 명칭에 걸맞게 보안성도 좋아 큰 관심을 끌고 있는 저장 장치이다.
SD/MMC란 무엇인가?
SD/MMC는 Secure Digital/Multi-Media Card의 약자로 주로 디지털 데이터 저장이나 멀티미디어 데이터의 저장을 주목적으로 하는 플라스틱 재질의 작은 크기의 블럭 저장 장치다. 내부는 NAND처럼 블럭을 기반으로 하는 메모리가 들어 있고 외부 인터페이스는 SDIO의 형태 즉, 동기 클럭 라인과 하나의 커맨드라인 하나, 그리고 데이터 라인(SD는 4라인, MMC는 1라인)으로 이루어진 인터페이스를 가지고 있다. 용량은 매우 다양하지만(32MB, 64MB, 128MB, 256MB, 512MB 등 현재는 1GB의 용량을 가지는 SD 카드도 나오고 있다) 외부 인터페이스는 모두 동일하다(MiniSD는 제외).
SDIO의 제어를 위해서는 SDIO 컨트롤러가 별도로 필요하다. S3C2410과 같은 MPU들은 대부분 이러한 컨트롤러를 MPU 내부에 내장하고 있지만 만일 내장하고 있지 않다면 별도의 컨트롤러를 사용해야 SD/MMC와 같은 SDIO 기기를 제어할 수 있다. 하기와라에서 나온 HSDIOBC64-01 칩의 경우 CF 인터페이스나 UART 인터페이스, GPIO 인터페이스, 8비트 버스 인터페이스 등을 모두 지원하고 있다(물론 다른 컨트롤러들도 많은데 적합한 컨트롤러를 찾는 것은 개발자의 몫이다).
또한 SD 카드 슬롯은 카드의 인터페이스 9핀 외에 3핀을 더 가지고 있는 형태가 많다. 이 세 핀은 물리적으로 카드가 들어왔다는 것을 판단할 수 있도록 해주는 CD(Card Detect) 핀, SD 카드의 측면에 있는 쓰기 금지 탭의 상태를 알 수 있도록 해주는 WP(Write Protect) 핀, 그리고 SD 카드 슬롯의 물리적인 그라운드 역할을 할 Common 핀이다.
SDIO란 무엇인가?
SD/MMC 카드는 SDIO 인터페이스로 동작한다고 앞에서 설명했는데, 그렇다면 SDIO 인터페이스라는 것은 무엇일까라는 질문이 머릿속에 떠오를 것이다. SDIO는 Secure Digital Input/Output의 약자로서 SDA(SD협회)에서 제정한 제어방식이다. SD/MMC는 바로 이 IO 제어 방식을 따르고 있으므로 일종의 SDIO 기기라 부를 수 있다. SDIO는 메모리 카드 외에도 블루투스나 무선랜, 카메라 등 다양한 분야에서 응용되고 있다.
SDIO의 동작은 기본적으로 동기 클럭에 의해 동기화된 명령(CMD)을 내리고 그에 대한 데이터(DAT)를 보내거나 받는 동시에 그 응답(RSP)을 받아 분석을 한다. 명령과 응답은 CMD 라인을 통해 전송되며 데이터는 DAT 라인들(MMC의 경우에는 1라인이기는 하지만)을 통해 전송된다. 데이터는 CRC를 이용해 그 데이터의 안정성을 보장하고 있다.
SD/MMC의 버스 토폴로지
SD/MMC는 크게 두 가지 버스 방식으로 제어될 수 있다. SD 버스 방식과 SPI 버스 방식이 바로 그것이다. SD 버스 방식은 앞서 설명한 SDIO의 방식을 의미한다. 즉 CMD 라인과 DAT 라인이 있고 CMD 라인을 통해 명령과 응답을 주고받고 DAT 라인을 통해 데이터를 주고받는 구조이다. 이 구조는 SD 카드의 와이드 버스 모드(Wide Bus Mode) - 즉 4개의 DAT 라인을 사용하는 모드 - 를 지원할 수 있다. 물론 MMC 카드처럼 1개의 DAT 라인만을 가질 수도 있다.
SPI 버스 방식은 SD 컨트롤러가 없이도 SPI 인터페이스가 있는 시스템에서 SD 카드를 제어할 수 있는 장점이 있다. 하지만 DataIn, Data Out 두 개의 라인밖에 없기 때문에 SD 카드의 와이드 버스 모드를 사용할 수 없어 성능상의 단점이 있다. 카드에 들어갈 명령의 형식은 SD 버스와 동일하다. 명령과 호스트에서 카드로 날아가는 모든 데이터는 DataIn을 통해 전송되고 응답과 카드에서 호스트로 날아오는 모든 데이터는 DataOut을 통해 전송된다. 즉 모든 전송은 그 방향에 따라 두 라인 중 한 라인을 통해 전송된다는 뜻이다.
'[통신]' 카테고리의 다른 글
Differential Pair 에서 Delay Tune (0) | 2014.04.09 |
---|---|
임베디드 시스템의 'sRIO 아키텍처' (0) | 2013.06.10 |
SFP(Small Form Factor Pluggable) interface (0) | 2013.05.27 |
SDLC(Synchronous Data Link Control and Derivatives)란 무엇인가? (0) | 2012.12.10 |
HDLC - Transparency (Bit Stuffing, AISG) (0) | 2012.12.10 |