Given the range of digital and analog interfaces available, just about anything can be a microcontroller peripheral. However, most devices for storage, displays, and communication tend to use standard interfaces, such as Serial ATA (SATA) or USB. In general, microcontrollers rarely address all of these interfaces. Knowing what devices and interfaces are available is half the job of choosing a microcontroller platform.
SOFT PERIPHERAL INTERFACES
Typically, microcontrollers implement standard peripheral interfaces using fixed logic. Others, like Innovasic Semiconductor's fido1100 (see "Fido Teaches Old Dogs New Tricks" at www.electronicdesign.com, ED Online 16005) and Freescale's PowerQUICC (see "Full-Throttle PowerQUICC Engine Revs Up Communication," ED Online 10123), employ programmable engines to provide flexible interfaces. The fido1100 incorporates a Universal IO Controller (UIC) that handles a range of interfaces, including Ethernet. The PowerQUICC uses the QUICC (QUad Integrated Communications Controller) platform.
Moving to the extreme end are peripheral interfaces implemented completely in software. The latest chips to take this approach include the XMOS XCore (see "Multicore And Soft Peripherals Target Multimedia Applications," p. 62), the Parallax Propeller (see "Parallax Propeller," ED Online 13329), and the IntellaSys SeaForth-24 (see "Cores That Share Chores," ED Online 12692). The XCore can implement multiple Ethernet interfaces, while the Propeller drives external displays directly. The SeaForth chip can be found in wireless applications.
Of course, the tradeoff is headroom. Each "soft" or "virtual" peripheral interface gobbles up processing resources. Still, the soft approach allows for field upgrades, more flexible interface options, and the ability to put peripheral control in the hands of the developer instead of the chip designer.
The most dynamic microcontroller peripheral area is storage (Fig. 1 and Tables 1A and 1B). Peripherals usually fall into one of three categories: solid-state memory, magnetic storage, and optical storage. Standard interfaces like Parallel ATA (PATA) and SATA span all of these devices. But the choice of which interface to use is more complex, due to a range of options like the microcontroller involved and capacity, as well as weight, power, and space restrictions.
Deeply embedded applications often use non-removable storage and low-end interfaces like I2C or SPI (serial peripheral interface) to access serial EEPROM. Flash memory also turns up in these environments, and its falling price and growing capacity have pushed it to the forefront for many projects replacing magnetic media. This is readily apparent in the mobile multimedia space.
One interface that stands out in particular is USB, since its applicability spans almost all types of peripherals, including storage. Embedded USB flash storage devices come in the typical USB flash memory-stick format. Likewise, USB display and communication devices can be had rather easily.
Higher-performance storage has utilized PATA, but SATA and its cousin SAS (Serial Attached SCSI) currently dominate. The tide is even turning in optical drives, as more SATA-capable drives become available.
The PATA/SATA decision is one of the more difficult choices for designers because of the significant jump in chip performance to reach the gigabit speeds used with SATA. This will often limit its use to higher-performance systems. It also provides an opening for using USB for storage, because even 8bit micros can handle USB (though throughput can be an issue at the low end of the microcontroller spectrum).
If it's mobile, then it's likely to have an LCD (Fig. 2, and Tables 2A and 2B). Embedded LCDs with less than QVGA (320 by 240) resolution typically can be driven directly from microcontrollers designed with LCD support, like NEC's 78K0/Lx3 line of 8-bit microcontrollers or Microchip's PIC1x lines. These chips can drive hundreds of lines for matrix graphics or segmented character displays.
Things get a bit more complex when moving to higher-resolution displays. Here, interfaces range from the venerable VGA to HDTV's HDMI (High-Definition Multimedia Interface). DVI (Digital Visual Interface) is the most popular for LCD displays, but most displays support a range of interfaces.
Unlike the matrix and segment LCDs, most display interfaces are found on dedicated graphics chips instead of embedded in microcontrollers. Many times, this is attributed to the additional support found in these graphics controllers, such as 2D/3D acceleration, MPEG-2/4 encoding and decoding support, and the high-performance digital-to-analog converters (DACs) used for analog displays.
Due to bandwidth requirements, display chips often are linked to a microcontroller via high-performance interfaces, such as PCI or PCI Express (PCIe). Other alternatives include USB links like DisplayLink's (formally Newnham Research) DL-160 (see "USB Branches Out," ED Online ID 12508). This type of interface is very handy given the hot-pluggability of USB and the general availability of USB-based microcontrollers.
By utilizing these standard interfaces with external support, devices can handle a wide range of peripherals, from plasma displays to projection systems.
Many embedded devices operate standalone. But these days, they tend to be linked to other devices (Fig. 3). Low-speed serial interfaces like I2C or SPI have already been mentioned for links to storage elements. They also can be used for various applications, including small networks of devices or even other communication devices like Ethernet or ZigBee modules.
Microcontrollers often have these network interfaces built in. Even some 8-bit microcontrollers incorporate 10Mbit/s Ethernet interfaces. Yet higher-speed interfaces, such as PCI Express and Serial RapidIO (SRIO), are only found on higher-end microcontrollers and DSPs because of the performance requirements to support the interfaces. Likewise, the throughput delivered by these interfaces would swamp low-end microcontrollers.
Of all the high-speed communication interfaces available, InfiniBand has yet to be placed into a microcontroller. The typical interface to an InfiniBand end node interface is now PCI Express.
VIRTUALIZING PCI EXPRESS
Virtualization is becoming an issue with 64-bit microcontrollers. In this instance, virtual refers to virtual machine management (VMM) versus the virtual or soft peripheral interfaces mentioned earlier. The x86 architectures from Intel and AMD tend to be driving this effort, and the support is showing up in high-end Ethernet adapters.
In this case, a physical peripheral like an Ethernet adapter will appear to be a logical device directly accessible by an operating system running on a virtual machine (VM). Normally, the VMM hypervisor would have access to the adapter and present a virtual device to the VM preventing direct access to the device.
The new virtual I/O interface requires an adapter that essentially replicates its interface so each VM using the device will have direct access, eliminating the overhead of the simulated hypervisor device interface. These adapters often present four to 16 logical interfaces.
Systems that run more VMs than available logical interfaces can use one or more of these interfaces to provide hypervisor simulated device interfaces to the remaining VMs with the added overhead this incurs.
Virtual I/O is unlikely to move down to lower-end devices because the microcontroller must support a VMM. Some 32-bit microcontrollers have this support, but typically in a more limited fashion than the 64-bit platforms. Likewise, these smaller systems target embedded applications where developers have control over devices.
Storage, display, and communication aren't the only peripherals that microcontrollers will access these days. Digital video cameras, biorecognition devices like fingerprint scanners, and capacitive touch sensors are just a few of the peripherals supported by built-in microcontroller interfaces.