diff --git a/designs/LFR-em-WFP_MS-EQM2test/LFR-em.vhd b/designs/LFR-em-WFP_MS-EQM2test/LFR-em.vhd --- a/designs/LFR-em-WFP_MS-EQM2test/LFR-em.vhd +++ b/designs/LFR-em-WFP_MS-EQM2test/LFR-em.vhd @@ -425,7 +425,7 @@ BEGIN -- beh pirq_ms => 6, pirq_wfp => 14, hindex => 2, - top_lfr_version => X"010158", -- aa.bb.cc version + top_lfr_version => X"010159", -- aa.bb.cc version -- AA : BOARD NUMBER -- 0 => MINI_LFR -- 1 => EM diff --git a/lib/lpp/dsp/window_function/WF_processing.vhd b/lib/lpp/dsp/window_function/WF_processing.vhd --- a/lib/lpp/dsp/window_function/WF_processing.vhd +++ b/lib/lpp/dsp/window_function/WF_processing.vhd @@ -34,7 +34,7 @@ ENTITY WF_processing IS GENERIC ( SIZE_DATA : INTEGER := 16; SIZE_PARAM : INTEGER := 10; - NB_POINT_BY_WINDOW : INTEGER := 256 + NB_POINT_BY_WINDOW : INTEGER := 256 ); PORT ( @@ -51,7 +51,8 @@ ENTITY WF_processing IS --window parameter interface param_in : IN STD_LOGIC_VECTOR(SIZE_PARAM-1 DOWNTO 0); - param_index : OUT INTEGER RANGE 0 TO NB_POINT_BY_WINDOW-1 + param_index : OUT INTEGER RANGE 0 TO NB_POINT_BY_WINDOW-1; + PARAM_ALL_POSITIVE : IN STD_LOGIC ); END WF_processing; @@ -93,8 +94,10 @@ BEGIN OP2 => param_in, RES => data_x_param); - - data_out <= data_x_param(SIZE_DATA + SIZE_PARAM-1 DOWNTO SIZE_PARAM); + + data_out <= data_x_param(SIZE_DATA + SIZE_PARAM-2 DOWNTO SIZE_PARAM-1) WHEN PARAM_ALL_POSITIVE = '1' ELSE + data_x_param(SIZE_DATA + SIZE_PARAM-1 DOWNTO SIZE_PARAM); + WINDOWS_REG: SYNC_FF GENERIC MAP ( @@ -105,4 +108,4 @@ BEGIN A => data_in_valid, A_sync => data_out_valid); -END beh; +END beh; \ No newline at end of file diff --git a/lib/lpp/dsp/window_function/WF_rom.vhd b/lib/lpp/dsp/window_function/WF_rom.vhd --- a/lib/lpp/dsp/window_function/WF_rom.vhd +++ b/lib/lpp/dsp/window_function/WF_rom.vhd @@ -36,7 +36,8 @@ ENTITY WF_rom IS ); PORT ( data : OUT STD_LOGIC_VECTOR(SIZE_PARAM-1 DOWNTO 0); - index : IN INTEGER RANGE 0 TO NB_POINT_BY_WINDOW-1 + index : IN INTEGER RANGE 0 TO NB_POINT_BY_WINDOW-1 ; + PARAM_ALL_POSITIVE : OUT STD_LOGIC ); END WF_rom; @@ -82,6 +83,8 @@ ARCHITECTURE beh OF WF_rom IS SIGNAL data_selected : STD_LOGIC_VECTOR(SIZE_ARRAY_PARAM-1 DOWNTO 0); BEGIN + PARAM_ALL_POSITIVE <= '1'; + ALL_PARAM_DEFINE: IF NB_POINT_BY_WINDOW < SIZE_ARRAY + 1 GENERATE data_selected <= ROM_array(index); END GENERATE ALL_PARAM_DEFINE; @@ -93,4 +96,4 @@ BEGIN data <= data_selected(SIZE_ARRAY_PARAM-1 DOWNTO SIZE_ARRAY_PARAM-SIZE_PARAM); -END beh; +END beh; \ No newline at end of file diff --git a/lib/lpp/dsp/window_function/window_function.vhd b/lib/lpp/dsp/window_function/window_function.vhd --- a/lib/lpp/dsp/window_function/window_function.vhd +++ b/lib/lpp/dsp/window_function/window_function.vhd @@ -55,6 +55,8 @@ ARCHITECTURE beh OF window_function IS SIGNAL param_in : STD_LOGIC_VECTOR(SIZE_PARAM-1 DOWNTO 0); SIGNAL param_index : INTEGER RANGE 0 TO NB_POINT_BY_WINDOW-1; + SIGNAL PARAM_ALL_POSITIVE : STD_LOGIC; + BEGIN WF_rom_1: WF_rom @@ -62,8 +64,9 @@ BEGIN SIZE_PARAM => SIZE_PARAM, NB_POINT_BY_WINDOW => NB_POINT_BY_WINDOW) PORT MAP ( - data => param_in, - index => param_index); + data => param_in, + index => param_index, + PARAM_ALL_POSITIVE => PARAM_ALL_POSITIVE ); WF_processing_1: WF_processing GENERIC MAP ( @@ -79,6 +82,7 @@ BEGIN data_out => data_out, data_out_valid => data_out_valid, param_in => param_in, - param_index => param_index); + param_index => param_index, + PARAM_ALL_POSITIVE => PARAM_ALL_POSITIVE ); -END beh; +END beh; \ No newline at end of file diff --git a/lib/lpp/dsp/window_function/window_function_pkg.vhd b/lib/lpp/dsp/window_function/window_function_pkg.vhd --- a/lib/lpp/dsp/window_function/window_function_pkg.vhd +++ b/lib/lpp/dsp/window_function/window_function_pkg.vhd @@ -56,7 +56,8 @@ PACKAGE window_function_pkg IS data_out : OUT STD_LOGIC_VECTOR(SIZE_DATA-1 DOWNTO 0); data_out_valid : OUT STD_LOGIC; param_in : IN STD_LOGIC_VECTOR(SIZE_PARAM-1 DOWNTO 0); - param_index : OUT INTEGER RANGE 0 TO NB_POINT_BY_WINDOW-1 + param_index : OUT INTEGER RANGE 0 TO NB_POINT_BY_WINDOW-1; + PARAM_ALL_POSITIVE : IN STD_LOGIC ); END COMPONENT; @@ -66,7 +67,8 @@ PACKAGE window_function_pkg IS NB_POINT_BY_WINDOW : INTEGER); PORT ( data : OUT STD_LOGIC_VECTOR(SIZE_PARAM-1 DOWNTO 0); - index : IN INTEGER RANGE 0 TO NB_POINT_BY_WINDOW-1); + index : IN INTEGER RANGE 0 TO NB_POINT_BY_WINDOW-1; + PARAM_ALL_POSITIVE : OUT STD_LOGIC); END COMPONENT; END window_function_pkg;