Nav:  [home][elec] > [pdev]
Go:  [USB-AtmelPrg] [AVR] [AVR32] [ARM] [CPLD]
← [What are these? Why?]

Programmable Devices

Introduction and Overview: Host, Cable, Device

(If you are into programmable devices already, you can safely skip this chapter.) In contrast to static fixed-function chips which normally don't give you much flexibility and are either not highly integrated (flip-flops, counters,...) or only available for certain special high-volume applications (USB FIFO,...), there are highly-integrated programmable ICs. These chips can be used to build circuits for very complex tasks with pretty few components, typically consume little power and can be made to completely change their function without touching the hardware on the board. Programmable devices play a vital role in hardware design -- from advanced hobbyist's projects to large-scale industrial applications.

In contrast to fixed-function chips which work out of the box, a programmable device typically has to be programmed before it will do anything useful. So, as a developer, you need a "host" computer and additional software and hardware tools to test and build your electronic gadgets.

Overview: Stepping back and looking at the grand total, what we have is:

  1. The host computer: This is where the programs are written and compiled before they are loaded onto the programmable device. We may also have a simulator and a debugger here. I'm using an i386-based box running Linux and freely available tools descibed in detail for each type of programmable device presented on my pages.
  2. The interface cable: This is what connects the host computer with the programmable device. Typically it's not a simple cable but has some additional circuits inside since it has to somehow connect a plug on the host computer (usually USB, or legacy serial or parallel port) with the programmable chip (usually JTAG or SPI interface). I'm using my self-developed universal "cable" called USB-AtmelPrg.
  3. The programmable device: This may be a microcontroller such as a member of the 8-bit AVR RISC family by Atmel or a 32-bit ARM core like the AT91SAM7 (also from Atmel). Or, this can also be a programmable logic device like a CPLD or an FPGA, e.g. to pick just one, a member of the XC9500 family from XILINX.

USB-AtmelPrg: Wolfgang's Universal Interface Cable

Programmer in blue translucent box [9kb]
[click to enlarge: 58kb JPG]

USB-AtmelPrg was originally a one-afternoon design for a USB-based Atmel AVR programming solution back in 2005 and this also explains how USB-AtmelPrg got its name. Since then, it has been extended to cover all host computer communication I need when designing with programmable devices.

Although USB-AtmelPrg is an interface cable for developers running Linux hosts, information in the following chapters dealing with the programmable ICs themselves is largely independent of the precise interface cable or host operating system. But of course, I typically include examples taken from my setup.

The USB-AtmelPrg page has much more details, contains software and the complete circuit diagrams for download.

Historic note: Before developing the USB-AtmelPrg cable, I used an interface cable plugged into the parallel port of the host computer. This cable was only used to program certain AVR microcontrollers and it is no longer maintained. If you are interested in this much simpler but less powerful solution, read more...

Programmable Devices: AVR, ARM, CPLD

These pages feature digital programmable devices which I have been working with. Follow the links to get detailed information on how these chips can be programmed using freely available tools.

  • AVR microcontrollers: 8-bit cheap but powerful microcontrollers with built-in SRAM, flash and EEPROM made by Atmel.
  • AVR32 microcontrollers: 32-bit power efficient and fairly fast microcontrollers made by Atmel. Focus is on those versions with built-in SRAM and flash (UC series).
  • AT91SAM7 ARMs: higly integrated 32-bit microcontrollers with build-in SRAM and flash made by Atmel. More on ARMs.
  • STM32 ARMs: excellent 32-bit Cortex-M microcontrollers with build-in SRAM and flash, lots of peripherals and the F4 series even has an FPU! More on ARMs.
  • CPLDs: Complex programmable logic devices; there are a lot of them on the market but I'm using the ones from XILINX since they also offer very good free software for Linux and Windows.

[home] [site map]
Valid HTML 4.01!
Copyright © 2003-2012 by Wolfgang Wieser
Last modified: 2012-04-08 18:16:05