FPGAs

 

 New information: ByteBlasterMV compatible cable

HOW TO get started with FPGAs and not spend a bundle

------------------------------------------------------------------------

News(2008/10/14): Have a look at Re-Package (soon to launch a series of new products). The plan is to make a very small board, with e.g. a Altera 1C3 FPGA on, to be used

as either a development board and even in production. The starter pack will include a target board (with config EPROM, oscillator and JTAG,

 that will fit on a standard breadboard or Veroboard), a ByteBlasterMV compatible programming cable and a DVD with the free webpack code and examples. 

 

------------------------------------------------------------------------

 

 

What is a FPGA?  FPGAs are very versatile devices. You can basically design your own microchip without spending an arm and twenty legs. FPGAs (Field Programmable Gate Arrays) falls into the class of programmable logic devices (of which there are many). The device contains a matrix of logic cells that can be internally reconfigured and then again connected to each other and also connected to the I/O pins.

What can you do with a FPGA?  Basically any digital circuit can be implemented. You can flash LEDs, create address decoders, implement CPUs (with custom instructions), perform video functions, high speed codecs, test equipment like logic analysers etc... You are limited only by your mind.

Why use FPGAs at all? One word: Flexibility. If you suddenly have to implement a FIFO design for a UART, invert a bit or design a concept that does not exist then a FPGA is the solution. If you eventually require large quantities you can even hard-copy (Altera) them. What about multiple CPUs on one chip or high speed media converters like USB2 to 100mBit/s Ethernet?

What you cannot do with FPGAs: Currently there are a few analog programmable chips in development but basically nothing mainstream. FPGAs are digital. If you require analog I/O then it must first be converted.

Where FPGAs don't really fit in: FPGAs are way cheaper than having a chip designed and having the minimum quantity manufactured BUT you won't find them in mainstream toys and mass produced products. Some of these products may have followed the FPGA development path but they seldom end up in your DVD player.

What types of FPGAs do you get? I specialize in Altera which produce mainly SRAM based devices. This means that each programmable joint is controlled by a static RAM cell that keeps that state while the device is powered. As soon as the power is cycled the configuration must be loaded again. This is typically done with a configuration EPROM. The drawback is that the EPROM can be copied. Other manufacturers include Xilinx and Atmel. An older FPGA technology type is 'anti-fuse'. All the connections are made and the ones you don't want is burnt away. This is unfortunately a permanent change and becomes costly if you don't know what you are doing. An increasingly popular technology is the use of Flash memory to configure the FPGA. This eliminates the configuration EPROM and makes it very difficult to program. Actel is currently a major supplier of Flash based FPGAs. Other technologies include laser trimming. The silicon manufacturer basically has something similar to the 'anti-fuse' technology that is fused by laser. The development cycle is more costly but the production becomes a lot cheaper.

What tools do you need? You need to describe the logic to perform the function. You can be brave and write your own software that takes into account the structure of the device and then try to make something useful of it, but rather use tried and tested methods. Most software development tools allows you to enter the design on a schematic level and this is used often but you will find that your mind will get fried with increasingly difficult requirements. For better control languages have been developed to aid in the design. These include VHDL (Very High Speed Integrated Circuit Hardware Definition Language), Verilog and ABEL. Altera has their own flavour named AHDL (which , because it is native, produces smaller designs). Many times you will want to see if your design has a hope of working. You can either test it on the device or run it through a simulator. There are various flavours of simulators of which the most basic ones are usually supplied with the software development software.Then you need a programming device. Altera's lower end programming cables are called ByteBlaster and come in various versions. There are other, more expensive programming devices but generally not something you will need when you are at the entry level of this technology.

What do you need to get started? You will need the software tool for your target and a programming cable. Your target will require the FPGA and configuration device as minimum (plus a power supply that can power the board). Many times you will need all the interfaces needed, like serial or video and devices like RAM and FLASH (for CPU functions). There are many manufacturers out there that produces development boards, like Zerksus.

So why doesn't every second electronics enthusiast design with FPGAs??? Maybe I should write a book called:"FPGA, my problem child".  Things that you should know: (1) SRAM FPGAs require lots of start-up current. (2) Many modern FPGAs require more than one power supply voltage. (3) You require complicated and expensive software (free software for entry level is available). (4) You need programming tools. (5) Very few people are capable of soldering FPGAs at home. (6) Many suppliers supply them in ridiculous minimum order quantities. So by the time you eventually do this all yourself you have spent a bundle, have not created a new design and probably killed the chip while doing your own soldering job.

HOW TO get started with FPGAs and not spend a bundle: 

(1) First thing is to get free software. You can download this (huge download)  but rather buy an inexpensive CD with the correct version.

(2) Get a cheap programming tool that can do the job well. You can build this yourself but I would suggest checking out our website.

(3) Get a tried and tested FPGA development board. You don't want to sit and wonder about the specialized function pins and probably kill you chip at the first power up.

(4) Get a tried and tested power supply for your board. Some of our FPGA boards have integrated power supplies- just add 12V.

(5) Get tried and tested software examples to get your 'Hello World' experience going.

 

How to progress with your FPGA designs and make money:

(1) Avoid having to manufacture your own boards. Let the experts do this for you. Let someone like Zerksus provide you with the tested boards.

(2) If you want to make your own boards then: Avoid having to source difficult to get components like 3V3 oscillators and memory. We keep stock of standard which means that you don't have to buy in minimum order quantities of 100s.

(3) Buy the FPGAs that we buy. It is never fun finding out that your choice of FPGA is only available in 12 weeks and then only in large quantities.

(4) Best of all: Using the same board for many different designs. You will save bundles and reach you market in a fraction of the time.

 

Who can use FPGAs? Although the technology seems to be more suited for MIT qualified geeks, hidden away in high tech labs, I have found that the not-so-called-bright amateurs find it very easy to work with. So long as the boring electronic and circuit board schlep is taken care of it turns more into a software exercise than hardware. In fact, if you can vaguely understand and implement a PIC microcontroller, you should find the basics very easy to understand. Plus, if you operate in 'rocket scientist' mode, you can create earth shattering creations.

 

What Zerksus plans to do: Currently we have many custom designs. In the next few weeks we plan to produce a very simple development board and software CD. This should be available middle of February for order. Details will be posted soon. We will also have a ByteBlasterMV compatible cable available by end of February. On demand we can also order ByteBlasterII compatible cables from a local SA supplier. These are a fraction of the cost Altera charges. The ByteBlasterII is required to program the EPCS configuration devices directly. There is a new method available to program the devices directly, via the JTAG port, with the cheaper ByteBlasterMV cable.

 

Here is something that I worked on just last night. It is a design based on a Cyclone I  1C3 (+- 75 000 gate) device, 128kByte SRAM, 1MB Flash, 32kb EEPROM, watchdog timer and 2 high speed RS422 channels (230kbit/s and 921kbit/s). The FPGA code design consists of a NIOS II economy  soft-core CPU, memory controllers, watchdog control (VHDL), 2 normal serial ports and 1 serial port with a 256 byte up and down FIFO for sustained 921600 baud bidirectional comms (VHDL) (BTW. The high speed UART kills a 2GHz Windows PC :-)

 

The external clock speed is 20MHz. This is provided by the small SMD oscillator at the top. Internally the clock is multiplied to get 40MHz (CPU clock) and 130MHz (for the high speed UART). There are various connectors on the board. The left and right headers interfaces to the mother board and provided all the I/O required for the system. The lower left connector is for diagnostics and software upload. The JTAG to the right is for FPGA development and is used to upload the SOF file. The connector at the top is for the Async interface to program the EPCS1 configuration serial EPROM (probably not included in future development boards). Note that the power supply is not part of this board. It is located on the mother board (not shown).

BTW. the PCB is double sided and not an expensive multi-layered type. The FPGA was designed to have its pins very close to the required destinations. Try that with an off the shelf 144 pin device :-)

 

 Like everything on this site it is work in progress. If you have any queries feel free to email to info@zerksus.com