[HOWTO] - ATLYS & MicroBlaze

This guide describes the design flow for developing a custom embedded processing system using Xilinx EDK.

The Embedded Development Kit (EDK) is a suite of tools and IP that you can use to design a complete embedded processor system for implementation in a Xilinx FPGA device.

The EDK essentially consists in XPS & SDK.

Xilinx Platform Studio (XPS) is the development environment used for designing the hardware portion of your embedded processor system. You can run XPS in batch mode or using the GUI, which is what we will be demonstrating in this guide.

The Software Development Kit (SDK) is an integrated development environment, complementary to XPS, that is used for C/C++ embedded software application creation and verification.

For other usefull information like as requirements (sw or hw), software platform or else you can refer to reference section.

Design Flow Chart
Design Flow Chart

Here the few and simple steps that we're going to do:

1) Create a new project in XPS;

2) Export the project to SDK;

3) Write a trivial application in C/C++ in a SDK project;

4) Transfer the system and application to Atlys board;

5) Test the system & app.

1) Create a new project in XPS

Set the directory of design and the reference library.

As reference we use the ATLYS BSB 3.6 (AXIS lib).

Create a new project with a BSB
Create a new project with a BSB

Select Atlys board after that you have choosen Digilent brand.

Select your brand and board model
Select your brand and board model

Select , with add & remove button, your hardware specification.

You can also manage single block in the dx side of the foam.

Generate your selected microblaze platform
Generate your selected microblaze platform

The System Assembly View allows you to view and configure system block elements.

Assembly view in wich you can modify your platform
Assembly view in wich you can modify your platform

MHS file contain the definition of external and internal port.

 

External definitions coincide with external pinout.

When a PORT is shown inside of a BEGIN/END pair it’s a port on a piece of IP. When you see a PORT at the top of the MHS, it connects the embedded platform to the outside world.

MHS file in wich you can find port definition (external and internal)
MHS file in wich you can find port definition (external and internal)

For a design to work in an FPGA, it needs to be converted to a bitstream. This conversion is the following three-step process:

1. XPS generates a netlist that is representative of your embedded hardware platform.

2. The design is implemented (mapped into FPGA logic).

3. The implemented design is converted to the bitstream that can then be downloaded to the FPGA.

 

When we generate the netlist the XPS

- Reads the design platform configuration MHS file and runs all necessary

  design rule checks to validate the correctness of the design.

- Synthesizes the design using Xilinx Synthesis Technology (XST).

- Produces netlist files (with an .ngc extension) for each peripheral, as well

  as the overall embedded system.

- Generates Hardware Description Language (HDL) wrapper files for each 

  peripheral and the overall system. To see the created HDL files, look in

  the <project_name>\system\hdl directory.

Generation of NetList
Generation of NetList

Generation of bitstream file.

Compiled C code is not part of this bitstream. It is added later in SDK.

Generation of Bitstream
Generation of Bitstream

2) Export the project to SDK

Created the project and added an embedded processor source, designed your hardware platform in XPS using the Base System Builder, and finally generated a bitstream for the FPGA, now, you will export your hardware platform description to the Software Development Kit (SDK).

Export design to SDK
Export design to SDK

When you export your hardware design to SDK, a utility creates , in addition to the XML file, documentation on the software drivers and hardware IP is included so you can access necessary information from within SDK.

When SDK launches automatically, it imports the hardware platform for your design.

Include bitstream, export & lunch sdk
Include bitstream, export & lunch sdk
Set your workspace
Set your workspace
System Summay
System Summay

3) Write a trivial application in C/C++ in SDK project

A software project contains one or more source files, along with the necessary header files, to allow compilation and generation of a binary output (.elf) file. A workspace can contain multiple software projects. Each software project must have a corresponding board support package.

Create a new C/C++ project
Create a new C/C++ project
Creating software design
Creating software design

SDK examined your hardware specification file (system.xml) and compiled the appropriate libraries corresponding to the components of your hardware platform. You can view the log for this process in the Console view.

Choose Peripheral Test Bench File (for i.e.) or write something like hello world...(i think the first is better to learn...)
Choose Peripheral Test Bench File (for i.e.) or write something like hello world...(i think the first is better to learn...)

You can see lscript.ld, the default linker script that was generated for this project. A linker script is required to specify where your software code is loaded in the hardware system memory.

Double-click the lscript.ld file to view the linker script contents in the text editor.

If you are familiar with the intricacies of linker scripts, you can make changes by selecting Xilinx Tools > Generate Linker Script.

You now have a complete framework for editing, compiling, and building a software project. The next step is debugging.

Generation of Linker Script
Generation of Linker Script

4) Transfer the system & app to Atlys

You must configure a bitstream that loads a design into the FPGA. In this case, the design is an embedded processor system.

Program the FPGA
Program the FPGA

5) Test the system & app

The code you executed in SDK displays test text message in the terminal window to demonstrate how simply software can be executed using SDK.

Test your system and your application
Test your system and your application

References:

[16] Xilinx documentation about EDK/SDK