- moved fixed_array_t to fixed_util_pkg

git-svn-id: http://moon:8086/svn/vhdl/trunk@186 cc03376c-175c-47c8-b038-4cd826a8556b
This commit is contained in:
2009-01-02 16:21:11 +00:00
parent a10614df0a
commit c574f7f0fd
-55
View File
@@ -16,68 +16,13 @@ use work.fir_stage_pkg.all;
-------------------------------------------------------------------------------
package fir_parallel_pkg is
type ufixed_array_t is array (natural range <>, integer range <>) of STD_LOGIC;
type sfixed_array_t is array (natural range <>, integer range <>) of STD_LOGIC;
type fir_parallel_mode_t is (transposed, transposed_sym, systolic, systolic_sym);
function to_sfixed_array(x : real_array_t; proto : sfixed) return sfixed_array_t;
function to_sfixed_array(x : real_array_t; nbits, nbits_int : integer) return sfixed_array_t;
-- Slicing functions for unconstrained array types
function to_ufixed(src : ufixed_array_t; index : integer) return ufixed;
function to_sfixed(src : sfixed_array_t; index : integer) return sfixed;
end; -- package fir_parallel_pkg;
-------------------------------------------------------------------------------
package body fir_parallel_pkg is
function to_sfixed_array(x : real_array_t; proto : sfixed) return sfixed_array_t is
variable res : sfixed_array_t(0 to x'length-1, proto'range);
variable tt : sfixed(proto'range);
begin
for i in x'range loop
tt := to_sfixed(x(i), proto);
for j in proto'range loop
res(i,j) := tt(j);
end loop;
end loop;
return res;
end to_sfixed_array;
---------------------------------------------------------------------------
function to_sfixed_array(x : real_array_t; nbits, nbits_int : integer) return sfixed_array_t is
variable p : sfixed(shi(nbits, nbits_int) downto slo(nbits, nbits_int));
begin
return to_sfixed_array(x, p);
end to_sfixed_array;
-------------------------------------------------------------------------------
-- ufixed <= ufixed_array(i)
function to_ufixed(src : ufixed_array_t; index : integer) return ufixed is
variable dst : ufixed(src'range(2));
begin
for j in src'range(2) loop
dst(j) := src(index, j);
end loop;
return dst;
end to_ufixed;
-------------------------------------------------------------------------------
-- sfixed <= sfixed_array(i)
function to_sfixed(src : sfixed_array_t; index : integer) return sfixed is
variable dst : sfixed(src'range(2));
begin
for j in src'range(2) loop
dst(j) := src(index, j);
end loop;
return dst;
end to_sfixed;
end; -- package fir_parallel_pkg;