I use VHDL-200X in ISE.I always use data type like std_logic_vector
,std_logic
,integer
,boolean
and real
.Always use std_logic_vector
convert to integer
and reverse.
My team mates ask me to use these three parts of library IEEE
.
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
But someone said do not use IEEE.STD_LOGIC_UNSIGNED.ALL
instead of IEEE.NUMERIC_STD.ALL
.Because you have everything you need in numeric_std
, and STD_LOGIC_UNSIGNED
is not standard library. Here.
I confused about it and anybody can help?
Never use std_logic_arith
or std_logic_**signed
. Always use numeric_std
when signed or unsigned values are needed. The former packages claim to be IEEE, but they aren't. They are vendor specific extensions from Synopsys or Mentor Graphics.
Both defined arithmetic operations on std_logic_vector
based on the imported packages. This e.g. means you can't used signed and unsigned values in the same architecture.
Doing all math in integer
s has some drawbacks: