VHDL Part 2. What is on the agenda? Basic VHDL Constructs. Examples. Data types Objects Packages and libraries Attributes Predefined operators

Similar documents
Embedded Systems CS - ES

A bird s eye view on VHDL!

Generatore di parità. LIBRARY ieee; USE ieee.std_logic_1164.all ; ENTITY xor2 IS PORT( A, B : in std_logic ; Y : out std_logic ) ; END xor2 ;

EE 595. Part IV Basic Elements in VHDL. EE 595 EDA / ASIC Design Lab

Synthesis from VHDL. Krzysztof Kuchcinski Department of Computer Science Lund Institute of Technology Sweden

VHDL BASIC ELEMENTS INTRODUCTION

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

Hardware Description Language VHDL (1) Introduction

Outline. CPE/EE 422/522 Advanced Logic Design L07. Review: JK Flip-Flop Model. Review: VHDL Program Structure. Review: VHDL Models for a MUX

Introduction to VHDL #1

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

VHDL for FPGA Design. by : Mohamed Samy

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

Building Blocks. Entity Declaration. Entity Declaration with Generics. Architecture Body. entity entity_name is. entity register8 is

Outline CPE 626. Advanced VLSI Design. Lecture 4: VHDL Recapitulation (Part 2) Signals. Variables. Constants. Variables vs.

EEL 4783: Hardware/Software Co-design with FPGAs

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

EE 595. Part II Design Units in VHDL. EE 595 EDA / ASIC Design Lab

EECE-4740/5740 Advanced VHDL and FPGA Design. Lecture 3 Concurrent and sequential statements

Lecture 3: Modeling in VHDL. EE 3610 Digital Systems

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

Review of Digital Design with VHDL

Design units can NOT be split across different files

VHDL Objects. Lecture 8: VHDL (2) Variables. VHDL Objects - Constant. Files. EE3109 Gopi K. Manne Fall 2007

[1] Douglas L. Perry, VHDL, third edition, ISBN , McRaw- Hill Series on Computer Engineering.

Contents. Appendix D VHDL Summary Page 1 of 23

Data types defined in the standard package

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

ECE U530 Digital Hardware Synthesis. Course Accounts and Tools

Inthis lecture we will cover the following material:

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

ECOM4311 Digital Systems Design

CPE/EE 422/522. Chapter 8 - Additional Topics in VHDL. Dr. Rhonda Kay Gaede UAH. 8.1 Attributes - Signal Attributes that return a value

5. 0 VHDL OPERATORS. The above classes are arranged in increasing priority when parentheses are not used.

Introduction to VHDL Lecture D

Basic Language Concepts

Outline CPE 626. Advanced VLSI Design. Lecture 3: VHDL Recapitulation. Intro to VHDL. Intro to VHDL. Entity-Architecture Pair

Introduction to VHDL. Main language concepts

C-Based Hardware Design

Digital Systems Design

Introduction to the VHDL language. VLSI Digital Design

Performance Engineering of Real-Time and Embedded Systems. Introduction to VHDL

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

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

VHDL. ELEC 418 Advanced Digital Systems Dr. Ron Hayne. Images Courtesy of Cengage Learning

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

Subprograms, Packages, and Libraries

Getting Started with VHDL

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

Computer-Aided Digital System Design VHDL

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

COE 405 Design Methodology Based on VHDL

Introduction to VHDL

ECE 3401 Lecture 10. More on VHDL

Digital Systems Design

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

ECOM 4311 Digital System Design using VHDL. Chapter 7

Lecture 3 Introduction to VHDL

JUNE, JULY 2013 Fundamentals of HDL (10EC45) PART A

Basic Language Constructs of VHDL

ENGIN 241 Digital Systems with Lab

ECE4401 / CSE3350 ECE280 / CSE280 Digital Design Laboratory

Declarations. Lexical elements. Type declaration Subtype declaration Constant declaration Signal declaration Variable declaration.

Lecture 10 Subprograms & Overloading

VHDL Synthesis Reference

ELCT 501: Digital System Design

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

VHDL And Synthesis Review

VHDL Packages for Synthesis Base Types Standard bit types may be used Typically IEEE 1164 Std. types are used. CPE 528: Session #9

Entity, Architecture and Process

Very High Speed Integrated Circuit Har dware Description Language

Digital Design Using VHDL Using Xilinx s Tool for Synthesis and ModelSim for Verification Part II

HDL. Hardware Description Languages extensively used for:

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

Lecture 12 VHDL Synthesis

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

Menu. Introduction to VHDL EEL3701 EEL3701. Intro to VHDL

Summary of basic structures

Lattice VHDL Training

Hardware Description Languages. Modeling Complex Systems

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

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

Digital Systems Design

Modeling Complex Behavior

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

VHDL 3 BASIC OPERATORS AND ARCHITECTURE BODY. Design descriptions & design constructions examples are taken from foundation series examples

Lecture 4. VHDL Fundamentals. George Mason University

VHDL. VHDL History. Why VHDL? Introduction to Structured VLSI Design. Very High Speed Integrated Circuit (VHSIC) Hardware Description Language

VHDL: RTL Synthesis Basics. 1 of 59

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

0. Overview of this standard Design entities and configurations... 5

Concurrent Signal Assignment Statements (CSAs)

VHDL Instant. Table of contents. History

Part 4: VHDL for sequential circuits. Introduction to Modeling and Verification of Digital Systems. Memory elements. Sequential circuits

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

VHDL 200X: The Future of VHDL

VHDL Structural Modeling II

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

VHDL for Complex Designs

Transcription:

VHDL Part 2 Some of the slides are taken from http://www.ece.uah.edu/~milenka/cpe428-02s/ What is on the agenda? Basic VHDL Constructs Data types Objects Packages and libraries Attributes Predefined operators Examples 2

Data Types All declarations of VHDL ports, signals, and variables must specify their corresponding type or subtype Types Access Composite Array Record Scalar Integer Real Enumerated Physical 3 VHDL Data Types Scalar Types Integer Minimum range for any implementation as defined by standard: - 2,147,483,647 to 2,147,483,647 Example assignments to a variable of type integer : ARCHITECTURE test_int OF test IS PROCESS (X) VARIABLE a: INTEGER; a := 1; -- OK a := -1; -- OK a := 1.0; -- illegal END PROCESS; END test_int; 4

VHDL Data Types Scalar Types (Cont.) Real Minimum range for any implementation as defined by standard: -1.0E38 to 1.0E38 Example assignments to a variable of type real : ARCHITECTURE test_real OF test IS PROCESS (X) VARIABLE a: REAL; a := 1.3; -- OK a := -7.5; -- OK a := 1; -- illegal a := 1.7E13; -- OK a := 5.3 ns; -- illegal END PROCESS; END test_real; 5 VHDL Data Types Scalar Types (Cont.) Enumerated User specifies list of possible values Example declaration and usage of enumerated data type : TYPE binary IS ( ON, OFF );... some statements... ARCHITECTURE test_enum OF test IS PROCESS (X) VARIABLE a: binary; a := ON; -- OK... more statements... a := OFF; -- OK... more statements... END PROCESS; END test_enum; 6

VHDL Data Types Scalar Types (Cont.) Physical Require associated units Range must be specified Example of physical type declaration : TYPE resistance IS RANGE 0 TO 10000000 UNITS ohm; -- ohm Kohm = 1000 ohm; -- i.e. 1 KΩ Mohm = 1000 kohm; -- i.e. 1 MΩ END UNITS; Time is the only physical type predefined in VHDL standard 7 VHDL Data Types Composite Types Array Used to group elements of the same type into a single VHDL object Range may be unconstrained in declaration Range would then be constrained when array is used Example declaration for one-dimensional array (vector) : VARIABLE X : data_bus; VARIABLE Y : BIT; TYPE data_bus IS ARRAY(0 TO 31) OF BIT; 0...element indices... 31 0...array values... 1 Y := X(12); -- Y gets value of element at index 12 8

VHDL Data Types Composite Types (Cont.) Example one-dimensional array using DOWNTO : TYPE reg_type IS ARRAY(15 DOWNTO 0) OF BIT; 15...element indices... 0 0...array values... 1 VARIABLE X : reg_type; VARIABLE Y : BIT; Y := X(4); -- Y gets value of element at index 4 DOWNTO keyword must be used if leftmost index is greater than rightmost index e.g. Big-Endian bit ordering 9 VHDL Data Types Composite Types (Cont.) Records Used to group elements of possibly different types into a single VHDL object Elements are indexed via field names Examples of record declaration and usage : TYPE binary IS ( ON, OFF ); TYPE switch_info IS RECORD status : BINARY; IDnumber : INTEGER; END RECORD; VARIABLE switch : switch_info; switch.status := ON; -- status of the switch switch.idnumber := 30; -- e.g. number of the switch 10

VHDL Data Types Access Type Access Analogous to pointers in other languages Allows for dynamic allocation of storage Useful for implementing queues, fifos, etc. 11 VHDL Data Types Subtypes Subtype Allows for user defined constraints on a data type e.g. a subtype based on an unconstrained VHDL type May include entire range of base type Assignments that are out of the subtype range are illegal Range violation detected at run time rather than compile time because only base type is checked at compile time Subtype declaration syntax : SUBTYPE name IS base_type RANGE <user range>; Subtype example : SUBTYPE first_ten IS INTEGER RANGE 0 TO 9; 12

Libraries IEEE Library Enables usage packages defining all needed in your VHDL design and data types Always declare all used libraries before entity Library ieee; Use std_logic_1164.all; Library lmp; Use lmp.lmppckg.all; Library ieee contains standard packages defining commonly used data types and operations Std_Logic_1164 Multilevel Logic System Define types and operations to deal with strong, weak and highimpedance strengths, and unknown values Std_ulogic, std_ulogic_vector Std_logic, std_logic_vector Always include this library in VHDL designs 13 Shortcomings of Bit type The only elements: 0 and 1 Not sufficient to model behavioral of real hardware No possibility for indicating: Uninitialized values Unknown values (bus driven simultaneously by two sources) Tri-state or high impedance 14

Std_logic and std_ulogic types Part of IEEE library (paclage std_logic_1164) Designed to model electrical signals Type std_ulogic is ( U ; - - uninitialized X ; - - forcing unknown 0 ; - - forcing zero 1 ; - - forcing one Z ; - - high impedance W ; - - weak unknown L ; - -- weak zero H; - - weak one - ); - - don t care Representation of signals driven by active drivers forcing strength), resistive drivers (pull-ups and pulldowns weak strength) or tri-state drivers including high-impedance state 15 Example: Tri-state Buffer Library ieee; Use ieee.std_logic_1164; Entity tri_state is Port( data_in, enable: in std_logic; data_out: out std_logic); End tri_state; Architecture example of tri_state is Begin data_out <= data_in when enable = 1 else Z ; End example; Data_out assigned data_in when enable = 1 For all other 8 values of enable (U, X, Z, W, L, H, -) data_out retains its value. Insurance that erreneous signals driving enable have no influence on data_out. 16

17 Resolved types are declared with resolution functions, which define behavior when an object is driven by multiple values simultaneously. In the case of multiple drivers, the nine values of std_logic are resolved to values as indicated in the table above. 18

19 20

Example: Std_ulogic Bus with Multiple Drivers Library ieee; Use ieee.std_logic_1164.all; Entity bad_tristate is port( data_in1, data_in2, en1, en2: in std_ulogic; Data_out: out std_ulogic); End bad_tristate; Architecture example of bad_tristate is Begin data_out <= data_in1 when en1 = 1 else Z ; data_out <= data_in2 when en2 = 1 else Z ; End example; ** Error Signal (/Bad_tri_state/Data_out) is not a resolve signal and has more than 1 source. 21 Correct use of a bus with multiple drivers Library ieee; Use ieee.std_logic_1164.all; Entity res_tristate is port( din1, din2, en1, en2: in std_logic; D_out: out std_logic); End bad_tristate; Architecture example of res_tristate is Begin d_out <= din1 when en1 = 1 else Z ; d_out <= din2 when en2 = 1 else Z ; End example; The bus conflict is resolved because of the type std_logic 22

VHDL Data Types Summary All declarations of VHDL ports, signals, and variables must include their associated type or subtype Three forms of VHDL data types are : Access -- pointers for dynamic storage allocation Scalar -- includes Integer, Real, Enumerated, and Physical Composite -- includes Array, and Record A set of built-in data types are defined in VHDL standard User can also define own data types and subtypes 23 VHDL Objects There are four types of objects in VHDL Constants Variables Signals Files The scope of an object is as follows : Objects declared in a package are available to all VHDL descriptions that use that package Objects declared in an entity are available to all architectures associated with that entity Objects declared in an architecture are available to all statements in that architecture Objects declared in a process are available only within that process 24

VHDL Objects Constants Name assigned to a specific value of a type Allow for easy update and readability Declaration of constant may omit value so that the value assignment may be deferred Facilitates reconfiguration Declaration syntax : CONSTANT constant_name : type_name [:= value]; Declaration examples : CONSTANT PI : REAL := 3.14; CONSTANT SPEED : INTEGER; 25 VHDL Objects Variables Provide convenient mechanism for local storage E.g. loop counters, intermediate values Scope is process in which they are declared VHDL 93 provides for global variables, to be discussed in the Advanced Concepts in VHDL module All variable assignments take place immediately No delta or user specified delay is incurred Declaration syntax: VARIABLE variable_name : type_name [:= value]; Declaration examples : VARIABLE opcode : BIT_VECTOR(3 DOWNTO 0) := "0000"; VARIABLE freq : INTEGER; 26

VHDL Objects Signals Used for communication between VHDL components Real, physical signals in system often mapped to VHDL signals ALL VHDL signal assignments require either delta cycle or user-specified delay before new value is assumed Declaration syntax : SIGNAL signal_name : type_name [:= value]; Declaration and assignment examples : SIGNAL brdy : BIT; brdy <= 0 AFTER 5ns, 1 AFTER 10ns; 27 Signals and Variables This example highlights the difference between signals and variables ARCHITECTURE test1 OF mux IS SIGNAL x : BIT := '1'; SIGNAL y : BIT := '0'; PROCESS (in_sig, x, y) x <= in_sig XOR y; y <= in_sig XOR x; END PROCESS; END test1; ARCHITECTURE test2 OF mux IS SIGNAL y : BIT := '0'; PROCESS (in_sig, y) VARIABLE x : BIT := '1'; x := in_sig XOR y; y <= in_sig XOR x; END PROCESS; END test2; Assuming a 1 to 0 transition on in_sig, what are the resulting values for y in the both cases? 28

VHDL Objects Signals vs Variables A key difference between variables and signals is the assignment delay ARCHITECTURE sig_ex OF test IS PROCESS (a, b, c, out_1) out_1 <= a NAND b; out_2 <= out_1 XOR c; END PROCESS; END sig_ex; Time a b c out_1 out_2 0 0 1 1 1 0 1 1 1 1 1 0 1+d 1 1 1 0 0 1+2d 1 1 1 0 1 29 VHDL Objects Signals vs Variables (Cont.) ARCHITECTURE var_ex OF test IS PROCESS (a, b, c) VARIABLE out_3 : BIT; out_3 := a NAND b; out_4 <= out_3 XOR c; END PROCESS; END var_ex; Time a b c out_3 out_4 0 0 1 1 1 0 1 1 1 1 0 0 1+d 1 1 1 0 1 30

VHDL Objects Files Files provide a way for a VHDL design to communicate with the host environment File declarations make a file available for use to a design Files can be opened for reading and writing In VHDL87, files are opened and closed when their associated objects come into and out of scope In VHDL93 explicit FILE_OPEN() and FILE_CLOSE() procedures were added The package STANDARD defines basic file I/O routines for VHDL types The package TEXTIO defines more powerful routines handling I/O of text files 31 Simulation Cycle Revisited Sequential vs Concurrent Statements VHDL is inherently a concurrent language All VHDL processes execute concurrently Concurrent signal assignment statements are actually one-line processes VHDL statements execute sequentially within a process Concurrent processes with sequential execution within a process offers maximum flexibility Supports various levels of abstraction Supports modeling of concurrent and sequential events as observed in real systems 32

Concurrent Statements Basic granularity of concurrency is the process Processes are executed concurrently Concurrent signal assignment statements are one-line processes Mechanism for achieving concurrency : Processes communicate with each other via signals Signal assignments require delay before new value is assumed Simulation time advances when all active processes complete Effect is concurrent processing I.e. order in which processes are actually executed by simulator does not affect behavior Concurrent VHDL statements include : Block, process, assert, signal assignment, procedure call, component instantiation 33 Sequential Statements Statements inside a process execute sequentially ARCHITECTURE sequential OF test_mux IS select_proc : PROCESS (x,y) IF (select_sig = '0') THEN z <= x; ELSIF (select_sig = '1') THEN z <= y; ELSE z <= "XXXX"; END IF; END PROCESS select_proc; END sequential; 34

Packages and Libraries User defined constructs declared inside architectures and entities are not visible to other VHDL components Scope of subprograms, user defined data types, constants, and signals is limited to the VHDL components in which they are declared Packages and libraries provide the ability to reuse constructs in multiple entities and architectures Items declared in packages can be used (i.e. included) in other VHDL components 35 Packages Packages consist of two parts Package declaration -- contains declarations of objects defined in the package Package body -- contains necessary definitions for certain objects in package declaration e.g. subprogram descriptions Examples of VHDL items included in packages: Basic declarations Types, subtypes Constants Subprograms Use clause Signal declarations Attribute declarations Component declarations 36

Packages Declaration An example of a package declaration : PACKAGE my_stuff IS TYPE binary IS ( ON, OFF ); CONSTANT PI : REAL := 3.14; CONSTANT My_ID : INTEGER; PROCEDURE add_bits3(signal a, b, en : IN BIT; SIGNAL temp_result, temp_carry : OUT BIT); END my_stuff; Note some items only require declaration while others need further detail provided in subsequent package body for type and subtype definitions, declaration is sufficient subprograms require declarations and descriptions 37 Packages Package Body The package body includes the necessary functional descriptions needed for objects declared in the package declaration e.g. subprogram descriptions, assignments to constants PACKAGE BODY my_stuff IS CONSTANT My_ID : INTEGER := 2; PROCEDURE add_bits3(signal a, b, en : IN BIT; SIGNAL temp_result, temp_carry : OUT BIT) IS -- this function can return a carry temp_result <= (a XOR b) AND en; temp_carry <= a AND b AND en; END add_bits3; END my_stuff; 38

Packages Use Clause Packages must be made visible before their contents can be used The USE clause makes packages visible to entities, architectures, and other packages -- use only the binary and add_bits3 declarations USE my_stuff.binary, my_stuff.add_bits3;... ENTITY declaration...... ARCHITECTURE declaration... -- use all of the declarations in package my_stuff USE my_stuff.all;... ENTITY declaration...... ARCHITECTURE declaration... 39 Libraries Analogous to directories of files VHDL libraries contain analyzed (i.e. compiled) VHDL entities, architectures, and packages Facilitate administration of configuration and revision control E.g. libraries of previous designs Libraries accessed via an assigned logical name Current design unit is compiled into the Work library Both Work and STD libraries are always available Many other libraries usually supplied by VHDL simulator vendor E.g. proprietary libraries and IEEE standard libraries 40

Attributes Attributes provide information about certain items in VHDL E.g. types, subtypes, procedures, functions, signals, variables, constants, entities, architectures, configurations, packages, components General form of attribute use : name'attribute_identifier -- read as tick VHDL has several predefined, e.g : X'EVENT -- TRUE when there is an event on signal X X'LAST_VALUE -- returns the previous value of signal X Y'HIGH -- returns the highest value in the range of Y X'STABLE(t) -- TRUE when no event has occurred on signal X in the past t time 41 Attributes Register Example The following example shows how attributes can be used to make an 8-bit register Specifications : Triggers on rising clock edge Latches only on enable high Has a data setup time of x_setup Has propagation delay of prop_delay ENTITY 8_bit_reg IS GENERIC (x_setup, prop_delay : TIME); PORT(enable, clk : IN qsim_state; a : IN qsim_state_vector(7 DOWNTO 0); b : OUT qsim_state_vector(7 DOWNTO 0)); END 8_bit_reg; qsim_state type is being used - includes logic values 0, 1, X, and Z 42

Attributes Register Example (Cont.) The following architecture is a first attempt at the register The use of 'STABLE is to used to detect setup violations in the data input ARCHITECTURE first_attempt OF 8_bit_reg IS PROCESS (clk) IF (enable = '1') AND a'stable(x_setup) AND (clk = '1') THEN b <= a AFTER prop_delay; END IF; END PROCESS; END first_attempt; What happens if a does not satisfy its setup time requirement of x_setup? 43 Attributes Register Example (Cont.) The following architecture is a second and more robust attempt The use of 'LAST_VALUE ensures the clock is rising from a value of 0 ARCHITECTURE behavior OF 8_bit_reg IS PROCESS (clk) IF (enable = '1') AND a'stable(x_setup) AND (clk = '1') AND (clk'last_value = '0') THEN b <= a AFTER delay; END IF; END PROCESS; END behavior; An ELSE clause could be added to define the behavior when the requirements are not satisfied 44

Operators Operators can be chained to form complex expressions, e.g. : res <= a AND NOT(B) OR NOT(a) AND b; Can use parentheses for readability and to control the association of operators and operands Defined precedence levels in decreasing order : Miscellaneous operators -- **, abs, not Multiplication operators -- *, /, mod, rem Sign operator -- +, - Addition operators -- +, -, & Shift operators -- sll, srl, sla, sra, rol, ror Relational operators -- =, /=, <, <=, >, >= Logical operators -- AND, OR, NAND, NOR, XOR, XNOR 45 Operators Examples The concatenation operator & VARIABLE shifted, shiftin : BIT_VECTOR(0 TO 3);... shifted := shiftin(1 TO 3) & '0'; 0 1 2 3 SHIFTIN 1 0 0 1 SHIFTED 0 0 1 0 The exponentiation operator ** x := 5**5 -- 5^5, OK y := 0.5**3 -- 0.5^3, OK x := 4**0.5 -- 4^0.5, Illegal y := 0.5**(-2) -- 0.5^(-2), OK 46

Putting It All Together Package Generics Entity Ports Architecture Architecture Architecture Concurrent Statements Concurrent Statements Process Sequential Statements 47