+353-1-416-8900REST OF WORLD
+44-20-3973-8888REST OF WORLD
1-917-300-0470EAST COAST U.S
1-800-526-8630U.S. (TOLL FREE)

Digital Logic. With an Introduction to Verilog and FPGA-Based Design. Edition No. 1

  • Book

  • 464 Pages
  • July 2020
  • John Wiley and Sons Ltd
  • ID: 5863782

Digital Logic with an Introduction to Verilog and FPGA-Based Design provides basic knowledge of field programmable gate array (FPGA) design and implementation using Verilog, a hardware description language (HDL) commonly used in the design and verification of digital circuits. Emphasizing fundamental principles, this student-friendly textbook is an ideal resource for introductory digital logic courses. Chapters offer clear explanations of key concepts and step-by-step procedures that illustrate the real-world application of FPGA-based design.

Designed for beginning students familiar with DC circuits and the C programming language, the text begins by describing of basic terminologies and essential concepts of digital integrated circuits using transistors. Subsequent chapters cover device level and logic level design in detail, including combinational and sequential circuits used in the design of microcontrollers and microprocessors. Topics include Boolean algebra and functions, analysis and design of sequential circuits using logic gates, FPGA-based implementation using CAD software tools, and combinational logic design using various HDLs with focus on Verilog.

Table of Contents

Preface ix

1 Introduction to Digital Systems 1

1.1 Explanation of Terms 2

1.2 Design Levels 4

1.3 Combinational vs. Sequential Systems 4

1.4 Digital Circuits 5

1.4.1 Diodes 5

1.4.2 Transistors 5

1.4.3 MOS Transistors 11

1.5 Integrated Circuits (ICs) 14

1.6 CAD (Computer-Aided Design) 16

1.7 Evolution of Digital Logic, Microprocessors, and Microcontrollers 16

1.8 A Typical Application of a Digital System such as a Microcontroller 18

2 Number Systems, Arithmetic/Logic Operations, and Codes 21

2.1 Number Systems 21

2.1.1 General Number Representation 21

2.1.2 Converting Numbers from One Base to Another 23

2.2 Unsigned and Signed Binary Numbers 27

2.3 Codes 30

2.3.1 Binary-Coded-Decimal Code (8421 Code) 30

2.3.2 Alphanumeric Codes 31

2.3.3 Excess-3 Code 31

2.3.4 Gray Code 33

2.3.5 Unicode 35

2.4 Fixed-Point and Floating-Point Representations 35

2.5 Arithmetic Operations 36

2.5.1 Binary Arithmetic 36

2.5.2 BCD Arithmetic 44

2.5.3 Multiword Binary Addition and Subtraction 45

2.5.4 Binary Multiplication and Division by Shift Operations 46

2.6 Error Correction and Detection 48

Questions and Problems 50

3 Digital Logic Gates, Boolean Algebra, and Simplification 53

3.1 Basic Logic Operations 53

3.1.1 NOT Operation 53

3.1.2 OR operation 54

3.1.3 AND operation 56

3.2 Other Logic Operations 57

3.2.1 NOR operation 57

3.2.2 NAND operation 58

3.2.3 Exclusive-OR operation (XOR) 59

3.2.4 Exclusive-NOR Operation (XNOR) 61

3.3 Positive and Negative Logic 62

3.4 Boolean Algebra 63

3.4.1 Boolean Identities 64

3.4.2 Simplification Using Boolean Identities 65

3.4.3 Consensus Theorem 69

3.4.4 Getting Rid of Glitches or Hazards in Combinational Circuits 70

3.4.5 Complement of a Boolean Function 71

3.5 XOR / XNOR Implementations 71

Questions and Problems 74

4 Minterms, Maxterms, and Karnaugh Map 77

4.1 Standard Representations 77

4.2 Karnaugh Maps 81

4.2.1 Two-Variable K-map 81

4.2.2 Three-Variable K-map 82

4.2.3 Four-Variable K-map 84

4.2.4 Prime Implicants 87

4.2.5 Expressing a Boolean function in Product-of-sums (POS) form using a K-map 89

4.2.6 Don’t Care Conditions 90

4.2.7 Five-Variable K-map 94

4.3 Quine-McCluskey Method 95

4.4 Implementation of Digital Circuits with NAND, and NOR Gates 96

4.4.1 NAND Gate Implementation 97

4.4.2 NOR Gate Implementation 98

Questions and Problems 103

5 Analysis and Design of Combinational Circuits Using Gates 107

5.1 Basic Concepts 107

5.2 Analysis of a Combinational Logic Circuit 107

5.3 Design of Combinational Circuits Using Logic Gates 108

5.4 Multiple-Output Combinational Circuits 113

Questions and Problems 118

6 Design of Typical Combinational Logic Components 121

6.1 Design of Typical Combinational Logic Components 121

6.2 Comparators 121

6.3 Decoders 124

6.4 Encoders 130

6.5 Multiplexers 133

6.6 Demultiplexers 137

6.7 Binary Adder/Subtractor and BCD Adder 139

Questions and Problems 148

7 Combinational Shifter, Fast Adders, Array Multipliers, ALU, & PLDS 151

7.1 Combinational Shifter 151

7.2 Central Processing Unit (CPU) 152

7.3 Arithmetic Logic Unit (ALU) 154

7.4 Read-Only Memories (ROMs) 165

7.5 Programmable Logic Devices (PLDs) 167

7.6 Commercially Available Field Programmable Devices (FPDs) 170

Questions and Problems 172

8 Combinational Logic Using Verilog 175

8.1 Hardware Description Languages (HDLs) 175

8.2 Basics of Verilog 176

8.2.1 Verilog keywords 176

8.2.2 Representing numbers in Verilog 176

8.2.3 A typical Verilog Segment 177

8.3 Structural Modeling 182

8.4 Dataflow Modeling 189

8.5 Behavioral modeling 195

8.5.1 if-else block 197

8.5.2 Modeling logical conditions in a circuit 198

8.5.3 Case-endcase construct 198

8.5.4 Conditional Operator 200

8.6 Simulation 201

Questions and Problems 207

9 Latches and Flip-Flops 211

9.1 Latches and Flip-Flops 211

9.1.1 SR Latch 211

9.1.2 Gated SR Latch 213

9.1.3 Gated D Latch 213

9.1.4 Edge-Trigerred D Flip-Flop 214

9.1.5 JK Flip-Flop 216

9.1.6 T Flip-Flop 217

9.2 Timing parameters for edge-triggered flip-flops 218

9.3 Preset and Clear Inputs 219

9.4 Summary of Flip-Flops 220

Questions and Problems 224

10 Analysis and Design of Sequential Circuits 227

10.1 Introduction 227

10.2 Analysis of Synchronous Sequential Circuits 228

10.3 Types of Synchronous Sequential Circuits 233

10.4 Minimization of States 235

10.5 Design of Synchronous Sequential Circuits 237

10.6 Serial Adder 240

10.7 Sequence Generator/Detector 242

10.8 Random-Access Memory (RAM) 245

10.9 Algorithmic State Machines (ASM) Chart 247

10.10 Asynchronous Sequential Circuits 255

Questions and Problems 258

11 Counters and Registers 263

11.1 Design of Counters 263

11.2 Design of Registers 268

11.2.1 Shift Register 268

11.2.2 “Shift register” Counters 271

11.2.3 General-Purpose Register (GPR) 275

Questions and Problems 277

12 Sequential Logic Design Using Verilog 281

12.1 Basics 281

12.2 Examples Illustrating Non-blocking and Blocking Assignments 283

12.3 RTL (Register Transfer Level) modeling 289

Questions and Problems 298

13 Implementation of Digital Design Using FPGA 301

13.1 Basics of FPGA 301

13.1.1 LUTs (Look-Up Tables) 302

13.1.2 Programmable Switch Matrix 308

13.1.3 Configurable Logic Blocks (CLBs) 308

13.1.4 FPGA Architecture 311

13.1.5 FPGA Programming 311

13.2 A Typical FPGA Chip 312

13.2.1 Configuration Pins 314

13.2.2 User I/O Pins 315

13.2.3 Power/Ground Pins 315

13.3 A Typical FPGA Board 315

13.4 FPGA-based Design and Implementation 320

13.4.1 Design 320

13.4.2 Synthesis 320

13.4.3 Implementation, Programming, and Verification 320

13.5 FPGA Examples 322

Questions and Problems 374

Appendix A: Answers to Selected Problems 379

Appendix B: Glossary 389

Appendix C: Step-By-Step Tutorial for Downloading and Installing Xilinx Vivado IDE 395

Appendix D: Step-By-Step Tutorial for Creating & Simulating a Verilog Design Using Xilinx Vivado IDE 399

I Combinational Circuit 399

II Sequential Circuit 407

Appendix E: Step-By-Step Procedure for Implementing FPGA-Based Design Using Vivado IDE & Nexys A7 FPGA Board 419

I Combinational Circuit 419

II FPGA Implementation of Sequential Circuit 426

Bibliography 437

Index 439

Authors

M. Rafiquzzaman California State Polytechnic University. Steven A. McNinch Broadcom Inc., Irvine, CA.