Presentation is loading. Please wait.

Presentation is loading. Please wait.

1/20/2007 - L8 Language Overview III Copyright 2006 - Joanne DeGroat, ECE, OSU1 Language Overview III The finish of a grand tour of the language.

Similar presentations


Presentation on theme: "1/20/2007 - L8 Language Overview III Copyright 2006 - Joanne DeGroat, ECE, OSU1 Language Overview III The finish of a grand tour of the language."— Presentation transcript:

1 1/20/2007 - L8 Language Overview III Copyright 2006 - Joanne DeGroat, ECE, OSU1 Language Overview III The finish of a grand tour of the language.

2 1/20/2007 - L8 Language Overview III Copyright 2006 - Joanne DeGroat, ECE, OSU2 Elements Covered in III  Reminder from I and II: Language overview lectures do not cover all aspects of the language. But they do cover a large portion of it. Concurrent Statements Sequential Statements  Now ENTITIES, ARCHITECTURES, PACKAGES, PROCEDURES AND FUNCTIONS, OVERLOADING, LIBRARIES and the USE clause.

3 1/20/2007 - L8 Language Overview III Copyright 2006 - Joanne DeGroat, ECE, OSU3 The ENTITY  The basic concept of VHDL is that you have and interface and the function of the circuit within that interface.  The interface (ENTITY) tells you what data and control arrives and how it arrives.  The function (ARCHITECTURE) tells you how you operate on the data to produce results or respond to the inputs.

4 1/20/2007 - L8 Language Overview III Copyright 2006 - Joanne DeGroat, ECE, OSU4 THE ENTITY entity_declaration::= entity identifier is entity_header entity_declarative_part [begin entity_statement_part] end [identifier]; entity_header::= [formal_generic_clause] [formal_port_clause]

5 1/20/2007 - L8 Language Overview III Copyright 2006 - Joanne DeGroat, ECE, OSU5 The ENTITY formal_generic_clause::= generic (generic_list); formal_port_clause::= port (port_list); entity_declarative_part::= {entity_declarative_item} entity_declarative_item::= subprogram_declaration | subprogram_body | type_declaration | subtype_declaration | constant_declaration | signal_declaration | file_declaration | alias_declaration | attribute_declaration | attribute_specification | disconnect_specification | use_clause Items declared in the ENTITY have scope over all architectures of the entity

6 1/20/2007 - L8 Language Overview III Copyright 2006 - Joanne DeGroat, ECE, OSU6 The ENTITY entity_statement_part::= entity_statement entity_statement::= concurrent_assertion_statement | passive_concurrent_procedure_call | passive_process_statement  Passive means that the process or procedure call contains no signal assignment statements, nor calls to any other procedure which contains a signal assignment statement.  Thus these passive procedure calls and processes can do monitoring only. They can use assertion statements to report status of the signals they are monitoring.

7 1/20/2007 - L8 Language Overview III Copyright 2006 - Joanne DeGroat, ECE, OSU7 The ENTITY  EXAMPLE entity LATCH is port (DIN: in WORD; DOUT: out WORD; LOAD, CLK : in BIT); constant SETUP : TIME := 12 ns; constant PulseWidth : TIME := 50 ns; use WORK.TimingMonitors.all; begin CheckTiming (SETUP,DIN,LOAD,CLK); end LATCH;

8 1/20/2007 - L8 Language Overview III Copyright 2006 - Joanne DeGroat, ECE, OSU8 The Architecture  This is the design unit that describes the function of the design Dataflow – using concurrent signal assignments = very, very close to the actual logic – a form of RTL RTL – register transfer level = just above dataflow and similar to RTL for a processor architecture Behavioral – algorithmic description of the functional behavior – very useful for reference models

9 1/20/2007 - L8 Language Overview III Copyright 2006 - Joanne DeGroat, ECE, OSU9 The Architecture architecture identifier of entity_name is architecture_declarative_part begin architecture_statement_part end [identifier]; architecture_declarative_part::= {architecture_declarative_item} architecture_statement_part::= {concurrent_statement}

10 1/20/2007 - L8 Language Overview III Copyright 2006 - Joanne DeGroat, ECE, OSU10 The Architecture architecture_declarative_item::= subprogram_declaration | subprogram_body | type_declaration | subtype_declaration | constant_declaration | signal_declaration | file_declaration | alias_declaration | component_declaration | attribute_declaration | attribute_specification | configuration_specification | disconnect_specification | use_clause

11 1/20/2007 - L8 Language Overview III Copyright 2006 - Joanne DeGroat, ECE, OSU11 Packages  Packages provide a convenient way to declare commonly used declarations, functions, and procedures and make them available to many entities, architectures, and other packages.  Consists of two parts The Package Declaration The Package Body

12 1/20/2007 - L8 Language Overview III Copyright 2006 - Joanne DeGroat, ECE, OSU12 Package Declaration package identifier is package_declarative_part end [identifier]; package_declarative_part::={package_declarative_item} package_declarative_item::= subprogram_declaration | type_declaration | subtype_declaration | constant_declaration | signal_declaration | file_declaration | alias_declaration | component_declaration | attribute_declaration | attribute_specification | disconnect_specification | use_clause

13 1/20/2007 - L8 Language Overview III Copyright 2006 - Joanne DeGroat, ECE, OSU13 Example of Package Declaration package TriState is type TRI is (‘0’,’1’,’Z’,’E’); function BitVal (value:TRI) return BIT; function TriVal (value:BIT) return TRI; end TriState;

14  Stopped here on Wed 1/20/2007 - L8 Language Overview III Copyright 2006 - Joanne DeGroat, ECE, OSU14

15 1/20/2007 - L8 Language Overview III Copyright 2006 - Joanne DeGroat, ECE, OSU15 Package Body package body identifier is package_body_declarative_part end [identifier]; package_body_declarative_part::= {package_body_declarative_item} package_body_declarative_item::= subprogram_declaration | subprogram_body | type_declaration | subtype_declaration | constant_declaration | file_declaration | alias_declaration | use_clause

16 1/20/2007 - L8 Language Overview III Copyright 2006 - Joanne DeGroat, ECE, OSU16 Example package body TriState is function BitVal (value:TRI) return BIT is constant bits : BIT_VECTOR := (“0100”); begin return bits(TRI’POS(value)); end; function TriVal (value:BIT) return Tri is begin return Tri’Val(BIT’POS(value)); end;

17 1/20/2007 - L8 Language Overview III Copyright 2006 - Joanne DeGroat, ECE, OSU17 Notes on Packages  Note: Only what is declared in the package declaration is visible outside the package!!!  Items declared inside the package body are only visible inside the package body.

18 1/20/2007 - L8 Language Overview III Copyright 2006 - Joanne DeGroat, ECE, OSU18 Functions and Procedures  Sequential statements are used within Functions and Procedures  Declaration procedure designator [(formal_parameter_list)]; function designator [(formal_parameter_list)] return type_mark;

19 1/20/2007 - L8 Language Overview III Copyright 2006 - Joanne DeGroat, ECE, OSU19 Functions and Procedures  The Body procedure designator [(formal_parameter_list)] is subprogram_declarative_part begin subprogram_statement_part end [designator]; function designator [(formal_parameter_list)] return type_mark is subprogram_declarative_part begin subprogram_statement_part end [designator];

20 1/20/2007 - L8 Language Overview III Copyright 2006 - Joanne DeGroat, ECE, OSU20 Functions and Procedures  Functions must use a return statement as they must return a value function fg1 (w,x,g1 : IN BIT) return BIT; function fg1 (w,x,g1 : IN BIT) return BIT is BEGIN return (w and g1) or (not x and g1) or (w and not x); END;

21 1/20/2007 - L8 Language Overview III Copyright 2006 - Joanne DeGroat, ECE, OSU21 Other item of significance - OVERLOADING  Overloading – You can overload any function or procedure in VHDL.  EXAMPLE: procedure WRITE (F: inout TEXT; value:Integer); procedure WRITE (F: inout TEXT; value : String); These are two declarations for an overloaded procedure WRITE (if no mode is given on the arguments to a procedure or function the mode IN is presumed) USAGE DETERMINES WHICH VERSION OF THE PROCEDURE WILL BE USED USAGE  write (MY_FILE, VAR);  WRITE(sys_output, 12); WRITE(sys_error, “Actual output doesn’t match”);

22 1/20/2007 - L8 Language Overview III Copyright 2006 - Joanne DeGroat, ECE, OSU22 Overloaded Functions type MVL is (‘0’,’1’,’Z’,’X’); function “and” (L,R : MVL) return MVL; function “or” (L,R : MVL) return MVL; USAGE:  signal Q,R,S : MVL  Q <= ‘X’ or ‘1’;  R <= S and Q;

23 1/20/2007 - L8 Language Overview III Copyright 2006 - Joanne DeGroat, ECE, OSU23 Libraries and Use  Libraries provide a place to organize and store the design units – entities – architectures – package declarations – package bodies – that we have written and analyzed.  Then to use those design units we need to make them visible with the current design unit so it can see, and thus use, them.

24 1/20/2007 - L8 Language Overview III Copyright 2006 - Joanne DeGroat, ECE, OSU24 The Library clause  Allows the use of design units from other libraries.  When a library is created it has both an actual name and a logical name. The actual name is the file system name within the file system of the host computer system. The logical name if the name used within the VHDL system.  LIBRARIES WORK and STD are visible to all design units.

25 1/20/2007 - L8 Language Overview III Copyright 2006 - Joanne DeGroat, ECE, OSU25 Library clause library logical_name_list; logical_name_list::=logical_name{,logical_name}  This will make the logical_name(s) visible to the current design unit  Declared just before the start of the design unit library WORK, MY_LIB; entity and_gate is PORT (A,B : in BIT; X : out BIT); end and_gate;

26 1/20/2007 - L8 Language Overview III Copyright 2006 - Joanne DeGroat, ECE, OSU26 Library Clause and Packages  The library clause only makes the entities visible. It does not make any declarations within the package visible.  Need to use a USE clause to make package declarations visible.  USE clause: use library_name.package_name.items  where items may be specific items or the reserved word all

27 1/20/2007 - L8 Language Overview III Copyright 2006 - Joanne DeGroat, ECE, OSU27 Example of USE library ls7400; use ls7400.gates.all; entity new_thing is …..  where gates is a package with library ls7400.  The all makes all declarations in package gates visible.  ALL DESIGN UNITS ARE CONSIDERED TO HAVE library WORK, STD; use STD.STANDARD.ALL;

28 1/20/2007 - L8 Language Overview III Copyright 2006 - Joanne DeGroat, ECE, OSU28 A final note  If you write a package and analyze it into library WORK, to use the declarations there you need to have a use clause. use WORK.TriState.TRI,WORK.TriState.BitVal; Or could have use.WORK.TriState.ALL; This makes the type TRI and the function BitVal visible to the current design unit in addition to STD.STANDARD.ALL EXAMPLE SLIDE for type compatability


Download ppt "1/20/2007 - L8 Language Overview III Copyright 2006 - Joanne DeGroat, ECE, OSU1 Language Overview III The finish of a grand tour of the language."

Similar presentations


Ads by Google