Understand and build an edge detector based on Sobel filter from scratch in VHDL
As part of the “Learn FPGA Design with VHDL” hands-on series, this module focuses on implementing the Sobel edge-detection filter — a foundational building block for feature extraction, and image processing on FPGAs.
What you’ll learn
- Fundamentals of image processing and edge detection.
- Fundamentals of digital arithmetic and signed and unsigned manipulation with VHDL.
- Finite state machines.
- Best practices for modular, reusable, VHDL design.
- Architecting a hardware design and implementing in VHDL.
- Hands-on practical lab.
- Project automation with Makefile and python scripts.
Course Content
- Introduction –> 1 lecture • 9min.
- Image processing basics –> 5 lectures • 48min.
- Digital arithmetics basics –> 6 lectures • 35min.
- numeric_std package in VHDL –> 1 lecture • 23min.
- Implementing the Sobel filter in VHDL –> 4 lectures • 38min.
- Implementing the edge detection design –> 8 lectures • 1hr 25min.
- Conclusion –> 1 lecture • 1min.
Requirements
As part of the “Learn FPGA Design with VHDL” hands-on series, this module focuses on implementing the Sobel edge-detection filter — a foundational building block for feature extraction, and image processing on FPGAs.
In this course, you will:
- Learn image processing basics
- Learn digital arithmetic basics
- Learn to use the numeric_std VHDL package to manipulate signed and unsigned numbers
- Understand the Sobel operator mathematically (why does Sobel filter allows to detect edges?)
- Architect the Sobel filter and the edge detector
- Translate the algorithm into a hardware module in VHDL
- Visualize results on VGA for tests on FPGA and via memory dumps for simulation
- Automate the generation of the filtered image by running a single command via Makefile and python scripts
This engineering project is fun and will give you lot of skills in different subjects.
By the end, you’ll be able to implement a Sobel edge detector in VHDL. Through this process, you will gain knowledge in image processing. You will also get accustomed to finite state machines, arithmetic on signed and unsigned numbers, RAMs and ROMs, multiplexing and hardware design in general. You will also learn to automate your project. Running all your project with one command is fun, you will gain the sight of applying it to your own projects.