[메모리]

ddr2와 ddr3에서 타이밍을 계산하는 법

Neo Park 2014. 9. 24. 14:34

DDR의 타이밍은 종류가 너무나 많지만,

대부분의 메모리 컨트롤러에서는 약 10여개의 타이밍만 설정해 주면 동작하는데 무리가 없다.

이러한 10여개의 타이밍은 DRAM의 속성을 참조하여 JEDEC spec에 정의된 시간값을 이용해 계산해 낼 수 있다.

계산에 필요한 DRAM의 속성은 대략 아래와 같다.

1. CAS 값
2. Maximum Frequency
3. Bank bit
4. Row, Column bit
5. Size(Mbit 단위로)

추가적으로 현재 사용할 DRAM의 클럭도 필요하다.



JEDEC기준으로 예를 들면...

*RAS의 경우 45ns가 고정 min값이다.
만약 tRAS 가 cycle단위로 기록되어야 한다면, 현재 사용하는 클럭으로 45ns를 나누어 필요한 cycle을 넣는다.
400Mhz를 사용한다고 했을때, 1cycle이 2.5ns 이므로 tRCD = 45/2.5 = 18므로 18cycle을 넣어주면된다.

1. RAS같이 고정적인 값이 있는 반면 RFC같이 DRAM의 size와 관계가 있는 값이 있다.
RFC의 경우 256Mbit일경우 75ns, 512Mbit일경우 105ns이다.

2. RC 같은 경우 maximum_clock에 따라 값이 나뉘어 진다.

3. RRD 같은 경우는 8bit data dram의 경우 7.5, 16bit data dram의 경우 10이다.

4. RCD 같은 경우는 cas * maximum_clock으로 계산된다.

이러한 식으로 컨트롤러가 원하는 필드를 채워 나가면 DRAM은 문제없이 동작할 것이다.

DDR2/DDR3의 경우 ODT, ZQ calibration(ZQ저항)등의 추가적인 요소가 있긴 하지만, 해당부분은 controller 스펙에 나와있거나

하드웨어의 임피던스나 여러 구성에 따라 달라지므로 주의하여 설정하도록 한다.

 

 

참조  : http://codenakseo.egloos.com/m/4538142