하드웨어

/

반도체

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

Xilinx FPGA 에서 MicroBlaze를 구현하는 내용입니다.

(5.0) 수강평 4개

수강생 170명

초급자를 위해 준비한
[임베디드 · IoT, 반도체] 강의입니다.

이런 걸
배워요!

  • FPGA에서 MicroBlaze 사용하기

  • Verilog 프로그램

  • FPGA 프로그램

공부하기 막막한 FPGA MicroBlaze!
강의와 함께라면 뽀갤 수 있어요 💪

Xilinx FPGA에서 MicroBlaze 사용하기!

MicroBlaze는 FPGA에서 IP 형태로 제공되는 프로세서입니다. MicroBlaze는 Processor Core와 Peripheral이 분리되어 있어서 사용자가 목적에 맞게 Peripheral을 구성할 수 있습니다.

강의 주제 📖

FPGA를 다루는 것은 많은 어려움이 있어요. FPGA를 구현하기 위해서는 HW적인 지식은 물론, 사용하는 툴과 Verilog 문법에 대해서도 많은 이해가 있어야 합니다. MCU를 포팅해서 사용하기 위해서는 더 깊은 지식을 요구합니다. Xilinx에서 FPGA에 대한 많은 문서를 제공하고 있지만, 문서를 보면 다른 문서를 참조하라는 경우가 너무 많아요. 그래서 Xilinx 사에서 제공하는 문서를 보고 이해한다는 것은 숙련된 개발자들이 아니고서는 매우 어렵습니다.

본 강의는 Xilinx FPGA에서 MicroBlaze를 포팅해서 사용하는 방법을 상세히 설명합니다. 툴을 설치하는 과정부터 MicroBlaze를 포팅해서 사용하는 방법, 사용자 로직과 MCU 간의 인터페이스를 구현하는 것을 상세하게 설명합니다. FPGA에서 MicorBlaze를 사용하는 스킬로 한 단계 더 성장한 커리어를 만들어보세요!

강의에서 이해가 안 되는 부분은 인프런 커뮤니티 또는 제가 운영하는 카페를 통하여 질문을 올려주시면 답변해 드리도록 하겠습니다.

📢 수강 전 반드시 확인해주세요!

  • 본 강의는 전자문서 형식으로 구성된 텍스트 강의입니다. 강의를 수강하시는 분들께는 강의에 설명되어 있는 모든 소스 파일을 제공합니다. 강의는 추후 동영상으로 제작 예정입니다.
  • 본 강의는 2019 이후 버전인 Vitis 2022.1을 기준으로 설명합니다. 
  • 강의 자료는 '섹션 0 - 자료 공유 링크 - 첨부파일'에서 다운받을 수 있습니다.

강의 특장점 ✨

강의 내용은
실무에 바로 적용 가능!

테스트로 검증된
오픈소스 제공!

디버깅, 개발에 필요한
윈도우 앱 프로그램 제공! 


이런 분들께 추천해요 🙋‍♀️

Verilog로 FPGA를 설계한
경험이 있는 분

C 언어를 이용하여
FW를 해보신 분

MicroBlaze에 관심 있지만
경험은 없는 분


이런 걸 배워요 📚

섹션 1. HW 구성

섹션 2. Vitis 2022.1 설치 과정

  • Vitis는 매우 무거운 툴입니다. 설치 시 주의해야 할 사항과 현재 사용 중인 Vivado와 충돌 없이 설치하는 방법을 설명합니다.

섹션 3. MicroBlaze로 화면에 “Hello world”를 출력하기

  • 본 섹션에서는 대략적인 흐름을 파악하는 것에 목적을 두고 설명합니다.

섹션 4. MicoBlaze의 Peripheral

  • 주로 사용하는 GPIO, Timer, Uart, Interrupt를 설명합니다. MicroBlaze에서 제공하는 Peripheral이 비슷하기 때문에 강의 내용을 익히면 다른 Peripheral도 쉽게 사용할 수 있습니다.

섹션 5. 실무에 적용할 수 있는 지식

  • 대부분의 자료가 Peripheral을 다루는 것에서 끝납니다. 그러나 FPGA에서 MicroBlaze를 사용하는 목적은 사용자가 설계한 Logic을 MicroBlaze를 통하여 제어하는 것입니다. 궁극적으로는 UI(User Interface)를 통해 사용자가 설계한 Logic을 제어하는 것입니다.
  • 강의에선 User Logic을 구성하기 위한 PWM 모듈 4개를 추가했습니다. User Logic을 제어하기 위한 Register Map을 구성하고, MicroBlaze, UI를 통하여 User Logic을 제어합니다. 이 모든 과정을 설명하고 구현하고 결과를 보여줍니다.
  • 본 섹션에서 설명된 내용은 실무에 바로 적용할 수 있습니다. User Logic을 추가하고 Register Map을 추가하면 그 외의 모든 과정은 구현된 그대로를 사용하면 됩니다. 

섹션 6. lwIP Echo Server

  • lwIP를 이용하여 Echo Server를 구현하는 내용입니다. MicroBlaze에서 Cache(Instruction Cache, Data Cache)를 사용하기 위하여 DDR Controller를 구현합니다.

섹션 7. lwIP 활용

  • lwIP를 이용한 TCP/IP 통신에 User Logic을 추가하는 과정을 설명합니다. PC에서 TCP/IP를 이용하여 명령어를 전송하면, lwIP를 통하여 명령어를 수신하고 User Logic에서 보드의 LED를 제어하는 과정을 설명합니다. 이를 통하여 lwIP와 User Logic의 인터페이스를 구현하고 결과를 확인합니다.

섹션 8. W5500 모듈을 이용한 TCP/IP 구현

  • v1.4에서 추가된 내용입니다. wiznet 사의 w5500 모듈을 이용하여 TCP/IP를 구현하는 내용입니다. PC와 Network으로 연결해서 데이터 송수신을 구현합니다. 이를 응용하면 TCP/IP를 이용하는 분야에 다양하게 적용할 수 있을 것입니다.

섹션 9. Block Memory Interface - 1

  • v1.5에서 추가된 내용입니다. Block Design에서 기본적으로 제공하는 Block Memory Interface를 구현합니다.

섹션 10Block Memory Interface - 2

  • v1.5에서 추가된 내용입니다. User Logic에서 Block Memory를 추가하여 Block Memory Interface를 구현합니다. 이를 응용하여 User Register Map을 구현하고, pwm의 frequency, duty를 제어하는 예제를 구현합니다. 
상세 커리큘럼이 궁금하다면?
  1. 개요 (4)
  2. HW 구성 (6)
  3. SW 설치 (7)
  4. Hello World 구현 (12)
    1. 기본 Template 구현 (12)
      1. 프로젝트 생성 (12)
      2. Create Block Design (15)
      3. Create HDL Wrapper (21)
      4. User Logic 구현 (22)
      5. xdc 구현 (27)
      6. Generate Bitstream (30)
      7. Export Hardware (31)
    2. Embedded SW 구현 (34)
    3. Flash에 프로그램 다운로드 (45)
      1. vitis에서 다운로드 (45)
      2. elf 파일을 vivado에서 추가 후 다운로드 (50)
  5. MicroBlaze Peripheral 구현 (59)
    1. Block Design (59)
      1. GPIO : LED_4bits (60)
      2. GPIO : btn0 (External Interrupt-1) (61)
      3. GPIO : btn1 (External Interrupt-2) (62)
      4. GPIO : btn3, 4(General Input, Toggle switch) (63)
      5. Timer (64)
    2. Application SW (71)
      1. xparameters.h file (72)
      2. 소스 구조 (75)
      3. 코드 구현 (77)
    3. 다운로드 및 결과 확인 (82)
  6. User Logic 인터페이스 구현 (83)
    1. Block Design (84)
    2. User Logic 구현 (88)
      1. mcu_pwm.v (89)
      2. pwm_top.v (90)
      3. spi_slave.v (91)
        1. 통신 프로토콜 (93)
        2. 레지스터 맵 (93)
        3. 파형 분석 (94)
        4. 코드 구현 (96)
        5. Simulation (103)
      4. BlazeTop.v (106)
      5. xdc 생성 (109)
    3. Application SW (112)
      1. comm_task 복사  (116)
      2. helloworld.c (116)
      3. 통신 프로토콜 (118)
      4. comm_task (119)
    4. 다운로드 및 결과 확인 (120)
    5. HW Update (124)
  7. lwIP Echo Server 구현 (126)
    1. 시스템 구성 (126)
    2. lwIP HW 구현 (128)
      1. 프로젝트 생성 (128)
      2. HW Block 생성 (130)
      3. Create HDL Wrapper (152)
      4. Application SW (158)
      5. 결과 확인 (167)
      6. 소스 분석 (174)
  8. lwIP 활용 (180)
    1. HW Design (180)
    2. User Logic 구현 (185)
    3. Application SW 구현 (192)
  9. W5500을 이용한 TCP/IP 구현 (202)
    1. 프로젝트 생성 (206)
    2.  Block Design (207)
    3. Top Module 구현 (217)
    4. 응용 SW 구현 (222)
      1. Memory Size (232)
      2. 파일 구조 (233)
      3. data_type.h (233)
      4. ax_common.h (234)
      5. w5500.c, w5500.h (234)
      6. w5500_task.c, w5500_task.h (234)
      7. w5500_socket.c, w5500_socket.h (235)
      8. w5500_loopback.c, w5500_loopback.h (235)
      9. helloworld.c (238)
    5. 결과 확인 (240)
      1. Build Project (240)
      2. PC Network 설정 (241)
      3. 프로그램 다운로드 및 결과 확인 (242)
      4. 외부 Flash에 프로그램 다운로드 (246)
    6. 결론 (247)
  10. Block Memory Interface - 1 (248)
    1. 프로젝트 생성 (248)
    2. Block Design (250)
    3. Constraints 파일 추가 (260)
    4. 응용 SW 구현 (263)
  11. Block Memory Interface - 2 (268)
    1. 프로젝트 생성 (269)
    2. Block Design (270)
    3. User Logic Design (279)
    4. 응용 SW 구현 (289)
    5. 다운로드 및 결과 확인 (289)
    6. 링크 스크립트 수정 (295)
  12. 참고 자료 (297)
  13. Revision History (298)

예상 질문 Q&A 💬

Q. 강의를 듣는 대상자는 누구인가요?

Verilog 문법을 이해하고, FPGA 설계 경험이 있고, 임베디드 시스템(FW) 개발 경험이 있으신 분들을 대상으로 합니다. 그러나 약간의 경험만 가지고 있어도 내용대로 그대로 따라 하시면 충분히 이해할 수 있을 것입니다.

Q. 강의를 듣기 위해 준비해야 할 사항이 있나요?

본 강의는 실습 보드 Arty A7-35T(100T, Digilent 사 제품)에서 진행됩니다. 만약 보드가 준비되지 않았다면 먼저 내용을 보시고 나중에 보드를 구입해서 반드시 보드 상에서 확인하시길 바랍니다. FPGA 구현은 Simulation에서 끝나지 않고, 반드시 HW에서 검증해야 합니다.

Q. 프로그램 툴은 무엇을 사용하나요?

최신 버전인 vitis 2022.1 버전을 사용합니다. 본 강의에 설치 과정이 자세히 소개되어 있습니다.


지식공유자 소개 ✒️

이력 사항

저는 20여 년 동안 대기업, 중소기업에서 개발자로 일해왔고 현재는 작은 기업을 운영하고 있습니다. CCTV용 ISP(Image Signal Processing) ASIC을 개발하였고 OLED 검사 장비, DAQ (Data Acquisition System) 등 FPGA를 이용한 많은 제품을 개발하였습니다. FPGA뿐만 아니라 FW 개발 (STM32, PIC32, AVR, ATMEGA 등), 회로 설계, Windows Program 등 많은 경험을 가지고 있습니다. 


이런 분들께
추천드려요!

학습 대상은
누구일까요?

  • MicroBlaze 관심 있으신 분

  • FPGA 관심 있으신 분

  • Verilog 관심 있으신 분

선수 지식,
필요할까요?

  • C 언어

  • Verilog HDL

  • Xilinx FPGA

안녕하세요
alex입니다.

저는 지난 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++

입니다.

커리큘럼

전체

290개

수업 자료

가 제공되는 강의입니다.

강의 게시일: 
마지막 업데이트일: 

수강평

아직 충분한 평가를 받지 못한 강의입니다.
모두에게 도움이 되는 수강평의 주인공이 되어주세요!