Ch01 Notes

  • View
    10

  • Download
    0

Embed Size (px)

DESCRIPTION

Ch01 Notes

Transcript

  • E&CE 327: Digital Systems EngineeringCourse Notes

    (with Solutions)

    2015t1 (Winter)

    Instructor: Rodolfo Pellizzoni

    Notes by: Mark Aagaard

    University of WaterlooDept of Electrical and Computer Engineering

  • ECE-327: 2015t1 (Winter)0.0 1 ii

  • Contents

    1 Fundamentals of VHDL 131.1 Introduction to VHDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

    1.1.1 Levels of Abstraction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131.1.2 VHDL Origins and History . . . . . . . . . . . . . . . . . . . . . . . . . . 141.1.3 Semantics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161.1.4 Synthesis of a Simulation-Based Language . . . . . . . . . . . . . . . . . 171.1.5 Solution to Synthesis Sanity . . . . . . . . . . . . . . . . . . . . . . . . . 181.1.6 Standard Logic 1164 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

    1.2 Comparison of VHDL to Other Hardware Description Languages . . . . . . . . . 191.2.1 VHDL Disadvantages . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191.2.2 VHDL Advantages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191.2.3 VHDL and Other Languages . . . . . . . . . . . . . . . . . . . . . . . . . 20

    1.2.3.1 VHDL vs Verilog . . . . . . . . . . . . . . . . . . . . . . . . . 201.2.3.2 VHDL vs System Verilog . . . . . . . . . . . . . . . . . . . . . 201.2.3.3 VHDL vs SystemC . . . . . . . . . . . . . . . . . . . . . . . . 201.2.3.4 Summary of VHDL Evaluation . . . . . . . . . . . . . . . . . . 21

    1.3 Overview of Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211.3.1 Syntactic Categories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211.3.2 Library Units . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221.3.3 Entities and Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . 221.3.4 Concurrent Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251.3.5 Component Declaration and Instantiations . . . . . . . . . . . . . . . . . . 271.3.6 Processes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271.3.7 Sequential Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291.3.8 A Few More Miscellaneous VHDL Features . . . . . . . . . . . . . . . . 30

    1.4 Concurrent vs Sequential Statements . . . . . . . . . . . . . . . . . . . . . . . . . 301.4.1 Concurrent Assignment vs Process . . . . . . . . . . . . . . . . . . . . . . 301.4.2 Conditional Assignment vs If Statements . . . . . . . . . . . . . . . . . . 301.4.3 Selected Assignment vs Case Statement . . . . . . . . . . . . . . . . . . . 311.4.4 Coding Style . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

    1.5 Overview of Processes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321.5.1 Combinational Process vs Clocked Process . . . . . . . . . . . . . . . . . 341.5.2 Latch Inference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351.5.3 Combinational vs Flopped Signals . . . . . . . . . . . . . . . . . . . . . . 37

    iii

  • CONTENTS iv

    1.6 VHDL Execution: Delta-Cycle Simulation . . . . . . . . . . . . . . . . . . . . . . 371.6.1 Simple Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371.6.2 Temporal Granularities of Simulation . . . . . . . . . . . . . . . . . . . . 381.6.3 Zero-Delay Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391.6.4 Intuition Behind Delta-Cycle Simulation . . . . . . . . . . . . . . . . . . 40

    1.6.4.1 Introduction to Delta-Cycle Simulation . . . . . . . . . . . . . . 401.6.4.2 Intuitive Rules for Delta-Cycle Simulation . . . . . . . . . . . . 411.6.4.3 Example of Delta-Cycles: Back-to-Back Buffers . . . . . . . . . 421.6.4.4 Example of Projected Assignment: Back-to-Back Buffers . . . . 431.6.4.5 Example of Projected Assignment: Back-to-Back Flip-Flops . . 431.6.4.6 Example of Projected Assignment with Combinational Loop . . 45

    1.6.5 VHDL Delta-Cycle Simulation . . . . . . . . . . . . . . . . . . . . . . . . 481.6.5.1 Informal Description of Algorithm . . . . . . . . . . . . . . . . 481.6.5.2 Example: VHDL Simulation of Back-to-Back Buffers . . . . . . 501.6.5.3 Definitions and Algorithm . . . . . . . . . . . . . . . . . . . . . 511.6.5.4 Example: Delta-Cycle Simulation of Back-to-Back Flip-Flops . 521.6.5.5 Example: VHDL Simulation of Combinational Loop . . . . . . 551.6.5.6 Rules and Observations for Drawing Delta-Cycle Simulations . . 56

    1.6.6 External Inputs and Flip-Flops . . . . . . . . . . . . . . . . . . . . . . . . 571.7 Register-Transfer-Level Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . 60

    1.7.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601.7.2 Technique for Register-Transfer Level Simulation . . . . . . . . . . . . . . 621.7.3 Examples of RTL Simulation . . . . . . . . . . . . . . . . . . . . . . . . . 63

    1.7.3.1 RTL Simulation Example 1 . . . . . . . . . . . . . . . . . . . . 631.8 Simple RTL Simulation in Software . . . . . . . . . . . . . . . . . . . . . . . . . 66

    1.8.1 Introductory Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . 661.8.2 Regs and Comb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 671.8.3 Inputs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 701.8.4 Pipeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

    1.9 Variables in VHDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 731.9.1 Semantics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 741.9.2 Usage of Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

    1.10 Delta-Cycle Simulation with Delays . . . . . . . . . . . . . . . . . . . . . . . . . 751.10.1 Transport and Inertial Delay . . . . . . . . . . . . . . . . . . . . . . . . . 751.10.2 Delayed Assignment Semantics . . . . . . . . . . . . . . . . . . . . . . . 761.10.3 Simulation Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 791.10.4 Waveform Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83

    1.11 VHDL and Hardware Building Blocks . . . . . . . . . . . . . . . . . . . . . . . . 841.11.1 Basic Building Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . 841.11.2 Deprecated Building Blocks for RTL . . . . . . . . . . . . . . . . . . . . 85

    1.11.2.1 An Aside on Flip-Flops and Latches . . . . . . . . . . . . . . . 851.11.2.2 Deprecated Hardware . . . . . . . . . . . . . . . . . . . . . . . 85

    1.11.3 Hardware and Code for Flops . . . . . . . . . . . . . . . . . . . . . . . . 861.11.3.1 Flops with Waits and Ifs . . . . . . . . . . . . . . . . . . . . . . 861.11.3.2 Flops with Synchronous Reset . . . . . . . . . . . . . . . . . . 86

  • v CONTENTS

    1.11.3.3 Flops with Chip-Enable . . . . . . . . . . . . . . . . . . . . . . 871.11.3.4 Flop with Chip-Enable and Mux on Input . . . . . . . . . . . . . 871.11.3.5 Flops with Chip-Enable, Muxes, and Reset . . . . . . . . . . . . 88

    1.11.4 An Example Sequential Circuit . . . . . . . . . . . . . . . . . . . . . . . 881.12 Synthesizable vs Non-Synthesizable Code . . . . . . . . . . . . . . . . . . . . . . 92

    1.12.1 Initial Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 931.12.2 Wait For . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 931.12.3 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 931.12.4 Bits and Booleans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 931.12.5 Assignments before Wait Statement . . . . . . . . . . . . . . . . . . . . . 941.12.6 Different Wait Conditions . . . . . . . . . . . . . . . . . . . . . . . . . . 941.12.7 Multiple if rising edge in Process . . . . . . . . . . . . . . . . . . . . . 941.12.8 if rising edge and wait in Same Process . . . . . . . . . . . . . . . . . 961.12.9 if rising edge with else Clause . . . . . . . . . . . . . . . . . . . . . . 961.12.10 Loop with Both Comb and Clocked Paths . . . . . . . . . . . . . . . . . . 961.12.11 wait Inside of a for loop . . . . . . . . . . . . . . . . . . . . . . . . . 98

    1.13 Guidelines for Desirable Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . 981.13.1 Know Your Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . 991.13.2 Latches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1001.13.3 Asynchronous Reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1011.13.4 Combinational Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1011.13.5 Using a Data Signal as a Clock . . . . . . . . . . . . . . . . . . . . . . . . 1021.13.6 Using a Clock Signal as Data . . . . . . . . . . . . . . . . . . . . . . . . . 1021.13.7 Tri-State Buffers and Signals . . . . . . . . . . . . . . . . . . . . . . . . . 1031.13.8 Multiple Drivers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

    2 Additional Features of VHDL 1432.1 Literals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144

    2.1.1 Numeric Literals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1442.1.2 Bit-String Literals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145

    2.2 Arrays and Vectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1462.2.1 Declarations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1462.2.2 Indexing, Slicing, Concatenation, Aggregates . . . . . . . . . . . . . . . . . 148

    2.3 Arithmetic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1512.3.1 Arithmetic Packages . . . . . . . . . . . . . . . .