DRAM(Dynamic RAM)으로 1bit를 저장하기위해서 SRAM과는 달리 캐패시터를 사용한다.
캐패시터에 데이터를 저장하다보니, 매번 충전( Recharge) 해야하는 번거러운 작업이 생기고, 이로 인하여 속도역시 SRAM에 비해 떨어진다.
하지만 SRAM에 비해 기본으로 사용하는 TR의 수가 줄어들어 제조원가가 줄어든다.
1.1 DRAM의 Cell 구성 (1bit 저장)
Word Line (Row Line) 와 Digit Line(Column Line) 교차하여 캐패시터를 연결하여, 1 bit Data를 잠시 저장할 수 있는 셀을 만들어 준다.
Vcc/2를 GND로 생각하면 이해가 쉬운그림이며, 실제로는 GND가 아니라고 하니, Vcc 즉 전압의 반으로 연결이 되었다고 한다.
Ccell이 아래의 캐퍼시터의 용량이라면 다음과 같이 저장이 된다고 한다.
- Data가 1일 경우는 전하량은 Q = +Vcc/2 * Ccell
- 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이기 때문에 주소가 존재한다.
- CAS(Column Address Strobe)
- 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
- DRAM (Page Mode DRAM)
- FPM DRAM (Fast Page Mode DRAM)
- EDO DRAM (Extended Data Output DRAM)
- BEDO DRAM (Burst EDO DRAM)
- 최신 DRAM
- SDRAM (Synchronous DRAM)
- DDR
- DDR2
- DDR3
- mDDR(LPDDR)
- LPDDR2
- LPDDR
3.1 DRAM의 Timing 약어
SoC에서 DRAM을 설정을 해야 할 경우가 발생하는데, 이와 관련된 Timing 관련 약어를 정리한다.
SoC와 DRAM사이의 용어가 약간씩은 다를 수가 있다. 하지만 쉽게 유추해서 알수 있다.
- 일반적인 Timing
- tCL – CAS latency
- tCR – Command rate
- tPTP – precharge to precharge delay
- tRAS – RAS active time
- tRCD – RAS to CAS delay
- tREF – Refresh period
- tRFC – Row refresh cycle time
- tRP – RAS precharge
- tRRD – RAS to RAS delay
- tRTP – Read to precharge delay
- tRTR – Read to read delay
- tRTW – Read to write delay
- tWR – Write recovery time
- tWTP – Write to precharge delay
- tWTR – Write to read delay
- tWTW – Write to write delay
- 기타 관련 Timing
- tXP
- tODT
- tXSNR
- tXSRD
- tCKE
- tPDLL_UL
- tCSTA
- tCKESR
- tRAS_MAX
- 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를 보고 수정해야 정확하겠다.
CS | RAS | CAS | WE | BAn | A10 | An | Command |
---|---|---|---|---|---|---|---|
H | x | x | x | x | x | x | Command inhibit (No operation) |
L | H | H | H | x | x | x | No operation |
L | H | H | L | x | x | x | Burst Terminate: stop a burst read or burst write in progress. |
L | H | L | H | bank | L | column | Read: Read a burst of data from the currently active row. |
L | H | L | H | bank | H | column | Read with auto precharge: As above, and precharge (close row) when done. |
L | H | L | L | bank | L | column | Write: Write a burst of data to the currently active row. |
L | H | L | L | bank | H | column | Write with auto precharge: As above, and precharge (close row) when done. |
L | L | H | H | bank | row | Active (activate): open a row for Read and Write commands. | |
L | L | H | L | bank | L | x | Precharge: Deactivate (close) the current row of selected bank. |
L | L | H | L | x | H | x | Precharge all: Deactivate (close) the current row of all banks. |
L | L | L | H | x | x | x | Auto refresh: Refresh one row of each bank, using an internal counter. All banks must be precharged. |
L | L | L | L | 0 0 | mode | Load 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 순서
- Active
- Read or Write (burst data Read or Write)
- Read or Write with Auto precharge or Precharge or Precharge all
- Read or Write 순서예제
- RAS#와 함께 Bank와 Row Address 입력
- CAS#, WE#, A10 함께 Read or Write Bank와 Column Address 입력 DQS 동작
- 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
- k4b1g1646e-hch9.pdf
- 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