Serial Peripheral Interface

/ˌɛs piː ˈaɪ/

noun — "serial protocol for high-speed device communication."

SPI, short for Serial Peripheral Interface, is a synchronous serial communication protocol used to transfer data between a master device, such as a microcontroller or CPU, and one or more peripheral devices, like sensors, memory chips, or displays. It enables high-speed, full-duplex data exchange over a minimal set of wires, making it a common choice in embedded systems and microcontroller-based designs.

Technically, an SPI bus consists of at least four signals:

  • MOSI (Master Out Slave In) – carries data from the master to the slave
  • MISO (Master In Slave Out) – carries data from the slave back to the master
  • SCLK (Serial Clock) – clock signal generated by the master to synchronize data transfer
  • SS or CS (Slave Select / Chip Select) – enables communication with a specific slave device

Additional slaves require separate SS lines or a decoder to manage multiple devices.

 

Data transmission in SPI occurs in **frames of 8 bits or multiples**. Each clock cycle shifts one bit through the data lines. The master generates the clock, ensuring all devices are synchronized. The protocol is full-duplex: while the master sends data on MOSI, the slave simultaneously transmits data on MISO. No addressing is embedded in the protocol; the SS line selects the target slave.


# conceptual SPI transfer
Master: sends byte 0xA5 on MOSI
Slave: simultaneously sends byte 0x3C on MISO
Clock cycles: 8 for full byte transfer

An SPI bus is widely used for EEPROM, flash memory, ADC/DAC converters, sensors, and display controllers. Its advantages include simplicity, high speed, and low latency. However, it does not support inherent error detection or long-distance communication, and multiple slaves require careful SS management.

In embedded workflows, SPI enables devices to exchange data efficiently with predictable timing. Software drivers often provide APIs to read and write bytes or words, configure clock polarity and phase, and manage multiple devices using CS lines. Hardware modules in microcontrollers can perform transfers autonomously using DMA for high-speed applications.

Conceptually, SPI is like a fast, synchronous conversation between a controller and one or more peripherals, with the clock acting as a metronome and the SS lines deciding who speaks when.

See I²C, GPIO, Microcontroller, Embedded Systems.

General-Purpose Input/Output

/ˌdʒiːˌpiːˌoʊ/

noun — "programmable pins for general hardware control."

GPIO, short for General-Purpose Input/Output, is a type of digital signal pin found on microcontrollers, embedded systems, and some CPUs that can be configured by software to act either as an input or an output. These pins provide a flexible interface for interacting with sensors, switches, LEDs, and other hardware components without dedicated communication protocols. GPIO pins are widely used in prototyping, embedded applications, and low-level hardware control where simple digital signaling is sufficient.

Technically, a GPIO pin can be set to an output mode, where it drives a voltage high or low to control external devices, or to input mode, where it reads the voltage state presented by a sensor or switch. The direction, pull-up/pull-down resistors, and drive strength are typically configurable via registers in the microcontroller or through an operating system interface.

Example in a Linux embedded system controlling an LED:


# export GPIO pin 17
echo 17 > /sys/class/gpio/export
# set pin as output
echo out > /sys/class/gpio/gpio17/direction
# turn LED on
echo 1 > /sys/class/gpio/gpio17/value
# turn LED off
echo 0 > /sys/class/gpio/gpio17/value

Operationally, GPIO allows programs to monitor and control hardware at a very low level. As inputs, pins can detect digital signals from switches, motion sensors, or communication status lines. As outputs, they can drive LEDs, relays, or trigger external circuits. Because GPIO is generally unbuffered and non-protocol-specific, timing and electrical characteristics must be managed carefully to avoid damage or incorrect readings.

In embedded systems, GPIO is often multiplexed with other functions such as UART, SPI, I²C, PWM, or analog-to-digital conversion. Configuration determines whether the pin operates in general-purpose mode or as part of a specialized peripheral interface.

Conceptually, GPIO pins are like programmable switches or signals on a circuit board. Software can turn them on or off or read their state, giving a direct but controlled connection between the digital world of the processor and the physical world of electronics.

See Microcontroller, Embedded Systems, SPI, I²C, PWM.

Memory Management Unit

/ˈmɛməri ˈmænɪdʒmənt ˈjuːnɪt/

noun — "hardware that translates and protects memory."

Memory Management Unit is a hardware component of a processor responsible for translating virtual memory addresses into physical memory addresses and enforcing memory protection rules. It sits between the CPU core and physical memory, acting as the gatekeeper that ensures programs see a consistent, isolated view of memory while preventing illegal or unsafe access.

Technically, the memory management unit performs address translation using data structures such as page tables or segment tables. When a program issues a memory access, it produces a virtual address. The MMU consults the current translation context, typically defined by the operating system, to map that virtual address to a physical address. This mapping is often accelerated using a Translation Lookaside Buffer (TLB), a small cache that stores recent address translations to avoid repeated page table walks.

The MMU is also responsible for enforcing access permissions. Each memory region can be marked as readable, writable, executable, or inaccessible. If a program attempts an operation that violates these permissions, the MMU raises a fault, such as a segmentation fault or access violation, allowing the operating system to intervene. This mechanism underpins process isolation, memory safety, and modern security features such as non-executable memory regions.

Operationally, the memory management unit enables virtual memory by allowing only a subset of a process’s address space to be resident in physical memory at any given time. When a referenced page is not present, the MMU signals a page fault. The operating system then loads the required page from secondary storage and updates the page tables so the MMU can complete the translation. This collaboration between hardware and software allows systems to efficiently multiplex memory across many processes.

A simplified conceptual flow looks like this:


virtual_address
    → TLB lookup
        if hit:
            physical_address
        else:
            page_table_walk
                if valid:
                    update TLB
                    physical_address
                else:
                    raise page_fault

In practice, MMU design has a significant impact on system performance and scalability. Features such as multi-level page tables, huge pages, and tagged TLBs reduce translation overhead for large address spaces. In multiprocessor systems, the MMU must also support context switching, ensuring that each process’s address mappings are isolated while allowing controlled sharing of memory where required.

The memory management unit is not exclusive to general-purpose CPUs. GPUs, network processors, and embedded systems often include MMUs or simpler memory protection units to support isolation and controlled access. In constrained embedded environments, a reduced MMU may provide protection without full virtual memory, balancing safety with hardware simplicity.

Conceptually, the memory management unit is like a highly vigilant librarian who translates a reader’s catalog numbers into exact shelf locations while enforcing strict rules about which sections each reader is allowed to access.

See Virtual Memory, Page Replacement, Operating System, Cache.

Central Processing Unit

/ˌsiː piː ˈjuː/

noun — "central processor executing instructions."

CPU, short for Central Processing Unit, is the primary component of a computer responsible for executing program instructions, performing arithmetic and logical operations, and coordinating the activities of all other hardware components. It functions as the “brain” of a computing system, interpreting and processing data according to software commands.

Technically, a CPU consists of multiple key units:

  • Arithmetic Logic Unit (ALU): Performs arithmetic operations (addition, subtraction, multiplication, division) and logical operations (AND, OR, NOT).
  • Control Unit (CU): Directs data flow between memory, input/output devices, and the ALU, decoding instructions from programs and issuing commands.
  • Registers: Small, fast storage locations inside the CPU for temporary storage of data, addresses, and intermediate results.
  • Cache Memory: High-speed memory close to the CPU for storing frequently accessed instructions and data to reduce latency.

Operationally, the CPU follows the fetch-decode-execute cycle:

  • Fetch: Retrieves an instruction from memory (RAM) at the address indicated by the program counter.
  • Decode: Interprets the instruction to determine the required operation and operands.
  • Execute: Performs the operation using the ALU or control unit, writing results back to registers or memory.
  • Advance: Updates the program counter to the next instruction.

Example conceptual workflow in pseudo-code:


while (program_counter < program_length):
    instruction = memory[program_counter]
    decoded = decode(instruction)
    result = ALU_execute(decoded)
    registers[decoded.destination] = result
    program_counter += 1

CPUs vary in architecture, including single-core, multi-core, and specialized designs for performance or energy efficiency. Modern CPUs may include integrated graphics processing capabilities, multiple levels of cache (L1, L2, L3), and support for advanced instruction sets (SSE, AVX) to accelerate computational workloads.

Conceptually, a CPU is like the conductor of an orchestra: it reads the musical score (program instructions), directs the musicians (hardware components) to perform their parts, and ensures the resulting performance (system operation) is synchronized and accurate.

See GPU, Cache, ALU, Registers.

Unified Extensible Firmware Interface

/ˌjuːˈfiːˈaɪ/

noun — "modern firmware interface replacing legacy BIOS."

UEFI, short for Unified Extensible Firmware Interface, is a modern firmware interface for computers that replaces the legacy BIOS. It provides a flexible and extensible environment for bootstrapping operating systems, initializing hardware, and enabling advanced system features. UEFI standardizes the interaction between system firmware and the operating system, supporting large disks, secure boot, and modular firmware components.

Technically, UEFI is stored in non-volatile flash memory on the motherboard and executed by the CPU during the early stages of boot. It supports a richer pre-boot environment, including graphical interfaces, network booting, and runtime services that BIOS lacks. UEFI reads the GUID Partition Table (GPT) to locate bootable partitions, enabling disks larger than 2 TB and more than four primary partitions, addressing MBR limitations.

Core components of UEFI include:

  • Boot Manager: Identifies and launches boot loaders or operating systems.
  • Device Drivers: Provides low-level control for hardware initialization during pre-boot.
  • System Table: Offers runtime services and interfaces for the OS to query firmware capabilities.
  • Secure Boot: Ensures that only trusted software is executed during startup, protecting against malware or unauthorized OS loaders.

In workflow terms, UEFI executes as follows: upon power-on, the CPU runs UEFI firmware from flash memory, initializes hardware components, executes POST routines, enumerates devices, reads the GPT to identify bootable partitions, and launches the operating system loader. During runtime, it can provide services such as clock, memory, or firmware update interfaces to the OS.

A simple illustrative pseudo-code for UEFI boot flow:


uefi_init()
check_secure_boot()
enumerate_devices()
boot_partition = find_boot_partition(GPT)
load_bootloader(boot_partition)
transfer_control_to_os()

Conceptually, UEFI is like a modern air traffic control tower: it coordinates and validates all incoming and outgoing operations (hardware initialization and OS boot), ensures security and safety (Secure Boot), and provides rich services to facilitate smooth and reliable system operations beyond the capabilities of the old BIOS.

See BIOS, GUID Partition Table, CPU.

Basic Input/Output System

/ˌbaɪˈɒs/

noun — "firmware that initializes and tests hardware at startup."

BIOS, short for Basic Input/Output System, is firmware embedded on a computer’s motherboard that provides the fundamental instructions to initialize hardware components, perform self-tests, and load an operating system from storage. It acts as the bridge between the computer hardware and higher-level software, ensuring that devices are recognized, configured, and accessible before handing control to the operating system.

Technically, BIOS resides in non-volatile memory, traditionally in ROM or flash memory. Upon power-on, the CPU executes the BIOS code starting from a fixed memory address. The BIOS performs the Power-On Self Test (POST), which verifies the integrity and functionality of essential hardware, including CPU, memory modules, storage devices, and peripheral controllers. After verification, it identifies a bootable device and loads its boot sector, such as an MBR or GUID Partition Table, to begin the operating system startup process.

A BIOS typically provides low-level routines for input/output operations, including reading and writing to disk drives, keyboard input, display output, and communication with other peripherals. These routines are exposed to the operating system and applications as a standard interface, allowing software to interact with hardware without requiring device-specific drivers during early boot stages.

Example workflow:

  • Power on the system.
  • CPU jumps to the BIOS entry point.
  • BIOS performs POST to test hardware functionality.
  • BIOS initializes system configuration and enumerates devices.
  • BIOS locates a bootable device using MBR or GPT and loads the operating system loader into memory.
  • Control is transferred to the OS bootloader, completing the startup process.

In modern computing, BIOS has evolved into UEFI (Unified Extensible Firmware Interface), which supports larger drives, more advanced security features, graphical interfaces, and network booting, but maintains backward compatibility with legacy BIOS functionality in many systems.

Conceptually, BIOS is like a stage manager for a theater production: before the main performance (operating system) can start, it ensures all actors (hardware components) are present, functional, and correctly positioned, providing a smooth and coordinated launch.

See MBR, GUID Partition Table, UEFI, CPU.

Voltage Regulator

/ˈvoʊltɪdʒ ˈrɛɡjəˌleɪtər/

noun … “Circuit that maintains a constant output voltage.”

Voltage Regulator is an electronic circuit or device that automatically maintains a stable output voltage regardless of changes in input voltage, load current, or environmental conditions such as temperature. Voltage regulators are a core component of reliable electronic systems, ensuring that sensitive circuits receive clean, predictable power even when the power source is noisy or fluctuating.

A Voltage Regulator typically sits downstream of a power supply and works in tandem with components like rectifiers, filters, and protection circuits. Without regulation, voltage variations could cause logic errors, signal distortion, data corruption, or permanent hardware damage.

Key characteristics of Voltage Regulator include:

  • Output stability: maintains a fixed voltage under varying conditions.
  • Line regulation: response to changes in input voltage.
  • Load regulation: response to changes in output current demand.
  • Noise performance: ability to suppress ripple and electrical noise.
  • Protection features: current limiting, thermal shutdown, and short-circuit protection.

There are two major classes of Voltage Regulator. Linear regulators dissipate excess energy as heat and are valued for simplicity and low noise. Switching regulators use high-frequency switching and energy storage elements to achieve much higher efficiency, especially when large voltage differences or currents are involved.

Workflow example: Regulating DC voltage:

dc_input = unregulated_dc()
regulated_output = voltage_regulator.set(5).apply(dc_input)
device.power(regulated_output)

Here, the voltage regulator ensures that the device always receives a steady 5 V supply even if the input voltage varies.

Conceptually, a Voltage Regulator is like a pressure valve in a water system: no matter how wildly the pressure upstream fluctuates, the output remains calm and controlled.

See Power Supply, Rectifier, DC, Integrated Circuit, Analog.

Power Supply

/ˈpaʊər səˌplaɪ/

noun … “System that provides electrical energy in usable form.”

Power Supply is an electrical device or system that delivers controlled electrical power to an electronic load. Its primary role is to convert energy from a source—such as mains electricity, a battery, or a generator—into the specific voltage, current, and stability required by electronic circuits. Power supplies are foundational to all electronic systems, from tiny embedded devices to large data centers.

A Power Supply typically performs multiple functions beyond simple energy delivery. These include voltage conversion, current limiting, isolation, noise reduction, and protection against faults such as short circuits or overvoltage. In most electronic devices, the power supply quietly does the hardest work, ensuring everything else behaves predictably.

Key characteristics of Power Supply include:

  • Voltage regulation: maintains a stable output voltage under varying load conditions.
  • Current capacity: defines how much current can be safely delivered.
  • Efficiency: ratio of usable output power to input power.
  • Ripple and noise: residual fluctuations in the output signal.
  • Protection features: overcurrent, overvoltage, thermal, and short-circuit protection.

Common types of Power Supply include linear power supplies, switching power supplies (SMPS), battery-based supplies, and uninterruptible power supplies (UPS). Switching supplies are dominant in modern electronics due to their high efficiency and compact size, while linear supplies are valued for low noise and simplicity.

Workflow example: AC to regulated DC conversion:

ac_input = wall_outlet()
dc_unregulated = rectifier.convert(ac_input)
dc_smoothed = filter.smooth(dc_unregulated)
dc_output = regulator.stabilize(dc_smoothed)

Here, the power supply converts AC into a stable DC voltage suitable for electronic circuits.

Conceptually, a Power Supply is like a well-trained utility system: it takes raw energy from the grid and delivers exactly what each device needs, cleanly and reliably.

See Rectifier, Voltage Regulator, Diode, Integrated Circuit, DC.

Sequential Circuit

/sɪˈkwɛnʃəl ˈsɜːrkɪt/

noun … “Logic circuit whose output depends on current and past inputs.”

Sequential Circuit is a type of digital logic circuit in which the output depends not only on the present input values but also on the circuit’s history or previous states. Unlike combinational circuits, sequential circuits incorporate memory elements such as flip-flops or latches to store state information, enabling complex behaviors like counting, timing, and controlled sequencing.

Key characteristics of Sequential Circuit include:

  • State dependency: output depends on both current inputs and stored state.
  • Memory elements: flip-flops, latches, or registers store past information.
  • Clocked operation: often synchronized with a clock signal to update state predictably.
  • Deterministic behavior: follows state transition rules defined by logic and memory.
  • Applications: counters, shift registers, finite state machines (FSMs), control units, and pipelines in CPUs.

Workflow example: Simple 2-bit counter using flip-flops:

clock_signal = generate_clock()
counter_state = 0b00
for tick in clock_signal:
    counter_state = (counter_state + 1) & 0b11   -- increment modulo 4
    output(counter_state)

Here, the output depends on both the incoming clock signal and the previous counter state, demonstrating sequential logic.

Conceptually, a Sequential Circuit is like a combination lock: the current output depends not only on the dial’s present position but also on the sequence of previous positions.

See Combinational Circuit, Flip-Flop, Digital, Finite State Machine, CPU.

Integrated Circuit

/ˈɪntɪˌɡreɪtɪd ˈsɜːrkɪt/

noun … “Miniaturized electronic circuit on a semiconductor chip.”

Integrated Circuit (IC) is a compact electronic circuit fabricated on a single piece of semiconductor material, usually silicon, containing multiple components such as transistors, resistors, capacitors, and diodes. ICs provide complex functionality in a tiny footprint, enabling modern electronics to be small, fast, and reliable.

Key characteristics of Integrated Circuit include:

  • Miniaturization: millions to billions of components on a single chip.
  • High speed: short internal connections reduce signal propagation delays.
  • Low power consumption: efficient compared to discrete component circuits.
  • Reliability: fewer physical connections reduce failure points.
  • Types: analog ICs, digital ICs, mixed-signal ICs, microcontrollers, and microprocessors.

Applications of Integrated Circuit range from microprocessors and memory modules to sensors, amplifiers, communication devices, and consumer electronics.

Workflow example: Simple digital IC (4-bit adder):

input_a = 0b1010
input_b = 0b0111
sum, carry = ic_4bit_adder.add(input_a, input_b)
print(sum, carry)   -- sum = 0b10001, carry handled internally

Here, the IC performs arithmetic internally, using built-in logic gates and transistors, producing the output directly from the inputs.

Conceptually, an Integrated Circuit is like a miniature city of electronic components working together efficiently on a tiny chip.

See Transistor, Logic Gates, Microcontroller, Microprocessor, Semiconductor.