Close

Smoke Stayed In

A project log for Nyx: Edison - FPGA Devboard

FPGA development board using the Intel Edison

daveDave 08/31/2015 at 16:342 Comments

Dionysus is going the way of the Dodo


Dionysus is a Spartan 6 LX9 Development board with 8MB of 100MHz SDRAM and a fast USB - FIFO interface between the host computer and the FPGA. It has served me well, I've developed a camera and LCD demo (Video below) as well as exercised most of the Nysa tool. but it doesn't have the space to store larger FPGA images that I need to really exercise Nysa.

I found that Nysa would eat up about 6K of the FPGA resources. This is understandable because it provides so much infrastructure but Dionysus's 9K is just too small. I'm still working on reducing Nysa's footprint but right now is the time for fixing bugs and adding necessary features, not about optimizing.

Nyx

I designed Nyx as a replacement for Dionysus. Nyx uses a LX25 Spartan 6 boasting almost three times the FPGA image space as the LX9. To talk with the FPGA I initially though of using the same interface I used for Dionysus. A USB 2.0 FIFO which achieved data rates of about 25MBs. As you can see in the demo video linked above it is possible to do quite a lot but I felt USB just wasn't the perfect solution, What I really didn't like about it was that although large transfers were pretty fast whenever I wanted to perform small transactions I could spend up to 16ms waiting for the USB stack within the kernel to respond. I've tried the modification that reduced this response time to 1ms and it did yield better results but I was never happy with the non-deterministic behavior of USB.

I almost designed Nyx with Cypress's USB 3.0 FX3 Chip but I decided against it for two reasons.

<DIGRESSION>

As a side note if you are interested in working with the FX3 chip I've used it on another board of mine called Prometheus. Cypress does provide a pretty good board support package. I did need to massage the software a little in order to use it with Ubuntu but if you interested in playing with it I do have a build environment here:

Prometheus FX3 Build Tool

For the brave here is a GUI interface I wrote to program and talk to the FX3 chip using PyQt

Prometheus Comm Tool

Sorry for the digression.

<END DIGRESSION>

I really wanted a fast interface between the controlling processor and the FPGA. PCIE would have been awesome but adding the gigabit transceivers required to achieve this high speed communication would come at a cost of much more expensive chips and impedance controlled routing which also drives up the cost of PCB development. If you are interested in this I am working on Artemis which has this capability and I even got the board to talk with a SATA hard drive.

In the end I found SDIO is a really great interface to get data rates at around 50MBs and near deterministic timing. Now I just needed to find a platform that supports SDIO.

SDIO

Turns out SDIO is really common! It's on almost all of the single board computers including Raspberry Pi, Beaglebone Black and so on. I just needed to choose a devboard that works well with it.

Edison

I chose Edison primarily because it has WIFI out of the box. All I needed to do was load Ubilinux and immediately I had an Ubuntu environment I could SSH into. In fact I have terminal open to my Edison to Nyx right next to this window!

Edison is not the fastest of the devboards but I don't need fast I needed good software support and it looks like Intel is supporting it very well.

I am working on the SDIO interface right now and if I can catch a break from work I'm hoping I can start debugging the processor - FPGA interface in a little while.

Board Status

I tried to reduce the cost of this prototype by choosing a really long lead time which drove me crazy waiting for the board to come back but finally it arrived last week. The guys at Lightspeed Manufacturing helped me put on the BGA FPGA and spent a sleepless night on Thursday assembling the rest.

Usually when I do my first smoke test I use a current limited power supply with probes and touch the input rail. This allows me to break the connection immediately if the circuit draws more current than anticipated. Glad I did because the supply immediately crowbared. Turns out I had the 4V Switcher off by 180 degrees. After fixing that I turned it on everything has worked well so far.

I designed in an FTDI USB - UART converter into the design and after I plugged in the Edison and powered it up I ended up with this screen:

Debian GNU/Linux 7 ubilinux ttyMFD2

ubilinux login: 
Huzzah!

I then opened up Xilinx's PlanAhead and created a simple FPGA image to test out the clock, LEDs, reset and buttons and success

Huzzah²!

There are still a lot more things to test out including:

But things a looking good so far.

Discussions

Glenn wrote 09/01/2015 at 04:00 point

Hi I would be interested in one of your boards.

  Are you sure? yes | no

Dave wrote 09/01/2015 at 16:55 point

This is great to hear! I will try and get this board checked out as fast as possible. The next version of the board will be ready. Unfortunately, I found a couple of bugs that are not show stoppers but I wouldn't be happy selling the boards without fixing them.

  Are you sure? yes | no