git-svn-id: http://moon:8086/svn/vhdl/trunk@1323 cc03376c-175c-47c8-b038-4cd826a8556b
174 lines
8.4 KiB
Plaintext
174 lines
8.4 KiB
Plaintext
|
|
This is the "ieee_proposed" library. This is a compatability library,
|
|
which is designed to provide all of the functionality of the VHDL-200X-FT
|
|
packages in VHDL-93. The "_c" after the package name is used to denote
|
|
that this is a 1993 compliant version of this package. Otherwise, the
|
|
name of the file and the name of the package are the same.
|
|
|
|
Please compile the following files into a library named "ieee_proposed":
|
|
standard_additions_c.vhdl
|
|
env_c.vhdl
|
|
standard_textio_additions_c.vhdl
|
|
std_logic_1164_additions.vhdl
|
|
numeric_std_additions.vhdl
|
|
numeric_std_unsigned_c.vhdl
|
|
fixed_pkg_c.vhdl
|
|
float_pkg_c.vhdl
|
|
|
|
|
|
New/Updated functions
|
|
A) standard_additions -- Additions to the package "std.standard"
|
|
Use model:
|
|
use ieee_proposed.standard_additions.all;
|
|
Dependancies: None.
|
|
Notes: The functions "rising_edge" and "falling_edge" are defined in
|
|
this package. If you use "numeric_bit" they are ALSO defined in that
|
|
package, causing a conflict. The VHDL-200X-FT version of numeric_bit
|
|
has these functions commented out, as well as the "sll", "srl", "ror"
|
|
and "rol" functions which are implicit.
|
|
New types defined in this package:
|
|
REAL_VECTOR
|
|
TIME_VECTOR
|
|
INTEGER_VECTOR
|
|
BOOLEAN_VECTOR
|
|
New constants defined in this package:
|
|
SIM_RESOLUTION : TIME - returns the simulator's resolution (1 ns default)
|
|
1) "maximum" and "minimum" are defined for all default datatypes
|
|
2) _reduce functions (and_reduce, nand_reduce, or_reduce ...) are defined
|
|
These functions reduce a bit_vector to a single bit. Example:
|
|
or_reduce ("0101") = '1'. In VHDL-2006 syntax these will be "or".
|
|
3) "vector" and "bit" operations are defined. These will perform a
|
|
boolean operation of a vector. Example:
|
|
"1" xor "1010" = "0101";
|
|
5) /??/ function is defined for "bit" ("??" operator is release)
|
|
if (/??/('1')) then -- will return a "true".
|
|
6) rising_edge and falling_edge functions are defined (see Notes).
|
|
7) to_string function - Converts any of the base types into a string.
|
|
Example:
|
|
assert (bv = "101") report "result was " & to_string(bv) severity note;
|
|
8) to_hstring and to_ostring function (bit_vector to hex or octal string)
|
|
B) standard_textio_additions - Additions to the package "std.textio"
|
|
Use model:
|
|
use ieee_proposed.standard_textio_additions.all;
|
|
Dependencies: std.textio, ieee_proposed.standard_additions
|
|
1) tee - Echos the string to BOTH the file and the screen
|
|
2) SREAD and SWRITE - String read and write routines (so you no longer
|
|
need to do write (L, string'("ABCEDFG"));
|
|
3) HREAD and HWRITE (Hex read and write) for bit_vector
|
|
4) OREAD and OWRITE (octal read and write) for bit_vector
|
|
5) BREAD and BWRITE (binary read and write, same as "READ" and "WRITE" for
|
|
bit_vector
|
|
6) justify - Justify a string left or right with a width. Example:
|
|
justify ("ABCD", left, 6); will result in "ABCD "
|
|
C) std_logic_1164_additions - Additions to the package "ieee.std_logic_1164"
|
|
Usage model:
|
|
use ieee.std_logic_1164.all;
|
|
-- use ieee.std_logic_textio.all; -- Comment out, included in "_additions".
|
|
use ieee_proposed.std_logic_1164_additions.all;
|
|
Dependencies: ieee.std_logic_1164
|
|
Note: The contents of the "std_logic_textio" package have now been
|
|
included in the "std_logic_1164" package, and an EMPTY "std_logic_textio"
|
|
package is provided in the new release.
|
|
1) Short had aliases:
|
|
a) to_bv - calls "to_BitVector"
|
|
b) to_slv - calls "to_StdLogicVector"
|
|
c) to_sulv - calls "to_stdULogicVector"
|
|
2) Long hand aliases:
|
|
a) to_bit_vector - calls "to_BitVector"
|
|
b) to_std_logic_vector - calls "to_StdLogicVector"
|
|
c) to_std_ulogic_vector - calls "to_StdULogicVector"
|
|
3) _reduce functions (and_reduce, nand_reduce, or_reduce ...) are defined
|
|
These functions reduce a std_logic_vector (or ulogic) to a single bit.
|
|
In vhdl-2006 these will be unary "or", example "or "11011" = '1'"
|
|
4) "vector" and "std_ulogic" operations are defined. These will perform a
|
|
boolean operation of a vector. Example:
|
|
"1" xor "1010" = "0101";
|
|
5) "std_ulogic" and "boolean" operations are defined. Thus:
|
|
if '1' and true then -- returns a "true".
|
|
6) "\??\" function is defined for "std_ulogic" ("??" operator is release)
|
|
if (bool('1')) then -- will return a "true".
|
|
7) READ and WRITE procedures for "std_logic_vector", "std_ulogic_vector"
|
|
and "std_ulogic" are defined.
|
|
8) HREAD and HWRITE (Hex read and write) for std_logic_vector
|
|
and std_ulogic_vector. These are more "forgiving" than the ones
|
|
originally from "std_logic_textio"
|
|
9) OREAD and OWRITE (octal read and write) for std_logic_vector
|
|
and std_ulogic_vector. These are more "forgiving" than the ones
|
|
originally from "std_logic_textio"
|
|
10) BREAD and BWRITE (binary read and write, same as "READ" and "WRITE" for
|
|
std_logic_vector and std_ulogic_vector.
|
|
11) to_string function - Converts a "std_ulogic", "std_logic_vector" or
|
|
"std_ulogic_vector" types into a string.
|
|
Example:
|
|
assert (slv = "101") report "result was " & to_string(slv) severity note;
|
|
12) to_hstring and to_ostring function (std_(u)logic_vector to hex or octal
|
|
string)
|
|
D) numeric_std_additions - additions the the package "ieee.numeric_std"
|
|
Usage Model:
|
|
use ieee.std_logic_1164.all;
|
|
use ieee.numeric_std.all;
|
|
use ieee_proposed.numeric_std_additions.all;
|
|
Dependencies: ieee.std_logic_1164, ieee.numeric_std
|
|
1) SIGNED or UNSIGNED + std_ulogic operators
|
|
2) SIGNED or UNSIGNED - std_ulogic operators
|
|
3) type UNRESOLVED_UNSIGNED (aliased to U_UNSIGNED) is an unresolved
|
|
verion of UNSIGNED. It is aliased to "UNSIGNED" for compatability.
|
|
4) type UNRESOLVED_SIGNED (aliased to U_SIGNED) is an unresolved
|
|
verion of SIGNED. It is aliased to "SIGNED" for compatability.
|
|
5) \?=\, \?/=\ - similar to "std_match", but return std_ulogic values.
|
|
\?<\, \?<=\, \?>\, \?>=\ - compare functions which retrun std_ulogic.
|
|
(these will be "?="... operators in the release)
|
|
7) To_X01, To_X01Z, To_U01X, Is_X - same as std_logic_1164 functions,
|
|
but overloaded for SIGNED and UNSIGNED.
|
|
8) "sla" and "sra" - Mathmetically correct versions of these functions.
|
|
9) minimum and maximum - smaller or larger of two SIGNED or UNSIGNED values.
|
|
10) find_rightmost and find_leftmost - finds the first bit in a string.
|
|
Example:
|
|
find_leftmost (c12, '1'); -- returns the Log2 of "c12".
|
|
returns -1 if not found.
|
|
11) _reduce functions (and_reduce, nand_reduce, or_reduce ...) are defined
|
|
These functions reduce a SIGNED or an UNSIGNED to a single bit.
|
|
(will overload the "or" and "and", ... operators in the release)
|
|
12) SIGNED or UNSIGNED and "std_ulogic" operations are defined.
|
|
These will perform a boolean operation of a vector. Example:
|
|
"1" xor "1010" = "0101";
|
|
13) READ and WRITE procedures for "SIGNED", and "UNSIGNED" are defined.
|
|
14) HREAD and HWRITE (Hex read and write) for SIGNED and UNSIGNED.
|
|
These are more "forgiving" than the ones
|
|
originally from "std_logic_textio"
|
|
15) OREAD and OWRITE (octal read and write) for "SIGNED" and "UNSIGNED.
|
|
These are more "forgiving" than the ones
|
|
originally from "std_logic_textio"
|
|
16) BREAD and BWRITE (binary read and write, same as "READ" and "WRITE" for
|
|
SIGNED and UNSIGNED.
|
|
17) to_string function - Converts a "SIGNED" or "UNSIGNED" types into a
|
|
string. Example:
|
|
assert (UNS = "101") report "result was " & to_string(UNS) severity note;
|
|
18) to_hstring and to_ostring function (SIGNED or UNSIGNED to hex or octal
|
|
string)
|
|
E) numeric_std_unsigned - Simular to the "std_logic_unsigned" packages, but
|
|
with all of the functionality of the "numeric_std" package.
|
|
use model:
|
|
use ieee.std_logic_1164.all;
|
|
use ieee_proposed.numeric_std_unsigned.all;
|
|
dependencies: ieee.numeric_std, ieee_proposed.numeric_std_additions
|
|
|
|
F) For fixed point package:
|
|
use model:
|
|
use ieee.std_logic_1164.all;
|
|
use ieee.numeric_std.all;
|
|
use ieee_proposed.fixed_float_types.all;
|
|
use ieee_proposed.fixed_pkg.all;
|
|
See fixed point package documentation
|
|
http://www.vhdl.org/vhdl-200x/vhdl-200x-ft/packages/Fixed_ug.pdf
|
|
|
|
G) For floating point package:
|
|
use model:
|
|
use ieee.std_logic_1164.all;
|
|
use ieee.numeric_std.all;
|
|
use ieee_proposed.fixed_float_types.all;
|
|
use ieee_proposed.fixed_pkg.all;
|
|
use ieee_proposed.float_pkg.all;
|
|
See floating point package documentation
|
|
http://www.vhdl.org/vhdl-200x/vhdl-200x-ft/packages/Float_ug.pdf
|