The Bit_Vector type is predefined in the Standard package as a standard one-dimensional array type with each element being of the Bit type.
type bit_vector is array (natural range <>) of bit;
The Bit_vector type is an unconstrained vector of elements of the bit type. The size of a particular vector is specified during its declaration (see the example below). The way the vector elements are indexed depends on the defined range and can be either ascending or descending (see range).
Assignment to an object of the Bit_vector type can be performed in the same way as in case of any arrays, i.e. using single element assignments, concatenation, aggregates, slices or any combination of them.
Example 1
signal DataBus :
Bit_vector(7 downto 0);
signal FlagC : Bit;
DataBus(0) <=
'1'; --
1
DataBus <= '0' & "111000" &
FlagC; --
2
DataBus <= ('0', others
=>
'1'); --
3
DataBus <= DataBus(6 downto
0) & DataBus(7); -- 4
DataBus <=
"01110001"; --
5
There is one bit_vector defined in this example - DataBus. Its range
is defined as descending, therefore the most significant bit will be
DataBus(7). Line 1, marked in the comment field, illustrates
assignment of a single element (bit). The line 2 shows typical use of
concatenation. Note that both single bits, groups of bits (with
double quotes!) and other signals (as long as their type is
compatible) can be used. The line 3 demonstrates the use of
aggregates. The line 4 illustrates how slices can be used together
with concatenation. The value of DataBus will be rotated left in this
example. Finally, in line 5 DatBus is assigned an explicit value,
specified with double quotes.
Despite that each of the numbered lines above is correct, it would be illegal to put them together in one specification as shown above, due to the fact that bit_vector is an unresolved type and there can be only one assignment to an object of this type in an architecture.
Logical values for objects of the Bit_vector type MUST be written in double quotes. Single elements, however, are of the bit type, therefore all values assigned to single elements are specified in single quotes.