You are previewing Digital Design and Computer Architecture, 2nd Edition.
O'Reilly logo
Digital Design and Computer Architecture, 2nd Edition

Book Description

Digital Design and Computer Architecture takes a unique and modern approach to digital design. Beginning with digital logic gates and progressing to the design of combinational and sequential circuits, Harris and Harris use these fundamental building blocks as the basis for what follows: the design of an actual MIPS processor. SystemVerilog and VHDL are integrated throughout the text in examples illustrating the methods and techniques for CAD-based circuit design. By the end of this book, readers will be able to build their own microprocessor and will have a top-to-bottom understanding of how it works. Harris and Harris have combined an engaging and humorous writing style with an updated and hands-on approach to digital design.

This second edition has been updated with new content on I/O systems in the context of general purpose processors found in a PC as well as microcontrollers found almost everywhere. The new edition provides practical examples of how to interface with peripherals using RS232, SPI, motor control, interrupts, wireless, and analog-to-digital conversion. High-level descriptions of I/O interfaces found in PCs include USB, SDRAM, WiFi, PCI Express, and others. In addition to expanded and updated material throughout, SystemVerilog is now featured in the programming and code examples (replacing Verilog), alongside VHDL. This new edition also provides additional exercises and a new appendix on C programming to strengthen the connection between programming and processor architecture.

SECOND Edition Features

  • Covers the fundamentals of digital logic design and reinforces logic concepts through the design of a MIPS microprocessor.
  • Features side-by-side examples of the two most prominent Hardware Description Languages (HDLs)-SystemVerilog and VHDL-which illustrate and compare the ways each can be used in the design of digital systems.
  • Includes examples throughout the text that enhance the reader’s understanding and retention of key concepts and techniques.
  • Companion Web site includes links to CAD tools for FPGA design from Altera and Mentor Graphics, lecture slides, laboratory projects, and solutions to exercises.


Updated based on instructor feedback with more exercises and new examples of parallel and advanced architectures, practical I/O applications, embedded systems, and heterogeneous computing

  • Presents digital system design examples in both VHDL and SystemVerilog (updated for the second edition from Verilog), shown side-by-side to compare and contrast their strengths
  • Includes a new chapter on C programming to provide necessary prerequisites and strengthen the connection between programming and processor architecture
  • Companion Web site includes links to Xilinx CAD tools for FPGA design, lecture slides, laboratory projects, and solutions to exercises.

Instructors can also register at textbooks.elsevier.com for access to:

  • Solutions to all exercises (PDF)
  • Lab materials with solutions
  • HDL for textbook examples and exercise solutions
  • Lecture slides (PPT)
  • Sample exams\
  • Sample course syllabus
  • Figures from the text (JPG, PPT)

Table of Contents

  1. Cover image
  2. Title page
  3. Table of Contents
  4. In Praise of Digital Design
  5. About the Authors
  6. Copyright
  7. Dedication
  8. Preface
    1. Features
    2. Online Supplements
    3. How to Use the Software Tools in A Course
    4. Labs
    5. Bugs
    6. Acknowledgments
  9. 1. From Zero to One
    1. 1.1 The Game Plan
    2. 1.2 The Art of Managing Complexity
    3. 1.3 The Digital Abstraction
    4. 1.4 Number Systems
    5. 1.5 Logic Gates
    6. 1.6 Beneath the Digital Abstraction
    7. 1.7 CMOS Transistors*
    8. 1.8 Power Consumption*
    9. 1.9 Summary and a Look Ahead
  10. 2. Combinational Logic Design
    1. 2.1 Introduction
    2. 2.2 Boolean Equations
    3. 2.3 Boolean Algebra
    4. 2.4 From Logic to Gates
    5. 2.5 Multilevel Combinational Logic
    6. 2.6 X’s and Z’s, Oh My
    7. 2.7 Karnaugh Maps
    8. 2.8 Combinational Building Blocks
    9. 2.9 Timing
    10. 2.10 Summary
  11. 3. Sequential Logic Design
    1. 3.1 Introduction
    2. 3.2 Latches and Flip-Flops
    3. 3.3 Synchronous Logic Design
    4. 3.4 Finite State Machines
    5. 3.5 Timing of Sequential Logic
    6. 3.6 Parallelism
    7. 3.7 Summary
  12. 4. Hardware Description Languages
    1. 4.1 Introduction
    2. 4.2 Combinational Logic
    3. 4.3 Structural Modeling
    4. 4.4 Sequential Logic
    5. 4.5 More Combinational Logic
    6. 4.6 Finite State Machines
    7. 4.7 Data Types*
    8. 4.8 Parameterized Modules*
    9. 4.9 Testbenches
    10. 4.10 Summary
  13. 5. Digital Building Blocks
    1. 5.1 Introduction
    2. 5.2 Arithmetic Circuits
    3. 5.3 Number Systems
    4. 5.4 Sequential Building Blocks
    5. 5.5 Memory Arrays
    6. 5.6 Logic Arrays
    7. 5.7 Summary
  14. 6. Architecture
    1. 6.1 Introduction
    2. 6.2 Assembly Language
    3. 6.3 Machine Language
    4. 6.4 Programming
    5. 6.5 Addressing Modes
    6. 6.6 Lights, Camera, Action: Compiling, Assembling, and Loading
    7. 6.7 Odds and Ends*
    8. 6.8 Real-World Perspective: x86 Architecture*
    9. 6.9 Summary
  15. 7. Microarchitecture: With contributions from Matthew Watkins
    1. 7.1 Introduction
    2. 7.2 Performance Analysis
    3. 7.3 Single-Cycle Processor
    4. 7.4 Multicycle Processor
    5. 7.5 Pipelined Processor
    6. 7.6 HDL Representation*
    7. 7.7 Exceptions*
    8. 7.8 Advanced Microarchitecture*
    9. 7.9 Real-World Perspective: x86 Microarchitecture*
    10. 7.10 Summary
  16. 8. Memory and I/O Systems
    1. 8.1 Introduction
    2. 8.2 Memory System Performance Analysis
    3. 8.3 Caches
    4. 8.4 Virtual Memory
    5. 8.5 I/O Introduction
    6. 8.6 Embedded I/O Systems
    7. 8.7 PC I/O Systems
    8. 8.8 Real-World Perspective: x86 Memory and I/O Systems*
    9. 8.9 Summary
    10. Epilogue
  17. A: Digital System Implementation
    1. A.1 Introduction
    2. A.2 74xx Logic
    3. A.3 Programmable Logic
    4. A.4 Application-Specific Integrated Circuits
    5. A.5 Data sheets
    6. A.6 Logic Families
    7. A.7 Packaging and Assembly
    8. A.8 Transmission Lines
    9. A.9 Economics
  18. B: MIPS Instructions
  19. C: C Programming
    1. C.1 Introduction
    2. Summary
    3. C.2 Welcome to C
    4. Summary
    5. C.3 Compilation
    6. Summary
    7. C.4 Variables
    8. Summary
    9. C.5 Operators
    10. C.6 Function Calls
    11. C.7 Control-Flow Statements
    12. Summary
    13. C.8 More Data Types
    14. Summary
    15. C.9 Standard Libraries
    16. C.10 Compiler and Command Line Options
    17. C.11 Common Mistakes
  20. Further Reading
  21. Index