Lecture 4. VHDL Fundamentals. George Mason University

Similar documents
Lecture 4. VHDL Fundamentals. Required reading. Example: NAND Gate. Design Entity. Example VHDL Code. Design Entity

CDA 4253 FPGA System Design Introduction to VHDL. Hao Zheng Dept of Comp Sci & Eng USF

Lecture 4. VHDL Basics. Simple Testbenches

VHDL Basics. Mehdi Modarressi. Department of Electrical and Computer Engineering, University of Tehran. ECE381(CAD), Lecture 4:

Introduction to VHDL #1

Introduction to VHDL #3

ECE 545 Lecture 5. Data Flow Modeling in VHDL. George Mason University

Digital Systems Design

ECE 448 Lecture 3. Combinational-Circuit Building Blocks. Data Flow Modeling of Combinational Logic

ECE 448 Lecture 3. Combinational-Circuit Building Blocks. Data Flow Modeling of Combinational Logic

VHDL for FPGA Design. by : Mohamed Samy

Digital Systems Design

Lecture 3 Introduction to VHDL

Introduction to VHDL

1 ST SUMMER SCHOOL: VHDL BOOTCAMP PISA, JULY 2013

CSCI Lab 3. VHDL Syntax. Due: Tuesday, week6 Submit to: \\fs2\csci250\lab-3\

VHDL is a hardware description language. The code describes the behavior or structure of an electronic circuit.

Hardware Modeling. VHDL Basics. ECS Group, TU Wien

VHDL for Complex Designs

Design units can NOT be split across different files

ECE 545 Lecture 8. Data Flow Description of Combinational-Circuit Building Blocks. George Mason University

Multi-valued Logic. Standard Logic IEEE 1164 Type std_ulogic is ( U, uninitialized

ECE 545 Lecture 4. Simple Testbenches. George Mason University

Lattice VHDL Training

Introduction to VHDL. Main language concepts

Lecture 7. Standard ICs FPGA (Field Programmable Gate Array) VHDL (Very-high-speed integrated circuits. Hardware Description Language)

UNIT I Introduction to VHDL VHDL: - V -VHSIC, H - Hardware, D - Description, L Language Fundamental section of a basic VHDL code Library :

INTRODUCTION TO VHDL. Lecture 5 & 6 Dr. Tayab Din Memon Assistant Professor Department of Electronic Engineering, MUET

ECE 545 Lecture 6. Behavioral Modeling of Sequential-Circuit Building Blocks. George Mason University

ECE U530 Digital Hardware Synthesis. Course Accounts and Tools

Design Entry: Schematic Capture and VHDL ENG241: Digital Design Week #4

EEL 4783: Hardware/Software Co-design with FPGAs

Basic Language Constructs of VHDL

Hardware Description Language VHDL (1) Introduction

310/ ICTP-INFN Advanced Tranining Course on FPGA and VHDL for Hardware Simulation and Synthesis 27 November - 22 December 2006

VHDL And Synthesis Review

ECE 448 Lecture 4. Sequential-Circuit Building Blocks. Mixing Description Styles

Constructing VHDL Models with CSA

Lecture 1: VHDL Quick Start. Digital Systems Design. Fall 10, Dec 17 Lecture 1 1

CS211 Digital Systems/Lab. Introduction to VHDL. Hyotaek Shim, Computer Architecture Laboratory

Combinational Logic COMB. LOGIC BLOCK. A Combinational Logic Block is one where the outputs depend only on the current inputs

DIGITAL LOGIC WITH VHDL (Fall 2013) Unit 1

Assignment. Last time. Last time. ECE 4514 Digital Design II. Back to the big picture. Back to the big picture

Very High Speed Integrated Circuit Har dware Description Language

Abi Farsoni, Department of Nuclear Engineering and Radiation Health Physics, Oregon State University

ECE 545 Lecture 7. Modeling of Circuits with a Regular Structure. Aliases, Attributes, Packages. Mixing Design Styles. George Mason University

Menu. Introduction to VHDL EEL3701 EEL3701. Intro to VHDL

C-Based Hardware Design

Advanced Training Course on FPGA Design and VHDL for Hardware Simulation and Synthesis. 26 October - 20 November, 2009

EE 459/500 HDL Based Digital Design with Programmable Logic. Lecture 4 Introduction to VHDL

ENGIN 241 Digital Systems with Lab

BASIC VHDL LANGUAGE ELEMENTS AND SEMANTICS. Lecture 7 & 8 Dr. Tayab Din Memon

Logic and Computer Design Fundamentals VHDL. Part 1 Chapter 4 Basics and Constructs

Inthis lecture we will cover the following material:

Mridula Allani Fall Fall

FPGA Design. Part III - Combinatorial VHDL. Thomas Lenzi

Lecture 9. VHDL, part IV. Hierarchical and parameterized design. Section 1 HIERARCHICAL DESIGN

VHDL: A Crash Course

Chapter 6 Combinational-Circuit Building Blocks

Review. LIBRARY list of library names; USE library.package.object; ENTITY entity_name IS generic declarations PORT ( signal_name(s): mode signal_type;

!"#$%&&"'(')"*+"%,%-".#"'/"'.001$$"

VHDL: Code Structure. 1

Entity, Architecture, Ports

Lecture 3. VHDL Design Units and Methods. Entity, Architecture, and Components Examples of Combinational Logic Hands-on in the Laboratory

Lecture 3: Modeling in VHDL. EE 3610 Digital Systems

Lecture 12 VHDL Synthesis

IE1204 Digital Design L7: Combinational circuits, Introduction to VHDL

VHDL. Official Definition: VHSIC Hardware Description Language VHISC Very High Speed Integrated Circuit

Concurrent Signal Assignment Statements (CSAs)

Getting Started with VHDL

Verilog Design Principles

Contents. Appendix D VHDL Summary Page 1 of 23

TSIU03, SYSTEM DESIGN LECTURE 2

CS232 VHDL Lecture. Types

Review of Digital Design with VHDL

Hardware Modeling. VHDL Syntax. Vienna University of Technology Department of Computer Engineering ECS Group

Verilog Module 1 Introduction and Combinational Logic

OUTLINE SYSTEM-ON-CHIP DESIGN. GETTING STARTED WITH VHDL September 3, 2018 GAJSKI S Y-CHART (1983) TOP-DOWN DESIGN (1)

Lecture 3. VHDL Design Units and Methods. Notes. Notes. Notes

VHDL: skaitmeninių įtaisų projektavimo kalba. 2 paskaita Pradmenys

VHDL for Synthesis. Course Description. Course Duration. Goals

5. VHDL - Introduction - 5. VHDL - Design flow - 5. VHDL - Entities and Architectures (1) - 5. VHDL - Entities and Architectures (2) -

Hardware description languages

ECE 545 Lecture 9. Modeling of Circuits with a Regular Structure. Aliases, Attributes, Packages. George Mason University

Verilog. What is Verilog? VHDL vs. Verilog. Hardware description language: Two major languages. Many EDA tools support HDL-based design

IT T35 Digital system desigm y - ii /s - iii

Two HDLs used today VHDL. Why VHDL? Introduction to Structured VLSI Design

Basic Language Concepts

Architecture des Ordinateurs I

structure syntax different levels of abstraction

Here is a list of lecture objectives. They are provided for you to reflect on what you are supposed to learn, rather than an introduction to this

VHDL Testbench. Test Bench Syntax. VHDL Testbench Tutorial 1. Contents

Verilog. Verilog for Synthesis

Verilog HDL is one of the two most common Hardware Description Languages (HDL) used by integrated circuit (IC) designers. The other one is VHDL.

2/14/2016. Hardware Synthesis. Midia Reshadi. CE Department. Entities, Architectures, and Coding.

Lab # 5. Subprograms. Introduction

1 Design Process HOME CONTENTS INDEX. For further assistance, or call your local support center

What Is VHDL? VHSIC (Very High Speed Integrated Circuit) Hardware Description Language IEEE 1076 standard (1987, 1993)

Schematic design. Gate level design. 0 EDA (Electronic Design Assistance) 0 Classical design. 0 Computer based language

Computer-Aided Digital System Design VHDL

Transcription:

Lecture 4 VHDL Fundamentals George Mason University

Required reading P. Chu, RTL Hardware Design using VHDL Chapter 3, Basic Language Constructs of VHDL 2

Design Entity ECE 448 FPGA and ASIC Design with VHDL 3

Example: NAND Gate a b z a b z 0 0 1 0 1 1 1 0 1 1 1 0 4

Example VHDL Code 3 sections to a piece of VHDL code File extension for a VHDL file is.vhd Name of the file should be the same as the entity name (nand_gate.vhd) [OpenCores Coding Guidelines] LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY nand_gate IS PORT( a : IN STD_LOGIC; b : IN STD_LOGIC; z : OUT STD_LOGIC); END nand_gate; ARCHITECTURE model OF nand_gate IS BEGIN z <= a NAND b; END model; LIBRARY DECLARATION ENTITY DECLARATION ARCHITECTURE BODY 5

Design Entity design entity entity declaration architecture 1 architecture 2 Design Entity - most basic building block of a design. One entity can have many different architectures. architecture 3 6

Entity Declaration Entity Declaration describes the interface of the component, i.e. input and output ports. Entity name Port names Port type Semicolon ENTITY nand_gate IS PORT( a : IN STD_LOGIC; b : IN STD_LOGIC; z : OUT STD_LOGIC ); END nand_gate; No Semicolon after last port Reserved words Port modes (data flow directions) 7

Entity declaration simplified syntax ENTITY entity_name IS PORT ( port_name : port_mode signal_type; port_name : port_mode signal_type;. port_name : port_mode signal_type); END entity_name; 8

Port Mode IN Port signal Entity a Driver resides outside the entity 9

Port Mode OUT Entity Port signal z c Output cannot be read within the entity Driver resides inside the entity c <= z 10

Port Mode OUT (with extra signal) Entity Port signal x z c Signal x can be read inside the entity Driver resides inside the entity z <= x c <= x 11

Port Mode INOUT (typically avoided) Port signal Entity a Signal can be read inside the entity Driver may reside both inside and outside of the entity 12

Port Modes - Summary The Port Mode of the interface describes the direction in which data travels with respect to the component In: Data comes into this port and can only be read within the entity. It can appear only on the right side of a signal or variable assignment. Out: The value of an output port can only be updated within the entity. It cannot be read. It can only appear on the left side of a signal assignment. Inout: The value of a bi-directional port can be read and updated within the entity model. It can appear on both sides of a signal assignment. 13

Architecture (Architecture body) Describes an implementation of a design entity Architecture example: ARCHITECTURE model OF nand_gate IS BEGIN z <= a NAND b; END model; 14

Architecture simplified syntax ARCHITECTURE architecture_name OF entity_name IS [ declarations ] BEGIN code END architecture_name; 15

Entity Declaration & Architecture nand_gate.vhd LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY nand_gate IS PORT( a : IN STD_LOGIC; b : IN STD_LOGIC; z : OUT STD_LOGIC); END nand_gate; ARCHITECTURE dataflow OF nand_gate IS BEGIN z <= a NAND b; END dataflow; 16

Tips & Hints Place each entity in a different file. The name of each file should be exactly the same as the name of an entity it contains. These rules are not enforced by all tools but are worth following in order to increase readability and portability of your designs 17

Tips & Hints Place the declaration of each port, signal, constant, and variable in a separate line These rules are not enforced by all tools but are worth following in order to increase readability and portability of your designs 18

Libraries ECE 448 FPGA and ASIC Design with VHDL 19

Library Declarations LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY nand_gate IS PORT( a : IN STD_LOGIC; b : IN STD_LOGIC; z : OUT STD_LOGIC); END nand_gate; Use all definitions from the package std_logic_1164 Library declaration ARCHITECTURE model OF nand_gate IS BEGIN z <= a NAND b; END model; 20

Library declarations - syntax LIBRARY library_name; USE library_name.package_name.package_parts; 21

Fundamental parts of a library LIBRARY PACKAGE 1 PACKAGE 2 TYPES CONSTANTS FUNCTIONS PROCEDURES COMPONENTS TYPES CONSTANTS FUNCTIONS PROCEDURES COMPONENTS 22

Libraries ieee std work Specifies multi-level logic system, including STD_LOGIC, and STD_LOGIC_VECTOR data types Specifies pre-defined data types (BIT, BOOLEAN, INTEGER, REAL, SIGNED, UNSIGNED, etc.), arithmetic operations, basic type conversion functions, basic text i/o functions, etc. Holds current designs after compilation Need to be explicitly declared Visible by default 23

STD_LOGIC Demystified ECE 448 FPGA and ASIC Design with VHDL 24

STD_LOGIC LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY nand_gate IS PORT( a : IN STD_LOGIC; b : IN STD_LOGIC; z : OUT STD_LOGIC); END nand_gate; ARCHITECTURE dataflow OF nand_gate IS BEGIN z <= a NAND b; END dataflow; What is STD_LOGIC you ask? 25

BIT versus STD_LOGIC BIT type can only have a value of 0 or 1 STD_LOGIC can have nine values U, X, 0, 1, Z, W, L, H, - Useful mainly for simulation 0, 1, and Z are synthesizable (your codes should contain only these three values) 26

STD_LOGIC type demystified Value Meaning U X Uninitialized Forcing (Strong driven) Unknown 0 Forcing (Strong driven) 0 1 Forcing (Strong driven) 1 Z W L H High Impedance Weak (Weakly driven) Unknown Weak (Weakly driven) 0. Models a pull down. Weak (Weakly driven) 1. Models a pull up. - Don't Care 27

More on STD_LOGIC Meanings (1) 1 X X Contention on the bus 0 28

More on STD_LOGIC Meanings (2) 29

More on STD_LOGIC Meanings (3) V DD V DD H 0 1 L 30

More on STD_LOGIC Meanings (4) - Do not care. Can be assigned to outputs for the case of invalid inputs (may produce significant improvement in resource utilization after synthesis). Must be used with great caution. For example in VHDL, the direct comparison 1 = - gives FALSE. The "std_match" functions defined in the numeric_std package must be used to make this value work as expected: Example: if (std_match(address, "-11---") then... elsif (std_match(address, "-01---") then... else... end if; 31

Resolving logic levels U X 0 1 Z W L H - U U U U U U U U U U X U X X X X X X X X 0 U X 0 X 0 0 0 0 X 1 U X X 1 1 1 1 1 X Z U X 0 1 Z W L H X W U X 0 1 W W W W X L U X 0 1 L W L W X H U X 0 1 H W W H X - U X X X X X X X X 32

STD_LOGIC Rules In ECE 545 use std_logic or std_logic_vector for all entity input or output ports Do not use integer, unsigned, signed, bit for ports You can use them inside of architectures if desired You can use them in generics Instead use std_logic_vector and a conversion function inside of your architecture [Consistent with OpenCores Coding Guidelines] 33

Modeling Wires and Buses ECE 448 FPGA and ASIC Design with VHDL 34

Signals SIGNAL a : STD_LOGIC; a 1 wire SIGNAL b : STD_LOGIC_VECTOR(7 DOWNTO 0); b 8 bus 35

Standard Logic Vectors SIGNAL a: STD_LOGIC; SIGNAL b: STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL c: STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL d: STD_LOGIC_VECTOR(15 DOWNTO 0); SIGNAL e: STD_LOGIC_VECTOR(8 DOWNTO 0);. a <= 1 ; b <= 0000 ; -- Binary base assumed by default c <= B 0000 ; -- Binary base explicitly specified d <= X AF67 ; -- Hexadecimal base e <= O 723 ; -- Octal base 36

Vectors and Concatenation SIGNAL a: STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL b: STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL c, d, e: STD_LOGIC_VECTOR(7 DOWNTO 0); a <= 0000 ; b <= 1111 ; c <= a & b; -- c = 00001111 d <= 0 & 0001111 ; -- d <= 00001111 e <= 0 & 0 & 0 & 0 & 1 & 1 & 1 & 1 ; -- e <= 00001111 37

Types of VHDL Description (Modeling Styles) ECE 448 FPGA and ASIC Design with VHDL 38

Types of VHDL Description: Convention used in this class VHDL Descriptions Testbenches dataflow structural behavioral Concurrent statements Components and interconnects Sequential statements Registers State machines Decoders Subset most suitable for synthesis 39

Types of VHDL Description: Alternative convention VHDL Descriptions Behavioral Structural dataflow algorithmic Components & interconnects Concurrent statements Sequential statements 40

xor3 Example 41

Entity xor3_gate LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY xor3_gate IS PORT( A : IN STD_LOGIC; B : IN STD_LOGIC; C : IN STD_LOGIC; Result : OUT STD_LOGIC ); end xor3_gate; 42

Dataflow Architecture (xor3_gate) ARCHITECTURE dataflow OF xor3_gate IS SIGNAL U1_OUT: STD_LOGIC; BEGIN U1_OUT <= A XOR B; Result <= U1_OUT XOR C; END dataflow; U1_OUT 43

Dataflow Description Describes how data moves through the system and the various processing steps. Dataflow uses series of concurrent statements to realize logic. Dataflow is the most useful style to describe combinational logic Dataflow code also called concurrent code Concurrent statements are evaluated at the same time; thus, the order of these statements doesn t matter This is not true for sequential/behavioral statements This order U1_out <= A XOR B; Result <= U1_out XOR C; Is the same as this order Result <= U1_out XOR C; U1_out <= A XOR B; 44

Structural Architecture in VHDL 93 ARCHITECTURE structural OF xor3_gate IS SIGNAL U1_OUT: STD_LOGIC; BEGIN U1: entity work.xor2(dataflow) PORT MAP (I1 => A, I2 => B, Y => U1_OUT); I1 A B xor3_gate C U1_OUT I2 Y I1 I2 Y Result U2: entity work.xor2(dataflow) PORT MAP (I1 => U1_OUT, I2 => C, Y => Result); END structural; PORT NAME LOCAL WIRE NAME 45

xor2 xor2.vhd LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY xor2 IS PORT( I1 : IN STD_LOGIC; I2 : IN STD_LOGIC; Y : OUT STD_LOGIC); END xor2; ARCHITECTURE dataflow OF xor2 IS BEGIN Y <= I1 xor I2; END dataflow; 46

Structural Architecture in VHDL 87 ARCHITECTURE structural OF xor3_gate IS SIGNAL U1_OUT: STD_LOGIC; COMPONENT xor2 PORT( I1 : IN STD_LOGIC; I2 : IN STD_LOGIC; Y : OUT STD_LOGIC ); END COMPONENT; BEGIN U1: xor2 PORT MAP (I1 => A, I2 => B, Y => U1_OUT); U2: xor2 PORT MAP (I1 => U1_OUT, I2 => C, Y => Result); END structural; I1 A B xor3_gate C U1_OUT I2 Y I1 I2 Y PORT NAME LOCAL WIRE NAME Result 47

Structural Description Structural design is the simplest to understand. This style is the closest to schematic capture and utilizes simple building blocks to compose logic functions. Components are interconnected in a hierarchical manner. Structural descriptions may connect simple gates or complex, abstract components. Structural style is useful when expressing a design that is naturally composed of sub-blocks. 48

Behavioral Architecture (xor3 gate) ARCHITECTURE behavioral OF xor3 IS BEGIN xor3_behave: PROCESS (A, B, C) BEGIN IF ((A XOR B XOR C) = '1') THEN Result <= '1'; ELSE Result <= '0'; END IF; END PROCESS xor3_behave; END behavioral; 49

Behavioral Description It accurately models what happens on the inputs and outputs of the black box (no matter what is inside and how it works). This style uses PROCESS statements in VHDL. 50