A couple of weeks ago I attended a very interesting workshop. Hosted by Avnet Memec and Actel at my local Avnet office, this one-day workshop gave me hands-on experience working with Actel's SmartFusion mixed-signal FPGAs and tools...
I wish I'd gone to one of the early workshops, because they've been holding them all over the USA and I would have had more time to tell you about them. Now there are just three workshops remaining in this series: Montreal, Canada (09/14/10); Ottawa, Canada (09/16/10); and Toronto, Canada (09/23/10).
(Click Here for more details as to event locations and dates; Click Here for more information and registration).
This really is a rather good deal. For only US$50 we got breakfast (of the muffin variety – no bacon [sob sob]) and lunch in the form of a rather good deli sandwich and accoutrements, plus all the coffee we could drink (and I can drink a lot of coffee). Also we each received a SmartFusion Evaluation Kit, which normally costs $99.
As you may recall, SmartFusion FPGAs contain programmable digital fabric, programmable analog fabric, and a hard-core ARM Cortex-M3 microcontroller with all the trimmings (peripherals and communications functions). The Cortex-M3 is the equivalent of about 10 million equivalent logic gates, so it's quite a powerful beast. One good point is that you can use the GUI to easily disable any of the microcontroller peripherals you don’t require (just right-mouse-click and turn them off), thereby saving power.
The SmartFusion Evaluation Kit
In addition to lots of techno-weenie details in the form of PowerPoint presentations, the training included three hands-on labs. In the first lab we focused on the microcontroller; in the second lab we brought in the programmable digital fabric (to some limited extent); and in the third lab we started to bring in the programmable analog fabric.
The whole day was very informative and useful and I learned a lot. If I could have made any changes, however, I would have liked to see a little more "depth" with regard to the programmable digital fabric lab. In fact, thinking about it now with the benefit of hindsight (the one exact science), all three labs were pretty much self-contained. If I were running this course, I might be tempted to link all of the labs together. For example, start off using the microcontroller to implement some simple algorithm to flash the LEDs or whatever in Lab #1; then in Lab #2 replace a function like a counter/timer in the microcontroller with an equivalent in the digital fabric; and finally in Lab #3 augment our example design using the programmable analog fabric to monitor an analog input and feed the data to the microcontroller and use it to vary our original algorithm.
The local Avnet office where I attended the training course.
But, of course, it's easy to be a critic after the fact. It might be that doing it my way would make things over-complicated for an introductory workshop.
One other thing that would be useful would be the equivalent of an "Easy" button. Let me explain. A couple of years ago I purchased a digital camcorder containing a hard disk drive that could store 10 hours of digital video. This thing had enough buttons and widgets to fly a Space Shuttle – I could have spent the rest of my life learning how to use it – but it also had an "Easy" button. When you pressed the "Easy" button it basically turned all of the other buttons off and did everything automatically – all you had to do was control the Start, Stop, and Zoom functions.
Similarly, in the case of Actel's design software, there are a tremendous number of features and capabilities and – even though they've obviously taken a lot of effort to make it intuitive and easy to use – there is a heck of a lot to learn. Now, I don’t mind this so much, but let's suppose that I've already gone through all of the nitty-gritty steps required to get the first pass of my design up and running. Now I decide to make a minor "tweak" to my C program that will be running on the Cortex-M3 microcontroller. Currently I then have to progress the modified design step-by-painful-step to get it into the FPGA on the evaluation board. It would be great if – after editing my code – I could just click an "Easy" button that would automatically run all of the steps required to compile my modified design and load it into the FPGA.
In summary, I have to say that this was a very valuable day's training. I also have to say that there's a bit of a learning curve associated with using Actel's SmartFusion mixed-signal FPGAs and design tools. I really shouldn’t be surprised by this. When you think about it it's hard enough to learn to work with a purely digital FPGA the first time you're exposed to one. In the case of SmartFusion, you're learning how to program a microcontroller, how to program digital FPGA fabric, and how to configure programmable analog fabric ... all at the same time.
The bottom line is that it's going to take some time to become proficient with these little rascals ... on the upside, once you are proficient you'll be able to do an amazing number of tasks and implement all sorts of clever functionality using a single, affordable device. I have to say that I am a fan of these little scamps.