Lecture 12 Introduction to VHDL Hai Zhou ECE

  • Slides: 36
Download presentation
Lecture 12 Introduction to VHDL Hai Zhou ECE 303 Advanced Digital Design Spring 2002

Lecture 12 Introduction to VHDL Hai Zhou ECE 303 Advanced Digital Design Spring 2002 ECE C 03 Lecture 12 1

Outline • • VHDL Language Basics Interface Architecture Body Process Signal Assignment and Delay

Outline • • VHDL Language Basics Interface Architecture Body Process Signal Assignment and Delay Models Various Sequential Statements READING: Dewey 11. 2, 11. 3, 11. 4, 11. 5. 11. 6, 15. 1, 15. 2, 18. 3, 18. 4, 18. 5 ECE C 03 Lecture 12 2

Modeling Digital Systems • Digital system: Any digital circuit that processes or stores information

Modeling Digital Systems • Digital system: Any digital circuit that processes or stores information in digital form: gates to functional units • Model represents only relevant information and abstracts away irrelevant detail • Model needed to: – – – Develop and specify requirements Communicate understanding of a system to a user Allow testing of design through simulation Allow formal verification Allow automated synthesis ECE C 03 Lecture 12 3

What is VHDL • (Very High Speed Integrated Circuits) VHSIC Hardware Description Language •

What is VHDL • (Very High Speed Integrated Circuits) VHSIC Hardware Description Language • Used for two things – (1) Used to model digital systems, designs can then be SIMULATED • A simulator runs a VHDL description computing the outputs of a modeled system – (2) Used as a language to enter designs into CAD tools, designs can then be SYNTHESIZED • VHDL also provides a blackboard for designing digital systems • An initial design is progressively expanded and refined • Another popular hardware language is Verilog ECE C 03 Lecture 12 4

Relationship between VHDL and hardware VHDL description Simulator Model Simulated / actual outputs ECE

Relationship between VHDL and hardware VHDL description Simulator Model Simulated / actual outputs ECE C 03 Lecture 12 Hardware 5

Example of VHDL Description VHDL Model of a 2 input exclusive OR gate entity

Example of VHDL Description VHDL Model of a 2 input exclusive OR gate entity XOR 2_OP is -- input output ports port (A, B : in BIT; Z : out BIT); -- Body architecture EX_DISJUNCTION of XOR_OP 2 is begin Z <= A xor B; end EX_DISJUNCTION; ECE C 03 Lecture 12 6

VHDL Entity Definitions • A VHDL entity consists of two parts: – interface denoted

VHDL Entity Definitions • A VHDL entity consists of two parts: – interface denoted by keyword “entity” – body denoted by keyword “architecture” • Interface describes aspects visible outside • Body describes how black box operates inside • FORMAT: entity identifier is port (name: in / out / inout BIT/type); end identifier; -- lines beginning with two dashes are comments ECE C 03 Lecture 12 7

VHDL Architecture Body • Architecture body describes how entity operates • Allows for different

VHDL Architecture Body • Architecture body describes how entity operates • Allows for different implementations • Can have behavioral or structural or mixed representations FORMAT architecture EX_DISJUNCTION of XOR_OP 2 is begin Z <= A xor B; end EX_DISJUNCTION; ECE C 03 Lecture 12 8

Architecture Body • Body is divided into two parts – Declarative part – Statement

Architecture Body • Body is divided into two parts – Declarative part – Statement part architecture EX_DISJUNTION of XOR_OP 2 is -- declarative part -- objects must be declared before they are used begin -- statement part Z <= A xor B; end EX_DISJUNCTION; ECE C 03 Lecture 12 9

Data Types in VHDL • The type of a data object defines the set

Data Types in VHDL • The type of a data object defines the set of values that object can assume and set of operations on those values – VHDL is a strongly typed language • Four classes of objects – – constants variables signals files ECE C 03 Lecture 12 10

Constant Declaration • The value of a constant cannot be changed • FORMAT: constant

Constant Declaration • The value of a constant cannot be changed • FORMAT: constant identifier {, } : subtype [ : = expression] • EXAMPLES: constant number_of_bytes : integer : = 4; constant prop_delay : time : = 3 nsec; constant e : real : = 2. 2172; ECE C 03 Lecture 12 11

Variable Declaration • The value of a variable can be changed • FORMAT variable

Variable Declaration • The value of a variable can be changed • FORMAT variable identifier {, . . } subtype [ : = expression] • EXAMPLES variable index: integer : = 0; variable sum, average, largest : real; variable start, finish : time : = 0 nsec; ECE C 03 Lecture 12 12

Variable Assignment Statement • Once a variable is declared, its value can be modified

Variable Assignment Statement • Once a variable is declared, its value can be modified by an assignment statement • FORMAT: [ label : ] name : = expression; • EXAMPLES: program_counter : = 0; index : = index + 1; • Variable assignment different from signal assignment – A variable assignment immediately overviews variable with new value – A signal assignment schedules new value at later time ECE C 03 Lecture 12 13

Scalar Types • Variable can only assign values of nominated type • Default types

Scalar Types • Variable can only assign values of nominated type • Default types – “integer” , “real”, “character, ” “boolean”, “bit” • User defined types – FORMAT: type small_int is range 0 to 255; • Enumerated type: – FORMAT: type logiclevel is (unknown, low, driven, high); ECE C 03 Lecture 12 14

Sub Types • A type defines a set of values • We can define

Sub Types • A type defines a set of values • We can define a sub-type as a restricted set of values from a base type – FORMAT subtype identifier is name range simple_expression to/downto simple_expression – EXAMPLE subtype small_int is integer range -128 to 127; subtype bit_index is integer range 31 downto 0; ECE C 03 Lecture 12 15

Attributes of Types • A type defines a set of values and set of

Attributes of Types • A type defines a set of values and set of applicable operations • A predefined set of attributes are used to give information about the values included in the type • T’left = first (leftmost) value in T • T’right = last (righmost) value in T • T’value(s) = the value in T that is represented by s • EXAMPLES: type set_index_range is range 21 downto 11; set_index_range’left = 21 set_index_range’right = 11 set_index_range’value(“ 20”) = 20 ECE C 03 Lecture 12 16

Expressions and Operators ECE C 03 Lecture 12 17

Expressions and Operators ECE C 03 Lecture 12 17

VHDL Modeling Concepts • Semantics (meaning) is heavily based on SIMULATION • A design

VHDL Modeling Concepts • Semantics (meaning) is heavily based on SIMULATION • A design is described as a set of interconnected modules • A module could be another design (component) or could be described as a sequential program (process) ECE C 03 Lecture 12 18

A general VHDL design I 1 I 2 s 1 I 1 concurrent assignment

A general VHDL design I 1 I 2 s 1 I 1 concurrent assignment component s 2 s 3 s 8 s 4 s 6 I 2 process 1 Entity … is … End entity; O 1 IO 1 s 5 process 2 s 7 architecture … of … is. . . begin … end; s 9 concurrent assignment ECE C 03 Lecture 12 O 1 IO 1 19

VHDL Simulator start Init t=0 stop more event get earliest event delta delay advance

VHDL Simulator start Init t=0 stop more event get earliest event delta delay advance time update signals during process execution, new events may be added execute triggered processes ECE C 03 Lecture 12 20

Process Statements • FORMAT Flow of control PROCESS_LABEL: process -- declarative part declares functions,

Process Statements • FORMAT Flow of control PROCESS_LABEL: process -- declarative part declares functions, procedures, types, constants, variables, etc begin -- Statement part sequential statement; wait statement; -- eg. Wait for 1 ms; or wait on ALARM_A; sequential statement; … wait statement; end process; ECE C 03 Lecture 12 21

Sequential Statements • Sequential statements of various types are executed in sequence within each

Sequential Statements • Sequential statements of various types are executed in sequence within each VHDL process • Variable statement variable : = expression; • • • Signal Assignment If statement Case statement Loop statement Wait statement ECE C 03 Lecture 12 22

Variable and Sequential Signal Assignment • Variable assignment – new values take effect immediately

Variable and Sequential Signal Assignment • Variable assignment – new values take effect immediately after execution variable LOGIC_A, LOGIC_B : BIT; LOGIC_A : = ‘ 1’; LOGIC_B : = LOGIC_A; • Signal assignment – new values take effect after some delay (delta if not specified) signal LOGIC_A : BIT; LOGIC_A <= ‘ 0’ after 1 sec; LOGIC_A <= ‘ 0’ after 1 sec, ‘ 1’ after 3. 5 sec; ECE C 03 Lecture 12 23

Signal Declaration and Assignment • Signal declaration: describes internal signal identifier {…} : subtype

Signal Declaration and Assignment • Signal declaration: describes internal signal identifier {…} : subtype [ : = expression] • EXAMPLE: signal and_a, and_b : bit; • Signal Assignment name <= value_expression [ after time_expression]; • EXAMPLE y <= not or_a_b after 5 ns; • This specifies that signal y is to take on a new value at a time 5 ns later statement execution. • Difference from variable assignment: – which only assigns some values to a variable ECE C 03 Lecture 12 24

Concepts of Delays and Timing • The time dimension in the signal assignment refers

Concepts of Delays and Timing • The time dimension in the signal assignment refers to simulation time in a discrete event simulation • There is a simulation time clock • When a signal assignment is executed, the delay specified is added to current simulation time to determine when new value is applied to signal – Schedules a transaction for the signal at that time output input ECE C 03 Lecture 12 25

Specifying Technology Information • One predefined physical type in VHDL: TIME • Units: fs

Specifying Technology Information • One predefined physical type in VHDL: TIME • Units: fs (10** -15 seconds), ps (1000 fs), ns, us, ms, sec, min ( 60 sec), hr (60 min) • User-defined physical types type CAPACITANCE is range 0 to INTEGER’HIGH units f. F; -- Femtofarads p. F = 1000 f. F; -- Picofarads n. F = 1000 p. F; -- Nanofarads end units type VOLTAGE is range 0 to 2 ** 32 -1 units u. V; -- Microvolt; m. V = 1000 u. V; V = 1000 m. V; end units; ECE C 03 Lecture 12 26

Specifying Delays • Inertial Delay Model – reflects physical inertia of physical systems –

Specifying Delays • Inertial Delay Model – reflects physical inertia of physical systems – glitches of very small duration not reflected in outputs • SIG_OUT <= not SIG_IN after 7 nsec --implicit • SIG_OUT <= inertial ( not SIG_IN after 7 nsec ) • Logic gates exhibit lowpass filtering 10 ns 3 ns SIG_IN 2 ns SIG_OUT 9 ns ECE C 03 Lecture 12 19 ns 27

Transport Delays • Under this model, ALL input signal changes are reflected at the

Transport Delays • Under this model, ALL input signal changes are reflected at the output • SIG_OUT <= transport not SIG_IN after 7 ns; 10 ns 3 ns SIG_IN 2 ns SIG_OUT 9 ns ECE C 03 Lecture 12 19 ns 30 ns 28

If Statement • FORMAT if boolean_expression then {sequential statement} else {sequential statement} endif; •

If Statement • FORMAT if boolean_expression then {sequential statement} else {sequential statement} endif; • EXAMPLE if sel=0 then result <= input_0; -- executed if sel = 0 else result <= input_1; -- executed if sel = 1 endif; ECE C 03 Lecture 12 29

Case Statement • EXAMPLE of an ALU operation: case func is when pass 1

Case Statement • EXAMPLE of an ALU operation: case func is when pass 1 => result : = operand 1; when pass 2 => result : = operand 2; when add => result : = operand 1 + operand 2; when subtract => result : = operand 1 - operand 2; end case; ECE C 03 Lecture 12 30

Loop Statements While condition loop {sequential statements} end loop; for identifier in range loop

Loop Statements While condition loop {sequential statements} end loop; for identifier in range loop {sequential statements} end loop; while index > 0 loop index : = index -1; end loop; for count in 0 to 127 loop count_out <= count; wait for 5 ns; end loop; for i in 1 to 10 loop count : = count + 1; end loop; ECE C 03 Lecture 12 31

Wait Statement • A wait statement specifies how a process responds to changes in

Wait Statement • A wait statement specifies how a process responds to changes in signal values. wait on signal_name wait until boolean_expression wait for time_expression • Example on right shows process sensitivity list EXAMPLE: SAME AS: half_add: process is begin sum <= a xor b after T_pd; carry <= a and b after T_pd; wait on a, b; end process; half_add: process (a, b) is begin sum <= a xor b after T_pd; carry <= a and b after T_pd; end process; ECE C 03 Lecture 12 32

Example of Architecture Body (AND_OR_INVERT) architecture primitive of and_or_inv is signal and_a, and_b, or_a_b

Example of Architecture Body (AND_OR_INVERT) architecture primitive of and_or_inv is signal and_a, and_b, or_a_b : bit; begin and_gate_a : process (a 1, a 2) is begin and_a <= a 1 and a 2; end process and_gate_a; and_gate_b : process (b 1, b 2) is begin and_b <= b 1 and b 2; end process and_gate_b; or_gate: process (and_a, and_b) is begin or_a_b <= and_a or and_b; end process or_gate; inv : process (or_a_b) is begin y <= not or_a_b; end process inv; end architecture primitive; a 1 a 2 b 1 ECE C 03 Lecture b 212 y 33

Process Declaration of Clock Generator Clock_gen: process (clk) is begin if clk = ‘

Process Declaration of Clock Generator Clock_gen: process (clk) is begin if clk = ‘ 0’ then 2*T_pw clk <= ‘ 1’ after T_pw, ‘ 0’ after 2*T_pw; endif; T_pw end process clock_gen; ECE C 03 Lecture 12 34

Process Generator for Multiplexer mux: process (a, b, sel) is a z begin case

Process Generator for Multiplexer mux: process (a, b, sel) is a z begin case sel is when ‘ 0’ => b z <= a after prop_delay; sel when ‘ 1’ => z <= b after prop_delay; end process mux; ECE C 03 Lecture 12 35

Summary • • VHDL Language Basics Interface Architecture Body Process Signal Assignment and Delay

Summary • • VHDL Language Basics Interface Architecture Body Process Signal Assignment and Delay Models Various Sequential Statements NEXT LECTURE: VHDL Structural Description READING: Dewey 12. 1, 12. 2, 12. 3, 12. 4, 13. 1, 13. 2, 13. 3. 13. 4, 13. 6, 13. 7. 13. 8 ECE C 03 Lecture 12 36