{"id":32317,"date":"2026-04-21T11:39:06","date_gmt":"2026-04-21T18:39:06","guid":{"rendered":"https:\/\/digilent.com\/blog\/?p=32317"},"modified":"2026-04-21T11:39:06","modified_gmt":"2026-04-21T18:39:06","slug":"fpga-mandelbrot-rendering-on-the-digilent-basys-3-a-user-created-reference-project","status":"publish","type":"post","link":"https:\/\/digilent.com\/blog\/fpga-mandelbrot-rendering-on-the-digilent-basys-3-a-user-created-reference-project\/","title":{"rendered":"FPGA Mandelbrot Rendering on the Digilent Basys 3: A User-Created Reference Project"},"content":{"rendered":"<p><span style=\"font-size: 1rem;\">This Mandelbrot set renderer was created by Conrad<\/span><span style=\"font-size: 1rem;\">, who shared the project on GitHub (username conradSZY05)<\/span><span style=\"font-size: 1rem;\">. Built for the <\/span><a href=\"https:\/\/digilent.com\/shop\/basys-3-amd-artix-7-fpga-trainer-board-recommended-for-introductory-users\/\"><strong style=\"font-size: 1rem;\">Digilent Basys 3<\/strong><\/a><span style=\"font-size: 1rem;\">, the design uses VHDL and Xilinx Vivado to generate a real-time fractal visualization with VGA output.<\/span><\/p>\n<div>\n<p>The project is a complete, hardware-based implementation that brings together video timing, mathematical computation, and FPGA design in a single, working system. It serves as a practical reference for anyone interested in graphics or visualization on the Basys 3.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2026\/04\/572633989-3a3d2d3a-939f-4794-81aa-38117b3f285f_1_optimized_1500-600x450.png\" alt=\"\" width=\"600\" height=\"450\" class=\"alignnone size-medium wp-image-32318\" srcset=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2026\/04\/572633989-3a3d2d3a-939f-4794-81aa-38117b3f285f_1_optimized_1500-600x450.png 600w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2026\/04\/572633989-3a3d2d3a-939f-4794-81aa-38117b3f285f_1_optimized_1500.png 987w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/p>\n<h2><span style=\"font-size: 2rem;\">What the Project Does<\/span><\/h2>\n<div>\n<p>The design implements a Mandelbrot set renderer entirely in programmable logic. It computes fractal data in real time and outputs the result directly to a VGA display. All functionality is written in <strong>VHDL<\/strong> and synthesized using <strong>Xilinx Vivado<\/strong>, targeting the Artix\u20117 FPGA on the Basys 3.<\/p>\n<p>In addition to VGA video output, the design includes <strong>UART support<\/strong>, enabling serial communication with a host system. This allows interaction or configuration while keeping the rendering and display pipeline fully hardware-driven.<\/p>\n<p>The repository includes source files and documentation that describe the project structure and tool requirements, making it possible for other users to reproduce the implementation as provided.<\/p>\n<h2>Why This Design Is a Useful Reference<\/h2>\n<p>The Mandelbrot set is well suited to FPGA implementation due to its iterative structure and the independence of individual pixel calculations. These characteristics align naturally with the parallel and pipelined nature of FPGA logic.<\/p>\n<p>As a reference project, this design is valuable because it combines several foundational concepts into a single, working system:<\/p>\n<ul>\n<li>VGA timing and signal generation<\/li>\n<li>Fixed-point numerical computation<\/li>\n<li>Real-time pixel-level processing<\/li>\n<li>UART integration alongside video logic<\/li>\n<\/ul>\n<p>Rather than presenting these topics in isolation, the project shows how they can be integrated into a cohesive hardware application.<\/p>\n<h2>Target Platform: Basys 3<\/h2>\n<p>This project targets the<a href=\"https:\/\/digilent.com\/shop\/basys-3-amd-artix-7-fpga-trainer-board-recommended-for-introductory-users\/\"> <strong>Digilent Basys 3<\/strong><\/a>, a widely used FPGA board in academic and learning-focused environments. The Artix\u20117 FPGA provides sufficient logic resources for both fractal computation and video control, while the onboard VGA connector allows direct connection to a display without additional hardware.<\/p>\n<p>Because the Basys 3 is commonly used in coursework and labs, this project aligns well with existing learning workflows supported by Digilent.<\/p>\n<h2>Development Tools and Implementation Approach<\/h2>\n<p>The design is implemented using:<\/p>\n<ul>\n<li><strong>VHDL<\/strong> for all RTL logic<\/li>\n<li><strong>Xilinx Vivado<\/strong> for synthesis, implementation, and bitstream generation<\/li>\n<li><strong>UART<\/strong> for serial communication<\/li>\n<li><strong>VGA<\/strong> for real-time video output<\/li>\n<\/ul>\n<p>Screen coordinates are translated into points in the complex plane, and each point is evaluated iteratively to determine divergence. The results are mapped directly to the VGA output, with all timing and control logic generated on the FPGA.<\/p>\n<h2>Using This Project as a Learning Resource<\/h2>\n<p>Because the design is complete and self-contained, it can be used as a reference by anyone looking to understand how mathematical visualization can be implemented on an FPGA. It is especially relevant for students, educators, and FPGA developers who want to explore video output and computation-heavy designs without introducing a processor subsystem.<\/p>\n<p>The project remains the original work of its creator. Digilent is featuring it to highlight how community-built designs can serve as practical learning references when paired with accessible FPGA hardware.<\/p>\n<h2>Project Repository<\/h2>\n<p>The full source code and documentation are available on GitHub:<\/p>\n<p><a href=\"https:\/\/github.com\/conradSZY05\/mandelbrot_rend\">https:\/\/github.com\/conradSZY05\/mandelbrot_rend<\/a><\/p>\n<p>&nbsp;<\/p>\n<\/div>\n<\/div>\n<div class='watch-action'><div class='watch-position align-left'><div class='action-like'><a class='lbg-style6 like-32317 jlk' data-task='like' data-post_id='32317' data-nonce='d8c4d58d14' rel='nofollow'><img src='https:\/\/digilent.com\/blog\/wp-content\/plugins\/wti-like-post-pro\/images\/pixel.gif' title='Like' \/><span class='lc-32317 lc'>0<\/span><\/a><\/div><div class='action-unlike'><a class='unlbg-style6 unlike-32317 jlk' data-task='unlike' data-post_id='32317' data-nonce='d8c4d58d14' rel='nofollow'><img src='https:\/\/digilent.com\/blog\/wp-content\/plugins\/wti-like-post-pro\/images\/pixel.gif' title='Unlike' \/><span class='unlc-32317 unlc'>0<\/span><\/a><\/div><\/div> <div class='status-32317 status align-left'>Be the 1st to vote.<\/div><\/div><div class='wti-clear'><\/div>","protected":false},"excerpt":{"rendered":"<p>This Mandelbrot set renderer was created by Conrad, who shared the project on GitHub (username conradSZY05). Built for the Digilent Basys 3, the design uses VHDL and Xilinx Vivado to &hellip; <\/p>\n","protected":false},"author":47,"featured_media":32319,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[4327,35,1561],"tags":[4852,72,1662,4606,5292,5293,104,5295,5294,4563,5296,453],"ppma_author":[5291],"class_list":["post-32317","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-projects","category-fpga","category-applications","tag-basys-3","tag-design","tag-fpga","tag-github","tag-mendelbrot","tag-programmable-logic","tag-project-2","tag-repository","tag-set-renderer","tag-uart","tag-vga-timing","tag-vivado"],"jetpack_featured_media_url":"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2026\/04\/572642731-98e88927-b837-4058-b24a-157b7a4696f0_1_optimized_1500.png","jetpack_sharing_enabled":true,"authors":[{"term_id":5291,"user_id":0,"is_guest":1,"slug":"conrad-szyman","display_name":"Conrad Szyman","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g","1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":"","9":"","10":""}],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/posts\/32317","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/users\/47"}],"replies":[{"embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/comments?post=32317"}],"version-history":[{"count":3,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/posts\/32317\/revisions"}],"predecessor-version":[{"id":32322,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/posts\/32317\/revisions\/32322"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/media\/32319"}],"wp:attachment":[{"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/media?parent=32317"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/categories?post=32317"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/tags?post=32317"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=32317"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}