Summary of basic structures

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

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

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

Review of Digital Design with VHDL

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

ECOM4311 Digital Systems Design

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

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

Hardware Description Language VHDL (1) Introduction

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

Contents. Appendix D VHDL Summary Page 1 of 23

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

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

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

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

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

C-Based Hardware Design

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

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

Introduction to VHDL. Main language concepts

ECE4401 / CSE3350 ECE280 / CSE280 Digital Design Laboratory

COVER SHEET: Total: Regrade Info: 1 (8 points) 2 ( 8 points) 3 (16 points) 4 (16 points) 5 (16 points) 6 (16 points) 7 (16 points) 8 (8 points)

EEL 4783: Hardware/Software Co-design with FPGAs

ELCT 501: Digital System Design

Inthis lecture we will cover the following material:

Design units can NOT be split across different files

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

Lecture 3: Modeling in VHDL. EE 3610 Digital Systems

VHDL BASIC ELEMENTS INTRODUCTION

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

VHDL Lexical Elements

VHDL And Synthesis Review

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

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

Introduction to the VHDL language. VLSI Digital Design

ECE 3401 Lecture 10. More on VHDL

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

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

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

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

COE 405 Design Methodology Based on VHDL

Getting Started with VHDL

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

Hardware Modeling. VHDL Basics. ECS Group, TU Wien

VHDL for FPGA Design. by : Mohamed Samy

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

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

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

VHDL. Douglas L. Perry. Third Edition

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

1 ST SUMMER SCHOOL: VHDL BOOTCAMP PISA, JULY 2013

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

A bird s eye view on VHDL!

VHDL for Complex Designs

Basic Language Concepts

Basic Language Constructs of VHDL

Very High Speed Integrated Circuit Har dware Description Language

VHDL kod yerleşimi. kütüphaneler. Dış görünüş (entity: varlık) İşleyişi, yapısı (architecture: mimari)

Introduction to VHDL

VHDL Instant. Table of contents. History

Sintaksa VHDL jezika - podsjetnik -

VHDL in 1h. Martin Schöberl

Lecture 4. VHDL Fundamentals. George Mason University

VHDL 200X: The Future of VHDL

Lecture 5: State Machines, Arrays, Loops. EE 3610 Digital Systems

Elektrotechnik und Informationstechnik, Stiftungsprofessur hochparallele VLSI Systeme und Neuromikroelektronik. Oberseminar Informationstechnik

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

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

Computer-Aided Digital System Design VHDL

ECOM 4311 Digital System Design using VHDL. Chapter 7

Introduction to VHDL #1

VHDL-2008: Why It Matters by Jim Lewis, SynthWorks VHDL Training

INTRODUCTION TO VHDL ADVANCED COMPUTER ARCHITECTURES. Slides by: Pedro Tomás. Additional reading: - ARQUITECTURAS AVANÇADAS DE COMPUTADORES (AAC)

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

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

CprE 583 Reconfigurable Computing

ECE U530 Digital Hardware Synthesis. Course Accounts and Tools

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

VHDL: RTL Synthesis Basics. 1 of 59

Course Topics - Outline

! Initially developed under DOD auspices, later standardized as IEEE standards , , & (standard logic data type)

HDL. Hardware Description Languages extensively used for:

What is VHDL? Why we have to learn VHDL? How do we learn VHDL? When do we learn VHDL? Where do we learn VHDL?

VHDL 200X: The Future of VHDL

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

Embedded Systems CS - ES

VHDL: A Crash Course

Subprograms, Packages, and Libraries

EL 310 Hardware Description Languages Midterm

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

LANGUAGE VHDL FUNDAMENTALS

VHDL Synthesis Reference

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

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

Sequential Logic - Module 5

The University of Alabama in Huntsville ECE Department CPE Midterm Exam Solution Spring 2016

Concurrent & Sequential Stmts. (Review)

Digitaalsüsteemide disain

[VARIABLE declaration] BEGIN. sequential statements

Transcription:

VHDL Summary of basic structures René Beuchat rene.beuchat@epfl.ch rene.beuchat@hesge.ch 1

Resume Lexical elements Reserved words Declarations Type declaration Subtype declaration Constant declaration Signal declaration Variable declaration 2

Resume (suite) Concurrent statements Signal assignment Process statement When statement With statement Sequential statements Variable assignment If statement Case statement Loop statement 3

Resume (suite) Operators Logic operators Arithmetic operators Comparisons 4

Resume (suite) Concatenation Attributes Type related attributes Array related attributes Simulation elements Wait statement Assert statement 5

Lexical elements Reserved words 6

7 Reserved words abs access after alias all and architecture array assert attribute begin block body buffer bus case component configuration constant disconnect downto label library linkage literal loop map mod nand new next nor not null of on open or others out package port procedure process pure range record register reject rem report return rol ror select severity shared signal sla sll sra srl subtype else elsif end entity exit file for function generate generic group guarded if impure in inertial inout is then to transport type unaffected units until use variable wait when While with xnor xor

Declarations Type declaration Subtype declaration Constant declaration Signal declaration Variable declaration 8

Type and library/package std library std ; use std.standard.all ; Type/subtype Values Package boolean False, true std.standard bit '0', '1' std.standard bit_vector array(natural range <>) of bit std.standard character NUL, SOH, 'a',..'z', '}', '~', DEL std.standard string array(positive range <>) of character std.standard integer -2147483647..2147483647 std.standard natural 0.. integer'high std.standard positive 1.. integer'high std.standard real -1.0E308 to 1.0E308 std.standard!! Integer is not from -2147483648 (-2**31) but -2147483647 -(2**31-1)!!! 9

Type and library/package ieee library ieee ; use ieee.std_logic_1164.all; Type/subtype Values Package std_ulogic 'U', 'X', '0', '1', 'Z', 'W', 'L', 'H', '-' ieee.std_logic_1164 std_logic resolved std_ulogic ieee.std_logic_1164 X01 'X', '0', '1', ieee.std_logic_1164 X01Z 'X', '0', '1', 'Z', ieee.std_logic_1164 UX01 'U', 'X', '0', '1', ieee.std_logic_1164 UX01Z 'U', 'X', '0', '1', 'Z', ieee.std_logic_1164 std_ulogic_vector std_logic_vector array(natural range <>) of std_ulogic array(natural range <>) of std_logic ieee.std_logic_1164 ieee.std_logic_1164 10

Type and library/package ieee Standard VHDL Synthesis Package (1076.3, NUMERIC_STD) library ieee ; use ieee.std_logic_1164.all; use ieee.numeric_std.all; Type/subtype Values Package unsigned array (natural range <>) of std_logic signed ieee.numeric_std ieee.numeric_std 11

Type and library/package ieee Standard VHDL Synthesis Package (1076.3, NUMERIC_BIT) library ieee ; use ieee.numeric_bit.all; Type/subtype Values Package unsigned array (natural range <>) of bit signed ieee.numeric_bit ieee.numeric_bit 12

Standard VHDL Synthesis Package (1076.3, NUMERIC_STD) Standard VHDL Synthesis Package (1076.3, NUMERIC_BIT) library ieee ; use ieee.std_logic_1164.all; use ieee.numeric_std.all; Type/subtype Values Package unsigned signed array (natural range <>) of std_logic ieee.numeric_std ieee.numeric_std library ieee ; use ieee.numeric_bit.all; Type/subtype Values Package unsigned signed array (natural range <>) of bit ieee.numeric_bit ieee.numeric_bit 13

Standard VHDL Synthesis Package (1076.3, NUMERIC_STD) Standard VHDL Synthesis Package (1076.3, NUMERIC_BIT) library ieee ; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; NOT TO BE USED ANYMORE -- from mentor Type/subtype Values Package unsigned signed array (natural range <>) of std_logic ieee.std_logic_arith ieee.std_logic_arith library ieee ; use ieee.numeric_bit.all; Type/subtype Values Package unsigned signed array (natural range <>) of bit ieee.numeric_bit ieee.numeric_bit 14

Numbers Integer on 32 bits, decimal by default -2 147 483 647 to 2 147 483 647 123_456 _ allowed as separator base#...# 2#1011# 8#13# 16#B# binary octal hexadecimal 15

Numbers for std_logic_vector / signed / unsigned For std_logic_vector / signed / unsigned Character string as 10101100 Facilities with base transformation B 1010_1100 10101100 X AC 10101100 With X number of bits need to be a multiple of 4 (changed in VHDL 2008) 16

Component Component test generic (size: integer := 8); port( A, B : in std_logic_vector(size-1 downto 0); R : out std_logic_vector(size-1 downto 0) ); end component; 17

Entity mode in out inout buffer input only output only bidirectionnal output used as internal too 18

Entity generic and port library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; -- library for synthesis and simulation -- library for arithmec operations entity test is generic (size: integer := 8); port( A, B : in std_logic_vector(size-1 downto 0); R : out std_logic_vector(size-1 downto 0) ); end test; 19

Architecture architecture bhv1 of test is signal OperandA, OperandB : signed( size-1 downto 0); signal Result: signed (size-1 downto 0); begin OperandA <= signed(a); -- cast std_logic_vector to signed OperandB <= signed(b); Result <= OperandA + OperandB; -- Add R <= std_logic_vector(result); -- cast from signed to std_logic_vector; end bhv1; ----------- OR ------------- architecture bhv2 of test is signal OperandA, OperandB : signed( size-1 downto 0); signal Result: signed (size-1 downto 0); begin R <= std_logic_vector(signed(a) + signed(b)); -- same without internal signed number end bhv2; 20

Type declaration architecture a of e is begin end a; package p is end p; in the STD.STANDARD package: type boolean is (false, true); type bit is ('0', '1'); type character is (NUL, SOH, <...> '}', '~', DEL); type string is array(positive range <>) of character; type bit_vector is array(natural range <>) of bit; in the IEEE.STD_LOGIC_1164 package: type std_ulogic is ('U', 'X', '0', '1', 'Z', 'W', 'L', 'H', '-'); type std_ulogic_vector is array(natural range <>) of std_ulogic; in the IEEE.NUMERIC_STD package: type unsigned is array(natural range <>) of std_logic; type signed is array(natural range <>) of std_logic; 21

Subtype declaration architecture a of e is begin end a; package p is end p; in the STD.STANDARD package: subtype natural is integer range 0 to integer'high; subtype positive is integer range 1 to integer'high; in the IEEE.STD_LOGIC_1164 package: subtype std_logic is resolved std_ulogic; subtype X01 is resolved std_ulogic range 'X' to '1'; subtype X01Z is resolved std_ulogic range 'X' to 'Z'; subtype UX01 is resolved std_ulogic range 'U' to '1'; subtype UX01Z is resolved std_ulogic range 'U' to 'Z'; subtype byte is std_ulogic_vector(7 downto 0); subtype word is std_ulogic_vector(15 downto 0); subtype long_word is std_ulogic_vector(31 downto 0); subtype BCD_digit is unsigned(3 downto 0); subtype my_counter_type is unsigned(9 downto 0); subtype sine_wave_type is signed(15 downto 0); 22

Constant declaration architecture a of e is begin end a; package p is end p; constant bit_nb: positive := 4; constant min_value: positive := 1; constant max_value: positive := 2**bit_nb - 1; constant bit_nb: positive := 4; constant patt1: unsigned(bit_nb-1 downto 0) := "0101"; constant patt2: unsigned(bit_nb-1 downto 0) := "1010"; constant address_nb: positive := 4; constant data_register_address : natural:= 0; constant control_register_address : natural:= 1; constant interrupt_register_address: natural:= 2; constant status_register_address : natural:= 3; constant clock_period: time := 5 ns; constant access_time: time := 2 us; constant duty_cycle: time := 33.3 ms; constant reaction_time: time := 4 sec; constant teaching_period: time := 45 min; 23

Signal declaration architecture a of e is begin end a; signal s1, s2, s3: std_ulogic; signal sig1: std_ulogic; signal sig2: std_ulogic; signal sig3: std_ulogic; signal logic_out: std_ulogic; signal open_drain_out: std_logic; signal tri_state_out: std_logic; signal counter: unsigned(nb_bits-1 downto 0); signal double: unsigned(2*nb_bits-1 downto 0); signal sine: signed(nb_bits-1 downto 0); signal clock_internal: std_ulogic := '1'; 24

Component declaration architecture a of e is begin end a; component test generic (size: integer := 8); port( A, B : in std_logic_vector(size-1 downto 0); R : out std_logic_vector(size-1 downto 0) ); end component; 25

Variable declaration p: process (s_list) begin end process p; variable v1, v2, v3: std_ulogic; variable var1: std_ulogic; variable var2: std_ulogic; variable var3: std_ulogic; variable counter: unsigned(nb_bits-1 downto 0); variable double: unsigned(2*nb_bits-1 downto 0); variable sine: signed(nb_bits-1 downto 0); 26

Type conversion numeric_std std_logic_1164 27

Concurrent statements Signal assignment Conditional assignment: When statement With statement Process statement 28

Structural Component declaration Components connection/instantiation 29

Component declaration entity test generic (size: integer := 8); port( A, B : in std_logic_vector(size-1 downto 0); R : out std_logic_vector(size-1 downto 0) ); end component; architecture a of test is begin R <= A and B; -- and on bit to bit of A, B to R end a; component test generic (size: integer := 8); port( A, B : in std_logic_vector(size-1 downto 0); R : out std_logic_vector(size-1 downto 0) ); end component; 30

Components connection/instantiation entity try_component is generic (size: integer := 8); port( X, Y : in std_logic_vector(size-1 downto 0); Result : out std_logic_vector(size-1 downto 0) ); end entity; architecture a of try_component is component test generic (size: integer := 8); port( A, B : in std_logic_vector(size-1 downto 0); R : out std_logic_vector(size-1 downto 0) ); end component; signal topa, topb, topr : std_logic_vector(size-1 downto 0); begin U1: test generic map(size => size) port map( A => topa, B => topb, R => topr); end a; 31

Signal assignment architecture a of e is begin end a; y1 <= a; y2 <= a and b; y3 <= to_integer(a); y1 <= a; y2 <= a after 2 ns; y3 <= inertial a after 1 ns; y4 <= transport a after 4 ns; y5 <= reject 1 ns inertial a after 5 ns; y <= a and b after 5 ns; y <= '0', '1' after 2 ns, '0' after 4 ns, 'X' after 10 ns, '1' after 15 ns, '-' after 23 ns; 32

When statement (conditional assignment) architecture a of e is begin end a; y <= y <= x0 when sel = '0' else x1 when sel = '1' else '0'; x0 after 2 ns when sel = '0' else x1 after 3 ns when sel = '1'; 33

With statement (conditional assignment) architecture a of e is begin end a; mux: with sel select y <= x0 when "00", x1 when "01", x2 when "10", x3 when "11", 'X' when others; decoder: with binary_code select y <= transport "0001" after 2 ns when "00", "0010" after 5 ns when "01", "0100" after 3 ns when "10", "1000" after 4 ns when "11", "XXXX" when others; 34

Process statement architecture a of e is begin end a; mux: process(sel, x0, x1) begin if sel = '0' then y <= x0; elsif sel = '1' then y <= x1; else y <= 'X'; end if; end process mux; count: process(reset, clock) begin if reset = '1' then counter <= (others => '0'); elsif rising_edge(clock) then counter <= counter + 1; end if; end process count; 35

Sequential statements in a process Variable assignment := If statement Case statement Loop statement 36

Variable assignment p: process (s_list) begin end process p; y1 := a; y2 := a and b; y3 := to_integer(a); Variables are available in a process only. In a process, the variable assignment is evaluated and assigned immediately The new value is available for immediate use in a next statement 37

if statement p: process (s_list) begin end process p; if gate = '1' then q <= d; end if; if sel = '0' then y1 <= x0; y2 <= x1; y3 <= '0'; else y1 <= x1; y2 <= x0; y3 <= '1'; end if; if sel = '0' then y <= x0; else y <= x1; end if; if sel = 0 then y <= x0; elsif sel = 1 then y <= x1; elsif sel = 2 then y <= x2; else y <= x3; end if; 38

case statement p: process (s_list) begin end process p; case sel is when "00" => y <= x0; when "01" => y <= x1; when "10" => y <= x2; when "11" => y <= x3; when others => null; end case; case value is when 1 => nbits <= 1; when 2 3 => nbits <= 2; when 4 to 7 => nbits <= 3; when 8 to 15 => nbits <= 4; when others => nbits <= 0; end case; case opcode is when add => y1 <= x0; y2 <= x1; when sub => y1 <= x1; y2 <= x0; when others => null; end case; case to_integer(sel) is when 0 => y <= x0 after 1 ns; when 1 => y <= x1 after 1 ns; when 2 => y <= x2 after 1 ns; when 3 => y <= x3 after 1 ns; when others => y <= 'X'; end case; 39

Loop statement p: process (s_list) begin end process p; for xindex in 1 to xsize loop for yindex in 1 to ysize loop if xindex = yindex then y(xindex, yindex) <= '1'; else y(xindex, yindex) <= '0'; end if; end loop; end loop; multipl: for indexb in 0 to nbits-1 loop partialprod: for indexa in nbits-1 downto 0 loop partprod(indexa) <= a(indexa) and b(indexb); end loop partialprod; cumsum(indexb+1) <= cumsum(indexb) + partprod; end loop multipl; 40

Operators Logic operators Arithmetic operators Comparisons Concatenation 41

Logic operators (from ieee.std_logic_1164) operator not and or xor nand nor xnor description inversion logical AND logical OR exclusive-or NAND-function NOR-function exclusive-nor 42

Logic operators (from ieee.numeric_std) operator not and or xor nand nor xnor non compatible VHDL 1076-1987 description inversion logical AND logical OR exclusive-or NAND-function NOR-function exclusive-nor SHIFT_LEFT sll logical shift left SHIFT_RIGHT srl logical shift right ROTATE_LEFT rol rotate left ROTATE_RIGHT ror rotate right 43

Logic operators if (a = '1') and (b = '1') then y <= '1'; else y <= '0'; end if; y <= a and b; if (a and b) = '1' then y <= '1'; else y <= '0'; end if; count <= count sll 3; 44

Arithmetic operators operator description + addition - substraction * multiplication / division ** power abs absolute value mod modulo rem reminder of the division sla arithmetic shift left sra arithmetic shift right 45

Arithmetic operators maxunsigned <= 2**nBits - 1; maxsigned <= 2**(nBits-1) - 1; 46

Comparisons operator description = equal to /= not equal to < smaller than > greater than <= smaller than or equal to >= greater than or equal to 47

Comparisons if counter > 0 then counter <= counter -1; end if; if counter /= 0 then counterrunning <= '1'; else counterrunning <= '0'; end if; 48

Concatenation operator & description concatenation address <= "1111" & "1100"; constant CLR: std_logic_vector(1 to 4) := "0000"; constant ADD: std_logic_vector(1 to 4) := "0001"; constant CMP: std_logic_vector(1 to 4) := "0010"; constant BRZ: std_logic_vector(1 to 4) := "0011"; constant R0 : std_logic_vector(1 to 2) := "00"; constant DC : std_logic_vector(1 to 2) := "--"; constant reg : std_logic := '0'; constant imm : std_logic := '1'; type ROMArrayType is array(0 to 255) of std_logic_vector(1 to 9); constant ROMArray: ROMArrayType := ( 0 => ( CLR & DC & R0 & reg ), 1 => ( ADD &"01"& R0 & imm ), 2 => ( CMP &"11"& R0 & imm ), 3 => ( BRZ & "0001" & '-' ), 4 to romarray'length-1 => (others => '0') ); 49

Attributes Type related attributes Array related attributes 50

Type related attributes ATTRIBUTE T base T left T right T high T low T pos(x) T val(n) T succ(x) T pred(x) T leftof(x) T rightof(x) RESULT the base type of T the left bound of T the right bound of T the upper bound of T the lower bound of T the position number of X in T the value of position number N in T the successor of X in T the predecessor of X in T the element left of X in T the element right of X in T 51

Type related attributes signal counterint: unsigned; signal count1: unsigned(counter'range); signal count2: unsigned(counter'length-1 downto 0); flip: process(count1) begin for index in count1'low to count1'high loop count2(index) <= count1(count1'length-index); end loop; end process flip; 52

Array related attributes ATTRIBUTE A left A right A high A low A range A reverse_range A length RESULT the left bound of A the right bound of A the upper bound of A the lower bound of A the range of A the range of A in reverse order the size of the range of A 53

Array related attributes type statetype is (reset, wait, go); signal state: statetype; evalnextstate: process(reset, clock) begin if reset = '1' then state <= statetype'left; elsif rising_edge(clock) then end if; end process evalnextstate; 54

Simulation elements Wait statement Assert statement 55

Wait statement test: process begin testmode <= '0'; databyte <= "11001111"; startsend <= '1'; wait for 4*clockPeriod; startsend <= '0'; wait for 8*clockPeriod; testmode <= '1'; databyte <= "11111100"; startsend <= '1'; wait for 4*clockPeriod; startsend <= '0'; wait; end process test; p: process (s_list) begin end process p; test: process begin a <= '0'; b <= '0'; wait for simulstep; error <= y xor '0'; a <= '1'; b <= '1'; wait for simulstep; error <= y xor '1'; end process test; test: process begin playvectors: for index in stimuli range loop databyte <= stimuli(index); wait for clockperiod; assert codedword = expected(index); wait for clockperiod; end loop playvectors; wait; end process test; 56

Assert statement p: process (s_list) begin end process p; assert output = '1'; assert output = '1' report "output was '0'!" severity error; assert output = '1' report "output was '0'!"; in the STD.STANDARD package: type severity_level is ( note, warning, error, failure); 57

Resume Resume 2 Lexical elements 6 Declarations 8 Type and library/package 9 Numbers 15 Entity mode 18 Entity port/generic 19 Component 17 Architecture 20 Concurrent statements 28 Sequential statements 34 Operators 39 Attributes 48 Simulation elements 53 Arithmetic operators 43 Array related attributes 51 Assert statement 55 Case statement 37 Comparisons 45 Concatenation 47 Constant declaration 23 If statement 36 Logic operators 40 Loop statement 38 Process statement 33 Reserved words 7 Type declaration 21 Type related attributes 49 Signal assignment 30 Signal declaration 24 Subtype declaration 22 Variable assignment 35 Variable declaration 26 Wait statement 54 When statement 31 With statement 32 58

ToDo Some examples DFF Reset State machine Counter Generate Integer <->(un)signed <-> std_logic_vector 59