Data Types Composite Date Types n Arrays Single
- Slides: 46
Data Types
Composite Date Types n Arrays – Single and multi-dimensional – Arrays are single Type n Records – Records are mixed types
Array n Array is an Indexed Collection of Elements All of the Same Type – One-dimensional with one index – Multi-dimensional with several indices
Constrained versus unconstrained Arrays – Constrained » the bounds for an index are established when the type is defined – Unconstrained » the bounds are established after the type is defined q Each position in the array has a scalar index value associated with it
Array Definition Syntax and Example array of ( discrete_range { , . . . } element_subtype_indication ; ) discrete_range is an index n name of previously declared type with optional range constraint Example 1 type Large_Word is array ( 63 downto 0 ) of bit ; Example 2 type Address_List is array ( 0 to 7 ) of Large_Word ;
More examples of Array Declaration array of ( discrete_range { , . . . } element_subtype_indication ; ) type 2 D_FFT is array ( 1 to 128, 1 to 128 ) of real ; type Scanner is array ( byte range 0 to 63 ) of integer ; type Sensor_Status is array ( Stdby, On, Off ) of time ;
Unconstrained Declaration of array type Detector_Array is array ( natural range <> ) of natural ; n The symbol ‘<>’ is called a box and can be thought of as a place-holder for the index range. n Box is filled in later when the type is used. variable X_Ray_Detector : Detector_Array ( 1 to 64 ) ;
Two Examples of Predefined Unconstrained Types type string is array ( positive range <> ) of character ; type bit_vector is array ( natural range <> ) of bit ;
Two more Examples of Predefined Unconstrained Types type std_ulogic_vector is array ( natural range <> ) of std_ulogic ; type bit_vector is array ( natural range <> ) of bit ;
Unconstrained Array Ports You do the following: n 1. Specify Port as unconstrained n 2. Determine size of port by Index Bounds of Signal – e. g. , AND Gates With Different Number of Inputs
1. Example of entity of Unconstrained Array Port You specify vector of bits with no number here entity And_Multiple is port ( i y : : in out bit_vector ; bit ) ; end entity And_Multiple ; i And_Multiple y
2. AND, example continued i y architecture And_Multiple_B of You use And_Multiple is Range so you begin still do not And_Reducer : process ( i ) is tell how many variable Result : bit ; bits begin Result : = ‘ 1’ ; for Index in i’Range loop Result : = Result and i ( Index ) ; end loop ; variable Signal created outside the loop
AND, example continued y <= Result ; end process And_Reducer ; end architecture And_Multiple_B ; signal Here we finished architecture And_Multiple_B without specifying number of bits In the next slide we will call this architecture structurally and at this time the number of bits will be decided
AND, e. g. , count_value 8 bits i terminal_count y And_Multiple architecture And_Multiple_B signal count_value : bit_vector ( 7 downto 0 ) ; signal terminal_count : bit ; tc_gate : entity work. And_Multiple ( And_Multiple_B ) port map ( i => count_value , y => terminal_count ) ; n The Input Port Is Constrained by the Index Range of the Input Signal, i. e. , An 8 -Input AND Gate.
Array References n Arrays Can Be Equated, Rather Than Having to Transfer Element by Element n Refer to Individual Elements By: – 1. Single Index Value, e. g. , A ( 5 ) – 2. Range: a contiguous sequence of a one-dimensional array can be referred to by using it as an index. e. g. , A( 5 to 15 ) – 3. Previously defined subtype – 4. Index types do not have to be the same
Examples of Array Aggregate Sensor_Status Stdby type Sensor_Status is array ( Stdby , On , Off ) On Off of time ; variable FLIR_Status : Sensor_Status : = ( 0 sec , 0 sec ); variable FLIR_Status : Sensor_Status : = ( On => 5 sec ) ; Changes only one field
Array Aggregate Syntax n A List of Element Values Enclosed in Parentheses type Sensor_Status is array ( Stdby , On , Off ) n of time ; This list is used to initialize Elements of an Array to Literal Values aggregate <= ( [ choices => ] expression {. . . } ) syntax
There are two ways to refer to elements in Array Aggregate n Two Ways of Referring to Elements – Positional: explicitly list values in order – Named Association: Explicitly list values by their index using “choices” » Order NOT important n Positional and Named Association Cannot Be Mixed Within an Aggregate.
Example of Named Association in Array Aggregate n others Can Be Used in Place of an Index in a Named Association, – Indicating a Value to Be Used for All Elements Not Explicitly Mentioned variable FLIR_Status : Sensor_Status : = ( Off => 10 min, others => 0 sec ) ; Named Association: Explicitly list values by their index using “choices” Order NOT important
Example of setting many elements to one value in Array Aggregate n A Set of Values Can Be Set to a Single Value by Forming a List of Elements Separated by Vertical Bars, |. Here I set 4 elements of array to 1 all other to 0 type 2 D_FFT is array ( 1 to 128, 1 to 128 ) of real ; variable X_Ray_FFT : 2 D_FFT : = ( ( 60, 68 ) | ( 62, 67 ) | ( 67, 73 ) | ( 60, 60 ) => 1. 0 , others 0. 0 ) ;
Array Operations: element by element logic operations n One-Dimensional Arrays of Bit or Boolean – Element by element AND, OR, NAND, NOR, XNOR can be done on array type Large_Word is array ( 63 downto 0 ) of bit ; variable Samp_1 , Samp_2 : Large_Word ( 0 to 63 => ‘ 0’ ) ; 0 Large_Word 0 0 63 Here we declare variables Samp_1 and Samp_2 that we will use next
Array Operations: element by element logic operations constant Bit_Mask : Large_Word ( 8 to 15 => ‘ 1’ ) ; Samp_2 : = Samp_1 and Bit_Mask ; Bits from 8 to 15 are AND -ed with Bit_Mask
Array Operations: element by element logic operations NOT Operations – Complement of elements of a single array, NOT Samp_2 : = not Samp_1 ;
1 D Shift and Rotate Array Operations n One-Dimensional Arrays Can Be Shifted and Rotated – Shift » Logical: Shifts and fills with zeros » Arithmetic: Shifts and fills with copies from the end being vacated – Rotate » Shifts bits out and back in at other end
Shift and rotate operations Shift left logic B” 1010_1100 ” sll 4 == B” 1100_0000 ” B” 1010_1100 ” sla 4 == B” 1100_0000 ” B” 1010_1100 ” sra 4 == B” 1111_1010 ” B” 1010_1100 ” rol 4 == B” 1100_1010 ” Shift right arithmetic Rotate left
Relational Array Operations n One-Dimensional Arrays Can Be Operated on by Relational Operators, = , /= , <= , >= – Arrays need not be of the same length – Arrays must be of same type
Array Operations: Concatenation n Concatenation Operator, & – Can combine array and scalar B” 1010_1100 ” & B” 1100_0000 ” == B” 1010_1100_0000 ” B” 1010_1100 ” & ‘ 1’ == B” 1010_1100_1 ”
Conversion from one Array Type to another n One Array Type Can Be Converted to Another If: – Same element type – Same number of dimensions – Same index types
Example of Array Type Conversions Example subtype name is string ( 1 to 20 ) ; type display_string is array ( integer range 0 to 19 ) of character ; variable item_name : name ; variable display : display_string ; display : = display_string ( item_name ) ; 0 to 19 1 to 20
Example of Array Aggregate n Assignments Can Be Made From a Vector to an Aggregate of Scalars or Vice-Versa. type Sensor_Status is array ( Stdby, On, Off ) of time ; variable Stdby_Time, On_Time, Off_Time : time ; Variable FLIR_Status : Sensor_Status : = ( 0 sec , 0 sec ) ; Aggregate of scalars ( Stdby_Time, On_Time, Off_Time ) : = Flir_Status ;
Predefined Attributes n Predefined Attributes deal with data obtained from Blocks, Signals, Types and Subtypes n Return values such as: – length of an array type – time since last signal change – range of values in a type n We showed earlier attributes for signals. Now we show for types Predefined attributes are useful for performing certain type of functions such as: – – timing checks bounds clock edge detection type conversion
Array Type Bound Example: use of predefined attributes attribute
Another Example of array bound
Multi-range array attributes
Array length attributes
Range attributes
Type attributes position function
Homework: Attributes Exercise
Example of using Attributes We calculate resistance dividing voltage by current
User Defined Attributes n These attributes attach data to objects n They are defined by the user of Data types n Data is constant n They are accessed with the same syntax as predefined attributes
User Defined Attributes
Records n Records in VHDL are collections of Named Elements of Possibly Different Types. n To refer to a Field of a Record Object, you should use a Selected Name.
Example of a Record * type instruction is record op_code : processor_op ; address_mode : mode ; operand 1, operand 2 : integer range 0 to 15 ; end record ; *Ashenden, VHDL cookbook
Records n Aggregates Can Be Used to Write Literal Values for Records. n Positional and Named Association Can Be Used – Record field names being used in place of array index names.
End of Lecture
Sources Prof. K. J. Hintz Department of Electrical and Computer Engineering George Mason University
- Array advantages and disadvantages
- Parallel arrays java
- Ex dividend record date
- What is ex dividend date
- Single instruction stream
- Single instruction single data
- Composite date
- Composite vs non composite
- Composite data types in pl/sql
- Array of arrays c++
- Java array operations
- Veteork
- C++ parallel arrays
- Why do we need arrays?
- Dynamic arrays and amortized analysis
- Suma de arreglos unidimensionales en c
- Arreglo java
- Mips arrays
- Polynomial representation using array in c
- Strings in assembly language
- Global arrays in c
- Computer science arrays
- Searching and sorting arrays in c++
- Arrays visual basic
- Python parallel arrays
- How many arrays in 24
- Pascal 2d array
- Mips arrays
- Creating arrays matlab
- Adt of array
- Partially filled arrays
- Redundancy array of independent disk
- Python list of arrays
- Arrays
- Day 3: arrays
- Redundant array of inexpensive disk
- Small basic arrays
- Advantage of dynamic memory allocation
- Microled arrays
- Are vectors dynamic arrays
- Facts about arrays
- Single channel single phase example
- Date data type java
- Date data type java
- Composite signals in data communication
- Composite signals in data communication
- Composite signals in data communication