Boards and Systems

Boards and Systems
A system can exist today on a single chip - but it still requires power, connectors and external memory. Usually systems consist of a lot more than this, of course, and a full system design can be multiple PCBs connected through a suitable backplane.

System Design
A large part of modern system design takes place at the definition level. This is where bus and I/O standards are typically chosen along with the system processor (if there is one), which will likely define memory requirements and may drive the use of particular standards. For example, modern Intel processors are likely to include the PCIe bus whereas AMD parts commonly include a Hypertransport interface. Once these decisions have been made, a number of Application Specific Standard Products (ASSPs) are available to implement the majority of the functions required. Each vendor has their positives and negatives: features available, price points and support levels that can be obtained.

A common complaint is that some vendors will only support major customers and smaller firms find it very difficult to get the level of technical information they require to do a design. In defense of the semiconductor manufacturers, they have limited resources and want to spend them where they achieve the greatest return on investment. Of course, that can be very frustrating if you are trying to use a product and they won't tell you how to program the one-thousand on-chip registers to your particular configuration requirements. Our best advice is to figure this out beforehand to save a lot of time and frustration - there are multiple vendors for most functions, try to choose one that will work with you. Talking to your local sales representatives is invaluable in obtaining this information.

You may also find that there are functionality gaps in what is available as ASSPs. Or you may find that you require ASSPs from different vendors that don't have compatible interfaces. Or that you need multiple expensive ASSPs to solve your problem - but only utilize a tiny percentage of the capabilities of each of these devices. The cost, power and PCB size may become prohibitive - especially as your production volumes pick up. Every unique product has unique requirements that require unique solutions. Custom FPGAs, ASICs or Structured ASICs will help you fill in the gaps or create custom solutions for your unique needs.

PCB Layout
PCB layout design at today's system clock speeds is a critical design task. It is vital that sufficient power distribution, grounding and signal shielding is included in the design. PCB trace lengths for high frequency busses may need to be length matched. Single-ended busses also have tight maximum length requirements. Vias or sudden sharp angles on high-speed signal lines should be minimized. Some very high speed signals can only be routed on a single signal plane. Choosing an experienced layout service is instrumental in the success of your product. In short, high-speed PCB design has become a highly specialized engineering task. Vendor application notes can guide you through the layout requirements of many signals on their devices. We recommend investing in PCB analysis and verification tools for high-speed designs. Hyperlynx from Mentor Graphics is a good example of a signal integrity verification tool.

Firmware / Operating Systems
Firmware (or Embedded Software) implements the functions of your system best suited to software implementation. Firmware generally runs on embedded processors within your system and can be very simple (i.e. blinking LEDs), or very complex (i.e. a wireless router). Simple firmware may not require an operating system (OS), or may require a simple set of drivers for peripherals attached to the processor. More complex firmware generally requires a more sophisticated OS.

The OS may provide high-level standard services (like TCP/IP), allow multiple threads to run, provide a framework for complex device drivers with interrupt support and manage memory resources. Some OS's provide real-time services for time-critical software applications, others do not. VxWorks is the most popular real-time OS (RTOS), still used in the majority of time-critical applications. Linux is probably the next most common embedded OS and has a lot of industry momentum. It is NOT, however, an RTOS, although many attempts have been made to make it more and more RTOS like.

Linux is often preferred because of the tool support and pricing model (it's free), but other operating systems are often much more suited to an embedded environment with limited code space. Remember that the processor performance depends on the entire sub-system, not just the processor. Complex applications require large amounts of memory. Processor performance may be limited by memory bandwidth, so memory bandwidth and the availability of cache memory are critical. Multi-threaded applications usually require memory management so a hardware MMU may be a requirement -- some operating systems also require an MMU.

The more complex embedded processors typically include an MMU, but not all processors do - for example the ARM926 includes one but the ARM966 does not. It is critical that software and hardware architects work closely to define hardware and software requirements up-front. Besides avoiding expensive incompatibilities, the most cost effective implementation methods can be determined. It is not uncommon to see more than 90% of an expensive processor's bandwidth being used to implement a function that could be cheaply implemented in hardware. Conversely, it is not uncommon to see large amounts of hardware engineering effort being expended implementing functions that are trivial to implement in software.

Copyright 2015 Octera Corporation.