By Joseph Yang, Kwee Peng Yap, Lian Heng Tan, and Pei Fern Ng
When you have a great idea but only a little knowledge of the hardware and/or software that you want to use, what should you do? Start taking classes and learning skills one by one or find the right tools that are easy to use? One passionate team at Xilinx was not discouraged when they realized they had limited knowledge of Arm processors and development tools they needed to successfully create a simple but fun game. Let’s hear their story.
Our team, who mainly does IC design, had very little knowledge about Arm® processors or the Vivado® Design Suite, but we still wanted to learn more about the Ultra96 development platform, so we decided to start a small project.
Hardware – Ultra96 board and Grove Ultra96 Board Sensors Starter Kit
The default development board is an Ultra96 board. In addition, we used the Grove Ultra96 board sensors starter kit. The reason we used this kit is that Grove Ultra96 board sensors starter kit contains the Ultra96 board sensors mezzanine board with several Grove modules such as LCDs, pushbuttons, and so on. Also, the Grove Ultra96 board sensors starter kit provides sample projects for all the included modules.
We decided to create a Word Color Match Game. The LCD had an RGB adjustable backlight, which is an essential part of the game. Whenever the background color matches the words displayed, the player needs to press a button to gain a point.
Figure 2. When the Background Color Doesn’t Match the Words Displayed
If the player fails to press the button when there is a match, the player loses one life. The game ends when the player loses five lives.
Figure 3. When the Background Color Matches the Words Displayed
Our project consisted mainly of
Grove components interfaced with either Zynq® UltraScale+™ MPSoC and/or Arduino
The sensor board has connectors with fixed connections to either Zynq (yellow boxes below) or Arduino (red boxes below)
Laptop connected to an Ultra96 board via UART for the debugging
Zynq UltraScale+ MPSoC with Vivado tools & SDK flow
Arduino to interface with Grove components
Figure 4. Hardware Configuration
Here’s how we partitioned the game
Arduino ‒ Game play
Ultra96 ‒ Leader board
Laptop ‒ Debugging interface
The Arduino and Zynq UltraScale+ MPSoC process inputs from their own set of connected Grove components and update their connected LCD independently. Since each subsystem is self-contained and communicates via UART, it was easy to partition the design among the team. We were able to independently develop portions of the project at the beginning and then easily integrate all portions when the subsystems were ready.
Finally, the Word Color Match Game board was born.
Figure 5. Color Match Game Board
Here’s what we’ve learned from this experience and about the Ultra96
Coupled with the Ultra96 boards sensors mezzanine board, one can quickly get their feet wet by starting with simple Arduino tutorials
Using an Arm-based Zynq UltraScale+ MPSoC means that users can develop more compute intensive applications on this platform
Access to the Ultra96 boards ecosystem
The Ultra96 is a versatile platform with many expansion options
Access to the Grove ecosystem
The ecosystem provides a wide range of modules with easy-to-use drivers
Access to Arduino ecosystem
The ecosystem provides a wide range of examples on the Internet
Before the project, we were afraid of the steep learning curve, thinking it would take a very long time to complete a project. However, all four team members were able to understand the Ultra96 development platform within two months and appreciated the fast turnaround of developing code in Python and C in a Linux environment. Most importantly, we had fun!
Whether you're creating a simple design project or a more complex project from IoT to machine learning, this set up is the perfect way to get started. Want to learn more? Want to create your own projects? Here are a few links to help you to jumpstart your own projects: