Lecture 16 Introduction to VHDL Prith Banerjee ECE
Lecture 16 Introduction to VHDL Prith Banerjee ECE C 03 Advanced Digital Design Spring 1998 ECE C 03 Lecture 16 1
Outline • • VHDL Language Basics Interface Architecture Body Behavioral VHDL Various Sequential Statements Process Statements Delay Models 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 16 2
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 16 3
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 16 4
Relationship between VHDL and hardware VHDL description Simulator Model Simulated / actual outputs ECE C 03 Lecture 16 Hardware 5
Domains and Level of Modeling Structural Functional Register transfer Algorithm Gates Register Transfer Level Transistor Boolean Equation Polygons Standard Cells Floorplan Geometric ECE C 03 Lecture 16 6
VHDL Modeling Concepts • VHDL Includes facilities for describing the FUNCTION and STRUCTURE • At Various levels from abstract to the gate level • Intended as a modeling language for specification and simulation • Also used for synthesis ECE C 03 Lecture 16 7
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 16 8
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 16 9
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 16 10
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 16 11
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 16 12
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 16 13
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 16 14
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 C 03 Lecture new 16 – A signal assignment ECE schedules value at later time 15
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 16 16
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 16 17
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 = 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 ECE C 03 Lecture set_index_range’value(“ 20”) = 2016 18
Expressions and Operators ECE C 03 Lecture 16 19
Sequential Statements • Sequential statements of various types are executed in sequence within each VHDL process • Variable statement variable : = expression; • If statement • Case statement • Loop statement ECE C 03 Lecture 16 20
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 16 21
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 16 22
Loop Statements While condition loop {sequential statements} end loop; while index > 0 loop index : = index -1; end loop; for identifier in range loop {sequential statements} 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; ECE C 03 end Lectureloop; 16 23
Concurrent Statements • The concurrent statement in an architecture body describe the module’s operation. – Concurrency is useful in modeling the way real circuits behave architecture abstract of adder is begin add_a_b : process(a, b) is begin sum <= a + b; end process add_a_b; end architecture abstract; ECE C 03 Lecture 16 24
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 16 25
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 16 26
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 16 27
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 16 19 ns 28
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 16 19 ns 30 ns 29
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 216 y 30
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 16 31
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 16 32
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 16 33
Process Statement • A process statement is a concurrent statement that can be included in an architecture body to describe all or part of the behavior of a module. FORMAT: process [ (signal_name, …) ] is process_declarative item begin { sequential statement; } end process; ECE C 03 Lecture 16 34
Summary • • VHDL Language Basics Interface Architecture Body Behavioral VHDL Various Sequential Statements Process Statements Delay Models NEXT LECTURE: VHDL Structural and Mixed 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 16 35
- Slides: 35