ece 327 slides vhdl verilog digital hardware design

Download ECE 327 Slides VHDL Verilog Digital Hardware Design

Post on 12-Sep-2014

397 views

Category:

Documents

9 download

Embed Size (px)

TRANSCRIPT

E&CE 327: Digital Systems Engineering Lecture Slides

Mark Aagaard 2011t1Winter University of Waterloo Dept of Electrical and Computer Engineering

ContentsI Lecture Notes1 VHDL 1.1 Introduction to VHDL . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.1 Levels of Abstraction . . . . . . . . . . . . . . . . . . . . . 1.1.2 VHDL Origins and History . . . . . . . . . . . . . . . . . . 1.1.3 Semantics . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.4 Synthesis of a Simulation-Based Language . . . . . . . . 1.1.5 Solution to Synthesis Sanity . . . . . . . . . . . . . . . . . 1.1.6 Standard Logic 1164 . . . . . . . . . . . . . . . . . . . . . 1.2 Comparison of VHDL to Other Hardware Description Languages . . . . . . . . . . . . . . . .

13 4 4 5 6 11 12 13 14

ii 1.3 Overview of Syntax . . . . . . . . . . . . . . . . . 1.3.1 Syntactic Categories . . . . . . . . . . . . . 1.3.2 Library Units . . . . . . . . . . . . . . . . . 1.3.3 Entities and Architecture . . . . . . . . . . . 1.3.4 Concurrent Statements . . . . . . . . . . . 1.3.5 Component Declaration and Instantiations . 1.3.6 Processes . . . . . . . . . . . . . . . . . . 1.3.7 Sequential Statements . . . . . . . . . . . . 1.3.8 A Few More Miscellaneous VHDL Features 1.4 Concurrent vs Sequential Statements . . . . . . . 1.4.1 Concurrent Assignment vs Process . . . . 1.4.2 Conditional Assignment vs If Statements . 1.4.3 Selected Assignment vs Case Statement . 1.4.4 Coding Style . . . . . . . . . . . . . . . . . 1.5 Overview of Processes . . . . . . . . . . . . . . . 1.5.1 Combinational Process vs Clocked Process 1.5.2 Latch Inference . . . . . . . . . . . . . . . . 1.6 Details of Process Execution . . . . . . . . . . . . 1.6.1 Simple Simulation . . . . . . . . . . . . . . 1.6.2 Temporal Granularities of Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

CONTENTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 14 14 15 18 21 21 26 27 27 28 29 30 31 32 36 43 46 46 48

CONTENTS 1.6.3 Intuition Behind Delta-Cycle Simulation . . . . . 1.6.4 Denitions and Algorithm . . . . . . . . . . . . . 1.6.4.1 Process Modes . . . . . . . . . . . . . 1.6.4.2 Simulation Algorithm . . . . . . . . . . 1.6.4.3 Delta-Cycle Denitions . . . . . . . . . 1.6.5 Example 1: Process Execution (Bamboozle) . . 1.6.6 Example 2: Process Execution (Flummox) . . . . 1.6.7 Ex: Need for Provisonal Asn . . . . . . . . . . . 1.6.8 Delta-Cycle Simulations of Flip-Flops . . . . . . 1.7 Register-Transfer-Level Simulation . . . . . . . . . . . . 1.7.1 Overview . . . . . . . . . . . . . . . . . . . . . . 1.7.2 Technique for Register-Transfer Level Simulation 1.7.3 Examples of RTL Simulation . . . . . . . . . . . 1.7.3.1 RTL Simulation Example 1 . . . . . . . 1.8 VHDL and Hardware Building Blocks . . . . . . . . . . . 1.8.1 Basic Building Blocks . . . . . . . . . . . . . . . 1.8.2 Deprecated Building Blocks for RTL . . . . . . . 1.8.3 Hardware and Code for Flops . . . . . . . . . . . 1.8.3.1 Flops with Waits and Ifs . . . . . . . . . 1.8.3.2 Flops with Synchronous Reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

iii 48 50 50 54 57 58 58 63 69 78 79 80 81 81 85 85 90 92 92 94

iv

CONTENTS 1.8.3.3 Flop with Chip-Enable and Mux on Input . . 1.8.3.4 Flops with Chip-Enable, Muxes, and Reset . 1.8.4 An Example Sequential Circuit . . . . . . . . . . . . . 1.9 Arrays and Vectors . . . . . . . . . . . . . . . . . . . . . . . . 1.10 Arithmetic . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.10.1 Arithmetic Packages . . . . . . . . . . . . . . . . . . 1.10.2 Shift and Rotate Operations . . . . . . . . . . . . . . 1.10.3 Overloading of Arithmetic . . . . . . . . . . . . . . . 1.10.4 Different Widths and Arithmetic . . . . . . . . . . . . 1.10.5 Overloading of Comparisons . . . . . . . . . . . . . 1.10.6 Different Widths and Comparisons . . . . . . . . . . 1.10.7 Type Conversion . . . . . . . . . . . . . . . . . . . . 1.11 Synthesizable vs Non-Synthesizable Code . . . . . . . . . . 1.11.1 Unsynthesizable Code . . . . . . . . . . . . . . . . . 1.11.1.1 Initial Values . . . . . . . . . . . . . . . . . 1.11.1.2 Wait For . . . . . . . . . . . . . . . . . . . . 1.11.1.3 Different Wait Conditions . . . . . . . . . . 1.11.1.4 Multiple if rising edge in Process . . . . . 1.11.1.5 if rising edge and wait in Same Process 1.11.1.6 if rising edge with else Clause . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 102 102 102 103 103 104 104 104 104 105 106 108 109 109 110 111 113 114 115

CONTENTS

v

1.11.1.7 if rising edge Inside a for Loop . . . . . . . . . . 116 1.11.1.8 wait Inside of a for loop . . . . . . . . . . . . . . 118 1.12 Synthesizable VHDL Coding Guidelines . . . . . . . . . . . . . . . 120 2 RTL Design with VHDL 2.1 Prelude to Chapter . . . . . . . . . . . . . . . . . . . . . . 2.2 FPGA Background and Coding Guidelines . . . . . . . . 2.2.1 Generic FPGA Hardware . . . . . . . . . . . . . . 2.2.1.1 Generic FPGA Cell . . . . . . . . . . . . 2.2.2 Area Estimation . . . . . . . . . . . . . . . . . . . 2.2.2.1 Interconnect for Generic FPGA . . . . . . 2.2.2.2 Clocks for Generic FPGAs . . . . . . . . 2.2.2.3 Special Circuitry in FPGAs . . . . . . . . 2.2.3 Generic-FPGA Coding Guidelines . . . . . . . . . 2.3 Design Flow . . . . . . . . . . . . . . . . . . . . . . . . . 2.4 Algorithms and High-Level Models . . . . . . . . . . . . . 2.5 Finite State Machines in VHDL . . . . . . . . . . . . . . . 2.5.1 Introduction to State-Machine Design . . . . . . . 2.5.1.1 Mealy vs Moore State Machines . . . . . 2.5.1.2 Introduction to State Machines and VHDL 121 122 122 122 123 128 134 134 135 139 143 143 144 144 144 147

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

vi

CONTENTS 2.5.1.3 Explicit vs Implicit State Machines . . . . . . . 2.5.2 Implementing a Simple Moore Machine . . . . . . . . . 2.5.2.1 Implicit Moore State Machine . . . . . . . . . . 2.5.2.2 Explicit Moore with Flopped Output . . . . . . 2.5.2.3 Explicit Moore with Combinational Outputs . . 2.5.2.4 Explicit-Current+Next Moore with Concurrent signment . . . . . . . . . . . . . . . . . . . . . 2.5.2.5 E-C+N Moore with Comb Proc . . . . . . . . . 2.5.3 Implementing a Simple Mealy Machine . . . . . . . . . 2.5.4 Reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.5.5 State Encoding . . . . . . . . . . . . . . . . . . . . . . . 2.6 Dataow Diagrams . . . . . . . . . . . . . . . . . . . . . . . . . 2.6.1 Dataow Diagrams Overview . . . . . . . . . . . . . . . 2.6.2 Dataow Diagrams, Hardware, and Behaviour . . . . . 2.6.3 Dataow Diagram Execution . . . . . . . . . . . . . . . 2.6.4 Performance Estimation . . . . . . . . . . . . . . . . . . 2.6.5 Area Estimation . . . . . . . . . . . . . . . . . . . . . . 2.6.6 Design Analysis . . . . . . . . . . . . . . . . . . . . . . 2.6.7 Area / Performance Tradeoffs . . . . . . . . . . . . . . . 2.7 Design Example: Massey . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . As. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 154 155 157 159 161 163 165 166 170 171 171 184 188 198 199 201 203 206

CONTENTS 2.8 Design Example: Vanier . . . . . . . . . . . . . . . . . 2.8.1 Requirements . . . . . . . . . . . . . . . . . . 2.8.2 Algorithm . . . . . . . . . . . . . . . . . . . . . 2.8.3 Initial Dataow Diagram . . . . . . . . . . . . . 2.8.4 Reschedule to Meet Requirements . . . . . . . 2.8.5 Optimize Resources . . . . . . . . . . . . . . . 2.8.6 Assign Names to Registered Values . . . . . . 2.8.7 Input/Output Allocation . . . . . . . . . . . . . 2.8.8 Tangent: Combinational Outputs . . . . . . . . 2.8.9 Register Allocation . . . . . . . . . . . . . . . . 2.8.10 Datapath Allocation . . . . . . . . . . . . . . . 2.8.11 Hardware Block Diagram and State Machine 2.8.11.1 Control for Registers . . . . . . . . . 2.8.11.2 Control for Datapath Components . 2.8.11.3 Control for State . . . . . . . . . . . 2.8.11.4 Complete State Machine Table . . . 2.8.12 VHDL Code with Explicit State Machine . . . 2.8.13 Peephole Optimizations . . . . . . . . . . . . 2.8.14 Notes and Observations . . . . . . . . . . . . 2.9 Pipelining . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

vii 206 208 209 210 211 213 216 217 220 221 223 224 225 228 230 231 233 237 240 242

viii 2.9.1 Introduction to Pipelining . . . . . . . . . . . . . 2.9.2 Partially Pipelined . . . . . . . . . . . . . . . . . 2.9.3 Terminology . . . . . . . . . . . . . . . . . . . . . Design Example: Pipelined Massey . . . . . . . . . . . Memory Arrays and RTL Design . . . . . . . . . . . . 2.11.1 Memory Operations . . . . . . . . . . . . . . . 2.11.2 Memory Arrays in VHDL . . . . . . . . . . . . . 2.11.3 Data Dependen

Recommended

View more >