Fundamentals of Digital Logic and

Fundamentals of Digital Logic and Microcontrollers

Sixth Edition

M. RAFIQUZZAMAN, Ph.D. Professor California State Polytechnic University, Pomona and President Rafi Systems, Inc. Copyright © 2014 by John Wiley & Sons, Inc. All rights reserved.

Published by John Wiley & Sons, Inc., Hoboken, New Jersey. Published simultaneously in Canada.

No part of this publication may be reproduced, stored in a retrieval system or transmitted in any form or by any means, electronic, mechanical, photocopying, recording, scanning or otherwise, except as permitted under Section 107 or 108 of the 1976 United States Copyright Act, without either the prior written permission of the Publisher, or authorization through payment of the appropriate per-copy fee to the Copyright Clearance Center, Inc., 222 Rosewood Drive, Danvers, MA 01923, (978) 750-8400, fax (978) 646-8600, or on the web at www.copyright.com. Requests to the Publisher for permission should be addressed to the Permissions Department, John Wiley & Sons, Inc., 111 River Street, Hoboken, NJ 07030, (201) 748-6011, fax (201) 748-6008, or online at http://www.wiley.com/go/permissions.

Limit of Liability/Disclaimer of Warranty: While the publisher and author have used their best efforts in preparing this book, they make no representation or warranties with respect to the accuracy or completeness of the contents of this book and specifically disclaim any implied warranties of merchantability or fitness for a particular purpose. No warranty may be created or extended by sales representatives or written sales materials. The advice and strategies contained herein may not be suitable for your situation. You should consult with a professional where appropriate. Neither the publisher nor author shall be liable for any loss of profit or any other commercial damages, including but not limited to special, incidental, consequential, or other damages.

For general information on our other products and services or for technical support, please contact our Customer Care Department within the United States at (800) 762-2974, outside the U.S. at (317) 572-3993 or fax (317) 572-4002.

Wiley also publishes its books in a variety of electronic formats. Some content that appears in print may not be available in electronic formats. For more information about Wiley products, visit our web site at www.wiley.com

Library of Congress Cataloging-in-Publication Data:

Rafiquzzaman, Mohamed. [Fundamentals of digital logic and microcomputer design] Fundamentals of digital logic and microcontrollers / M. Rafiquzzaman. – Sixth edition. pages cm Revised edition of: Fundamentals of digital logic and microcomputer design. Includes index. ISBN 978-1-118-85579-9 (cloth) 1. Logic circuits. 2. Microcomputers–Design and construction. 3. Electronic digital –Circuits. I. Title. TK7888.4.R34 2014 621.39ʹ5–dc23 2014017642

Printed in the United States of America.

10 9 8 7 6 5 4 3 2 1 To my wife, Kusum; son, Tito; daughter-in-law, Trina; and my grandchildren

In memory of my brother Elan

CONTENTS

PREFACE xiii

1: INTRODUCTION TO DIGITAL SYSTEMS 1 1.1 Explanation of Terms 2 1.2 Design Levels 6 1.3 Combinational and Sequential Circuits 7 1.4 Digital Integrated Circuits 7 1.4.1 Diodes 7 1.4.2 Transistors 8 1.4.3 MOS Transistors 14 1.5 Integrated Circuits (ICs) 18 1.6 CAD (-Aided Design) 19 1.7 Evolution of the 20 1.8 Typical Microcontroller Applications 21 1.8.1 A Simple Microcontroller Application 22 1.8.2 Embedded Controllers 23

2: NUMBER SYSTEMS AND CODES 25 2.1 Number Systems 25 2.1.1 General Number Representation 25 2.1.2 Converting Numbers from One Base to Another 28 2.2 Unsigned and Signed Binary Numbers 30 2.3 Codes 34 2.3.1 Binary-Coded-Decimal Code (8421 Code) 34 2.3.2 Alphanumeric Codes 35 2.3.3 Excess-3 Code 36 2.3.4 Gray Code 37 2.3.5 Unicode 39 2.4 Fixed-Point and Floating-Point Representations 40 2.5 Arithmetic Operations 41 2.5.1 Binary Arithmetic 41 2.5.2 BCD Arithmetic 51 2.6 Error Correction and Detection 53 Questions and Problems 55 vii viii Contents

3: AND DIGITAL LOGIC GATES 59 3.1 Basic Logic Operations 59 3.1.1 NOT Operation 59 3.1.2 OR operation 60 3.1.3 AND operation 62 3.2 Other Logic Operations 64 3.2.1 NOR operation 64 3.2.2 NAND operation 64 3.2.3 Exclusive-OR operation (XOR) 65 3.2.4 Exclusive-NOR Operation (XNOR) 66 3.3 IEEE Symbols for Logic Gates 67 3.4 Positive and Negative Logic 68 3.5 Boolean Algebra 69 3.5.1 Boolean Identities 70 3.5.2 Simplification Using Boolean Identities 72 3.5.3 Consensus Theorem 74 3.5.4 Complement of a Boolean Function 75 3.6 Standard Representations 76 3.7 Karnaugh Maps 80 3.7.1 Two-Variable K-map 81 3.7.2 Three-Variable K-map 82 3.7.3 Four-Variable K-map 85 3.7.4 Prime Implicants 87 3.7.5 Expressing a Boolean function in Product-of-sums (POS) form using a K-map 89 3.7.6 Don’t Care Conditions 91 3.7.7 Five-Variable K-map 95 3.8 Quine–McCluskey Method 96 3.9 Implementation of Digital Circuits with NAND, NOR, and Exclusive-OR/Exclusive-NOR Gates 97 3.9.1 NAND Gate Implementation 98 3.9.2 NOR Gate Implementation 99 3.9.3 XOR / XNOR Implementations 102 Questions and Problems 106

4: COMBINATIONAL LOGIC 109 4.1 Basic Concepts 109 4.2 Analysis of a Combinational Logic Circuit 109 4.3 Design of a Combinational Circuit 110 4.4 Multiple-Output Combinational Circuits 112 4.5 Typical Combinational Circuits 114 4.5.1 Comparators 114 4.5.2 Decoders 118 4.5.3 Encoders 122 4.5.4 127 4.5.5 Demultiplexers 129 4.5.6 Binary / BCD Adders and Binary 129 4.6 IEEE Standard Symbols 136 Contents ix

4.7 Read-Only Memories (ROMs) 138 4.8 Programmable Logic Devices (PLDs) 140 4.9 Commercially Available Field Programmable Devices (FPDs) 144 4.10 HARDWARE DESCRIPTION LANGUAGE (HDL) 146 4.11 Verilog basics 148 4.11.1 Verilog keywords 148 4.11.2 A typical Verilog Segment 148 4.11.3 Verilog operators 151 4.11.4 Verilog Constants 152 4.11.5 Modeling logical conditions in a circuit 152 4.11.6 Verilog if-else and case-endcase structures 153 4.11.7 A typical Verilog Simulator 153 4.12 Verilog modeling examples for combinational circuits 155 4.12.1 Structural modeling 155 4.12.2 Dataflow modeling 161 4.12.3 Behavioral modeling 163 Questions and Problems 168

5: SEQUENTIAL LOGIC 173 5.1 Basic Concepts 173 5.2 Latches and Flip-Flops 173 5.2.1 SR Latch 174 5.2.2 Gated SR Latch 176 5.2.3 Gated D Latch 176 5.2.4 Edge-Triggered D Flip-Flop 177 5.2.5 JK Flip-Flop 180 5.2.6 T Flip-Flop 181 5.3 Flip-flop timing parameters for edge-triggered flip- 181 5.4 Preset and Clear Inputs 182 5.5 Summary of the gated SR latch and the Flip-Flops 182 5.6 Analysis of Synchronous Sequential Circuits 185 5.7 Types of Synchronous Sequential Circuits 188 5.8 Minimization of States 188 5.9 Design of Synchronous Sequential Circuits 190 5.10 Design of Counters 196 5.11 Examples of Synchronous Sequential Circuits 201 5.11.1 Registers 201 5.11.2 Modulo-n Counters 203 5.11.3 Random-Access Memory (RAM) 206 5.12 Algorithmic State Machines (ASM) Chart 207 5.13 Asynchronous Sequential Circuits 214 5.14 Verilog description of typical synchronous sequential circuits 217 Questions and Problems 235 6: CPU, MEMORY, AND I/O 243 6.1 Design of the CPU 243 6.1.1 Register Design 244 6.1.2 (ALU) 244 6.1.3 ALU Design 255 x Contents

6.1.4 Design 257 6.2 Memory Organization 280 6.2.1 Types of Main memory 283 6.2.2 READ and WRITE Timing Diagrams 285 6.2.3 Main Memory Organization 287 6.3 Input/Output (I/O) 290 6.3.1 Simple I/O Devices 292 6.3.2 Programmed I/O 293 6.3.3 Interrupt I/O 295 6.4 CPU design using Verilog 296 Questions and Problems 309

7: MICROCONTROLLER BASICS 317 7.1 Basic Blocks of a Microcontroller 317 7.1.1 System Bus 318 7.1.2 Clock Signals 319 7.2 Microcontroller Architectures 320 7.3 Basic Concept of Pipelining 321 7.4 RISC vs. CISC 323 7.5 Functional Representation of a Typical RISC Microcontroller—The PIC18F4321 324 7.6 Basics of Programming Languages 324 7.6.1 Machine Language 326 7.6.2 Assembly Language 327 7.6.3 High-Level Language 327 7.7 Choosing a Programming Language 328 7.8 Introduction to C Language 329 7.8.1 Data Types 332 7.8.2 Bit Manipulation Operators 333 7.8.3 Control Structures 334 7.8.4 The switch Construct 338 7.8.5 The while Construct 338 7.8.6 The for Construct 340 7.8.7 The do-while Construct 341 7.8.8 Structures and Unions 341 7.8.9 Functions in C 342 7.8.10 Macros 343 Questions and Problems 344

8: PIC18F HARDWARE AND INTERFACING USING C: PART 1 345 8.1 PIC18F Pins and Signals 345 8.1.1 Clock 346 8.1.2 PIC18F Reset 350 8.1.3 A Simplified Setup for the PIC18F4321 350 8.2 PIC18F4321 programmed I/O using C 351 8.2.1 PIC 18F4321 I/O ports 351 8.2.2 Interfacing LEDs (Light Emitting Diodes) and Seven-segment Displays 354 8.2.3 Microchip MPLAB C18 compiler and the PICkit3 interface 355 Contents xi

8.2.4 Configuration commands 356 8.3 PIC18F Interrupts 359 8.3.1 PIC18F Interrupt Types 359 8.3.2 PIC18F External Interrupts in Default Mode 359 8.3.3 Interrupt Registers and Priorities 361 8.3.4 Setting the Triggering Levels of INTn Pin Interrupts 362 8.3.5 Programming the PIC18 interrupts using C 363 Questions and Problems 369

9: PIC18F HARDWARE AND INTERFACING USING C: PART 2 373 9.1 PIC18F Timers 373 9.1.1 Timer0 375 9.1.2 Timer1 378 9.1.3 Timer2 382 9.1.4 Timer3 384 9.2 PIC18F Interface to an LCD (Liquid Crystal Display) 390 9.3 Analog Interface 394 9.3.1 On-chip A/D Converter 395 9.3.2 Interfacing an External D/A (Digital-to-Analog) Converter to the PIC18F4321 403 9.4 Serial Interface 405 9.4.1 Synchronous Serial Data Transmission 405 9.4.2 Asynchronous Serial Data Transmission 405 9.4.3 PIC18F Serial I/O 406 9.5 PIC18F4321 Capture/Compare/PWM (CCP) Modules 413 9.5.1 CCP Registers 413 9.5.2 CCP Modules and Associated Timers 413 9.5.3 PIC18F4321 Capture Mode 413 9.5.4 PIC18F4321 Compare Mode 416 9.5.5 PIC18F4321 PWM (Pulse Width Modulation) Mode 417 9.6 DC Motor Control 419 Questions and Problems 425

APPENDIX A: ANSWERS TO SELECTED PROBLEMS 429 APPENDIX B: GLOSSARY 439 APPENDIX C: TUTORIAL FOR COMPILING AND DEBUGGING A C-PROGRAM USING THE MPLAB 451 APPENDIX D: INTERFACING THE PIC18F4321 TO A PERSONAL COMPUTER OR A LAPTOP USING PICkit™ 3 479 D.1 INITIAL HARDWARE SETUP FOR THE PIC18F4321 479 D.2 CONNECTING THE PERSONAL COMPUTER (PC) OR THE LAPTOP TO THE PIC18F4321 VIA PICkit3 480 D.3 PROGRAMMING THE PIC18F4321 FROM A PERSONAL COMPUTER OR A LAPTOP USING THE PICkit3 482 BIBLIOGRAPHY 485 CREDITS 487 INDEX 489

PREFACE

The fifth edition of the book covered basics of computer engineering and science from digital logic to the design of a complete microcomputer system using Intel 8086 and Motorola 68000. With the growing popularity of microcontrollers, it is now necessary to have a clear understanding of the basic principles of microcontrollers at the undergraduate level. Microcontrollers play an important role in the design of digital systems. They are found in a wide range of applications including office automation systems such as copiers and fax machines, consumer electronics such as microwave ovens, digital instruments, and robotics. Hence, a typical microcontroller such as Microchip Technology’s PIC18F is used to replace the 8086 and 68000 in this edition. Several PIC18F-based simple practical applications using C-language are provided. The sixth edition covers an enhanced version of both combinational and sequential logic design, basics of computer organization and microcontrollers. Like the fifth edition, emphasis is given on the basic concepts. To cite an example, we clearly point out that computers understand only 0’s and 1’s. It is, therefore, important that students be familiar with binary numbers. Furthermore, we focus on the fact that computers can normally only add. Hence, all other arithmetic operations such as subtraction are performed via addition. This can be accomplished using two’s-complement arithmetic for binary numbers. This topic is, therefore, also included along with a clear explanation of signed and unsigned binary numbers. Basic concepts such as this are illustrated with simple examples throughout this edition. As in the previous edition, three design levels are covered in this book: device level, logic level, and system level. Device-level design using simple devices such as transistors is included for typical logic gates such as NOT. Logic-level design is the technique in which logic gates are used; design of digital components such as an is provided. Finally, system-level applications are covered using a typical microcontroller such as the PIC18F. Digital systems at the logic level are classified into two types of circuits: combinational and sequential. Combinational circuits have no memory whereas sequential circuits contain memory. Microcontrollers are designed using both combinational and sequential circuits. Therefore, these topics are covered in detail. This edition of the book contains more details for synthesizing digital logic circuits using a popular hardware description language such as Verilog. An overview of contemporary digital circuit implementation using a popular programmable logic device (PLD) such as field programmable gate array (FPGA) along with the CAD (computer aided design) tools is included. xiii