Does anyone else immediately grab an FPGA evaluation board when they need to prototype something?
With the growing availability of expansion boards, like
the FPGA Mezzanine Card (FMC), it is easier than ever to create a target hardware platform on which you can begin development. The FMC standard (available here), allows up to 20 high-speed differential pairs supporting 10 Gbps signaling, four
differential clocks supporting 2 GHz signaling, 80 differential I/O or 160 single-ended I/O, user selectable I/O voltage standards, and Intelligent Platform
Management Interface (IPMI) programming and card information. Now FMC is primarily targeted at networking, but there are also cards for AD/DA conversion,
serial connectivity, and image processing. You can find just about any interface you need. If you can't, it's easy to create an add-on card from the FMC
Worried about prototyping a design that also needs an MCU? The newest generation of FPGAs seems to be converging on ARM as the processor of choice. If you
are comfortable with ARM as a target processor (who isn't these days!) you can prototype much of your code using the FPGA and then port to an MCU later (or
just continue using the FPGA as a production vehicle if unit requirements are in the low to mid range). ARM even has a common middle-ware platform that you
can use to decouple some of the hardware implementation details of peripherals and such so code migration is easier.
Well, this might sound good, but maybe you're thinking: "Don't I need to know all about FPGAs to do this? I'm an MCU expert, not an FPGA guru." You are in
luck. The FPGA vendors are targeting designer just like you! They all have an easy to use Architecture GUI that guides you thru the process of defining the
MCU you want to target. Have a specific ARM-based MCU in mind? Just define the peripherals and other architectural features using drop down and guided
selection processes. Press a button and you have a target MCU with example code, drivers and even ARM compatible APIs. Wow!
OK. Fine. But maybe you are now thinking: "But I want to use my existing MCU software development environment! I bet I can't do that." You would likely
lose that bet. Most of the FPGA tool flows allow popular MCU development environments (like IAR or Keil) to "hook-in" to their flow. You will need to learn
a new project management tool to manage the overall process but that is fairly painless.
"How about RTOS, OS, Middleware, and other 'canned' code. I don't want to reinvent the wheel!" Remember we are talking ARM here. That means you can access
the entire ARM ecosystem of pre-build functions, drivers, RTOS, Middleware, and debugging capabilities. Some vendors even have advanced profiling tools to
help with performance and power management.