Jump to content

Better than a ZYNQ UltraScale+ ?

Recommended Posts

Let's face it FPGA development is often a quest for something just out of reach. I can do 90% of what I want using nothing more than VHDL and Verilog. But there are some things that I can't do in logic. A big step up in FPGA development was the inclusion of ARM processor complexes. And the performance of recent versions of ZYNQ UltraScale have gotten pretty impressive lately and are even available for budget constrained projects. But finding a an affordable FPGA platform that does the whole job is still elusive. Let me elaborate.

For projects that need a processor/fpga platform to implement limited functionality that rarely changes the ZYNQ is almost perfect. But some projects need more flexibility. One example is a lab instrument that sits in a different room from where you want to control it and has to be re-configurable for different tasks. Another might be a remote security (or really any kind of)system that needs to
be compact, have a low power profile , and work like a PC. There are two ways to do this. One is to increase the FPGA on board processor power. Another is to make the processor an add-on board to an FPGA platform.

The biggest issue with affordable ZYNQ platforms today is that they just don't have everything needed to do the work of a PC. Not enough memory ( at least 8 GB if you want to use a modern OS ), no mass storage capability, the inability to run the tools needed to add new capabilities (like Vivado).

You can always go the other route. I've posted on projects that have the objective of adding FPGA capability to low cost low power single board computers like the Raspberry Pi 4 or nVidia Jetson Nano. But I think that I've discovered the best possibility that currently exists. This is the Seed Studios ODYSSEY-X86J4105. It's not very expensive and has some nice IO options. But can it be great as
a remote dedicated FPGA/PC platform? I'm going to find out.

The ODYSSEY-X86J4105 has a 64 GB eMMC with Win10 enterprise installed. That's interesting, but I really don't have an interest in using Win10 as a stand-alone configurable instrument. The board also comes with a single SATA III interface and cable so you can install any OS of your choosing ( if it's compatible with the x86-64-bit processor and onboard GPU ). More interestingly, it has one 4 lane
PCIe M.2 slot and 1 M.2 SATA slot.

The first thing that I did was install a cheap 500 GB SSD into the M.2 M-keyed slot and install Mint 20 with MATE. I don't care for Gnome 3 or later but I can get along with the Mint MATE distribution. I have to admit that I was a bit astonished at how well this went. I had absolutely no problems installing all of the basic application that I would want for a normal PC installation. Running out of a
SSD though 4 PCIe Gen 3 lanes the performance was also quite astonishing.. better than the Ubuntu 18.04 on my WIN10 box. Now, I still have the FPGA part to work out. I couldn't get the latest Vivado to install, and I spent a few days trying. But with a bit of grit I did manage to install Vivado 2017.4. I also was able to install the Opal Kelly SDK for Ubuntu 20.04 so I can develop both FPGA bitatreams as weel as applications for their USB 3.0 equipped FPGA boards. I could use the FMC connector on my Genesys2 or Nexys Video to connect with the ODYSSEY via USB 3.0 as well. But, this isn't my main goal. I'd really like to connect the FPGA to the ODYSSEY processors with a faster interface. So, it turns out that you can buy M.2 4 lane PCIe to 4 lane PCIe edge receptacle adapters.

I started over and installed Mint 20 with MATE onto a new 2.5" SATA HD, thus freeing the M.2 PCIe slot for the adapter. Again, for a PC with a 15W power envelope Mint 20 performs better than expected. I have two FPGA boards that I can use in the 4X PCIe card slot. One is the Terasic C5P (GT version), now called the OpenVino starter board. The other is the Cyclone V GT Development board. Both have 4 lanes of PCIe Gen2. Will they work on the ODYSSEY?

I was able to install Quartus 20.1 Lite and compile the PCIe3-DDR3 demo hardware project. Unfortunately I was not able to compile the driver code for Ubuntu 20 as the source is for a much earlier kernel. I did try and install Centos 7, which is recommended by Terasic, but this failed. Likely, it was due to Centos 7 not supporting the Intel processor. I can probably work around this when I have more time to spend.

Not to be beaten I decided to go back to the ODYSSEY Win10 OS. I was able to install the Terasic Win10 PCIe driver without issues. I was also able to build a bitstream on my other Win10 box for the PCIe3-DDR3 demo. Running the PCIe3-DDR3 PC application was quite another story. It's a long story so I'll just get to the end of it. I was able to run the PCIe3-DDR3 demo on the ODYSSEY at Gen2 data rates in WIn10 on the ODYSSEY.

So the ODYSSEY seems to have checked off all of the boxes as far as being useful as a remote configurable appliance:

  • I can create both FPGA bistreams and applications on the platform and run them from the platform
  • The FPGA logic has either a 300 MB/s USB 3.0 or 2500 MB/s PCIe interface to processor memory.
  • I have a choice of FPGA devices to use

Considering that the processor isn't limited by ARM architecture code and tools this looks to be a lot more promising than any ZYNQ  FPGA board that I've used for developing a truly flexible remote appliance.

There's still a lot of work to do but I think that the enterprise is worth sharing for anyone else interested in similar ventures.

Link to comment
Share on other sites

  • 2 weeks later...


I was able to install Centos 7 onto an HD. It was a bumpy ride but I now have Centos 7, Linux kernel 3.10, running on the ODYSSEY. This is important because that kernel is needed to use the Terasic C5P PCIe interface. I had no issues building the PCIe driver and PCIE_DD3 demo application. It ran considerably faster than the WIN10 version. But I now have a "PC" on which I can do FPGA development using PCIe or USB 3.0.

I like Centos. It took me a few years to beat Centos 6 into a workable form and until now I've been stymied trying to get Centos 7 or Centos 8 into something as usable. It won't be easy adding other applications that were trivial to install in Mint 20.. but then Vivado still wants to use Ubuntu 18.04. I'm sure to find a version of Vivado that works on Centos 7 as well as Quartus. After installing the MATE Desktop Centos 7 isn't as horrible as it is with Gnome 3. Having the ability to connect a FPGA to 4 lanes of PCIe Gen2 is worth all of the effort.

Warning. If you buy the ODYSSEY with authenticated WIN10 Enterprise ( for an extra $30 why not? ) be aware that you have the standard 'hidden root' Administrator and a generic ODYSSEY user with administrative privileges and no password protection... so do some basic user administration tasks before connecting the board to the internet.

For less than $300 I no longer have a need to hang a PCIe FPGA board onto a PCIe extender cable from one of by development PC boxes. FPGA development using inexpensive platforms has been mostly a series of disappointments but the OBYSSEY, together with the Terasic C5P GT FPGA board,  has made me a happy camper and will make life easier for both Intel and Xilinx FPGA project development.

Link to comment
Share on other sites

  • 5 weeks later...

Another Update.

I find a few things about the using the ODYSSEY as a ZYNQ substitute exciting for  applications that I can't do with any of my PC development boxes:

  • The board has digital UART pins tied to the CPU hardware. No UART <--> USB <--> UART shenanigans to complicate timing found in the typical USB UART approach.
  • The board has a number of GPIO pins tied to the CPU hardware on both Arduino or Raspberry Pi compatible connectors. The Raspberry Pi pins are all connected directly to the CPU infrastructure and supported in the BIOS.
  • if I do use PCIe to connect addressable FPGA logic to the ODYSSEY CPU it a lot more manageable from a mechanical point of view
  • If I use the CYCLONE V GT Development board instead of the Terasic C5P I not only get 2 HSMC interfaces that can have memory mapped  logic but I can make an Ethernet PHY data interface that's really simple from a software application perspective. The Ethernet PHY data hose looks to the application as 2 PCIe memory mapped buffers. This is a extremely easy and efficient means for transferring data between the application and any Ethernet PHY equipped FPGA board, like the Genesys2, Nexys Video at about 120+ MB/s full duplex. True, I could do this with one of my PC development boxes but the CYCLONE V GT board really isn't properly designed to be installed into a PC tower PCIe slot. The only safe way to do this is with a PCIe extension cable, which I have.

I've been doing battle with Quartus for a while now getting the Ethernet PHY interface working with PCIe connectivity. Look for a few posts in the near future.

The ODYSSEY has got me excited about a few old project that were put aside and now can't wait to implement. Stay Tuned.

The ODYSSEY is really different that any other SBC that I've come across for applications requiring programmable logic.


Link to comment
Share on other sites


This topic is now archived and is closed to further replies.

  • Create New...