One of the big announcements at the recent Xilinx Developer Forum (XDF) in San Jose was the Arm design start programme. This opens to FPGA developers license free both the cortex M1 and M3 for our Xilinx FPGA designs.

In our design, we use the Cortex M cores for tasks such as System Management, IO and Sensor Controllers.

So, what do you need to get up and running with the Arm FPGA Design Start?

  • Arty A35T or Arty S50
  • Vivado 2018.2
  • Arm M1 or M3 Design Start pack depending upon core choice

In the remainder of this blog we are going to look at how we can get the initial design example up and running on the Arty hardware. We will follow this up with another blog which examines how we can create our own software applications for the design.

The first step in creating this example is to download the relevant Cortex core from the Arm Design Start page.


To download the design, you will need to register and agree to the license terms.

Both M1 and M3 packages are downloaded as compressed files, unzip these files until you see the following file structure.

The directories are self-evident

  • Docs – Contains the design documentation
  • Hardware – Contains the design example projects and bit files in Vivado
  • Software – Contains the SW application for the demo application
  • Vivado – Contains Vivado IP and SDK SW repositories required to create a new design from scratch

For this example, we are going to open the existing projects, these are under the hardware directory.

For the M1 example you will see two choices projects and bit files for either the Arty A7 or S7, while for the M3 you will see the project for the Arty A7.

Before we can open any of these projects, we need to also set the default IP location, such that when the project is opened it knows where to look for the Arm cores.

We can do this in Vivado before we open a project, click on Tools -> Setting and select IP Defaults and add the path to the Vivado folder we just extracted with the download.

Once we have added the default IP search path, we can open the project of our choosing. For this blog I am going to open the M3 Arty design.

The project may take a few minutes to open depending upon the speed of your machine, however once it is opened. We can explore the block diagram of the design

The next stage is to program the provided bit file into the Arty.

On the left hand of the screen in Vivado select hardware manager, this will configure Vivado to be able to connect to and download bit files.

When the hardware manager is open you will see a green bar across the top and the words Open Target in blue. Ensure your Arty board is connected and left click on Open Target and select Auto Connect.

This will connect to the Arty using the USB JTAG, allowing us to download the bit file.

Before we can download the bit file, we should open a terminal program and connect to the serial port. For this I used PuTTY the serial rate is 115200 with 1 stop and start and no parity.

Once we have the terminal program connected the next step is to download the bit file


Right click on the device under Hardware and select program device, this will open a dialog window which will include the bit file. Select this bit file and click program.

Once the application has programmed in the terminal, we should be able to see the hello world message from the running Cortex M3

We can now use the DIP and push button switches to change the states of the LEDs as below.

Now we know the basics of how to get the example design up and running we will look next time at how we can write software for our chosen Cortex M core.

In the mean time explore the block diagram and read the documentation to gain further understanding of not only the example design but also the reference documentation.