Verilog FPGA Program 2 (MicroBlaze, HIL-A35T)
Verilog FPGA Program 2 (MicroBlaze, HIL-A35T)
Hello, this is Jaden.
In this post, I’d like to introduce a UCC/VAR project that demonstrates how to port MicroBlaze, a 32-bit RISC soft-core processor, onto the HIL-A35T Verilog FPGA board, and then use that environment to operate the W5500 Ethernet controller.
MicroBlaze?
MicroBlaze is a 32-bit RISC soft processor core provided by Xilinx (now AMD).
Key characteristics:
Soft-core architecture
- MicroBlaze is not a physical chip. It is implemented using FPGA resources such as LUTs, flip-flops, and Block RAM.
In other words, the CPU is constructed inside the FPGA fabric.32-bit RISC design
- 32 × 32-bit general-purpose registers
- Pipelined architecture
- Most instructions achieve one-cycle throughput
Fully configurable
You can enable/disable CPU components depending on your system needs:
- Instruction/Data Cache
- FPU
- MMU
- AXI/OPB/LMB bus options
- Pipeline depth
This flexibility allows MicroBlaze to scale from:
- a small MCU-like core,
- to a real-time RTOS processor,
- and even up to an application processor capable of running Embedded Linux.
The foundation of FPGA-based SoC architecture
- By placing user-designed logic around MicroBlaze on AXI/OPB/LMB buses, you can create an SoC where: One chip = CPU + custom hardware accelerators
In this course, MicroBlaze is instantiated on the Xilinx FPGA of the HIL-A35T board.
Students write firmware in C, build additional logic in Verilog, and design the interface between the two—building a complete FPGA-based embedded system.
Inflearn?
The original course is hosted on Inflearn, a Korean online education platform.
It is a fast-growing technical learning site with:
Hundreds of thousands of active learners
Tens of thousands of accumulated Q&A posts
A rapidly expanding engineering-focused user base
Inflearn hosts high-quality technical courses ranging from software engineering to FPGA, AI, hardware design, and more.
The instructor of this MicroBlaze course goes by alex, who introduces himself as:
- A developer with 20+ years of experience
- Former ASIC/FPGA engineer in various industries
- Designer of multiple FPGA/ASIC products such as CCTV ISP chips, display inspection machines
- Skilled in FPGA, MCU firmware (STM32/PIC32/AVR), Windows MFC/C++ applications
He currently runs his own one-person company and maintains 19 courses, with 1,700+ students, 75 reviews, and a rating of 4.8.
Clearly, he produces high-quality and practical educational content.
1. Summary of Course Content
Course title
Verilog FPGA Program 2 (MicroBlaze, HIL-A35T)
Currently taken by 27 students.
This is the second-stage course covering how to utilize MicroBlaze on a Xilinx FPGA as a true SoC-style processor.
Hardware
The instructor uses a board he designed himself, the HIL-A35T.
Curriculum Overview
Section 1 — Hardware Setup
Introduction to the HIL-A35T FPGA board and system configuration.
Section 2 — Installing Vitis 2022.1
Vitis is a heavy development tool.
This section explains how to install it safely without conflicting with the existing Vivado installation.Section 3 — Printing “Hello World” with MicroBlaze
A walkthrough focused on understanding the basic flow from hardware generation → BSP → firmware → download.
Section 4 — MicroBlaze Peripherals
Covers widely used peripherals:
GPIO
Timer
UART
Interrupts
Understanding these allows you to master all similar MicroBlaze peripherals.
Section 5 — Practical Knowledge for Real Projects
The real purpose of using MicroBlaze is not merely controlling vendor IPs—it’s about controlling your own user-defined logic via a CPU interface.
The instructor adds:
Four PWM modules
A custom Register Map
A UI for controlling user logic through MicroBlaze
All design steps are explained, implemented, and demonstrated.
This section directly translates to real-world FPGA product development.Section 6 — lwIP Echo Server
Students implement a TCP/IP Echo Server using lwIP.
DDR Controller is added to enable Instruction/Data cache for MicroBlaze.Section 7 — Advanced lwIP Integration
PC sends TCP commands → lwIP receives them → user logic is controlled accordingly (LED control).
This fully demonstrates the lwIP ↔ User Logic interface.Section 8 — TCP/IP Implementation Using W5500 Module (added in v1.4)
This section introduces WIZnet W5500, a hardware TCP/IP offload engine.
The board is connected to a network, and students implement:
TCP communication
PC ↔ FPGA data transfer
Practical network control using a hardware TCP/IP stack
This allows students to compare lwIP (software stack) vs W5500 (hardware stack) in real time.
Section 9 & 10 — Block Memory Interface (v1.5)
Students implement Xilinx Block Memory and connect custom user logic to it.
PWM frequency/duty control is done via Block Memory + Register Map.Section 11 — W5500 Interface Implementation
Unlike Section 8 (which focuses on using W5500 in MicroBlaze firmware),
Section 11 focuses on implementing the W5500 hardware interface in User Logic.Students design:
SPI interface logic
W5500 register/buffer access
Network data handling logic
Finally enabling a complete hardware-accelerated TCP/IP communication system using W5500.
lwIP (Software Stack) vs W5500 (Hardware Stack)
Beginning in Section 6, students learn lwIP, a software-based TCP/IP stack.
Later, in Sections 8 and 11, they transition to W5500, a hardware TCP/IP engine.
This dual approach lets students experience:
| Feature | lwIP (SW TCP/IP) | W5500 (HW TCP/IP) |
|---|---|---|
| Stack location | MicroBlaze software | Dedicated hardware |
| CPU usage | High | Very low |
| Determinism | Affected by RTOS scheduling | Hardware-deterministic |
| Integration | Flexible but complex | Simple and reliable |
| Real use cases | Embedded Linux, RTOS | Industrial controllers, IoT devices |
Students will clearly see how W5500 offloads all protocol logic, making the system more deterministic and CPU-efficient.
Extra Finding: MicroBlaze + W5500 in the Wild
While researching MicroBlaze, I also found a relevant question on the WIZnet Maker website discussing socket control when using MicroBlaze.
🔗 https://maker.wiznet.io/forum/15083
In earlier years, FPGAs commonly used W5300 due to its 16-bit or 32-bit parallel interface.
However, once you port a software CPU (MicroBlaze) into the FPGA,
you gain the flexibility to easily use SPI-based W5500,
which explains why many developers now use W5500 in MicroBlaze-based FPGA projects.
Final Thoughts
This Inflearn course offers students the rare opportunity to experience both:
a software TCP/IP stack (lwIP), and
a hardware TCP/IP stack (W5500)
inside the same FPGA SoC environment.
By comparing the two, learners can deeply understand:
how networking behaves in firmware vs hardware
where hardware TCP/IP shines
how to integrate MicroBlaze with custom Verilog logic
how to build a true FPGA-based embedded system
It is a highly practical and well-structured course that mirrors real industrial FPGA/SoC workflows.
안녕하세요, Jaden 입니다.
이번 포스팅에서는 HIL-A35T(Verilog FPGA)보드에 MicroBlaze라는 32비트 RISC 소프트 프로세서 코어를 포팅한 이후에 W5500를 구동시키는 방법이 포함된 UCC/VAR를 소개하려 합니다.
MicroBlaze?
MicroBlaze는 Xilinx(현재 AMD)의 32-bit RISC 소프트 프로세서 코어입니다.
특징을 정리하면:
Soft core
- 별도의 물리 칩이 아니라, FPGA 내부의 LUT/FF/Block RAM 같은 일반 논리 리소스를 이용해서 구현하는 CPU
32-bit RISC 구조
- 32개의 32-bit 레지스터, 파이프라인 구조, 대부분의 명령은 1클럭 throughput 유지
완전 가변형 구조
- 캐시 유무, FPU, MMU, bus 인터페이스(AXI 등), 파이프라인 단계 등 옵션을 켜고 끄면서
- 작은 MCU 스타일
- RTOS용 실시간 코어
- Embedded Linux까지 돌릴 수 있는 application 프로세서
로 스케일 조정 가능FPGA 기반 SoC 구현의 핵심
- MicroBlaze 주변에 AXI/OPB/LMB 버스에 각종 peripheral과 User Logic을 붙이면
→ 한 칩(FPGA) 안에 “CPU + 사용자가 만든 HW 가속기”를 동시에 넣는 SoC를 만들 수 있음.
이 강의에서는 바로 이 MicroBlaze를 HIL-A35T 보드의 Xilinx FPGA 위에 올려서,
C로 펌웨어를 짜고
Verilog로 User Logic을 만들고
둘의 인터페이스를 설계하면서
“FPGA 기반 임베디드 시스템 전체 그림”을 보여주는 겁니다.
인프런?
원글은 인프런이라는 강의 영상 플랫폼에 올려진 강의 상품입니다.
인프런은 2020년 통계 자료에 따르면, 당시 총 학습 시간이 88만 시간에 달하고, 작성된 질문이 2만 개에 이르는 등 꾸준한 성장을 보여주었고 지금은 훨씬 성장했을 것으로 예상되는 플랫폼입니다.
강의자는 alex라는 아이디로 본인을 아래와 같이 소개하고 있습니다.
강의는 총 19가지가 있고 수강생수가 1,705명, 수강평수가 75개, 강의 평점이 4.8점 정도로 꽤나 질 높은 강의를 업로드하고 계십니다.
1. 강의 내용 정리
Verilog FPGA Program 2 (MicroBlaze, HIL-A32T)라는 제목
현재 27명이 수강중이며 금액은 사진과 같습니다.
Xilinx FPGA 위에 MicroBlaze 소프트 코어를 올려서 SoC처럼 쓰는 방법을 다루는 두 번째 단계 강의입니다.
사용 보드는 강의를 위해 직접 설계한 HIL-A35T 보드이고, 커리큘럼을 보면 흐름이 이렇게 흘러갑니다:
섹션 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를 구현합니다.
섹션 10. Block Memory Interface - 2
v1.5에서 추가된 내용입니다. User Logic에서 Block Memory를 추가하여 Block Memory Interface를 구현합니다. 이를 응용하여 User Register Map을 구현하고, pwm의 frequency, duty를 제어하는 예제를 구현합니다.
섹션 11. w5500 Interface 구현
w5500 모듈을 사용하여 TCP/IP 통신을 구현합니다.
섹션 6에서 Lwip를 사용한 이후에 섹션 8, 섹션 11을 통해 하드웨어 TCP/IP 스택을 경험하는 것으로 보임. 즉 수강자들은 LWIP와 HW TCP 스택을 실습하면서 비교할 수 있을 것으로 예상되며 이는 HW TCP 의 장점을 직접 체험할 수 있게 한다고 생각됩니다.
추가로 MicroBlaze에 관련되서 자료를 찾다 WIZnet Maker사이트에서도 관련된 질문 글을 찾았는데 socket 제어에 관한 글이였습니다.
FPGA에서는 W5300이 많이 사용되었던 기억이 있는데 MicroBlaze처럼 SW 코어를 포팅해버리면 W5500을 쉽게 사용할 수 있는 환경이 만들어 질 수 있어 유저들이 사용하기도 하는구나 라는 것을 알게됐습니다.
https://maker.wiznet.io/forum/15083

