diff --git a/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd b/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd index 0f8a3a8ef3292b6dc867f29ea8e3c4eb558b2bc3..f73c96a143b62cb07f0daf25237ddb59bc4eef9d 100644 --- a/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd +++ b/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd @@ -73,7 +73,7 @@ PACKAGE sdp_pkg is CONSTANT c_sdp_N_crosslets_max : NATURAL := 7; CONSTANT c_sdp_N_fft : NATURAL := 1024; CONSTANT c_sdp_N_pn_lb : NATURAL := 16; - CONSTANT c_sdp_N_pn_max : NATURAL := 16; + CONSTANT c_sdp_N_pn_max : NATURAL := 16; -- gn 0:31 --> pn 0:15, pn 0:15 per antenna band CONSTANT c_sdp_N_pol : NATURAL := 2; CONSTANT c_sdp_N_pol_bf : NATURAL := 2; CONSTANT c_sdp_N_ring_lanes_max : NATURAL := 8; @@ -540,12 +540,11 @@ PACKAGE BODY sdp_pkg IS -- MOD it is possible to do: -- -- pn_index = gn_index[3:0], because log2(16) = 4 - CONSTANT c_pn_w : NATURAL := ceil_log2(c_sdp_N_pn_max); -- = 4 - -- use sufficient bits to fit both PN index and GN index in v_index - CONSTANT c_w : NATURAL := ceil_log2(c_sdp_N_pn_max + gn_index); - CONSTANT c_index : STD_LOGIC_VECTOR(c_w-1 DOWNTO 0) := TO_UVEC(gn_index, c_w); + CONSTANT c_w : NATURAL := ceil_log2(c_sdp_N_pn_max); -- = 4 + + VARIABLE v_index : STD_LOGIC_VECTOR(c_word_w-1 DOWNTO 0) := TO_UVEC(gn_index, c_word_w); BEGIN - RETURN TO_UINT(c_index(c_pn_w-1 DOWNTO 0)); + RETURN TO_UINT(v_index(c_w-1 DOWNTO 0)); END func_sdp_gn_index_to_pn_index; FUNCTION func_sdp_modulo_N_sub(sub_index : NATURAL) RETURN NATURAL IS