Hello, everybody. I don't know about you, but I'm new to the world of programmable logic. I have a fair amount of experience with microcontrollers -- mostly Microchip PIC processors, but I also have experience with AVR, ARM, and MSP430 processors. I use them on my motor controllers and robot projects, which is all well and good until I run out of power or flexibility. Some things just need more oomph than a little MCU has to offer.
The ARM Cortex-M0-based microcontroller that I've recently started using has six PWM (pulse width modulation) outputs. That will get me a long way on a simple robot -- two motors and four actuators of some sort -- but what if I want several articulating arms, each needing four or five servos? I could add another MCU for each arm, or I could dive into the world of field-programmable gate arrays (FPGAs).
From what I understand, many FPGAs have soft processors available that could, within the same chip, have access to whatever custom set of peripherals I might want and be able to design out of the programmable logic cells.
To get me started on the path to "FPGA goodness," Xilinx (sponsor of this site) has generously offered to provide me with one of its development boards: an Avnet Spartan-6 LX9 MicroBoard, which is based on the Spartan-6 XC6SLX9-2CSG324C FPGA.
The Avnet Spartan-6 LX9 FPGA MicroBoard.
Since I am a programmable logic rookie, I'll be starting from scratch. With the development board on the way, I need to start looking at programming software, which would be VHDL, Verilog, or both. I've heard of those two labels before, but I have no idea what they do or how. I understand the concept of regular programming languages like C, C++, Pascal, and ASM. But VHDL and Verilog are described as hardware description languages (HDLs). My brain says that hardware is hardware, and it doesn’t change. With an FPGA, it can change, but at this stage, this is very hard for me to understand.
I'm also going to need to dig into the deep recesses of my brain and refresh my basic digital logic skills. The last time I designed anything using more than two or three 7400-series chips was back in the late 1980s.
My objective with this series of columns is to explore the transition zone between microcontrollers and programmable logic. I’ve gone from eight-bit MCUs up to 32-bit in order to add capability to my robots. I'm expecting the jump to FPGAs to open up whole new worlds to my robot adventures.
For those of you who (like me) are new to this brave new world, I invite you to purchase one of the Spartan-6 LX9 MicroBoards ($89 at Avnet Express; part No. AES-S6MB-LX9-G) and learn alongside me. In addition to my columns, I'll be posting sample code as I experiment with the different features of the chip and board.
For those of you who are already experienced in this area, I'd like to know how you came to add FPGAs to your utility belt. Did you start as an FPGA person, or did you learn them later in your career? And what were some of the biggest pitfalls you encountered?