I am trying to define a complex type (i.e, a type that consists of both a real and imaginary part) and am trying to find out a way to make it generic.
This my current static code:
type complex_vector is record
Re : signed(15 downto 0);
Im : signed(15 downto 0);
end record;
Now I wonder whether there is a way to make this generic, in in other word something like:
type complex_vector (Generic: Integer := WIDTH) is record
Re : signed(WIDTH downto 0);
Im : signed(WIDTH downto 0);
end record;
I tried to google for a solution as well as going through my books, but I cannot find any solution. Is there really none? Without records it is possible to wright something like this:
type blaaa is array (NATURAL range <>) of STD_LOGIC;
Thanks for any input
EDIT:
Or could I do something like the following?
type complex_primitives is (re, im);
type complex_vector is array (re to im) of signed(natural range <>);
The compiler complains though..