강의

멘토링

로드맵

Inflearn brand logo image
Hardware

/

Semiconductor

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

This is about implementing MicroBlaze in Xilinx FPGA.

(5.0) 5 reviews

192 learners

  • alex
fpga
verilog
hdl
xilinx
FPGA
MicroBlaze
Verilog HDL

Reviews from Early Learners

What you will learn!

  • Using MicroBlaze in FPGA

  • Verilog program

  • FPGA programming

FPGA MicroBlaze is a daunting task to study!
You can get a lot of fun with this lecture 💪

Using MicroBlaze on Xilinx FPGAs!

MicroBlaze is a processor provided in IP form in FPGA. MicroBlaze separates the Processor Core and Peripherals, allowing users to configure the Peripherals according to their purposes.

Lecture Topics 📖

There are many difficulties in dealing with FPGA. In order to implement FPGA, you need to have not only HW knowledge, but also a lot of understanding of the tools and Verilog syntax used. Porting and using MCU requires even deeper knowledge. Xilinx provides a lot of documentation on FPGA, but when you look at the documentation, there are too many cases where you are referred to other documents. Therefore, it is very difficult for anyone other than experienced developers to read and understand the documentation provided by Xilinx.

This lecture explains in detail how to port and use MicroBlaze on Xilinx FPGAs , starting from the process of installing the tools. How to port and use MicroBlaze , We'll walk you through implementing the interface between your user logic and the MCU in detail. Take your career to the next level with skills using MicorBlaze in FPGAs!

If there is anything you do not understand in the lecture, please post a question through the Inflearn community or the cafe I run and I will answer it.

📢 Please make sure to check before taking the class!

  • This lecture is a text lecture in electronic document format. All source files explained in the lecture will be provided to those who take the lecture. The lecture will be produced as a video in the future.
  • This lecture is based on Vitis 2022.1, the version after 2019.
  • Lecture materials can be downloaded from 'Section 0 - Material Sharing Link - Attachments'.

Lecture Features ✨

The lecture content is
Immediately applicable to practice!

Tested and proven
Open source provided!

Debugging, development required
Windows app program provided!


I recommend this to these people 🙋‍♀️

Designing FPGAs with Verilog
Someone with experience

Using the C language
Anyone who has tried FW

I'm interested in MicroBlaze, but
Someone with no experience


Learn things like this 📚

Section 1. HW Configuration

Section 2. Vitis 2022.1 Installation Process

  • Vitis is a very heavy tool. I will explain what you need to be careful about when installing it and how to install it without conflicting with your current Vivado.

Section 3. Print “Hello world” to the screen with MicroBlaze

  • This section aims to give you an overview of the flow.

Section 4. Peripheral of MicoBlaze

  • We will explain the GPIO, Timer, Uart, and Interrupt that are mainly used. Since the peripherals provided by MicroBlaze are similar, if you learn the contents of the lecture, you can easily use other peripherals.

Section 5. Knowledge that can be applied in practice

  • Most of the material ends with dealing with the Peripheral. However, the purpose of using MicroBlaze in FPGA is to control the user-designed logic through MicroBlaze. Ultimately, it is to control the user-designed logic through the UI(User Interface).
  • In this lecture, we added 4 PWM modules to configure User Logic. We configured Register Map to control User Logic, and controlled User Logic through MicroBlaze and UI. We explained and implemented all of these processes and showed the results.
  • The content described in this section can be applied directly to practice. All you have to do is add User Logic and Register Map, and you can use all other processes as implemented.

Section 6. lwIP Echo Server

  • This is about implementing an Echo Server using lwIP. Implement a DDR Controller to use Cache (Instruction Cache, Data Cache) in MicroBlaze.

Section 7. Using lwIP

  • This explains the process of adding User Logic to TCP/IP communication using lwIP. This explains the process of sending a command using TCP/IP from a PC, receiving the command via lwIP, and controlling the LED of the board in User Logic. Through this, the interface between lwIP and User Logic is implemented and the results are confirmed.

Section 8. TCP/IP Implementation Using W5500 Module

  • This is the content added in v1.4. It is about implementing TCP/IP using wiznet's w5500 module. It implements data transmission and reception by connecting to a PC and a network. If you apply this, you will be able to apply it in various fields that utilize TCP/IP.

Section 9. Block Memory Interface - 1

  • Added in v1.5. Implements the Block Memory Interface provided by default in Block Design.

Section 10. Block Memory Interface - 2

  • This is what was added in v1.5. Block Memory is added to User Logic to implement Block Memory Interface. By applying this, User Register Map is implemented, and an example of controlling frequency and duty of PWM is implemented.
Are you curious about the detailed curriculum?
  1. Overview (4)
  2. HW Configuration (6)
  3. SW Installation (7)
  4. Hello World Implementation (12)
    1. Basic Template Implementation (12)
      1. Create a project (12)
      2. Create Block Design (15)
      3. Create HDL Wrapper (21)
      4. User Logic Implementation (22)
      5. xdc implementation (27)
      6. Generate Bitstream (30)
      7. Export Hardware (31)
    2. Embedded SW implementation (34)
    3. Download the program in Flash (45)
      1. Download from vitis (45)
      2. Add elf file to vivado and download (50)
  5. MicroBlaze Peripheral Implementation (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. Source Structure (75)
      3. Code implementation (77)
    3. Download and check results (82)
  6. Implementing User Logic Interface (83)
    1. Block Design (84)
    2. User Logic Implementation (88)
      1. mcu_pwm.v (89)
      2. pwm_top.v (90)
      3. spi_slave.v (91)
        1. Communication Protocol (93)
        2. Register Map (93)
        3. Waveform Analysis (94)
        4. Code Implementation (96)
        5. Simulation (103)
      4. BlazeTop.v (106)
      5. Generate xdc (109)
    3. Application SW (112)
      1. Copy comm_task (116)
      2. helloworld.c (116)
      3. Communication Protocol (118)
      4. comm_task (119)
    4. Download and check results (120)
    5. HW Update (124)
  7. lwIP Echo Server Implementation (126)
    1. System Configuration (126)
    2. lwIP HW Implementation (128)
      1. Create a project (128)
      2. HW Block Creation (130)
      3. Create HDL Wrapper (152)
      4. Application SW (158)
      5. Check Results (167)
      6. Source Analysis (174)
  8. Leveraging lwIP (180)
    1. HW Design (180)
    2. User Logic Implementation (185)
    3. Application SW Implementation (192)
  9. TCP/IP Implementation Using W5500 (202)
    1. Create a project (206)
    2. Block Design (207)
    3. Top Module Implementation (217)
    4. Application SW Implementation (222)
      1. Memory Size (232)
      2. File Structure (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. Check Results (240)
      1. Build Project (240)
      2. PC Network Settings (241)
      3. Download the program and check the results (242)
      4. Download programs to external Flash (246)
    6. Conclusion (247)
  10. Block Memory Interface - 1 (248)
    1. Create a project (248)
    2. Block Design (250)
    3. Add constraints file (260)
    4. Application SW Implementation (263)
  11. Block Memory Interface - 2 (268)
    1. Create a project (269)
    2. Block Design (270)
    3. User Logic Design (279)
    4. Application SW Implementation (289)
    5. Download and check results (289)
    6. Fix link script (295)
  12. References (297)
  13. Revision History (298)

Expected Questions Q&A 💬

Q. Who is the target audience for this lecture?

This book is intended for those who understand Verilog syntax, have experience in FPGA design, and have experience in developing embedded systems (FW). However, even those with only a little experience will be able to understand it sufficiently if they follow the content exactly.

Q. Is there anything I need to prepare to attend the lecture?

This lecture will be conducted on the Arty A7-35T (100T, Digilent) practice board. If you do not have a board, please check the contents first and then purchase the board later and make sure to check it on the board. FPGA implementation does not end with simulation, but must be verified in HW.

Q. What program tools do you use?

We use the latest version, vitis 2022.1. The installation process is described in detail in this lecture.


Introducing the knowledge sharer ✒️

History

I have been working as a developer for over 20 years in large and small companies and currently run a small business. I have developed an ISP(Image Signal Processing) ASIC for CCTV and many products using FPGA such as OLED inspection equipment and DAQ(Data Acquisition System). In addition to FPGA, I have a lot of experience in FW development (STM32, PIC32, AVR, ATMEGA, etc.), circuit design, Windows Program, etc.


Recommended for
these people

Who is this course right for?

  • Anyone interested in MicroBlaze?

  • Anyone interested in FPGA

  • Anyone interested in Verilog?

Need to know before starting?

  • C language

  • Verilog HDL

  • Xilinx FPGA

Hello
This is

1,657

Learners

67

Reviews

124

Answers

4.8

Rating

19

Courses

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

입니다.

Curriculum

All

290 lectures

Course Materials:

Lecture resources
Published: 
Last updated: 

Reviews

All

5 reviews

5.0

5 reviews

  • withuman3898님의 프로필 이미지
    withuman3898

    Reviews 2

    Average Rating 5.0

    5

    52% enrolled

    It is very helpful for my work. Thank you for the great lecture!!

    • soi897님의 프로필 이미지
      soi897

      Reviews 6

      Average Rating 5.0

      5

      100% enrolled

      Unless it has ARM built-in like Zybo, it is easier to develop with Microblaze. However, the method of using Microblaze is spread all over the Internet, so you have to study by Googling, and if a beginner studies like that, it seems like it is difficult to distinguish what is really necessary. However, this lecture will provide basic knowledge for using Microblaze. If you apply the contents of this lecture a little, you will be able to apply it sufficiently in practice. And the best part is that you can immediately find and review it whenever you need it.

      • ihil
        Instructor

        Thank you so much for your sincere review. I am also grateful that it was helpful. I hope you will become a great developer in the future. These days, there are so many video materials, so videos can be convenient and have many advantages. However, as you said, when you want to watch the material repeatedly, documents are better. This is because you can find where and what is in the document right away. I will continue to create useful materials so that many people can benefit from them. Thank you~!!

    • neulha님의 프로필 이미지
      neulha

      Reviews 12

      Average Rating 5.0

      5

      100% enrolled

      • park395989962님의 프로필 이미지
        park395989962

        Reviews 1

        Average Rating 5.0

        5

        26% enrolled

        I am currently working on a project using Microblaze. There are not many resources on the Internet and it was difficult to find practical information, but I am getting a lot of help. I can see the traces of a lot of time and effort put into creating the resources. Anyway, it was a very good lecture. I think it will be helpful to many people.

        • ihil
          Instructor

          Thank you for your course review. I hope that your project with MicroBlaze goes well and you get good results. Thank you~!!

      • baekga839465님의 프로필 이미지
        baekga839465

        Reviews 1

        Average Rating 5.0

        5

        61% enrolled

        It's not difficult because it's been explained easily so far. It seems like a good lecture. I'm designing FPGA Logic and HW in the field, and these days, it seems like a lot of people are demanding the ability to handle MB or NIOS. I think it will be a good stepping stone. I ask for good education in the future.

        • ihil
          Instructor

          Thank you so much for your review. I appreciate that you found it helpful. The world seems to be changing so fast. Technology is also changing so fast. There are so many things to do. Anyway, I hope everything goes well. Thank you~!!

      $63.80

      alex's other courses

      Check out other courses by the instructor!

      Similar courses

      Explore other courses in the same field!