I2C SPI USB CAN eSPI Cable Testing View All Quick Start Guides User Manuals Software Downloads Knowledge Base Videos Case Studies App Notes White Papers Sales Support About Us
Products Blog Sales Support Contact Search
An Introduction to Embedded Systems Design
Staff Writer

The design and development process for embedded systems is uniquely challenging. This is, at least in part, due to the complexity of systems that involve both hardware and software operating within tight resource and timing constraints. In truth, the need to operate within these constraints while reliably delivering functionality over long periods of time is exactly why embedded systems design is such an important process.

To make it easier, we've outlined a general introduction to embedded system design that explains, step-by-step, how to navigate the design process from collecting requirements to final product testing.

What is an Embedded System Design?

Embedded systems are self-contained computers that live inside other systems, usually performing a highly specific function or set of functions. They consist of a processor, communication interfaces, and peripherals used to implement specific features. Many types of embedded systems are expected to operate continuously for years or even decades at a time without interference from a human. Others use a system of sensors and actuators to respond to environmental situations in real time, or use internet connectivity to upload sensory data to a network.

Embedded systems engineers spend their time designing and implementing embedded systems for a variety of industrial and consumer applications. The goal of the embedded systems design process is to effectively translate project requirements into product specifications and eventually into a product that meets project objectives within the identified design constraints.

Phone Designing something new is an iterative process. It's always okay to go back and make changes until you get it just right. Engineers should be encouraged to make mistakes, learn lessons, and try again until they succeed in building something amazing. Image by Edho Pratama via Unsplash

What is the Embedded System Design Process?

Collect Project Requirements

The first step in the embedded system design process is to understand project requirements. The first step here is typically understanding user needs. Designers will ask questions like:

  • Who will use the product?
  • What features should the product have?
  • How will the product be used?
  • Where will the product be used?
  • Will the product have a human user interface? Will the user interact directly with the product?
  • Will the product generate data? If so, how will it be collected? How will it be accessed? How will it be secured?
  • What design constraints exist for the product? What design constraints emerge from other requirements?
  • Will data be processed in real time?
  • What kind of embedded operating system is needed?

Define System Specifications

Once the requirements for the project are clearly understood, embedded systems engineers can begin to define system specifications. This process essentially means translating the plain language of user requirements into technical requirements for manufacturing and building an embedded device.

It is often useful to implement a formalized design verification/validation process with the goal to ensure that the designed system effectively meets user needs.

Co-Design Hardware and Software Systems

The paradigm of co-designing embedded systems emerged in 1996, with the release of The Co-design of Embedded Systems: A Unified Hardware/Software Representation. This publication promotes a methodology for designing the hardware and software components of an embedded system in tandem, specifically by constructing a unified hardware/software representation of the device known as a decomposition graph. The key benefits of co-design are it enables a deeper understanding of hardware/software performance trade-offs and it helps to mitigate the challenges of system integration.

Choose Technologies

The next step in the embedded system design process is to choose the technologies that will be implemented in the final product. An embedded system will need some kind of processor, but you'll have to choose between a System-on-a-Chip (SoC), a microcontroller, digital signal processors, or a general purpose microprocessor. There are also field programmable gate arrays (FPGAs) and complex programmable logic devices (CPLDs) that may be appropriate for some applications.

You'll also need to choose what peripherals to include, which depends on the answers to questions like:

  • How much battery life will the product need?
  • Will the product run a real-time operating system?
  • What input or output devices are necessary for this product?
  • Will the product have a user interface?
  • What functions will the product support?

Allocate Resources

Allocating resources means procuring the necessary human and physical resources to support the product design process. Without the necessary resources, even a great project idea could be doomed to failure. The technologies that you choose for your embedded system will determine the skills and expertise you will need to execute on the project. You may want to recruit team members with complementary skill sets in various areas of embedded systems hardware design and implementation.

Select Tools and Components

In this step, your design team will work together to choose the tools and components that deliver optimal performance given the feature requirements and design constraints for the system. This step includes choosing specific vendors, suppliers, or brands that will provide components for both the product itself and for the testing and debugging process. Tool selection can depend on many factors, including the desired technologies for the implementation and the expertise available on the design team.

Design and Manufacture Hardware

Hardware design includes the preparation of schematics and design drawings, creating an efficient layout and physical design for the product, manufacturing printed circuit boards (PCBs), and design verification.

Develop and Test Software

Embedded system software development encompasses a whole set of tasks, including writing code, configuring peripherals to run the code under the desired conditions, testing and refining code to make it functional and as efficient as possible, debugging to remove errors, and ultimately verifying that the code does everything it is supposed to do. Up to 50% of total project resources can be expended in the testing phase, so it is important to choose the most appropriate testing tools that can help to streamline the testing process.

System Integration and Integration Testing

Once the hardware and software components have been developed, the system needs to be integrated. System integration is the process of combining hardware and software systems and ensuring that the component parts are all still functioning as expected. The co-design process for embedded systems is helpful for maximizing efficiency and minimizing compatibility issues or other conflicts between hardware and software.

Final Testing

Any final testing for the product is concluded in this stage. Once testing is finalized, the project manager certifies that the product has been completed according to the system specifications.

Embedded Systems Hardware Design and Implementation

Hardware design and implementation is an extremely broad area of expertise for embedded systems engineers. To effectively design an embedded device, engineers must understand the subtle differences between different kinds of components, along with their requirements, advantages and disadvantages as they pertain to the task at hand. Choosing between different types of processors and peripherals, and planning how they will interface within the system are the main tasks of embedded hardware design. The 2012 publication Hardware Design of Embedded Systems for Security Applications provides excellent details and insight into the embedded hardware design process.

Summary

When executed in good faith, an effective embedded systems design process helps ensure that product development teams build products that satisfy user needs, providing the requisite features and functionality while operating within the identified and specified constraints. Following this process can help engineers build better products and reduce time to market while enhancing product quality and customer satisfaction.