์˜คํ”ˆ ์†Œ์Šค FPGA ์ด๋‹ˆ์…”ํ‹ฐ๋ธŒ

ํ˜„์žฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐ€๋Šฅ ๊ฒŒ์ดํŠธ ์–ด๋ ˆ์ด ์‚ฌ์šฉ๊ณผ ๊ด€๋ จ๋œ ๊ฐœ๋ฐฉํ˜• ํ•˜๋“œ์›จ์–ด ๋ฐ ์†Œํ”„ํŠธ์›จ์–ด ์†”๋ฃจ์…˜์˜ ๊ณต๋™ ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ํ™˜๊ฒฝ์„ ๊ฐœ๋ฐœ, ํ™๋ณด ๋ฐ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•˜๋Š” ์ƒˆ๋กœ์šด ๋น„์˜๋ฆฌ ์กฐ์ง์ธ ์˜คํ”ˆ ์†Œ์Šค FPGA ์žฌ๋‹จ(OSFPGA)์˜ ์„ค๋ฆฝ์„ ๋ฐœํ‘œํ–ˆ์Šต๋‹ˆ๋‹ค. FPGA) ์นฉ ์ œ์กฐ ํ›„ ์žฌํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐ€๋Šฅํ•œ ๋…ผ๋ฆฌ ์ž‘์—…์„ ํ—ˆ์šฉํ•˜๋Š” ์ง‘์  ํšŒ๋กœ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์นฉ์˜ ์ฃผ์š” ์ด์ง„ ์—ฐ์‚ฐ(AND, NAND, OR, NOR ๋ฐ XOR)์€ ์—ฌ๋Ÿฌ ์ž…๋ ฅ๊ณผ ํ•˜๋‚˜์˜ ์ถœ๋ ฅ์ด ์žˆ๋Š” ๋…ผ๋ฆฌ ๊ฒŒ์ดํŠธ(์Šค์œ„์น˜)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„๋˜๋ฉฐ, ์—ฐ๊ฒฐ ๊ตฌ์„ฑ์€ ์†Œํ”„ํŠธ์›จ์–ด๋กœ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

OSFPGA์˜ ์ฐฝ๋ฆฝ ๋ฉค๋ฒ„์—๋Š” EPFL, QuickLogic, Zero ASIC ๋ฐ GSG Group๊ณผ ๊ฐ™์€ ํšŒ์‚ฌ ๋ฐ ํ”„๋กœ์ ํŠธ์˜ ์ €๋ช…ํ•œ FPGA ๊ธฐ์ˆ  ์—ฐ๊ตฌ์›์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ์กฐ์ง์˜ ํ›„์›์œผ๋กœ FPGA ์นฉ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ์‹ ์†ํ•œ ํ”„๋กœํ† ํƒ€์ดํ•‘๊ณผ ์ „์ž ์„ค๊ณ„ ์ž๋™ํ™”(EDA) ์ง€์›์„ ์œ„ํ•œ ๊ฐœ๋ฐฉํ˜• ๋ฌด๋ฃŒ ๋„๊ตฌ ์„ธํŠธ๊ฐ€ ๊ฐœ๋ฐœ๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ์ด ์กฐ์ง์€ FPGA์™€ ๊ด€๋ จ๋œ ๊ฐœ๋ฐฉํ˜• ํ‘œ์ค€์˜ ๊ณต๋™ ๊ฐœ๋ฐœ์„ ๊ฐ๋…ํ•˜์—ฌ ๊ธฐ์—…์ด ๊ฒฝํ—˜๊ณผ ๊ธฐ์ˆ ์„ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋Š” ์ค‘๋ฆฝ์ ์ธ ํฌ๋Ÿผ์„ ์ œ๊ณตํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

OSFPGA๋ฅผ ํ†ตํ•ด ์นฉ ํšŒ์‚ฌ๋Š” FPGA ์ƒ์‚ฐ๊ณผ ๊ด€๋ จ๋œ ์—”์ง€๋‹ˆ์–ด๋ง ํ”„๋กœ์„ธ์Šค ์ค‘ ์ผ๋ถ€๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ์ตœ์ข… ์‚ฌ์šฉ์ž ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๊ธฐ์„ฑ ๋งž์ถคํ˜• FPGA ์†Œํ”„ํŠธ์›จ์–ด ์Šคํƒ์„ ์ œ๊ณตํ•˜๋ฉฐ ํ˜‘์—…์„ ํ†ตํ•ด ์ƒˆ๋กœ์šด ๊ณ ํ’ˆ์งˆ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์„ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋ฉ๋‹ˆ๋‹ค. OSFPGA์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐฉํ˜• ๋„๊ตฌ๋Š” ์—…๊ณ„ ํ‘œ์ค€์„ ์ถฉ์กฑํ•˜๊ฑฐ๋‚˜ ์ดˆ๊ณผํ•˜๋Š” ์ตœ๊ณ  ์ˆ˜์ค€์˜ ํ’ˆ์งˆ๋กœ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.

์˜คํ”ˆ ์†Œ์Šค FPGA Foundation์˜ ์ฃผ์š” ๋ชฉํ‘œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • FPGA ํ•˜๋“œ์›จ์–ด ๋ฐ ์†Œํ”„ํŠธ์›จ์–ด์™€ ๊ด€๋ จ๋œ ๋„๊ตฌ ์„ธํŠธ๋ฅผ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•œ ๋ฆฌ์†Œ์Šค ๋ฐ ์ธํ”„๋ผ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ๋‹ค์–‘ํ•œ ์ด๋ฒคํŠธ๋ฅผ ํ†ตํ•ด ์ด๋Ÿฌํ•œ ๋„๊ตฌ์˜ ์‚ฌ์šฉ์„ ํ™๋ณดํ•ฉ๋‹ˆ๋‹ค.
  • ๊ณ ๊ธ‰ FPGA ์•„ํ‚คํ…์ฒ˜ ์—ฐ๊ตฌ๋Š” ๋ฌผ๋ก  ๊ด€๋ จ ์†Œํ”„ํŠธ์›จ์–ด ๋ฐ ํ•˜๋“œ์›จ์–ด ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ๋„๊ตฌ์˜ ์ง€์›, ๊ฐœ๋ฐœ ๋ฐ ๊ฐœ๋ฐฉ์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ์ถœํŒ๋ฌผ ๋ฐ ๋งŒ๋ฃŒ๋œ ํŠนํ—ˆ ๊ณต๊ฐœ์—์„œ ํŒŒ์ƒ๋œ ๊ณต๊ฐœ์ ์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ FPGA ์•„ํ‚คํ…์ฒ˜, ์„ค๊ณ„ ๊ธฐ์ˆ  ๋ฐ ๋ณด๋“œ ์„ค๊ณ„์˜ ์นดํƒˆ๋กœ๊ทธ๋ฅผ ์œ ์ง€ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • ๊ด€์‹ฌ ์žˆ๋Š” ๊ฐœ๋ฐœ์ž ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ๊ต์œก ์ž๋ฃŒ๋ฅผ ์ค€๋น„ํ•˜๊ณ  ์ด์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ์นฉ ์ œ์กฐ์—…์ฒด์™€์˜ ํ˜‘์—…์„ ๋‹จ์ˆœํ™”ํ•˜์—ฌ ์ƒˆ๋กœ์šด FPGA ์•„ํ‚คํ…์ฒ˜ ๋ฐ ํ•˜๋“œ์›จ์–ด๋ฅผ ํ…Œ์ŠคํŠธํ•˜๊ณ  ๊ฒ€์ฆํ•˜๋Š” ๋ฐ ๋“œ๋Š” ๋น„์šฉ๊ณผ ์‹œ๊ฐ„์„ ์ค„์ž…๋‹ˆ๋‹ค.

๊ด€๋ จ ์˜คํ”ˆ ์†Œ์Šค ๋„๊ตฌ:

  • OpenFPGA๋Š” Verilog ์„ค๋ช…์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋“œ์›จ์–ด ์ƒ์„ฑ์„ ์ง€์›ํ•˜๋Š” FPGA์šฉ EDA(์ „์ž ์„ค๊ณ„ ์ž๋™ํ™”) ํ‚คํŠธ์ž…๋‹ˆ๋‹ค.
  • ์ฒซ ๋ฒˆ์งธ CLaaS๋Š” FPGA๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›น ๋ฐ ํด๋ผ์šฐ๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์šฉ ํ•˜๋“œ์›จ์–ด ๊ฐ€์†๊ธฐ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค.
  • Verilog-to-Routing(VTR)์€ Verilog ์–ธ์–ด์˜ ์„ค๋ช…์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์„ ํƒํ•œ FPGA์˜ ๊ตฌ์„ฑ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ํˆดํ‚ท์ž…๋‹ˆ๋‹ค.
  • Symbiflow๋Š” Xilinx 7, Lattice iCE40, Lattice ECP5 ๋ฐ QuickLogic EOS S3 FPGA ๊ธฐ๋ฐ˜ ์†”๋ฃจ์…˜์„ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•œ ํˆดํ‚ท์ž…๋‹ˆ๋‹ค.
  • Yosys๋Š” ์ผ๋ฐ˜์ ์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•œ Verilog RTL ํ•ฉ์„ฑ ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค.
  • EPFL์€ ๋…ผ๋ฆฌ ํ•ฉ์„ฑ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ชจ์Œ์ž…๋‹ˆ๋‹ค.
  • LSOracle์€ ๋…ผ๋ฆฌ ํ•ฉ์„ฑ ๊ฒฐ๊ณผ๋ฅผ ์ตœ์ ํ™”ํ•˜๊ธฐ ์œ„ํ•œ EPFL ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.
  • Edalize๋Š” ์ „์ž ์„ค๊ณ„ ์ž๋™ํ™”(EDA) ์‹œ์Šคํ…œ๊ณผ ์ƒํ˜ธ ์ž‘์šฉํ•˜๊ณ  ์ด๋ฅผ ์œ„ํ•œ ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ Python ํˆดํ‚ท์ž…๋‹ˆ๋‹ค.
  • GHDL์€ VHDL ํ•˜๋“œ์›จ์–ด ์„ค๋ช… ์–ธ์–ด๋ฅผ ์œ„ํ•œ ์ปดํŒŒ์ผ๋Ÿฌ, ๋ถ„์„๊ธฐ, ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ ๋ฐ ํ•ฉ์„ฑ๊ธฐ์ž…๋‹ˆ๋‹ค.
  • VerilogCreator๋Š” ์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ Verilog 2005์˜ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์œผ๋กœ ์ „ํ™˜ํ•˜๋Š” QtCreator์šฉ ํ”Œ๋Ÿฌ๊ทธ์ธ์ž…๋‹ˆ๋‹ค.
  • FuseSoC๋Š” HDL(Hardware Description Language) ์ฝ”๋“œ์šฉ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž์ด์ž FPGA/ASIC์šฉ ์–ด์…ˆ๋ธ”๋ฆฌ ์ถ”์ƒํ™” ์œ ํ‹ธ๋ฆฌํ‹ฐ์ž…๋‹ˆ๋‹ค.
  • SOFA(Skywater ์˜คํ”ˆ ์†Œ์Šค FPGA)๋Š” Skywater PDK ๋ฐ OpenFPGA ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ์„ฑ๋œ ๊ฐœ๋ฐฉํ˜• FPGA IP(์ง€์  ์žฌ์‚ฐ) ์„ธํŠธ์ž…๋‹ˆ๋‹ค.
  • openFPGALoader๋Š” FPGA ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์œ„ํ•œ ์œ ํ‹ธ๋ฆฌํ‹ฐ์ž…๋‹ˆ๋‹ค.
  • LiteDRAM - DRAM ๊ตฌํ˜„์„ ๊ฐ–์ถ˜ FPGA์šฉ ๋งž์ถคํ˜• IP ์ฝ”์–ด์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ TV๋‚˜ ๋ชจ๋‹ˆํ„ฐ์— ์—ฐ๊ฒฐ๋œ DE10-Nano FPGA ๋ณด๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์˜ค๋ž˜๋œ ๊ฒŒ์ž„ ์ฝ˜์†”๊ณผ ํด๋ž˜์‹ ์ปดํ“จํ„ฐ์˜ ์žฅ๋น„๋ฅผ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•  ์ˆ˜ ์žˆ๋Š” Main_MiSTer ํ”„๋กœ์ ํŠธ์— ์ฃผ๋ชฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—๋ฎฌ๋ ˆ์ดํ„ฐ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ๊ณผ ๋‹ฌ๋ฆฌ FPGA๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด์ „ ํ•˜๋“œ์›จ์–ด ํ”Œ๋žซํผ์šฉ ๊ธฐ์กด ์‹œ์Šคํ…œ ์ด๋ฏธ์ง€์™€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์›๋ž˜ ํ•˜๋“œ์›จ์–ด ํ™˜๊ฒฝ์„ ๋‹ค์‹œ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€