The thread on spinning a 386 in an FPGA made me think about the FPGA
boards available. I know you can find boards that are inexpensive and
you can find FPGA boards that have support for processor oriented
devices like RAM, Flash, Ethernet, etc. But is there any overlap
between these requirements?
I figured it should be practical to produce a board with SDRAM, a NAND
Flash chip and the minimum interface needed for a few interfaces,
Ethernet, USB 3.0, HDMI and maybe SATA so that any processor you can
envision could be prototyped in the FPGA and communicate with the real
Does this board exist?
This is something I'm doing at the moment. We do have a (somewhat
heavyweight) processor which is constrained by its I/O.
Altera's Cyclone V SoC parts have an ARM side and an FPGA side, joined by
cache-coherent bridges. On the ARM side are various hard peripherals (micro
SD, 1G ethernet, USB, DDR3). It's possible to configure the bridges so that
the FPGA can look over the wall at the ARM-side peripherals, and so the FPGA
can map ARM-side peripherals into its own Avalon/AXI memory space.
This is more efficient than external chips, because there are not many
external chips for driving these kinds of embedded interfaces (most
separate-package USB/SD/SATA controllers would speak PCIe, which isn't what
However, once you have that setup you probably want to run the driver stack
on ARM Linux (drivers for things like USB being a pain, see our previous
conversation) and provide a more abstract interface to the FPGA - for
example a simple block device rather than dealing with the Synopsys USB
controller and USB mass storage. Then you can get away with a much more
minimal software overhead on the FPGA.
The cheapest Cyclone V SoC board, the DE0-Nano-SoC is $99, though the FPGA
isn't very big:
On the Arria 10 (and Stratix 10) the ARM and FPGA are more integrated, so
you can access the peripherals from either side. But there's no cheap Arria
10 as yet. There are also no Stratix IV/V parts with ARMs on them.
I don't know if Zynq can do something similar - anyone have more experience
Here's one in a familiar form factor at about the same price:
It has some odd design decisions though - the Ethernet goes through
a USB to Ethernet adapter, rather than using the native controller.
(I guess one can take the "Pi-compatibility" thing too seriously.)
I was joking about the Pi compatibility. I don't expect that this board
would be running a distro like Raspbian.
It's hard to know the designer's intent. For all I know, he chose to
forgo the native Gb Ethernet interface because there wasn't enough room
for a PHY (and its power supply), although looking at the block diagram,
it seems more likely that he wanted to reserve the pins for GPIOs (I
assume the 53 MIO pins are shared between the bootflash, USB, UART, SDCard
and the GPIO).
I should have looked at the schematic instead of the block diagram. The
GPIOs are connected to Bank 34 (on the PL, not the PS), and the 53 MIO
pins on the PS are used for I2C, USB, SDCard, QSPI (bootflash) and some
GPIO connected to a MACHX02 CPLD.
It seems the designer simply ran out of MIO pins and wasn't able to fit
in Ethernet (although this could have been run through the EMIO to PL
On Zynq designs of mine, I've managed to fit in USB, bootflash, SDCard,
Ethernet, UARTs, I2C and some GPIO on the MIO, and a second Ethernet port
via EMIO and PL pins.