@@ -0,0 +1,108 | |||
|
1 | ------------------------------------------------------------------------------ | |
|
2 | -- This file is a part of the LPP VHDL IP LIBRARY | |
|
3 | -- Copyright (C) 2009 - 2010, Laboratory of Plasmas Physic - CNRS | |
|
4 | -- | |
|
5 | -- This program is free software; you can redistribute it and/or modify | |
|
6 | -- it under the terms of the GNU General Public License as published by | |
|
7 | -- the Free Software Foundation; either version 3 of the License, or | |
|
8 | -- (at your option) any later version. | |
|
9 | -- | |
|
10 | -- This program is distributed in the hope that it will be useful, | |
|
11 | -- but WITHOUT ANY WARRANTY; without even the implied warranty of | |
|
12 | -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
|
13 | -- GNU General Public License for more details. | |
|
14 | -- | |
|
15 | -- You should have received a copy of the GNU General Public License | |
|
16 | -- along with this program; if not, write to the Free Software | |
|
17 | -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
|
18 | ------------------------------------------------------------------------------- | |
|
19 | -- Author : Jean-christophe Pellion | |
|
20 | -- Mail : jean-christophe.pellion@lpp.polytechnique.fr | |
|
21 | -- jean-christophe.pellion@easii-ic.com | |
|
22 | ---------------------------------------------------------------------------- | |
|
23 | ||
|
24 | LIBRARY ieee; | |
|
25 | USE ieee.std_logic_1164.ALL; | |
|
26 | use ieee.math_real.all; | |
|
27 | USE ieee.numeric_std.ALL; | |
|
28 | ||
|
29 | LIBRARY lpp; | |
|
30 | USE lpp.general_purpose.ALL; | |
|
31 | USE lpp.window_function_pkg.ALL; | |
|
32 | ||
|
33 | ENTITY WF_processing IS | |
|
34 | GENERIC ( | |
|
35 | SIZE_DATA : INTEGER := 16; | |
|
36 | SIZE_PARAM : INTEGER := 10; | |
|
37 | NB_POINT_BY_WINDOW : INTEGER := 256 | |
|
38 | ); | |
|
39 | ||
|
40 | PORT ( | |
|
41 | clk : IN STD_LOGIC; | |
|
42 | rstn : IN STD_LOGIC; | |
|
43 | --ctrl | |
|
44 | restart_window : IN STD_LOGIC; | |
|
45 | --data_in | |
|
46 | data_in : IN STD_LOGIC_VECTOR(SIZE_DATA-1 DOWNTO 0); | |
|
47 | data_in_valid : IN STD_LOGIC; | |
|
48 | --data_out | |
|
49 | data_out : OUT STD_LOGIC_VECTOR(SIZE_DATA-1 DOWNTO 0); | |
|
50 | data_out_valid : OUT STD_LOGIC; | |
|
51 | ||
|
52 | --window parameter interface | |
|
53 | param_in : IN STD_LOGIC_VECTOR(SIZE_PARAM-1 DOWNTO 0); | |
|
54 | param_index : OUT INTEGER RANGE 0 TO NB_POINT_BY_WINDOW-1 | |
|
55 | ); | |
|
56 | ||
|
57 | END WF_processing; | |
|
58 | ||
|
59 | ARCHITECTURE beh OF WF_processing IS | |
|
60 | CONSTANT NB_BITS_COUNTER : INTEGER := INTEGER(ceil(log2(REAL(NB_POINT_BY_WINDOW)))); | |
|
61 | ||
|
62 | SIGNAL data_x_param : STD_LOGIC_VECTOR(SIZE_DATA + SIZE_PARAM - 1 DOWNTO 0); | |
|
63 | SIGNAL windows_counter_s : STD_LOGIC_VECTOR(NB_BITS_COUNTER-1 DOWNTO 0); | |
|
64 | ||
|
65 | BEGIN | |
|
66 | ||
|
67 | WINDOWS_counter: general_counter | |
|
68 | GENERIC MAP ( | |
|
69 | CYCLIC => '1', | |
|
70 | NB_BITS_COUNTER => NB_BITS_COUNTER, | |
|
71 | RST_VALUE => 0) | |
|
72 | PORT MAP ( | |
|
73 | clk => clk, | |
|
74 | rstn => rstn, | |
|
75 | MAX_VALUE => STD_LOGIC_VECTOR(to_unsigned(NB_POINT_BY_WINDOW-1, NB_BITS_COUNTER)), | |
|
76 | set => restart_window, | |
|
77 | set_value => STD_LOGIC_VECTOR(to_unsigned(0, NB_BITS_COUNTER)), | |
|
78 | add1 => data_in_valid, | |
|
79 | counter => windows_counter_s); | |
|
80 | ||
|
81 | param_index <= to_integer(UNSIGNED(windows_counter_s)); | |
|
82 | ||
|
83 | WINDOWS_Multiplier : Multiplier | |
|
84 | GENERIC MAP ( | |
|
85 | Input_SZ_A => SIZE_DATA, | |
|
86 | Input_SZ_B => SIZE_PARAM) | |
|
87 | PORT MAP ( | |
|
88 | clk => clk, | |
|
89 | reset => rstn, | |
|
90 | ||
|
91 | mult => data_in_valid, | |
|
92 | OP1 => data_in, | |
|
93 | OP2 => param_in, | |
|
94 | ||
|
95 | RES => data_x_param); | |
|
96 | ||
|
97 | data_out <= data_x_param(SIZE_DATA + SIZE_PARAM-1 DOWNTO SIZE_PARAM); | |
|
98 | ||
|
99 | WINDOWS_REG: SYNC_FF | |
|
100 | GENERIC MAP ( | |
|
101 | NB_FF_OF_SYNC => 1) | |
|
102 | PORT MAP ( | |
|
103 | clk => clk, | |
|
104 | rstn => rstn, | |
|
105 | A => data_in_valid, | |
|
106 | A_sync => data_out_valid); | |
|
107 | ||
|
108 | END beh; |
@@ -0,0 +1,96 | |||
|
1 | ------------------------------------------------------------------------------ | |
|
2 | -- This file is a part of the LPP VHDL IP LIBRARY | |
|
3 | -- Copyright (C) 2009 - 2010, Laboratory of Plasmas Physic - CNRS | |
|
4 | -- | |
|
5 | -- This program is free software; you can redistribute it and/or modify | |
|
6 | -- it under the terms of the GNU General Public License as published by | |
|
7 | -- the Free Software Foundation; either version 3 of the License, or | |
|
8 | -- (at your option) any later version. | |
|
9 | -- | |
|
10 | -- This program is distributed in the hope that it will be useful, | |
|
11 | -- but WITHOUT ANY WARRANTY; without even the implied warranty of | |
|
12 | -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
|
13 | -- GNU General Public License for more details. | |
|
14 | -- | |
|
15 | -- You should have received a copy of the GNU General Public License | |
|
16 | -- along with this program; if not, write to the Free Software | |
|
17 | -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
|
18 | ------------------------------------------------------------------------------- | |
|
19 | -- Author : Jean-christophe Pellion | |
|
20 | -- Mail : jean-christophe.pellion@lpp.polytechnique.fr | |
|
21 | -- jean-christophe.pellion@easii-ic.com | |
|
22 | ---------------------------------------------------------------------------- | |
|
23 | ||
|
24 | LIBRARY ieee; | |
|
25 | USE ieee.std_logic_1164.ALL; | |
|
26 | USE ieee.numeric_std.ALL; | |
|
27 | ||
|
28 | LIBRARY lpp; | |
|
29 | USE lpp.general_purpose.ALL; | |
|
30 | USE lpp.window_function_pkg.ALL; | |
|
31 | ||
|
32 | ENTITY WF_rom IS | |
|
33 | GENERIC ( | |
|
34 | SIZE_PARAM : INTEGER := 10; | |
|
35 | NB_POINT_BY_WINDOW : INTEGER := 256 | |
|
36 | ); | |
|
37 | PORT ( | |
|
38 | data : OUT STD_LOGIC_VECTOR(SIZE_PARAM-1 DOWNTO 0); | |
|
39 | index : IN INTEGER RANGE 0 TO NB_POINT_BY_WINDOW-1 | |
|
40 | ); | |
|
41 | END WF_rom; | |
|
42 | ||
|
43 | ARCHITECTURE beh OF WF_rom IS | |
|
44 | ||
|
45 | CONSTANT SIZE_ARRAY : INTEGER := 256; -- | |
|
46 | CONSTANT SIZE_ARRAY_PARAM : INTEGER := 16; -- bits | |
|
47 | TYPE array_std_logic_vector IS ARRAY (SIZE_ARRAY-1 DOWNTO 0) OF STD_LOGIC_VECTOR(SIZE_ARRAY_PARAM-1 DOWNTO 0); | |
|
48 | CONSTANT ROM_array : array_std_logic_vector := ( | |
|
49 | X"0000",X"0004",X"0013",X"002C",X"004F",X"007C",X"00B2",X"00F3", | |
|
50 | X"013D",X"0191",X"01EE",X"0256",X"02C6",X"0341",X"03C5",X"0452", | |
|
51 | X"04E8",X"0588",X"0631",X"06E2",X"079D",X"0860",X"092C",X"0A01", | |
|
52 | X"0ADE",X"0BC3",X"0CB0",X"0DA5",X"0EA3",X"0FA7",X"10B4",X"11C7", | |
|
53 | X"12E2",X"1404",X"152C",X"165C",X"1792",X"18CE",X"1A10",X"1B58", | |
|
54 | X"1CA6",X"1DF9",X"1F51",X"20AF",X"2211",X"2379",X"24E4",X"2654", | |
|
55 | X"27C8",X"293F",X"2ABA",X"2C39",X"2DBA",X"2F3E",X"30C5",X"324E", | |
|
56 | X"33DA",X"3567",X"36F6",X"3886",X"3A18",X"3BAA",X"3D3D",X"3ED1", | |
|
57 | X"4064",X"41F8",X"438B",X"451E",X"46B0",X"4841",X"49D1",X"4B5F", | |
|
58 | X"4CEB",X"4E75",X"4FFE",X"5183",X"5306",X"5486",X"5603",X"577C", | |
|
59 | X"58F2",X"5A64",X"5BD1",X"5D3B",X"5E9F",X"5FFF",X"615B",X"62B1", | |
|
60 | X"6401",X"654C",X"6691",X"67D0",X"6909",X"6A3C",X"6B68",X"6C8D", | |
|
61 | X"6DAB",X"6EC3",X"6FD2",X"70DB",X"71DC",X"72D5",X"73C6",X"74B0", | |
|
62 | X"7591",X"7669",X"773A",X"7801",X"78C0",X"7977",X"7A24",X"7AC8", | |
|
63 | X"7B63",X"7BF5",X"7C7D",X"7CFD",X"7D72",X"7DDE",X"7E41",X"7E99", | |
|
64 | X"7EE9",X"7F2E",X"7F69",X"7F9B",X"7FC3",X"7FE0",X"7FF4",X"7FFE", | |
|
65 | X"7FFE",X"7FF4",X"7FE0",X"7FC3",X"7F9B",X"7F69",X"7F2E",X"7EE9", | |
|
66 | X"7E99",X"7E41",X"7DDE",X"7D72",X"7CFD",X"7C7D",X"7BF5",X"7B63", | |
|
67 | X"7AC8",X"7A24",X"7977",X"78C0",X"7801",X"773A",X"7669",X"7591", | |
|
68 | X"74B0",X"73C6",X"72D5",X"71DC",X"70DB",X"6FD2",X"6EC3",X"6DAB", | |
|
69 | X"6C8D",X"6B68",X"6A3C",X"6909",X"67D0",X"6691",X"654C",X"6401", | |
|
70 | X"62B1",X"615B",X"6000",X"5E9F",X"5D3B",X"5BD1",X"5A64",X"58F2", | |
|
71 | X"577C",X"5603",X"5486",X"5306",X"5183",X"4FFE",X"4E75",X"4CEB", | |
|
72 | X"4B5F",X"49D1",X"4841",X"46B0",X"451E",X"438B",X"41F8",X"4064", | |
|
73 | X"3ED1",X"3D3D",X"3BAA",X"3A18",X"3886",X"36F6",X"3567",X"33DA", | |
|
74 | X"324E",X"30C5",X"2F3E",X"2DBA",X"2C39",X"2ABA",X"293F",X"27C8", | |
|
75 | X"2654",X"24E4",X"2379",X"2211",X"20AF",X"1F51",X"1DF9",X"1CA6", | |
|
76 | X"1B58",X"1A10",X"18CE",X"1792",X"165C",X"152C",X"1404",X"12E2", | |
|
77 | X"11C7",X"10B4",X"0FA7",X"0EA3",X"0DA5",X"0CB0",X"0BC3",X"0ADE", | |
|
78 | X"0A01",X"092C",X"0860",X"079D",X"06E2",X"0631",X"0588",X"04E8", | |
|
79 | X"0452",X"03C5",X"0341",X"02C6",X"0256",X"01EE",X"0191",X"013D", | |
|
80 | X"00F3",X"00B2",X"007C",X"004F",X"002C",X"0013",X"0004",X"0000"); | |
|
81 | ||
|
82 | SIGNAL data_selected : STD_LOGIC_VECTOR(SIZE_ARRAY_PARAM-1 DOWNTO 0); | |
|
83 | BEGIN | |
|
84 | ||
|
85 | ALL_PARAM_DEFINE: IF NB_POINT_BY_WINDOW < SIZE_ARRAY + 1 GENERATE | |
|
86 | data_selected <= ROM_array(index); | |
|
87 | END GENERATE ALL_PARAM_DEFINE; | |
|
88 | ||
|
89 | HALF_PARAM_DEFINE: IF NB_POINT_BY_WINDOW > SIZE_ARRAY AND NB_POINT_BY_WINDOW < 2 * SIZE_ARRAY + 1 GENERATE | |
|
90 | data_selected <= ROM_array(index) WHEN index < SIZE_ARRAY ELSE | |
|
91 | ROM_array(2*SIZE_ARRAY-1-index); | |
|
92 | END GENERATE HALF_PARAM_DEFINE; | |
|
93 | ||
|
94 | data <= data_selected(SIZE_ARRAY_PARAM-1 DOWNTO SIZE_ARRAY_PARAM-SIZE_PARAM); | |
|
95 | ||
|
96 | END beh; |
@@ -1,118 +1,84 | |||
|
1 | 1 | ------------------------------------------------------------------------------ |
|
2 | 2 | -- This file is a part of the LPP VHDL IP LIBRARY |
|
3 | 3 | -- Copyright (C) 2009 - 2010, Laboratory of Plasmas Physic - CNRS |
|
4 | 4 | -- |
|
5 | 5 | -- This program is free software; you can redistribute it and/or modify |
|
6 | 6 | -- it under the terms of the GNU General Public License as published by |
|
7 | 7 | -- the Free Software Foundation; either version 3 of the License, or |
|
8 | 8 | -- (at your option) any later version. |
|
9 | 9 | -- |
|
10 | 10 | -- This program is distributed in the hope that it will be useful, |
|
11 | 11 | -- but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
12 | 12 | -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
13 | 13 | -- GNU General Public License for more details. |
|
14 | 14 | -- |
|
15 | 15 | -- You should have received a copy of the GNU General Public License |
|
16 | 16 | -- along with this program; if not, write to the Free Software |
|
17 | 17 | -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
|
18 | 18 | ------------------------------------------------------------------------------- |
|
19 | 19 | -- Author : Jean-christophe Pellion |
|
20 | 20 | -- Mail : jean-christophe.pellion@lpp.polytechnique.fr |
|
21 | 21 | -- jean-christophe.pellion@easii-ic.com |
|
22 | 22 | ---------------------------------------------------------------------------- |
|
23 | 23 | |
|
24 | 24 | LIBRARY ieee; |
|
25 | 25 | USE ieee.std_logic_1164.ALL; |
|
26 | 26 | USE ieee.numeric_std.ALL; |
|
27 | 27 | |
|
28 | 28 | LIBRARY lpp; |
|
29 | USE lpp.general_purpose.ALL; | |
|
30 | 29 | USE lpp.window_function_pkg.ALL; |
|
31 | USE lpp.data_type_pkg.ALL; | |
|
32 | 30 | |
|
33 | 31 | ENTITY window_function IS |
|
34 | 32 | GENERIC ( |
|
35 |
|
|
|
36 |
PARAM |
|
|
37 | WINDOWS_PARAM : array_std_logic_vector_16b(0 TO 255) | |
|
33 | SIZE_DATA : INTEGER := 16; | |
|
34 | SIZE_PARAM : INTEGER := 10; | |
|
35 | NB_POINT_BY_WINDOW : INTEGER := 256 | |
|
38 | 36 | ); |
|
39 | 37 | |
|
40 | 38 | PORT ( |
|
41 | 39 | clk : IN STD_LOGIC; |
|
42 | 40 | rstn : IN STD_LOGIC; |
|
43 | ||
|
41 | --ctrl | |
|
44 | 42 | restart_window : IN STD_LOGIC; |
|
45 | ||
|
46 |
data_in : IN STD_LOGIC_VECTOR( |
|
|
43 | --data_in | |
|
44 | data_in : IN STD_LOGIC_VECTOR(SIZE_DATA-1 DOWNTO 0); | |
|
47 | 45 | data_in_valid : IN STD_LOGIC; |
|
48 | ||
|
49 |
data_out : OUT STD_LOGIC_VECTOR( |
|
|
46 | --data_out | |
|
47 | data_out : OUT STD_LOGIC_VECTOR(SIZE_DATA-1 DOWNTO 0); | |
|
50 | 48 | data_out_valid : OUT STD_LOGIC |
|
51 | 49 | ); |
|
52 | 50 | |
|
53 | 51 | END window_function; |
|
54 | 52 | |
|
55 | 53 | ARCHITECTURE beh OF window_function IS |
|
56 | CONSTANT NB_POINT_BY_WINDOW : INTEGER := 256; | |
|
57 | ||
|
58 | SIGNAL param_counter : INTEGER RANGE 0 TO NB_POINT_BY_WINDOW-1; | |
|
59 | ||
|
60 | SIGNAL data_x_param : STD_LOGIC_VECTOR(DATA_SIZE + PARAM_SIZE - 1 DOWNTO 0); | |
|
61 | 54 | |
|
62 |
SIGNAL |
|
|
63 | SIGNAL windows_param_selected : STD_LOGIC_VECTOR(PARAM_SIZE-1 DOWNTO 0); | |
|
64 | SIGNAL data_in_valid_s : STD_LOGIC; | |
|
65 | SIGNAL data_in_s : STD_LOGIC_VECTOR(DATA_SIZE-1 DOWNTO 0); | |
|
66 | ||
|
55 | SIGNAL param_in : STD_LOGIC_VECTOR(SIZE_PARAM-1 DOWNTO 0); | |
|
56 | SIGNAL param_index : INTEGER RANGE 0 TO NB_POINT_BY_WINDOW-1; | |
|
57 | ||
|
67 | 58 | BEGIN |
|
68 | 59 | |
|
69 | PROCESS (clk, rstn) | |
|
70 | BEGIN -- PROCESS | |
|
71 | IF rstn = '0' THEN -- asynchronous reset (active low) | |
|
72 | param_counter <= 0; | |
|
73 | ELSIF clk'EVENT AND clk = '1' THEN -- rising clock edge | |
|
74 | IF restart_window = '1' THEN | |
|
75 |
|
|
|
76 | ELSE | |
|
77 | IF data_in_valid = '1' THEN | |
|
78 | IF param_counter < 255 THEN | |
|
79 | param_counter <= param_counter + 1; | |
|
80 | ELSE | |
|
81 | param_counter <= 0; | |
|
82 | END IF; | |
|
83 | END IF; | |
|
84 | END IF; | |
|
85 | END IF; | |
|
86 | END PROCESS; | |
|
87 | ||
|
88 | data_in_valid_s <= data_in_valid; | |
|
89 | data_in_s <= data_in; | |
|
90 | windows_param_selected_s <= WINDOWS_PARAM(param_counter); | |
|
91 | windows_param_selected <= windows_param_selected_s(15 DOWNTO 16 - PARAM_SIZE); | |
|
92 | ||
|
93 | WINDOWS_Multiplier : Multiplier | |
|
60 | WF_rom_1: WF_rom | |
|
61 | GENERIC MAP ( | |
|
62 | SIZE_PARAM => SIZE_PARAM, | |
|
63 | NB_POINT_BY_WINDOW => NB_POINT_BY_WINDOW) | |
|
64 | PORT MAP ( | |
|
65 | data => param_in, | |
|
66 | index => param_index); | |
|
67 | ||
|
68 | WF_processing_1: WF_processing | |
|
94 | 69 | GENERIC MAP ( |
|
95 | Input_SZ_A => DATA_SIZE, | |
|
96 | Input_SZ_B => PARAM_SIZE) | |
|
70 | SIZE_DATA => SIZE_DATA, | |
|
71 | SIZE_PARAM => SIZE_PARAM, | |
|
72 | NB_POINT_BY_WINDOW => NB_POINT_BY_WINDOW) | |
|
97 | 73 | PORT MAP ( |
|
98 | clk => clk, | |
|
99 |
r |
|
|
100 | ||
|
101 |
|
|
|
102 |
|
|
|
103 | OP2 => windows_param_selected, | |
|
104 | ||
|
105 | RES => data_x_param); | |
|
106 | ||
|
107 | data_out <= data_x_param(DATA_SIZE + PARAM_SIZE-1 DOWNTO PARAM_SIZE); | |
|
108 | ||
|
109 | PROCESS (clk, rstn) | |
|
110 | BEGIN -- PROCESS | |
|
111 | IF rstn = '0' THEN -- asynchronous reset (active low) | |
|
112 | data_out_valid <= '0'; | |
|
113 | ELSIF clk'EVENT AND clk = '1' THEN -- rising clock edge | |
|
114 | data_out_valid <= data_in_valid_s; | |
|
115 | END IF; | |
|
116 | END PROCESS; | |
|
74 | clk => clk, | |
|
75 | rstn => rstn, | |
|
76 | restart_window => restart_window, | |
|
77 | data_in => data_in, | |
|
78 | data_in_valid => data_in_valid, | |
|
79 | data_out => data_out, | |
|
80 | data_out_valid => data_out_valid, | |
|
81 | param_in => param_in, | |
|
82 | param_index => param_index); | |
|
117 | 83 | |
|
118 | 84 | END beh; |
@@ -1,49 +1,72 | |||
|
1 | 1 | ------------------------------------------------------------------------------ |
|
2 | 2 | -- This file is a part of the LPP VHDL IP LIBRARY |
|
3 | 3 | -- Copyright (C) 2009 - 2010, Laboratory of Plasmas Physic - CNRS |
|
4 | 4 | -- |
|
5 | 5 | -- This program is free software; you can redistribute it and/or modify |
|
6 | 6 | -- it under the terms of the GNU General Public License as published by |
|
7 | 7 | -- the Free Software Foundation; either version 3 of the License, or |
|
8 | 8 | -- (at your option) any later version. |
|
9 | 9 | -- |
|
10 | 10 | -- This program is distributed in the hope that it will be useful, |
|
11 | 11 | -- but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
12 | 12 | -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
13 | 13 | -- GNU General Public License for more details. |
|
14 | 14 | -- |
|
15 | 15 | -- You should have received a copy of the GNU General Public License |
|
16 | 16 | -- along with this program; if not, write to the Free Software |
|
17 | 17 | -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
|
18 | 18 | ------------------------------------------------------------------------------- |
|
19 | 19 | -- Author : Jean-christophe Pellion |
|
20 | 20 | -- Mail : jean-christophe.pellion@lpp.polytechnique.fr |
|
21 | 21 | -- jean-christophe.pellion@easii-ic.com |
|
22 | 22 | ---------------------------------------------------------------------------- |
|
23 | 23 | LIBRARY ieee; |
|
24 | 24 | USE ieee.std_logic_1164.ALL; |
|
25 | 25 | USE IEEE.NUMERIC_STD.ALL; |
|
26 | 26 | |
|
27 | LIBRARY lpp; | |
|
28 | USE lpp.data_type_pkg.ALL; | |
|
27 | PACKAGE window_function_pkg IS | |
|
29 | 28 | |
|
30 | PACKAGE window_function_pkg IS | |
|
31 | ||
|
32 | 29 | COMPONENT window_function |
|
33 | 30 | GENERIC ( |
|
34 |
|
|
|
35 |
|
|
|
36 | WINDOWS_PARAM : array_std_logic_vector_16b(0 TO 255) | |
|
37 | ); | |
|
31 | SIZE_DATA : INTEGER; | |
|
32 | SIZE_PARAM : INTEGER; | |
|
33 | NB_POINT_BY_WINDOW : INTEGER); | |
|
38 | 34 | PORT ( |
|
39 | 35 | clk : IN STD_LOGIC; |
|
40 | 36 | rstn : IN STD_LOGIC; |
|
41 | 37 | restart_window : IN STD_LOGIC; |
|
42 |
data_in : IN STD_LOGIC_VECTOR( |
|
|
38 | data_in : IN STD_LOGIC_VECTOR(SIZE_DATA-1 DOWNTO 0); | |
|
43 | 39 | data_in_valid : IN STD_LOGIC; |
|
44 |
data_out : OUT STD_LOGIC_VECTOR( |
|
|
45 |
data_out_valid : OUT STD_LOGIC |
|
|
40 | data_out : OUT STD_LOGIC_VECTOR(SIZE_DATA-1 DOWNTO 0); | |
|
41 | data_out_valid : OUT STD_LOGIC | |
|
42 | ); | |
|
46 | 43 | END COMPONENT; |
|
47 | ||
|
44 | ||
|
45 | COMPONENT WF_processing | |
|
46 | GENERIC ( | |
|
47 | SIZE_DATA : INTEGER; | |
|
48 | SIZE_PARAM : INTEGER; | |
|
49 | NB_POINT_BY_WINDOW : INTEGER); | |
|
50 | PORT ( | |
|
51 | clk : IN STD_LOGIC; | |
|
52 | rstn : IN STD_LOGIC; | |
|
53 | restart_window : IN STD_LOGIC; | |
|
54 | data_in : IN STD_LOGIC_VECTOR(SIZE_DATA-1 DOWNTO 0); | |
|
55 | data_in_valid : IN STD_LOGIC; | |
|
56 | data_out : OUT STD_LOGIC_VECTOR(SIZE_DATA-1 DOWNTO 0); | |
|
57 | data_out_valid : OUT STD_LOGIC; | |
|
58 | param_in : IN STD_LOGIC_VECTOR(SIZE_PARAM-1 DOWNTO 0); | |
|
59 | param_index : OUT INTEGER RANGE 0 TO NB_POINT_BY_WINDOW-1 | |
|
60 | ); | |
|
61 | END COMPONENT; | |
|
62 | ||
|
63 | COMPONENT WF_rom | |
|
64 | GENERIC ( | |
|
65 | SIZE_PARAM : INTEGER; | |
|
66 | NB_POINT_BY_WINDOW : INTEGER); | |
|
67 | PORT ( | |
|
68 | data : OUT STD_LOGIC_VECTOR(SIZE_PARAM-1 DOWNTO 0); | |
|
69 | index : IN INTEGER RANGE 0 TO NB_POINT_BY_WINDOW-1); | |
|
70 | END COMPONENT; | |
|
48 | 71 | |
|
49 | 72 | END window_function_pkg; |
General Comments 0
You need to be logged in to leave comments.
Login now