Basic Language Elements

  • Uploaded by: 18101980
  • 0
  • 0
  • May 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Basic Language Elements as PDF for free.

More details

  • Words: 1,185
  • Pages: 15
Basic Language Elements  Identifiers : An identifier in VHDL is composed of a

sequence of one or more characters .  A legal character is  an upper-case letter (A... Z)  a lower-case letter (a. .. Z)  a digit (0 . . . 9)  the underscore ( _ ) character

 The first character in an identifier must be a letter

and the last character may not be an underscore  Examples of identifiers are  DRIVE_BUS

SelectSignal SET_CK_HIGH CONST32_59

Data Objects  A data object holds a value of a specified type.  Every data object belongs to one of the following

three classes:

 1. Constant An object of constant class can hold a

single value of a given type. This value is assigned to the object before simulation starts and the value cannot be changed during the course of the simulation.  2. Variable: An object of variable class can also hold a single value of a given type. However in this case, different values can be assigned to the object at different times using a variable assignment statement.  3. Signal: An object belonging to the signal class has a past history of values, a current value, and a set of future values. Future values can be assigned to a signal object using a signal assignment statement.

Continued.. Signal objects are typically used to model wires

and flip-flops while variable and constant objects are typically used to model the behavior of the circuits Examples of constant declarations are constant RISE_TIME: TIME := 10ns; constant BUS_WIDTH: INTEGER := 8; Examples of variable declarations are 0);

Variable CTRL_STATUS: BIT_VECTOR(10 downto variable SUM: INTEGER range 0 to 100 := 10; variable FOUND, DONE: BOOLEAN;

Continued.. Examples of signal declarations.

signal CLOCK: BIT; signal DATA_BUS: BIT_VECTOR(0 to 7); signal GATE_DELAY: TIME := 10 ns;

Data Types  All the possible types hat can exist in the language

can be categorized into the following four major categories:

 1. Scalar types: Values belonging to these types

appear in a sequential.  2. Composite types: These are composed of elements of a single type (an array type) or elements of different types (a record type).  3. Access types: These provide access to objects of a given type (via pointers).  4. File types: These provides access to objects that contain a sequence of values of a given type. It is possible to derive restricted types, called subtypes, from other predefined or user-defined types.

VHDL Data Types Diagram. Types

File

Composit e

Access

Array Scalar

Physica l

Enumerat ed Real

Intege r

Recor d

Continued.. There are four different kinds of scalar types.

These types are:  1. enumeration  2. integer  3. physical  4. floating point

Every value belonging to an enumeration type

integer type, or a physical type has a position number associated with it. This number is the position of the value in the ordered list of values belonging to that type.

Continued.. Enumeration

Types: An enumeration type declaration defines a type that has a set of user-defined values consisting of identifiers and character literals. Examples are Type MVL is ('U','0','1','Z); type MICRO_OP is (LOAD, STORE, ADD, SUB, MUL, DIV); subtype ARITH_OP is MICRO_OP range ADD to DIV; Examples of objects defined for these types are signal CONTROL_A: MVL; signal CLOCK: MVL range '0' to '1'; -- Implicit subtype declaration. variable IC: MICRO_OP := STORE; -- STORE is the initial value for IC. variable ALU: ARITH_OP;

Continued..  Integer

Types: whose set of values fall within a specified integer range. Examples of integer type declarations are: type INDEX is range 0 to 15; type WORD_LENGTH is range 31 downto 0; subtype DATA_WORD is WORD_LENGTH range 15 downto 0; type MY_WORD is range 4 to 6; Some object declarations using these types are constant MUX_ADDRESS: INDEX := 5; signal DATA_BUS: DATA_WORD;

 INTEGER is the only predefined integer type of the

language. The range of the INTEGER type is implementation dependent but must at least cover the range -(2^ 31 - 1) to +(2^31 - 1).

Continued..  Floating Point Types: floating point type has a set of values

in a given range of real numbers. Examples of floating point type declarations are type TTL_VOLTAGE is range -5.5 to -1.4; type REAL_DATA is range 0.0 to 31.9; An example of an object declaration is variable LENGTH: REAL_DATA range 0.0 to 15.9; variable LI, L2, L3: REAL_DATA range 0.0 to 15.9;  The minimum range of real numbers is also specified by the Standard package in the Standard Library, and is from 1.0E38 to 1.0E38.

Continued..  Physical

Types: physical type contains values that represent measurement of some physical quantity, like time, length, voltage, and current. Values of this type are expressed as integer multiples of a base unit. An example of a physical type declaration is type CURRENT is range 0 to 1 E9 units nA; -- (base unit) nano-ampere uA = 1000 nA; -- micro-ampere mA = 1000 μA; --milli-ampere Amp = 1000 mA; -- ampere end units; subtype FILTER_CURRENT is CURRENT range 10 μA to 5 mA;  The only predefined physical type is TIME and its range of base values, which again is implementation dependent, must at least be -

Composite Types  A composite type represents a collection of values. There are two composite

types:

 An array type: represents a collection of values all belonging to a single type  A record type: represents a collection of values that may belong to same or

different types.

 Array Types

Examples of array type declarations are type type type type

ADDRESS_WORD is array (0 to 63) of BIT; DATA_WORD is array (7 downto 0) of MVL; ROM is array (0 to 125) of DATA_WORD; DECODE_MATRIX is array (POSITIVE range 15 downto 1, NATURAL range 3 downto 0) of MVL; --POSITIVE and NATURAL are predefined subtypes; these are: subtype NATURAL is INTEGER range 0 to INTEGER'HIGH; subtype POSITIVE is INTEGER range 0 to INTEGER'HIGH;

Continued.. Examples of object declarations using these types are variable ROM_ ADDR: ROM; signal ADDRESS.BUS: ADDRESS_WORD; constant DECODER: DECODE_MATRIX; variable DECODE_VALUE: DECODE_MATRIX;  The language also allows array types to be unconstrained  The number of elements in the array is not specified in the type

declaration.  The object declaration for that type declares the number of element of the array.  A subtype declaration may also specife index constraint for an unconstrained array type.

Examples of unconstrained array declarations are type STACK_TYPE is array (INEGER range <>) of ADDRESS_WORD; subtype STACK is STACK_TYPE(0 to 63); type OP_TYPE is (ADD, SUB, MUL, DIV); type TIMING is array (OP_TYPE range<>, OP_TYPE range <>) of TIME;

Examples of object declarations using these types are variable FAST_STK: STACK_TYPE(-127 to 127); constant ALU_TIMING: TIMING := --ADD, SUB, MUL ((10 ns, 20 ns, 45 ns), -- ADD (20 ns, 15 ns, 40 ns), -- SUB (45 ns, 40 ns, 30 ns)); -- MUL

There

are two predefined one-dimensional unconstrained array types in the language  STRING: an array of characters.  BIT_VECTOR: an array of bits.

Related Documents


More Documents from "chandru"