element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet & Tria Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • About Us
    About the element14 Community
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Japan
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      •  Vietnam
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
FPGA
  • Technologies
  • More
FPGA
Blog Summer of FPGAs - Building an Embedded System on FPGA
  • Blog
  • Forum
  • Documents
  • Quiz
  • Events
  • Polls
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join FPGA to participate - click to join for free!
  • Share
  • More
  • Cancel
Group Actions
  • Group RSS
  • More
  • Cancel
Engagement
  • Author Author: yesha98
  • Date Created: 16 Aug 2021 4:31 PM Date Created
  • Views 5628 views
  • Likes 10 likes
  • Comments 21 comments
Related
Recommended

Summer of FPGAs - Building an Embedded System on FPGA

yesha98
yesha98
16 Aug 2021

Introduction:

Back then in February when I roadtested the USB104-A7, I had learned to create block designs using MicroBlaze. I found it very interesting but the available online resources were limited, the tutorials were based on the older versions of Vivado (Uploaded 6 years back or so). So I thought of making a course on using MicroBlaze in block designs and programming it with Xilinx SDK. Finally, after my semester exams were over, I got some free time to record the tutorials and the course material.

 

The course is designed in such a way that basic knowledge on FPGA programming using Vivado would be sufficient to take up this course. Also, the learner will understand the design of hardware while making the custom Pmod (Pmod Character LCD) and the working of Rotary Encoder.

 

Also, in this course, the design will be modified as new modules are added according to the requirements. The quadrature decoder module described in Verilog will also be added to the design at a later stage in the course. Thus, the learner will be able to feel the essence of the term "Reconfigurable Hardware".

 

Course Contents:

Video 1 - Introduction to MicroBlaze and AXI

Video 2 -- Lab 1 - Creating a block design with MicroBlaze and AXI GPIOs

Video 3 -- Lab 2 - Writing code in Xilinx SDK to interface with user LED and Pushbutton

Video 4 - Working of Character LCD and making of the Pmod LCD

Video 5 -- Lab 3 - Modifying the block design to interface Pmod LCD

Video 6 -- Lab 4 - LCD Driver Code to display elapsed seconds in LCD

Video 7 - Working of Rotary Encoder and Quadrature Decoder

VIdeo 8 -- Lab 5 - Adding the Quadrature Decoder Module to the Design

Video 9 -- Lab 6 - Writing code in SDK to display count and direction to the LCD

VIdeo 10 - Final Assessment

 

 

About the Course:

All videos are available on YouTube, here's the link to Playlist: https://www.youtube.com/playlist?list=PL6jYIySXv7VhUjg95oP88ubxRrr9MQMfH

Complete the final assessment to earn a certificate!

 

Course Overview:

You don't have permission to edit metadata of this video.
Edit media
x
image
Upload Preview
image

 

Thanks for reading!

  • Sign in to reply

Top Comments

  • Jan Cumps
    Jan Cumps over 4 years ago +2
    Video 3 also worked perfectly on a Pynq-Z2 board with Zynq IC. www.youtube.com/watch
  • Jan Cumps
    Jan Cumps over 4 years ago in reply to yesha98 +2
    yesha98 wrote: ... Btw, I have a doubt, so you added the onboard LEDs and Pushbuttons through AXI GPIO right. After adding the Zynq IP in block design, if we run the block automation, the Fixed IO and…
  • navadeepganeshu
    navadeepganeshu over 4 years ago +2
    Gave a try with ARTY S7 - 50. For this board, I skipped adding NOT logic for reset(lab video1) as it was active low with the onboard switch by default. Used GPIO0 and 1 for 4 x LEDs and 4 x pushbuttons…
  • Jan Cumps
    Jan Cumps over 4 years ago in reply to yesha98

    yesha98  wrote:

     

    ... Also, just for clarification, the code written in SDK would work in Vitis also, right?

    Incidently, a topic of today's seminar:

    Ultra96-V2 Workshop: Session 3: Hello World on a Cortex-A53 and R5 Processor

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • yesha98
    yesha98 over 4 years ago in reply to Jan Cumps

    Thanks a lot, Jan Cumps for trying it out and verifying the design.

    I appreciate it. Now that those who are trying Module 1 with Zynq will also be able to do it with ease.

     

    Thanks again for taking your time and trying this out! image

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • yesha98
    yesha98 over 4 years ago in reply to Jan Cumps

    Yes, as you mentioned, this design was intended for 7-series FPGAs like Artix-7 or Spartan-7.

    I'm planning to launch Module 2 which will be having Zynq as the SoC FPGA. 

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • Jan Cumps
    Jan Cumps over 4 years ago in reply to Jan Cumps

    Works! Thank you.

    image

    The LaunchPad in the picture below is used to translate the UART 3V3 to a USB COM port.

    The Pynq-Z2 board configured in JTAG mode instead of Linux SD boot.

    image

     

    The debugger works too (note to anyone playing along: on a Pynq-Z2, move the top boot jumper from SD to JTAG. Do not populate the bottom jumper - that's to debug the PL):

    image

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • Jan Cumps
    Jan Cumps over 4 years ago

    I'm at video 2, just finished the Vivado Block Diagram

    image

     

    I did 2 things different:

    • my board doesn't have a UART that can be connected to the PL, so I made the transmit pin external and will use a 3V3 serial to USB converter to get the data.
    • I used a util_vector_logic block to create a NOT gate instead of coding. The effect is the same.

     

    Validation works.

    I'm having errors synthesizing: [Common 17-217] Failed to load feature 'core'.

    That's because it's mandatory on the Zynq to place the PS ARM block.

     

    image

     

    So I changed the design a little specific for the Zynq on my board:

    • added the Zync, and used it for the clock and the reset (so that it does not have to do nothing image)
    • removed the clock wizard, because it's not needed, see step above.
    • still kept your reset, but used it as an additional one, for the PL blocks only.

    There is nothing wrong with your design, it's all because of the two ARM cores in my FPGA.

     

     

    In Vivado 2020.2, the menu to start Vitis (instead of SDK) has moved:

    image

     

    The startup is somewhat different. The hardware platform is not automatically loaded, but you can select the XSA exported from Vivado when creating an application project.

    Because of the Zynq FPGA I'm using, the ARM processors are also available for doing development on, next to the MicroBlaze

    image

    Then the result is more similar to the SDK look and feel:

    image

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • More
    • Cancel
<>
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2026 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube