Vous êtes sur la page 1sur 34

VHDL Data Types

Suresh Balpande
www.sbalpande.webs.com

www.sbalpande.webs.com

VHDL Data Types

www.sbalpande.webs.com

VHDL Data Types


Scalar
Integer
Enumerated
Real (floating point)*
Physical*

Composite
Array
Record

Access (pointers)*
* Not supported by synthesis tools
www.sbalpande.webs.com

Predefined Data Types

bit (0 or 1)
bit_vector (array of bits)
integer
real
time (physical data type)

www.sbalpande.webs.com

Different data types


Enumeration:
Red, blue
standard
logic:
Resolved,
Unresolved

Boolean:
TRUE,
FALSE

Data
types

Float:
0.124

Integer:
13234,23

Bit:
0,1

Character
a,b
String:
text

www.sbalpande.webs.com

Examples of some common types


Type BOOLEAN is (FALSE, TRUE)
type bit is (0 ,1);
type character is (-- ascii string)
type INTEGER is range of integer numbers
type REAL is range of real numbers

www.sbalpande.webs.com

VHDL Data Objects


Constant
Variable
Signal
File*

* Not supported by synthesis tools


www.sbalpande.webs.com

Identifiers
May contain A-Z, a-z, 0-9, _
Must start with letter
May not end with _
May not include two consecutive _
VHDL is case insensitive
Sel sel and SEL refer to same object

www.sbalpande.webs.com

Identifier Examples
A2G
valid
8bit_counter
invalid -- starts with number
_NewValue
invalid -- starts with _
first#
invalid -- illegal character

www.sbalpande.webs.com

Characters and Strings


Characters
A, 0, 1, $, x, *

Strings
string of characters
00101101
0X110ZZ1

www.sbalpande.webs.com

Characters and Strings


Bit Strings
B011111010110
O3726
X7D6

www.sbalpande.webs.com

Integer Data Type

Integer
Minimum range for any implementation as defined by
standard: - 2,147,483,647 to 2,147,483,647
Example assignments to a variable of type integer :
ARCHITECTURE test_int OF test IS
BEGIN
PROCESS (X)
VARIABLE a: INTEGER;
BEGIN
a := 1; -- OK
a := -1; -- OK
a := 1.0; -- illegal
END PROCESS;
END test_int;
www.sbalpande.webs.com

Integer Data Type


Minimum range for any implementation: 2,147,483,647 to 2,147,483,647
Define range of integer
minimizes synthesized logic

type CountValue is range 0 to 15;


type Twenties is range 20 to 29;
type Thirties is range 39 downto 30;

www.sbalpande.webs.com

Example of Integer Data Type


process(addr)
variable j: integer range 0 to 35;
variable addru: unsigned(7 downto 0);
begin
for i in 7 downto 0 loop
addru(i) := addr(i);
end loop;
j := conv_integer(addru);
M <= rom(j);
end process;

www.sbalpande.webs.com

Enumeration types:
An enumeration type is defined by listing
(enumerating) all possible values
Examples:
type COLOR is (BLUE, GREEN,
YELLOW, RED);
type MY_LOGIC is (0, 1, U, Z);
-- then MY_LOGIC can be one of the 4
values
www.sbalpande.webs.com

www.sbalpande.webs.com

VHDL Data Types


Scalar Types (Cont.)
Enumerated
User specifies list of possible values
Example declaration and usage of enumerated data type :
TYPE binary IS ( ON, OFF );
... some statements ...
ARCHITECTURE test_enum OF test IS
BEGIN
PROCESS (X)
VARIABLE a: binary;
BEGIN
a := ON; -- OK
... more statements ...
a := OFF; -- OK
... more statements ...
END PROCESS;
END test_enum;
www.sbalpande.webs.com

Exercises
Example of the enumeration type of the menu of a restaurant:
type food is (hotdog, tea, sandwich, cake, chick_wing);
(a) Declare the enumeration type of the traffic light.
Answer: _______________________________________
(b) Declare the enumeration type of the outcomes of rolling a
dice.
Answer: _______________________________________
(c) Declare the enumeration type of the 7 notes of music.
Answer: _______________________________________

www.sbalpande.webs.com

Physical
Physical
Can be user defined range
Physical type example

Time units are the only predefined physical type in VHDL.

www.sbalpande.webs.com

Physical
Physical
Can be user defined range
Physical type example

Current in Amp, mA.,

www.sbalpande.webs.com

Predefined physical data type

www.sbalpande.webs.com

VHDL Data Types


Scalar Types (Cont.)
Real
Minimum range for any implementation as defined by
standard: -1.0E38 to 1.0E38
Example assignments to a variable of type real :
ARCHITECTURE test_real OF test IS
BEGIN
PROCESS (X)
VARIABLE a: REAL;
BEGIN
a := 1.3; -- OK
a := -7.5; -- OK
a := 1; -- illegal
a := 1.7E13; -- OK
a := 5.3 ns; -- illegal
END PROCESS;
END test_real;
www.sbalpande.webs.com

VHDL Data Types


Scalar Types (Cont.)
Physical
Require associated units
Range must be specified
Example of physical type declaration :
TYPE resistance IS RANGE 0 TO 10000000
UNITS
ohm; -- ohm
Kohm = 1000 ohm; -- i.e. 1 KW
Mohm = 1000 kohm; -- i.e. 1 MW
END UNITS;

Time is the only physical type predefined in


VHDL standard
www.sbalpande.webs.com

Booleans
type boolean is (false, true);
variable A,B,C: boolean;
C := not A
C := A and B
C := A or B
C := A nand B
C := A nor B
C := A xor B
C := A xnor B
www.sbalpande.webs.com

Bits
type bit is (0, 1);
signal x,y,z: bit;
x <= 0;
y <= 1;
z <= x and y;

www.sbalpande.webs.com

Standard Logic
library IEEE;
use IEEE.std_logic_1164.all;

type std_ulogic is ( U, -- Uninitialized


X -- Forcing unknown
0 -- Forcing zero
1 -- Forcing one
Z -- High impedance
W -- Weak unknown
L -- Weak zero
H -- Weak one
-); -- Dont care
www.sbalpande.webs.com

Standard Logic
type std_ulogic is unresolved.
Resolved signals provide a mechanism
for handling the problem of multiple
output signals connected to one signal.
subtype std_logic is resolved std_ulogic;

www.sbalpande.webs.com

Resolved logic concept


(Multi-value Signal logic)
Can the outputs be connected together?

C1

??
C2

www.sbalpande.webs.com

Resolved signal concept


Signal c1,c2, b1: bit;
b1<=c1;

c1

www.sbalpande.webs.com

b1

Resolved signal concept


Signal c1,c2, b1: bit;
b1<=C1;
b1<=C2;

??
illegal

C1

b1

??
C2

www.sbalpande.webs.com

Type Std_logic and std_ulogic

Std_logic is a type of resolved logic, that means a signal


can be driven by 2 inputs
std_ulogic: (the u: means unresolved) Std_ulogic type
is unresolved logic, that means a signal cannot be driven
by 2 inputs

www.sbalpande.webs.com

VHDL Data Types


Composite Types
Array
Used to group elements of the same type into a single VHDL object
Range may be unconstrained in declaration
Range would then be constrained when array is used
Example declaration for one-dimensional array (vector) :
TYPE data_bus IS ARRAY(0 TO 31) OF BIT;

0 ...element indices... 31
0 ...array values...
1
VARIABLE X : data_bus;
VARIABLE Y : BIT;
Y := X(12);

-- Y gets value of element at index 12


www.sbalpande.webs.com

VHDL Data Types


Composite Types (Cont.)
Example one-dimensional array using DOWNTO :
TYPE reg_type IS ARRAY(15 DOWNTO 0) OF BIT;

15 ...element indices... 0
0 ...array values...
1
VARIABLE X : reg_type;
VARIABLE Y : BIT;
Y := X(4);

-- Y gets value of element at index 4

DOWNTO keyword must be used if leftmost


index is greater than rightmost index
Big-endian bit ordering, for example
www.sbalpande.webs.com

VHDL Data Types


Composite Types (Cont.)
Records
Used to group elements of possibly different types into a single
VHDL object
Elements are indexed via field names
Examples of record declaration and usage :
TYPE binary IS ( ON, OFF );
TYPE switch_info IS
RECORD
status : BINARY;
IDnumber : INTEGER;
END RECORD;
VARIABLE switch : switch_info;
switch.status := ON; -- status of the switch
switch.IDnumber := 30; -- e.g. number of the switch
www.sbalpande.webs.com

Vous aimerez peut-être aussi