Micro Processor and Micro Controller

Chapter 1
Microprocessor and Microcontroller Foundations

Post Graduate Program in Electrical Engineering
Micro Processor and Micro Controller   •   Post Graduate

1. Microprocessor and Microcontroller Foundations

Introduction and Context

Digital systems have evolved from collections of individually wired logic circuits into highly integrated computing platforms capable of sensing, communicating, controlling, and learning. At the centre of many such systems is a programmable processing unit. Depending on the application, that unit may be a microprocessor, microcontroller, digital signal processor, system-on-chip, or a processor embedded within a larger system. Although these terms are often used interchangeably, they describe architectures designed for different engineering objectives.

A clear distinction among these technologies is essential for electrical engineers. The choice of processing platform affects performance, power consumption, cost, software complexity, reliability, product life cycle, safety certification, and maintenance. A general-purpose computer processor may provide exceptional computational capacity but be unsuitable for a battery-operated sensor. Conversely, a small microcontroller may be ideal for deterministic control but inadequate for high-resolution image processing or a full operating system.

This chapter establishes the conceptual foundation for studying microprocessors and microcontrollers. It examines their evolution, internal organization, instruction execution, memory and input/output relationships, application domains, design trade-offs, and interaction with modern embedded and cyber-physical systems.

Learning Objectives

After completing this chapter, the learner should be able to:

1. Define and distinguish microprocessors, microcontrollers, embedded systems, SoCs, and DSPs.

2. Explain the historical evolution from discrete processors to highly integrated computing systems.

3. Describe the functional organization of a processor-based digital system.

4. Interpret important architectural terms such as word length, instruction set, clock frequency, bus, interrupt, timer, and memory map.

5. Select an appropriate processing platform for a practical engineering application.

6. Analyse trade-offs involving performance, power, cost, determinism, integration, security, and software support.

7. Recognize professional, safety, security, and lifecycle considerations in embedded-system development.

From Central Processing Unit to System-on-Chip

A microprocessor is a programmable digital processing unit implemented largely as a single integrated circuit. It contains the arithmetic and logic unit, registers, control circuitry, and usually facilities for instruction sequencing. In a conventional microprocessor-based system, memory and peripheral interfaces are provided by separate integrated circuits. The processor therefore acts as the computational core of a larger hardware assembly.

The microprocessor emerged from the integration of central processing unit functions that had previously required many logic packages. This integration reduced physical size and manufacturing complexity while making programmable computation available in products beyond large computers. Early processors were constrained by small word sizes, limited memory addressing, modest clock rates, and expensive semiconductor memory. Nevertheless, they established the architecture used by later personal computers, industrial controllers, measurement instruments, and communication equipment.

A microcontroller integrates a processor core with memory and peripheral functions on the same chip. Typical on-chip resources include read-only or flash program memory, random-access data memory, digital input/output ports, timers, counters, serial communication interfaces, analogue-to-digital converters, pulse-width modulation units, watchdog timers, and interrupt controllers. A microcontroller is consequently best understood as a compact computer intended to control a specific system rather than as merely a smaller microprocessor.

The distinction is architectural rather than simply one of physical size. A microprocessor-based design commonly depends on external memory and support chips and is often intended to run a comparatively rich operating system. A microcontroller generally emphasizes integration, low energy consumption, predictable response, low cost, and direct interaction with sensors and actuators. The boundary is not absolute: modern devices may combine features of both categories.

An embedded system is a complete engineered product or subsystem in which computing is incorporated into a larger function. The term refers to the role of the computer, not to a specific processor architecture. A washing-machine controller, automotive braking module, smart energy meter, industrial protection relay, medical infusion pump, and wireless sensor node are all embedded systems. An embedded system includes hardware, firmware, communication interfaces, power arrangements, mechanical constraints, application software, and often safety or security mechanisms.

A system-on-chip, or SoC, integrates multiple major functional blocks on one semiconductor die. These may include one or more CPU cores, memory controllers, graphics or neural accelerators, communication interfaces, security modules, timers, and specialized signal-processing units. SoCs are common in mobile devices, network equipment, advanced automotive platforms, and edge-computing products. The term describes a high degree of integration; it does not imply a particular instruction-set architecture or application.

A digital signal processor is a processor optimized for numerical operations on sampled signals. DSPs commonly provide multiply-accumulate instructions, specialized addressing modes, parallel execution, saturation arithmetic, and efficient handling of streams of data. They are used in audio, wireless communication, radar, motor drives, medical instrumentation, and image processing. A general-purpose microcontroller may perform signal processing, and a DSP may contain control peripherals, but the design priorities differ. DSP performance is often measured by sustained numerical throughput and predictable data movement, whereas a conventional control microcontroller is frequently judged by interrupt latency, peripheral integration, and energy per control task.

These categories overlap. A modern SoC may contain a general-purpose processor, microcontroller cores, DSP engines, and programmable logic. Correct classification therefore requires examining architectural purpose, integration level, real-time behaviour, software environment, and application constraints rather than relying on product names.

Evolution of Processing Architectures

The development of programmable processors can be viewed as a progression in integration and specialization. Early digital controllers were assembled from discrete transistors and logic gates. Their operation was difficult to modify because the control function was physically wired. Programmable systems separated the control algorithm from the hardware, allowing software or firmware to determine behaviour.

The first generations of microprocessors had limited data widths and address spaces. Their principal achievement was not raw performance but the availability of a complete programmable CPU in a small package. As semiconductor manufacturing improved, processors gained wider registers, larger address spaces, caches, memory-management facilities, floating-point support, and sophisticated instruction pipelines.

Microcontrollers developed along a related but distinct path. Rather than maximizing computational complexity, designers integrated memory and peripherals to reduce system cost and component count. This made them particularly attractive for appliances, instrumentation, factory automation, automotive control, and consumer products. Flash memory later enabled convenient in-circuit programming and firmware updates.

The contemporary trend is heterogeneous integration. A product may combine high-performance CPU cores for user interfaces, real-time microcontroller cores for deterministic control, DSPs for communications, accelerators for artificial intelligence, and secure elements for cryptographic functions. Increasing integration improves capability and can reduce board size, but it also increases software complexity, verification effort, dependence on vendors, and the consequences of design errors.

A System-Level Model

A processor-based system can be understood through five interacting layers. The first is the physical environment, consisting of mechanical elements, electrical loads, sensors, communication channels, and human users. The second is the interface layer, which converts physical signals into digital information and converts computed decisions into actuator commands. The third is the processing and memory layer, where instructions and data are handled. The fourth is the firmware or operating-system layer, which schedules activities and manages resources. The fifth is the application layer, which implements the intended product function.

At the hardware level, the central processing unit communicates with memory and peripherals through buses or interconnects. An address identifies a storage location or peripheral register. A data path transfers values, while control signals specify operations such as reading, writing, acknowledging an interrupt, or selecting a device. In many modern systems, these functions are implemented by structured interconnect fabrics rather than by a single shared bus.

The CPU follows an instruction cycle. It fetches an instruction from program memory, decodes the operation, obtains required operands, executes the operation, and writes the result or changes the program counter. Pipelining permits different instructions to occupy different stages simultaneously. This can increase throughput, but branches, memory delays, and resource conflicts may interrupt the ideal flow. In real-time control, average throughput is not sufficient; the designer must also consider worst-case response time.

Registers are high-speed storage locations within the processor. General-purpose registers hold operands and intermediate results, while special-purpose registers may contain the program counter, stack pointer, status flags, and control information. The stack supports subroutine calls, temporary storage, and interrupt handling. A stack overflow can corrupt program state and is therefore an important reliability concern.

Memory is commonly divided into program memory and data memory, although some architectures use a unified address space. Non-volatile memory retains firmware when power is removed. Volatile memory stores variables and temporary data during operation. A memory map assigns addresses to memory regions and peripheral registers. Reading or writing a peripheral register may initiate an electrical action rather than merely retrieve a stored number.

Peripherals extend the processor into the physical world. Digital input/output ports represent binary signals. Timers measure intervals, generate periodic events, capture external transitions, or produce pulse-width-modulated outputs. Serial interfaces such as UART, SPI, I2C, CAN, USB, and Ethernet support communication at different levels of speed, topology, distance, and protocol complexity. Analogue-to-digital converters measure physical quantities after suitable signal conditioning, while digital-to-analogue converters or PWM outputs drive analogue loads.

Interrupts allow hardware or software events to request processor attention. Instead of continuously polling every device, the processor can execute its main task and respond when an event occurs. An interrupt mechanism must preserve context, identify the source, execute a service routine, and return safely to the interrupted task. Interrupt priority and latency are especially important in motor control, protection systems, communication stacks, and safety-related applications.

Direct memory access allows a peripheral to transfer data to or from memory with limited CPU involvement. This improves efficiency for high-rate data streams, but it introduces shared-resource issues such as buffer ownership, cache coherency, and race conditions. A robust design specifies who may modify a buffer and when the data is valid.

Terminology for Comparing Devices

Word length refers to the natural size of data handled by the processor in a basic operation, commonly 8, 16, 32, or 64 bits. It influences arithmetic range, register organization, address calculations, and software representation, but it does not alone determine overall performance.

Clock frequency is the rate at which a processor’s timing system operates. A higher frequency may increase computational capacity, but performance also depends on instruction count, architecture, memory wait states, compiler quality, peripheral bottlenecks, and power limits. Comparing devices solely by clock frequency is therefore misleading.

The instruction set architecture defines the programmer-visible model: instructions, registers, data types, addressing modes, memory behaviour, and exception mechanisms. The microarchitecture is the internal implementation used to execute that architecture. Two devices can implement the same instruction set while differing substantially in pipelines, caches, power consumption, and performance.

Firmware is software stored in a device that provides low-level control of hardware. It is often stored in non-volatile memory and may be updated during the product life cycle. Bootloader, device driver, real-time operating system, bare-metal program, middleware, and application code are related but distinct elements of the software stack.

Real-time performance concerns whether a system produces a correct response within a specified deadline. A hard real-time violation may be unacceptable or dangerous, while a soft real-time violation may reduce quality without causing immediate failure. Determinism, interrupt latency, scheduling policy, execution-time bounds, and communication delays all influence real-time behaviour.

Power consumption includes dynamic switching power, leakage, peripheral power, and losses in external circuitry. Low-power systems use clock gating, power domains, sleep modes, event-driven operation, efficient algorithms, and appropriate voltage scaling. Energy per task is often more useful than instantaneous power when comparing battery-operated systems.

Choosing an Appropriate Processing Platform

Platform selection begins with requirements rather than with a preferred brand or processor family. The engineer should identify computational workload, timing deadlines, memory requirements, analogue precision, communication protocols, environmental conditions, security needs, development tools, expected production volume, and product lifetime.

A microcontroller is often appropriate when the system has moderate computation, direct sensor and actuator interfaces, tight cost or power constraints, and deterministic control requirements. A microprocessor is more suitable when the application requires substantial memory, a graphical interface, networking stacks, file systems, or a general-purpose operating system. A DSP becomes attractive when repetitive numerical operations dominate, especially where multiply-accumulate throughput and predictable streaming are important. An SoC is valuable when high integration, heterogeneous processing, advanced connectivity, or acceleration is required.

The decision must include non-functional requirements. A device with sufficient nominal performance may still be unsuitable if its boot time, thermal behaviour, security support, toolchain maturity, or long-term availability is inadequate. Engineers should also evaluate development boards, compiler and debugger support, documentation quality, software libraries, certification evidence, and the manufacturer’s history of errata disclosure.

Applications and Professional Context

Microcontrollers are widely used in motor drives, battery-management systems, smart meters, building automation, medical instruments, home appliances, robotics, and automotive body electronics. Their value lies in integrating control logic, timing, communication, and sensing in a compact and economical platform.

Microprocessors and SoCs support products requiring rich interfaces and substantial computation, including industrial gateways, network routers, autonomous platforms, multimedia equipment, and edge-computing devices. DSPs support adaptive filtering, speech enhancement, modem algorithms, vibration analysis, and power-electronic control.

For professional engineers, processor selection is also an organizational decision. A platform affects hiring requirements, testing infrastructure, supplier relationships, cybersecurity responsibilities, maintenance costs, and the feasibility of future product revisions. A technically elegant architecture may be commercially unsuitable if it creates excessive dependence on a single supplier or requires scarce specialist expertise.

Illustrative Case Study: Controller Selection for a Solar Pumping System

Background

Consider an illustrative engineering project involving a solar-powered water-pumping system for a remote agricultural site. The system must measure panel voltage and current, regulate a variable-speed motor drive, detect dry-running conditions, record energy data, and communicate status over a low-bandwidth wireless link.

Situation and Problem

The design team initially proposes a general-purpose microprocessor because it offers a high clock frequency and supports a full operating system. However, the product must operate from a constrained energy source, respond to overcurrent events within a defined deadline, and remain functional after communication failure. The team must decide whether a microprocessor, microcontroller, DSP, or combined platform is appropriate.

Analysis

The control loop requires deterministic sampling, pulse-width-modulated motor control, timer synchronization, analogue-to-digital conversion, and rapid fault response. These requirements favour a microcontroller with motor-control peripherals. The energy-monitoring algorithm includes multiplication, filtering, and periodic data aggregation but does not require the computational capacity of a high-end processor. If the motor-control algorithm involves intensive field-oriented control, a microcontroller with DSP instructions or a dedicated DSP-capable core may be selected.

A general-purpose microprocessor would provide stronger user-interface and networking capability, but it would increase power consumption, boot complexity, and dependence on an operating system. It could still be justified if the product required a graphical display, secure remote management, or advanced analytics.

Approach and Solution

A suitable architecture uses a real-time microcontroller as the primary controller. Timers trigger synchronized sampling, the ADC measures electrical variables, and a high-priority interrupt handles protection events. A lower-priority task calculates energy statistics and manages wireless communication. Non-volatile memory stores configuration parameters and fault records. A watchdog timer detects software failure, while isolated interfaces protect the low-voltage controller from the power stage.

The firmware is divided into hardware abstraction, device drivers, control algorithms, diagnostics, communication, and application management. Protection functions are designed to operate locally rather than depending on a wireless link or a remote server.

Outcome

The selected architecture reduces component count and power demand while providing predictable control response. The design remains extensible because a communication module can be replaced without changing the core control loop. If later requirements demand advanced predictive maintenance, a separate gateway or higher-performance companion processor can be added without compromising the protection path.

Learning Points

The case demonstrates that clock frequency is not the primary selection criterion. Integration, deterministic timing, analogue capability, power behaviour, safety independence, software structure, and future expansion must be assessed together. It also illustrates a common industrial pattern: a real-time controller performs essential control, while a more powerful processor handles communication, analytics, or user interaction when necessary.

Challenges, Risks, and Common Design Errors

A frequent mistake is confusing functional integration with adequate system capability. A device may contain many peripherals but lack sufficient memory bandwidth, analogue performance, security support, or software maturity. Another error is selecting a processor before defining timing and workload requirements.

Designers may also underestimate startup behaviour. Brownouts, clock instability, incomplete peripheral initialization, and corrupted non-volatile data can produce unsafe outputs. Watchdog timers are useful but cannot replace proper fault analysis. Similarly, interrupts can improve responsiveness but excessive interrupt nesting may create unpredictable execution and data races.

Security risks include insecure boot code, exposed debug interfaces, weak credential storage, unverified firmware updates, buffer overflows, and inadequate isolation between communication and control functions. Embedded devices often remain deployed for many years, making patch mechanisms, vulnerability monitoring, and component availability important design concerns.

Thermal stress, electromagnetic interference, vibration, humidity, and supply variation can affect processor reliability. Laboratory operation is not evidence of field robustness. Verification should include boundary conditions, timing overload, communication loss, sensor faults, power cycling, and recovery from corrupted state.

Ethical, Safety, and Governance Considerations

Engineers responsible for embedded systems must treat safety and security as design requirements rather than optional additions. In medical, automotive, aerospace, industrial, and energy applications, a processor failure may cause physical harm or environmental damage. Hazard analysis should identify dangerous failure modes and specify independent protective mechanisms where appropriate.

Professional practice requires traceability from requirements to implementation and tests. Safety-related systems may require compliance with domain-specific standards, while communication and data-handling functions may involve privacy and cybersecurity obligations. Product documentation should state limitations honestly, and field updates should be controlled, authenticated, and recoverable.

Artificial intelligence at the edge introduces additional considerations. A neural accelerator may improve local classification or prediction, but its outputs can be uncertain, difficult to explain, and sensitive to changes in operating conditions. Safety-critical control should not depend on an unvalidated inference without suitable monitoring and fallback behaviour.

Contemporary Developments

Current processor platforms increasingly combine heterogeneous cores, hardware security modules, wireless connectivity, and application accelerators. Edge computing reduces the need to transmit all sensor data to a remote cloud, improving latency and sometimes privacy. Secure boot, trusted execution environments, cryptographic accelerators, and physically unclonable functions are becoming more common in connected devices.

Open instruction-set architectures and modular chip design are encouraging experimentation and specialization, although ecosystem maturity, verification, and long-term support remain important considerations. Advanced packaging and chiplet approaches allow different processing technologies to be combined, while low-power machine-learning accelerators enable local inference in constrained devices.

These developments do not eliminate foundational engineering principles. A complex SoC still requires clear requirements, sound timing analysis, disciplined firmware, reliable power design, verification, security planning, and lifecycle management.

Best Practices for Foundation-Level Design

A sound processor-based design normally follows these practices:

  • Define measurable functional, timing, power, safety, security, and environmental requirements before selecting hardware.
  • Distinguish average performance from worst-case response and deadline behaviour.
  • Select peripherals and memory according to actual signal, data-rate, and interface requirements.
  • Separate safety-critical control from non-critical communication or user-interface functions.
  • Use modular firmware with clear ownership of interrupts, buffers, registers, and shared resources.
  • Plan diagnostics, secure updates, manufacturing tests, and end-of-life support at the beginning.
  • Validate the complete system under realistic electrical, thermal, timing, and fault conditions.

Chapter Summary

A microprocessor is primarily a programmable CPU requiring external system resources, whereas a microcontroller integrates processing, memory, and peripherals for compact control applications. An embedded system is a complete product or subsystem in which computing performs a dedicated function. An SoC integrates several major processing and support functions on one chip, while a DSP is optimized for numerical processing of sampled signals. These categories overlap in modern heterogeneous devices.

Processor-based systems consist of processing cores, memory, buses or interconnects, peripherals, firmware, and interfaces to the physical environment. Important concepts include word length, instruction-set architecture, clock frequency, interrupts, direct memory access, real-time behaviour, memory mapping, and power management. Selecting a platform requires balancing workload, timing, integration, energy, cost, security, safety, software ecosystem, and lifecycle constraints. Contemporary systems increasingly combine general-purpose, real-time, signal-processing, and AI resources, but disciplined requirements analysis and verification remain fundamental.

Key Terms

Microprocessor: A programmable CPU integrated primarily as a processing core and typically supported by external memory and peripherals.

Microcontroller: An integrated control computer containing a processor, memory, and peripheral interfaces on one chip.

Embedded system: A computer incorporated into a larger product to perform a dedicated or constrained function.

System-on-chip (SoC): An integrated circuit combining processors, memory interfaces, peripherals, accelerators, and other system functions.

Digital signal processor (DSP): A processor optimized for high-throughput numerical operations on sampled signals.

Firmware: Low-level software stored in a device that controls its hardware resources.

Instruction set architecture: The programmer-visible definition of instructions, registers, data types, and memory behaviour.

Microarchitecture: The internal hardware implementation used to realize an instruction set architecture.

Word length: The natural number of bits processed by a processor in a basic operation.

Memory map: The assignment of addresses to memory areas and peripheral registers.

Interrupt: A mechanism by which an event requests immediate or prioritized processor attention.

Direct memory access: Hardware-assisted transfer of data between memory and peripherals with limited CPU intervention.

Real-time system: A system whose correctness depends partly on producing results within specified timing constraints.

Determinism: The degree to which system timing and behaviour can be bounded and predicted.

Peripheral: A hardware unit that extends processor capability, such as a timer, ADC, communication port, or GPIO interface.

Bootloader: Initial software that starts system execution and may load or update the main firmware.

Pulse-width modulation: Control of average power or voltage by varying the duty cycle of a digital waveform.

Heterogeneous computing: Use of different types of processing units, such as CPUs, DSPs, and accelerators, in one system.

Secure boot: A startup process that verifies the authenticity or integrity of firmware before execution.

Review Questions

Short Answer Questions

1. What architectural feature most clearly distinguishes a microcontroller from a conventional microprocessor system?

2. Define an embedded system and give two examples.

3. What is the purpose of an interrupt?

4. Why is clock frequency alone an inadequate measure of processor performance?

5. What is meant by a memory map?

Long Answer Questions

1. Explain the differences among a microprocessor, microcontroller, DSP, embedded system, and SoC, including areas of overlap.

2. Describe the organization of a processor-based digital system from sensors and actuators to firmware and application software.

3. Explain the instruction cycle and discuss the roles of registers, buses, memory, and peripherals.

4. Discuss the principal factors that should guide selection of a processing platform for an industrial product.

5. Explain how contemporary heterogeneous SoCs combine general-purpose processing, real-time control, signal processing, and security functions.

Analytical / Application Questions

1. A battery-operated environmental node must sample sensors every second, transmit data wirelessly, and operate for one year without maintenance. Compare the suitability of a microcontroller and a microprocessor, stating the assumptions behind your decision.

2. A motor controller experiences occasional overcurrent damage because protection software is delayed by communication processing. Propose an architectural and firmware-level solution using the concepts of interrupts, priority, peripherals, and functional separation.

3. A product team proposes selecting a processor solely because it has the highest clock frequency. Construct a more rigorous selection framework containing at least six technical and lifecycle criteria, and explain why each matters.

22. Multiple Choice Questions with Answers

Question 1

Which characteristic most strongly supports choosing a microcontroller rather than a conventional microprocessor for a compact control product?

A. Integrated memory and control peripherals on the same chip

B. Dependence on external memory and peripheral controllers

C. Requirement for a graphical operating system

D. Maximum possible clock frequency regardless of workload

Correct Answer: A. Integrated memory and control peripherals on the same chip

Question 2

A system must execute multiply-accumulate operations continuously on sampled audio data. Which platform is most directly optimized for this workload?

A. Basic timer controller

B. Digital signal processor

C. Read-only memory device

D. General-purpose input port

Correct Answer: B. Digital signal processor

Question 3

Why can a higher clock frequency fail to produce better real-time control performance?

A. Clock frequency has no relationship to timing

B. Performance also depends on architecture, memory delays, instruction count, and deadline behaviour

C. Higher frequency always disables interrupts

D. Clock frequency determines only analogue resolution

Correct Answer: B. Performance also depends on architecture, memory delays, instruction count, and deadline behaviour

Question 4

In a memory-mapped system, writing to a peripheral register may do what?

A. Only store a value permanently in external storage

B. Initiate a hardware action such as starting a timer or transmission

C. Change the processor instruction set

D. Automatically increase the word length

Correct Answer: B. Initiate a hardware action such as starting a timer or transmission

Question 5

Which design is most appropriate for a motor controller requiring synchronized ADC sampling, PWM generation, and rapid fault response?

A. A microcontroller with suitable timers, ADCs, PWM, and interrupt facilities

B. A processor selected only for its display resolution

C. A passive memory module

D. A communication transceiver without a processor

Correct Answer: A. A microcontroller with suitable timers, ADCs, PWM, and interrupt facilities

Question 6

What is the main purpose of direct memory access?

A. To allow data transfer between peripherals and memory with limited CPU involvement

B. To replace all non-volatile memory

C. To convert analogue signals into digital signals

D. To guarantee that every program is secure

Correct Answer: A. To allow data transfer between peripherals and memory with limited CPU involvement

Question 7

Which statement best describes an SoC?

A. A software-only control algorithm

B. A chip integrating several major processing and system-support functions

C. A processor used exclusively for audio

D. A peripheral that cannot contain a CPU

Correct Answer: B. A chip integrating several major processing and system-support functions

Question 8

A communication task occasionally delays a safety-critical control response. Which architectural principle is most appropriate?

A. Place all functions in one unprioritized loop

B. Separate critical control from non-critical communication and assign suitable priorities

C. Increase the number of user-interface screens

D. Remove all diagnostic functions

Correct Answer: B. Separate critical control from non-critical communication and assign suitable priorities

Question 9

Which statement about real-time systems is correct?

A. Only numerical accuracy matters

B. Correctness includes producing results within specified timing constraints

C. A high average throughput always guarantees deadline compliance

D. Real-time systems cannot use interrupts

Correct Answer: B. Correctness includes producing results within specified timing constraints

Question 10

Which feature directly contributes to protecting a device from executing unauthorized firmware?

A. Secure boot

B. Pulse-width modulation

C. A larger GPIO port

D. A higher ADC channel count

Correct Answer: A. Secure boot

Micro Processor and Micro Controller
Chapter 1 of 15