Getting Started With Free ARM Cores On Xilinx

We reported earlier about Xilinx offering free-to-use ARM Cortex M1 and M3 cores. [Adam Taylor] posted his experiences getting things working and there’s also a video done by [Geek Til It Hertz] based on the material that you can see in the second video, below.

The post covers using the Arty A35T or Arty S50 FPGA boards (based on Artix FPGAs) and the Xilinx Vivado software. Although Vivado will allow you to do conventional FPGA development, it also can work to compose function blocks to produce CPUs and that’s really what’s going on here.

The final design has an M3 processor, an AXI bus, a UART, some GPIO, a debugger, and some RAM. You manipulate those pieces using a schematic-like diagram. In the end, you can connect to the device using a serial port on your PC and a terminal program.

You still need to do software development for your new CPU and [Adam’s] promised that’s part two of his post that he will release shortly. However, that’s usually the part people don’t have as much trouble with. In addition, you might have your own favorite ARM development tools you want to use anyway.

We talked earlier about the free availability of these cores and it is good to have a quick step-by-step guide. If you aren’t using Xilinx, you might consider another CPU like RISC-V or NIOS-II.


13 thoughts on “Getting Started With Free ARM Cores On Xilinx

  1. Is there a way to rotate a youtube video? Besides the rotation of my laptop.

    I really like to have a simple softcore ARM in a FPGA to play with, except I wish It would run on a cheaper and simpler fpga. is there any cheaper fpga?

    1. Copy the video URL, paste it into VLC (Media > Open Network Stream) and then go into Effects and Filters > Video Effects > Geometry and tick the Rotate check box. You can then change the rotation of the video. Uncheck Rotate when youre done or you’ll get a surprise next time you want to watch a movie.

  2. I have to ask…

    That board has an Arduino interface. From what I’ve seen of the Digilent schematic, it even includes a +5V rail.
    Can this actually emulate an Arduino? What happens if you attach a board with 5V logic?

    If the answer is “it just never works again” – is there a list of Arduino style boards anywhere, that WON’T destroy boards like this?

  3. Are the readers here faimiliar with:

    I’m not into FPGA myself, but I think an article like this would not be complete without a link to opencores.
    Also, I was curious about FPGA and wanted to toy with them without having a specific project in mind then the combination of open source tools (Because of the freedom) matched with the cheapest board that fits from Ali / Ebay / China would probably my combo.

    FPGA’s used to be expensive, so I did a quick search on Ali. It seems that you can get FPGA boards for < USD15 with lots of pins:
    Price of FPGA boards have come down to a level where the price could hardly be a hindrance to entering the FPGA world.

  4. I’ve also been wondering if projects like this could run on one of those cheap FPGA boards you can get off eBay. So I made an account, downloaded all the required pieces, and generated a bit file.
    First, let me say that I don’t know a ton about FPGAs, but I have used them a little in the past, and done some research.
    FPGAs are usually ranked by how many gates they have. There are a lot of other important details like clocks and block RAM, but especially with these ARM Cortex projects, the limiting factor will be how many gates they use.

    Xilinx doesn’t use a raw gate count in their datasheets anymore; they put them in groups and call them “Logic Elements” or just LEs.
    The Digilent boards from the project have a LOT of LEs. The Arty A7 has an Artix 7 with 35k LEs. The Arty S50 has a Spartan 7 with 50k LEs. Both boards are $120. (I don’t own either of them, BTW.)

    I downloaded all the stuff mentioned in the guide, wrestled with installing Vivaldo, and finally got the M3 project to compile. For the A7 target (the Artix 7 35T) the resource usage was 85% of the LEs.
    I’m going to try the M1 project next, but I expect it to use significantly less LEs.

    I did a Google search and found a PDF by some guys that did this same thing with the ARM Cortex M0 (which I didn’t realize was available, but it is!) and they list the resource usage for that project. I can’t remember the exact percent, but it was a le to fit comfortably on a Spartan 3E with only 10k LEs.

    Xilix Spartan boards are pretty cheap, but you have to check the specific LE count for the model of the chip they use. In most cases it is the very smallest chip… In the case of the Spartan 6, the smallest one has only 9k LEs, which is definitely NOT big enough for any of these projects. I haven’t gone back and looked at which model is on the cheapest Spartan 3E boards, yet.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.