Differences Between Input and Output (I/O) Devices and their Role in Embedded Systems

Embedded systems are comprised of various hardware components that allow it perform its intended function. These components usually include a processor such as a microcontroller or microprocessor, a power supply, timers/counters, input and output devices, memory, and communication ports such as CAN, SPI, I2C, USB, Ethernet, UART, etc.

In particular, the input and output devices component, otherwise known as I/O or IO devices, is used to transfer data to or from a computer. In other words, input devices are used to send data to a CPU and output devices receive data from the CPU. Incorporating inputs/outputs within embedded systems can allow users to control the computer/system and allow the computer/system to interact with the user.

In this blog, we will explain input and output devices, their differences, and how they help embedded systems operate.

Input vs Output Devices

Input devices

An input device is a hardware component that connects to a primary device, such as a computer, and delivers data to the processing element. Inputs, which are often peripheral devices, allow users to interact and control the computer or system. Inputs convert physical input to binary information which is sent to the processing unit to then perform computations to execute a specific task. Inputs are exposed as pins, and can be serial or parallel and also analog or digital.

person using keyboard and mouse Photo by Anete Lusina

 

Examples of Input Devices

Inputs can include: keyboard, touch pad, camera, microphone, GPS, and various sensors.

Output Devices

An output device is a hardware component that connects to a primary device, such as a computer, and transforms received data from the processing unit into a human-perceptible form that users can understand and use. This can be text, graphics, audio, or video. Often output devices are peripheral devices that are used by humans to help perform an action or task. Outputs are exposed as pins, and can also be serial or parallel and analog or digital.

computer monitor displayed on task with speakers Photo by Karol D.

 

Examples of Output Devices

Monitors and projectors are examples of video outputs, headphones and computer speakers are examples of audio outputs, and printers are examples of text/graphic outputs.

Input and Output Devices in Embedded Systems

Input and output devices are used in parallel with other embedded system components such as the processing element, such as a CPU, and memory. Together, they allow the system to collect certain data to execute a specific task and also allows users to easily control and interact with the embedded system.

So, how do these components operate together to perform the intended function?

First, it can be helpful to understand the roles of the memory and processing elements and how their responsibilities are vital to the operation of the inputs and outputs.

Processing Element

Embedded systems require a processing element, such as a CPU, to carry out all tasks. The processor is considered to be the main chip within the system that responsible for fetching and decoding data and then executing an operation based on the instructions it is given from the memory device.

Memory

Memory is used to store temporary or permanent information within an embedded system that is used for processing. There are multiple types of memory that can be used, including RAM, ROM, or EEPROM. Memory is responsible for storing data that is needed to boot up the system or temporarily store data that is collected from input devices.

Transferring Data Between Inputs/Outputs, Memory, and Processor

Altogether, inputs, outputs, memory, and the processor all have their own function that allows the system to intake information and transform it into an action.

Principally, input devices, which can be peripheral devices or sensors, collect physical input and transform this information into binary data that the processor can understand. This data is sent to and stored in the system’s memory device. The processing unit then fetches the set of instructions stored inside the memory where it then performs arithmetic or logical operations to provide an output result. This information is then sent to the memory device and is held until it is ready to be used by the output unit. Once ready, the output device takes this information and converts it into physical output.

Below is an example of the flow of data between inputs/outputs, memory and processing units:

relationship between inputs, outputs, CPU, and memory diagram

An example of this in real life could be someone using a personal computer. In this scenario, the keyboard would be the input device. By pressing letter, number, and symbol keys, a user can submit data and instructions to the computer. Each key is transformed into a binary number that the CPU can interpret and recognize. This is stored in the system’s memory and transferred to the CPU to perform its calculations to provide an output result. This information is then used by the output device, such as a monitor, to display the information typed by the user on screen.

How Total Phase Supports Embedded Systems Development

Total Phase offers various development tools to help develop and debug embedded systems.

Host Adapters

With Total Phase I2C and SPI Host Adapters, users can emulate master and/or slave devices, quickly program EEPROM and Flash memory, and even prototype and test various systems. With these tools, users can verify that the CPU and peripheral devices are operating as expected.

Our host adapters include:

Aardvark I2C/SPI Host Adapter

The Aardvark I2C/SPI Host Adapter is a general-purpose host adapter that can emulate an I2C or SPI master or slave device. It can signal up to 800 kHz as an I2C master, up to 8 MHz as an SPI master, and up to 4 MHz as an SPI slave.

Cheetah SPI Host Adapter

The Cheetah SPI Host Adapter is a fast and powerful USB-to-SPI host adapter, capable of communicating at up to 40+ MHz.

Promira Serial Platform 

The Promira Serial Platform is an FPGA-based platform that supports a variety of different protocols, speeds, and functionalities through downloadable applications. It is able to emulate an I2C or SPI master or slave device, and can signal up to 80 MHz as an SPI master, up to 20 MHz as an SPI slave, and up to 3.4 MHz as an I2C master or slave.

Protocol Analyzers

Total Phase offers various protocol analyzers to allow users to monitor I2C, SPI, and USB bus traffic sent between devices in real time:

Our line of Beagle Protocol Analyzers includes:

Beagle I2C/SPI Protocol Analyzer

The Beagle I2C/SPI Protocol Analyzer can non-intrusively monitor I2C traffic up to 4 MHz and SPI up to 24 MHz.

Beagle USB 12 Protocol Analyzer:

The Beagle USB 12 Protocol Analyzer can non-intrusively monitor Full/Low Speed USB (12 Mbps/1.5 Mbps)

Beagle USB 480 Protocol Analyzer:

The Beagle USB 480 Protocol Analyzer can non-intrusively monitor High-speed USB 2.0 (up to 480 Mbps) and offers class-level decoding.

Beagle USB 480 Power Protocol Analyzer – Ultimate Edition:

The Beagle USB 480 Power Protocol Analyzer – Ultimate Edition can non-intrusively monitor High-speed USB 2.0 (up to 480 Mbps) and offers class-level decoding. This tool provides real-time graphing of VBUS current and voltage values and allows for interactive and bi-directional correlation of current/voltage values with USB data. This tool also allows for USB 2.0 advanced triggers.

Beagle USB 5000 v2 SuperSpeed Protocol Analyzer – Ultimate Edition:

The Beagle USB 5000 v2 SuperSpeed Protocol Analyzer - Ultimate Edition can non-intrusively monitor USB 3.0 or USB 2.0 (up to 5 Gbps) and offers class-level decoding. It can perform USB 2.0 and USB 3.0 simple and advanced matching/triggering. For USB 3.0 advanced triggers, this tool allows for up to eight states to be defined with three matches per stream per state.

Conclusion

Input and output devices have very important roles within embedded systems. They provide the system with the needed data that allows it to then perform a specific task in result. Inputs/outputs, memory, and processing units all operate together to allow the system to function as intended. Total Phase offers various tools to help embedded systems engineers develop well-functioning systems, allowing them to emulate and test certain components such as the CPU and peripheral devices, and quickly program memory. Engineers can also monitor the bus in real time to help pinpoint any communication errors between such devices.

For more information on how our tools can help develop or debug your own embedded application, please email sales@totalphase.com.