DDR SDRAM (SDR SDRAM, DDR SDRAM, DDR2, DDR3, DDR4 SDRAM) - Terry4055/FPGA_HW GitHub Wiki

  • SDRAM ํŠน์ง•

    • ์‹œ์Šคํ…œ ํด๋Ÿญ๊ณผ ๋™๊ธฐ๋œ ์ž…์ถœ๋ ฅ ํšŒ๋กœ (๋™๊ธฐํ™” I/O)
    • Burst Access
    • MultiBank
    • Command ํ˜•์‹์˜ Access(Mode Register์˜ Programming)
    • Pipe-lined Data Path
  • ๋น„๋™๊ธฐ DRAM๊ณผ์˜ ๋น„๊ต

    • ๋น„๋™๊ธฐ DRAM์—์„œ Latency๋Š” DRAM ์ž์ฒด์—์„œ ์†Œ๋ชจ๋˜๋Š” Delay ์™ธ์—๋„, DRAM Controller๊ฐ€ DRAM์˜ ํŠน์„ฑ์„ System Clock์— ๋™๊ธฐํ™” ์‹œํ‚ค๋Š”๋ฐ ์†Œ์š”๋˜๋Š” ์ง€์—ฐ๋„ ํฌํ•จ๋œ๋‹ค. ์ฆ‰ DRAM์˜ ์ž์ฒด์ ์ธ ๋™์ž‘ ์™ธ์— ์ œ์–ด๋ฅผ ์œ„ํ•œ ๋™์ž‘๊นŒ์ง€๋„ Latency์— ํฌํ•จ๋˜์–ด ์žˆ๋˜ ๊ฒƒ
    • SDRAM(๋™๊ธฐํ™” DRAM)์€ DRAM๋‚ด์—์„œ์˜ ๋™์ž‘๋„ ์ตœ๋Œ€ํ•œ ๋ฒ„์Šค ํด๋Ÿญ์— ๋™๊ธฐํ™”ํ•˜์—ฌ ์ด๋ฃจ์–ด์ง€๋„๋ก ํ•ด์„œ DRAM Controller์— ์˜ํ•œ ๋ฒ„์Šคํด๋Ÿญ ๋™๊ธฐํ™”์‹œ์— ์†Œ์š”๋˜๋Š” ์‹œ๊ฐ„๊ณผ interleaving control๋“ฑ์— ์ถ”๊ฐ€๋˜๋Š” ์‹œ๊ฐ„๋“ค์„ ์ œ๊ฑฐํ•˜์—ฌ, DRAM์˜ ์†๋„๋ฅผ ๋ฒ„์Šค ํด๋Ÿญ์˜ ์ •์ˆ˜ ๋ฐฐ๋กœ ๊ณ ์ • ์‹œ์ผœ ์†๋„ ๋ฐ ์‹œ์Šคํ…œ ์„ค๊ณ„ ํŽธ๋ฆฌ์„ฑ์ด ์˜ฌ๋ผ๊ฐ”๋‹ค.
  • SDR SDRAM

    • CS#, RAS#, CAS# ๋“ฑ์˜ ์ œ์–ด ์‹ ํ˜ธ๋“ค์˜ Clock Cycle์˜ ์ƒ์Šน์—ฃ์ง€์—์„œ ํ•œ๊บผ๋ฒˆ์— Control Logic์œผ๋กœ ์ž…๋ ฅ ๋ฐ›์•„ ํ˜„์žฌ ๋ช…๋ น์„ Decoding ํ•˜์—ฌ ์ด์— ํ•ด๋‹นํ•˜๋Š” ์ œ์–ด ์‹ ํ˜ธ๋“ค์„ ์ƒ์„ฑํ•˜๊ฒŒ ๋œ๋‹ค. Data ์ž…, ์ถœ๋ ฅ ์—ญ์‹œ OE#, WE# ์‹ ํ˜ธ์— ์˜ํ•ด ์ง์ ‘ ์ œ์–ด ๋ฐ›์ง€ ์•Š๊ณ , Control Logic์—์„œ ์ƒ์„ฑ๋œ ์‹ ํ˜ธ์˜ ์ œ์–ด๋ฅผ ํ†ตํ•ด ์ด๋ฃจ์–ด ์ง„๋‹ค.
    • SDRAM ๋™์ž‘ ํด๋Ÿญ์€ 66MHz, 100MHz, 133MHz, 166MHz
    • Address ์ž…๋ ฅ์€ RAS#๊ฐ€ Enable ๋˜์—ˆ์„ ๋•Œ, ์ž…๋ ฅ๋œ ๊ฐ’์€ Row Address๋กœ ์ธ์‹ํ•˜๊ณ , CAS#๊ฐ€ Enable ๋˜์—ˆ์„ ๋–„์˜ ๊ฐ’์€ Column Address๋กœ ์ธ์‹ํ•˜์ง€๋งŒ, ๊ฐ ์‹ ํ˜ธ๋“ค์ด ํ•œ Clock Cycle ๋™์•ˆ๋งŒ ์œ ํšจํ•œ ๊ฐ’์„ ๊ฐ€์ง€๋ฉด ๋œ๋‹ค๋Š” ์ ์ด ๋น„๋™๊ธฐ DRAM๊ณผ ๋น„๊ตํ–ˆ์„ ๋•Œ ๋‹ค๋ฅด๋‹ค.
    • CAS Latency(CL)๋Š” Read ๋ช…๋ น์ด ์ ‘์ˆ˜๋œ ์‹œ์ ๋ถ€ํ„ฐ ์ฒซ๋ฒˆ์งธ Data๊ฐ€ ์ถœ๋ ฅ ๋  ๋•Œ๊นŒ์ง€์˜ Delay๋ฅผ Clock ์ˆ˜๋กœ ๋‚˜ํƒ€๋‚ธ ์ˆ˜์น˜์ด๋‹ค. ์ฆ‰ Read ๋ช…๋ น์ด n๋ฒˆ์งธ Clock Edge์—์„œ ์ž…๋ ฅ๋˜๊ณ  CL์ด m์ด๋ผ๊ณ  ํ•˜๋ฉด, ์ฒซ๋ฒˆ์งธ Data๋Š” n+m๋ฒˆ์งธ Clock Edge์—์„œ ์ถœ๋ ฅ ๋œ๋‹ค.
  • DDR SDRAM

    • Data Rate๋ฅผ SDR์— ๋น„ํ•ด 2๋ฐฐ๋กœ ๋Š˜๋ฆฐ ๊ฒƒ(Clock์€ ์ƒ์Šน, ํ•˜๊ฐ• ์—ฃ์ง€์‹œ 2๋ฒˆ ๋ฐ์ดํ„ฐ ์ ‘๊ทผ)
    • ์ด๋ก ์ ์œผ๋กœ ๊ฐ„๋‹จํ•˜์ง€๋งŒ ๋™์ž‘ ์†๋„๊ฐ€ ๋นจ๋ผ์ง์— ๋”ฐ๋ผ Data Window๊ฐ€ ์ž‘์•„์ ธ Noise ๋งˆ์ง„์ด ๊ธ‰๊ฒฉํžˆ์ค„์–ด ๋“ค์—ˆ๋‹ค.
    • Clock ์†๋„๊ฐ€ ์˜ฌ๋ผ๊ฐ์— ๋”ฐ๋ผ Timing Margin์ด ์ ์  ์ค„์–ด ๋“ ๋‹ค.
    • ์ด ๋•Œ๋ฌธ์—, Clock ์‹ ํ˜ธ์˜ ์ „๋‹ฌ ๊ฒฝ๋กœ๋ฅผ Data๊ฐ€ ์ „๋‹ฌ๋˜๋Š” ๊ฒฝ๋กœ์™€ ๊ฐ™์ด ํ•œ๋‹ค๋ฉด ์ด๋“ค Timing Margin์„ ์—†์•ฐ์œผ๋กœ์จ ์œ ํšจํ•œ Data window ์‹œ๊ฐ„์„ ๋Š˜๋ฆด ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค. ๊ทธ๋ž˜์„œ DDR SDRAM์€ Data ์ „์†ก์„ ์œ„ํ•œ ์ „์šฉ Clock ์ธ Data Strobeํ•€์„ ์ถ”๊ฐ€ํ•˜์—ฌ Data Timing Window๋ฅผ ํ™•๋ณดํ•˜๊ฒŒ ๋œ๋‹ค.
    • ์ฆ‰ DDR SDRAM์—์„œ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†ก ํ•  ๋•Œ์— Data Strobe์‹ ํ˜ธ(DQS)๋„ ๊ฐ™์ด ์ „์†กํ•˜๊ณ , Data Read์‹œ Controller ์ธก์—์„œ๋Š” Data Strobe์˜ ์ƒ์Šน/ํ•˜๊ฐ• ์—ฃ์ง€ ๊ธฐ์ค€์œผ๋กœ Data๋ฅผ ์ž…๋ ฅ ๋ฐ›๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค. Write์‹œ์—๋Š” Controller๊ฐ€ Memory๋กœ Data๋ฅผ ๋ณด๋‚ผ ๋•Œ์—๋Š” Data Strobe์˜ ๋ฐฉํ–ฅ๋„ Controller์—์„œ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๋ฐ”๋€Œ๊ฒŒ ๋œ๋‹ค.
    • ์ด์™ธ์—๋„ ๋™์ž‘ ์ฃผํŒŒ์ˆ˜๊ฐ€ ์ฆ๊ฐ€ํ•จ์— ๋”ฐ๋ผ ์ „๋ ฅ ์†Œ๋ชจ๋Ÿ‰ ๋ฐ ๋ฐœ์—ด๋Ÿ‰๋„ ์ฆ๊ฐ€ํ•˜๊ฒŒ ๋˜๋Š”๋ฐ ๋™์ž‘ ์ „์••์„ LVCMOS33์—์„œ SSTL25๋กœ ๋ณ€๊ฒฝ
  • DDR2 SDRAM

    • DRAM์ด Synchronous ๋™์ž‘์œผ๋กœ ๋ฐ”๋€ ํ›„ ๋ถ€ํ„ฐ ์„ฑ๋Šฅ ํ–ฅ์ƒ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋™์ž‘ Clock์„ ์˜ฌ๋ฆฌ๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ์ง„ํ–‰ ๋˜์—ˆ๋‹ค.
    • DDR2์—์„œ๋Š” DDR์˜ 2๋ฐฐ Clock ์ฃผํŒŒ์ˆ˜๋ฅผ ์‚ฌ์šฉ, Double Edge Rate๋ฐฉ์‹ ๊ทธ๋Œ€๋กœ
    • ํ•˜์ง€๋งŒ Cell Array๋Š” DDR๊ณผ ๊ฐ™์€ ์†๋„๋กœ ๋™์ž‘
    • DDR2์—์„œ๋Š” ๋น ๋ฅธ ๋™์ž‘์„ ๊ฐ€๋Šฅํ•˜๊ธฐ ์œ„ํ•ด ODT(On-Die Termination) ๊ธฐ๋ฒ• ๋„์ž…, ๊ธฐ์กด์—๋Š” ์‹ ํ˜ธ ์ข…๋‹จ์„ ๋ณด๋“œ ์ƒ์—์„œ ํ•ด๊ฒฐ ํ•˜๋Š”, Motherboard Termination(MBT)๊ธฐ๋ฒ•์„ ์‚ฌ์šฉ ํ•˜์˜€๋Š”๋ฐ, DDR2์—์„œ ์‚ฌ์šฉํ•˜๋Š” 400MHZ ์ด์ƒ์˜ ๋™์ž‘ ์ฃผํŒŒ์ˆ˜ ๋Œ€์—ญ์—์„œ๋Š” MBT๋กœ Signal Reflection์„ ์ œ๋Œ€๋กœ ๊ฐ์†Œ ์‹œํ‚ค์ง€ ๋ชปํ–ˆ๋‹ค. ํŠนํžˆ ์—ฌ๋Ÿฌ๊ฐœ์˜ DRAM Module์„ ๊ตฌ๋™์‹œ, ๋น„ํ™œ์„ฑํ™”๋œ DRAM๋‹จ์€ High-Z ์ƒํƒœ๊ฐ€ ๋˜์–ด Bus์— ์œ ์ž…๋œ ์‹ ํ˜ธ์˜ ๋ฐ˜์†กํŒŒ๋ฅผ ๋งŒ๋“ค์–ด ๋‚ด๊ฒŒ ๋œ๋‹ค. ์ด๋“ค ๋ฐ˜์†กํŒŒ ์ค‘ ์ข…๋‹จ ์ €ํ•ญ์œผ๋กœ ๊ฐ€๋Š” ์„ฑ๋ถ„์€ ์ข…๋‹จ ์ €ํ•ญ์—์„œ ํก์ˆ˜๋˜์„œ ์‚ฌ๋ผ์ง€์ง€๋งŒ, Active DRAM์œผ๋กœ ์œ ์ž…๋œ ๋ฐ˜์†กํŒŒ๋Š” ์›๋ž˜ Bus ์‹ ํ˜ธ์™€ ์„ž์—ฌ ์‹ ํ˜ธ์˜ Integrity๋ฅผ ๋–จ์–ด๋œจ๋ฆฌ๋Š” ์š”์ธ์œผ๋กœ ์ž‘์šฉํ•œ๋‹ค. ๊ทธ๋ž˜์„œ DRAM Die๋‚ด์— Termination ์ €ํ•ญ์„ ์„ค์น˜ํ•ด ๋น„ํ™œ์„ฑํ™”๋œ DRAM์œผ๋กœ๋ถ€ํ„ฐ ๋ฐ˜์†กํŒŒ๊ฐ€ ๋‚˜์˜ค์ง€ ์•Š๋„๋ก ํ•œ ๊ฒƒ.
    • ๋™์ž‘์ „์•• SSTL18 for Low Power
  • DDR3 SDRAM

    • ๋” ๋†’์€ ๊ตฌ๋™ ์ฃผํŒŒ์ˆ˜
    • 800 ~ 2133 MT/s
    • CL/tRCD/tRP๋ฅผ 15ns์—์„œ 12ns๋กœ ๋” ๊ฐ์†Œ
    • SSTL15 ์‚ฌ์šฉ
    • DDR2 SDRAM๋ณด๋‹ค Timing Margin์ด ์ค„์–ด๋“ค์—ˆ๊ธฐ ๋•Œ๋ฌธ์— Fly-by ๊ตฌ์กฐ์™€ Read/Write Leveling, Dynamic On-Die Termination ์ ์šฉ
      • Fly-by ๊ตฌ์กฐ๋Š” DRAM Module์„ ๋‹ค์ˆ˜ ์‚ฌ์šฉ์‹œ ์ง๋ ฌ ํ˜•ํƒœ๋กœ ์—ฐ๊ฒฐ ์‹œํ‚ค๊ณ , ๋น„๋ก Skew์˜ ์ ˆ๋Œ€์ ์ธ ์ฐจ์ด๋Š” T-Branch(DDR2 ๋ฐฉ์‹)์— ๋น„ํ•ด ๋”์šฑ ์ปค์ง€์ง€๋งŒ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ๋ฉ€์–ด์ง€๋Š” Chip์ผ ์ˆ˜๋ก Skew๋Š” ํ•ญ์ƒ delta t๋งŒํผ ์ฆ๊ฐ€ํ•˜๋Š” ๋ฐฉํ–ฅ์ด๊ธฐ ๋•Œ๋ฌธ์— Skew๋ฅผ ์˜ˆ์ธก ํ•˜์—ฌ ์ œ์–ด ๊ฐ€๋Šฅํ•˜๋‹ค.
      • Real/Write Leveling์€ Fly-by๊ตฌ์กฐ์— ์˜ํ•ด ์ƒ๊ธด Skew๋Š” ๊ฒฐ๊ตญ Clock์‹ ํ˜ธ์™€ Strobe ์‹ ํ˜ธ ์‚ฌ์ด์— ๋ฐœ์ƒํ•œ Skew์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ DRAM ๋ชจ๋“ˆ ๋ณ„ Strobe์‹ ํ˜ธ์— ๋Œ€ํ•ด Delay๋ฅผ ์ฃผ์–ด Skew๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์„ ๊ฒƒ ์ด๋‹ค. Strobe๊ฐ„ Delay์‹œ๊ฐ„์€ Calibration์„ ํ†ตํ•ด ์ •ํ•ด์ง€๊ฒŒ ๋œ๋‹ค. ์ด๋Ÿฐ ์ผ๋ จ์˜ Calibration ๋™์ž‘์€ Read ๋™์ž‘๊ณผ Write ๋™์ž‘ ๊ฐ๊ฐ์— ๋Œ€ํ•ด ํ•ด์ฃผ๊ฒŒ ๋˜๋Š”๋ฐ ์ด๋ฅผ Read Leveling / Writing Leveling์ด๋ผ๊ณ  ํ•œ๋‹ค. ์ด ๋ ˆ๋ฒจ๋ง ๋™์ž‘์€ ์‹œ์Šคํ…œ ์ด๋‹ˆ์…œ ๊ณผ์ •์—์„œ Memory Controller๊ฐ€ Calibration์šฉ Data Pattern์„ ์ด์šฉํ•˜์—ฌ ์ˆ˜ํ–‰ ํ•˜๊ฒŒ ๋˜๊ณ , ๊ฐ๊ฐ์˜ ํƒ€์ด๋ฐ ์ •๋ณด๋Š” DDR3์— ์ƒˆ๋กœ ์ถ”๊ฐ€ ๋˜๋Š” Multipurpose Register(MPR)์— ์ €์žฅ๋˜์–ด ์ด์šฉ ๋œ๋‹ค.
      • Dynamic On-Die Termination : DRAM์˜ Read๋‚˜ Write ๋™์ž‘ ๋™์•ˆ ์•ˆ์“ฐ๋Š” Memory ๋ชจ๋“ˆ๊ณผ Low Impedance Access ์ค‘์ธ ๋ชจ๋“ˆ์€ High-Impedance๋ฅผ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ๋ฐ˜์†กํŒŒ ์ธก๋ฉด์—์„œ ์ข‹๋‹ค(For Signal Integrity). ๋™์ž‘ ์กฐ๊ฑด์— ๋งž๊ฒŒ Termination ์ €ํ•ญ ๊ฐ’์„ ๋Šฅ๋™์ ์œผ๋กœ ์กฐ์ ˆํ•จ์œผ๋กœ์จ SI๋ฅผ ๋”์šฑ ํ™•๋ณด ํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฒƒ์ด Dynamic ODT๋‹ค. DDR3์— ์ฑ„์šฉ๋œ Dynamic ODT๋Š” Write ๋™์ž‘ ์ค‘์ธ ๋ชจ๋“ˆ์˜ Termination Impedance ๊ฐ’์„ ๋†’์—ฌ์„œ Signal Integrity๋ฅผ ๋†’์ด๋„๋ก ํ•˜์—ฌ, DDR2์— ๋น„ํ•ด ๊ณ ์† ๋™์ž‘์„ ๊ฐ€๋Šฅ์ผ€ ํ•œ๋‹ค.
    • ZQ Calibration : Dynamic ODT๋Š” DRAM ๋‚ด๋ถ€ Termination ์ €ํ•ญ ๊ฐ’์„ ๋ฐ”๊พธ์–ด, DRAM ๋ชจ๋“ˆ ์‚ฌ์ด์˜ ์‹ ํ˜ธ ๋ฐ˜์‚ฌ๋ฅผ ์˜ˆ๋ฐฉํ•˜์ง€๋งŒ, ZQ Calibration์€ DRAM Controller์™€ DRAM ๊ฐ„์˜ ์ž„ํ”ผ๋˜์Šค ๋ถ€์ •ํ•ฉ ๊ฐ์†Œ๋ฅผ ์œ„ํ•œ ๊ธฐ๋Šฅ์ด๋‹ค(DDR2์˜ OCDํšŒ๋กœ์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ). DDR2์—์„œ๋Š” ZQ Calibration์„ ์œ„ํ•ด OCDํšŒ๋กœ๊ฐ€ ๋”ฐ๋กœ ์žˆ๊ณ , ODT ํŒŒํŠธ๊ฐ€ ๋ณ„๋„๋กœ ์žˆ์ง€๋งŒ DDR3 ์—์„œ๋Š” DQ Driver ์ชฝ์— Merged Driver ๊ตฌ์กฐ๋กœ ZQ ์กฐ์ •๊ณผ, DQ์˜ ODT ๊ธฐ๋Šฅ์„ ๊ฐ™์ด ์ œ๊ณต ํ•œ๋‹ค(๋ถˆํ”ผ์š”ํ•œ ์บํŒจ์‹œํ„ด์Šค ์ค„์ผ ์ˆ˜ ์žˆ๊ณ , ์ œ์กฐ๋‹จ๊ฐ€ ํ•˜๋ฝ, ๋””๋ฐ”์ด์Šค ์‹ ๋ขฐ์„ฑ ์ƒ์Šน).
  • DDR4 SDRAM

    • SSTL12
    • 2133 ~ 3200MT/s
    • ๋ฑ…ํฌ ๊ทธ๋ฃน Address ์ถ”๊ฐ€(ํฐ ์šฉ๋Ÿ‰์„ ์œ„ํ•ด, BG[n:0] ํ•€)
    • DBI(Data Bus Inversion) ํŒŒ์›Œ ์†Œ๋น„๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด!
      • Logic Low -> High๋Š” ์ƒ๊ด€ ์—†์ง€๋งŒ, Logic High -> Low๋Š” ๋ฐ์ดํ„ฐ ๊ฐฏ์ˆ˜๊ฐ€ ๋งŽ์œผ๋ฉด ์†Œ๋น„์ „๋ฅ˜๊ฐ€ ๋Š˜์–ด ๋‚œ๋‹ค. vDDQ์ชฝ ์ „๋ฅ˜๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด DQ ๋“œ๋ผ์ด๋ฒ„๋“ค์˜ High->Low ์Šค์œ„์นญ ๋™์ž‘์„ ์ตœ์†Œํ™”
    • CRC(Cyclic Redundancy Check)
    • CA Parity ๊ธฐ๋Šฅ ์ถ”๊ฐ€(PAR ํ•€) : ์‹ ํ˜ธ ๋ฌด๊ฒฐ์„ฑ ํ–ฅ์ƒ ๋ฐ ๋ฐ์ดํ„ฐ ์ „์†ก/์—‘์„ธ์Šค์˜ ์•ˆ์ •์„ฑ์„ ํ–ฅ์ƒ!