12/08/2013

DRAM 기본이해

1. DRAM의 기본구성 

DRAM(Dynamic RAM)으로 1bit를 저장하기위해서 SRAM과는 달리 캐패시터를 사용한다.
캐패시터에 데이터를 저장하다보니, 매번 충전( Recharge) 해야하는 번거러운 작업이 생기고, 이로 인하여 속도역시 SRAM에 비해 떨어진다.
하지만 SRAM에 비해 기본으로 사용하는 TR의 수가 줄어들어 제조원가가 줄어든다.

1.1 DRAM의 Cell 구성 (1bit 저장)
DRAM에서의 TR은 스위치 역할로 생각하면 되겠으며, 캐패시터의 방전과 회로를 연결하는 역할한다.
Word Line (Row Line) 와 Digit Line(Column Line) 교차하여 캐패시터를 연결하여, 1 bit Data를 잠시 저장할 수 있는 셀을 만들어 준다.

Vcc/2를 GND로 생각하면 이해가 쉬운그림이며, 실제로는 GND가 아니라고 하니, Vcc 즉 전압의 반으로 연결이 되었다고 한다.

Ccell이 아래의 캐퍼시터의 용량이라면 다음과 같이 저장이 된다고 한다.
  1. Data가 1일 경우는 전하량은   Q = +Vcc/2 * Ccell 
  2. Data가 0일 경우는 전하량은   Q = -Vcc/2 * Ccell  

예를들면, Vcc가 3.3V이면 Vcc/2는 1.65V이며, Ccell은 50fF 이고, Cline은 300fF이라고 한다.



좀더 세부적으로 알고 싶다면 아래의 출처에서 관련정보를 얻자.

1.2 DRAM의 ARRAY 구성 


상위 DRAM의 Cell을 ARRAY로 구성을 하면 아래와 같아지는데, 이곳에서 약간의 문제가 있다고 한다.
Cline의 전하량이 증가하면,  Signal의 신호가 제약이 된다고 한다.
(이 부분은 아래의 참조의 Vsignal 부분을 보면 될것이다.)
그래서 중간에 SenseAmps를 두어 양쪽 Digit Line을 맞춰준다고 한다.

모델-1

모델-2

2. DRAM의 전체 및 동작사항  

DRAM의 기본구조를 알았으니, 실제 동작되는 것에 대해 알아보자.
위에서 Row Line과 Column Line을 조정하는 것이 아래의 신호이며, Address이기 때문에 주소가 존재한다.

  1. CAS(Column Address Strobe) 
  2. RAS(Row Address Strobe)

DRAM은 상위 두 개의 주소로 해당 DATA들을 분석을 해서 읽는다.



출처 및 참고사항
  http://www.cse.scu.edu/~tschwarz/coen180/LN/DRAM.html
  https://en.wikipedia.org/wiki/Dynamic_random-access_memory
  https://en.wikipedia.org/wiki/Orders_of_magnitude_(capacitance)  (fF 단위)


3. DRAM의 종류 및 기능


  • 기타 DRAM
  1. DRAM (Page Mode DRAM)
  2. FPM DRAM (Fast Page Mode DRAM)
  3. EDO DRAM (Extended Data Output DRAM)
  4. BEDO DRAM (Burst EDO DRAM)


  • 최신 DRAM 
  1. SDRAM (Synchronous DRAM)
  2. DDR
  3. DDR2
  4. DDR3
  5. mDDR(LPDDR)
  6. LPDDR2

  • LPDDR
  http://ko.wikipedia.org/wiki/%EB%AA%A8%EB%B0%94%EC%9D%BC_DDR


3.1 DRAM의 Timing 약어 

SoC에서 DRAM을 설정을 해야 할 경우가 발생하는데, 이와 관련된 Timing 관련 약어를 정리한다.
SoC와 DRAM사이의 용어가 약간씩은 다를 수가 있다. 하지만 쉽게 유추해서 알수 있다.


  • 일반적인 Timing
  1. tCL – CAS latency
  2. tCR – Command rate
  3. tPTP – precharge to precharge delay
  4. tRAS – RAS active time
  5. tRCD – RAS to CAS delay
  6. tREF – Refresh period
  7. tRFC – Row refresh cycle time
  8. tRP – RAS precharge
  9. tRRD – RAS to RAS delay
  10. tRTP – Read to precharge delay
  11. tRTR – Read to read delay
  12. tRTW – Read to write delay
  13. tWR – Write recovery time
  14. tWTP – Write to precharge delay
  15. tWTR – Write to read delay
  16. tWTW – Write to write delay


  • 기타 관련 Timing
  1. tXP
  2. tODT
  3. tXSNR
  4. tXSRD
  5. tCKE
  6. tPDLL_UL
  7. tCSTA
  8. tCKESR
  9. tRAS_MAX
  10. tTDQSCKMAX


  • 타이밍 읽는법 

  http://egloos.zum.com/recipes/v/4974281

참조문서:
임베디드 메모리 최적화 기법
  http://en.wikipedia.org/wiki/Dynamic_random-access_memory
  https://en.wikipedia.org/wiki/DDR_SDRAM
  https://en.wikipedia.org/wiki/DDR2_SDRAM
  https://en.wikipedia.org/wiki/DDR3_SDRAM


3.2 SDRAM의 기본구조 

일반적인 DRAM을 보면 아래와 비슷한 구조를 가지고 있다.
CS(Chip Select) 선택이 된 후 아래와 비슷한 순서로 접근 했던 것 같다.
기억이 가물가물해서 Bank Select도 있었던 것 같은데, 그것을 나중에 Datasheet를 보고 수정해야 정확하겠다.

CSRASCASWEBAnA10AnCommand
HxxxxxxCommand inhibit (No operation)
LHHHxxxNo operation
LHHLxxxBurst Terminate: stop a burst read or burst write in progress.
LHLHbankLcolumnRead: Read a burst of data from the currently active row.
LHLHbankHcolumnRead with auto precharge: As above, and precharge (close row) when done.
LHLLbankLcolumnWrite: Write a burst of data to the currently active row.
LHLLbankHcolumnWrite with auto precharge: As above, and precharge (close row) when done.
LLHHbankrowActive (activate): open a row for Read and Write commands.
LLHLbankLxPrecharge: Deactivate (close) the current row of selected bank.
LLHLxHxPrecharge all: Deactivate (close) the current row of all banks.
LLLHxxxAuto refresh: Refresh one row of each bank, using an internal counter. All banks must be precharged.
LLLL0 0modeLoad mode register: A0 through A9 are loaded to configure the DRAM chip.
The most significant settings are CAS latency (2 or 3 cycles) and burst length (1, 2, 4 or 8 cycles)


  • Read or Write Command 순서 
  1. Active 
  2. Read or Write (burst data Read or Write)
  3. Read or Write with Auto precharge or Precharge or Precharge all 



  • Read or Write 순서예제  
  1. RAS#와 함께 Bank와 Row Address 입력  
  2. CAS#, WE#, A10 함께 Read or Write  Bank와 Column Address 입력 DQS 동작 
  3. CAS#, WE# 함께 Read or Write Auto precharge 



  • CS: Chip Select
  • RAS: Row Address Strobe 
  • CAS: Column Address Strobe
  • WE: Write Enable
  • BAn: Bank Address 1,2,3,4
  • A10/AP: A10 이며, Auto precharge 의미
  • A12: Bust Chop  
  • An: Address Input 0~13 
  • DQS: Data Strobe
  • TDQS: Termination Data Strobe 


  • 참조 Datasheet
  1. k4b1g1646e-hch9.pdf
  2. MT41K512M8RH

  http://en.wikipedia.org/wiki/Synchronous_dynamic_random-access_memory
  https://en.wikipedia.org/wiki/Synchronous_dynamic_random-access_memory#Generations_of_SDRAM

  https://ko.wikipedia.org/wiki/JEDEC
  https://en.wikipedia.org/wiki/JEDEC


3.3 Power Down 모드 ( Self Refresh Mode)

Power Management 입장에서 DRAM을 바라보면, 항상 SoC/CPU가 항상 DRAM을 제어 및 Refresh를 해줘야한다.
하지만 SoC가 전력소모를 줄이기 위해서 DRAM의 정보 사용을 하지 않을때에는 이 기능이 필요하다.
DRAM 자체적으로 Self Refresh Mode로 동작을 하면 SoC에 의존적일 필요가 없다.
대신 SoC(ARM)의 경우 거의 전력을 소비하지 않지만, 간혹 이런것을 구현해야 할필요가 있다.

  MT41K512M8RH
  State Diagram (Command 순서 및 Self Refresh Mode)
  Commands – Truth Tables  ( Command)
  Table 69: Truth Table – CKE ( Command)
  DLL Enable/DLL Disable  (Self Refresh)
  Table 74: Burst Order (Interleave)
  Figure 5: 256 Meg x 16 Functional Block Diagram (MUX는 Prefetch)

  https://en.wikipedia.org/wiki/Synchronous_dynamic_random-access_memory#Low_power_modes

  • Power Down
  http://www.jedec.org/sites/default/files/docs/JESD209-2B.pdf