##// END OF EJS Templates
temp
pellion -
r354:668500b2114b next
parent child
Show More
@@ -0,0 +1,3
1 AMBA_Peripherals.vhd
2 apb_devices_list.vhd
3
@@ -0,0 +1,1
1 filters.vhd
@@ -0,0 +1,1
1 SOC.vhd
@@ -0,0 +1,1
1 boards.vhd
@@ -0,0 +1,1
1 communication.vhd
@@ -0,0 +1,1
1 data_converters.vhd
@@ -0,0 +1,7
1 AMBA_Peripherals
2 sample_type
3 general_purpose
4 data_converters
5 SOC
6 DSP/filters
7 memory
@@ -0,0 +1,1
1 general_purpose.vhd
@@ -0,0 +1,1
1 memory.vhd
@@ -1,38 +1,36
1 # use glob syntax.
1 # use glob syntax.
2 syntax: glob
2 syntax: glob
3
3
4 *.tex
4 *.tex
5 *.html
5 *.html
6 *log*
6 *log*
7 *.png
7 *.png
8 *.dot
8 *.dot
9 *.css
9 *.css
10 *.md5
10 *.md5
11 *.eps
11 *.eps
12 *.pdf
12 *.pdf
13 *.toc
13 *.toc
14 *.map
14 *.map
15 *.sty
15 *.sty
16 *.3
16 *.3
17 *.js
17 *.js
18 *.aux
18 *.aux
19 *.idx
19 *.idx
20 *doc*
20 *doc*
21 *Doc*
21 *Doc*
22 *vhdlsyn.txt
23 *dirs.txt
24 *.orig
22 *.orig
25 *.o
23 *.o
26 *.a
24 *.a
27 *.bin
25 *.bin
28 *~
26 *~
29 apb_devices_list.h
27 apb_devices_list.h
30 apb_devices_list.vhd
28 apb_devices_list.vhd
31 twiddle.vhd
29 twiddle.vhd
32 primitives.vhd
30 primitives.vhd
33 fftSm.vhd
31 fftSm.vhd
34 fftDp.vhd
32 fftDp.vhd
35 fft_components.vhd
33 fft_components.vhd
36 CoreFFT.vhd
34 CoreFFT.vhd
37 actram.vhd
35 actram.vhd
38 actar.vhd No newline at end of file
36 actar.vhd
@@ -1,18 +1,25
1 vendor VENDOR_LPP 19
1 vendor VENDOR_LPP 19
2
2
3 device ROCKET_TM 1
3 device ROCKET_TM 1
4 device otherCore 2
4 device otherCore 2
5 device LPP_SIMPLE_DIODE 3
5 device LPP_SIMPLE_DIODE 3
6 device LPP_MULTI_DIODE 4
6 device LPP_MULTI_DIODE 4
7 device LPP_LCD_CTRLR 5
7 device LPP_LCD_CTRLR 5
8 device LPP_UART 6
8 device LPP_UART 6
9 device LPP_CNA 7
9 device LPP_CNA 7
10 device LPP_APB_ADC 8
10 device LPP_APB_ADC 8
11 device LPP_CHENILLARD 9
11 device LPP_CHENILLARD 9
12 device LPP_IIR_CEL_FILTER 10
12 device LPP_IIR_CEL_FILTER 10
13 device LPP_FIFO_PID 11
13 device LPP_FIFO_PID 11
14 device LPP_FFT 12
14 device LPP_FFT 12
15 device LPP_MATRIX 13
15 device LPP_MATRIX 13
16 device LPP_DELAY 14
16 device LPP_DELAY 14
17 device LPP_USB 15
17 device LPP_USB 15
18 device LPP_BALISE 16
18 device LPP_BALISE 16
19 device LPP_DMA_TYPE 17
20 device LPP_BOOTLOADER_TYPE 18
21 device LPP_LFR 19
22 device LPP_CLKSETTING 20
23 device LPP_DEBUG_DMA A0
24 device LPP_DEBUG_LFR A1
25 device LPP_DEBUG_LFR_ID A2
@@ -1,187 +1,190
1
1
2 ------------------------------------------------------------------------------
2 ------------------------------------------------------------------------------
3 -- This file is a part of the LPP VHDL IP LIBRARY
3 -- This file is a part of the LPP VHDL IP LIBRARY
4 -- Copyright (C) 2009 - 2010, Laboratory of Plasmas Physic - CNRS
4 -- Copyright (C) 2009 - 2010, Laboratory of Plasmas Physic - CNRS
5 --
5 --
6 -- This program is free software; you can redistribute it and/or modify
6 -- This program is free software; you can redistribute it and/or modify
7 -- it under the terms of the GNU General Public License as published by
7 -- it under the terms of the GNU General Public License as published by
8 -- the Free Software Foundation; either version 3 of the License, or
8 -- the Free Software Foundation; either version 3 of the License, or
9 -- (at your option) any later version.
9 -- (at your option) any later version.
10 --
10 --
11 -- This program is distributed in the hope that it will be useful,
11 -- This program is distributed in the hope that it will be useful,
12 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
13 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 -- GNU General Public License for more details.
14 -- GNU General Public License for more details.
15 --
15 --
16 -- You should have received a copy of the GNU General Public License
16 -- You should have received a copy of the GNU General Public License
17 -- along with this program; if not, write to the Free Software
17 -- along with this program; if not, write to the Free Software
18 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 -------------------------------------------------------------------------------
19 -------------------------------------------------------------------------------
20 -- Author : Jean-christophe Pellion
20 -- Author : Jean-christophe Pellion
21 -- Mail : jean-christophe.pellion@lpp.polytechnique.fr
21 -- Mail : jean-christophe.pellion@lpp.polytechnique.fr
22 -- jean-christophe.pellion@easii-ic.com
22 -- jean-christophe.pellion@easii-ic.com
23 -------------------------------------------------------------------------------
23 -------------------------------------------------------------------------------
24 -- 1.0 - initial version
24 -- 1.0 - initial version
25 -- 1.1 - (01/11/2013) FIX boundary error (1kB address should not be crossed by BURSTS)
25 -- 1.1 - (01/11/2013) FIX boundary error (1kB address should not be crossed by BURSTS)
26 -------------------------------------------------------------------------------
26 -------------------------------------------------------------------------------
27 LIBRARY ieee;
27 LIBRARY ieee;
28 USE ieee.std_logic_1164.ALL;
28 USE ieee.std_logic_1164.ALL;
29 USE ieee.numeric_std.ALL;
29 USE ieee.numeric_std.ALL;
30 LIBRARY grlib;
30 LIBRARY grlib;
31 USE grlib.amba.ALL;
31 USE grlib.amba.ALL;
32 USE grlib.stdlib.ALL;
32 USE grlib.stdlib.ALL;
33 USE grlib.devices.ALL;
33 USE grlib.devices.ALL;
34 USE GRLIB.DMA2AHB_Package.ALL;
34 USE GRLIB.DMA2AHB_Package.ALL;
35
35
36 LIBRARY techmap;
36 LIBRARY techmap;
37 USE techmap.gencomp.ALL;
37 USE techmap.gencomp.ALL;
38
38
39 LIBRARY VHDLIB;
40 USE VHDLIB.apb_devices_list.ALL;
41
39 LIBRARY staging;
42 LIBRARY staging;
40 USE staging.lpp_dma_pkg_LPP_JCP.ALL;
43 USE staging.lpp_dma_pkg_LPP_JCP.ALL;
41
44
42
45
43 ENTITY lpp_dma_singleOrBurst_LPP_JCP IS
46 ENTITY lpp_dma_singleOrBurst_LPP_JCP IS
44 GENERIC (
47 GENERIC (
45 tech : INTEGER := inferred;
48 tech : INTEGER := inferred;
46 hindex : INTEGER := 2
49 hindex : INTEGER := 2
47 );
50 );
48 PORT (
51 PORT (
49 -- AMBA AHB system signals
52 -- AMBA AHB system signals
50 HCLK : IN STD_ULOGIC;
53 HCLK : IN STD_ULOGIC;
51 HRESETn : IN STD_ULOGIC;
54 HRESETn : IN STD_ULOGIC;
52 --
55 --
53 run : IN STD_LOGIC;
56 run : IN STD_LOGIC;
54 -- AMBA AHB Master Interface
57 -- AMBA AHB Master Interface
55 AHB_Master_In : IN AHB_Mst_In_Type;
58 AHB_Master_In : IN AHB_Mst_In_Type;
56 AHB_Master_Out : OUT AHB_Mst_Out_Type;
59 AHB_Master_Out : OUT AHB_Mst_Out_Type;
57 --
60 --
58 send : IN STD_LOGIC;
61 send : IN STD_LOGIC;
59 valid_burst : IN STD_LOGIC; -- (1 => BURST , 0 => SINGLE)
62 valid_burst : IN STD_LOGIC; -- (1 => BURST , 0 => SINGLE)
60 done : OUT STD_LOGIC;
63 done : OUT STD_LOGIC;
61 ren : OUT STD_LOGIC;
64 ren : OUT STD_LOGIC;
62 address : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
65 address : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
63 data : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
66 data : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
64 --
67 --
65 debug_dmaout_okay : OUT STD_LOGIC
68 debug_dmaout_okay : OUT STD_LOGIC
66
69
67 );
70 );
68 END;
71 END;
69
72
70 ARCHITECTURE Behavioral OF lpp_dma_singleOrBurst_LPP_JCP IS
73 ARCHITECTURE Behavioral OF lpp_dma_singleOrBurst_LPP_JCP IS
71 -----------------------------------------------------------------------------
74 -----------------------------------------------------------------------------
72 SIGNAL DMAIn : DMA_In_Type;
75 SIGNAL DMAIn : DMA_In_Type;
73 SIGNAL DMAOut : DMA_OUt_Type;
76 SIGNAL DMAOut : DMA_OUt_Type;
74 -----------------------------------------------------------------------------
77 -----------------------------------------------------------------------------
75 -----------------------------------------------------------------------------
78 -----------------------------------------------------------------------------
76 -- CONTROL
79 -- CONTROL
77 SIGNAL single_send : STD_LOGIC;
80 SIGNAL single_send : STD_LOGIC;
78 SIGNAL burst_send : STD_LOGIC;
81 SIGNAL burst_send : STD_LOGIC;
79
82
80 -----------------------------------------------------------------------------
83 -----------------------------------------------------------------------------
81 -- SEND SINGLE MODULE
84 -- SEND SINGLE MODULE
82 SIGNAL single_dmai : DMA_In_Type;
85 SIGNAL single_dmai : DMA_In_Type;
83
86
84 SIGNAL single_send_ok : STD_LOGIC;
87 SIGNAL single_send_ok : STD_LOGIC;
85 SIGNAL single_send_ko : STD_LOGIC;
88 SIGNAL single_send_ko : STD_LOGIC;
86 SIGNAL single_ren : STD_LOGIC;
89 SIGNAL single_ren : STD_LOGIC;
87 -----------------------------------------------------------------------------
90 -----------------------------------------------------------------------------
88 -- SEND SINGLE MODULE
91 -- SEND SINGLE MODULE
89 SIGNAL burst_dmai : DMA_In_Type;
92 SIGNAL burst_dmai : DMA_In_Type;
90
93
91 SIGNAL burst_send_ok : STD_LOGIC;
94 SIGNAL burst_send_ok : STD_LOGIC;
92 SIGNAL burst_send_ko : STD_LOGIC;
95 SIGNAL burst_send_ko : STD_LOGIC;
93 SIGNAL burst_ren : STD_LOGIC;
96 SIGNAL burst_ren : STD_LOGIC;
94 -----------------------------------------------------------------------------
97 -----------------------------------------------------------------------------
95 SIGNAL data_2_halfword : STD_LOGIC_VECTOR(31 DOWNTO 0);
98 SIGNAL data_2_halfword : STD_LOGIC_VECTOR(31 DOWNTO 0);
96 -----------------------------------------------------------------------------
99 -----------------------------------------------------------------------------
97 SIGNAL send_reg : STD_LOGIC;
100 SIGNAL send_reg : STD_LOGIC;
98 SIGNAL send_s : STD_LOGIC;
101 SIGNAL send_s : STD_LOGIC;
99
102
100
103
101 BEGIN
104 BEGIN
102
105
103 debug_dmaout_okay <= DMAOut.OKAY;
106 debug_dmaout_okay <= DMAOut.OKAY;
104
107
105
108
106 -----------------------------------------------------------------------------
109 -----------------------------------------------------------------------------
107 -- DMA to AHB interface
110 -- DMA to AHB interface
108 DMA2AHB_1 : DMA2AHB
111 DMA2AHB_1 : DMA2AHB
109 GENERIC MAP (
112 GENERIC MAP (
110 hindex => hindex,
113 hindex => hindex,
111 vendorid => VENDOR_LPP,
114 vendorid => VENDOR_LPP,
112 deviceid => 10,
115 deviceid => 10,
113 version => 0,
116 version => 0,
114 syncrst => 1,
117 syncrst => 1,
115 boundary => 1)
118 boundary => 1)
116 PORT MAP (
119 PORT MAP (
117 HCLK => HCLK,
120 HCLK => HCLK,
118 HRESETn => HRESETn,
121 HRESETn => HRESETn,
119 DMAIn => DMAIn,
122 DMAIn => DMAIn,
120 DMAOut => DMAOut,
123 DMAOut => DMAOut,
121
124
122 AHBIn => AHB_Master_In,
125 AHBIn => AHB_Master_In,
123 AHBOut => AHB_Master_Out);
126 AHBOut => AHB_Master_Out);
124 -----------------------------------------------------------------------------
127 -----------------------------------------------------------------------------
125
128
126 -----------------------------------------------------------------------------
129 -----------------------------------------------------------------------------
127 PROCESS (HCLK, HRESETn)
130 PROCESS (HCLK, HRESETn)
128 BEGIN
131 BEGIN
129 IF HRESETn = '0' THEN
132 IF HRESETn = '0' THEN
130 send_reg <= '0';
133 send_reg <= '0';
131 ELSIF HCLK'event AND HCLK = '1' THEN
134 ELSIF HCLK'event AND HCLK = '1' THEN
132 send_reg <= send;
135 send_reg <= send;
133 END IF;
136 END IF;
134 END PROCESS;
137 END PROCESS;
135 send_s <= send_reg;
138 send_s <= send_reg;
136
139
137 single_send <= send_s WHEN valid_burst = '0' ELSE '0';
140 single_send <= send_s WHEN valid_burst = '0' ELSE '0';
138 burst_send <= send_s WHEN valid_burst = '1' ELSE '0';
141 burst_send <= send_s WHEN valid_burst = '1' ELSE '0';
139
142
140 DMAIn <= single_dmai WHEN valid_burst = '0' ELSE burst_dmai;
143 DMAIn <= single_dmai WHEN valid_burst = '0' ELSE burst_dmai;
141
144
142 done <= single_send_ok OR single_send_ko OR burst_send_ok OR burst_send_ko;
145 done <= single_send_ok OR single_send_ko OR burst_send_ok OR burst_send_ko;
143
146
144 ren <= burst_ren WHEN valid_burst = '1' ELSE
147 ren <= burst_ren WHEN valid_burst = '1' ELSE
145 single_ren;
148 single_ren;
146
149
147
150
148 -----------------------------------------------------------------------------
151 -----------------------------------------------------------------------------
149 -- SEND 1 word by DMA
152 -- SEND 1 word by DMA
150 -----------------------------------------------------------------------------
153 -----------------------------------------------------------------------------
151 lpp_dma_send_1word_1 : lpp_dma_send_1word_LPP_JCP
154 lpp_dma_send_1word_1 : lpp_dma_send_1word_LPP_JCP
152 PORT MAP (
155 PORT MAP (
153 HCLK => HCLK,
156 HCLK => HCLK,
154 HRESETn => HRESETn,
157 HRESETn => HRESETn,
155 DMAIn => single_dmai,
158 DMAIn => single_dmai,
156 DMAOut => DMAOut,
159 DMAOut => DMAOut,
157
160
158 send => single_send,
161 send => single_send,
159 address => address,
162 address => address,
160 data => data_2_halfword,
163 data => data_2_halfword,
161 ren => single_ren,
164 ren => single_ren,
162
165
163 send_ok => single_send_ok,
166 send_ok => single_send_ok,
164 send_ko => single_send_ko
167 send_ko => single_send_ko
165 );
168 );
166
169
167 -----------------------------------------------------------------------------
170 -----------------------------------------------------------------------------
168 -- SEND 16 word by DMA (in burst mode)
171 -- SEND 16 word by DMA (in burst mode)
169 -----------------------------------------------------------------------------
172 -----------------------------------------------------------------------------
170 data_2_halfword(31 DOWNTO 0) <= data(15 DOWNTO 0) & data (31 DOWNTO 16);
173 data_2_halfword(31 DOWNTO 0) <= data(15 DOWNTO 0) & data (31 DOWNTO 16);
171
174
172 lpp_dma_send_16word_1 : lpp_dma_send_16word_LPP_JCP
175 lpp_dma_send_16word_1 : lpp_dma_send_16word_LPP_JCP
173 PORT MAP (
176 PORT MAP (
174 HCLK => HCLK,
177 HCLK => HCLK,
175 HRESETn => HRESETn,
178 HRESETn => HRESETn,
176 DMAIn => burst_dmai,
179 DMAIn => burst_dmai,
177 DMAOut => DMAOut,
180 DMAOut => DMAOut,
178
181
179 send => burst_send,
182 send => burst_send,
180 address => address,
183 address => address,
181 data => data_2_halfword,
184 data => data_2_halfword,
182 ren => burst_ren,
185 ren => burst_ren,
183
186
184 send_ok => burst_send_ok,
187 send_ok => burst_send_ok,
185 send_ko => burst_send_ko);
188 send_ko => burst_send_ko);
186
189
187 END Behavioral;
190 END Behavioral;
@@ -1,490 +1,493
1 ------------------------------------------------------------------------------
1 ------------------------------------------------------------------------------
2 -- This file is a part of the LPP VHDL IP LIBRARY
2 -- This file is a part of the LPP VHDL IP LIBRARY
3 -- Copyright (C) 2009 - 2010, Laboratory of Plasmas Physic - CNRS
3 -- Copyright (C) 2009 - 2010, Laboratory of Plasmas Physic - CNRS
4 --
4 --
5 -- This program is free software; you can redistribute it and/or modify
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
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
7 -- the Free Software Foundation; either version 3 of the License, or
8 -- (at your option) any later version.
8 -- (at your option) any later version.
9 --
9 --
10 -- This program is distributed in the hope that it will be useful,
10 -- This program is distributed in the hope that it will be useful,
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 -- GNU General Public License for more details.
13 -- GNU General Public License for more details.
14 --
14 --
15 -- You should have received a copy of the GNU General Public License
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
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
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 -------------------------------------------------------------------------------
18 -------------------------------------------------------------------------------
19 -- Author : Jean-christophe Pellion
19 -- Author : Jean-christophe Pellion
20 -- Mail : jean-christophe.pellion@lpp.polytechnique.fr
20 -- Mail : jean-christophe.pellion@lpp.polytechnique.fr
21 -- jean-christophe.pellion@easii-ic.com
21 -- jean-christophe.pellion@easii-ic.com
22 ----------------------------------------------------------------------------
22 ----------------------------------------------------------------------------
23 LIBRARY ieee;
23 LIBRARY ieee;
24 USE ieee.std_logic_1164.ALL;
24 USE ieee.std_logic_1164.ALL;
25 USE ieee.numeric_std.ALL;
25 USE ieee.numeric_std.ALL;
26 LIBRARY grlib;
26 LIBRARY grlib;
27 USE grlib.amba.ALL;
27 USE grlib.amba.ALL;
28 USE grlib.stdlib.ALL;
28 USE grlib.stdlib.ALL;
29 USE grlib.devices.ALL;
29 USE grlib.devices.ALL;
30
30
31 LIBRARY techmap;
31 LIBRARY techmap;
32 USE techmap.gencomp.ALL;
32 USE techmap.gencomp.ALL;
33
33
34 LIBRARY VHDLIB;
35 USE VHDLIB.apb_devices_list.ALL;
36
34 ENTITY lpp_lfr_apbreg_LPP_JCP IS
37 ENTITY lpp_lfr_apbreg_LPP_JCP IS
35 GENERIC (
38 GENERIC (
36 nb_data_by_buffer_size : INTEGER := 11;
39 nb_data_by_buffer_size : INTEGER := 11;
37 nb_word_by_buffer_size : INTEGER := 11;
40 nb_word_by_buffer_size : INTEGER := 11;
38 nb_snapshot_param_size : INTEGER := 11;
41 nb_snapshot_param_size : INTEGER := 11;
39 delta_vector_size : INTEGER := 20;
42 delta_vector_size : INTEGER := 20;
40 delta_vector_size_f0_2 : INTEGER := 3;
43 delta_vector_size_f0_2 : INTEGER := 3;
41
44
42 pindex : INTEGER := 4;
45 pindex : INTEGER := 4;
43 paddr : INTEGER := 4;
46 paddr : INTEGER := 4;
44 pmask : INTEGER := 16#fff#;
47 pmask : INTEGER := 16#fff#;
45 pirq_ms : INTEGER := 0;
48 pirq_ms : INTEGER := 0;
46 pirq_wfp : INTEGER := 1;
49 pirq_wfp : INTEGER := 1;
47 top_lfr_version : STD_LOGIC_VECTOR(23 DOWNTO 0));
50 top_lfr_version : STD_LOGIC_VECTOR(23 DOWNTO 0));
48 PORT (
51 PORT (
49 -- AMBA AHB system signals
52 -- AMBA AHB system signals
50 HCLK : IN STD_ULOGIC;
53 HCLK : IN STD_ULOGIC;
51 HRESETn : IN STD_ULOGIC;
54 HRESETn : IN STD_ULOGIC;
52
55
53 -- AMBA APB Slave Interface
56 -- AMBA APB Slave Interface
54 apbi : IN apb_slv_in_type;
57 apbi : IN apb_slv_in_type;
55 apbo : OUT apb_slv_out_type;
58 apbo : OUT apb_slv_out_type;
56
59
57 ---------------------------------------------------------------------------
60 ---------------------------------------------------------------------------
58 -- Spectral Matrix Reg
61 -- Spectral Matrix Reg
59 -- IN
62 -- IN
60 ready_matrix_f0_0 : IN STD_LOGIC;
63 ready_matrix_f0_0 : IN STD_LOGIC;
61 ready_matrix_f0_1 : IN STD_LOGIC;
64 ready_matrix_f0_1 : IN STD_LOGIC;
62 ready_matrix_f1 : IN STD_LOGIC;
65 ready_matrix_f1 : IN STD_LOGIC;
63 ready_matrix_f2 : IN STD_LOGIC;
66 ready_matrix_f2 : IN STD_LOGIC;
64 error_anticipating_empty_fifo : IN STD_LOGIC;
67 error_anticipating_empty_fifo : IN STD_LOGIC;
65 error_bad_component_error : IN STD_LOGIC;
68 error_bad_component_error : IN STD_LOGIC;
66 debug_reg : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
69 debug_reg : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
67
70
68 -- OUT
71 -- OUT
69 status_ready_matrix_f0_0 : OUT STD_LOGIC;
72 status_ready_matrix_f0_0 : OUT STD_LOGIC;
70 status_ready_matrix_f0_1 : OUT STD_LOGIC;
73 status_ready_matrix_f0_1 : OUT STD_LOGIC;
71 status_ready_matrix_f1 : OUT STD_LOGIC;
74 status_ready_matrix_f1 : OUT STD_LOGIC;
72 status_ready_matrix_f2 : OUT STD_LOGIC;
75 status_ready_matrix_f2 : OUT STD_LOGIC;
73 status_error_anticipating_empty_fifo : OUT STD_LOGIC;
76 status_error_anticipating_empty_fifo : OUT STD_LOGIC;
74 status_error_bad_component_error : OUT STD_LOGIC;
77 status_error_bad_component_error : OUT STD_LOGIC;
75
78
76 config_active_interruption_onNewMatrix : OUT STD_LOGIC;
79 config_active_interruption_onNewMatrix : OUT STD_LOGIC;
77 config_active_interruption_onError : OUT STD_LOGIC;
80 config_active_interruption_onError : OUT STD_LOGIC;
78 addr_matrix_f0_0 : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
81 addr_matrix_f0_0 : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
79 addr_matrix_f0_1 : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
82 addr_matrix_f0_1 : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
80 addr_matrix_f1 : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
83 addr_matrix_f1 : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
81 addr_matrix_f2 : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
84 addr_matrix_f2 : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
82 ---------------------------------------------------------------------------
85 ---------------------------------------------------------------------------
83 ---------------------------------------------------------------------------
86 ---------------------------------------------------------------------------
84 -- WaveForm picker Reg
87 -- WaveForm picker Reg
85 status_full : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
88 status_full : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
86 status_full_ack : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
89 status_full_ack : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
87 status_full_err : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
90 status_full_err : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
88 status_new_err : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
91 status_new_err : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
89
92
90 -- OUT
93 -- OUT
91 data_shaping_BW : OUT STD_LOGIC;
94 data_shaping_BW : OUT STD_LOGIC;
92 data_shaping_SP0 : OUT STD_LOGIC;
95 data_shaping_SP0 : OUT STD_LOGIC;
93 data_shaping_SP1 : OUT STD_LOGIC;
96 data_shaping_SP1 : OUT STD_LOGIC;
94 data_shaping_R0 : OUT STD_LOGIC;
97 data_shaping_R0 : OUT STD_LOGIC;
95 data_shaping_R1 : OUT STD_LOGIC;
98 data_shaping_R1 : OUT STD_LOGIC;
96
99
97 delta_snapshot : OUT STD_LOGIC_VECTOR(delta_vector_size-1 DOWNTO 0);
100 delta_snapshot : OUT STD_LOGIC_VECTOR(delta_vector_size-1 DOWNTO 0);
98 delta_f0 : OUT STD_LOGIC_VECTOR(delta_vector_size-1 DOWNTO 0);
101 delta_f0 : OUT STD_LOGIC_VECTOR(delta_vector_size-1 DOWNTO 0);
99 delta_f0_2 : OUT STD_LOGIC_VECTOR(delta_vector_size_f0_2-1 DOWNTO 0);
102 delta_f0_2 : OUT STD_LOGIC_VECTOR(delta_vector_size_f0_2-1 DOWNTO 0);
100 delta_f1 : OUT STD_LOGIC_VECTOR(delta_vector_size-1 DOWNTO 0);
103 delta_f1 : OUT STD_LOGIC_VECTOR(delta_vector_size-1 DOWNTO 0);
101 delta_f2 : OUT STD_LOGIC_VECTOR(delta_vector_size-1 DOWNTO 0);
104 delta_f2 : OUT STD_LOGIC_VECTOR(delta_vector_size-1 DOWNTO 0);
102 nb_data_by_buffer : OUT STD_LOGIC_VECTOR(nb_data_by_buffer_size-1 DOWNTO 0);
105 nb_data_by_buffer : OUT STD_LOGIC_VECTOR(nb_data_by_buffer_size-1 DOWNTO 0);
103 nb_word_by_buffer : OUT STD_LOGIC_VECTOR(nb_word_by_buffer_size-1 DOWNTO 0);
106 nb_word_by_buffer : OUT STD_LOGIC_VECTOR(nb_word_by_buffer_size-1 DOWNTO 0);
104 nb_snapshot_param : OUT STD_LOGIC_VECTOR(nb_snapshot_param_size-1 DOWNTO 0);
107 nb_snapshot_param : OUT STD_LOGIC_VECTOR(nb_snapshot_param_size-1 DOWNTO 0);
105
108
106 enable_f0 : OUT STD_LOGIC;
109 enable_f0 : OUT STD_LOGIC;
107 enable_f1 : OUT STD_LOGIC;
110 enable_f1 : OUT STD_LOGIC;
108 enable_f2 : OUT STD_LOGIC;
111 enable_f2 : OUT STD_LOGIC;
109 enable_f3 : OUT STD_LOGIC;
112 enable_f3 : OUT STD_LOGIC;
110
113
111 burst_f0 : OUT STD_LOGIC;
114 burst_f0 : OUT STD_LOGIC;
112 burst_f1 : OUT STD_LOGIC;
115 burst_f1 : OUT STD_LOGIC;
113 burst_f2 : OUT STD_LOGIC;
116 burst_f2 : OUT STD_LOGIC;
114
117
115 run : OUT STD_LOGIC;
118 run : OUT STD_LOGIC;
116
119
117 addr_data_f0 : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
120 addr_data_f0 : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
118 addr_data_f1 : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
121 addr_data_f1 : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
119 addr_data_f2 : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
122 addr_data_f2 : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
120 addr_data_f3 : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
123 addr_data_f3 : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
121 start_date : OUT STD_LOGIC_VECTOR(30 DOWNTO 0);
124 start_date : OUT STD_LOGIC_VECTOR(30 DOWNTO 0);
122 ---------------------------------------------------------------------------
125 ---------------------------------------------------------------------------
123 debug_reg0 : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
126 debug_reg0 : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
124 debug_reg1 : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
127 debug_reg1 : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
125 debug_reg2 : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
128 debug_reg2 : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
126 debug_reg3 : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
129 debug_reg3 : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
127 debug_reg4 : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
130 debug_reg4 : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
128 debug_reg5 : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
131 debug_reg5 : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
129 debug_reg6 : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
132 debug_reg6 : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
130 debug_reg7 : IN STD_LOGIC_VECTOR(31 DOWNTO 0)
133 debug_reg7 : IN STD_LOGIC_VECTOR(31 DOWNTO 0)
131
134
132 ---------------------------------------------------------------------------
135 ---------------------------------------------------------------------------
133 );
136 );
134
137
135 END lpp_lfr_apbreg_LPP_JCP;
138 END lpp_lfr_apbreg_LPP_JCP;
136
139
137 ARCHITECTURE beh OF lpp_lfr_apbreg_LPP_JCP IS
140 ARCHITECTURE beh OF lpp_lfr_apbreg_LPP_JCP IS
138
141
139 CONSTANT REVISION : INTEGER := 1;
142 CONSTANT REVISION : INTEGER := 1;
140
143
141 CONSTANT pconfig : apb_config_type := (
144 CONSTANT pconfig : apb_config_type := (
142 0 => ahb_device_reg (VENDOR_LPP, LPP_LFR, 0, REVISION, pirq_wfp),
145 0 => ahb_device_reg (VENDOR_LPP, LPP_LFR, 0, REVISION, pirq_wfp),
143 1 => apb_iobar(paddr, pmask));
146 1 => apb_iobar(paddr, pmask));
144
147
145 TYPE lpp_SpectralMatrix_regs IS RECORD
148 TYPE lpp_SpectralMatrix_regs IS RECORD
146 config_active_interruption_onNewMatrix : STD_LOGIC;
149 config_active_interruption_onNewMatrix : STD_LOGIC;
147 config_active_interruption_onError : STD_LOGIC;
150 config_active_interruption_onError : STD_LOGIC;
148 status_ready_matrix_f0_0 : STD_LOGIC;
151 status_ready_matrix_f0_0 : STD_LOGIC;
149 status_ready_matrix_f0_1 : STD_LOGIC;
152 status_ready_matrix_f0_1 : STD_LOGIC;
150 status_ready_matrix_f1 : STD_LOGIC;
153 status_ready_matrix_f1 : STD_LOGIC;
151 status_ready_matrix_f2 : STD_LOGIC;
154 status_ready_matrix_f2 : STD_LOGIC;
152 status_error_anticipating_empty_fifo : STD_LOGIC;
155 status_error_anticipating_empty_fifo : STD_LOGIC;
153 status_error_bad_component_error : STD_LOGIC;
156 status_error_bad_component_error : STD_LOGIC;
154 addr_matrix_f0_0 : STD_LOGIC_VECTOR(31 DOWNTO 0);
157 addr_matrix_f0_0 : STD_LOGIC_VECTOR(31 DOWNTO 0);
155 addr_matrix_f0_1 : STD_LOGIC_VECTOR(31 DOWNTO 0);
158 addr_matrix_f0_1 : STD_LOGIC_VECTOR(31 DOWNTO 0);
156 addr_matrix_f1 : STD_LOGIC_VECTOR(31 DOWNTO 0);
159 addr_matrix_f1 : STD_LOGIC_VECTOR(31 DOWNTO 0);
157 addr_matrix_f2 : STD_LOGIC_VECTOR(31 DOWNTO 0);
160 addr_matrix_f2 : STD_LOGIC_VECTOR(31 DOWNTO 0);
158 END RECORD;
161 END RECORD;
159 SIGNAL reg_sp : lpp_SpectralMatrix_regs;
162 SIGNAL reg_sp : lpp_SpectralMatrix_regs;
160
163
161 TYPE lpp_WaveformPicker_regs IS RECORD
164 TYPE lpp_WaveformPicker_regs IS RECORD
162 status_full : STD_LOGIC_VECTOR(3 DOWNTO 0);
165 status_full : STD_LOGIC_VECTOR(3 DOWNTO 0);
163 status_full_err : STD_LOGIC_VECTOR(3 DOWNTO 0);
166 status_full_err : STD_LOGIC_VECTOR(3 DOWNTO 0);
164 status_new_err : STD_LOGIC_VECTOR(3 DOWNTO 0);
167 status_new_err : STD_LOGIC_VECTOR(3 DOWNTO 0);
165 data_shaping_BW : STD_LOGIC;
168 data_shaping_BW : STD_LOGIC;
166 data_shaping_SP0 : STD_LOGIC;
169 data_shaping_SP0 : STD_LOGIC;
167 data_shaping_SP1 : STD_LOGIC;
170 data_shaping_SP1 : STD_LOGIC;
168 data_shaping_R0 : STD_LOGIC;
171 data_shaping_R0 : STD_LOGIC;
169 data_shaping_R1 : STD_LOGIC;
172 data_shaping_R1 : STD_LOGIC;
170 delta_snapshot : STD_LOGIC_VECTOR(delta_vector_size-1 DOWNTO 0);
173 delta_snapshot : STD_LOGIC_VECTOR(delta_vector_size-1 DOWNTO 0);
171 delta_f0 : STD_LOGIC_VECTOR(delta_vector_size-1 DOWNTO 0);
174 delta_f0 : STD_LOGIC_VECTOR(delta_vector_size-1 DOWNTO 0);
172 delta_f0_2 : STD_LOGIC_VECTOR(delta_vector_size_f0_2-1 DOWNTO 0);
175 delta_f0_2 : STD_LOGIC_VECTOR(delta_vector_size_f0_2-1 DOWNTO 0);
173 delta_f1 : STD_LOGIC_VECTOR(delta_vector_size-1 DOWNTO 0);
176 delta_f1 : STD_LOGIC_VECTOR(delta_vector_size-1 DOWNTO 0);
174 delta_f2 : STD_LOGIC_VECTOR(delta_vector_size-1 DOWNTO 0);
177 delta_f2 : STD_LOGIC_VECTOR(delta_vector_size-1 DOWNTO 0);
175 nb_data_by_buffer : STD_LOGIC_VECTOR(nb_data_by_buffer_size-1 DOWNTO 0);
178 nb_data_by_buffer : STD_LOGIC_VECTOR(nb_data_by_buffer_size-1 DOWNTO 0);
176 nb_word_by_buffer : STD_LOGIC_VECTOR(nb_word_by_buffer_size-1 DOWNTO 0);
179 nb_word_by_buffer : STD_LOGIC_VECTOR(nb_word_by_buffer_size-1 DOWNTO 0);
177 nb_snapshot_param : STD_LOGIC_VECTOR(nb_snapshot_param_size-1 DOWNTO 0);
180 nb_snapshot_param : STD_LOGIC_VECTOR(nb_snapshot_param_size-1 DOWNTO 0);
178 enable_f0 : STD_LOGIC;
181 enable_f0 : STD_LOGIC;
179 enable_f1 : STD_LOGIC;
182 enable_f1 : STD_LOGIC;
180 enable_f2 : STD_LOGIC;
183 enable_f2 : STD_LOGIC;
181 enable_f3 : STD_LOGIC;
184 enable_f3 : STD_LOGIC;
182 burst_f0 : STD_LOGIC;
185 burst_f0 : STD_LOGIC;
183 burst_f1 : STD_LOGIC;
186 burst_f1 : STD_LOGIC;
184 burst_f2 : STD_LOGIC;
187 burst_f2 : STD_LOGIC;
185 run : STD_LOGIC;
188 run : STD_LOGIC;
186 addr_data_f0 : STD_LOGIC_VECTOR(31 DOWNTO 0);
189 addr_data_f0 : STD_LOGIC_VECTOR(31 DOWNTO 0);
187 addr_data_f1 : STD_LOGIC_VECTOR(31 DOWNTO 0);
190 addr_data_f1 : STD_LOGIC_VECTOR(31 DOWNTO 0);
188 addr_data_f2 : STD_LOGIC_VECTOR(31 DOWNTO 0);
191 addr_data_f2 : STD_LOGIC_VECTOR(31 DOWNTO 0);
189 addr_data_f3 : STD_LOGIC_VECTOR(31 DOWNTO 0);
192 addr_data_f3 : STD_LOGIC_VECTOR(31 DOWNTO 0);
190 start_date : STD_LOGIC_VECTOR(30 DOWNTO 0);
193 start_date : STD_LOGIC_VECTOR(30 DOWNTO 0);
191 END RECORD;
194 END RECORD;
192 SIGNAL reg_wp : lpp_WaveformPicker_regs;
195 SIGNAL reg_wp : lpp_WaveformPicker_regs;
193
196
194 SIGNAL prdata : STD_LOGIC_VECTOR(31 DOWNTO 0);
197 SIGNAL prdata : STD_LOGIC_VECTOR(31 DOWNTO 0);
195
198
196 -----------------------------------------------------------------------------
199 -----------------------------------------------------------------------------
197 -- IRQ
200 -- IRQ
198 -----------------------------------------------------------------------------
201 -----------------------------------------------------------------------------
199 CONSTANT IRQ_WFP_SIZE : INTEGER := 12;
202 CONSTANT IRQ_WFP_SIZE : INTEGER := 12;
200 SIGNAL irq_wfp_ZERO : STD_LOGIC_VECTOR(IRQ_WFP_SIZE-1 DOWNTO 0);
203 SIGNAL irq_wfp_ZERO : STD_LOGIC_VECTOR(IRQ_WFP_SIZE-1 DOWNTO 0);
201 SIGNAL irq_wfp_reg_s : STD_LOGIC_VECTOR(IRQ_WFP_SIZE-1 DOWNTO 0);
204 SIGNAL irq_wfp_reg_s : STD_LOGIC_VECTOR(IRQ_WFP_SIZE-1 DOWNTO 0);
202 SIGNAL irq_wfp_reg : STD_LOGIC_VECTOR(IRQ_WFP_SIZE-1 DOWNTO 0);
205 SIGNAL irq_wfp_reg : STD_LOGIC_VECTOR(IRQ_WFP_SIZE-1 DOWNTO 0);
203 SIGNAL irq_wfp : STD_LOGIC_VECTOR(IRQ_WFP_SIZE-1 DOWNTO 0);
206 SIGNAL irq_wfp : STD_LOGIC_VECTOR(IRQ_WFP_SIZE-1 DOWNTO 0);
204 SIGNAL ored_irq_wfp : STD_LOGIC;
207 SIGNAL ored_irq_wfp : STD_LOGIC;
205
208
206 BEGIN -- beh
209 BEGIN -- beh
207
210
208 status_ready_matrix_f0_0 <= reg_sp.status_ready_matrix_f0_0;
211 status_ready_matrix_f0_0 <= reg_sp.status_ready_matrix_f0_0;
209 status_ready_matrix_f0_1 <= reg_sp.status_ready_matrix_f0_1;
212 status_ready_matrix_f0_1 <= reg_sp.status_ready_matrix_f0_1;
210 status_ready_matrix_f1 <= reg_sp.status_ready_matrix_f1;
213 status_ready_matrix_f1 <= reg_sp.status_ready_matrix_f1;
211 status_ready_matrix_f2 <= reg_sp.status_ready_matrix_f2;
214 status_ready_matrix_f2 <= reg_sp.status_ready_matrix_f2;
212 status_error_anticipating_empty_fifo <= reg_sp.status_error_anticipating_empty_fifo;
215 status_error_anticipating_empty_fifo <= reg_sp.status_error_anticipating_empty_fifo;
213 status_error_bad_component_error <= reg_sp.status_error_bad_component_error;
216 status_error_bad_component_error <= reg_sp.status_error_bad_component_error;
214
217
215 config_active_interruption_onNewMatrix <= reg_sp.config_active_interruption_onNewMatrix;
218 config_active_interruption_onNewMatrix <= reg_sp.config_active_interruption_onNewMatrix;
216 config_active_interruption_onError <= reg_sp.config_active_interruption_onError;
219 config_active_interruption_onError <= reg_sp.config_active_interruption_onError;
217 addr_matrix_f0_0 <= reg_sp.addr_matrix_f0_0;
220 addr_matrix_f0_0 <= reg_sp.addr_matrix_f0_0;
218 addr_matrix_f0_1 <= reg_sp.addr_matrix_f0_1;
221 addr_matrix_f0_1 <= reg_sp.addr_matrix_f0_1;
219 addr_matrix_f1 <= reg_sp.addr_matrix_f1;
222 addr_matrix_f1 <= reg_sp.addr_matrix_f1;
220 addr_matrix_f2 <= reg_sp.addr_matrix_f2;
223 addr_matrix_f2 <= reg_sp.addr_matrix_f2;
221
224
222
225
223 data_shaping_BW <= NOT reg_wp.data_shaping_BW;
226 data_shaping_BW <= NOT reg_wp.data_shaping_BW;
224 data_shaping_SP0 <= reg_wp.data_shaping_SP0;
227 data_shaping_SP0 <= reg_wp.data_shaping_SP0;
225 data_shaping_SP1 <= reg_wp.data_shaping_SP1;
228 data_shaping_SP1 <= reg_wp.data_shaping_SP1;
226 data_shaping_R0 <= reg_wp.data_shaping_R0;
229 data_shaping_R0 <= reg_wp.data_shaping_R0;
227 data_shaping_R1 <= reg_wp.data_shaping_R1;
230 data_shaping_R1 <= reg_wp.data_shaping_R1;
228
231
229 delta_snapshot <= reg_wp.delta_snapshot;
232 delta_snapshot <= reg_wp.delta_snapshot;
230 delta_f0 <= reg_wp.delta_f0;
233 delta_f0 <= reg_wp.delta_f0;
231 delta_f0_2 <= reg_wp.delta_f0_2;
234 delta_f0_2 <= reg_wp.delta_f0_2;
232 delta_f1 <= reg_wp.delta_f1;
235 delta_f1 <= reg_wp.delta_f1;
233 delta_f2 <= reg_wp.delta_f2;
236 delta_f2 <= reg_wp.delta_f2;
234 nb_data_by_buffer <= reg_wp.nb_data_by_buffer;
237 nb_data_by_buffer <= reg_wp.nb_data_by_buffer;
235 nb_word_by_buffer <= reg_wp.nb_word_by_buffer;
238 nb_word_by_buffer <= reg_wp.nb_word_by_buffer;
236 nb_snapshot_param <= reg_wp.nb_snapshot_param;
239 nb_snapshot_param <= reg_wp.nb_snapshot_param;
237
240
238 enable_f0 <= reg_wp.enable_f0;
241 enable_f0 <= reg_wp.enable_f0;
239 enable_f1 <= reg_wp.enable_f1;
242 enable_f1 <= reg_wp.enable_f1;
240 enable_f2 <= reg_wp.enable_f2;
243 enable_f2 <= reg_wp.enable_f2;
241 enable_f3 <= reg_wp.enable_f3;
244 enable_f3 <= reg_wp.enable_f3;
242
245
243 burst_f0 <= reg_wp.burst_f0;
246 burst_f0 <= reg_wp.burst_f0;
244 burst_f1 <= reg_wp.burst_f1;
247 burst_f1 <= reg_wp.burst_f1;
245 burst_f2 <= reg_wp.burst_f2;
248 burst_f2 <= reg_wp.burst_f2;
246
249
247 run <= reg_wp.run;
250 run <= reg_wp.run;
248
251
249 addr_data_f0 <= reg_wp.addr_data_f0;
252 addr_data_f0 <= reg_wp.addr_data_f0;
250 addr_data_f1 <= reg_wp.addr_data_f1;
253 addr_data_f1 <= reg_wp.addr_data_f1;
251 addr_data_f2 <= reg_wp.addr_data_f2;
254 addr_data_f2 <= reg_wp.addr_data_f2;
252 addr_data_f3 <= reg_wp.addr_data_f3;
255 addr_data_f3 <= reg_wp.addr_data_f3;
253
256
254 start_date <= reg_wp.start_date;
257 start_date <= reg_wp.start_date;
255
258
256 lpp_lfr_apbreg : PROCESS (HCLK, HRESETn)
259 lpp_lfr_apbreg : PROCESS (HCLK, HRESETn)
257 VARIABLE paddr : STD_LOGIC_VECTOR(7 DOWNTO 2);
260 VARIABLE paddr : STD_LOGIC_VECTOR(7 DOWNTO 2);
258 BEGIN -- PROCESS lpp_dma_top
261 BEGIN -- PROCESS lpp_dma_top
259 IF HRESETn = '0' THEN -- asynchronous reset (active low)
262 IF HRESETn = '0' THEN -- asynchronous reset (active low)
260 reg_sp.config_active_interruption_onNewMatrix <= '0';
263 reg_sp.config_active_interruption_onNewMatrix <= '0';
261 reg_sp.config_active_interruption_onError <= '0';
264 reg_sp.config_active_interruption_onError <= '0';
262 reg_sp.status_ready_matrix_f0_0 <= '0';
265 reg_sp.status_ready_matrix_f0_0 <= '0';
263 reg_sp.status_ready_matrix_f0_1 <= '0';
266 reg_sp.status_ready_matrix_f0_1 <= '0';
264 reg_sp.status_ready_matrix_f1 <= '0';
267 reg_sp.status_ready_matrix_f1 <= '0';
265 reg_sp.status_ready_matrix_f2 <= '0';
268 reg_sp.status_ready_matrix_f2 <= '0';
266 reg_sp.status_error_anticipating_empty_fifo <= '0';
269 reg_sp.status_error_anticipating_empty_fifo <= '0';
267 reg_sp.status_error_bad_component_error <= '0';
270 reg_sp.status_error_bad_component_error <= '0';
268 reg_sp.addr_matrix_f0_0 <= (OTHERS => '0');
271 reg_sp.addr_matrix_f0_0 <= (OTHERS => '0');
269 reg_sp.addr_matrix_f0_1 <= (OTHERS => '0');
272 reg_sp.addr_matrix_f0_1 <= (OTHERS => '0');
270 reg_sp.addr_matrix_f1 <= (OTHERS => '0');
273 reg_sp.addr_matrix_f1 <= (OTHERS => '0');
271 reg_sp.addr_matrix_f2 <= (OTHERS => '0');
274 reg_sp.addr_matrix_f2 <= (OTHERS => '0');
272 prdata <= (OTHERS => '0');
275 prdata <= (OTHERS => '0');
273
276
274 apbo.pirq <= (OTHERS => '0');
277 apbo.pirq <= (OTHERS => '0');
275
278
276 status_full_ack <= (OTHERS => '0');
279 status_full_ack <= (OTHERS => '0');
277
280
278 reg_wp.data_shaping_BW <= '0';
281 reg_wp.data_shaping_BW <= '0';
279 reg_wp.data_shaping_SP0 <= '0';
282 reg_wp.data_shaping_SP0 <= '0';
280 reg_wp.data_shaping_SP1 <= '0';
283 reg_wp.data_shaping_SP1 <= '0';
281 reg_wp.data_shaping_R0 <= '0';
284 reg_wp.data_shaping_R0 <= '0';
282 reg_wp.data_shaping_R1 <= '0';
285 reg_wp.data_shaping_R1 <= '0';
283 reg_wp.enable_f0 <= '0';
286 reg_wp.enable_f0 <= '0';
284 reg_wp.enable_f1 <= '0';
287 reg_wp.enable_f1 <= '0';
285 reg_wp.enable_f2 <= '0';
288 reg_wp.enable_f2 <= '0';
286 reg_wp.enable_f3 <= '0';
289 reg_wp.enable_f3 <= '0';
287 reg_wp.burst_f0 <= '0';
290 reg_wp.burst_f0 <= '0';
288 reg_wp.burst_f1 <= '0';
291 reg_wp.burst_f1 <= '0';
289 reg_wp.burst_f2 <= '0';
292 reg_wp.burst_f2 <= '0';
290 reg_wp.run <= '0';
293 reg_wp.run <= '0';
291 reg_wp.addr_data_f0 <= (OTHERS => '0');
294 reg_wp.addr_data_f0 <= (OTHERS => '0');
292 reg_wp.addr_data_f1 <= (OTHERS => '0');
295 reg_wp.addr_data_f1 <= (OTHERS => '0');
293 reg_wp.addr_data_f2 <= (OTHERS => '0');
296 reg_wp.addr_data_f2 <= (OTHERS => '0');
294 reg_wp.addr_data_f3 <= (OTHERS => '0');
297 reg_wp.addr_data_f3 <= (OTHERS => '0');
295 reg_wp.status_full <= (OTHERS => '0');
298 reg_wp.status_full <= (OTHERS => '0');
296 reg_wp.status_full_err <= (OTHERS => '0');
299 reg_wp.status_full_err <= (OTHERS => '0');
297 reg_wp.status_new_err <= (OTHERS => '0');
300 reg_wp.status_new_err <= (OTHERS => '0');
298 reg_wp.delta_snapshot <= (OTHERS => '0');
301 reg_wp.delta_snapshot <= (OTHERS => '0');
299 reg_wp.delta_f0 <= (OTHERS => '0');
302 reg_wp.delta_f0 <= (OTHERS => '0');
300 reg_wp.delta_f0_2 <= (OTHERS => '0');
303 reg_wp.delta_f0_2 <= (OTHERS => '0');
301 reg_wp.delta_f1 <= (OTHERS => '0');
304 reg_wp.delta_f1 <= (OTHERS => '0');
302 reg_wp.delta_f2 <= (OTHERS => '0');
305 reg_wp.delta_f2 <= (OTHERS => '0');
303 reg_wp.nb_data_by_buffer <= (OTHERS => '0');
306 reg_wp.nb_data_by_buffer <= (OTHERS => '0');
304 reg_wp.nb_snapshot_param <= (OTHERS => '0');
307 reg_wp.nb_snapshot_param <= (OTHERS => '0');
305 reg_wp.start_date <= (OTHERS => '0');
308 reg_wp.start_date <= (OTHERS => '0');
306
309
307 ELSIF HCLK'EVENT AND HCLK = '1' THEN -- rising clock edge
310 ELSIF HCLK'EVENT AND HCLK = '1' THEN -- rising clock edge
308 status_full_ack <= (OTHERS => '0');
311 status_full_ack <= (OTHERS => '0');
309
312
310 reg_sp.status_ready_matrix_f0_0 <= reg_sp.status_ready_matrix_f0_0 OR ready_matrix_f0_0;
313 reg_sp.status_ready_matrix_f0_0 <= reg_sp.status_ready_matrix_f0_0 OR ready_matrix_f0_0;
311 reg_sp.status_ready_matrix_f0_1 <= reg_sp.status_ready_matrix_f0_1 OR ready_matrix_f0_1;
314 reg_sp.status_ready_matrix_f0_1 <= reg_sp.status_ready_matrix_f0_1 OR ready_matrix_f0_1;
312 reg_sp.status_ready_matrix_f1 <= reg_sp.status_ready_matrix_f1 OR ready_matrix_f1;
315 reg_sp.status_ready_matrix_f1 <= reg_sp.status_ready_matrix_f1 OR ready_matrix_f1;
313 reg_sp.status_ready_matrix_f2 <= reg_sp.status_ready_matrix_f2 OR ready_matrix_f2;
316 reg_sp.status_ready_matrix_f2 <= reg_sp.status_ready_matrix_f2 OR ready_matrix_f2;
314
317
315 reg_sp.status_error_anticipating_empty_fifo <= reg_sp.status_error_anticipating_empty_fifo OR error_anticipating_empty_fifo;
318 reg_sp.status_error_anticipating_empty_fifo <= reg_sp.status_error_anticipating_empty_fifo OR error_anticipating_empty_fifo;
316 reg_sp.status_error_bad_component_error <= reg_sp.status_error_bad_component_error OR error_bad_component_error;
319 reg_sp.status_error_bad_component_error <= reg_sp.status_error_bad_component_error OR error_bad_component_error;
317 all_status: FOR I IN 3 DOWNTO 0 LOOP
320 all_status: FOR I IN 3 DOWNTO 0 LOOP
318 --reg_wp.status_full(I) <= (reg_wp.status_full(I) OR status_full(I)) AND reg_wp.run;
321 --reg_wp.status_full(I) <= (reg_wp.status_full(I) OR status_full(I)) AND reg_wp.run;
319 --reg_wp.status_full_err(I) <= (reg_wp.status_full_err(I) OR status_full_err(I)) AND reg_wp.run;
322 --reg_wp.status_full_err(I) <= (reg_wp.status_full_err(I) OR status_full_err(I)) AND reg_wp.run;
320 --reg_wp.status_new_err(I) <= (reg_wp.status_new_err(I) OR status_new_err(I)) AND reg_wp.run ;
323 --reg_wp.status_new_err(I) <= (reg_wp.status_new_err(I) OR status_new_err(I)) AND reg_wp.run ;
321 reg_wp.status_full(I) <= status_full(I) AND reg_wp.run;
324 reg_wp.status_full(I) <= status_full(I) AND reg_wp.run;
322 reg_wp.status_full_err(I) <= status_full_err(I) AND reg_wp.run;
325 reg_wp.status_full_err(I) <= status_full_err(I) AND reg_wp.run;
323 reg_wp.status_new_err(I) <= status_new_err(I) AND reg_wp.run ;
326 reg_wp.status_new_err(I) <= status_new_err(I) AND reg_wp.run ;
324 END LOOP all_status;
327 END LOOP all_status;
325
328
326 paddr := "000000";
329 paddr := "000000";
327 paddr(7 DOWNTO 2) := apbi.paddr(7 DOWNTO 2);
330 paddr(7 DOWNTO 2) := apbi.paddr(7 DOWNTO 2);
328 prdata <= (OTHERS => '0');
331 prdata <= (OTHERS => '0');
329 IF apbi.psel(pindex) = '1' THEN
332 IF apbi.psel(pindex) = '1' THEN
330 -- APB DMA READ --
333 -- APB DMA READ --
331 CASE paddr(7 DOWNTO 2) IS
334 CASE paddr(7 DOWNTO 2) IS
332 --
335 --
333 WHEN "000000" => prdata(0) <= reg_sp.config_active_interruption_onNewMatrix;
336 WHEN "000000" => prdata(0) <= reg_sp.config_active_interruption_onNewMatrix;
334 prdata(1) <= reg_sp.config_active_interruption_onError;
337 prdata(1) <= reg_sp.config_active_interruption_onError;
335 WHEN "000001" => prdata(0) <= reg_sp.status_ready_matrix_f0_0;
338 WHEN "000001" => prdata(0) <= reg_sp.status_ready_matrix_f0_0;
336 prdata(1) <= reg_sp.status_ready_matrix_f0_1;
339 prdata(1) <= reg_sp.status_ready_matrix_f0_1;
337 prdata(2) <= reg_sp.status_ready_matrix_f1;
340 prdata(2) <= reg_sp.status_ready_matrix_f1;
338 prdata(3) <= reg_sp.status_ready_matrix_f2;
341 prdata(3) <= reg_sp.status_ready_matrix_f2;
339 prdata(4) <= reg_sp.status_error_anticipating_empty_fifo;
342 prdata(4) <= reg_sp.status_error_anticipating_empty_fifo;
340 prdata(5) <= reg_sp.status_error_bad_component_error;
343 prdata(5) <= reg_sp.status_error_bad_component_error;
341 WHEN "000010" => prdata <= reg_sp.addr_matrix_f0_0;
344 WHEN "000010" => prdata <= reg_sp.addr_matrix_f0_0;
342 WHEN "000011" => prdata <= reg_sp.addr_matrix_f0_1;
345 WHEN "000011" => prdata <= reg_sp.addr_matrix_f0_1;
343 WHEN "000100" => prdata <= reg_sp.addr_matrix_f1;
346 WHEN "000100" => prdata <= reg_sp.addr_matrix_f1;
344 WHEN "000101" => prdata <= reg_sp.addr_matrix_f2;
347 WHEN "000101" => prdata <= reg_sp.addr_matrix_f2;
345 WHEN "000110" => prdata <= debug_reg;
348 WHEN "000110" => prdata <= debug_reg;
346 --
349 --
347 WHEN "001000" => prdata(0) <= reg_wp.data_shaping_BW;
350 WHEN "001000" => prdata(0) <= reg_wp.data_shaping_BW;
348 prdata(1) <= reg_wp.data_shaping_SP0;
351 prdata(1) <= reg_wp.data_shaping_SP0;
349 prdata(2) <= reg_wp.data_shaping_SP1;
352 prdata(2) <= reg_wp.data_shaping_SP1;
350 prdata(3) <= reg_wp.data_shaping_R0;
353 prdata(3) <= reg_wp.data_shaping_R0;
351 prdata(4) <= reg_wp.data_shaping_R1;
354 prdata(4) <= reg_wp.data_shaping_R1;
352 WHEN "001001" => prdata(0) <= reg_wp.enable_f0;
355 WHEN "001001" => prdata(0) <= reg_wp.enable_f0;
353 prdata(1) <= reg_wp.enable_f1;
356 prdata(1) <= reg_wp.enable_f1;
354 prdata(2) <= reg_wp.enable_f2;
357 prdata(2) <= reg_wp.enable_f2;
355 prdata(3) <= reg_wp.enable_f3;
358 prdata(3) <= reg_wp.enable_f3;
356 prdata(4) <= reg_wp.burst_f0;
359 prdata(4) <= reg_wp.burst_f0;
357 prdata(5) <= reg_wp.burst_f1;
360 prdata(5) <= reg_wp.burst_f1;
358 prdata(6) <= reg_wp.burst_f2;
361 prdata(6) <= reg_wp.burst_f2;
359 prdata(7) <= reg_wp.run;
362 prdata(7) <= reg_wp.run;
360 WHEN "001010" => prdata <= reg_wp.addr_data_f0;
363 WHEN "001010" => prdata <= reg_wp.addr_data_f0;
361 WHEN "001011" => prdata <= reg_wp.addr_data_f1;
364 WHEN "001011" => prdata <= reg_wp.addr_data_f1;
362 WHEN "001100" => prdata <= reg_wp.addr_data_f2;
365 WHEN "001100" => prdata <= reg_wp.addr_data_f2;
363 WHEN "001101" => prdata <= reg_wp.addr_data_f3;
366 WHEN "001101" => prdata <= reg_wp.addr_data_f3;
364 WHEN "001110" => prdata(3 DOWNTO 0) <= reg_wp.status_full;
367 WHEN "001110" => prdata(3 DOWNTO 0) <= reg_wp.status_full;
365 prdata(7 DOWNTO 4) <= reg_wp.status_full_err;
368 prdata(7 DOWNTO 4) <= reg_wp.status_full_err;
366 prdata(11 DOWNTO 8) <= reg_wp.status_new_err;
369 prdata(11 DOWNTO 8) <= reg_wp.status_new_err;
367 WHEN "001111" => prdata(delta_vector_size-1 DOWNTO 0) <= reg_wp.delta_snapshot;
370 WHEN "001111" => prdata(delta_vector_size-1 DOWNTO 0) <= reg_wp.delta_snapshot;
368 WHEN "010000" => prdata(delta_vector_size-1 DOWNTO 0) <= reg_wp.delta_f0;
371 WHEN "010000" => prdata(delta_vector_size-1 DOWNTO 0) <= reg_wp.delta_f0;
369 WHEN "010001" => prdata(delta_vector_size_f0_2-1 DOWNTO 0) <= reg_wp.delta_f0_2;
372 WHEN "010001" => prdata(delta_vector_size_f0_2-1 DOWNTO 0) <= reg_wp.delta_f0_2;
370 WHEN "010010" => prdata(delta_vector_size-1 DOWNTO 0) <= reg_wp.delta_f1;
373 WHEN "010010" => prdata(delta_vector_size-1 DOWNTO 0) <= reg_wp.delta_f1;
371 WHEN "010011" => prdata(delta_vector_size-1 DOWNTO 0) <= reg_wp.delta_f2;
374 WHEN "010011" => prdata(delta_vector_size-1 DOWNTO 0) <= reg_wp.delta_f2;
372 WHEN "010100" => prdata(nb_data_by_buffer_size-1 DOWNTO 0) <= reg_wp.nb_data_by_buffer;
375 WHEN "010100" => prdata(nb_data_by_buffer_size-1 DOWNTO 0) <= reg_wp.nb_data_by_buffer;
373 WHEN "010101" => prdata(nb_snapshot_param_size-1 DOWNTO 0) <= reg_wp.nb_snapshot_param;
376 WHEN "010101" => prdata(nb_snapshot_param_size-1 DOWNTO 0) <= reg_wp.nb_snapshot_param;
374 WHEN "010110" => prdata(30 DOWNTO 0) <= reg_wp.start_date;
377 WHEN "010110" => prdata(30 DOWNTO 0) <= reg_wp.start_date;
375 WHEN "010111" => prdata(nb_word_by_buffer_size-1 DOWNTO 0) <= reg_wp.nb_word_by_buffer;
378 WHEN "010111" => prdata(nb_word_by_buffer_size-1 DOWNTO 0) <= reg_wp.nb_word_by_buffer;
376 ----------------------------------------------------
379 ----------------------------------------------------
377 WHEN "100000" => prdata(31 DOWNTO 0) <= debug_reg0(31 DOWNTO 0);
380 WHEN "100000" => prdata(31 DOWNTO 0) <= debug_reg0(31 DOWNTO 0);
378 WHEN "100001" => prdata(31 DOWNTO 0) <= debug_reg1(31 DOWNTO 0);
381 WHEN "100001" => prdata(31 DOWNTO 0) <= debug_reg1(31 DOWNTO 0);
379 WHEN "100010" => prdata(31 DOWNTO 0) <= debug_reg2(31 DOWNTO 0);
382 WHEN "100010" => prdata(31 DOWNTO 0) <= debug_reg2(31 DOWNTO 0);
380 WHEN "100011" => prdata(31 DOWNTO 0) <= debug_reg3(31 DOWNTO 0);
383 WHEN "100011" => prdata(31 DOWNTO 0) <= debug_reg3(31 DOWNTO 0);
381 WHEN "100100" => prdata(31 DOWNTO 0) <= debug_reg4(31 DOWNTO 0);
384 WHEN "100100" => prdata(31 DOWNTO 0) <= debug_reg4(31 DOWNTO 0);
382 WHEN "100101" => prdata(31 DOWNTO 0) <= debug_reg5(31 DOWNTO 0);
385 WHEN "100101" => prdata(31 DOWNTO 0) <= debug_reg5(31 DOWNTO 0);
383 WHEN "100110" => prdata(31 DOWNTO 0) <= debug_reg6(31 DOWNTO 0);
386 WHEN "100110" => prdata(31 DOWNTO 0) <= debug_reg6(31 DOWNTO 0);
384 WHEN "100111" => prdata(31 DOWNTO 0) <= debug_reg7(31 DOWNTO 0);
387 WHEN "100111" => prdata(31 DOWNTO 0) <= debug_reg7(31 DOWNTO 0);
385 ----------------------------------------------------
388 ----------------------------------------------------
386 WHEN "111100" => prdata(23 DOWNTO 0) <= top_lfr_version(23 DOWNTO 0);
389 WHEN "111100" => prdata(23 DOWNTO 0) <= top_lfr_version(23 DOWNTO 0);
387 WHEN OTHERS => NULL;
390 WHEN OTHERS => NULL;
388 END CASE;
391 END CASE;
389 IF (apbi.pwrite AND apbi.penable) = '1' THEN
392 IF (apbi.pwrite AND apbi.penable) = '1' THEN
390 -- APB DMA WRITE --
393 -- APB DMA WRITE --
391 CASE paddr(7 DOWNTO 2) IS
394 CASE paddr(7 DOWNTO 2) IS
392 --
395 --
393 WHEN "000000" => reg_sp.config_active_interruption_onNewMatrix <= apbi.pwdata(0);
396 WHEN "000000" => reg_sp.config_active_interruption_onNewMatrix <= apbi.pwdata(0);
394 reg_sp.config_active_interruption_onError <= apbi.pwdata(1);
397 reg_sp.config_active_interruption_onError <= apbi.pwdata(1);
395 WHEN "000001" => reg_sp.status_ready_matrix_f0_0 <= apbi.pwdata(0);
398 WHEN "000001" => reg_sp.status_ready_matrix_f0_0 <= apbi.pwdata(0);
396 reg_sp.status_ready_matrix_f0_1 <= apbi.pwdata(1);
399 reg_sp.status_ready_matrix_f0_1 <= apbi.pwdata(1);
397 reg_sp.status_ready_matrix_f1 <= apbi.pwdata(2);
400 reg_sp.status_ready_matrix_f1 <= apbi.pwdata(2);
398 reg_sp.status_ready_matrix_f2 <= apbi.pwdata(3);
401 reg_sp.status_ready_matrix_f2 <= apbi.pwdata(3);
399 reg_sp.status_error_anticipating_empty_fifo <= apbi.pwdata(4);
402 reg_sp.status_error_anticipating_empty_fifo <= apbi.pwdata(4);
400 reg_sp.status_error_bad_component_error <= apbi.pwdata(5);
403 reg_sp.status_error_bad_component_error <= apbi.pwdata(5);
401 WHEN "000010" => reg_sp.addr_matrix_f0_0 <= apbi.pwdata;
404 WHEN "000010" => reg_sp.addr_matrix_f0_0 <= apbi.pwdata;
402 WHEN "000011" => reg_sp.addr_matrix_f0_1 <= apbi.pwdata;
405 WHEN "000011" => reg_sp.addr_matrix_f0_1 <= apbi.pwdata;
403 WHEN "000100" => reg_sp.addr_matrix_f1 <= apbi.pwdata;
406 WHEN "000100" => reg_sp.addr_matrix_f1 <= apbi.pwdata;
404 WHEN "000101" => reg_sp.addr_matrix_f2 <= apbi.pwdata;
407 WHEN "000101" => reg_sp.addr_matrix_f2 <= apbi.pwdata;
405 --
408 --
406 WHEN "001000" => reg_wp.data_shaping_BW <= apbi.pwdata(0);
409 WHEN "001000" => reg_wp.data_shaping_BW <= apbi.pwdata(0);
407 reg_wp.data_shaping_SP0 <= apbi.pwdata(1);
410 reg_wp.data_shaping_SP0 <= apbi.pwdata(1);
408 reg_wp.data_shaping_SP1 <= apbi.pwdata(2);
411 reg_wp.data_shaping_SP1 <= apbi.pwdata(2);
409 reg_wp.data_shaping_R0 <= apbi.pwdata(3);
412 reg_wp.data_shaping_R0 <= apbi.pwdata(3);
410 reg_wp.data_shaping_R1 <= apbi.pwdata(4);
413 reg_wp.data_shaping_R1 <= apbi.pwdata(4);
411 WHEN "001001" => reg_wp.enable_f0 <= apbi.pwdata(0);
414 WHEN "001001" => reg_wp.enable_f0 <= apbi.pwdata(0);
412 reg_wp.enable_f1 <= apbi.pwdata(1);
415 reg_wp.enable_f1 <= apbi.pwdata(1);
413 reg_wp.enable_f2 <= apbi.pwdata(2);
416 reg_wp.enable_f2 <= apbi.pwdata(2);
414 reg_wp.enable_f3 <= apbi.pwdata(3);
417 reg_wp.enable_f3 <= apbi.pwdata(3);
415 reg_wp.burst_f0 <= apbi.pwdata(4);
418 reg_wp.burst_f0 <= apbi.pwdata(4);
416 reg_wp.burst_f1 <= apbi.pwdata(5);
419 reg_wp.burst_f1 <= apbi.pwdata(5);
417 reg_wp.burst_f2 <= apbi.pwdata(6);
420 reg_wp.burst_f2 <= apbi.pwdata(6);
418 reg_wp.run <= apbi.pwdata(7);
421 reg_wp.run <= apbi.pwdata(7);
419 WHEN "001010" => reg_wp.addr_data_f0 <= apbi.pwdata;
422 WHEN "001010" => reg_wp.addr_data_f0 <= apbi.pwdata;
420 WHEN "001011" => reg_wp.addr_data_f1 <= apbi.pwdata;
423 WHEN "001011" => reg_wp.addr_data_f1 <= apbi.pwdata;
421 WHEN "001100" => reg_wp.addr_data_f2 <= apbi.pwdata;
424 WHEN "001100" => reg_wp.addr_data_f2 <= apbi.pwdata;
422 WHEN "001101" => reg_wp.addr_data_f3 <= apbi.pwdata;
425 WHEN "001101" => reg_wp.addr_data_f3 <= apbi.pwdata;
423 WHEN "001110" => reg_wp.status_full <= apbi.pwdata(3 DOWNTO 0);
426 WHEN "001110" => reg_wp.status_full <= apbi.pwdata(3 DOWNTO 0);
424 reg_wp.status_full_err <= apbi.pwdata(7 DOWNTO 4);
427 reg_wp.status_full_err <= apbi.pwdata(7 DOWNTO 4);
425 reg_wp.status_new_err <= apbi.pwdata(11 DOWNTO 8);
428 reg_wp.status_new_err <= apbi.pwdata(11 DOWNTO 8);
426 status_full_ack(0) <= reg_wp.status_full(0) AND NOT apbi.pwdata(0);
429 status_full_ack(0) <= reg_wp.status_full(0) AND NOT apbi.pwdata(0);
427 status_full_ack(1) <= reg_wp.status_full(1) AND NOT apbi.pwdata(1);
430 status_full_ack(1) <= reg_wp.status_full(1) AND NOT apbi.pwdata(1);
428 status_full_ack(2) <= reg_wp.status_full(2) AND NOT apbi.pwdata(2);
431 status_full_ack(2) <= reg_wp.status_full(2) AND NOT apbi.pwdata(2);
429 status_full_ack(3) <= reg_wp.status_full(3) AND NOT apbi.pwdata(3);
432 status_full_ack(3) <= reg_wp.status_full(3) AND NOT apbi.pwdata(3);
430 WHEN "001111" => reg_wp.delta_snapshot <= apbi.pwdata(delta_vector_size-1 DOWNTO 0);
433 WHEN "001111" => reg_wp.delta_snapshot <= apbi.pwdata(delta_vector_size-1 DOWNTO 0);
431 WHEN "010000" => reg_wp.delta_f0 <= apbi.pwdata(delta_vector_size-1 DOWNTO 0);
434 WHEN "010000" => reg_wp.delta_f0 <= apbi.pwdata(delta_vector_size-1 DOWNTO 0);
432 WHEN "010001" => reg_wp.delta_f0_2 <= apbi.pwdata(delta_vector_size_f0_2-1 DOWNTO 0);
435 WHEN "010001" => reg_wp.delta_f0_2 <= apbi.pwdata(delta_vector_size_f0_2-1 DOWNTO 0);
433 WHEN "010010" => reg_wp.delta_f1 <= apbi.pwdata(delta_vector_size-1 DOWNTO 0);
436 WHEN "010010" => reg_wp.delta_f1 <= apbi.pwdata(delta_vector_size-1 DOWNTO 0);
434 WHEN "010011" => reg_wp.delta_f2 <= apbi.pwdata(delta_vector_size-1 DOWNTO 0);
437 WHEN "010011" => reg_wp.delta_f2 <= apbi.pwdata(delta_vector_size-1 DOWNTO 0);
435 WHEN "010100" => reg_wp.nb_data_by_buffer <= apbi.pwdata(nb_data_by_buffer_size-1 DOWNTO 0);
438 WHEN "010100" => reg_wp.nb_data_by_buffer <= apbi.pwdata(nb_data_by_buffer_size-1 DOWNTO 0);
436 WHEN "010101" => reg_wp.nb_snapshot_param <= apbi.pwdata(nb_snapshot_param_size-1 DOWNTO 0);
439 WHEN "010101" => reg_wp.nb_snapshot_param <= apbi.pwdata(nb_snapshot_param_size-1 DOWNTO 0);
437 WHEN "010110" => reg_wp.start_date <= apbi.pwdata(30 DOWNTO 0);
440 WHEN "010110" => reg_wp.start_date <= apbi.pwdata(30 DOWNTO 0);
438 WHEN "010111" => reg_wp.nb_word_by_buffer <= apbi.pwdata(nb_word_by_buffer_size-1 DOWNTO 0);
441 WHEN "010111" => reg_wp.nb_word_by_buffer <= apbi.pwdata(nb_word_by_buffer_size-1 DOWNTO 0);
439 --
442 --
440 WHEN OTHERS => NULL;
443 WHEN OTHERS => NULL;
441 END CASE;
444 END CASE;
442 END IF;
445 END IF;
443 END IF;
446 END IF;
444
447
445 apbo.pirq(pirq_ms) <= ((reg_sp.config_active_interruption_onNewMatrix AND (ready_matrix_f0_0 OR
448 apbo.pirq(pirq_ms) <= ((reg_sp.config_active_interruption_onNewMatrix AND (ready_matrix_f0_0 OR
446 ready_matrix_f0_1 OR
449 ready_matrix_f0_1 OR
447 ready_matrix_f1 OR
450 ready_matrix_f1 OR
448 ready_matrix_f2)
451 ready_matrix_f2)
449 )
452 )
450 OR
453 OR
451 (reg_sp.config_active_interruption_onError AND (error_anticipating_empty_fifo OR
454 (reg_sp.config_active_interruption_onError AND (error_anticipating_empty_fifo OR
452 error_bad_component_error)
455 error_bad_component_error)
453 ));
456 ));
454
457
455 --apbo.pirq(pirq_wfp) <= (status_full(0) OR status_full_err(0) OR status_new_err(0) OR
458 --apbo.pirq(pirq_wfp) <= (status_full(0) OR status_full_err(0) OR status_new_err(0) OR
456 -- status_full(1) OR status_full_err(1) OR status_new_err(1) OR
459 -- status_full(1) OR status_full_err(1) OR status_new_err(1) OR
457 -- status_full(2) OR status_full_err(2) OR status_new_err(2) OR
460 -- status_full(2) OR status_full_err(2) OR status_new_err(2) OR
458 -- status_full(3) OR status_full_err(3) OR status_new_err(3)
461 -- status_full(3) OR status_full_err(3) OR status_new_err(3)
459 -- );
462 -- );
460 apbo.pirq(pirq_wfp) <= ored_irq_wfp;
463 apbo.pirq(pirq_wfp) <= ored_irq_wfp;
461
464
462 END IF;
465 END IF;
463 END PROCESS lpp_lfr_apbreg;
466 END PROCESS lpp_lfr_apbreg;
464
467
465 apbo.pindex <= pindex;
468 apbo.pindex <= pindex;
466 apbo.pconfig <= pconfig;
469 apbo.pconfig <= pconfig;
467 apbo.prdata <= prdata;
470 apbo.prdata <= prdata;
468
471
469 -----------------------------------------------------------------------------
472 -----------------------------------------------------------------------------
470 -- IRQ
473 -- IRQ
471 -----------------------------------------------------------------------------
474 -----------------------------------------------------------------------------
472 irq_wfp_reg_s <= status_full & status_full_err & status_new_err;
475 irq_wfp_reg_s <= status_full & status_full_err & status_new_err;
473
476
474 PROCESS (HCLK, HRESETn)
477 PROCESS (HCLK, HRESETn)
475 BEGIN -- PROCESS
478 BEGIN -- PROCESS
476 IF HRESETn = '0' THEN -- asynchronous reset (active low)
479 IF HRESETn = '0' THEN -- asynchronous reset (active low)
477 irq_wfp_reg <= (OTHERS => '0');
480 irq_wfp_reg <= (OTHERS => '0');
478 ELSIF HCLK'event AND HCLK = '1' THEN -- rising clock edge
481 ELSIF HCLK'event AND HCLK = '1' THEN -- rising clock edge
479 irq_wfp_reg <= irq_wfp_reg_s;
482 irq_wfp_reg <= irq_wfp_reg_s;
480 END IF;
483 END IF;
481 END PROCESS;
484 END PROCESS;
482
485
483 all_irq_wfp: FOR I IN IRQ_WFP_SIZE-1 DOWNTO 0 GENERATE
486 all_irq_wfp: FOR I IN IRQ_WFP_SIZE-1 DOWNTO 0 GENERATE
484 irq_wfp(I) <= (NOT irq_wfp_reg(I)) AND irq_wfp_reg_s(I);
487 irq_wfp(I) <= (NOT irq_wfp_reg(I)) AND irq_wfp_reg_s(I);
485 END GENERATE all_irq_wfp;
488 END GENERATE all_irq_wfp;
486
489
487 irq_wfp_ZERO <= (OTHERS => '0');
490 irq_wfp_ZERO <= (OTHERS => '0');
488 ored_irq_wfp <= '0' WHEN irq_wfp = irq_wfp_ZERO ELSE '1';
491 ored_irq_wfp <= '0' WHEN irq_wfp = irq_wfp_ZERO ELSE '1';
489
492
490 END beh;
493 END beh; No newline at end of file
@@ -1,211 +1,255
1 ------------------------------------------------------------------------------
1 ------------------------------------------------------------------------------
2 -- This file is a part of the LPP VHDL IP LIBRARY
2 -- This file is a part of the LPP VHDL IP LIBRARY
3 -- Copyright (C) 2009 - 2013, Laboratory of Plasmas Physic - CNRS
3 -- Copyright (C) 2009 - 2013, Laboratory of Plasmas Physic - CNRS
4 --
4 --
5 -- This program is free software; you can redistribute it and/or modify
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
6 -- it under the terms of the GNU General Public License as published by
7 -- the Free Software Foundation; either version 2 of the License, or
7 -- the Free Software Foundation; either version 2 of the License, or
8 -- (at your option) any later version.
8 -- (at your option) any later version.
9 --
9 --
10 -- This program is distributed in the hope that it will be useful,
10 -- This program is distributed in the hope that it will be useful,
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 -- GNU General Public License for more details.
13 -- GNU General Public License for more details.
14 --
14 --
15 -- You should have received a copy of the GNU General Public License
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
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
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 -------------------------------------------------------------------------------
18 -------------------------------------------------------------------------------
19 -- Author : Jean-christophe Pellion
19 -- Author : Jean-christophe Pellion
20 -- Mail : jean-christophe.pellion@lpp.polytechnique.fr
20 -- Mail : jean-christophe.pellion@lpp.polytechnique.fr
21 -- jean-christophe.pellion@easii-ic.com
21 -- jean-christophe.pellion@easii-ic.com
22 -------------------------------------------------------------------------------
22 -------------------------------------------------------------------------------
23
23
24 LIBRARY ieee;
24 LIBRARY ieee;
25 USE ieee.std_logic_1164.ALL;
25 USE ieee.std_logic_1164.ALL;
26 LIBRARY grlib;
26 LIBRARY grlib;
27 USE grlib.amba.ALL;
27 USE grlib.amba.ALL;
28 USE grlib.stdlib.ALL;
28 USE grlib.stdlib.ALL;
29 USE grlib.devices.ALL;
29 USE grlib.devices.ALL;
30
30
31 LIBRARY staging;
31 LIBRARY staging;
32 USE staging.sample_type_LPP_JCP.ALL;
32 USE staging.sample_type_LPP_JCP.ALL;
33
33
34 PACKAGE lpp_lfr_pkg_LPP_JCP IS
34 PACKAGE lpp_lfr_pkg_LPP_JCP IS
35
35
36 COMPONENT lpp_lfr_apbreg_LPP_JCP
36 COMPONENT lpp_lfr_apbreg_LPP_JCP
37 GENERIC (
37 GENERIC (
38 nb_data_by_buffer_size : INTEGER;
38 nb_data_by_buffer_size : INTEGER;
39 nb_word_by_buffer_size : INTEGER;
39 nb_word_by_buffer_size : INTEGER;
40 nb_snapshot_param_size : INTEGER;
40 nb_snapshot_param_size : INTEGER;
41 delta_vector_size : INTEGER;
41 delta_vector_size : INTEGER;
42 delta_vector_size_f0_2 : INTEGER;
42 delta_vector_size_f0_2 : INTEGER;
43 pindex : INTEGER;
43 pindex : INTEGER;
44 paddr : INTEGER;
44 paddr : INTEGER;
45 pmask : INTEGER;
45 pmask : INTEGER;
46 pirq_ms : INTEGER;
46 pirq_ms : INTEGER;
47 pirq_wfp : INTEGER;
47 pirq_wfp : INTEGER;
48 top_lfr_version : STD_LOGIC_VECTOR(23 DOWNTO 0));
48 top_lfr_version : STD_LOGIC_VECTOR(23 DOWNTO 0));
49 PORT (
49 PORT (
50 HCLK : IN STD_ULOGIC;
50 HCLK : IN STD_ULOGIC;
51 HRESETn : IN STD_ULOGIC;
51 HRESETn : IN STD_ULOGIC;
52 apbi : IN apb_slv_in_type;
52 apbi : IN apb_slv_in_type;
53 apbo : OUT apb_slv_out_type;
53 apbo : OUT apb_slv_out_type;
54 ready_matrix_f0_0 : IN STD_LOGIC;
54 ready_matrix_f0_0 : IN STD_LOGIC;
55 ready_matrix_f0_1 : IN STD_LOGIC;
55 ready_matrix_f0_1 : IN STD_LOGIC;
56 ready_matrix_f1 : IN STD_LOGIC;
56 ready_matrix_f1 : IN STD_LOGIC;
57 ready_matrix_f2 : IN STD_LOGIC;
57 ready_matrix_f2 : IN STD_LOGIC;
58 error_anticipating_empty_fifo : IN STD_LOGIC;
58 error_anticipating_empty_fifo : IN STD_LOGIC;
59 error_bad_component_error : IN STD_LOGIC;
59 error_bad_component_error : IN STD_LOGIC;
60 debug_reg : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
60 debug_reg : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
61 status_ready_matrix_f0_0 : OUT STD_LOGIC;
61 status_ready_matrix_f0_0 : OUT STD_LOGIC;
62 status_ready_matrix_f0_1 : OUT STD_LOGIC;
62 status_ready_matrix_f0_1 : OUT STD_LOGIC;
63 status_ready_matrix_f1 : OUT STD_LOGIC;
63 status_ready_matrix_f1 : OUT STD_LOGIC;
64 status_ready_matrix_f2 : OUT STD_LOGIC;
64 status_ready_matrix_f2 : OUT STD_LOGIC;
65 status_error_anticipating_empty_fifo : OUT STD_LOGIC;
65 status_error_anticipating_empty_fifo : OUT STD_LOGIC;
66 status_error_bad_component_error : OUT STD_LOGIC;
66 status_error_bad_component_error : OUT STD_LOGIC;
67 config_active_interruption_onNewMatrix : OUT STD_LOGIC;
67 config_active_interruption_onNewMatrix : OUT STD_LOGIC;
68 config_active_interruption_onError : OUT STD_LOGIC;
68 config_active_interruption_onError : OUT STD_LOGIC;
69 addr_matrix_f0_0 : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
69 addr_matrix_f0_0 : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
70 addr_matrix_f0_1 : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
70 addr_matrix_f0_1 : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
71 addr_matrix_f1 : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
71 addr_matrix_f1 : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
72 addr_matrix_f2 : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
72 addr_matrix_f2 : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
73 status_full : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
73 status_full : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
74 status_full_ack : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
74 status_full_ack : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
75 status_full_err : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
75 status_full_err : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
76 status_new_err : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
76 status_new_err : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
77 data_shaping_BW : OUT STD_LOGIC;
77 data_shaping_BW : OUT STD_LOGIC;
78 data_shaping_SP0 : OUT STD_LOGIC;
78 data_shaping_SP0 : OUT STD_LOGIC;
79 data_shaping_SP1 : OUT STD_LOGIC;
79 data_shaping_SP1 : OUT STD_LOGIC;
80 data_shaping_R0 : OUT STD_LOGIC;
80 data_shaping_R0 : OUT STD_LOGIC;
81 data_shaping_R1 : OUT STD_LOGIC;
81 data_shaping_R1 : OUT STD_LOGIC;
82 delta_snapshot : OUT STD_LOGIC_VECTOR(delta_vector_size-1 DOWNTO 0);
82 delta_snapshot : OUT STD_LOGIC_VECTOR(delta_vector_size-1 DOWNTO 0);
83 delta_f0 : OUT STD_LOGIC_VECTOR(delta_vector_size-1 DOWNTO 0);
83 delta_f0 : OUT STD_LOGIC_VECTOR(delta_vector_size-1 DOWNTO 0);
84 delta_f0_2 : OUT STD_LOGIC_VECTOR(delta_vector_size_f0_2-1 DOWNTO 0);
84 delta_f0_2 : OUT STD_LOGIC_VECTOR(delta_vector_size_f0_2-1 DOWNTO 0);
85 delta_f1 : OUT STD_LOGIC_VECTOR(delta_vector_size-1 DOWNTO 0);
85 delta_f1 : OUT STD_LOGIC_VECTOR(delta_vector_size-1 DOWNTO 0);
86 delta_f2 : OUT STD_LOGIC_VECTOR(delta_vector_size-1 DOWNTO 0);
86 delta_f2 : OUT STD_LOGIC_VECTOR(delta_vector_size-1 DOWNTO 0);
87 nb_data_by_buffer : OUT STD_LOGIC_VECTOR(nb_data_by_buffer_size-1 DOWNTO 0);
87 nb_data_by_buffer : OUT STD_LOGIC_VECTOR(nb_data_by_buffer_size-1 DOWNTO 0);
88 nb_word_by_buffer : OUT STD_LOGIC_VECTOR(nb_word_by_buffer_size-1 DOWNTO 0);
88 nb_word_by_buffer : OUT STD_LOGIC_VECTOR(nb_word_by_buffer_size-1 DOWNTO 0);
89 nb_snapshot_param : OUT STD_LOGIC_VECTOR(nb_snapshot_param_size-1 DOWNTO 0);
89 nb_snapshot_param : OUT STD_LOGIC_VECTOR(nb_snapshot_param_size-1 DOWNTO 0);
90 enable_f0 : OUT STD_LOGIC;
90 enable_f0 : OUT STD_LOGIC;
91 enable_f1 : OUT STD_LOGIC;
91 enable_f1 : OUT STD_LOGIC;
92 enable_f2 : OUT STD_LOGIC;
92 enable_f2 : OUT STD_LOGIC;
93 enable_f3 : OUT STD_LOGIC;
93 enable_f3 : OUT STD_LOGIC;
94 burst_f0 : OUT STD_LOGIC;
94 burst_f0 : OUT STD_LOGIC;
95 burst_f1 : OUT STD_LOGIC;
95 burst_f1 : OUT STD_LOGIC;
96 burst_f2 : OUT STD_LOGIC;
96 burst_f2 : OUT STD_LOGIC;
97 run : OUT STD_LOGIC;
97 run : OUT STD_LOGIC;
98 addr_data_f0 : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
98 addr_data_f0 : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
99 addr_data_f1 : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
99 addr_data_f1 : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
100 addr_data_f2 : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
100 addr_data_f2 : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
101 addr_data_f3 : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
101 addr_data_f3 : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
102 start_date : OUT STD_LOGIC_VECTOR(30 DOWNTO 0);
102 start_date : OUT STD_LOGIC_VECTOR(30 DOWNTO 0);
103 debug_reg0 : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
103 debug_reg0 : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
104 debug_reg1 : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
104 debug_reg1 : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
105 debug_reg2 : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
105 debug_reg2 : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
106 debug_reg3 : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
106 debug_reg3 : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
107 debug_reg4 : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
107 debug_reg4 : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
108 debug_reg5 : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
108 debug_reg5 : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
109 debug_reg6 : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
109 debug_reg6 : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
110 debug_reg7 : IN STD_LOGIC_VECTOR(31 DOWNTO 0));
110 debug_reg7 : IN STD_LOGIC_VECTOR(31 DOWNTO 0));
111 END COMPONENT;
111 END COMPONENT;
112
112
113 -----------------------------------------------------------------------------
113 -----------------------------------------------------------------------------
114 -- lpp_filter
114 -- lpp_filter
115 -----------------------------------------------------------------------------
115 -----------------------------------------------------------------------------
116 COMPONENT lpp_lfr_filter_LPP_JCP
116 COMPONENT lpp_lfr_filter_LPP_JCP
117 GENERIC (
117 GENERIC (
118 Mem_use : INTEGER);
118 Mem_use : INTEGER);
119 PORT (
119 PORT (
120 sample : IN Samples(7 DOWNTO 0);
120 sample : IN Samples(7 DOWNTO 0);
121 sample_val : IN STD_LOGIC;
121 sample_val : IN STD_LOGIC;
122 clk : IN STD_LOGIC;
122 clk : IN STD_LOGIC;
123 rstn : IN STD_LOGIC;
123 rstn : IN STD_LOGIC;
124 data_shaping_SP0 : IN STD_LOGIC;
124 data_shaping_SP0 : IN STD_LOGIC;
125 data_shaping_SP1 : IN STD_LOGIC;
125 data_shaping_SP1 : IN STD_LOGIC;
126 data_shaping_R0 : IN STD_LOGIC;
126 data_shaping_R0 : IN STD_LOGIC;
127 data_shaping_R1 : IN STD_LOGIC;
127 data_shaping_R1 : IN STD_LOGIC;
128 sample_f0_val : OUT STD_LOGIC;
128 sample_f0_val : OUT STD_LOGIC;
129 sample_f1_val : OUT STD_LOGIC;
129 sample_f1_val : OUT STD_LOGIC;
130 sample_f2_val : OUT STD_LOGIC;
130 sample_f2_val : OUT STD_LOGIC;
131 sample_f3_val : OUT STD_LOGIC;
131 sample_f3_val : OUT STD_LOGIC;
132 sample_f0_wdata : OUT STD_LOGIC_VECTOR((6*16)-1 DOWNTO 0);
132 sample_f0_wdata : OUT STD_LOGIC_VECTOR((6*16)-1 DOWNTO 0);
133 sample_f1_wdata : OUT STD_LOGIC_VECTOR((6*16)-1 DOWNTO 0);
133 sample_f1_wdata : OUT STD_LOGIC_VECTOR((6*16)-1 DOWNTO 0);
134 sample_f2_wdata : OUT STD_LOGIC_VECTOR((6*16)-1 DOWNTO 0);
134 sample_f2_wdata : OUT STD_LOGIC_VECTOR((6*16)-1 DOWNTO 0);
135 sample_f3_wdata : OUT STD_LOGIC_VECTOR((6*16)-1 DOWNTO 0));
135 sample_f3_wdata : OUT STD_LOGIC_VECTOR((6*16)-1 DOWNTO 0));
136 END COMPONENT;
136 END COMPONENT;
137
137
138 -----------------------------------------------------------------------------
138 -----------------------------------------------------------------------------
139 -- lpp_waveform
139 -- lpp_waveform
140 -----------------------------------------------------------------------------
140 -----------------------------------------------------------------------------
141 COMPONENT lpp_waveform_LPP_JCP
141 COMPONENT lpp_waveform_LPP_JCP
142 GENERIC (
142 GENERIC (
143 tech : INTEGER;
143 tech : INTEGER;
144 data_size : INTEGER;
144 data_size : INTEGER;
145 nb_data_by_buffer_size : INTEGER;
145 nb_data_by_buffer_size : INTEGER;
146 nb_word_by_buffer_size : INTEGER;
146 nb_word_by_buffer_size : INTEGER;
147 nb_snapshot_param_size : INTEGER;
147 nb_snapshot_param_size : INTEGER;
148 delta_vector_size : INTEGER;
148 delta_vector_size : INTEGER;
149 delta_vector_size_f0_2 : INTEGER);
149 delta_vector_size_f0_2 : INTEGER);
150 PORT (
150 PORT (
151 clk : IN STD_LOGIC;
151 clk : IN STD_LOGIC;
152 rstn : IN STD_LOGIC;
152 rstn : IN STD_LOGIC;
153 reg_run : IN STD_LOGIC;
153 reg_run : IN STD_LOGIC;
154 reg_start_date : IN STD_LOGIC_VECTOR(30 DOWNTO 0);
154 reg_start_date : IN STD_LOGIC_VECTOR(30 DOWNTO 0);
155 reg_delta_snapshot : IN STD_LOGIC_VECTOR(delta_vector_size-1 DOWNTO 0);
155 reg_delta_snapshot : IN STD_LOGIC_VECTOR(delta_vector_size-1 DOWNTO 0);
156 reg_delta_f0 : IN STD_LOGIC_VECTOR(delta_vector_size-1 DOWNTO 0);
156 reg_delta_f0 : IN STD_LOGIC_VECTOR(delta_vector_size-1 DOWNTO 0);
157 reg_delta_f0_2 : IN STD_LOGIC_VECTOR(delta_vector_size_f0_2-1 DOWNTO 0);
157 reg_delta_f0_2 : IN STD_LOGIC_VECTOR(delta_vector_size_f0_2-1 DOWNTO 0);
158 reg_delta_f1 : IN STD_LOGIC_VECTOR(delta_vector_size-1 DOWNTO 0);
158 reg_delta_f1 : IN STD_LOGIC_VECTOR(delta_vector_size-1 DOWNTO 0);
159 reg_delta_f2 : IN STD_LOGIC_VECTOR(delta_vector_size-1 DOWNTO 0);
159 reg_delta_f2 : IN STD_LOGIC_VECTOR(delta_vector_size-1 DOWNTO 0);
160 enable_f0 : IN STD_LOGIC;
160 enable_f0 : IN STD_LOGIC;
161 enable_f1 : IN STD_LOGIC;
161 enable_f1 : IN STD_LOGIC;
162 enable_f2 : IN STD_LOGIC;
162 enable_f2 : IN STD_LOGIC;
163 enable_f3 : IN STD_LOGIC;
163 enable_f3 : IN STD_LOGIC;
164 burst_f0 : IN STD_LOGIC;
164 burst_f0 : IN STD_LOGIC;
165 burst_f1 : IN STD_LOGIC;
165 burst_f1 : IN STD_LOGIC;
166 burst_f2 : IN STD_LOGIC;
166 burst_f2 : IN STD_LOGIC;
167 nb_data_by_buffer : IN STD_LOGIC_VECTOR(nb_data_by_buffer_size-1 DOWNTO 0);
167 nb_data_by_buffer : IN STD_LOGIC_VECTOR(nb_data_by_buffer_size-1 DOWNTO 0);
168 nb_word_by_buffer : IN STD_LOGIC_VECTOR(nb_word_by_buffer_size-1 DOWNTO 0);
168 nb_word_by_buffer : IN STD_LOGIC_VECTOR(nb_word_by_buffer_size-1 DOWNTO 0);
169 nb_snapshot_param : IN STD_LOGIC_VECTOR(nb_snapshot_param_size-1 DOWNTO 0);
169 nb_snapshot_param : IN STD_LOGIC_VECTOR(nb_snapshot_param_size-1 DOWNTO 0);
170 status_full : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
170 status_full : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
171 status_full_ack : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
171 status_full_ack : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
172 status_full_err : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
172 status_full_err : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
173 status_new_err : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
173 status_new_err : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
174 coarse_time : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
174 coarse_time : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
175 fine_time : IN STD_LOGIC_VECTOR(15 DOWNTO 0);
175 fine_time : IN STD_LOGIC_VECTOR(15 DOWNTO 0);
176 addr_data_f0 : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
176 addr_data_f0 : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
177 data_f0_in_valid : IN STD_LOGIC;
177 data_f0_in_valid : IN STD_LOGIC;
178 data_f0_in : IN STD_LOGIC_VECTOR(data_size-1 DOWNTO 0);
178 data_f0_in : IN STD_LOGIC_VECTOR(data_size-1 DOWNTO 0);
179 addr_data_f1 : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
179 addr_data_f1 : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
180 data_f1_in_valid : IN STD_LOGIC;
180 data_f1_in_valid : IN STD_LOGIC;
181 data_f1_in : IN STD_LOGIC_VECTOR(data_size-1 DOWNTO 0);
181 data_f1_in : IN STD_LOGIC_VECTOR(data_size-1 DOWNTO 0);
182 addr_data_f2 : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
182 addr_data_f2 : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
183 data_f2_in_valid : IN STD_LOGIC;
183 data_f2_in_valid : IN STD_LOGIC;
184 data_f2_in : IN STD_LOGIC_VECTOR(data_size-1 DOWNTO 0);
184 data_f2_in : IN STD_LOGIC_VECTOR(data_size-1 DOWNTO 0);
185 addr_data_f3 : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
185 addr_data_f3 : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
186 data_f3_in_valid : IN STD_LOGIC;
186 data_f3_in_valid : IN STD_LOGIC;
187 data_f3_in : IN STD_LOGIC_VECTOR(data_size-1 DOWNTO 0);
187 data_f3_in : IN STD_LOGIC_VECTOR(data_size-1 DOWNTO 0);
188 data_f0_addr_out : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
188 data_f0_addr_out : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
189 data_f0_data_out : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
189 data_f0_data_out : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
190 data_f0_data_out_valid : OUT STD_LOGIC;
190 data_f0_data_out_valid : OUT STD_LOGIC;
191 data_f0_data_out_valid_burst : OUT STD_LOGIC;
191 data_f0_data_out_valid_burst : OUT STD_LOGIC;
192 data_f0_data_out_ren : IN STD_LOGIC;
192 data_f0_data_out_ren : IN STD_LOGIC;
193 data_f1_addr_out : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
193 data_f1_addr_out : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
194 data_f1_data_out : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
194 data_f1_data_out : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
195 data_f1_data_out_valid : OUT STD_LOGIC;
195 data_f1_data_out_valid : OUT STD_LOGIC;
196 data_f1_data_out_valid_burst : OUT STD_LOGIC;
196 data_f1_data_out_valid_burst : OUT STD_LOGIC;
197 data_f1_data_out_ren : IN STD_LOGIC;
197 data_f1_data_out_ren : IN STD_LOGIC;
198 data_f2_addr_out : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
198 data_f2_addr_out : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
199 data_f2_data_out : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
199 data_f2_data_out : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
200 data_f2_data_out_valid : OUT STD_LOGIC;
200 data_f2_data_out_valid : OUT STD_LOGIC;
201 data_f2_data_out_valid_burst : OUT STD_LOGIC;
201 data_f2_data_out_valid_burst : OUT STD_LOGIC;
202 data_f2_data_out_ren : IN STD_LOGIC;
202 data_f2_data_out_ren : IN STD_LOGIC;
203 data_f3_addr_out : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
203 data_f3_addr_out : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
204 data_f3_data_out : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
204 data_f3_data_out : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
205 data_f3_data_out_valid : OUT STD_LOGIC;
205 data_f3_data_out_valid : OUT STD_LOGIC;
206 data_f3_data_out_valid_burst : OUT STD_LOGIC;
206 data_f3_data_out_valid_burst : OUT STD_LOGIC;
207 data_f3_data_out_ren : IN STD_LOGIC;
207 data_f3_data_out_ren : IN STD_LOGIC;
208 observation_reg : OUT STD_LOGIC_VECTOR(31 DOWNTO 0));
208 observation_reg : OUT STD_LOGIC_VECTOR(31 DOWNTO 0));
209 END COMPONENT;
209 END COMPONENT;
210
211 -----------------------------------------------------------------------------
212 -- lpp_matrix_spectral
213 -----------------------------------------------------------------------------
214 COMPONENT lpp_lfr_ms_LPP_JCP
215 GENERIC (
216 Mem_use : INTEGER);
217 PORT (
218 clk : IN STD_LOGIC;
219 rstn : IN STD_LOGIC;
220 coarse_time : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
221 fine_time : IN STD_LOGIC_VECTOR(15 DOWNTO 0);
222 sample_f0_wen : IN STD_LOGIC_VECTOR(4 DOWNTO 0);
223 sample_f0_wdata : IN STD_LOGIC_VECTOR((5*16)-1 DOWNTO 0);
224 sample_f1_wen : IN STD_LOGIC_VECTOR(4 DOWNTO 0);
225 sample_f1_wdata : IN STD_LOGIC_VECTOR((5*16)-1 DOWNTO 0);
226 sample_f3_wen : IN STD_LOGIC_VECTOR(4 DOWNTO 0);
227 sample_f3_wdata : IN STD_LOGIC_VECTOR((5*16)-1 DOWNTO 0);
228 dma_addr : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
229 dma_data : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
230 dma_valid : OUT STD_LOGIC;
231 dma_valid_burst : OUT STD_LOGIC;
232 dma_ren : IN STD_LOGIC;
233 dma_done : IN STD_LOGIC;
234 ready_matrix_f0_0 : OUT STD_LOGIC;
235 ready_matrix_f0_1 : OUT STD_LOGIC;
236 ready_matrix_f1 : OUT STD_LOGIC;
237 ready_matrix_f2 : OUT STD_LOGIC;
238 error_anticipating_empty_fifo : OUT STD_LOGIC;
239 error_bad_component_error : OUT STD_LOGIC;
240 debug_reg : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
241 status_ready_matrix_f0_0 : IN STD_LOGIC;
242 status_ready_matrix_f0_1 : IN STD_LOGIC;
243 status_ready_matrix_f1 : IN STD_LOGIC;
244 status_ready_matrix_f2 : IN STD_LOGIC;
245 status_error_anticipating_empty_fifo : IN STD_LOGIC;
246 status_error_bad_component_error : IN STD_LOGIC;
247 config_active_interruption_onNewMatrix : IN STD_LOGIC;
248 config_active_interruption_onError : IN STD_LOGIC;
249 addr_matrix_f0_0 : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
250 addr_matrix_f0_1 : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
251 addr_matrix_f1 : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
252 addr_matrix_f2 : IN STD_LOGIC_VECTOR(31 DOWNTO 0));
253 END COMPONENT;
210
254
211 END;
255 END;
@@ -1,25 +1,26
1 AMBA_Peripherals.vhd
1 AMBA_Peripherals.vhd
2 apb_lfr_time_managment/lpp_lfr_time_management.vhd
2 apb_lfr_time_managment/lpp_lfr_time_management.vhd
3 apb_lfr_time_managment/apb_lfr_time_management.vhd
3 apb_lfr_time_managment/apb_lfr_time_management.vhd
4 apb_lfr_time_managment/lfr_time_management.vhd
4 apb_lfr_time_managment/lfr_time_management.vhd
5 apb_lfr_time_managment/lpp_counter.vhd
5 apb_lfr_time_managment/lpp_counter.vhd
6 lpp_lfr/lpp_lfr_pkg.vhd
6 lpp_lfr/lpp_lfr_pkg.vhd
7 lpp_lfr/lpp_lfr.vhd
7 lpp_lfr/lpp_lfr.vhd
8 lpp_lfr/lpp_lfr_apbreg.vhd
8 lpp_lfr/lpp_lfr_apbreg.vhd
9 lpp_lfr/lpp_filter/FILTERcfg.vhd
9 lpp_lfr/lpp_filter/FILTERcfg.vhd
10 lpp_lfr/lpp_filter/lpp_lfr_filter.vhd
10 lpp_lfr/lpp_filter/lpp_lfr_filter.vhd
11 lpp_lfr/lpp_waveform/lpp_waveform_pkg.vhd
11 lpp_lfr/lpp_waveform/lpp_waveform_pkg.vhd
12 lpp_lfr/lpp_waveform/lpp_waveform.vhd
12 lpp_lfr/lpp_waveform/lpp_waveform.vhd
13 lpp_lfr/lpp_waveform/lpp_waveform_burst.vhd
13 lpp_lfr/lpp_waveform/lpp_waveform_burst.vhd
14 lpp_lfr/lpp_waveform/lpp_waveform_snapshot.vhd
14 lpp_lfr/lpp_waveform/lpp_waveform_snapshot.vhd
15 lpp_lfr/lpp_waveform/lpp_waveform_snapshot_controler.vhd
15 lpp_lfr/lpp_waveform/lpp_waveform_snapshot_controler.vhd
16 lpp_lfr/lpp_waveform/lpp_waveform_dma_genvalid.vhd
16 lpp_lfr/lpp_waveform/lpp_waveform_dma_genvalid.vhd
17 lpp_lfr/lpp_waveform/lpp_waveform_fifo_arbiter.vhd
17 lpp_lfr/lpp_waveform/lpp_waveform_fifo_arbiter.vhd
18 lpp_lfr/lpp_waveform/lpp_waveform_fifo_arbiter_reg.vhd
18 lpp_lfr/lpp_waveform/lpp_waveform_fifo_arbiter_reg.vhd
19 lpp_lfr/lpp_waveform/lpp_waveform_genaddress.vhd
19 lpp_lfr/lpp_waveform/lpp_waveform_genaddress.vhd
20 lpp_lfr/lpp_matrix_spectral/lpp_lfr_ms.vhd
20 AHB_DMA/lpp_dma_pkg.vhd
21 AHB_DMA/lpp_dma_pkg.vhd
21 AHB_DMA/lpp_dma_send_1word.vhd
22 AHB_DMA/lpp_dma_send_1word.vhd
22 AHB_DMA/lpp_dma_send_16word.vhd
23 AHB_DMA/lpp_dma_send_16word.vhd
23 AHB_DMA/lpp_dma_singleOrBurst.vhd
24 AHB_DMA/lpp_dma_singleOrBurst.vhd
24
25
25
26
@@ -1,77 +1,77
1 echo "======================================================================================="
1 echo "======================================================================================="
2 echo "---------------------------------------------------------------------------------------"
2 echo "---------------------------------------------------------------------------------------"
3 echo " LPP VHDL APB Devices List Updater "
3 echo " LPP VHDL APB Devices List Updater "
4 echo " Copyright (C) 2010 Laboratory of Plasmas Physic. "
4 echo " Copyright (C) 2010 Laboratory of Plasmas Physic. "
5 echo "======================================================================================="
5 echo "======================================================================================="
6 echo '----------------------------------------------------------------------------------------
6 echo '----------------------------------------------------------------------------------------
7 This file is a part of the LPP VHDL IP LIBRARY
7 This file is a part of the LPP VHDL IP LIBRARY
8 Copyright (C) 2010, Laboratory of Plasmas Physic - CNRS
8 Copyright (C) 2010, Laboratory of Plasmas Physic - CNRS
9
9
10 This program is free software; you can redistribute it and/or modify
10 This program is free software; you can redistribute it and/or modify
11 it under the terms of the GNU General Public License as published by
11 it under the terms of the GNU General Public License as published by
12 the Free Software Foundation; either version 3 of the License, or
12 the Free Software Foundation; either version 3 of the License, or
13 (at your option) any later version.
13 (at your option) any later version.
14
14
15 This program is distributed in the hope that it will be useful,
15 This program is distributed in the hope that it will be useful,
16 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 but WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 GNU General Public License for more details.
18 GNU General Public License for more details.
19
19
20 You should have received a copy of the GNU General Public License
20 You should have received a copy of the GNU General Public License
21 along with this program; if not, write to the Free Software
21 along with this program; if not, write to the Free Software
22 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
23 ----------------------------------------------------------------------------------------'
23 ----------------------------------------------------------------------------------------'
24 echo
24 echo
25 echo
25 echo
26 echo
26 echo
27
27
28 LPP_PATCHPATH=`pwd -L`
28 LPP_PATCHPATH=`pwd -L`
29
29
30 cd $LPP_PATCHPATH/lib/lpp
30 cd $LPP_PATCHPATH/lib/lpp
31
31
32
32
33 VHDFileStart=$LPP_PATCHPATH/APB_DEVICES/VHDListSTART
33 VHDFileStart=$LPP_PATCHPATH/APB_DEVICES/VHDListSTART
34 VHDFileEnd=$LPP_PATCHPATH/APB_DEVICES/VHDListEND
34 VHDFileEnd=$LPP_PATCHPATH/APB_DEVICES/VHDListEND
35
35
36 CFileStart=$LPP_PATCHPATH/APB_DEVICES/CListSTART
36 CFileStart=$LPP_PATCHPATH/APB_DEVICES/CListSTART
37 CFileEnd=$LPP_PATCHPATH/APB_DEVICES/CListEND
37 CFileEnd=$LPP_PATCHPATH/APB_DEVICES/CListEND
38
38
39 ListFILE=$LPP_PATCHPATH/APB_DEVICES/apb_devices_list.txt
39 ListFILE=$LPP_PATCHPATH/APB_DEVICES/apb_devices_list.txt
40
40
41 VHDListFILE=$LPP_PATCHPATH/lib/lpp/lpp_amba/apb_devices_list.vhd
41 VHDListFILE=$LPP_PATCHPATH/lib/VHDLIB/AMBA_Peripherals/apb_devices_list.vhd
42 CListFILE=$LPP_PATCHPATH/LPP_drivers/libsrc/AMBA/apb_devices_list.h
42 CListFILE=$LPP_PATCHPATH/LPP_drivers/libsrc/AMBA/apb_devices_list.h
43
43
44
44
45 cat $VHDFileStart>$VHDListFILE
45 cat $VHDFileStart>$VHDListFILE
46 cat $CFileStart>$CListFILE
46 cat $CFileStart>$CListFILE
47
47
48 grep vendor $ListFILE | sed "s/vendor /constant /" | sed "s/.* /& : amba_vendor_type := 16#/" | sed "s/.*#*/&#;/" >> $VHDListFILE
48 grep vendor $ListFILE | sed "s/vendor /constant /" | sed "s/.* /& : amba_vendor_type := 16#/" | sed "s/.*#*/&#;/" >> $VHDListFILE
49 grep vendor $ListFILE | sed "s/vendor /#define /" | sed "s/.* /& 0x/" >> $CListFILE
49 grep vendor $ListFILE | sed "s/vendor /#define /" | sed "s/.* /& 0x/" >> $CListFILE
50
50
51 echo " ">>$VHDListFILE
51 echo " ">>$VHDListFILE
52 echo " ">>$CListFILE
52 echo " ">>$CListFILE
53
53
54 grep device $ListFILE | sed "s/device /constant /" | sed "s/.* /& : amba_device_type := 16#/" | sed "s/.*#*/&#;/" >> $VHDListFILE
54 grep device $ListFILE | sed "s/device /constant /" | sed "s/.* /& : amba_device_type := 16#/" | sed "s/.*#*/&#;/" >> $VHDListFILE
55 grep device $ListFILE | sed "s/device /#define /" | sed "s/.* /& 0x/" >> $CListFILE
55 grep device $ListFILE | sed "s/device /#define /" | sed "s/.* /& 0x/" >> $CListFILE
56
56
57 cat $VHDFileEnd>>$VHDListFILE
57 cat $VHDFileEnd>>$VHDListFILE
58 cat $CFileEnd>>$CListFILE
58 cat $CFileEnd>>$CListFILE
59
59
60 sh $LPP_PATCHPATH/scripts/GPL_Patcher.sh vhd $LPP_PATCHPATH/lib/lpp/lpp_amba/
60 sh $LPP_PATCHPATH/scripts/GPL_Patcher.sh vhd $LPP_PATCHPATH/lib/lpp/lpp_amba/
61 sh $LPP_PATCHPATH/scripts/GPL_Patcher.sh h $LPP_PATCHPATH/LPP_drivers/libsrc/AMBA/
61 sh $LPP_PATCHPATH/scripts/GPL_Patcher.sh h $LPP_PATCHPATH/LPP_drivers/libsrc/AMBA/
62
62
63 cd $LPP_PATCHPATH
63 cd $LPP_PATCHPATH
64
64
65
65
66
66
67
67
68
68
69
69
70
70
71
71
72
72
73
73
74
74
75
75
76
76
77
77
@@ -1,73 +1,73
1 echo "======================================================================================="
1 echo "======================================================================================="
2 echo "---------------------------------------------------------------------------------------"
2 echo "---------------------------------------------------------------------------------------"
3 echo " LPP's GRLIB GLOBAL PATCHER "
3 echo " LPP's GRLIB GLOBAL PATCHER "
4 echo " Copyright (C) 2013 Laboratory of Plasmas Physic. "
4 echo " Copyright (C) 2013 Laboratory of Plasmas Physic. "
5 echo "======================================================================================="
5 echo "======================================================================================="
6 echo '------------------------------------------------------------------------------
6 echo '------------------------------------------------------------------------------
7 -- This file is a part of the LPP VHDL IP LIBRARY
7 -- This file is a part of the LPP VHDL IP LIBRARY
8 -- Copyright (C) 2009 - 2010, Laboratory of Plasmas Physic - CNRS
8 -- Copyright (C) 2009 - 2010, Laboratory of Plasmas Physic - CNRS
9 --
9 --
10 -- This program is free software; you can redistribute it and/or modify
10 -- This program is free software; you can redistribute it and/or modify
11 -- it under the terms of the GNU General Public License as published by
11 -- it under the terms of the GNU General Public License as published by
12 -- the Free Software Foundation; either version 3 of the License, or
12 -- the Free Software Foundation; either version 3 of the License, or
13 -- (at your option) any later version.
13 -- (at your option) any later version.
14 --
14 --
15 -- This program is distributed in the hope that it will be useful,
15 -- This program is distributed in the hope that it will be useful,
16 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
16 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
17 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 -- GNU General Public License for more details.
18 -- GNU General Public License for more details.
19 --
19 --
20 -- You should have received a copy of the GNU General Public License
20 -- You should have received a copy of the GNU General Public License
21 -- along with this program; if not, write to the Free Software
21 -- along with this program; if not, write to the Free Software
22 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
23 -------------------------------------------------------------------------------'
23 -------------------------------------------------------------------------------'
24 echo
24 echo
25 echo
25 echo
26 echo
26 echo
27
27
28
28
29 VHDLIB_LIB_PATH=`pwd -L`
29 VHDLIB_LIB_PATH=`pwd -L`
30 source $VHDLIB_LIB_PATH/scripts/lpp_bash_functions.sh
30 source $VHDLIB_LIB_PATH/scripts/lpp_bash_functions.sh
31 GRLIBPATH=$1
31 GRLIBPATH=$1
32
32
33 if [ -d "$GRLIBPATH" ]; then
33 if [ -d "$GRLIBPATH" ]; then
34 LPP_PATCHPATH=`relpath $GRLIBPATH/lib $VHDLIB_LIB_PATH`
34 LPP_PATCHPATH=`relpath $GRLIBPATH/lib $VHDLIB_LIB_PATH`
35 echo $LPP_PATCHPATH
35 echo $LPP_PATCHPATH
36 if [ -d "$GRLIBPATH/lib" ]; then
36 if [ -d "$GRLIBPATH/lib" ]; then
37 if [ -d "$GRLIBPATH/designs" ]; then
37 if [ -d "$GRLIBPATH/designs" ]; then
38 if [ -d "$GRLIBPATH/boards" ]; then
38 if [ -d "$GRLIBPATH/boards" ]; then
39
39
40 echo "Patch $1/lib/libs.txt..."
40 echo "Patch $1/lib/libs.txt..."
41 if(grep -q $LPP_PATCHPATH/lib/lpp $1/lib/libs.txt); then
41 if(grep -q $LPP_PATCHPATH/lib/lpp $1/lib/libs.txt); then
42 echo "No need to Patch $1/lib/libs.txt..."
42 echo "No need to Patch $1/lib/libs.txt..."
43 else
43 else
44 echo $LPP_PATCHPATH/lib/lpp >>$1/lib/libs.txt
44 echo $LPP_PATCHPATH/lib/VHDLIB >>$1/lib/libs.txt
45 fi
45 fi
46 if(grep -q $LPP_PATCHPATH/lib/staging $1/lib/libs.txt); then
46 if(grep -q $LPP_PATCHPATH/lib/staging $1/lib/libs.txt); then
47 echo "No need to Patch $1/lib/libs.txt..."
47 echo "No need to Patch $1/lib/libs.txt..."
48 else
48 else
49 echo $LPP_PATCHPATH/lib/staging >>$1/lib/libs.txt
49 echo $LPP_PATCHPATH/lib/staging >>$1/lib/libs.txt
50 fi
50 fi
51 echo
51 echo
52 echo
52 echo
53 echo
53 echo
54 else
54 else
55 echo "I can't find GRLIB in $1"
55 echo "I can't find GRLIB in $1"
56 fi
56 fi
57
57
58 else
58 else
59 echo "I can't find GRLIB in $1"
59 echo "I can't find GRLIB in $1"
60 fi
60 fi
61 else
61 else
62 echo "I can't find GRLIB in $1"
62 echo "I can't find GRLIB in $1"
63 fi
63 fi
64
64
65 else
65 else
66 echo "I can't find GRLIB in $1"
66 echo "I can't find GRLIB in $1"
67 fi
67 fi
68
68
69
69
70
70
71
71
72
72
73
73
General Comments 0
You need to be logged in to leave comments. Login now