When I hear the word "hello", my mind immediately thinks of three things - the greeting "hello", the first program one would probably write - "Hello, world!" and perhaps the Japanese fictional character, "Hello Kitty".
Perhaps now, I can add one more to the list - the Microchip Hello FPGA Kit. As part of my participation in the element14 Community, I took the FPGA Developer Quiz and thought nothing of it. A few weeks afterwards, I received a message from danzima asking me for my mailing address. That could only mean one thing - I was going to receive a surprise package. After another few weeks, it arrives and I get my chance to say hello to the kit - this is my quick "first impressions" review.
The first impression is a glossy, bold and sharp one. Perhaps the prettiest evaluation kit I've seen, this one has a very contrasty red, black and white colour scheme. Clearly branded Microchip, in spite of the Microsemi heritage, this product seems to be proudly Made in the USA. Despite the Microchip website seemingly claiming the kit can be "reserved now", it is actually openly available for purchase through various electronics distributors , although the price isn't exactly what I'd call inexpensive at above AU$200.
Inside, there is a quick start guide and a dense foam carrier holding the USB-A to mini-B cable and evaluation kit. The price is partly explained as the kit has a colour LCD screen ...
... as well as a VGA camera and manually focused lens. Nice touch on the branding silkscreen with the red logo - not common to see multi-coloured silkscreen. A mikroBUS connection for Click boards can be seen as well.
The LCD is protected by a protective film which should be removed before testing as it has a red stripe on the film. The PCB silkscreen implies this board was made in Week 10 of 2020. The board has a few debug push-buttons and LEDs, header for JTAG prgramming and for a PICKIT programmer. The unit is a "stack" of three PCBs which are quite tight and originally a little crooked. Because of the multitude of boards, I didn't dare separating them until I had run the demonstrations. One key issue seems to be the LCD flex connector which is actually exerting pressure, lifting the panel out of the plastic backlight frame. A bit of careful flexing of the lead allowed the glass LCD panel to sit back down into its frame.
Following the quick-start guide to run the demonstration requires visiting the website and accessing the resources section to download the GUI (at a minimum). Further documentation is available, including brochures, schematics and the Libero projects for the demonstrations. In order to develop for the board, the IDE and SoC suite also needs to be downloaded from a separate page, about 9.5GiB of downloads.
I found this process could be much improved. It seems they are transitioning from legacy Microsemi website infrastructure to a new website, but the current system requires a sign-up and the submission of user details in plain insecure HTTP. This is considered unacceptable in the modern world. In spite of this, my desire to try the demo got the better of me, so I ended up signing up despite the security risk this posed.
The GUI runs on Windows only as far as I can tell and is built on National Instruments LabVIEW. It communicates with the board over a serial COM port. The Libero suite free Silver license is apparently available for this evaluation board, but I have not yet obtained the license as it is only valid for one year. This is a bit unfortunate, since one year is not much time for a hobbyist or relative novice to explore and obtain the maximum out of a given product, especially if they're lacking in time. In the past, I have had experience with FPGA IDEs from other vendors which support some lower-end devices without any time restrictions, which I feel is a better way.
Plugging the board into the USB port, I was pleasantly surprised to see the LCD come up with the Microchip logo and an image of the area underneath the LCD screen which is quite "cute". Unfortunately, I also noticed a subtle bug in this - see how there is a 3/4 line of garbage at the bottom - I suspect this demo has a bit of a coding issue resulting in the image being partly offset. But it does demonstrate one benefit of newer FPGAs with non-volatile memory - they start up virtually immediately and don't need to incur a programming delay on start-up.
This particular demonstration is actually the first one - the digital signal processing demo which requests the FPGA to generate a challenge signal or sweep, filtered by a DSP filter also generated by the application and implemented in the FPGA, plotting the response.
As far as demonstrations go, this first demonstration is a little underwhelming as the filter is very simple and there really isn't any way to test it based on a dynamic input. While the demonstration does provide a power figure, there seems to be no convenient way to actually measure this.
Programming the other demonstrations were fairly simple - just select the relevant .dat file which is included with the GUI bundle and use the Run button to program it to the board. Programming does take a while as there are multiple components to process, then the board has to be cycled to ensure it operates correctly.
The second demonstration is a simple video processing demonstration which allows for slider control of brightness, contrast and colour levels. While this was more exciting as there is something to see and play with, functionally it did not seem all that complex to me as it is a mixture of mathematical operations (scaling, interpolation). But if there was something I noticed, it was diagonal tearing of the image on the LCD as if things were not well synchronised between the camera and LCD. Whenever the camera was panned, a clear diagonal tear line was visible on the LCD. Perhaps this is because processing is not done based on having a full frame-buffer and instead done live on dual-ported RAM? The demonstration also had a habit of going "green" when areas of the image were overexposed. This isn't what I'd expect to see from a real product.
The third demonstration was the one I really wanted to try. This one uses a convolutional neural network trained on the MNIST database to perform handwritten digit recognition in real-time from the camera. This implementation has ten classifiers, always outputting a digit of highest probability. The use of FPGAs to accelerate AI tasks is a growing area of interest and the power usage indicated (0.2W) is quite efficient at first glance. I tried it with the on-screen digits, manually focusing the camera to try and get the sharpest image but also trying to avoid moire. The results were mixed.
So I decided to challenge it, by drawing digits on paper by hand with a gel pen (missing out zero). The results were not that encouraging ... perhaps the model was too simple to reduce resource and power utilisation at a cost to accuracy.
It seems there's a bit of a preference for 2 and 3 ... only 2, 3, 8 were correctly identified from my sequence of 1-9.
The demonstration software also has the ability to demonstrate the "Flash Freeze" function which suspends operation of the FPGA to reduce power consumption with rapid exit. It seems that the stated exit time is indeed quite fast at 13.3us and the power consumption in frozen mode is about 40mW, while being close to 210mW while operating using the CNN demo. Rapidly exiting and entering the flash-freeze mode can lead to some errors where the demo falls out-of-sync with the actual board state.
Separating the Stack
Having run the provided demonstrations, I decided to embark on separating the stack to get a view of the insides. This took some careful prying to avoid snapping or bending any connectors. It took a bit more force than I would have liked, but I managed in the end - those Samtec connectors grip really well!
The back-side of the LCD and camera boards don't have much to show ... but the main board is perhaps the more interesting one with regards to potential reuse.
This board also explains why the kit is a bit on the pricey end. While it has the promised Microchip (Microsemi) SmartFusion 2 M2S010 VFG256 FPGA (Made in Korea), it also has a Microchip PIC32 PIC32MX795F512L-80I/PF microcontroller which I did not expect, but perhaps its main function is just to act as a programmer and interface to the FPGA. It features a Microchip MCP2221A USB to Serial adapter which is how it talks to the computer, Micron Technology MT41K1G8RKB-107 8Gbit DDR3 SDRAM and a Microchip 26F064B 64Mbit SPI Flash. Perhaps one downside is the use of a rather antiquated mini-B connector - a USB-C connector (or micro-B) would be more contemporary.
Looking up the documentation for the SmartFusion 2 shows that it's quite an interesting FPGA. Aside from the eNVM, eSRAM and Flash Freeze features, it also has an embedded ARM Cortex-M3 core running at 166MHz which seems quite appealing for many applications as microcontrollers are perhaps more comfortable to many developers and the use of FPGA may be reserved to accelerate operations which benefit from the highly-parallel nature of the FPGA or can benefit from the ability to implement functions in hardware. I was aware of the Xilinx ZynQ SoCs, but I wasn't aware that there were other "hybrid" solutions out there.
Thanks to element14 and Microchip for this surprise "hello". It was fun to have something to unpack and try, with the kit having a few more parts than the average kit, including a camera, LCD screen, FPGA, PIC32 microcontroller, DDR3 RAM, USB to UART controller and SPI Flash to name the major components. The demonstrations were relatively easy to launch, although they were not always entirely engaging or well polished - the DSP demonstration was very static and had some image corruption on the LCD, the video processing demonstration showed tearing and green colour casts on overexposure and the CNN digit recognition functioned poorly in terms of accuracy. The Flash Freeze feature seems to be unique and can bring the FPGA into a suspended state using lower power and resume very rapidly which could be useful in some circumstances, but overall power consumption didn't seem that high for what it was doing and the non-volatile nature meant that it started up quickly.
The sign-up process to access the downloads was through insecure HTTP which is a big security issue. The design of the board made it difficult to unmate the boards, which could result in damage if it is separated without care (to boards or to hands). It was not assembled perfectly planar either, possibly in part due to the strength of the connectors. The use of the relatively antiquated mini-B connection is also not ideal. The design also resulted in stress transferring to the LCD through the flexible cable, resulting in the glass panel lifting out of the backlight assembly which could lead to damage.
The Microchip Hello FPGA Kit may have a lot more to offer assuming that one is proficient enough to design their own FPGA design in the Libero SoC/IDE suite, although the nature of the one-year Silver license does seem to be unnecessarily restrictive. A quick glance shows that there are a few IP cores available in obfuscated form which may help implementation, but I'm unsure how it compares with other vendors as I've been away from developing with FPGAs for almost a decade. The offer of an Arduino Uno compatible footprint and a mikroBUS footprint on the camera board does suggest that it was designed with flexibility for evaluating with other hardware in mind. The landscape has definitely changed in the intervening years, and if I ever find the time to devote to developing for this particular FPGA, you'll probably see it in a follow-up posting. But at this time, as I've never been busier, I'll hold off on activating that Silver license ...