Line 351... |
Line 351... |
-- Functions to set the DATA, RE and IM field in a stream.
|
-- Functions to set the DATA, RE and IM field in a stream.
|
FUNCTION func_dp_stream_set_data(dp : t_dp_sosi; slv : STD_LOGIC_VECTOR; str : STRING ) RETURN t_dp_sosi;
|
FUNCTION func_dp_stream_set_data(dp : t_dp_sosi; slv : STD_LOGIC_VECTOR; str : STRING ) RETURN t_dp_sosi;
|
FUNCTION func_dp_stream_set_data(dp : t_dp_sosi_arr; slv : STD_LOGIC_VECTOR; str : STRING ) RETURN t_dp_sosi_arr;
|
FUNCTION func_dp_stream_set_data(dp : t_dp_sosi_arr; slv : STD_LOGIC_VECTOR; str : STRING ) RETURN t_dp_sosi_arr;
|
FUNCTION func_dp_stream_set_data(dp : t_dp_sosi_arr; slv : STD_LOGIC_VECTOR; str : STRING; mask : STD_LOGIC_VECTOR) RETURN t_dp_sosi_arr;
|
FUNCTION func_dp_stream_set_data(dp : t_dp_sosi_arr; slv : STD_LOGIC_VECTOR; str : STRING; mask : STD_LOGIC_VECTOR) RETURN t_dp_sosi_arr;
|
|
|
-- Concatenate the data from a SOSI array into a single SOSI stream (assumes streams are in sync)
|
-- Functions to rewire between concatenated sosi.data and concatenated sosi.re,im
|
|
-- . data_order_im_re defines the concatenation order data = im&re or re&im
|
|
-- . nof_data defines the number of concatenated streams that are concatenated in the sosi.data or sosi.re,im
|
|
-- . rewire nof_data streams from data to re,im and force data = X to show that sosi data is used
|
|
-- . rewire nof_data streams from re,im to data and force re,im = X to show that sosi complex is used
|
|
FUNCTION func_dp_stream_complex_to_data(dp : t_dp_sosi; data_w : NATURAL; nof_data : NATURAL; data_order_im_re : BOOLEAN) RETURN t_dp_sosi;
|
|
FUNCTION func_dp_stream_complex_to_data(dp : t_dp_sosi; data_w : NATURAL; nof_data : NATURAL ) RETURN t_dp_sosi; -- data_order_im_re = TRUE
|
|
FUNCTION func_dp_stream_complex_to_data(dp : t_dp_sosi; data_w : NATURAL ) RETURN t_dp_sosi; -- data_order_im_re = TRUE, nof_data = 1
|
|
FUNCTION func_dp_stream_data_to_complex(dp : t_dp_sosi; data_w : NATURAL; nof_data : NATURAL; data_order_im_re : BOOLEAN) RETURN t_dp_sosi;
|
|
FUNCTION func_dp_stream_data_to_complex(dp : t_dp_sosi; data_w : NATURAL; nof_data : NATURAL ) RETURN t_dp_sosi; -- data_order_im_re = TRUE
|
|
FUNCTION func_dp_stream_data_to_complex(dp : t_dp_sosi; data_w : NATURAL ) RETURN t_dp_sosi; -- data_order_im_re = TRUE, nof_data = 1
|
|
|
|
FUNCTION func_dp_stream_complex_to_data(dp_arr : t_dp_sosi_arr; data_w : NATURAL; nof_data : NATURAL; data_order_im_re : BOOLEAN) RETURN t_dp_sosi_arr;
|
|
FUNCTION func_dp_stream_complex_to_data(dp_arr : t_dp_sosi_arr; data_w : NATURAL; nof_data : NATURAL ) RETURN t_dp_sosi_arr;
|
|
FUNCTION func_dp_stream_complex_to_data(dp_arr : t_dp_sosi_arr; data_w : NATURAL ) RETURN t_dp_sosi_arr;
|
|
FUNCTION func_dp_stream_data_to_complex(dp_arr : t_dp_sosi_arr; data_w : NATURAL; nof_data : NATURAL; data_order_im_re : BOOLEAN) RETURN t_dp_sosi_arr;
|
|
FUNCTION func_dp_stream_data_to_complex(dp_arr : t_dp_sosi_arr; data_w : NATURAL; nof_data : NATURAL ) RETURN t_dp_sosi_arr;
|
|
FUNCTION func_dp_stream_data_to_complex(dp_arr : t_dp_sosi_arr; data_w : NATURAL ) RETURN t_dp_sosi_arr;
|
|
|
|
-- Concatenate the data and complex re,im fields from a SOSI array into a single SOSI stream (assumes streams are in sync)
|
FUNCTION func_dp_stream_concat(snk_in_arr : t_dp_sosi_arr; data_w : NATURAL) RETURN t_dp_sosi; -- Concat SOSI_ARR data into single SOSI
|
FUNCTION func_dp_stream_concat(snk_in_arr : t_dp_sosi_arr; data_w : NATURAL) RETURN t_dp_sosi; -- Concat SOSI_ARR data into single SOSI
|
FUNCTION func_dp_stream_concat(src_in : t_dp_siso; nof_streams : NATURAL) RETURN t_dp_siso_arr; -- Wire single SISO to SISO_ARR
|
FUNCTION func_dp_stream_concat(src_in : t_dp_siso; nof_streams : NATURAL) RETURN t_dp_siso_arr; -- Wire single SISO to SISO_ARR
|
-- Deconcatenate data from SOSI into SOSI array
|
|
|
-- Reconcatenate the data and complex re,im fields from a SOSI array from nof_data*in_w to nof_data*out_w
|
|
-- . data_representation = "SIGNED" treat sosi.data field as signed
|
|
-- "UNSIGNED" treat sosi.data field as unsigned
|
|
-- "COMPLEX" treat sosi.data field as complex concatenated
|
|
-- . data_order_im_re = TRUE then "COMPLEX" data = im&re
|
|
-- FALSE then "COMPLEX" data = re&im
|
|
-- ignore when data_representation /= "COMPLEX"
|
|
FUNCTION func_dp_stream_reconcat(snk_in : t_dp_sosi; in_w, out_w, nof_data : NATURAL; data_representation : STRING; data_order_im_re : BOOLEAN) RETURN t_dp_sosi;
|
|
FUNCTION func_dp_stream_reconcat(snk_in : t_dp_sosi; in_w, out_w, nof_data : NATURAL; data_representation : STRING ) RETURN t_dp_sosi;
|
|
FUNCTION func_dp_stream_reconcat(snk_in_arr : t_dp_sosi_arr; in_w, out_w, nof_data : NATURAL; data_representation : STRING; data_order_im_re : BOOLEAN) RETURN t_dp_sosi_arr;
|
|
FUNCTION func_dp_stream_reconcat(snk_in_arr : t_dp_sosi_arr; in_w, out_w, nof_data : NATURAL; data_representation : STRING ) RETURN t_dp_sosi_arr;
|
|
|
|
-- Deconcatenate data and complex re,im fields from SOSI into SOSI array
|
FUNCTION func_dp_stream_deconcat(snk_in : t_dp_sosi; nof_streams, data_w : NATURAL) RETURN t_dp_sosi_arr; -- Deconcat SOSI data
|
FUNCTION func_dp_stream_deconcat(snk_in : t_dp_sosi; nof_streams, data_w : NATURAL) RETURN t_dp_sosi_arr; -- Deconcat SOSI data
|
FUNCTION func_dp_stream_deconcat(src_out_arr : t_dp_siso_arr) RETURN t_dp_siso; -- Wire SISO_ARR(0) to single SISO
|
FUNCTION func_dp_stream_deconcat(src_out_arr : t_dp_siso_arr) RETURN t_dp_siso; -- Wire SISO_ARR(0) to single SISO
|
|
|
END dp_stream_pkg;
|
END dp_stream_pkg;
|
|
|
Line 1243... |
Line 1275... |
END IF;
|
END IF;
|
END LOOP;
|
END LOOP;
|
RETURN v_dp;
|
RETURN v_dp;
|
END;
|
END;
|
|
|
|
-- Functions to rewire between concatenated sosi.data and concatenated sosi.re,im
|
|
FUNCTION func_dp_stream_complex_to_data(dp : t_dp_sosi; data_w : NATURAL; nof_data : NATURAL; data_order_im_re : BOOLEAN) RETURN t_dp_sosi IS
|
|
CONSTANT c_compl_data_w : NATURAL := data_w/2;
|
|
VARIABLE v_dp : t_dp_sosi := dp;
|
|
VARIABLE v_re : STD_LOGIC_VECTOR(c_compl_data_w-1 DOWNTO 0);
|
|
VARIABLE v_im : STD_LOGIC_VECTOR(c_compl_data_w-1 DOWNTO 0);
|
|
BEGIN
|
|
v_dp.data := (OTHERS=>'0');
|
|
v_dp.re := (OTHERS=>'X');
|
|
v_dp.im := (OTHERS=>'X');
|
|
FOR I IN 0 TO nof_data-1 LOOP
|
|
v_re := dp.re(c_compl_data_w-1 + I*c_compl_data_w DOWNTO I*c_compl_data_w);
|
|
v_im := dp.im(c_compl_data_w-1 + I*c_compl_data_w DOWNTO I*c_compl_data_w);
|
|
IF data_order_im_re=TRUE THEN
|
|
v_dp.data((I+1)*data_w-1 DOWNTO I*data_w) := v_im & v_re;
|
|
ELSE
|
|
v_dp.data((I+1)*data_w-1 DOWNTO I*data_w) := v_re & v_im;
|
|
END IF;
|
|
END LOOP;
|
|
RETURN v_dp;
|
|
END;
|
|
|
|
FUNCTION func_dp_stream_complex_to_data(dp : t_dp_sosi; data_w : NATURAL; nof_data : NATURAL) RETURN t_dp_sosi IS
|
|
BEGIN
|
|
RETURN func_dp_stream_complex_to_data(dp, data_w, nof_data, TRUE);
|
|
END;
|
|
|
|
FUNCTION func_dp_stream_complex_to_data(dp : t_dp_sosi; data_w : NATURAL) RETURN t_dp_sosi IS
|
|
BEGIN
|
|
RETURN func_dp_stream_complex_to_data(dp, data_w, 1, TRUE);
|
|
END;
|
|
|
|
FUNCTION func_dp_stream_data_to_complex(dp : t_dp_sosi; data_w : NATURAL; nof_data : NATURAL; data_order_im_re : BOOLEAN) RETURN t_dp_sosi IS
|
|
CONSTANT c_compl_data_w : NATURAL := data_w/2;
|
|
VARIABLE v_dp : t_dp_sosi := dp;
|
|
VARIABLE v_hi : STD_LOGIC_VECTOR(c_compl_data_w-1 DOWNTO 0);
|
|
VARIABLE v_lo : STD_LOGIC_VECTOR(c_compl_data_w-1 DOWNTO 0);
|
|
BEGIN
|
|
v_dp.data := (OTHERS=>'X');
|
|
v_dp.re := (OTHERS=>'0');
|
|
v_dp.im := (OTHERS=>'0');
|
|
FOR I IN 0 TO nof_data-1 LOOP
|
|
v_hi := dp.data( data_w-1 + I*data_w DOWNTO c_compl_data_w + I*data_w);
|
|
v_lo := dp.data(c_compl_data_w-1 + I*data_w DOWNTO 0 + I*data_w);
|
|
IF data_order_im_re=TRUE THEN
|
|
v_dp.im((I+1)*c_compl_data_w-1 DOWNTO I*c_compl_data_w) := v_hi;
|
|
v_dp.re((I+1)*c_compl_data_w-1 DOWNTO I*c_compl_data_w) := v_lo;
|
|
ELSE
|
|
v_dp.re((I+1)*c_compl_data_w-1 DOWNTO I*c_compl_data_w) := v_hi;
|
|
v_dp.im((I+1)*c_compl_data_w-1 DOWNTO I*c_compl_data_w) := v_lo;
|
|
END IF;
|
|
END LOOP;
|
|
RETURN v_dp;
|
|
END;
|
|
|
|
FUNCTION func_dp_stream_data_to_complex(dp : t_dp_sosi; data_w : NATURAL; nof_data : NATURAL) RETURN t_dp_sosi IS
|
|
BEGIN
|
|
RETURN func_dp_stream_data_to_complex(dp, data_w, nof_data, TRUE);
|
|
END;
|
|
|
|
FUNCTION func_dp_stream_data_to_complex(dp : t_dp_sosi; data_w : NATURAL) RETURN t_dp_sosi IS
|
|
BEGIN
|
|
RETURN func_dp_stream_data_to_complex(dp, data_w, 1, TRUE);
|
|
END;
|
|
|
|
FUNCTION func_dp_stream_complex_to_data(dp_arr : t_dp_sosi_arr; data_w : NATURAL; nof_data : NATURAL; data_order_im_re : BOOLEAN) RETURN t_dp_sosi_arr IS
|
|
VARIABLE v_dp_arr : t_dp_sosi_arr(dp_arr'RANGE);
|
|
BEGIN
|
|
FOR i IN dp_arr'RANGE LOOP
|
|
v_dp_arr(i) := func_dp_stream_complex_to_data(dp_arr(i), data_w, nof_data, data_order_im_re); -- nof_data per stream is 1
|
|
END LOOP;
|
|
RETURN v_dp_arr;
|
|
END;
|
|
|
|
FUNCTION func_dp_stream_complex_to_data(dp_arr : t_dp_sosi_arr; data_w : NATURAL; nof_data : NATURAL) RETURN t_dp_sosi_arr IS
|
|
BEGIN
|
|
RETURN func_dp_stream_complex_to_data(dp_arr, data_w, nof_data, TRUE);
|
|
END;
|
|
|
|
FUNCTION func_dp_stream_complex_to_data(dp_arr : t_dp_sosi_arr; data_w : NATURAL) RETURN t_dp_sosi_arr IS
|
|
BEGIN
|
|
RETURN func_dp_stream_complex_to_data(dp_arr, data_w, 1, TRUE);
|
|
END;
|
|
|
|
FUNCTION func_dp_stream_data_to_complex(dp_arr : t_dp_sosi_arr; data_w : NATURAL; nof_data : NATURAL; data_order_im_re : BOOLEAN) RETURN t_dp_sosi_arr IS
|
|
VARIABLE v_dp_arr : t_dp_sosi_arr(dp_arr'RANGE);
|
|
BEGIN
|
|
FOR i IN dp_arr'RANGE LOOP
|
|
v_dp_arr(i) := func_dp_stream_data_to_complex(dp_arr(i), data_w, nof_data, data_order_im_re); -- nof_data per stream is 1
|
|
END LOOP;
|
|
RETURN v_dp_arr;
|
|
END;
|
|
|
|
FUNCTION func_dp_stream_data_to_complex(dp_arr : t_dp_sosi_arr; data_w : NATURAL; nof_data : NATURAL) RETURN t_dp_sosi_arr IS
|
|
BEGIN
|
|
RETURN func_dp_stream_data_to_complex(dp_arr, data_w, nof_data, TRUE);
|
|
END;
|
|
|
|
FUNCTION func_dp_stream_data_to_complex(dp_arr : t_dp_sosi_arr; data_w : NATURAL) RETURN t_dp_sosi_arr IS
|
|
BEGIN
|
|
RETURN func_dp_stream_data_to_complex(dp_arr, data_w, 1, TRUE);
|
|
END;
|
|
|
-- Concatenate the data (and complex fields) from a SOSI array into a single SOSI stream (assumes streams are in sync)
|
-- Concatenate the data (and complex fields) from a SOSI array into a single SOSI stream (assumes streams are in sync)
|
FUNCTION func_dp_stream_concat(snk_in_arr : t_dp_sosi_arr; data_w : NATURAL) RETURN t_dp_sosi IS
|
FUNCTION func_dp_stream_concat(snk_in_arr : t_dp_sosi_arr; data_w : NATURAL) RETURN t_dp_sosi IS
|
|
CONSTANT c_compl_data_w : NATURAL := data_w/2;
|
VARIABLE v_src_out : t_dp_sosi := snk_in_arr(0);
|
VARIABLE v_src_out : t_dp_sosi := snk_in_arr(0);
|
VARIABLE v_compl_data_w : NATURAL := data_w/2;
|
|
BEGIN
|
BEGIN
|
|
v_src_out.data := (OTHERS=>'0');
|
|
v_src_out.re := (OTHERS=>'0');
|
|
v_src_out.im := (OTHERS=>'0');
|
FOR i IN snk_in_arr'RANGE LOOP
|
FOR i IN snk_in_arr'RANGE LOOP
|
v_src_out.data((i+1)* data_w-1 DOWNTO i* data_w) := snk_in_arr(i).data( data_w-1 DOWNTO 0);
|
v_src_out.data((i+1)* data_w-1 DOWNTO i* data_w) := snk_in_arr(i).data( data_w-1 DOWNTO 0);
|
v_src_out.re( (i+1)*v_compl_data_w-1 DOWNTO i*v_compl_data_w) := snk_in_arr(i).re(v_compl_data_w-1 DOWNTO 0);
|
v_src_out.re( (i+1)*c_compl_data_w-1 DOWNTO i*c_compl_data_w) := snk_in_arr(i).re(c_compl_data_w-1 DOWNTO 0);
|
v_src_out.im( (i+1)*v_compl_data_w-1 DOWNTO i*v_compl_data_w) := snk_in_arr(i).im(v_compl_data_w-1 DOWNTO 0);
|
v_src_out.im( (i+1)*c_compl_data_w-1 DOWNTO i*c_compl_data_w) := snk_in_arr(i).im(c_compl_data_w-1 DOWNTO 0);
|
END LOOP;
|
END LOOP;
|
RETURN v_src_out;
|
RETURN v_src_out;
|
END;
|
END;
|
|
|
FUNCTION func_dp_stream_concat(src_in : t_dp_siso; nof_streams : NATURAL) RETURN t_dp_siso_arr IS -- Wire single SISO to SISO_ARR
|
FUNCTION func_dp_stream_concat(src_in : t_dp_siso; nof_streams : NATURAL) RETURN t_dp_siso_arr IS -- Wire single SISO to SISO_ARR
|
Line 1265... |
Line 1403... |
v_snk_out_arr(i) := src_in;
|
v_snk_out_arr(i) := src_in;
|
END LOOP;
|
END LOOP;
|
RETURN v_snk_out_arr;
|
RETURN v_snk_out_arr;
|
END;
|
END;
|
|
|
|
-- Reconcatenate the data and complex re,im fields from a SOSI array from nof_data*in_w to nof_data*out_w
|
|
FUNCTION func_dp_stream_reconcat(snk_in : t_dp_sosi; in_w, out_w, nof_data : NATURAL; data_representation : STRING; data_order_im_re : BOOLEAN) RETURN t_dp_sosi IS
|
|
CONSTANT c_compl_in_w : NATURAL := in_w/2;
|
|
CONSTANT c_compl_out_w : NATURAL := out_w/2;
|
|
VARIABLE v_src_out : t_dp_sosi := snk_in;
|
|
VARIABLE v_in_data : STD_LOGIC_VECTOR(in_w-1 DOWNTO 0);
|
|
VARIABLE v_out_data : STD_LOGIC_VECTOR(out_w-1 DOWNTO 0) := (OTHERS=>'0'); -- default set sosi.data to 0
|
|
BEGIN
|
|
v_src_out := snk_in;
|
|
v_src_out.data := (OTHERS=>'0');
|
|
v_src_out.re := (OTHERS=>'0');
|
|
v_src_out.im := (OTHERS=>'0');
|
|
FOR i IN 0 TO nof_data-1 LOOP
|
|
v_in_data := snk_in.data((i+1)*in_w-1 DOWNTO i*in_w);
|
|
IF data_representation="UNSIGNED" THEN -- treat data as unsigned
|
|
v_out_data := RESIZE_UVEC(v_in_data, out_w);
|
|
ELSE
|
|
IF data_representation="SIGNED" THEN -- treat data as signed
|
|
v_out_data := RESIZE_SVEC(v_in_data, out_w);
|
|
ELSE
|
|
-- treat data as complex
|
|
IF data_order_im_re=TRUE THEN
|
|
-- data = im&re
|
|
v_out_data := RESIZE_SVEC(v_in_data(2*c_compl_in_w-1 DOWNTO c_compl_in_w), c_compl_out_w) &
|
|
RESIZE_SVEC(v_in_data( c_compl_in_w-1 DOWNTO 0), c_compl_out_w);
|
|
ELSE
|
|
-- data = re&im
|
|
v_out_data := RESIZE_SVEC(v_in_data( c_compl_in_w-1 DOWNTO 0), c_compl_out_w) &
|
|
RESIZE_SVEC(v_in_data(2*c_compl_in_w-1 DOWNTO c_compl_in_w), c_compl_out_w);
|
|
END IF;
|
|
END IF;
|
|
END IF;
|
|
v_src_out.data((i+1)* out_w-1 DOWNTO i* out_w) := v_out_data;
|
|
v_src_out.re( (i+1)*c_compl_out_w-1 DOWNTO i*c_compl_out_w) := RESIZE_SVEC(snk_in.re((i+1)*c_compl_in_w-1 DOWNTO i*c_compl_in_w), c_compl_out_w);
|
|
v_src_out.im( (i+1)*c_compl_out_w-1 DOWNTO i*c_compl_out_w) := RESIZE_SVEC(snk_in.im((i+1)*c_compl_in_w-1 DOWNTO i*c_compl_in_w), c_compl_out_w);
|
|
END LOOP;
|
|
RETURN v_src_out;
|
|
END;
|
|
|
|
FUNCTION func_dp_stream_reconcat(snk_in : t_dp_sosi; in_w, out_w, nof_data : NATURAL; data_representation : STRING) RETURN t_dp_sosi IS
|
|
BEGIN
|
|
RETURN func_dp_stream_reconcat(snk_in, in_w, out_w, nof_data, data_representation, TRUE);
|
|
END;
|
|
|
|
FUNCTION func_dp_stream_reconcat(snk_in_arr : t_dp_sosi_arr; in_w, out_w, nof_data : NATURAL; data_representation : STRING; data_order_im_re : BOOLEAN) RETURN t_dp_sosi_arr IS
|
|
VARIABLE v_src_out_arr : t_dp_sosi_arr(snk_in_arr'RANGE) := snk_in_arr;
|
|
BEGIN
|
|
FOR i IN v_src_out_arr'RANGE LOOP
|
|
v_src_out_arr(i) := func_dp_stream_reconcat(snk_in_arr(i), in_w, out_w, nof_data, data_representation, data_order_im_re);
|
|
END LOOP;
|
|
RETURN v_src_out_arr;
|
|
END;
|
|
|
|
FUNCTION func_dp_stream_reconcat(snk_in_arr : t_dp_sosi_arr; in_w, out_w, nof_data : NATURAL; data_representation : STRING) RETURN t_dp_sosi_arr IS
|
|
BEGIN
|
|
RETURN func_dp_stream_reconcat(snk_in_arr, in_w, out_w, nof_data, data_representation, TRUE);
|
|
END;
|
|
|
-- Deconcatenate data from SOSI into SOSI array
|
-- Deconcatenate data from SOSI into SOSI array
|
FUNCTION func_dp_stream_deconcat(snk_in : t_dp_sosi; nof_streams, data_w : NATURAL) RETURN t_dp_sosi_arr IS
|
FUNCTION func_dp_stream_deconcat(snk_in : t_dp_sosi; nof_streams, data_w : NATURAL) RETURN t_dp_sosi_arr IS
|
|
CONSTANT c_compl_data_w : NATURAL := data_w/2;
|
VARIABLE v_src_out_arr : t_dp_sosi_arr(nof_streams-1 DOWNTO 0);
|
VARIABLE v_src_out_arr : t_dp_sosi_arr(nof_streams-1 DOWNTO 0);
|
VARIABLE v_compl_data_w : NATURAL := data_w/2;
|
|
BEGIN
|
BEGIN
|
FOR i IN v_src_out_arr'RANGE LOOP
|
FOR i IN v_src_out_arr'RANGE LOOP
|
v_src_out_arr(i) := snk_in;
|
v_src_out_arr(i) := snk_in;
|
v_src_out_arr(i).data := (OTHERS=>'0');
|
v_src_out_arr(i).data := (OTHERS=>'0');
|
v_src_out_arr(i).re := (OTHERS=>'0');
|
v_src_out_arr(i).re := (OTHERS=>'0');
|
v_src_out_arr(i).im := (OTHERS=>'0');
|
v_src_out_arr(i).im := (OTHERS=>'0');
|
v_src_out_arr(i).data( data_w-1 DOWNTO 0) := snk_in.data((i+1)* data_w-1 DOWNTO i* data_w);
|
v_src_out_arr(i).data := RESIZE_DP_DATA( snk_in.data((i+1)* data_w-1 DOWNTO i* data_w));
|
v_src_out_arr(i).re( v_compl_data_w-1 DOWNTO 0) := snk_in.re ((i+1)*v_compl_data_w-1 DOWNTO i*v_compl_data_w);
|
v_src_out_arr(i).re := RESIZE_DP_DSP_DATA(snk_in.re ((i+1)*c_compl_data_w-1 DOWNTO i*c_compl_data_w));
|
v_src_out_arr(i).im( v_compl_data_w-1 DOWNTO 0) := snk_in.im ((i+1)*v_compl_data_w-1 DOWNTO i*v_compl_data_w);
|
v_src_out_arr(i).im := RESIZE_DP_DSP_DATA(snk_in.im ((i+1)*c_compl_data_w-1 DOWNTO i*c_compl_data_w));
|
END LOOP;
|
END LOOP;
|
RETURN v_src_out_arr;
|
RETURN v_src_out_arr;
|
END;
|
END;
|
|
|
FUNCTION func_dp_stream_deconcat(src_out_arr : t_dp_siso_arr) RETURN t_dp_siso IS -- Wire SISO_ARR(0) to single SISO
|
FUNCTION func_dp_stream_deconcat(src_out_arr : t_dp_siso_arr) RETURN t_dp_siso IS -- Wire SISO_ARR(0) to single SISO
|