VHDL. Chapter 7. Behavioral Modeling. Outline. Behavioral Modeling. Process Statement

Similar documents
Parallel- and sequential data processing

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

Sequential Statements

VHDL. Chapter 1 Introduction to VHDL. Course Objectives Affected. Outline

Digital Systems Design

Sequential VHDL. Katarzyna Radecka. DSD COEN 313

Digital Systems Design

Digital Systems Design

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

Lab # 2. Sequential Statements

Part IV. Behavioural Description Using VHDL

The process. Sensitivity lists

Nanosistemų programavimo kalbos 4 paskaita. Nuosekliai vykdomi sakiniai

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

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

Lecture 38 VHDL Description: Addition of Two [5 5] Matrices

Introduction to VHDL #3

Contents. Appendix D VHDL Summary Page 1 of 23

Lecture 12 VHDL Synthesis

Outline. CPE/EE 422/522 Advanced Logic Design L05. Review: General Model of Moore Sequential Machine. Review: Mealy Sequential Networks.

The block diagram representation is given below: The output equation of a 2x1 multiplexer is given below:

Chapter 6 Combinational-Circuit Building Blocks

VHDL simulation and synthesis

Lattice VHDL Training

Digitaalsüsteemide disain

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

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

Concurrent Signal Assignment Statements (CSAs)

Hardware Description Language VHDL (1) Introduction

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

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

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

Introduction to VHDL. Main language concepts

Hardware Description Languages. Modeling Complex Systems

Sequential Logic - Module 5

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

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

VHDL Modeling Behavior from Synthesis Perspective -Part B - EL 310 Erkay Savaş Sabancı University

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

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

Flow Control. CSC215 Lecture

VHDL Sequential Statements. Cristian Sisterna

Constructing VHDL Models with CSA

Control and Datapath 8

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

VHDL for FPGA Design. by : Mohamed Samy

VHDL 2 Combinational Logic Circuits. Reference: Roth/John Text: Chapter 2

COE 405, Term 062. Design & Modeling of Digital Systems. HW# 1 Solution. Due date: Wednesday, March. 14

Very High Speed Integrated Circuit Har dware Description Language

FPGA BASED SYSTEM DESIGN. Dr. Tayab Din Memon Lecture 9 & 10 : Combinational and Sequential Logic

VHDL in 1h. Martin Schöberl

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

VHDL: RTL Synthesis Basics. 1 of 59

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

EEL 4783: Hardware/Software Co-design with FPGAs

DESCRIPTION OF DIGITAL CIRCUITS USING VHDL

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

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

ECE 3401 Lecture 10. More on VHDL

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

Modeling Complex Behavior

Experiment 8 Introduction to VHDL

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

Lecture 4: Modeling in VHDL (Continued ) EE 3610 Digital Systems

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

DIGITAL LOGIC WITH VHDL (Fall 2013) Unit 3

VHDL And Synthesis Review

[VARIABLE declaration] BEGIN. sequential statements

Sign here to give permission to return your test in class, where other students might see your score:

ECEU530. Homework 4 due Wednesday Oct 25. ECE U530 Digital Hardware Synthesis. VHDL for Synthesis with Xilinx. Schedule

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

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

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

Hardware Modeling. VHDL Basics. ECS Group, TU Wien

Prof. Dr. M. Schubert VHDL Practical Training FH Regensburg. VHDL distinguishes three possibilities of writing source code:

Synthesis vs. Compilation Descriptions mapped to hardware Verilog design patterns for best synthesis. Spring 2007 Lec #8 -- HW Synthesis 1

CSE140L: Components and Design Techniques for Digital Systems Lab

CprE 583 Reconfigurable Computing

DIGITAL LOGIC DESIGN VHDL Coding for FPGAs Unit 3

SEQUENTIAL STATEMENTS

Concurrent & Sequential Stmts. (Review)

CSE140L: Components and Design

Department of Technical Education DIPLOMA COURSE IN ELECTRONICS AND COMMUNICATION ENGINEERING. Fifth Semester. Subject: VHDL Programming

Introduction to VHDL #1

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

COE 405 Behavioral Descriptions in VHDL

Chapter 2 Basic Logic Circuits and VHDL Description

Review of Digital Design with VHDL

VHDL Simulation. Testbench Design

VHDL for Complex Designs

Basic Language Concepts

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

CMPT 250: Computer Architecture. Using LogicWorks 5. Tutorial Part 1. Somsubhra Sharangi

Outline. Concurrent Signal Assignment Statements. 2. Simple signal assignment statement. 1. Combinational vs. sequential circuit

Introduction to VHDL

CCE 3202 Advanced Digital System Design

C-Based Hardware Design

VHDL Structural Modeling II

COVER SHEET: Total: Regrade Info: 5 (14 points) 7 (15 points) Midterm 1 Spring 2012 VERSION 1 UFID:

Transcription:

Chapter 7 VHDL VHDL - Flaxer Eli Ch 7-1 Process Statement Outline Signal Assignment Statement Variable Assignment Statement Wait Statement If-Then-Else Statement Case Statement Null Statement Loop Statement Exit & Next Statement Assertion Statement Report Statement VHDL - Flaxer Eli Ch 7-2 In the behavioral modeling style, the behavior of the entity is expressed using sequentially executed, procedural code, which is very similar in syntax and semantics to that of a high-level programming language like C or Pascal. A process statement is the primary mechanism used to model the behavior of an entity. This chapter describes the process statement and the various kinds of sequential statements that can be used within a process statement to model such behavior. There is meaning to the order of the statements in the process. VHDL - Flaxer Eli Ch 7-3

The syntax of the process is: Process Statement [P-Label:] PROCESS [(sensitivity-list)][is] [process-item-declarations] sequential-statement1; sequential-statement2; END PROCESS [P-Label]; A set of signals to which the process is sensitive is defined by the sensitivity list. In other words, each time an event occurs on any of the signals in the sensitivity list, the sequential statements within the process are executed in a sequential order, that is, in the order in which they appear (similar to statements in a high-level programming language like C or Pascal). The process then suspends after executing the last sequential statement and waits for another event to occur. VHDL - Flaxer Eli Ch 7-4 Sequential Signal Assignment The syntax is: target-signal <= waveform; Examples: MyTest: PROCESS (a, b) z <= a; Y <= a AFTER 10 ns; X <= (a AND b) AFTER 20 ns; W <= a AFTER 10 ns, 1 AFTER 20 ns, 0 AFTER 30 ns; END PROCESS MyTest; VHDL - Flaxer Eli Ch 7-5 Variable Assignment The syntax is: target-variable := expression; Examples: MyTest: PROCESS (a) VARIABLE inx: integer := -1; -- only initialize inx := inx + 1; END PROCESS MyTest; VHDL - Flaxer Eli Ch 7-6

IF-THEN-ELSE Statement Logically equivalent to concurrent conditional signal assignment (WHEN-ELSE), but more versatile. Syntax: label: -- optional IF condition1 THEN statements1; ELSIF condition2 THEN -- optional section statements2; ELSE -- optional section statements3; Executes the first block of statements following a TRUE condition No other statement blocks are executed VHDL - Flaxer Eli Ch 7-7 IF-THEN-ELSE (example) Series of conditions forms a priority encoder structure: PROCESS (x,y,z,a,b,c,d) IF x = 1 THEN foo <= a; ELSIF y = 1 THEN foo <= b; ELSIF z = 1 THEN foo <= c; ELSE foo <= d; END PROCESS; Result: foo = x * a + /x * y * b + /x * /y * z * c + /x * /y * /z * d VHDL - Flaxer Eli Ch 7-8 IF-THEN-ELSE Statement CAUTION - Implied memory (latch) will be created if a signal is not always given a value each time the process runs Example: PROCESS (xbus) IF xbus = X F THEN doitnow <= 1 ; -- output of a set-only latch END PROCESS; If a latch is NOT desired include a default value assignment or be sure some branch of the IF statement always assigns a value VHDL - Flaxer Eli Ch 7-9

IF-THEN-ELSE (latch) ENTITY latch IS PORT (a,b: IN std_logic; --inputs sel: IN std_logic; y,x: OUT std_logic); --output END latch; ----------------------------------------------------- ARCHITECTURE behavior OF latch IS PROCESS (a,b,sel) IF sel = '0' THEN y <= a; x <= a; ELSE y <= '-'; END PROCESS; END behavior; x = sel * x.cmb + a * /sel y = a VHDL - Flaxer Eli Ch 7-10 CASE-WHEN Statement Logically equivalent to concurrent selected signal assignment (WITH- SELECT-WHEN), but more versatile Syntax: label: -- optional CASE selector_expression IS WHEN choice1 => statements1; WHEN choice2 => statements2; WHEN choice3 [ choice4] => statements3; [WHEN OTHERS => statements4;] -- optional END CASE; Executes the single block of statements following a valid choice, or following OTHERS Choices must be mutually exclusive and all inclusive Forms a multiplexer-based logic structure VHDL - Flaxer Eli Ch 7-11 CASE-WHEN (example) Example: CASE State IS WHEN 000 => x <= x + 1; WHEN 001 => x <= x - 1; WHEN 010 110 => y <= x; WHEN 011 => IF (z = 1 ) THEN y <= 00 ; ELSE y <= 11 ; WHEN OTHERS => Temp <= (OTHERS => 0 ); END CASE; VHDL - Flaxer Eli Ch 7-12

NULL Statement The NULL is a sequential statement that does not cause any action to take place; execution continues with the next statement. One example of this statement's use is in an if statement or in a case statement where, for certain conditions, it may be useful or necessary to explicitly specify that no action needs to be performed. For example: CASE State IS WHEN 00 => x <= x + 1; WHEN 01 => x <= x - 1; WHEN 10 => y <= x; WHEN OTHERS => NULL; END CASE; VHDL - Flaxer Eli Ch 7-13 LOOP Statements Sequential statements for repetitive, iterative operations NOT executed iteratively in synthesized hardware! Simply a way of calculating new signal values in a process General syntax is: [loop-label:] iteration-scheme LOOP sequential-statement1; sequential-statement2; END LOOP [loop-label]; FOR-LOOP executes specific number of iterations WHILE-LOOP executes as long as Boolean condition is TRUE LOOP executes as long as no EXIT appear. VHDL - Flaxer Eli Ch 7-14 For-Loop general format: FOR LOOP FOR index IN looprange LOOP statements; -- generally using the index Index variable automatically declared Index variable auto-increments or decrements at end of loop The loop index can not be assigned any value inside the loop The index name is local to the loop (if another variable with the same name exist outside the loop) The range in for loop can also be a range of an enumeration type VHDL - Flaxer Eli Ch 7-15

FOR LOOP (example) For-Loop example 1 FOR j IN 7 DOWNTO 0 LOOP array(j) <= X 00 ; -- clear a signal array x(j) := y(j) + 5; -- integer array variable For-Loop example 2 fact := 1; FOR j IN 2 TO N LOOP fact := fact * j; VHDL - Flaxer Eli Ch 7-16 FOR LOOP (synthesis example) -- Example - 2 Level Full Adder LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.numeric_std.all; ------------------------------------------------------ ENTITY adder4 IS GENERIC (N: integer := 2); PORT ( a: IN unsigned(n-1 DOWNTO 0); --inputs cin: IN unsigned(n/2-1 DOWNTO 0); --carry in co: OUT unsigned(n/2-1 DOWNTO 0); --carry out y: OUT unsigned(0 DOWNTO 0)); --output END adder4; ------------------------------------------------------ ARCHITECTURE behavior OF adder4 IS PROCESS (a) VARIABLE Temp: unsigned(n/2 DOWNTO 0); Temp := '0' & cin; FOR i IN 0 TO N-1 LOOP Temp := Temp + (0=>a(i), OTHERS=>'0'); y(0) <= Temp(0); co <= Temp(N/2 DOWNTO 1); END PROCESS; END behavior; VHDL - Flaxer Eli Ch 7-17 FOR LOOP (synthesis result) co(0) = a(1) * cin(0) + a(0) * cin(0) + a(0) * a(1) y(0) = a(0) * a(1) * cin(0) + /a(0) * /a(1) * cin(0) + /a(0) * a(1) * /cin(0) + a(0) * /a(1) * /cin(0) VHDL - Flaxer Eli Ch 7-18

FOR LOOP (synthesis example) -- Example - 4 Level Full Adder LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.numeric_std.all; ------------------------------------------------------ ENTITY adder4 IS GENERIC (N: integer := 4); PORT ( a: IN unsigned(n-1 DOWNTO 0); --inputs cin: IN unsigned(n/2-1 DOWNTO 0); --carry in co: OUT unsigned(n/2-1 DOWNTO 0); --carry out y: OUT unsigned(0 DOWNTO 0)); --output END adder4; ------------------------------------------------------ ARCHITECTURE behavior OF adder4 IS PROCESS (a) VARIABLE Temp: unsigned(n/2 DOWNTO 0); Temp := '0' & cin; FOR i IN 0 TO N-1 LOOP Temp := Temp + (0=>a(i), OTHERS=>'0'); y(0) <= Temp(0); co <= Temp(N/2 DOWNTO 1); END PROCESS; END behavior; VHDL - Flaxer Eli Ch 7-19 FOR LOOP (synthesis result) S_1 = /a(0) * /a(1) * /a(3) * /cin(0) * cin(1) + /a(0) * a(1) * a(2) * /cin(0) * /cin(1) + a(0) * /a(1) * a(3) * /cin(0) * /cin(1) + a(1) * /a(2) * a(3) * /cin(0) * /cin(1) S_2 = a(1) * a(2) * a(3) * cin(0) * cin(1) + a(0) * a(2) * a(3) * cin(0) * cin(1) + a(0) * a(1) * a(3) * cin(0) * cin(1) + a(0) * a(1) * a(2) * cin(0) * cin(1) + a(0) * a(1) * a(2) * a(3) * cin(1) + /a(0) * /a(1) * /a(2) * /a(3) * cin(1) + /a(0) * /a(1) * /a(2) * /cin(0) * cin(1) + /a(0) * /a(2) * /a(3) * /cin(0) * cin(1) + /a(1) * /a(2) * /a(3) * /cin(0) * cin(1) + /a(0) * /a(1) * a(2) * a(3) * /cin(1) + /a(0) * a(1) * /a(2) * cin(0) * /cin(1) + /a(1) * /a(2) * a(3) * cin(0) * /cin(1) + /a(0) * a(2) * /a(3) * cin(0) * /cin(1) + a(0) * /a(1) * /a(3) * cin(0) * /cin(1) + a(0) * a(1) * /a(2) * /a(3) * /cin(1) + a(0) * a(2) * /a(3) * /cin(0) * /cin(1) VHDL - Flaxer Eli Ch 7-20 FOR LOOP (synthesis result) \MODULE_1:g1:a0:g0:u0:ga:g1:ua0\ = a(0) *cin(0)*cin(1) \MODULE_2:g1:a0:g0:u0:ga:g1:ua0\ = /a(0) * a(1) * cin(0) * cin(1) + a(0) * a(1) * /cin(0) * cin(1) \MODULE_3:g1:a0:g0:u0:ga:g1:ua0\ = /a(0) * /a(1) * a(2) * cin(0) * cin(1) + /a(0) * a(1) * a(2) * /cin(0) * cin(1) + a(0) * /a(1) * a(2) * /cin(0) * cin(1) + a(0) * a(1) * a(2) * cin(0) * /cin(1) \MODULE_4:g1:a0:g0:u0:ga:g1:ua0\ = /a(0) * /a(1) * /a(2) * a(3) * cin(0) * cin(1) + /a(0) * /a(1) * a(2) * a(3) * /cin(0) * cin(1) + /a(0) * a(1) * /a(2) * a(3) * /cin(0) * cin(1) + a(0) * /a(1) * /a(2) * a(3) * /cin(0) * cin(1) + /a(0) * a(1) * a(2) * a(3) * cin(0) * /cin(1) + a(0) * /a(1) * a(2) * a(3) * cin(0) * /cin(1) + a(0) * a(1) * /a(2) * a(3) * cin(0) * /cin(1) + a(0) * a(1) * a(2) * a(3) * /cin(0) * /cin(1) VHDL - Flaxer Eli Ch 7-21

FOR LOOP (synthesis result) /co(0) = /S_1.CMB * /S_2.CMB co(1) = /\MODULE_1:g1:a0:g0:u0:ga:g1:ua0\.CMB * \MODULE_2:g1:a0:g0:u0:ga:g1:ua0\.CMB * \MODULE_3:g1:a0:g0:u0:ga:g1:ua0\.CMB * \MODULE_4:g1:a0:g0:u0:ga:g1:ua0\.CMB + \MODULE_1:g1:a0:g0:u0:ga:g1:ua0\.CMB * /\MODULE_2:g1:a0:g0:u0:ga:g1:ua0\.CMB * \MODULE_3:g1:a0:g0:u0:ga:g1:ua0\.CMB * \MODULE_4:g1:a0:g0:u0:ga:g1:ua0\.CMB + \MODULE_1:g1:a0:g0:u0:ga:g1:ua0\.CMB * \MODULE_2:g1:a0:g0:u0:ga:g1:ua0\.CMB * /\MODULE_3:g1:a0:g0:u0:ga:g1:ua0\.CMB * \MODULE_4:g1:a0:g0:u0:ga:g1:ua0\.CMB + /\MODULE_1:g1:a0:g0:u0:ga:g1:ua0\.CMB * /\MODULE_2:g1:a0:g0:u0:ga:g1:ua0\.CMB * /\MODULE_3:g1:a0:g0:u0:ga:g1:ua0\.CMB * \MODULE_4:g1:a0:g0:u0:ga:g1:ua0\.CMB + \MODULE_1:g1:a0:g0:u0:ga:g1:ua0\.CMB * \MODULE_2:g1:a0:g0:u0:ga:g1:ua0\.CMB * \MODULE_3:g1:a0:g0:u0:ga:g1:ua0\.CMB * /\MODULE_4:g1:a0:g0:u0:ga:g1:ua0\.CMB + /\MODULE_1:g1:a0:g0:u0:ga:g1:ua0\.CMB * /\MODULE_2:g1:a0:g0:u0:ga:g1:ua0\.CMB * \MODULE_3:g1:a0:g0:u0:ga:g1:ua0\.CMB * /\MODULE_4:g1:a0:g0:u0:ga:g1:ua0\.CMB + /\MODULE_1:g1:a0:g0:u0:ga:g1:ua0\.CMB * \MODULE_2:g1:a0:g0:u0:ga:g1:ua0\.CMB * /\MODULE_3:g1:a0:g0:u0:ga:g1:ua0\.CMB * /\MODULE_4:g1:a0:g0:u0:ga:g1:ua0\.CMB + \MODULE_1:g1:a0:g0:u0:ga:g1:ua0\.CMB * /\MODULE_2:g1:a0:g0:u0:ga:g1:ua0\.CMB * /\MODULE_3:g1:a0:g0:u0:ga:g1:ua0\.CMB * /\MODULE_4:g1:a0:g0:u0:ga:g1:ua0\.CMB VHDL - Flaxer Eli Ch 7-22 FOR LOOP (synthesis result) y(0) = a(0) * a(1) * a(2) * a(3) * cin(0) + /a(0) * /a(1) * a(2) * a(3) * cin(0) + /a(0) * a(1) * /a(2) * a(3) * cin(0) + a(0) * /a(1) * /a(2) * a(3) * cin(0) + /a(0) * a(1) * a(2) * /a(3) * cin(0) + a(0) * /a(1) * a(2) * /a(3) * cin(0) + a(0) * a(1) * /a(2) * /a(3) * cin(0) + /a(0) * /a(1) * /a(2) * /a(3) * cin(0) + /a(0) * a(1) * a(2) * a(3) * /cin(0) + a(0) * /a(1) * a(2) * a(3) * /cin(0) + a(0) * a(1) * /a(2) * a(3) * /cin(0) + /a(0) * /a(1) * /a(2) * a(3) * /cin(0) + a(0) * a(1) * a(2) * /a(3) * /cin(0) + /a(0) * /a(1) * a(2) * /a(3) * /cin(0) + /a(0) * a(1) * /a(2) * /a(3) * /cin(0) + a(0) * /a(1) * /a(2) * /a(3) * /cin(0) VHDL - Flaxer Eli Ch 7-23 While-Loop general format: WHILE LOOP WHILE boolean-expression LOOP statements; No automatic index declaration or modification VHDL - Flaxer Eli Ch 7-24

While-Loop example 1 j := 1; x:= 0; WHILE j < 5 LOOP x := x + array(j); j := j + 1; WHILE LOOP (example) While-Loop example 2 j := 2; fact:= 1; WHILE j <= N LOOP fact := fact * j; j := j + 1; VHDL - Flaxer Eli Ch 7-25 Loop general format: LOOP LOOP statements; No automatic index declaration or modification The loop is infinite (if no exit, next or return) Actually it is equivalent to WHILE TRUE LOOP VHDL - Flaxer Eli Ch 7-26 EXIT Statements The exit statement is a sequential statement that can be used only inside a loop. It causes execution to jump out of the innermost loop or the loop whose label is specified. The syntax for an exit statement is: EXIT [loop-label] [WHEN condition]; If no loop label is specified, the innermost loop is exited. If the when clause ("when condition") is used, the specified loop is exited only if the given condition is true; otherwise, execution continues with the next statement. VHDL - Flaxer Eli Ch 7-27

EXIT (example) Exit example 1 FOR j IN 1 TO 10 LOOP array(j) <= X 00 ; IF j+i > 4 THEN EXIT; -- stop loop if j+i > 4 Exit example 2 Lp1: FOR j IN 1 TO 10 LOOP array(j) <= X 00 ; EXIT Lp1 WHEN j+i > 4; END LOOP Lp1; VHDL - Flaxer Eli Ch 7-28 NEXT Statements The next statement is also a sequential statement that can be used only inside a loop. The syntax is the same as that for the exit statement except that the keyword next replaces the keyword exit. Its syntax is: NEXT [loop-label] [WHEN condition]; The next statement results in skipping the remaining statements in the current iteration of the specified loop; execution resumes with the first statement in the next iteration of this loop, if one exists. If no loop label is specified, the innermost loop is assumed. In contrast to the exit statement, which causes the loop to be terminated, the next statement causes the current loop iteration of the specified loop to be prematurely terminated; execution resumes with the next iteration. VHDL - Flaxer Eli Ch 7-29 Next (example) Next example 1 FOR opcode IN nop TO jmp LOOP -- enumerated Inx := Inx + 1; IF opcode = jmp THEN NEXT; -- skip next line if jump ELSE pc := pc + 1; Next example 2 Lp1: FOR i IN 1 TO 10 LOOP Lp2: LOOP NEXT Lp1 WHEN Done = 1 ; Jnx = Jnx + 1; -- This line is skip END LOOP Lp2 Inx = Inx + 1; -- This line is skip END LOOP Lp1; VHDL - Flaxer Eli Ch 7-30