Verilog FPGA Program 2 (MicroBlaze1)

This covers the implementation of MicroBlaze on Xilinx FPGAs.

(5.0) 5 reviews

204 learners

Level Basic

Course period Unlimited

Verilog HDL
Verilog HDL
FPGA
FPGA
MicroBlaze
MicroBlaze
Verilog HDL
Verilog HDL
FPGA
FPGA
MicroBlaze
MicroBlaze

Reviews from Early Learners

5.0

5.0

withuman

52% enrolled

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

5.0

베릴로그응애

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.

5.0

balmont

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.

What you will gain after the course

  • Using MicroBlaze in FPGA

  • Verilog program

  • FPGA Program

FPGA MicroBlaze, so daunting to study!
You can conquer it with this lecture 💪

Using MicroBlaze on Xilinx FPGA!

MicroBlaze is a processor provided in the form of an IP within the FPGA. Since the MicroBlaze's Processor Core and Peripherals are separated, users can configure the Peripherals to suit their specific purposes.

Lecture Topic 📖

Working with FPGAs comes with many difficulties. To implement an FPGA, you need not only hardware knowledge but also a deep understanding of the tools used and Verilog syntax. Porting and using an MCU requires even deeper knowledge. While Xilinx provides extensive documentation for FPGAs, their documents often refer to numerous other documents. Therefore, understanding Xilinx's documentation is extremely difficult for anyone other than experienced developers.

This course provides a detailed explanation of how to port and use MicroBlaze on Xilinx FPGAs. From the tool installation process to porting and using MicroBlaze, implementing the interface between user logic and the MCU is explained in detail. Take your career to the next level with the skills to use MicroBlaze on FPGAs!

If there are any parts of the lecture you do not understand, please post your questions through the Inflearn community or the cafe I operate, and I will provide you with answers.

📢 Please be sure to check before taking the course!

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

Key Features of the Course ✨

The lecture content is
immediately applicable to real-world practice!

Providing open source verified through testing!


Windows app programs necessary for debugging and development are provided!


Recommended for these people 🙋‍♀️

Those who have experience
designing FPGAs with Verilog

Those who have experience in
FW development using C language

Those who are interested in MicroBlaze
but have no experience


What you will learn 📚

Section 1. HW Configuration

Section 2. Vitis 2022.1 Installation Process

  • Vitis is a very heavy tool. I will explain the precautions to take during installation and how to install it without conflicting with the currently used Vivado.

Section 3. Printing “Hello world” on the screen with MicroBlaze

  • This section aims to provide an overview of the general workflow.

Section 4. MicroBlaze Peripherals

  • This section explains the commonly used GPIO, Timer, UART, and Interrupts. Since the peripherals provided by MicroBlaze are similar, once you master the course content, you will be able to use other peripherals with ease.

Section 5. Knowledge applicable to practical work

  • Most materials end at handling peripherals. However, the purpose of using MicroBlaze in an FPGA is to control user-designed logic through MicroBlaze. Ultimately, it is to control the user-designed logic through a UI (User Interface).
  • In the lecture, four PWM modules were added to configure the User Logic. A Register Map was constructed to control the User Logic, and the User Logic is controlled through MicroBlaze and the UI. This entire process is explained, implemented, and the results are demonstrated.
  • The contents described in this section can be applied directly to practical work. Once you add the User Logic and the Register Map, all other processes can be used exactly as implemented.

Section 6. lwIP Echo Server

  • This content covers implementing an Echo Server using lwIP. A DDR Controller is implemented to use Cache (Instruction Cache, Data Cache) in MicroBlaze.

Section 7. Utilizing lwIP

  • This explains the process of adding User Logic to TCP/IP communication using lwIP. It describes the process where a command is sent from a PC via TCP/IP, received through lwIP, and then used to control the board's LEDs within the User Logic. Through this, the interface between lwIP and User Logic is implemented and the results are verified.

Section 8. TCP/IP Implementation Using the W5500 Module

  • This content was added in v1.4. It covers implementing TCP/IP using Wiznet's W5500 module. It involves implementing data transmission and reception by connecting to a PC via a network. By applying this, it can be used in various fields that utilize TCP/IP.

Section 9. Block Memory Interface - 1

  • This content was added in v1.5. It implements the Block Memory Interface provided by default in the Block Design.

Section 10Block Memory Interface - 2

  • This content was added in v1.5. It implements the Block Memory Interface by adding Block Memory to the User Logic. By applying this, we will implement a User Register Map and an example to control the frequency and duty of a PWM.
상세 커리큘럼이 궁금하다면?
  1. Overview (4)
  2. HW Configuration (6)
  3. SW Installation (7)
  4. Hello World 구현 (12)
    1. 기본 Template 구현 (12)
      1. Create 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. Flash에 프로그램 다운로드 (45)
      1. Download from Vitis (45)
      2. Add the elf file in Vivado and download (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. Source Structure (75)
      3. Code Implementation (77)
    3. Download and Result Verification (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. Communication Protocol (93)
        2. Register Map (93)
        3. Waveform Analysis (94)
        4. Code Implementation (96)
        5. Simulation (103)
      4. BlazeTop.v (106)
      5. xdc creation (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 Result Verification (120)
    5. HW Update (124)
  7. lwIP Echo Server 구현 (126)
    1. System Configuration (126)
    2. lwIP HW 구현 (128)
      1. Project Creation (128)
      2. Create HW Block (130)
      3. Create HDL Wrapper (152)
      4. Application SW (158)
      5. Check Results (167)
      6. Source Analysis (174)
  8. lwIP 활용 (180)
    1. HW Design (180)
    2. User Logic Implementation (185)
    3. Application SW Implementation (192)
  9. W5500을 이용한 TCP/IP 구현 (202)
    1. Create Project (206)
    2. Block Design (207)
    3. Top Module Implementation (217)
    4. 응용 SW 구현 (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. 결과 확인 (240)
      1. Build Project (240)
      2. PC Network Settings (241)
      3. Program Download and Result Verification (242)
      4. Downloading the program to external Flash (246)
    6. Conclusion (247)
  10. Block Memory Interface - 1 (248)
    1. Create Project (248)
    2. Block Design (250)
    3. Adding Constraints File (260)
    4. Application SW Implementation (263)
  11. Block Memory Interface - 2 (268)
    1. Project Creation (269)
    2. Block Design (270)
    3. User Logic Design (279)
    4. Application SW Implementation (289)
    5. Download and Result Verification (289)
    6. Modify Linker Script (295)
  12. Reference Materials (297)
  13. Revision History (298)

Anticipated Q&A 💬

Q. Who is the target audience for this course?

Verilog syntax understanding, FPGA design experience, and embedded system (FW) development experience are required for the target audience. However, even with only a little experience, you will be able to fully understand the content if you follow the instructions as they are.

Q. Is there anything I need to prepare to take the course?

This course is conducted using the Arty A7-35T (or 100T, manufactured by Digilent) practice board. If you do not have the board ready, please watch the content first and make sure to purchase the board later to verify it on the actual hardware. FPGA implementation does not end with simulation; it must be verified on the HW.

Q. Which programming tools are used?

We use the latest version, Vitis 2022.1. The installation process is introduced in detail in this course.


Instructor Introduction ✒️

Professional Background

I have worked as a developer in both large corporations and SMEs for over 20 years and currently run a small business. I have developed ISP (Image Signal Processing) ASICs for CCTV and numerous products using FPGAs, such as OLED inspection equipment and DAQ (Data Acquisition Systems). In addition to FPGAs, I have extensive experience in FW development (STM32, PIC32, AVR, ATMEGA, etc.), circuit design, and Windows programming.


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 alex

Career Verified

1,791

Learners

96

Reviews

134

Answers

4.8

Rating

17

Courses

I have worked as a developer at both large corporations and SMEs for the past 20 years,

I am currently the CEO of a small company.

Key career highlights include

  • FPGA design using Verilog HDL

    • ISP ASIC development for CCTV (approx. 10 years)

    • OLED Display inspection equipment development (approx. 3 years)

    • Equipment development using FPGA

  • MCU FW

    • STM32

    • PIC32

    • AVR, ATMEGA

    • DSP (TI)

  • Windows Application Development

    • Visual Studio MFC, C++

.

More

Curriculum

All

290 lectures

Course Materials:

Lecture resources
Published: 
Last updated: 

Reviews

All

5 reviews

5.0

5 reviews

  • 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~!!

  • 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~!!

  • 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~!!

  • withuman3898님의 프로필 이미지
    withuman3898

    Reviews 2

    Average Rating 5.0

    5

    52% enrolled

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

    • neulha님의 프로필 이미지
      neulha

      Reviews 15

      Average Rating 5.0

      5

      100% enrolled

      alex's other courses

      Check out other courses by the instructor!

      Similar courses

      Explore other courses in the same field!