์ธํ”„๋Ÿฐ ์˜๋ฌธ ๋ธŒ๋žœ๋“œ ๋กœ๊ณ 
์ธํ”„๋Ÿฐ ์˜๋ฌธ ๋ธŒ๋žœ๋“œ ๋กœ๊ณ 

Verilog FPGA Program 2 (MicroBlaze2, Arty A7-35T)

์ด ๊ฐ•์˜๋Š” Microblaze ๊ณ ๊ธ‰ ๊ณผ์ •์ž…๋‹ˆ๋‹ค. ๊ฐ•์˜๋ฅผ ํ†ตํ•ด Microblaze ์‘์šฉ ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ค‘๊ธ‰์ž๋ฅผ ์œ„ํ•ด ์ค€๋น„ํ•œ
[์ž„๋ฒ ๋””๋“œ ยท IoT, ๋ฐ˜๋„์ฒด] ๊ฐ•์˜์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฐ ๊ฑธ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์–ด์š”

  • FPGA ์—์„œ MicroBlaze ์‚ฌ์šฉํ•˜๊ธฐ

  • Verilog ํ”„๋กœ๊ทธ๋žจ

  • w5500 ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌํ˜„

๊ณต๋ถ€ํ•˜๊ธฐ ๋ง‰๋ง‰ํ•œ FPGA MicroBlaze!
๊ฐ•์˜์™€ ํ•จ๊ป˜๋ผ๋ฉด ๋ฝ€๊ฐค ์ˆ˜ ์žˆ์–ด์š” ๐Ÿ’ช

๐Ÿ“ข ์ˆ˜๊ฐ• ์ „ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”.

  • ๋ณธ ๊ฐ•์˜๋Š” ์ „์ž๋ฌธ์„œ(PDF) ํ˜•์‹์œผ๋กœ ๊ตฌ์„ฑ๋œ ํ…์ŠคํŠธ ๊ฐ•์˜์ž…๋‹ˆ๋‹ค. ๊ฐ•์˜๋ฅผ ์ˆ˜๊ฐ•ํ•˜์‹œ๋Š” ๋ถ„๋“ค๊ป˜๋Š” ๊ฐ•์˜์— ์„ค๋ช…๋˜์–ด ์žˆ๋Š” ๋ชจ๋“  ์†Œ์Šค ํŒŒ์ผ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ฐ•์˜ ์†Œ์Šค ์ฝ”๋“œ๋Š” ์„น์…˜ 0 [์ž๋ฃŒ ๊ณต์œ  ๋งํฌ]์—์„œ ๋‹ค์šด๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ณธ ๊ฐ•์˜๋Š” [FPGA MicroBlaze ๊ตฌํ˜„] ๊ฐ•์˜์— ์ด์–ด์ง€๋Š” ํ™œ์šฉ ๊ฐ•์˜์ž…๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋žจ ์„ค์น˜ ๊ด€๋ จ ์‚ฌํ•ญ์€ ์ด์ „ ๊ฐ•์˜์— ์ž์„ธํžˆ ์„ค๋ช…๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ•์˜ ์ฃผ์ œ ๐Ÿ“–

๋ณธ ๊ฐ•์˜๋Š” MicroBlaze ์‘์šฉํŽธ์ž…๋‹ˆ๋‹ค. MicroBlaze ๊ธฐ์ดˆํŽธ์—๋Š” MicroBlaze์˜ ๊ธฐ๋ณธ์ ์ธ ๋‚ด์šฉ์„ ์ดํ•ดํ•˜๊ณ  ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์— ์ค‘์ ์„ ๋‘์—ˆ์Šต๋‹ˆ๋‹ค. ์‘์šฉํŽธ์—์„œ๋Š” Block Memory๋ฅผ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ธฐ๋ฐ˜์œผ๋กœ, w5500์„ ์ด์šฉํ•œ ๊ณ ์† TCP/IP๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ๋กœ์ง๊ณผ MicroBlaze์™€์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ์ด๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋‚ด์šฉ์„ ๋‹ค๋ฃจ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๋ณธ ๊ฐ•์˜๋Š” vivado 2022.1 ๋ฒ„์ „์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์„ค์น˜ ๊ด€๋ จ ์‚ฌํ•ญ์€ Microblaze ๊ธฐ์ดˆํŽธ์— ์ž์„ธํžˆ ์„ค๋ช…๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค๋ณธ ๊ฐ•์˜๋Š” ๊ฐœ๋ฐœ ๊ฒฝ๋ ฅ 20๋…„ ์ด์ƒ์˜ ๊ฐœ๋ฐœ์ž๊ฐ€ Arty A7 ๋ณด๋“œ์—์„œ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ง์ ‘ ๊ตฌํ˜„ํ•˜๊ณ  ๊ฒ€์ฆํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค. ๊ฐ•์˜์— ์„ค๋ช…๋œ ๋‚ด์šฉ๋“ค์„ ์ถฉ๋ถ„ํžˆ ํ•™์Šตํ•˜๊ณ  ์ž๊ธฐ ๊ฒƒ์œผ๋กœ ์†Œํ™”ํ•œ๋‹ค๋ฉด ๋งค์šฐ ๋Šฅ๋ ฅ ์žˆ๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž๋ฃŒ์‹ค์—์„œ ๋‹ค์šด๋ฐ›์€ ์†Œ์Šค๋Š” ์‹ค๋ฌด์—์„œ ์‚ฌ์šฉํ•ด๋„ ์ „ํ˜€ ๋ฌธ์ œ๊ฐ€ ์—†๋Š” ๊ณ ๊ธ‰ ์ฝ”๋“œ๋“ค์ž…๋‹ˆ๋‹ค. ํ˜„์—…์—์„œ ๋งŽ์€ ๋ถ„์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ธธ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฐ ๋ถ„๋“ค๊ป˜ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค.

1๏ธโƒฃ

Verilog ๋ฌธ๋ฒ•์„ ์ดํ•ดํ•˜๊ณ ,
FPGA ์„ค๊ณ„ ๊ฒฝํ—˜์ด ์žˆ๋Š” ๋ถ„

2๏ธโƒฃ

์ž„๋ฒ ๋””๋“œ ์‹œ์Šคํ…œ(FW)
๊ฐœ๋ฐœ ๊ฒฝํ—˜์ด ์žˆ์œผ์‹  ๋ถ„


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

Vivado Design Block ๊ตฌํ˜„

User logic Design ๋ฐ Simulation

Vitis ์‘์šฉ SW ๊ตฌํ˜„

๋ณด๋“œ ๋‹ค์šด๋กœ๋“œ ๋ฐ ๊ฒฐ๊ณผ ํ™•์ธ

์ƒ์„ธ ์ปค๋ฆฌํ˜๋Ÿผ์ด ๊ถ๊ธˆํ•˜๋‹ค๋ฉด?
  1. ๊ฐœ์š” (3)
  2. Block Memory Interface - 1 (4)
    1. ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ (5)
    2. Block Design (7)
    3. Constraints ํŒŒ์ผ ์ถ”๊ฐ€ (17)
    4. ์‘์šฉ SW ๊ตฌํ˜„ (12)
    5. ๊ฒฐ๊ณผ ํ™•์ธ (24)
      1. Build Project (24)
      2. ํ”„๋กœ๊ทธ๋žจ ๋‹ค์šด๋กœ๋“œ (25)
  3. Block Memory Interface - 2 (29)
    1. ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ (30)
    2. Block Design (31)
    3. User Logic Design (40)
    4. ์‘์šฉ SW ๊ตฌํ˜„ (50)
    5. ๋‹ค์šด๋กœ๋“œ ๋ฐ ๊ฒฐ๊ณผ ํ™•์ธ (53)
    6. ๋งํฌ ์Šคํฌ๋ฆฝํŠธ ์ˆ˜์ • (56)
  4. w5500 ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌํ˜„ (58)
    1. System Block (59)
    2. ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ (61)
    3. Block Design (62)
    4. User Logic Design (70)
    5. w5500 spi timing (74)
    6. ์†Œ์Šค ์ฝ”๋“œ ๋ถ„์„ (75)
      1. ax_reg ๋ชจ๋“ˆ (75)
      2. eth_task ๋ชจ๋“ˆ (77)
      3. eth_task simulation (87)
      4. bramW5500Top ๋ชจ๋“ˆ (95)
      5. xdc ํŒŒ์ผ (98)
    7. ์‘์šฉ SW ๊ตฌํ˜„ (99)
      1. data_type.h (105)
      2. ax_common.h (105)
      3. w5500.c, w5500.h (105)
      4. w5500_task.c, w5500_task.h (106)
      5. w5500_socket.c, w5500_socket.h (106)
      6. w5500_loopback.c, w5500_loopback.h (107)
      7. helloworld.c (109)
    8. ๊ฒฐ๊ณผ ํ™•์ธ (110)
      1. Build Projec (110)
      2. PC Network ์„ค์ • (111)
      3. ํ”„๋กœ๊ทธ๋žจ ๋‹ค์šด๋กœ๋“œ (112)
      4. ๊ฒฐ๊ณผ ํ™•์ธ (115)
      5. ์™ธ๋ถ€ Flash์— ํ”„๋กœ๊ทธ๋žจ ๋‹ค์šด๋กœ๋“œ (118)
    9. ๊ฒฐ๋ก  (119)
  5. ์ฐธ๊ณ  ์ž๋ฃŒ (120)
  6. Revision History (121)

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

Q. ๊ฐ•์˜๋ฅผ ๋“ฃ๋Š” ๋Œ€์ƒ์ž๋Š” ๋ˆ„๊ตฌ์ธ๊ฐ€์š”?

Verilog ๋ฌธ๋ฒ•์„ ์ดํ•ดํ•˜๊ณ , FPGA ์„ค๊ณ„ ๊ฒฝํ—˜์ด ์žˆ์œผ๋ฉฐ, ์ž„๋ฒ ๋””๋“œ ์‹œ์Šคํ…œ(FW) ๊ฐœ๋ฐœ ๊ฒฝํ—˜์ด ์žˆ์œผ์‹  ๋ถ„๋“ค์„ ๋Œ€์ƒ์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. Microblaze๋ฅผ ์ฒ˜์Œ ์ ‘ํ•˜์‹ ๋‹ค๋ฉด, ๊ธฐ์ดˆ ๊ฐ•์˜๋ฅผ ์ˆ˜๊ฐ•ํ•˜์‹  ํ›„ ๋ณธ ๊ฐ•์˜๋ฅผ ์ˆ˜๊ฐ•ํ•˜์‹œ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค.

Q. ๊ฐ•์˜๋ฅผ ๋“ฃ๊ธฐ ์œ„ํ•ด ์ค€๋น„ํ•ด์•ผ ํ•  ์‚ฌํ•ญ์ด ์žˆ๋‚˜์š”?

๋ณธ ๊ฐ•์˜๋Š” ์‹ค์Šต ๋ณด๋“œ Arty A7-35T(100T, Digilent ์‚ฌ ์ œํ’ˆ)์—์„œ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ๋ณด๋“œ๊ฐ€ ์ค€๋น„๋˜์ง€ ์•Š์•˜๋‹ค๋ฉด ๋จผ์ € ๋‚ด์šฉ์„ ๋ณด์‹œ๊ณ  ๋‚˜์ค‘์— ๋ณด๋“œ๋ฅผ ๊ตฌ์ž…ํ•ด์„œ ๋ฐ˜๋“œ์‹œ ๋ณด๋“œ ์ƒ์—์„œ ํ™•์ธํ•˜์‹œ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค. 

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

์ตœ์‹  ๋ฒ„์ „์ธ vitis 2022.1 ๋ฒ„์ „์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์„ค์น˜ ๊ณผ์ •์€ Microblaze ๊ธฐ์ดˆ ๊ฐ•์˜์— ์ž์„ธํžˆ ์†Œ๊ฐœ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.


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

์ด๋ ฅ ์‚ฌํ•ญ

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


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

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

  • MicroBlaze ๊ด€์‹ฌ ์žˆ์œผ์‹  ๋ถ„

  • FPGA ๊ด€์‹ฌ ์žˆ์œผ์‹  ๋ถ„

  • Verilog ๊ด€์‹ฌ ์žˆ์œผ์‹  ๋ถ„

  • Verilog ๊ณ ๊ธ‰ ๊ธฐ์ˆ ์„ ๋ฐฐ์šฐ๊ณ ์ž ํ•˜์‹œ๋Š” ๋ถ„

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

  • C ์–ธ์–ด

  • Verilog HDL

  • Xilinx FPGA

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

1,534

๋ช…

์ˆ˜๊ฐ•์ƒ

58

๊ฐœ

์ˆ˜๊ฐ•ํ‰

119

๊ฐœ

๋‹ต๋ณ€

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++

์ž…๋‹ˆ๋‹ค.

๋”๋ณด๊ธฐ

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

์ „์ฒด

121๊ฐœ

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

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

์ˆ˜๊ฐ•ํ‰

์•„์ง ์ถฉ๋ถ„ํ•œ ํ‰๊ฐ€๋ฅผ ๋ฐ›์ง€ ๋ชปํ•œ ๊ฐ•์˜์ž…๋‹ˆ๋‹ค.
๋ชจ๋‘์—๊ฒŒ ๋„์›€์ด ๋˜๋Š” ์ˆ˜๊ฐ•ํ‰์˜ ์ฃผ์ธ๊ณต์ด ๋˜์–ด์ฃผ์„ธ์š”!