Fundamentals of Digital Logic Design with VHDL (Hardcover)

ISBN-13: 9780981619446,

ISBN-10: 0981619444,

Readership: Comprehensive textbook is for courses in Digital Design, Digital Logic, Digital Electronics, VLSI Design, ASIC Design, and VHDL; in addition, the book is a great reference for practicing engineers, scientists and professionals who may be involved with the design of digital systems, VLSI circuits, printed circuit boards, multi-chip modules, and computer hardware circuits and systems.

About the Author: Michael Hassan earned B.S. in Electrical Engineering, M.S. in Electronics Engineering; and M.S. and Ph.D. in Electrical and Computer Engineering from WSU, Michigan, USA. He is a senior member of IEEE, the Institute of Electrical and Electronics Engineers, a member of Sigma Xi, the Scientific Research Society, a member of Tau Beta Pi, the Engineering Honor Society, and a member of Eta Kappa Nu, the Electrical Engineering Honor Society. Professor Hassan taught Digital Logic Design courses in a number of universities for more than twenty years, and published many scientific papers and textbooks in the field of Electrical, Computer, and Systems Engineering. He is also an inventor with a significant number of inventions and intellectual properties. His teaching, research, and consulting interests include digital systems theory and design, analog and digital integrated circuit design, microcomputer systems, microelectronics and VLSI design, reconfigurable computing, image processing and vision systems, communication systems and networks, electric vehicles, and alternative energy systems. He is currently professor and research scientist offering engineering consulting and on-site courses in electrical, electronics, computer, aerospace, and systems engineering, a list of which can be found at http:/ Dr. Hassan is a licensed professional engineer and the recipient of the IEEE Outstanding Engineering Educator Award.

Contents of the book:

Chapter 1: Number Systems
1.1 Introduction
1.2 Number Systems
1.3 Conversion of Bases
1.4 Binary Arithmetic
1.4.1 Binary Addition
1.4.2 Complements
1.4.3 Binary Subtraction Direct Binary Subtraction Binary Subtraction Using the 1's Complement Method Binary Subtraction Using the 2's Complement Method
1.4.4 Binary Multiplication
1.4.5 Binary Division
1.5 Signed and Unsigned Numbers
1.6 Floating-Point Binary Numbers
1.7 Binary Codes
1.7.1 Weighted Codes
1.7.2 Non-weighted Codes
1.7.3 Error-Detecting Codes
1.7.4 Error-Correcting Codes
1.7.5 Alphanumeric Codes
1.8 Introduction to VHDL
1.8.1 VHDL Levels of Abstraction
1.8.2 Using VHDL for Design Synthesis
1.8.3 Design Flow
1.8.4 Modularity and Hierarchy
1.8.5 VHDL Keywords
1.8.6 Naming Convention
1.8.7 Signal Declarations
1.8.8 BIT and BIT_VECTOR Types
1.8.11 SIGNED and UNSIGNED Types
1.8.12 INTEGER Types
1.8.13 BOOLEAN Types
1.8.14 Enumeration Types
1.8.15 Physical Types
1.8.16 Composite Types
1.8.17 Subtypes
1.8.18 Aliases
1.8.19 Type Conversion
1.8.20 Constant Declarations
1.8.21 Variable Declarations
1.8.22 File Declarations
1.8.23 Operators

Chapter 2: Logic Gates and Boolean Algebra
2.1 Introduction
2.2 Logic Gates
2.2.1 Inverter or NOT Operation
2.2.2 AND Operation
2.2.3 OR Operation
2.2.4 NAND Operation
2.2.5 NOR Operation
2.2.6 Exclusive OR Operation
2.2.7 Exclusive NOR Operation
2.3 Boolean Functions
2.3.1 Combinational Network Synthesis
2.3.2 Combinational Network Analysis
2.3.3 Constructing the Truth Table
2.3.4 The Complement of a Function
2.4 Laws and Theorems of Boolean Algebra
2.4.1 Principle of Duality
2.4.2 Operations with 0 and 1
2.4.3 Idempotent Laws
2.4.4 Involution Law
2.4.5 Laws of Complementarity
2.4.6 Commutative Laws
2.4.7 Associative Laws
2.4.8 Distributive Laws
2.4.9 Simplification Theorems
2.4.10 De Morgan's Theorems
2.4.11 Theorems for Multiplying Out and Factoring
2.5 Standard and Canonical Forms
2.6 Incompletely Specified Functions
2.7 Logic Gates Using VHDL
2.7.1 ENTITY Declaration
2.7.2 ARCHITECTURE Declaration
2.7.3 COMPONENT and PACKAGE Declaration
2.7.4 Concurrent Assignment Statements
2.7.5 Sequential Assignment Statements
2.7.6 Buffer
2.7.7 Inverter
2.7.8 AND Gate
2.7.9 NAND Gate
2.7.10 OR Gate
2.7.11 NOR Gate
2.7.12 Exclusive OR Gate
2.7.13 Exclusive NOR Gate
2.7.14 Examples on Design Hierarchy
2.8 Design with Logic Gates

Chapter 3: Analysis and Design of Combinational Networks
3.1 Introduction
3.2 Irredundant and Minimal Functions
3.3 Karnaugh Maps
3.3.1 Two-Variable Map
3.3.2 Three-Variable Map
3.3.3 Four-Variable Map
3.3.4 Five-Variable Map
3.3.5 Six-Variable Map
3.3.6 Properties of Minimal Functions
3.3.7 Incompletely Specified Functions
3.3.8 Complement of a Function
3.3.9 Canonical and Standard Forms from the Map
3.3.10 Two-level Implementations
3.3.11 Plotting Functions on the Map
3.4 Design of Multiple-Output Combinational Networks
3.5 Variable-Dependent Functions & Map-Entered Variables
3.6 Propagation Delay and Timing Hazards
3.7 Quine-McCluskey Method
3.7.1 Prime Implicants Chart
3.7.2 Incompletely Specified Functions
3.7.3 Petrick's Method
3.8 Design of Combinational Networks Using VHDL
3.8.1 BCD To 7-Segmnet Decoder
3.9 Timing Verification

Chapter 4: Combinational Network Design With Standard Modules
4.1 Introduction
4.2 Decoders
4.2.1 Decoder Expansion
4.2.2 Implementing Switching Functions with Decoders
4.2.3 Code Converters
4.3 Encoders
4.4 Multiplexers
4.4.1 Multiplexer Expansion
4.4.2 Implementing Switching Functions with Multiplexers
4.5 Demultiplexers
4.6 Read-Only Memory (ROM)
4.6.1 Implementing Switching Functions with ROMs
4.7 Programmable Logic Array
4.8 Programmable Array Logic
4.9 Complex Programmable Logic Device
4.10 Field Programmable Gate Array (FPGA)
4.11 Design of Standard Modules Using VHDL
4.11.1 Concurrent and Sequential VHDL Statements
4.11.2 Decoders
4.11.3 Encoders
4.11.4 Code Conversion
4.11.5 Multiplexers
4.11.6 Demultiplexers

Chapter 5: Arithmetic Combinational Network Design
5.1 Introduction
5.2 Binary Adders for Positive Integers
5.2.1 Carry-Ripple Adder
5.2.2 Carry-Lookahead Adder
5.2.3 Binary Subtracters
5.3 Magnitude Comparators
5.4 Binary Multiplier
5.5 Arithmetic and Logic Unit
5.6 Design of Arithmetic Combinational Networks Using VHDL
5.6.1 Half-Adder
5.6.2 Full-Adder
5.6.3 N-Bit Adder
5.6.4 Binary Subtractors
5.6.5 Magnitude Comparators
5.6.6 Binary Multipliers
5.6.7 Arithmetic and Logical Unit (ALU)

Chapter 6: Flip-Flops
6.1 Introduction
6.2 Representations of Sequential Networks
6.3 Memory Elements
6.4 The SR Flip-Flop
6.5 The Clocked SR Flip-Flop
6.6 The JK Flip-Flop
6.7 The T-Type Flip-Flop
6.8 The D-Type Flip-Flop
6.9 Characteristic Equations
6.10 Tri-state Logic
6.11 Modular Latches and Flip-Flops
6.12 Flip-Flops Design Using VHDL
6.12.1 D-Type Latch
6.12.2 D-Type Flip-Flop
6.12.3 JK Flip-Flop
6.12.4 T-Type Flip-Flop

Chapter 7: Digital Counters and Registers
7.1 Introduction
7.2 Digital Counters
7.3 Ripple (Asynchronous) Counters
7.3.1 Binary Ripple Down-Counter
7.3.2 Binary Ripple Up-Down Counter
7.3.3 Other Ripple Counters
7.4 Synchronous Counters
7.4.1 Design of Synchronous Counter Using D Flip-Flops
7.4.2 Design of Synchronous Counter Using T Flip-Flops
7.4.3 Design of Synchronous Counter Using JK Flip-Flops
7.4.4 Design of Synchronous Counter Using SR Flip-Flops
7.5 Synchronous BCD Counter
7.6 Synchronous Up-Down Counter
7.7 Synchronous Binary Counter with Parallel Load
7.8 Code Converters
7.9 Modular Counters
7.10 Registers
7.10.1 Parallel-in/Parallel-out Shift Register
7.10.2 Serial-In/Serial-Out Shift Register
7.10.3 Serial-In/Parallel-Out Shift Register
7.10.4 Parallel-In/Serial-Out Shift Register
7.10.5 Bidirectional Shift Registers
7.10.6 Universal Shift Registers
7.10.7 Ring Counter (Cyclic or Circular Shift Register)
7.10.8 Johnson Counter (Twisted Ring Counter)
7.11 Modular Registers
7.12 Design of Counters and Registers Using VHDL
7.12.1 Synchronous Counters with Common Clear
7.12.2 Synchronous Counters with Parallel Load
7.12.3 Synchronous Counters with Parallel Load Using INTEGER
7.12.4 Counters with Parallel Load and Asy. Resets/Presets
7.12.5 Counters with Parallel Load, Asy. Resets and Presets
7.12.6 Counters with Parallel Load and Product-Term Resets
7.12.7 Counters with Tri-State Outputs
7.12.8 Synchronous Down-Counter
7.12.9 RTL Counter Design
7.12.10 Registers
7.12.11 Unidirectional Shift Registers
7.12.12 Bidirectional Shift Registers

Chapter 8: Analysis of Synchronous Sequential Networks
8.1 Introduction
8.2 Models for Synchronous Sequential Networks
8.2.1 Mealy Model
8.2.2 Moore Model
8.2.3 Medvedev Model
8.2.4 Mixed Mealy-Moore Model
8.3 Analysis of Sequential Networks Using State Graphs or Tables
8.4 Analysis of Sequential Networks by Signal Tracing
8.5 Analysis of Sequential Networks by Deriving the State Graph
8.6 Analysis of Sequential Networks Using VHDL
8.6.1 One-Process FSM Code
8.6.2 Two-Process FSM Code

Chapter 9: Design of Synchronous Sequential Networks
"Derivation of State Graphs"
9.1 Introduction
9.2 Guidelines for Derivation of State Graphs
9.3 Mealy Sequential Network for a Sequence Detector
9.4 Moore Sequential Network for a Sequence Detector
9.5 Design of a Complex Sequence Detector
9.6 Design of a Two-Input One-Output Sequential Network
9.7 Design of a Two-Input Two-Output Sequential Network
9.8 Design of a Serial Data Code Converter
9.9 Design Examples
9.10 Design Examples with VHDL

Chapter 10: Design of Synchronous Sequential Networks
"Reduction of State Tables"
10.1 Introduction
10.2 Redundant and Equivalent States
10.3 Reduction of State Tables by Inspection
10.4 Reduction of State Table Using the Merger Graph
10.5 Reduction of State Table Using the Implication Table
10.6 Reduction of State Tables Using the Partitioning Method
10.7 Equivalent Finite State Machines
10.8 Design Examples
10.9 Design Examples with VHDL

Chapter 11: Design of Synchronous Sequential Networks
"State Assignment"
11.1 Introduction
11.2 Distinct State Assignments
11.3 State Assignment Strategies
11.4 State Assignment Guidelines
11.5 State Assignment Using Partitions
11.5.1 Algebraic Properties of Partitions
11.5.2 Useful Partitions
11.6 Design Examples With VHDL

Chapter 12: Design of Synchronous Sequential Networks
12.1 Introduction
12.2 Hardware Implementation Procedure
12.3 Design of Sequential Networks Using Logic Gates
12.4 Design of Sequential Networks Using ROMs
12.5 Design of Sequential Networks Using PLAs
12.6 Design of Sequential Networks Using PALs
12.7 Other Programmable Logic Devices
12.8 Design Examples
12.9 Design Examples With VHDL

Chapter 13: Digital System Design Using ASM Charts
13.1 Introduction
13.2 Algorithmic State Machine Charts
13.3 Conversions of ASM Charts
13.4 Equivalent ASM Charts
13.5 The Design Process
13.6 Design of Parallel Multiplier
13.6.1 Datapath Section
13.6.2 Control-Logic Section
13.6.3 Control-Logic Section Design With Flip-Flops and Logic Gates
13.6.4 Control-Logic Section Design With Flip-Flops and Decoder
13.6.5 Control-Logic Section Design With Flip-Flops and Multiplexers
13.6.6 Control-Logic Section Design With One Flip-Flop Per State
13.7 Design Examples With VHDL
13.8 Techniques and Heuristics for Design Reliability
13.8.1 Documentation
13.8.2 Modularity
13.8.3 Clock Synchronization
13.8.4 Asynchronous Inputs
13.8.5 Interface Compatibility
13.8.6 Fan-In and Fan-Out
13.8.7 Noise on Power Lines
13.8.8 Signal Integrity
13.8.9 Impedance Matching
13.8.10 Flip-Flops Initialization
13.8.11 Electromagnetic Interface (EMI)

Chapter 14: Asynchronous Sequential Networks: Analysis and Design
14.1 Introduction
14.2 Fundamental-Mode Networks
14.3 Pulse-Mode Networks
14.4 Analysis of Pulse-Mode Networks
14.5 Design of Pulse-Mode Networks
14.6 Analysis of Fundamental-Mode Networks
14.7 Design of Fundamental-Mode Networks
14.8 Races and Cycles
14.9 Design Examples With VHDL

Appendix I: Using Quartus II CAD Software
Appendix II: Reserved VHDL Words