SDRAM 인터페이스 설명 본문

임베디드

SDRAM 인터페이스 설명

keydisk 2009. 1. 8. 17:20
(1)SDRAM 측면
RAM은 SRAM(Static RAM)과 DRAM(Dynamic RAM)으로 나뉜다.
SRAM은 플립플랍(논리게이트)을 이용하여 비트 데이타를 저장한다. 가장 빠른 램의 형태
로 외부 지원 회로가 거의 필요없으며 전력 소모가 상대적으로 낮다. 반면 비트 당 저장
비용이 비싸다.
DRAM은 커패시터 배열을 이용하여 비트 데이타를 저장한다. 커패시터 배열이 전하를 금방
방전해 버리므로 DRAM은 1000분의 1초와 같은 일정 주기로 재충전을 해주어야 한다. 바로
이 재충전을 위해서는 부가회로가 필요하며, 재충전으로 인해 프로세서가 메모리를 참조
하는 과정이 지연될 수 있다. 반면 비트 당 저장 비용은 싸다.

컴퓨터의 메모리 계층구조에서, 바로 캐쉬가 SRAM으로 구성되고 주메모리가 DRAM으로 구성
된다. (요즘은 보통 SDRAM, DDR이 주이지만...)

SDRAM은 Syncronous DRAM이다. 기술적인 이유인지, 역사적인 이유인지 몰라도 DRAM을 개선
하면서 '동기적'라는 용어를 붙였다.


[helpme1] DRAM의 동작원리에서 무엇을 개선하였길래, Syncronous DRAM이라고 하였나?


우리가 사용하는 것은 삼성전자의 K4S561632C-TC75 이다.
256Mbit
SDRAM 4M*16bit*4banks
이라고 되어 있다. 보통 메모리의 용량을 말할 땐, 비트 단위를 사용한다. 여기선 전체가
256메가비트이므로 (256/8=32) 32메가바이트 짜리 SDRAM이 되는 것이다. 그리고,
16비트 데이타 버스 폭이고 뱅크가 4개 있다는 뜻이다. TC75는 클럭의 최대주파수를 지정
하는 것인데, 여기서 TC75는 133MHz를 의미한다. 쉽게 말해 속도를 말하는 것이다.
우리가 PC의 램을 말할때, PC133이라면 이런 SDRAM칩을 사용하여 만든 메모리카드(?)이다.

SDRAM의 내부 다이어그램은 이번 강좌 바로 다음에 첨부한 그림을 보자. 그림이 하나밖에
안올라가는 이 강좌 시스템땜시...(사진출처: Micron의 SDRAM 데이타쉬트)
SDRAM 인터페이스는 표준이므로, 항상 다음과 같은 핀들을 보게 된다. (그림과 비교해서)

CLK - clock 보통 프로세서에서 생성한다.
CKE - clock enable
nCS - chip selector
A0:A12 - 어드레스
BA0:BA1 - 뱅크 어드레스
DQ0:DQ15 - 데이타
nRAS - Row 스트로브 신호
nCAS - Column 스트로브 신호
nWE - write enable
DQM - DQ input/output Mask

보통 32비트 프로세서에는 SDRAM 콘트롤러가 들어있는데, 위의 핀에 해당하는 핀들이 프
로세서에도 나와 있다. 고로 잘 확인해서 연결만 하면 되는 것이다. 복잡한 내부 동작은
이 SDRAM 콘트롤러가 다 알아서 처리해 준다. 프로세서에는 이 SDRAM 콘트롤러을 제어하
는 시스템 레지스터가 있을 것이고 우리는 이 레지스터를 잘 조작해 주면 되는 것이다.

메모리의 용량이 커질수록 메모리의 번지를 어드레싱하는 어드레스 핀 수가 늘어나게 된다.
예를 들어, 128MB 용량의 메모리는 어드레스 핀 수가 A0:A26까지 27개나 필요하다.
DRAM의 용량이 갈수록 늘어나므로, 초창기 메모리 개발자들은 이를 어떻게 해결할 수 있
을까 고민하다가, 어드레스를 기존과 같이 1차원적으로 만드는 것이 아니라 3차원적으로
만들어내는 방법을 고안해 내었는데, 이것이 바로 SDRAM의 어드레싱 기본원리이다.
결론적으로, 직육면체를 생각해보자.
column address, row address, bank address가 바로 (x,y,z)가 되어 직육면체의 어느 한
곳(=한바이트)를 지정하게 되는 것이다.

그리고 column address와 row address 두 주소를 시간 차이를 두어 A0:A12핀에다가 실어
주고(이를 위해서 라스와 카스(RAS, CAS)스트로브 핀이 있는 것이다. 나는 카스가 좋다.)
bank address는 2핀 정도이니, 그냥 BA0,BA1을 사용하는 것이다.
이번 강좌 바로 다음에 첨부한 그림을 보면서 이해하면 필이 올 것이다. 오는가?

SDRAM의 액세스 동작의 순서는 nCS와 RAS(Row Address Strobe)신호를 활성화 시켜서 Row
Address를 주소버스에 실어준다. 그 다음 RAS를 비활성화 시키고 CAS(Column Address
Strobe)신호를 활성화 시키고, 읽기나 쓰기 동작에 따라서 nWE신호를 주면 되는 것이다.
결국 원하는 특정주소를 지정하고 나면, 거기서부터 Column Address를 하나씩 증가시켜
가며 데이타를 버스트하게 액세스하는 것이다. 모든 동작은 CLK이라는 클럭에 positive
edge에 동기되어 동작한다.(그래서 syncronous 인 것 같다.) 여기서 CAS latency 라는
용어가 대두되는데, read 커맨드와 첫번째 유효한 데이타 사이의 딜레이이다. 단위는
clock cycle이고, 보통 2,3 의 값을 갖는다. 즉, 2,3번 클럭 사이클 이후에 실제 데이타가
데이타버스에 실린다는 뜻이다.
SDRAM의 read, write 액세스 동작은 버스트(burst) 지향적이다. 이 말은 특정 어드레스의
데이타를 액세스할때, 한 바이트만을 하는게 아니라 한번에 여러 바이트를 액세스한다는
의미이다. burst length는 칩마다 다른데 보통 1,2,4,8, full page 정도이다.

BA0, BA1을 프로세서의 어떤 주소핀에 연결해야 되는가? 라는 질문을 가지는 눈치빠른
사람이 있을 것인데, 이는 프로세서의 데이타쉬트를 보면 된다. 거기서 지정해 주는대로
연결하라. S3C2440A의 유저매뉴얼을 보니, 32메가 짜리 2개를 32비트 버스 폭으로 붙일
때는 BA0,BA1을 각각 A24,A25에다가 연결하라고 하였다. 회로도를 보니, 그렇게 연결되어
있었다.


[helpme2] DQM의 정확한 기능은 무엇인가 ?


8비트, 16비트 마이크로콘트롤러에서는 이런 SDRAM 콘트롤러가 프로세서 내에 들어 있지
않으므로 별도의 DRAM, SDRAM 콘트롤러 칩이 필요하다. 32비트 이상의 프로세서에는 이런
DRAM, SDRAM 콘트롤러가 거의 다 들어있다.


======================================================

* 뱅크란?
ChipSelect 를 같이 쓰는 동일한 메모리들을 말한다. 왜 동일한 것을 써야되는지는 아래의 환경을
읽어보면 알수 있다.



========================================================
뱅크의 개념은 앞의 메모리 덩어리가
병렬로 4개가 존재한다고 생각하시면 됩니다. 이 뱅크
개념은 DRAM의 특성상 전하충전시간이 필요한데 이러한
충전시간을 각각의 뱅크로 분산시켜 좀더 빠른 응답속도를
갖기 위해섭니다.