์ฑ„๋„ํ†ก ์•„์ด์ฝ˜

Verilog FPGA Program 3 (DDR Controller, Arty A7-35T)

๊ฐ•์˜์„ ํ†ตํ•˜์—ฌ FPGA๋ฅผ ์ด์šฉํ•œ DDR Controller๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

(5.0) ์ˆ˜๊ฐ•ํ‰ 7๊ฐœ

์ˆ˜๊ฐ•์ƒ 122๋ช…

๋‚œ์ด๋„ ์ค‘๊ธ‰์ด์ƒ

์ˆ˜๊ฐ•๊ธฐํ•œ ๋ฌด์ œํ•œ

๋ฒ ๋ฆด๋กœ๊ทธ
๋ฒ ๋ฆด๋กœ๊ทธ
fpga
fpga
๋ฒ ๋ฆด๋กœ๊ทธ
๋ฒ ๋ฆด๋กœ๊ทธ
fpga
fpga

๋จผ์ € ๊ฒฝํ—˜ํ•œ ์ˆ˜๊ฐ•์ƒ๋“ค์˜ ํ›„๊ธฐ

๋จผ์ € ๊ฒฝํ—˜ํ•œ ์ˆ˜๊ฐ•์ƒ๋“ค์˜ ํ›„๊ธฐ

5.0

5.0

mjs1004

100% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

DDR Controller๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋‹ˆ ๋ง‰๋ง‰ ํ–ˆ๋Š”๋ฐ, ํ•„์š”ํ•œ ํ•ต์‹ฌ ๋ถ€๋ถ„์„ ์ž˜ ์•Œ๋ ค์ฃผ๋Š” ๊ฐ•์˜์ž…๋‹ˆ๋‹ค. Xilinx์˜ ๋ฌธ์„œ๋“ค์„ ์–ด๋””์„œ๋ถ€ํ„ฐ ์–ด๋–ป๊ฒŒ ์ฝ์–ด์•ผ ๋‚œ๊ฐํ–ˆ๋Š”๋ฐ, ๊ฐ•์˜ ์ˆ˜๊ฐ• ํ›„ ๊ธธ์ด ๋ณด์ด๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ข‹์€ ๊ฐ•์˜ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

5.0

coldugs

5% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

FPGA ๊ด€๋ จ ์ž๋ฃŒ๋Š” ์ฐพ๊ธฐ๋„ ์–ด๋ ต๊ณ  ์ฐพ์•„๋„ ์–‘์ด ๋ฐฉ๋Œ€ํ•ด์„œ ๋ฐฐ์šฐ๊ธฐ๊ฐ€ ํž˜๋“ค๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ข‹์€ ์ž๋ฃŒ๋กœ ๋งŽ์€ ๋„์›€์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

5.0

miheungsound

30% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

์ข‹์€ ๊ฐ•์˜ ๋‚ด์šฉ์œผ๋กœ ๋งŽ์€ ๋„์›€์ด ๋ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ฒˆ ๋ฐ˜๋ณต ํ•ด์„œ ๋ณด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์ˆ˜๊ฐ• ํ›„ ์ด๋Ÿฐ๊ฑธ ์–ป์„ ์ˆ˜ ์žˆ์–ด์š”

  • DDR Controller

  • Frame Buffer

์‹ค๋ ฅ ์žˆ๋Š” Verilog ๊ฐœ๋ฐœ์ž์—๊ฒŒ ํ•„์š”ํ•œ
DDR Memory Controller ์Šคํ‚ฌ! โœจ

FPGA๋กœ ๊ตฌํ˜„ํ•˜๋Š”
DDR Memory Controller ๐Ÿ› ๏ธ

FPGA์—๋Š” ๋งŽ์€ ๊ธฐ๋Šฅ์ด IP ํ˜•ํƒœ๋กœ ์ œ๊ณต๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ์ค‘์—์„œ ์˜์ƒ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ์ฃผ๋กœ ์‚ฌ์šฉ๋˜๋Š” DDR Controller์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

DDR Controller๋ฅผ ๊ตฌํ˜„ํ•˜๋Š”
๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ• ๐Ÿค”

1. ๋ฐ์ดํ„ฐ ์‹œํŠธ๋ฅผ ๋ณด๊ณ  ๊ทธ๋Œ€๋กœ ๊ตฌํ˜„

  • ๊ฒฝ๋ ฅ์ด ์˜ค๋ž˜๋œ ๋ถ„๋“ค์ด ์ฃผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.
  • ์‹œ์Šคํ…œ์ด ๋ณต์žกํ•ด์ง€๋ฉด ์ผ์ผ์ด ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ•˜๋Š” ์ผ์ด ๋งŒ๋งŒ์น˜๊ฐ€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ๊ตฌํ˜„ํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์€๋ฐ, ํ”„๋กœ์ ํŠธ๊ฐ€ ๋ฐ”๋€” ๋•Œ๋งˆ๋‹ค ๋งค๋ฒˆ ๋‹ค๋ฅด๊ฒŒ ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๋Š” ์–ด๋ ค์›€์ด ์žˆ์Šต๋‹ˆ๋‹ค.

2. Xilinx ์‚ฌ์—์„œ ์ œ๊ณตํ•˜๋Š” IP๋กœ ๊ตฌํ˜„

  • ๋ฒ”์šฉ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” IP์ž…๋‹ˆ๋‹ค. ํ•œ๋ฒˆ ์‚ฌ์šฉ๋ฒ•์„ ์ตํ˜€ ๋‘๋ฉด ํฌ๊ฒŒ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์•„๋„ ์—ฌ๋Ÿฌ ํ”„๋กœ์ ํŠธ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ฒ˜์Œ์— ์‚ฌ์šฉ๋ฒ•์„ ์ตํžˆ๋Š” ๊ณผ์ •์ด ๋งŒ๋งŒ์น˜ ์•Š์Šต๋‹ˆ๋‹ค. Xilinx ์‚ฌ์—์„œ ๋งŽ์€ ๋ฌธ์„œ์™€ ์ƒ˜ํ”Œ ์ฝ”๋“œ๋ฅผ ์ œ๊ณตํ•˜์ง€๋งŒ, ์ •๋ณด๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์•„ ํ™œ์šฉํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

์ €์ž๊ฐ€ DDR Controller๋ฅผ ๊ตฌํ˜„ํ•˜๋ฉด์„œ ์ด๋Ÿฌํ•œ ๋งŽ์€ ์–ด๋ ค์›€์„ ๊ฒฝํ—˜ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๋ญ”๊ฐ€ ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ์ •๋ฆฌ๋œ ํ•˜๋‚˜์˜ ๋ฌธ์„œ๊ฐ€ ์žˆ์œผ๋ฉด ์ข‹์ง€ ์•Š์„๊นŒ ํ•˜๋Š” ์ƒ๊ฐ์„ ๋งŽ์ด ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฒ˜์Œ์—๋Š” ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ์ดํ•ดํ•˜๊ณ  ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•ด์„œ DDR์„ read / write ํ•ด ๋ณด๊ณ , ์ ์  ๋” ์ดํ•ด๋„๋ฅผ ๋†’์—ฌ๊ฐ€๋Š” ๊ฒƒ์ด ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค. ๋จผ์ € ์ „์ฒด์ ์ธ ๊ตฌ์กฐ๋ฅผ ์ดํ•ดํ•˜๊ณ , ๋‚˜์ค‘์— ์„ธ๋ถ€์ ์ธ ๋‚ด์šฉ๋“ค์„ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ํšจ๊ณผ์ ์ž…๋‹ˆ๋‹ค. ๋ณธ์„œ๋Š” DDR Controller๋ฅผ ์ฒ˜์Œ ์ ‘ํ•˜๋Š” ๊ฐœ๋ฐœ์ž๋“ค๋„ ์‰ฝ๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

DDR Memory๋Š” ์˜์ƒ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์— ์žˆ์–ด ์•„์ฃผ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ „๋ฌธ๊ฐ€๊ฐ€ ์•„๋‹ˆ๋ฉด ์ ‘๊ทผํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต๊ณ  ๋˜ํ•œ ์ด๋Ÿฌํ•œ ์ „๋ฌธ์ ์ธ ๋‚ด์šฉ์„ ๋‹ค๋ฃจ๋Š” ์ž๋ฃŒ๊ฐ€ ๊ฑฐ์˜ ์—†๋Š” ๊ฒƒ์ด ํ˜„์‹ค์ž…๋‹ˆ๋‹ค. ๋ณธ ๊ฐ•์˜๋Š” DDR Memory Controller๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ชจ๋“  ๋‚ด์šฉ์„ ๋‹ค๋ฃจ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ DDR Controller๋ฅผ ์ด์šฉํ•˜์—ฌ Frame Buffer๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋‚ด์šฉ์„ ์ƒ์„ธํžˆ ์„ค๋ช…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ’พ ์ˆ˜๊ฐ• ์ „ ํ™•์ธํ•ด์ฃผ์„ธ์š”!

  • ๋ณธ ๊ฐ•์˜๋Š” PDF ํ˜•ํƒœ์˜ ํ…์ŠคํŠธ ๊ฐ•์˜๋กœ, ๋ณ„๋„ ์˜์ƒ์„ ์ œ๊ณตํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ๊ฐ•์˜์— ์„ค๋ช…๋œ ๋ชจ๋“œ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ œ๊ณตํ•˜์—ฌ ๋“œ๋ฆฝ๋‹ˆ๋‹ค.
  • Digilent ์‚ฌ์—์„œ ํŒ๋งคํ•˜๋Š” Arty A7 ๊ฐœ๋ฐœ ๋ณด๋“œ์—์„œ ์‹ค์Šต์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ•์˜ ํŠน์ง• โœจ

#1.
DDR Controlle์˜
๋ชจ๋“  ๊ฒƒ์„ ๋‹ด์•˜์–ด์š”

DDR Memory Controller์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ๋‹ค๋ฃจ๋Š” ๋ฌธ์„œ๋Š” ๊ฑฐ์˜ ์—†์Šต๋‹ˆ๋‹ค. ๋ณธ ๊ฐ•์˜๋Š” ๋ชจ๋“  ๊ณผ์ •์„ ์ƒ์„ธํ•˜๊ฒŒ ์„ค๋ช…ํ•˜์—ฌ ๋“œ๋ฆฝ๋‹ˆ๋‹ค. Memory IP๋ฅผ ์ƒ์„ฑํ•˜๊ณ  Simulation ํ•˜๋Š” ๊ณผ์ •๋ถ€ํ„ฐ ๋ฒ”์šฉ์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ DDR Memory Controller ๊ตฌํ˜„, ์˜์ƒ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ Frame Buffer๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋‚ด์šฉ๊นŒ์ง€ ๋ชจ๋“  ๊ณผ์ •์„ ์„ค๋ช…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์†Œ์Šค ์ฝ”๋“œ๋งˆ๋‹ค simulation์„ ํ†ตํ•˜์—ฌ ๊ฒ€์ฆํ•˜๊ณ  ๋™์ž‘์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋ณธ ๊ฐ•์˜์˜ ๋‚ด์šฉ์„ ๋ชจ๋‘ ์ดํ•ดํ•œ๋‹ค๋ฉด DDR Controller๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, Verilog๋ฅผ ํ™œ์šฉํ•œ FPGA ๊ตฌํ˜„์˜ ์‹ค๋ ฅ ์žˆ๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

#2.
Verilog ์‹ค๋ ฅ์„
์—…๊ทธ๋ ˆ์ด๋“œํ•ด ๋ด์š”

Verilog๋ฅผ ๋ฐฐ์šฐ๊ณ ์ž ํ•˜๋Š” ๋ถ„๋“ค์—๊ฒŒ DDR Memory Controller๋Š” ๋งค์šฐ ์ข‹์€ ์Šคํ‚ฌ์ž…๋‹ˆ๋‹ค. ๋งŽ์€ ๊ฐœ๋ฐœ๊ฒฝ๋ ฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์‚ฌ๋žŒ๋“ค๋„ DDR Memory Controller๋ฅผ ์ ‘ํ•ด๋ณด์ง€ ๋ชปํ•œ ๋ถ„๋“ค์ด ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค. Verilog๋ฅผ ํ•œ ๋‹จ๊ณ„ ์—…๊ทธ๋ ˆ์ด๋“œ ํ•  ๊ธฐํšŒ๋ฅผ ์ œ๊ณตํ•˜์—ฌ ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

#3.
์‹ค๋ฌด์— ์ ์šฉ ๊ฐ€๋Šฅํ•œ
์†Œ์Šค ์ฝ”๋“œ๋ฅผ
์ œ๊ณตํ•ด์š”

๋ณธ ๊ฐ•์˜๋ฅผ ๊ตฌ๋งคํ•˜์‹œ๋Š” ๋ถ„๋“ค์—๊ฒŒ๋Š” ๊ฐ•์˜์— ์„ค๋ช…๋œ ๋ชจ๋“  ์†Œ์Šค๋ฅผ ์ œ๊ณตํ•˜์—ฌ ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ œ๊ณต๋˜๋Š” ์†Œ์Šค๋Š” ๊ฐ•์˜๋ฅผ ์ œ์ž‘ํ•˜๋ฉด์„œ ์ฒ˜์Œ๋ถ€ํ„ฐ ํ•˜๋‚˜ํ•˜๋‚˜ ์ฝ”๋”ฉํ•˜๊ณ  ๊ฒ€์ฆ๋œ ์ž๋ฃŒ๋“ค๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ํ˜„์—…์—์„œ ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ๋“ค๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณธ ๊ฐ•์˜๋ฅผ ํ†ตํ•˜์—ฌ DDR Controller์˜ ๋งˆ์Šคํ„ฐ๊ฐ€ ๋˜์‹œ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค.


ํ•™์Šต ๋‚ด์šฉ ๐Ÿ“š

๋ณธ ๊ฐ•์˜๋Š” DDR Controller IP๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ณผ์ •๊ณผ ์ƒ์„ฑ๋œ IP๊ฐ€ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ Simulation์„ ํ†ตํ•˜์—ฌ ๋™์ž‘ ๊ณผ์ •์„ ์ดํ•ดํ•˜๊ณ , ์ƒ์„ฑ๋œ IP๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฒ”์šฉ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” DDR Controller๋ฅผ ์„ค๊ณ„ํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ์˜์ƒ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ Frame ๋ฒ„ํผ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ณผ์ •์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

๋ณธ ๊ฐ•์˜๋Š” ์˜ค๋žซ๋™์•ˆ ISP(Image Signal Processing) ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ–ˆ๋˜ ์ €์ž์˜ ๊ฒฝํ—˜์„ ๋ฐ”ํƒ•์œผ๋กœ ๊ตฌ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ณธ์„œ์˜ ๋‚ด์šฉ๋“ค์€ ์‹ค๋ฌด์— ๋ฐ”๋กœ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ๋“ค์ž…๋‹ˆ๋‹ค. ๋‚ด์šฉ์ด ๋‹ค์†Œ ์–ด๋ ค์šด ๋ถ€๋ถ„๋“ค์ด ํฌํ•จ๋  ์ˆ˜ ์žˆ์ง€๋งŒ, ์ดํ•ด๋˜์ง€ ์•Š๋Š” ๋ถ€๋ถ„๋“ค์€ 2-3๋ฒˆ ์ •๋„ ์ •๋…ํ•˜์‹œ๊ณ , ์ฝ”๋“œ๋“ค์„ Simulation ํ•˜๋ฉด์„œ ๋™์ž‘ ๋‚ด์šฉ์„ ๋ณต์Šตํ•ด๋ณด์„ธ์š”.

๋ณธ ๊ฐ•์˜๋Š” Digilent ์‚ฌ์—์„œ ํŒ๋งคํ•˜๋Š” Arty A7 ๊ฐœ๋ฐœ ๋ณด๋“œ์—์„œ ์‹ค์Šต์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. FPGA๋ฅผ ๋‹ค๋ฃจ๋Š” ๋ฐ ์žˆ์–ด์„œ HW์— ์ ์šฉํ•˜๊ณ  ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. Simulation์œผ๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์€ ํ•œ๊ณ„๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋“œ์‹œ HW์—์„œ ๊ฒ€์ฆํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. (๋ณธ์„œ์˜ ๋งˆ์ง€๋ง‰ ์žฅ์—์„œ ๋‹ค๋ฃจ๋Š” ํ”„๋ ˆ์ž„ ๋ฒ„ํผ์— ๋Œ€ํ•œ ๋‚ด์šฉ์€ ์ ๋‹นํ•œ HW๋ฅผ ์ฐพ์ง€ ๋ชปํ•ด์„œ Simulation์œผ๋กœ๋งŒ ๊ฒ€์ฆ์„ ์ง„ํ–‰ํ•˜๋Š” ์•„์‰ฌ์›€์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ถ”ํ›„ ์ ๋‹นํ•œ ๋ณด๋“œ๋ฅผ ์ฐพ์•„์„œ HW ๊ฒ€์ฆ๊นŒ์ง€ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๊ธธ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค)

1์žฅ์€ ์ „๋ฐ˜์ ์ธ ๋‚ด์šฉ์— ๋Œ€ํ•œ ๊ฐœ์š”์ž…๋‹ˆ๋‹ค.

2์žฅ์€ ์‹ค์Šต์— ์‚ฌ์šฉ๋˜๋Š” Arty A7 ๋ณด๋“œ์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

3์žฅ์€ DDR Controller IP๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ User Interface Logic์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

4์žฅ์€ ์ƒ์„ฑ๋œ DDR Controller IP์˜ Simulation์„ ํ†ตํ•˜์—ฌ ๋™์ž‘ ํŠน์„ฑ์„ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋ฒ”์šฉ์œผ๋กœ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ DDR Controller๋ฅผ ๊ตฌํ˜„ํ•˜๋Š”๋ฐ ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

5์žฅ์€ ๋ฒ”์šฉ์œผ๋กœ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ DDR Controller๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ , ์ด๋ฅผ ์ด์šฉํ•˜์—ฌ DDR Memory์˜ ์ „ ์˜์—ญ์„ Read/Write ํ•˜๋Š” ๊ฒƒ์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ Bitstream์„ ์ƒ์„ฑํ•ด์„œ ๋ณด๋“œ์—์„œ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

6์žฅ์€ Memory Access ์†๋„์— ๊ด€ํ•œ ๋‚ด์šฉ์„ ์‚ดํŽด๋ณด๊ณ ์ตœ๋Œ€ ์†๋„๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ๋‚ด์šฉ์„ ๋‹ค๋ฃจ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

7์žฅ์€ 5์žฅ์—์„œ ๊ตฌํ˜„ํ•œ ๋ฒ”์šฉ DDR Controller๋ฅผ ์ด์šฉํ•˜์—ฌ ์˜์ƒ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ Frame Buffer๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

8์žฅ์€ 16bits DDR Memory 2๊ฐœ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ 32Bits Interface๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

9์žฅ์€ Spartan6์—์„œ DDR Controller๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

10์žฅ์€ DDR4 Controller๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

 

 

์ƒ์„ธ ์ปค๋ฆฌํ˜๋Ÿผ (๋ชฉ์ฐจ)
  1. ๊ฐœ์š”
  2. HW ๊ตฌ์„ฑ
    1. USB-JTAG๋ฅผ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•
    2. JTAG-HS2(or JTAG-HS3) ์ปค๋„ฅํ„ฐ
  3. DDR Controller IP ์ƒ์„ฑ
    1. ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ
    2. Memory IP ์ƒ์„ฑ
    3. Memory IP ๊ตฌ์กฐ
    4. User Interface Block
    5. User Interface ์‹ ํ˜ธ
    6. User Interface Timing
  4. Simulation
    1. Simulation ํ™˜๊ฒฝ ์„ค์ •
    2. Simulation
    3. Simulation ๊ฒฐ๊ณผ ํ™•์ธ
  5. User Interface Logic ๊ตฌํ˜„
    1. ๊ฐœ์š”
    2. Write Module ๊ตฌํ˜„
    3. Read Module ๊ตฌ
    4. User Interface ๋ชจ๋“ˆ ๊ตฌํ˜„ (ddr_test ๋ชจ๋“ˆ)
    5. mig_top Module ๊ตฌํ˜„
    6. Top Module ๊ตฌํ˜„
    7. Top Module Simulation
    8. Bitstream ์ƒ์„ฑ
    9. Bitstream ๋‹ค์šด๋กœ๋“œ & ํ™•์ธ
  6. DDR3 Memory Access ์†๋„
    1. mig7_write8 ์ˆ˜์ •
    2. mig7_read8 ์ˆ˜์ •
    3. mig7_write_top ์ˆ˜์ •
    4. mig7_read_top ์ˆ˜์ •
    5. ddr_test ์ˆ˜์ •
    6. define.v ์ˆ˜์ •
    7. MIG7 Memory Interface IP ์ˆ˜์ •
    8. clk_gen ์ˆ˜์ •
    9. Arty35Top.v ์ˆ˜์ •
    10. Bitstream ์ƒ์„ฑ ๋ฐ ๊ฒฐ๊ณผ ํ™•์ธ
  7. Frame Buffer ๊ตฌํ˜„
    1. ๋ฐ์ดํ„ฐ ์ค€๋น„
    2. Image Decoder
    3. Frame Buffer ๊ฐœ์š”
    4.  frame_write
    5. frame_read
    6. ์˜์ƒ ๋ฐ์ดํ„ฐ๋ฅผ ์ด์šฉํ•œ Frame Buffer ํ™•์ธ
  8. 32bits Interface ๊ตฌํ˜„
    1. ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ
    2. Memory IP ์ƒ์„ฑ
    3. Simulation์„ ํ†ตํ•œ ์ƒ์„ฑ๋œ IP ๋™์ž‘ ์ดํ•ด
    4. User Interface ๊ตฌํ˜„
    5. mig32_top ๋ชจ๋“ˆ simulation
    6. ๊ฒฐ๋ก 
  9. Spartan6 DDR Controller ๊ตฌํ˜„
    1. ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ
    2. IP ์ƒ์„ฑ
    3. mcb review
    4. simulation์„ ํ†ตํ•œ ๋™์ž‘ ํ™•์ธ
    5. ์ฝ”๋“œ ๊ตฌํ˜„
    6. ์ „ ์˜์—ญ read/write ๊ตฌํ˜„
    7.  ๊ฒฐ๋ก 
  10. DDR4 Controller ๊ตฌํ˜„
    1. ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ
    2. IP ์ƒ์„ฑ
    3. simulation
    4. ์ฝ”๋“œ ๊ตฌํ˜„
    5. Address ๊ด€๋ จ
    6. xdc ์ƒ์„ฑ
    7. ๊ฒฐ๊ณผ ํ™•์ธ
    8. ๊ฒฐ๋ก 
  11. ์ฐธ๊ณ  ์ž๋ฃŒ
  12. Revision History

์˜ˆ์ƒ ์งˆ๋ฌธ Q&A ๐Ÿ’ฌ

Q. Verilog ์ดˆ๋ณด์ž๋“ค๋„ ๊ฐ€๋Šฅํ•œ๊ฐ€์š”?

Verilog์— ๋Œ€ํ•œ ๊ธฐ๋ณธ์ ์ธ ์ง€์‹์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ด€๋ จ ์ง€์‹์ด ์—†์œผ๋ฉด ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Q. ์ค€๋น„ ์‚ฌํ•ญ์ด ์žˆ๋‚˜์š”?

์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ๊ฒ€์ฆํ•˜๊ธฐ ์œ„ํ•˜์—ฌ Arty A7 ๋ณด๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ณด๋“œ๊ฐ€ ์ค€๋น„๋˜๋ฉด ๊ตฌํ˜„ํ•œ ๋‚ด์šฉ์„ ์ง์ ‘ ํ™•์ธํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ชจ๋“  ์†Œ์Šค๋ฅผ simulation ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์–ด์„œ ๋จผ์ € ๊ฐ•์˜๋ฅผ ๋“ฃ๊ณ  ๋ณด๋“œ๊ฐ€ ์ค€๋น„๋˜๋ฉด ๋‚˜์ค‘์— ๊ฒ€์ฆํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค.

Q. ํ”„๋กœ๊ทธ๋žจ ํˆด์€ ๋ฌด์—‡์„ ์‚ฌ์šฉํ•˜๋‚˜์š”?

Xilinx ์‚ฌ์˜ vivado 2018.3์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. 2018.3 ์ดํ›„ ๋ฒ„์ „์ด๋ฉด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.


์ง€์‹๊ณต์œ ์ž ์†Œ๊ฐœ โœ’๏ธ

์ €๋Š” 20์—ฌ ๋…„ ๋™์•ˆ ๋Œ€๊ธฐ์—…, ์ค‘์†Œ๊ธฐ์—…์—์„œ ๊ฐœ๋ฐœ์ž๋กœ ์ผํ•ด์™”๊ณ  ํ˜„์žฌ๋Š” ์ž‘์€ ๊ธฐ์—…์„ ์šด์˜ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. CCTV์šฉ ISP(Image Signal Processing) ASIC์„ ๊ฐœ๋ฐœํ•˜์˜€๊ณ  OLED ๊ฒ€์‚ฌ ์žฅ๋น„, DAQ (Data Acquisition System) ๋“ฑ FPGA๋ฅผ ์ด์šฉํ•œ ๋งŽ์€ ์ œํ’ˆ์„ ๊ฐœ๋ฐœํ•˜์˜€์Šต๋‹ˆ๋‹ค. FPGA๋ฟ๋งŒ ์•„๋‹ˆ๋ผ FW ๊ฐœ๋ฐœ (STM32, PIC32, AVR, ATMEGA ๋“ฑ), ํšŒ๋กœ ์„ค๊ณ„, Windows Program ๋“ฑ ๋งŽ์€ ๊ฒฝํ—˜์„ ๊ฐ–๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋™์•ˆ ์ œ๊ฐ€ ์Œ“์•„์˜จ ํญ๋„“์€ ๊ฒฝํ—˜์„ ๋ฐ”ํƒ•์œผ๋กœ ์—ฌ๋Ÿฌ๋ถ„์˜ ํ•™์Šต์— ๋„์›€์ด ๋˜๊ธฐ๋ฅผ ์†Œ๋งํ•ฉ๋‹ˆ๋‹ค.


์ด๋Ÿฐ ๋ถ„๋“ค๊ป˜
์ถ”์ฒœ๋“œ๋ ค์š”

ํ•™์Šต ๋Œ€์ƒ์€
๋ˆ„๊ตฌ์ผ๊นŒ์š”?

  • FPGA๋ฅผ ์ด์šฉํ•œ ์˜์ƒ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ

  • Frame Buffer ๊ตฌํ˜„

  • Verilog ๋ฐฐ์šฐ๊ณ  ์‹ถ์€์‹  ๋ถ„

  • FPGA ๋ฐฐ์šฐ๊ณ  ์‹ถ์œผ์‹  ๋ถ„

์„ ์ˆ˜ ์ง€์‹,
ํ•„์š”ํ• ๊นŒ์š”?

  • Verilog

  • vivado

  • FPGA

์•ˆ๋…•ํ•˜์„ธ์š”
alex์ž…๋‹ˆ๋‹ค.

1,733

๋ช…

์ˆ˜๊ฐ•์ƒ

87

๊ฐœ

์ˆ˜๊ฐ•ํ‰

131

๊ฐœ

๋‹ต๋ณ€

4.8

์ 

๊ฐ•์˜ ํ‰์ 

17

๊ฐœ

๊ฐ•์˜

์ €๋Š” ์ง€๋‚œ 20์—ฌ๋…„ ๋™์•ˆ ๋Œ€๊ธฐ์—…, ์ค‘์†Œ๊ธฐ์—…์—์„œ ๊ฐœ๋ฐœ์ž๋กœ ์ผํ•ด์™”๊ณ 

ํ˜„์žฌ๋Š” ์ž‘์€ ๊ธฐ์—…์˜ ๋Œ€ํ‘œ๋กœ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฃผ์š” ๊ฒฝ๋ ฅ์‚ฌํ•ญ์€

  • Verilog HDL์„ ์ด์šฉํ•œ FPGA ์„ค๊ณ„

    • CCTV์šฉ ISP ASIC ๊ฐœ๋ฐœ (์•ฝ 10๋…„)

    • OLED Display ๊ฒ€์‚ฌ์žฅ๋น„ ๊ฐœ๋ฐœ (์•ฝ 3๋…„)

    • FPGA๋ฅผ ์ด์šฉํ•œ ์žฅ๋น„ ๊ฐœ๋ฐœ

  • MCU FW

    • STM32

    • PIC32

    • AVR, ATMEGA

    • DSP (TI)

  • Windows Application Program

    • Visual Studio MFC, C++

์ž…๋‹ˆ๋‹ค.

๋”๋ณด๊ธฐ

์ปค๋ฆฌํ˜๋Ÿผ

์ „์ฒด

277๊ฐœ

ํ•ด๋‹น ๊ฐ•์˜์—์„œ ์ œ๊ณต:

์ˆ˜์—…์ž๋ฃŒ
๊ฐ•์˜ ๊ฒŒ์‹œ์ผ: 
๋งˆ์ง€๋ง‰ ์—…๋ฐ์ดํŠธ์ผ: 

์ˆ˜๊ฐ•ํ‰

์ „์ฒด

7๊ฐœ

5.0

7๊ฐœ์˜ ์ˆ˜๊ฐ•ํ‰

  • appleid7133๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
    appleid7133

    ์ˆ˜๊ฐ•ํ‰ 4

    โˆ™

    ํ‰๊ท  ํ‰์  5.0

    5

    57% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

    ๋งŽ์€ ๋„์›€์ด ๋จ

    • alex
      ์ง€์‹๊ณต์œ ์ž

      ๋„์›€์ด ๋˜์…จ๋‹ค๋‹ˆ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋Š˜ ํ•˜๋ฃจ๋„ ์ฆ๊ฑฐ์šด ์‹œ๊ฐ„ ๋˜์„ธ์š”. ~!!

  • kimjw0319๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
    kimjw0319

    ์ˆ˜๊ฐ•ํ‰ 2

    โˆ™

    ํ‰๊ท  ํ‰์  5.0

    5

    100% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

    ์ž˜ ์ •๋ฆฌ๋œ ๋‚ด์šฉ์ด๋„ค์š”

    • miheungsound๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
      miheungsound

      ์ˆ˜๊ฐ•ํ‰ 2

      โˆ™

      ํ‰๊ท  ํ‰์  5.0

      5

      30% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

      ์ข‹์€ ๊ฐ•์˜ ๋‚ด์šฉ์œผ๋กœ ๋งŽ์€ ๋„์›€์ด ๋ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ฒˆ ๋ฐ˜๋ณต ํ•ด์„œ ๋ณด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

      • alex
        ์ง€์‹๊ณต์œ ์ž

        ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๊ฐ•์˜ ํ†ตํ•ด์„œ ddr controller๋ฅผ ์™„์ „ํžˆ ์ดํ•ดํ•˜์‹œ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค. xilinx ์—์„œ ์ œ๊ณตํ•˜๋Š” ip ํ•˜๋‚˜๋ฅผ ์ •๋ณตํ•˜๋ฉด ๋‹ค๋ฅธ ip๋“ค๋„ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ๋งŽ์€ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค~ fpga ๋ถ„์•ผ๊ฐ€ ์‰ฝ์ง€ ์•Š์€ ๋ถ„์•ผ์ž…๋‹ˆ๋‹ค. ๋๊นŒ์ง€ ์™„์ฃผ ํ•˜์‹œ๊ธธ ์‘์›ํ•ฉ๋‹ˆ๋‹ค ~!!

    • coldugs๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
      coldugs

      ์ˆ˜๊ฐ•ํ‰ 1

      โˆ™

      ํ‰๊ท  ํ‰์  5.0

      5

      5% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

      FPGA ๊ด€๋ จ ์ž๋ฃŒ๋Š” ์ฐพ๊ธฐ๋„ ์–ด๋ ต๊ณ  ์ฐพ์•„๋„ ์–‘์ด ๋ฐฉ๋Œ€ํ•ด์„œ ๋ฐฐ์šฐ๊ธฐ๊ฐ€ ํž˜๋“ค๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ข‹์€ ์ž๋ฃŒ๋กœ ๋งŽ์€ ๋„์›€์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

      • alex
        ์ง€์‹๊ณต์œ ์ž

        ์ €๋„ ์ฒ˜์Œ ๋ฐฐ์šธ ๋•Œ ๋ญ˜ ๋ด์•ผํ•˜๊ณ  ์–ด๋–ป๊ฒŒ ์‹œ์ž‘ํ•ด์•ผ ํ• ์ง€ ๋ง‰๋ง‰ํ–ˆ๋˜ ๊ฒƒ ๊ฐ™๋„ค์š”. ๋”์šฑ ์œ ์ตํ•œ ์ž๋ฃŒ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋„๋ก ๋…ธ๋ ฅํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค~!!

    • mjs1004๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
      mjs1004

      ์ˆ˜๊ฐ•ํ‰ 4

      โˆ™

      ํ‰๊ท  ํ‰์  5.0

      ์ˆ˜์ •๋จ

      5

      100% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

      DDR Controller๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋‹ˆ ๋ง‰๋ง‰ ํ–ˆ๋Š”๋ฐ, ํ•„์š”ํ•œ ํ•ต์‹ฌ ๋ถ€๋ถ„์„ ์ž˜ ์•Œ๋ ค์ฃผ๋Š” ๊ฐ•์˜์ž…๋‹ˆ๋‹ค. Xilinx์˜ ๋ฌธ์„œ๋“ค์„ ์–ด๋””์„œ๋ถ€ํ„ฐ ์–ด๋–ป๊ฒŒ ์ฝ์–ด์•ผ ๋‚œ๊ฐํ–ˆ๋Š”๋ฐ, ๊ฐ•์˜ ์ˆ˜๊ฐ• ํ›„ ๊ธธ์ด ๋ณด์ด๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ข‹์€ ๊ฐ•์˜ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

      alex๋‹˜์˜ ๋‹ค๋ฅธ ๊ฐ•์˜

      ์ง€์‹๊ณต์œ ์ž๋‹˜์˜ ๋‹ค๋ฅธ ๊ฐ•์˜๋ฅผ ๋งŒ๋‚˜๋ณด์„ธ์š”!

      ๋น„์Šทํ•œ ๊ฐ•์˜

      ๊ฐ™์€ ๋ถ„์•ผ์˜ ๋‹ค๋ฅธ ๊ฐ•์˜๋ฅผ ๋งŒ๋‚˜๋ณด์„ธ์š”!

      ์›” โ‚ฉ22,000

      5๊ฐœ์›” ํ• ๋ถ€ ์‹œ

      โ‚ฉ110,000