The iCE40 FPGA family from Lattice Semiconductor comprises ultra-low-density (ULD) devices whose low-cost, small footprint, and extremely small power consumption makes them ideal for a tremendous range of handheld and battery-powered applications.
Applications for ultra-low-density devices include timing-critical high-end remote controls and point of sale (POS) scan guns and data terminals, I/O expansion tasks for space-limited systems (e.g., servers, storage, and communications), hardware acceleration for factory automation, image pre-processing, and displays (e.g., rotation and scaling), and bridging functions (e.g., video interfacing, processor glue logic, and image sensor bridges).
Now, Lattice has introduced the iCEstick Evaluation Kit. Boasting a "bargain basement" price of only $24.99, the iCEstick allows users to quickly and easily familiarize themselves with the capabilities of iCE40 FPGAs and facilitates the rapid prototyping of system functions.
The iCEstick is a USB thumb-drive form-factor evaluation board that is powered by, and programmed via, a standard USB port. One thing I personally like is the fact that as soon as you plug the iCEstick into a USB port, its default program causes the LEDs to start flashing in a circular fashion. In addition to providing instant feedback that everything is working as expected, who amongst us can deny the power of flashing LEDs? (Show me a flashing LED, and I'll show you a man entranced with delight.)
The iCE40 FPGAs are unusual in that they are SRAM-based, which allows them to be reprogrammed on the fly and/or loaded from an external device like an SPI Flash or a microcontroller. (Once again, everything about these devices -- including the SRAM configuration cells -- has been highly optimized to use the least possible amount of power.) However, they also boast one-time programmable (OTP) non-volatile configuration capability, which allows them to be pre-programmed and to run "instant-on" without requiring external configuration. For the purposes of this evaluation board, the vast majority of users will employ the on-board SPI Flash memory to store the configuration as illustrated below:
The USB chip is used to download new configurations from the host computer, and also to provide bidirectional communications with the host computer as discussed below. The iCE40 FPGA on the iCEstick boasts 1,280 x 4-input lookup tables (LUTs) of user-programmable fabric along with 64Kb of embedded RAM and a PLL, all of which allows you to implement a surprising amount of functionality.
Five on-board LEDs can be used to display all sorts of different information, plus the user has access to 16 general-purpose input/output (GPIO) pins. Of particular interest is the Pmod connector, which allows users to connect a wide variety of external sensors and actuators, ranging from microphones with digital interfaces to accelerometers to GPS receivers. (Click here to see the Pmod offerings from Digilent; other vendors like Analog Devices and Maxim also offer Pmod modules.)
Last but certainly not least, the iCEstick includes an IrDA (Infrared Data Association) transceiver. IrDA protocols are implemented in a range of portable devices, including mobile phones, laptops, cameras, printers, medical devices, and many more.
Of particular interest is that fact that the iCEstick is supported by a range of reference design demonstrations, each of which can form the starting point for the user's own design. In the case of the accelerometer demo, for example, a 3-axis accelerometer module is plugged into the Pmod connector. As the accelerometer is moved, the iCEstick's LEDs will indicate the direction of motion (north, south, east, and west).
In the case of the IrDA TX demo, the user opens a HyperTerminal window on the host computer. Now, whatever is typed on the keyboard will be transmitted via the IrDA and also echoed in uppercase characters in the HyperTerminal window. Taking things one step further, two iCEsticks can be used together (either plugged into two USB ports on the same computer or -- more usually -- plugged into USB ports on different computers). One iCEstick can be configured to be the transmitter and the other to be the receiver. Now, whatever is typed in the HyperTerminal window associated with the transmitting iCEstick will be displayed in the HyperTerminal window associated with the receiving iCEstick.
All in all, I think the iCEstick Evaluation Kit is amazing value for the price and -- in conjunction with the wide variety of Pmod sensors and actuators that are available -- it opens the door to some very interesting design evaluations and product prototyping scenarios. (Click here for more information.)