Frequently Asked Questions


What is an FPGA?

An FPGA, or field-programmable-gate-array, is a type of programmable logic device. It consists of an array of interconnected logic cells that can be reconfigured by the user to emulate almost any digital function. It is a "blank slate" chip, upon which you can implement your own custom hardware designs! You can make your own custom CPU, or digital signal processor, or robot vision system… or whatever you can think up and design!

How is this different from a microcontroller?

Microcontrollers are based on fixed hardware. They contain a CPU with a defined architecture and set of possible instructions. A microcontroller is configured to do something useful by giving it a new list of instructions to follow. Put simply, you program a microcontroller by telling it what to do. With an FPGA, you instead tell it what to become. This gives the programmer a great deal of power and flexibility. For example, FPGAs can implement special-purpose-processors that are orders-of-magnitude faster than a microcontroller for a specific task, like signal processing or encryption. FPGAs are also extraordinarily flexible. For example, suppose you need to control a number of RC-style servos. Many microcontrollers contain dedicated output compare hardware capable of this, but they are limited in number and only available on specific pins. For example, the Freescale HCS12 microcontroller only has four 16-bit output capture channels. With an FPGA, you could put a 16-bit output compare channel on every I/O pin if you wanted to!


How do I write code for this thing?

FPGAs are programmed by describing hardware. This is typically done by writing in a hardware description language (HDL), such as VHDL or Verilog. These languages are syntactically similar to traditional procedural programming languages (like Ada and C, respectively) but do not be fooled; a structure is being described, not a process. (For example, a "for…loop" in a procedural language will result in a section of code that is executed multiple times, while a "for…loop" written in a hardware description language will yield a structure that is instantiated multiple times.) Good hardware design requires that you think differently, with an architect-like mindset. There is a bit of a learning curve at first, but hardware design can be immensely powerful.

How do I compile my code?

Your code must be synthesized in order to run on an FPGA. This process takes the abstract circuit description that you wrote in VHDL or Verilog, and translates it into a bitstream used to configure the FPGA. Xilinx offers a free software package called Xilinx ISE WebPACK for the Mercury board and the Xilinx Vivado WebPACK for the Mercury 2 board that allows you to synthesize your code into a bitstream file. (ISE and Vivado also have super helpful tools for simulating your design, and analyzing its structural and timing properties.)

How do I download and run my code on the board?

The Spartan-3A and Artix-7A FPGA's logic cells are RAM-based; at each power-on they are blank and must be configured.
There are two ways you can load your bitstream file into the FPGA:
1. Load your bitstream into Flash over USB using the Mercury Programmer utility or Mercury 2 Programmer utility. The flashing process takes about 2-30 seconds and your bitstream is persistent. Immediately after writing to the Flash chip, the FPGA will boot from it in about 200ms. After power cycling the board, the FPGA will simply boot again from Flash. This way, your design is persistent.
2. Load your bitstream FPGA directly using a Xilinx JTAG cable. This programming is not persistent; the FPGA will lose its configuration after power-cycling. JTAG access is necessary for some advanced debugging tools like ChipScope Pro.

What is the proper breadboard insertion/removal procedure?

When inserting or removing the Mercury or Mercury 2 module from a solderless breadboard, please ensure that the board is grasped by all four corners, as demonstrated in this picture. Keep the board level during insertion and removal, only applying force straight up or down. Failure to adhere to this procedure may result in bent or broken pins!

Orders & Shipping

What are the payment options?

On our main storefront, we accept all major credit cards, including VISA, MasterCard, American Express and Discover; servicing customers in the United States, Canada, Australia, and many European countries. Credit card payments are securely processed by Stripe.


On our Tindie storefront, we accept payment using PayPal, servicing customers in over 200 countries.


What are the shipping options?

United States Customers

Service Speed Cost Quantity Notes
USPS Priority Mail 1-3 days $6 1-2 boards Includes tracking
$14 3+ boards Includes tracking, signature confirmation, and insurance

International Customers

Service Speed Cost Quantity Notes
USPS First Class International 1-3 weeks (typical) $14 1-2 boards LIMITED TRACKING (SEE BELOW)
USPS Express International (EMS) 1-2 weeks (typical) $59 any Fully tracked and insured
FedEx International <1 week (typical) $99 any Fully tracked and insured
Faster customs clearance

Can I track my shipment?

All domestic (U.S.) packages are fully tracked.

International packages shipped via USPS Express International, FedEx or UPS are fully tracked.

International packages shipped via USPS First Class International are tracked as they travel within the United States. After that, tracking information depends on the postal service within the destination country. The following countries provide tracking via the E-USPS DELCON service, at no additional charge: Australia, Belgium, Brazil, Canada, Croatia, Denmark, Finland, France, Germany, Great Britain and Northern Ireland, Hungary, Israel, Italy, Luxembourg, Malta, Netherlands, New Zealand, Portugal, Spain and Switzerland. If your country is not on this list, your package is certainly still shippable, but be advised that tracking information may be limited!

Can you bill to a FedEx or UPS account number?

Yes, we can directly bill a specified UPS or FedEx shipping account, for U.S. and Canadian customers.

To bill your FedEx account, use the code "BILL-FEDEX" at checkout.
To bill your UPS account, use the code "BILL-UPS" at checkout.

You MUST specify in the comments section:
1) Your valid UPS or FedEx account number
2) Your desired shipping method (ground, priority, etc)

More notes about international shipping:

1. USPS First Class International shipments provide limited tracking and are not insured against loss!
2. You may be responsible for paying a customs tariff upon receiving merchandise imported into your country. Please note that this tariff is NOT included in the purchase price. If you fail to pay the tariff, your package may be returned back to us!
3. International shipments typically arrive within two weeks, but may take significantly longer if delayed by your country's customs service.
4. International shipping is done in accordance with U.S. export laws and regulations. We are prohibited from shipping to certain countries.


Do your products come with a warranty?

We take great pride in our products, and your satisfaction is our top priority! We guarantee our products to be free of manufacturing defects for 90 days from the date of purchase. We test each board thoroughly before shipping it to you, but if you believe your item has a manufacturing defect, please contact our engineering team to help diagnose and resolve the problem.

Help! I don't see my question here!

There are more materials available in the Resources section.
If you still need help, click here to contact our support team!