I recently received the new Trenz TE0802 development board, designed and manufactured by Digilent partner Trenz Electronic. This board is interesting because it is the first development board to contain a Zynq UltraScale+ MPSoC device of the CG variety. The CG devices sit within the mid-range of the Xilinx Heterogeneous MPSoC portfolio with the application processing unit containing dual-core Corex-A53 processors in place of the quad-core processors provided in the EV and EG devices.
This is the first CG development board I have received so I am excited to explore its capabilities and create some projects with it. Before we do that though, let’s have a look at the board itself and create a simple project to demonstrate how to set it up in the tool chain.
First impressions of the board are favorable. It includes several interfaces which can be used for learning FPGA / embedded system development. The TE0802 offers the following in addition to the standard embedded system interface and memories of QSPI, DDR, SD, Ethernet, UART, Display Port and USB:
3.5 mm Headphone Connection
5 Push Buttons
8 DIP Switches
Grove Sensor Interface
4 Digit 7-Segment Display
M.2 SSD PCIe
These capabilities are everything needed to start out on the FPGA, programmable logic development path. A common starting point for many people learning hardware description languages is to drive 7-segment display, read switches, and generate VGA and audio test patterns.
The TE0802 also provides capabilities for more intermediate developers with the provision of Pmod, DisplayPort, and PCIe M2 SSD interfaces. The processor system enables developers to get started with bare metal applications and progress on to PetaLinux and embedded Linux solutions thereby opening the ability to accelerate applications with Vitis and leverage Vitis AI.
To get started with the TE0802 board, the first thing we need to do is create a Vivado project. To ensure the project can include all of the settings for the TE0802 board, we need to download a board definition.
Previously, we would have had to go to the manufacture’s website and hunt around for these board definitions. Using the Vivado XHub Store, however, we can download the board definitions using Vivado directly.
Once the XHub Store is open, select the Boards tab and you should see a list of available board definitions listed by manufacturer. To ensure the list is current, click the refresh button to ensure the available board definitions are up to date.
Once the board definition list is updated, select Trenz and select Zynq UltraScale+ and scroll down until you see the TE0802 board. The label on the packaging will define which of the variants you have.
Select the appropriate variant and install the board definition.
You should see a green check by the board definition when it is installed.
We can now create a new project and select that board as the target.
The project for this will be remarkably simple. The block diagram will contain only the Zynq PS which will be configured for the TE0802 board from the board definition just installed.
Once the Vivado project has been implemented and bit file generated, we can export the bitstream for use in Vitis.
With Vitis, we can create a new application using the exported XSA as the platform definition for a bare metal application.
Note that only two Cortex-A53 processors are visible when the application is created.
Once the project was created, I made a small change to the output string and built the application.
I create a debug configuration to launch the application on the TE0802 board to make the application run on the target.
Running this gave the following output over the terminal.