Top Banner
06/23/22 DSD, USIT, GGSIPU 1 Data Types • Each data object has a type associated with it. • The type defines the set of values that the object can have and the set of operation that are allowed on it.
35

10/17/2015DSD, USIT, GGSIPU1 Data Types Each data object has a type associated with it. The type defines the set of values that the object can have and.

Jan 01, 2016

Download

Documents

Britton Snow
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 10/17/2015DSD, USIT, GGSIPU1 Data Types Each data object has a type associated with it. The type defines the set of values that the object can have and.

04/20/23 DSD, USIT, GGSIPU 1

Data Types

• Each data object has a type associated with it.

• The type defines the set of values that the object can have and the set of operation that are allowed on it.

Page 2: 10/17/2015DSD, USIT, GGSIPU1 Data Types Each data object has a type associated with it. The type defines the set of values that the object can have and.

04/20/23 DSD, USIT, GGSIPU 2

Data types defined in the standard package

• Predefined data type are as follows:– Bit– Bit_vector– Boolean– Character– File_open_kind*– File_open_status*– Integer– Natural– Positive– Real– Severity_level– String– Time*

Page 3: 10/17/2015DSD, USIT, GGSIPU1 Data Types Each data object has a type associated with it. The type defines the set of values that the object can have and.

04/20/23 DSD, USIT, GGSIPU 3

User-defined Types

• The Syntax isTYPE identifier is Type_definition;

Example:

type small_int is range 0 to 1024;

type my_word_length is range 31 downto 0;subtype data_word is my_word_length range 7 downto 0;

Page 4: 10/17/2015DSD, USIT, GGSIPU1 Data Types Each data object has a type associated with it. The type defines the set of values that the object can have and.

04/20/23 DSD, USIT, GGSIPU 4

Data Types

• A type declaration defines the name of the type and the range of the type.

• Type declaration are allowed in package declaration sections, entity declaration sections, architecture declaration sections, subprogram declaration section and process declaration sections.

Page 5: 10/17/2015DSD, USIT, GGSIPU1 Data Types Each data object has a type associated with it. The type defines the set of values that the object can have and.

04/20/23 DSD, USIT, GGSIPU 5

Page 6: 10/17/2015DSD, USIT, GGSIPU1 Data Types Each data object has a type associated with it. The type defines the set of values that the object can have and.

04/20/23 DSD, USIT, GGSIPU 6

Types available in VHDL

• Scalar types– Integer types– Real types– Enumerated– Physical

• Composite Types– Arrays type– Records

• Access Types (equivalent of pointers in C)• File types

Page 7: 10/17/2015DSD, USIT, GGSIPU1 Data Types Each data object has a type associated with it. The type defines the set of values that the object can have and.

04/20/23 DSD, USIT, GGSIPU 7

Scalar Types

• Scalar types describe objects that can hold , at most, one value at a time.

• Integer Type– It is same as mathematical integers.– All of the normal predefined mathematical

function apply to integer types.– Minimum Range: -2,147,483,647 to

12,147,483,647

Page 8: 10/17/2015DSD, USIT, GGSIPU1 Data Types Each data object has a type associated with it. The type defines the set of values that the object can have and.

04/20/23 DSD, USIT, GGSIPU 8

Example - IntegerArchitecture test of test isBegin

Process (x)Variable a: integer;Begin

a := 1; --ok a := -1 ; -- oka := 1.0; -- error

End process;End test;

Page 9: 10/17/2015DSD, USIT, GGSIPU1 Data Types Each data object has a type associated with it. The type defines the set of values that the object can have and.

04/20/23 DSD, USIT, GGSIPU 9

Real Types

• Real Types are used to declare objects that emulate mathematical real numbers.

• Real number can be used to represent numbers out of the range of integer value as well as fractional values.

• Minimum Range: -1.0E+38 to +1.0E+38

Page 10: 10/17/2015DSD, USIT, GGSIPU1 Data Types Each data object has a type associated with it. The type defines the set of values that the object can have and.

04/20/23 DSD, USIT, GGSIPU 10

Example – Real Types

Architecture test of test issignal a : real;

Begina <= 1.0; -- oka <= 1; -- errora <= -1.0E10; -- oka <= 1.5E-20; --oka <= 5.3 ns; -- error

End test;

Page 11: 10/17/2015DSD, USIT, GGSIPU1 Data Types Each data object has a type associated with it. The type defines the set of values that the object can have and.

04/20/23 DSD, USIT, GGSIPU 11

Enumerated types

• Enumerated type is used to represent exactly the values required for a specific operation.

• All of the values of an enumerated type are user-defined.

• This values can be identifiers or single-character literals.

• A typical example: TYPE fourval IS (‘x’, ‘0’, ‘1’, ‘z’);

TYPE color IS (red,yellow, blue,green,orange);

Page 12: 10/17/2015DSD, USIT, GGSIPU1 Data Types Each data object has a type associated with it. The type defines the set of values that the object can have and.

04/20/23 DSD, USIT, GGSIPU 12

IEEE standard 1164Type std_logic is (

‘U’, -- uninititalized‘X’, -- forcing unknown‘0’, -- forcing 0‘1’, -- forcing 1‘Z’, -- high impedence‘W’, -- weak unknown‘L’, -- weak 0‘H’, -- weak 1‘-’); -- don’t care

Page 13: 10/17/2015DSD, USIT, GGSIPU1 Data Types Each data object has a type associated with it. The type defines the set of values that the object can have and.

04/20/23 DSD, USIT, GGSIPU 13

Physical Types

• Physical types are used to represent physical quantities such as distance,current, time and so on.

• A physical type provides for a base unit,and successive units are then defined in terms of this unit.

• The smallest unit represented is one base unit.• The largest unit is determined by the range

specified in physical type declaration.• TIME is a predefined physical types

Page 14: 10/17/2015DSD, USIT, GGSIPU1 Data Types Each data object has a type associated with it. The type defines the set of values that the object can have and.

04/20/23 DSD, USIT, GGSIPU 14

Example – Physical TypePackage example is

type current is range 0 to 10000000000units

na;ua = 1000 na; -- nano ampma = 1000 ua; -- micro ampa = 1000 ma;

End units;type load_factor is (small, med, big);

End example;

Page 15: 10/17/2015DSD, USIT, GGSIPU1 Data Types Each data object has a type associated with it. The type defines the set of values that the object can have and.

04/20/23 DSD, USIT, GGSIPU 15

Architecture delay-cal of delay isBegin

delay <= 10 ns when (load = small) else20 ns when (load = med) else30 ns when (load = big) else40 ns;

out-current <= 1000 ua when (load= small) else1 ma when (load = med) else100 ua;

End delay-cal;

Page 16: 10/17/2015DSD, USIT, GGSIPU1 Data Types Each data object has a type associated with it. The type defines the set of values that the object can have and.

04/20/23 DSD, USIT, GGSIPU 16

Predefined physical type - TimeType TIME is Range <implementation defined>

units

fs; --femtosecond

ps = 1000 fs; -- picosecond

ns = 1000 ps; -- nansecond

us = 1000 ns; -- microsecond

ms = 1000 us; -- millisecond

sec = 1000 ms; -- second

min = 60 sec; -- minute

hr = 60 min; -- hour

End units;

Page 17: 10/17/2015DSD, USIT, GGSIPU1 Data Types Each data object has a type associated with it. The type defines the set of values that the object can have and.

04/20/23 DSD, USIT, GGSIPU 17

Composite Types

• Arrays Type are groups of elements of the same type.– Arrays are useful for modeling linear structure

such as RAMs and ROMs.

• Record Types allow the grouping of elements of different types.– Record are useful for modeling data packets,

instructions and so on.

Page 18: 10/17/2015DSD, USIT, GGSIPU1 Data Types Each data object has a type associated with it. The type defines the set of values that the object can have and.

04/20/23 DSD, USIT, GGSIPU 18

Array Types

• Array types group one or more elements of the same type together as a single object

• Each element of the array can be accessed by one or more array indices.

• Format of type declaration:TYPE data_bus IS array (0 to 31) of BIT;

Page 19: 10/17/2015DSD, USIT, GGSIPU1 Data Types Each data object has a type associated with it. The type defines the set of values that the object can have and.

04/20/23 DSD, USIT, GGSIPU 19

Array slices and Ranges

• Assignment of arrays preserves the left-to-right ordering regardless of the direction.

• ExampleSignal x : std_logic_vector(0 to 3);--case 1Signal y : std_logic_vector(3 downto 0); --case2X <= “1010”;Y <= “0101”;

Page 20: 10/17/2015DSD, USIT, GGSIPU1 Data Types Each data object has a type associated with it. The type defines the set of values that the object can have and.

04/20/23 DSD, USIT, GGSIPU 20

Cont..

• The assignment x<=y is equivalent to:X(0) <= Y(3); -- the left elementX(1) <= y(2);X(2) <=Y(1);X(3) <=Y(0); -- the right elementsThe array range for case I in 0 to 3 loop, the elements of

the array would be accessed from left to right.The array range for caseII in 3 downto 0 loop, the

elements of the array would be accessed from right to left.

Page 21: 10/17/2015DSD, USIT, GGSIPU1 Data Types Each data object has a type associated with it. The type defines the set of values that the object can have and.

04/20/23 DSD, USIT, GGSIPU 21

Multidimensional Array

Type aggregate is array (range<>) of std_logic;

Type identifier_a is array(range<>) of aggregate;

Constant identifier_b : identifier_a :=

((e1,e2…en), -- E1

(e1,e2,…en), --E2

.

(e1,e2,…en)); --En

Page 22: 10/17/2015DSD, USIT, GGSIPU1 Data Types Each data object has a type associated with it. The type defines the set of values that the object can have and.

04/20/23 DSD, USIT, GGSIPU 22

Example-Multidimensional arrays

Library ieee;Use ieee.std_logic_1164.all;Package memory is

constant width : integer := 3;constant memsize : integer := 7;Type data_out is array (0 to width) of std_logic;Type mem_data is arrary (0 to memsize) of data_out;

End memory;

Page 23: 10/17/2015DSD, USIT, GGSIPU1 Data Types Each data object has a type associated with it. The type defines the set of values that the object can have and.

04/20/23 DSD, USIT, GGSIPU 23

Library ieee;

Use ieee.std_logic_1164.all;

Use work.memory.all;

Enity rom is -- ROM declaration

port (addr : in integer;

data : out data_out;

cs : in std_logic;

End rom;

Page 24: 10/17/2015DSD, USIT, GGSIPU1 Data Types Each data object has a type associated with it. The type defines the set of values that the object can have and.

04/20/23 DSD, USIT, GGSIPU 24

Architecture basic of rom is

constant z_state : data_out := (‘z’, ‘z’, ‘z’, ‘z’);

constant x_state : data_out := (‘x’, ‘x’, ‘x’, ‘x’);constant rom_data : mem_data := (

(‘0’, ‘0’, ‘0’, ‘0’),(‘0’, ‘0’, ‘0’, ‘1’),(‘0’, ‘0’, ‘1’, ‘0’),(‘0’, ‘0’, ‘1’, ‘1’),(‘0’, ‘1’, ‘0’, ‘0’),(‘0’, ‘1’, ‘0’, ‘1’),(‘0’, ‘1’, ‘1’, ‘0’),(‘0’, ‘1’, ‘1’, ‘1’), );

Begindata <= rom_data (addr) when cs = ‘1’ else

x_state when cs = ‘0’ elsez_state;

End basic;

Page 25: 10/17/2015DSD, USIT, GGSIPU1 Data Types Each data object has a type associated with it. The type defines the set of values that the object can have and.

04/20/23 DSD, USIT, GGSIPU 25

Record Types

• Record types group object of may types together as a single object.

• Each element of the record can be accessed by its field name.

• Record elements can include elements of any type, including arrays and records.

• The elements of a record can be of the same type or different types.

Page 26: 10/17/2015DSD, USIT, GGSIPU1 Data Types Each data object has a type associated with it. The type defines the set of values that the object can have and.

04/20/23 DSD, USIT, GGSIPU 26

Features of Records

• A record is referenced by a single identifier.• Records are very useful to collapse multiple

related elements into a single type so that record objects can be handle as a objects.

• They are very useful in Bus Functional Models and test benches to pass a set of information to another process or another component.

• Values can be assigned to a record type using aggregates in a manner similar to aggregates for arrays.

Page 27: 10/17/2015DSD, USIT, GGSIPU1 Data Types Each data object has a type associated with it. The type defines the set of values that the object can have and.

04/20/23 DSD, USIT, GGSIPU 27

Limitation

• Many synthesizers can compile records provided the elements of the record are of type Bit, bit_vector, boolean, std_ulogic, Std_ulogic_vector, integer or subtypes of these types.

• However, most current synthesizers do not accept record aggregate assignments, and thus require individual assignment of the record elements.

Page 28: 10/17/2015DSD, USIT, GGSIPU1 Data Types Each data object has a type associated with it. The type defines the set of values that the object can have and.

04/20/23 DSD, USIT, GGSIPU 28

Example - Records

Type optype is (add,sub,mpy,div,jmp);

Type instruction is

Record -- declaration of record

opcode : optype; -- field of record

src : integer;

dat : integer;

End record;

Page 29: 10/17/2015DSD, USIT, GGSIPU1 Data Types Each data object has a type associated with it. The type defines the set of values that the object can have and.

04/20/23 DSD, USIT, GGSIPU 29

Process (x)variable inst : instruction;variable source,dat : integer;variable operator : optype;

Beginsource := inst.src; -- okdest := inst.src; -- oksource := inst.opcode; -- erroroperator := inst.opcode; --okinst.src := dest; --ok

Page 30: 10/17/2015DSD, USIT, GGSIPU1 Data Types Each data object has a type associated with it. The type defines the set of values that the object can have and.

04/20/23 DSD, USIT, GGSIPU 30

Access Types

• Access types allow the designer to model objects of a dynamic nature.

E.g. Queues, FIFO, Creating and Maintaining of a linked list.

• Only variables can be declared as access types.

• Used in Sequential processing• Not Synthesizeable statement.

Page 31: 10/17/2015DSD, USIT, GGSIPU1 Data Types Each data object has a type associated with it. The type defines the set of values that the object can have and.

04/20/23 DSD, USIT, GGSIPU 31

Cont..

• Access types are used to declare values that access dynamically allocated variables.

• Dynamically allocated variables are referenced, not by name, but by an access value that acts like a pointer to the variable.

• Access types are used in the TextIO subprograms to read and write text strings.

• Access types were efficiently used in VHDL in the functional modeling of large memories where fixed memory allocation is not realistic.

Page 32: 10/17/2015DSD, USIT, GGSIPU1 Data Types Each data object has a type associated with it. The type defines the set of values that the object can have and.

04/20/23 DSD, USIT, GGSIPU 32

File Types

• A file type allows declaration of objects that have a type FILE.

• A file object type is actually a subset of the variable object type.

• A variable object can be assigned with a variable assignment, while a file object cannot be assigned.

• A file object can be read from, written to, and checked for end of file only with special procedure and functions.

Page 33: 10/17/2015DSD, USIT, GGSIPU1 Data Types Each data object has a type associated with it. The type defines the set of values that the object can have and.

04/20/23 DSD, USIT, GGSIPU 33

Cont..

• File types are typically used to access files in the host environment.

• File types are used to define objects representing files in the host system environment.

• The value of a file object is the sequence of values contained in the host environment.

• Package TextIO provides for the definition of file type TEXT as “type TEXT is file of string”.

• TextIO package supports human readable IO.

Page 34: 10/17/2015DSD, USIT, GGSIPU1 Data Types Each data object has a type associated with it. The type defines the set of values that the object can have and.

04/20/23 DSD, USIT, GGSIPU 34

Characters, Strings

• To use character literal in a VHDL Code, one puts it in a single quotation mark.

‘a’, ‘B’, ‘,’• A string of character are placed in double

quotation marks: “aa”, “bb”

Any printing character can be included inside a string.

Page 35: 10/17/2015DSD, USIT, GGSIPU1 Data Types Each data object has a type associated with it. The type defines the set of values that the object can have and.

04/20/23 DSD, USIT, GGSIPU 35

Bit Strings

• A bit-strings represents a sequence of bit values. E.g.Binary : B “1100_1001”, b “1001011”

Hexagonal : X “C9”, X “4b”

Octal : O “311”, o “113”