Xilinx may be pushing the envelope with its 28nm FPGAs (see Xilinx Unifies FPGA Line) and its 2.5D Stacked Silicon Interconnect technology (see 10,000 Connections Between FPGA Slices) but its older chips, like the Spartan 6 deliver solid performance and are readily available. As expected, Xilinx had Spartan 6 boards available when the chip arrived (see Eval Kits Speed FPGA Design).
Recently I had my hands on a pare of Spartan 6 boards from Digilent including the Nexys 3 (Fig. 1) and the Atlys (Fig. 2). I checked it out using the dual camera VmodCAM board (Fig. 3) that can be used for a range of imaging applications. The next section details the project while the subsequent sections details the boards.
Digilent sells a range of boards based on everything from Spartan 6 FPGAs to PIC32-based Arduino boards (see PIC32 Arduino Modules) and expansion modules (see Arduino Expands Into More Demanding Applications ). I have even tried one of their robotic platforms PIC32 Robot Provides Modular Platform) based on Microchip's PIC32 microcontroller. These FPGA boards could be used on those platforms.
The Pmod family of modules is also from Digilent. These use standard 6- and 12-pin headers that expose serial and parallel interfaces. The Nexys 3 has four 12-pin ports while the Atlys has one. The Nexys 3 is more suitable to robotics with a 4 digit, 7 segment display. The Atlys lacks on-board displays but has dual HDMI input and output ports
The Nexys 3 has a smaller LX16 Spartan 6 FPGA while the Atlys has a larger LX45 Spartan 6. The LX45 also has PCI Express and four high speed SERDES on-chip. The Atlys really only provides access to on of the SERDES with support via 10/100/1000 Ethernet PHY. The board alsy has an AC-97 audio interface. Both boards can handle MicroBlaze soft core processors.
Both boards have a 68-pin VHDCI connector. This provides access to high speed peripherals like Digilent's VmodCAM module. This is the primary off-board interface. It only provides access to a limited number of FPGA I/Os. The FPGAs have a large number of I/O ports that are not exposed even when taking into account on-board interfaces. Still, the platforms provide easy programming and access to quite a few peripherals.
The hardware arrived without documentation or software because it is all available online. You can check it out without having to buy the hardware. Likewise, these boards use Xilinx's free WebPack version of ISE, Xilinx's FPGA development suite.
Hands-on The Boards
The first step was to download all the software and documentation from the Digilent and Xilinx websites. This does not take too long with a high speed Internet link. Installing the software takes a bit more time. The Digilent Adept application (Fig. 4) is the first one to install. It matches the FPGA boards providing programming, debugging and testing support. Out of the box, the tool can be used to test the on-board I/O.
Digilent does a good job of providing documentation and software as well as tech support, at least to editors. It does not have any forums though so much of the user interaction on FPGAs will be found in Xilinix's substantial forums. The lack of forums and more extensive sample applications is one area where Digilent could do more work.
I had some Pmods and the VmodCAM for testing purposes. The Pmods required basic parallel and serial interfaces and were easily connected to the Nexys 3 board. The easiest way to start was to first build and interface with the built-in peripherals including the LEDs and switches. The next project simply extended the I/O to the Pmod pins. This is easily done in an afternoon although I have used ISE's schematic design tool before.
The sample project for the Nexys 3 was my starting point. It provides access to the on-board interfaces including the 7-segment LEDs and the serial port but not the VGA port. I didn't get a chance to work with the VGA port and it looks to be a more ambitious project because the FPGA simply has direct access to the pins on the connector. There are VGA controller projects available for Xilinx FPGAs if you search on the Internet. The issue is more complexity because on-board memory needs to be used for buffering and the controller needs to be handle the desired resolutions.
I also tried the VmodCAM project with the VmodCAM module and the Atlys board. Versions of the project are available for ISE v12 and v13, the latest versions of the Xilinx development suite. The project would fit on the Nexys 3 board because the VmodCAM uses the Digilent's VHDCI interface found on all its FPGA boards. The big issue would be replacing the HDMI support with a VGA controller and adjusting the memory controller interaces.
The VmodCAM project is relatively complete. The project uses the Atlys on-board memory as a frame buffer. A buffer is provided for each camera that are operated in RBG, video snapshot mode. The results of one of the cameras displayed on one of the HDMI output ports. The cameras are set to 1600 by 1200 pixels while the display is run at 1600 by 900 pixels requiring basic clipping of the bottom part of the image.
The project provided a number of useful examples including HDMI output using an frame buffer. It was easy to add a MicroBlaze and have it access the frame buffer. This took about a week of experimentation although mostly limited by my occasional use of ISE and MicroBlaze rather than issues with the hardware.
Going past this point would require a bit more time on my part. There are a number of open source projects that take advantage of stereo camera inputs. One is Dan Strother's Open-source FPGA Stereo Vision Core that is designed for Xilinx FPGAs. Xilinx also has a number of video kits (see Dev Kits Help Alleviate Those FPGA Design Woes) that can be used as a starting point for new projects. Of course, the VcamMod can be used as a single camera too. This simplifies the types of applications and the necessary support and will likely be the best approach for those just wanting to learn about FPGAs and vidoe processing. Obviously, those with the expertise and need can push the FPGAs and cameras to their limits.
From a hardware perspecitve, Digilent has delivered a solid FPGA solution with both boards. The plethora of Digilent Pmods provide an easy way to work with the Nexys 3. The number of VHDCI boards is more limited. There are breadboard and wire wrap boards available at this point. If you plan on Linux development with the MicroBlaze and the Atlys then check out PetaLinux.
Nexys 3 Board
The Digilent Nexys 3 board (Fig. 5) has a Xilinx Spartan 6 XC6LX16-CS324 FPGA. This FPGA lacks the PCI Express and high speed SERDES found on the Atlys board. The board does have a 10/100 SMSC LAN8710 PHY driven by the FPGA since it has more than enough horsepower to run a 10/100 Ethernet link. FPGA has 2,278 slices that contain four 6-input LUTs and eight flip-flops. It has 32 DSP slices and 576 Kbits of on-chip block RAM. The pair of memory controllers have access 16 Mbytes of Micron cellular RAM and 16 Mbytes of Micro parallel PCM (phase change memory). A 16 Mbyte quad SPI serial memory handles FPGA configuration settings.
The board has the 68-pin VHDCI connector. An 8-bit VGA port allows the FPGA to drive a display. There is also a 4-digit, 7 segment LED display whose multiplexed display must be directly controlled by the FPGA. Other on-board peripherals include 8 slide switches, 4 push buttons and 8 LEDs.
The board has four 12-pin Pmod connectors. These can be used with Digilent and third party Pmod modules that are available for interfacing everything from motors to wireless interfaces. The Pmod interfaces make the board a good match for robotics and similar control projects.
The Digilent Adept USB port is provided for FPGA programming and debugging. A USB cable is included with the board but those two items are the only thing in the box. All documentation, diagrams, samples and applications are found online. This includes Xilinx tools such as Chipscope and the EDK (embedded processor design kit) as well as the free WebPack version of Xilinx's ISE FPGA development suite.
There are two additional USB ports for use with the FPGA. The micro USB port is connected to an FTDA FT232 USB-UART bridge. The UART is connected to the FPGA via two pins. There is also a Type-A USB host socket linked to a Microchip PIC24. This provides the FPGA with a PS/2 mouse and keyboard input plus FPGA programming support. It is possible to plug a properly configured flash memory stick into the socket to program the FPGA.
Digilent's Atlys board (Fig. 6) has a Xilinx LX45 Spartan 6 FPGA along with a host of communications and multimedia interfaces. The 324-pin BGA Xilinx LX45 has 6,822 slices that contain four 6-input LUTs and eight flip-flops. It also has 58 DSP slices. The FPGA has 2.1 Mbits of block RAM and 4 clock tiles with 8 DCMs and 4 PLLs. It also has 6 phased-locked loops. The board runs the chip at 500 MHz.
The Atlys board works with the free WebPack version of Xilinx's ISE development suite. The latest version can be downloaded via the Internet. All of the support documentation from Digilent is available from their website. None is include in the box. The board also works with other Xilinx FPGA tools including ChipScope and the EDK used ofor software development when using soft cores like Xilinx's MicroBlaze.
The Atlys includes a 10/100/1000 Ethernet PHY connected to the FPGA's SERDES. The FPGA has four high speed SERDES and a PCI Express endpoint. The FPGA has two of its own USB interfaces. There is an Adept USB port that connects to the Spartan 6 JTAG port. The Adept interface can be used to program and debug the FPGA. There is also a JTAG header for use with an external JTAG emulator. A PIC24 is connected to a fourth USB host port connecte to a serial interface on the FPGA. The FPGA can be programmed through this port by simply plugging in an appropriately configured USB flash drive.
There are two HDMI input ports and two HDMI output ports. This allows the FPGA to manipulate HDMI data streams. It is linked to an AC-97 codec with line-in, line-out, microphone and headphone connections.
Off chip memory includes 128 Mbytes of 16-bit DDR2 RAM. A Quad SPI, 16 Mbyte serial flash is used to program the FPGA. A 100MHz CMOS oscillator drives the FPGA clock.
The system provides real time power monitoring for all power rails. The 68-pin VHDCI connector links to 48 FPGA I/O pins. There is also a 12-pin Pmod connector that works with Digilent and third party Pmod modules. Some of the FPGA I/O pins are connected to 8 LEDs, 6 buttons, and 8 slide switches.
In addition to the board, the box contains a 20W power supply and USB cable. As noted, all documentation, software and samples are found online. This includes the Digilent Atlys Adept programming tool. The application can also test the on-board peripherals.
The VmodCAM board has a high speed, 68-pin VHDCI connector that matches one found on all of Digilent FPGA boards. The board has a pair of Aptina MT9D112 2-megapixel CMOS digital image sensors. It can deliver frame rates of at least 15 frames/s (FPS). Lower resolutions allow higher frame rats. The 15 FPS rate is for the maximum camera resolution of 1600 by 1200 pixels with a 10-bit raw color depth. That's a bit more than standard VGA. Parallel output formats include RGB, YCrCb and Bayer.
The cameras are spaced 63mm apart. They support automatic exposure, gain, and white balance. The cameras are independently controlled via an I2C interface but will usually be used as a pair. The data stream can be configured in a number of ways including support for skipping or binning by rows and columns. The chips have an output FIFO easing data exchange timing.
The package also include cabling for the VHDCI connector allowing the cameras to be located a short distance from the FPGA boards. Software and circuit diagrams are available on Digilent's website.