Review/Guide: ZTEX Spartan 6 module
The ZTEX USB FPGA Module 1.11 contains not only the Spartan 6 FPGA. It contains:
- Cypress CY7C68013A EZ-USB-Microcontroller
- Xilinx Spartan 6 XC6SLX9 to XC6SLX25 FPGA (I’ve got the XC6SLX25)
- 64 MByte DDR SDRAM
- MicroSD socket
- 128 Kbit EEPROM memory
- 48MHz Clock for the FPGA (going out from the Cypress)
The first impression of the board is a nice design, it looks good and it feels good. The second great thing about the board, is that almost every pin on the FPGA has been brought out, and even also some of the Cypress microcontroller pins. It is also possible to customize the Cypress microcontroller firmware. There are also some connections between the FPGA and the Cypress microcontroller, which makes it possible to develop applications that uses both the FPGA and the Cypress microcontroller.
As the Cypress microntroller has a USB capability, it is also used to upload designs to the FPGA, but it can also be used in your own applications.
When I first got the board it was kind of difficult getting started. Though the ZTEX website contains a lot of documents, schematics and layout, and they have a nice Wiki, I kind of missed an easy “Getting Started” guide.
But after reading the Wiki a couple of times, I downloaded their Firmware/SDK package and got their FWLoader running. The FWLoader is a Java application used to communicate with the Onboard Cypress microcontroller over USB.
To communicate with the Cypress microcontroller, you can use their FWLoader, found in their ZTEX EZ-USB SDK. To begin with, you have to upload the firmware for the Cypress microcontroller, which takes care of programming the FPGA. To do so, you have to copy “standalone.ihx” to the java folder (inside the SDK), and then afterwards execute the following command.
After executing this command, it was now possible to communicate with the Cypress microcontroller using the commands explained on their FWLoader Wiki page. I was able to upload my first bitfile to the FPGA using the following command.
In the video above you can see my first experience with the board, getting a couple of LEDs to blink. I’ve used the 48MHz Clock, prescaled it, and made a simple counter – it worked
So in total, it wasn’t that difficult to get it running. The things that was difficult, was figuring out how their FWLoader worked, and how I should upload new designs. Though their Wiki was a great help!
As the Spartan 6 has a lot of power, I am sure that this will be a well-used board, and I can already imagine getting the LatticeMico32, a 32-bit open soft core processor, to work on this.