##// END OF EJS Templates
Update AD CONV for RHF1401 (LFR-EM) with filter
pellion -
r423:fe8f46873298 JC
parent child
Show More
@@ -1,368 +1,372
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 : Alexis Jeandet
19 -- Author : Alexis Jeandet
20 -- Mail : alexis.jeandet@lpp.polytechnique.fr
20 -- Mail : alexis.jeandet@lpp.polytechnique.fr
21 ----------------------------------------------------------------------------
21 ----------------------------------------------------------------------------
22
22
23 LIBRARY IEEE;
23 LIBRARY IEEE;
24 USE IEEE.STD_LOGIC_1164.ALL;
24 USE IEEE.STD_LOGIC_1164.ALL;
25 LIBRARY grlib;
25 LIBRARY grlib;
26 USE grlib.amba.ALL;
26 USE grlib.amba.ALL;
27 USE grlib.stdlib.ALL;
27 USE grlib.stdlib.ALL;
28 USE grlib.devices.ALL;
28 USE grlib.devices.ALL;
29
29
30 PACKAGE lpp_ad_conv IS
30 PACKAGE lpp_ad_conv IS
31
31
32
32
33 --CONSTANT AD7688 : INTEGER := 0;
33 --CONSTANT AD7688 : INTEGER := 0;
34 --CONSTANT ADS7886 : INTEGER := 1;
34 --CONSTANT ADS7886 : INTEGER := 1;
35
35
36
36
37 --TYPE AD7688_out IS
37 --TYPE AD7688_out IS
38 --RECORD
38 --RECORD
39 -- CNV : STD_LOGIC;
39 -- CNV : STD_LOGIC;
40 -- SCK : STD_LOGIC;
40 -- SCK : STD_LOGIC;
41 --END RECORD;
41 --END RECORD;
42
42
43 --TYPE AD7688_in_element IS
43 --TYPE AD7688_in_element IS
44 --RECORD
44 --RECORD
45 -- SDI : STD_LOGIC;
45 -- SDI : STD_LOGIC;
46 --END RECORD;
46 --END RECORD;
47
47
48 --TYPE AD7688_in IS ARRAY(NATURAL RANGE <>) OF AD7688_in_element;
48 --TYPE AD7688_in IS ARRAY(NATURAL RANGE <>) OF AD7688_in_element;
49
49
50 TYPE Samples IS ARRAY(NATURAL RANGE <>) OF STD_LOGIC_VECTOR(15 DOWNTO 0);
50 TYPE Samples IS ARRAY(NATURAL RANGE <>) OF STD_LOGIC_VECTOR(15 DOWNTO 0);
51
51
52 SUBTYPE Samples24 IS STD_LOGIC_VECTOR(23 DOWNTO 0);
52 SUBTYPE Samples24 IS STD_LOGIC_VECTOR(23 DOWNTO 0);
53
53
54 SUBTYPE Samples16 IS STD_LOGIC_VECTOR(15 DOWNTO 0);
54 SUBTYPE Samples16 IS STD_LOGIC_VECTOR(15 DOWNTO 0);
55
55
56 SUBTYPE Samples15 IS STD_LOGIC_VECTOR(14 DOWNTO 0);
57
56 SUBTYPE Samples14 IS STD_LOGIC_VECTOR(13 DOWNTO 0);
58 SUBTYPE Samples14 IS STD_LOGIC_VECTOR(13 DOWNTO 0);
57
59
58 SUBTYPE Samples12 IS STD_LOGIC_VECTOR(11 DOWNTO 0);
60 SUBTYPE Samples12 IS STD_LOGIC_VECTOR(11 DOWNTO 0);
59
61
60 SUBTYPE Samples10 IS STD_LOGIC_VECTOR(9 DOWNTO 0);
62 SUBTYPE Samples10 IS STD_LOGIC_VECTOR(9 DOWNTO 0);
61
63
62 SUBTYPE Samples8 IS STD_LOGIC_VECTOR(7 DOWNTO 0);
64 SUBTYPE Samples8 IS STD_LOGIC_VECTOR(7 DOWNTO 0);
63
65
64 TYPE Samples24v IS ARRAY(NATURAL RANGE <>) OF Samples24;
66 TYPE Samples24v IS ARRAY(NATURAL RANGE <>) OF Samples24;
65
67
66 TYPE Samples16v IS ARRAY(NATURAL RANGE <>) OF Samples16;
68 TYPE Samples16v IS ARRAY(NATURAL RANGE <>) OF Samples16;
69
70 TYPE Samples15v IS ARRAY(NATURAL RANGE <>) OF Samples15;
67
71
68 TYPE Samples14v IS ARRAY(NATURAL RANGE <>) OF Samples14;
72 TYPE Samples14v IS ARRAY(NATURAL RANGE <>) OF Samples14;
69
73
70 TYPE Samples12v IS ARRAY(NATURAL RANGE <>) OF Samples12;
74 TYPE Samples12v IS ARRAY(NATURAL RANGE <>) OF Samples12;
71
75
72 TYPE Samples10v IS ARRAY(NATURAL RANGE <>) OF Samples10;
76 TYPE Samples10v IS ARRAY(NATURAL RANGE <>) OF Samples10;
73
77
74 TYPE Samples8v IS ARRAY(NATURAL RANGE <>) OF Samples8;
78 TYPE Samples8v IS ARRAY(NATURAL RANGE <>) OF Samples8;
75
79
76 COMPONENT AD7688_drvr
80 COMPONENT AD7688_drvr
77 GENERIC (
81 GENERIC (
78 ChanelCount : INTEGER;
82 ChanelCount : INTEGER;
79 ncycle_cnv_high : INTEGER := 79;
83 ncycle_cnv_high : INTEGER := 79;
80 ncycle_cnv : INTEGER := 500);
84 ncycle_cnv : INTEGER := 500);
81 PORT (
85 PORT (
82 cnv_clk : IN STD_LOGIC;
86 cnv_clk : IN STD_LOGIC;
83 cnv_rstn : IN STD_LOGIC;
87 cnv_rstn : IN STD_LOGIC;
84 cnv_run : IN STD_LOGIC;
88 cnv_run : IN STD_LOGIC;
85 cnv : OUT STD_LOGIC;
89 cnv : OUT STD_LOGIC;
86 clk : IN STD_LOGIC;
90 clk : IN STD_LOGIC;
87 rstn : IN STD_LOGIC;
91 rstn : IN STD_LOGIC;
88 sck : OUT STD_LOGIC;
92 sck : OUT STD_LOGIC;
89 sdo : IN STD_LOGIC_VECTOR(ChanelCount-1 DOWNTO 0);
93 sdo : IN STD_LOGIC_VECTOR(ChanelCount-1 DOWNTO 0);
90 sample : OUT Samples(ChanelCount-1 DOWNTO 0);
94 sample : OUT Samples(ChanelCount-1 DOWNTO 0);
91 sample_val : OUT STD_LOGIC);
95 sample_val : OUT STD_LOGIC);
92 END COMPONENT;
96 END COMPONENT;
93
97
94 COMPONENT RHF1401_drvr IS
98 COMPONENT RHF1401_drvr IS
95 GENERIC(
99 GENERIC(
96 ChanelCount : INTEGER := 8);
100 ChanelCount : INTEGER := 8);
97 PORT (
101 PORT (
98 cnv_clk : IN STD_LOGIC;
102 cnv_clk : IN STD_LOGIC;
99 clk : IN STD_LOGIC;
103 clk : IN STD_LOGIC;
100 rstn : IN STD_LOGIC;
104 rstn : IN STD_LOGIC;
101 ADC_data : IN Samples14;
105 ADC_data : IN Samples14;
102 --ADC_smpclk : OUT STD_LOGIC;
106 --ADC_smpclk : OUT STD_LOGIC;
103 ADC_nOE : OUT STD_LOGIC_VECTOR(ChanelCount-1 DOWNTO 0);
107 ADC_nOE : OUT STD_LOGIC_VECTOR(ChanelCount-1 DOWNTO 0);
104 sample : OUT Samples14v(ChanelCount-1 DOWNTO 0);
108 sample : OUT Samples14v(ChanelCount-1 DOWNTO 0);
105 sample_val : OUT STD_LOGIC
109 sample_val : OUT STD_LOGIC
106 );
110 );
107 END COMPONENT;
111 END COMPONENT;
108
112
109 COMPONENT top_ad_conv_RHF1401
113 COMPONENT top_ad_conv_RHF1401
110 GENERIC (
114 GENERIC (
111 ChanelCount : INTEGER;
115 ChanelCount : INTEGER;
112 ncycle_cnv_high : INTEGER := 79;
116 ncycle_cnv_high : INTEGER := 79;
113 ncycle_cnv : INTEGER := 500);
117 ncycle_cnv : INTEGER := 500);
114 PORT (
118 PORT (
115 cnv_clk : IN STD_LOGIC;
119 cnv_clk : IN STD_LOGIC;
116 cnv_rstn : IN STD_LOGIC;
120 cnv_rstn : IN STD_LOGIC;
117 cnv : OUT STD_LOGIC;
121 cnv : OUT STD_LOGIC;
118 clk : IN STD_LOGIC;
122 clk : IN STD_LOGIC;
119 rstn : IN STD_LOGIC;
123 rstn : IN STD_LOGIC;
120 ADC_data : IN Samples14;
124 ADC_data : IN Samples14;
121 ADC_nOE : OUT STD_LOGIC_VECTOR(ChanelCount-1 DOWNTO 0);
125 ADC_nOE : OUT STD_LOGIC_VECTOR(ChanelCount-1 DOWNTO 0);
122 sample : OUT Samples14v(ChanelCount-1 DOWNTO 0);
126 sample : OUT Samples14v(ChanelCount-1 DOWNTO 0);
123 sample_val : OUT STD_LOGIC);
127 sample_val : OUT STD_LOGIC);
124 END COMPONENT;
128 END COMPONENT;
125
129
126
130
127 COMPONENT AD7688_drvr_sync
131 COMPONENT AD7688_drvr_sync
128 GENERIC (
132 GENERIC (
129 ChanelCount : INTEGER;
133 ChanelCount : INTEGER;
130 ncycle_cnv_high : INTEGER;
134 ncycle_cnv_high : INTEGER;
131 ncycle_cnv : INTEGER);
135 ncycle_cnv : INTEGER);
132 PORT (
136 PORT (
133 cnv_clk : IN STD_LOGIC;
137 cnv_clk : IN STD_LOGIC;
134 cnv_rstn : IN STD_LOGIC;
138 cnv_rstn : IN STD_LOGIC;
135 cnv_run : IN STD_LOGIC;
139 cnv_run : IN STD_LOGIC;
136 cnv : OUT STD_LOGIC;
140 cnv : OUT STD_LOGIC;
137 sck : OUT STD_LOGIC;
141 sck : OUT STD_LOGIC;
138 sdo : IN STD_LOGIC_VECTOR(ChanelCount-1 DOWNTO 0);
142 sdo : IN STD_LOGIC_VECTOR(ChanelCount-1 DOWNTO 0);
139 sample : OUT Samples(ChanelCount-1 DOWNTO 0);
143 sample : OUT Samples(ChanelCount-1 DOWNTO 0);
140 sample_val : OUT STD_LOGIC);
144 sample_val : OUT STD_LOGIC);
141 END COMPONENT;
145 END COMPONENT;
142
146
143 COMPONENT TestModule_RHF1401
147 COMPONENT TestModule_RHF1401
144 GENERIC (
148 GENERIC (
145 freq : INTEGER;
149 freq : INTEGER;
146 amplitude : INTEGER;
150 amplitude : INTEGER;
147 impulsion : INTEGER);
151 impulsion : INTEGER);
148 PORT (
152 PORT (
149 ADC_smpclk : IN STD_LOGIC;
153 ADC_smpclk : IN STD_LOGIC;
150 ADC_OEB_bar : IN STD_LOGIC;
154 ADC_OEB_bar : IN STD_LOGIC;
151 ADC_data : OUT STD_LOGIC_VECTOR(13 DOWNTO 0));
155 ADC_data : OUT STD_LOGIC_VECTOR(13 DOWNTO 0));
152 END COMPONENT;
156 END COMPONENT;
153
157
154 --COMPONENT AD7688_drvr IS
158 --COMPONENT AD7688_drvr IS
155 -- GENERIC(ChanelCount : INTEGER;
159 -- GENERIC(ChanelCount : INTEGER;
156 -- clkkHz : INTEGER);
160 -- clkkHz : INTEGER);
157 -- PORT (clk : IN STD_LOGIC;
161 -- PORT (clk : IN STD_LOGIC;
158 -- rstn : IN STD_LOGIC;
162 -- rstn : IN STD_LOGIC;
159 -- enable : IN STD_LOGIC;
163 -- enable : IN STD_LOGIC;
160 -- smplClk : IN STD_LOGIC;
164 -- smplClk : IN STD_LOGIC;
161 -- DataReady : OUT STD_LOGIC;
165 -- DataReady : OUT STD_LOGIC;
162 -- smpout : OUT Samples_out(ChanelCount-1 DOWNTO 0);
166 -- smpout : OUT Samples_out(ChanelCount-1 DOWNTO 0);
163 -- AD_in : IN AD7688_in(ChanelCount-1 DOWNTO 0);
167 -- AD_in : IN AD7688_in(ChanelCount-1 DOWNTO 0);
164 -- AD_out : OUT AD7688_out);
168 -- AD_out : OUT AD7688_out);
165 --END COMPONENT;
169 --END COMPONENT;
166
170
167
171
168 --COMPONENT AD7688_spi_if IS
172 --COMPONENT AD7688_spi_if IS
169 -- GENERIC(ChanelCount : INTEGER);
173 -- GENERIC(ChanelCount : INTEGER);
170 -- PORT(clk : IN STD_LOGIC;
174 -- PORT(clk : IN STD_LOGIC;
171 -- reset : IN STD_LOGIC;
175 -- reset : IN STD_LOGIC;
172 -- cnv : IN STD_LOGIC;
176 -- cnv : IN STD_LOGIC;
173 -- DataReady : OUT STD_LOGIC;
177 -- DataReady : OUT STD_LOGIC;
174 -- sdi : IN AD7688_in(ChanelCount-1 DOWNTO 0);
178 -- sdi : IN AD7688_in(ChanelCount-1 DOWNTO 0);
175 -- smpout : OUT Samples_out(ChanelCount-1 DOWNTO 0)
179 -- smpout : OUT Samples_out(ChanelCount-1 DOWNTO 0)
176 -- );
180 -- );
177 --END COMPONENT;
181 --END COMPONENT;
178
182
179
183
180 --COMPONENT lpp_apb_ad_conv
184 --COMPONENT lpp_apb_ad_conv
181 -- GENERIC(
185 -- GENERIC(
182 -- pindex : INTEGER := 0;
186 -- pindex : INTEGER := 0;
183 -- paddr : INTEGER := 0;
187 -- paddr : INTEGER := 0;
184 -- pmask : INTEGER := 16#fff#;
188 -- pmask : INTEGER := 16#fff#;
185 -- pirq : INTEGER := 0;
189 -- pirq : INTEGER := 0;
186 -- abits : INTEGER := 8;
190 -- abits : INTEGER := 8;
187 -- ChanelCount : INTEGER := 1;
191 -- ChanelCount : INTEGER := 1;
188 -- clkkHz : INTEGER := 50000;
192 -- clkkHz : INTEGER := 50000;
189 -- smpClkHz : INTEGER := 100;
193 -- smpClkHz : INTEGER := 100;
190 -- ADCref : INTEGER := AD7688);
194 -- ADCref : INTEGER := AD7688);
191 -- PORT (
195 -- PORT (
192 -- clk : IN STD_LOGIC;
196 -- clk : IN STD_LOGIC;
193 -- reset : IN STD_LOGIC;
197 -- reset : IN STD_LOGIC;
194 -- apbi : IN apb_slv_in_type;
198 -- apbi : IN apb_slv_in_type;
195 -- apbo : OUT apb_slv_out_type;
199 -- apbo : OUT apb_slv_out_type;
196 -- AD_in : IN AD7688_in(ChanelCount-1 DOWNTO 0);
200 -- AD_in : IN AD7688_in(ChanelCount-1 DOWNTO 0);
197 -- AD_out : OUT AD7688_out);
201 -- AD_out : OUT AD7688_out);
198 --END COMPONENT;
202 --END COMPONENT;
199
203
200 --COMPONENT ADS7886_drvr IS
204 --COMPONENT ADS7886_drvr IS
201 -- GENERIC(ChanelCount : INTEGER;
205 -- GENERIC(ChanelCount : INTEGER;
202 -- clkkHz : INTEGER);
206 -- clkkHz : INTEGER);
203 -- PORT (
207 -- PORT (
204 -- clk : IN STD_LOGIC;
208 -- clk : IN STD_LOGIC;
205 -- reset : IN STD_LOGIC;
209 -- reset : IN STD_LOGIC;
206 -- smplClk : IN STD_LOGIC;
210 -- smplClk : IN STD_LOGIC;
207 -- DataReady : OUT STD_LOGIC;
211 -- DataReady : OUT STD_LOGIC;
208 -- smpout : OUT Samples_out(ChanelCount-1 DOWNTO 0);
212 -- smpout : OUT Samples_out(ChanelCount-1 DOWNTO 0);
209 -- AD_in : IN AD7688_in(ChanelCount-1 DOWNTO 0);
213 -- AD_in : IN AD7688_in(ChanelCount-1 DOWNTO 0);
210 -- AD_out : OUT AD7688_out
214 -- AD_out : OUT AD7688_out
211 -- );
215 -- );
212 --END COMPONENT;
216 --END COMPONENT;
213
217
214 --COMPONENT WriteGen_ADC IS
218 --COMPONENT WriteGen_ADC IS
215 -- PORT(
219 -- PORT(
216 -- clk : IN STD_LOGIC;
220 -- clk : IN STD_LOGIC;
217 -- rstn : IN STD_LOGIC;
221 -- rstn : IN STD_LOGIC;
218 -- SmplCLK : IN STD_LOGIC;
222 -- SmplCLK : IN STD_LOGIC;
219 -- DataReady : IN STD_LOGIC;
223 -- DataReady : IN STD_LOGIC;
220 -- Full : IN STD_LOGIC_VECTOR(4 DOWNTO 0);
224 -- Full : IN STD_LOGIC_VECTOR(4 DOWNTO 0);
221 -- ReUse : OUT STD_LOGIC_VECTOR(4 DOWNTO 0);
225 -- ReUse : OUT STD_LOGIC_VECTOR(4 DOWNTO 0);
222 -- Write : OUT STD_LOGIC_VECTOR(4 DOWNTO 0)
226 -- Write : OUT STD_LOGIC_VECTOR(4 DOWNTO 0)
223 -- );
227 -- );
224 --END COMPONENT;
228 --END COMPONENT;
225
229
226
230
227 --===========================================================|
231 --===========================================================|
228 --======================= ADS 127X =========================|
232 --======================= ADS 127X =========================|
229 --===========================================================|
233 --===========================================================|
230
234
231 TYPE ADS127X_FORMAT_Type IS ARRAY(2 DOWNTO 0) OF STD_LOGIC;
235 TYPE ADS127X_FORMAT_Type IS ARRAY(2 DOWNTO 0) OF STD_LOGIC;
232 CONSTANT ADS127X_SPI_FORMAT : ADS127X_FORMAT_Type := "010";
236 CONSTANT ADS127X_SPI_FORMAT : ADS127X_FORMAT_Type := "010";
233 CONSTANT ADS127X_FSYNC_FORMAT : ADS127X_FORMAT_Type := "101";
237 CONSTANT ADS127X_FSYNC_FORMAT : ADS127X_FORMAT_Type := "101";
234
238
235 TYPE ADS127X_MODE_Type IS ARRAY(1 DOWNTO 0) OF STD_LOGIC;
239 TYPE ADS127X_MODE_Type IS ARRAY(1 DOWNTO 0) OF STD_LOGIC;
236 CONSTANT ADS127X_MODE_low_power : ADS127X_MODE_Type := "10";
240 CONSTANT ADS127X_MODE_low_power : ADS127X_MODE_Type := "10";
237 CONSTANT ADS127X_MODE_low_speed : ADS127X_MODE_Type := "11";
241 CONSTANT ADS127X_MODE_low_speed : ADS127X_MODE_Type := "11";
238 CONSTANT ADS127X_MODE_high_resolution : ADS127X_MODE_Type := "01";
242 CONSTANT ADS127X_MODE_high_resolution : ADS127X_MODE_Type := "01";
239
243
240 TYPE ADS127X_config IS
244 TYPE ADS127X_config IS
241 RECORD
245 RECORD
242 SYNC : STD_LOGIC;
246 SYNC : STD_LOGIC;
243 CLKDIV : STD_LOGIC;
247 CLKDIV : STD_LOGIC;
244 FORMAT : ADS127X_FORMAT_Type;
248 FORMAT : ADS127X_FORMAT_Type;
245 MODE : ADS127X_MODE_Type;
249 MODE : ADS127X_MODE_Type;
246 END RECORD;
250 END RECORD;
247
251
248 COMPONENT ADS1274_DRIVER IS
252 COMPONENT ADS1274_DRIVER IS
249 GENERIC(modeCfg : ADS127X_MODE_Type := ADS127X_MODE_low_power; formatCfg : ADS127X_FORMAT_Type := ADS127X_FSYNC_FORMAT);
253 GENERIC(modeCfg : ADS127X_MODE_Type := ADS127X_MODE_low_power; formatCfg : ADS127X_FORMAT_Type := ADS127X_FSYNC_FORMAT);
250 PORT(
254 PORT(
251 Clk : IN STD_LOGIC;
255 Clk : IN STD_LOGIC;
252 reset : IN STD_LOGIC;
256 reset : IN STD_LOGIC;
253 SpiClk : OUT STD_LOGIC;
257 SpiClk : OUT STD_LOGIC;
254 DIN : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
258 DIN : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
255 Ready : IN STD_LOGIC;
259 Ready : IN STD_LOGIC;
256 Format : OUT STD_LOGIC_VECTOR(2 DOWNTO 0);
260 Format : OUT STD_LOGIC_VECTOR(2 DOWNTO 0);
257 Mode : OUT STD_LOGIC_VECTOR(1 DOWNTO 0);
261 Mode : OUT STD_LOGIC_VECTOR(1 DOWNTO 0);
258 ClkDiv : OUT STD_LOGIC;
262 ClkDiv : OUT STD_LOGIC;
259 PWDOWN : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
263 PWDOWN : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
260 SmplClk : IN STD_LOGIC;
264 SmplClk : IN STD_LOGIC;
261 OUT0 : OUT STD_LOGIC_VECTOR(23 DOWNTO 0);
265 OUT0 : OUT STD_LOGIC_VECTOR(23 DOWNTO 0);
262 OUT1 : OUT STD_LOGIC_VECTOR(23 DOWNTO 0);
266 OUT1 : OUT STD_LOGIC_VECTOR(23 DOWNTO 0);
263 OUT2 : OUT STD_LOGIC_VECTOR(23 DOWNTO 0);
267 OUT2 : OUT STD_LOGIC_VECTOR(23 DOWNTO 0);
264 OUT3 : OUT STD_LOGIC_VECTOR(23 DOWNTO 0);
268 OUT3 : OUT STD_LOGIC_VECTOR(23 DOWNTO 0);
265 FSynch : OUT STD_LOGIC;
269 FSynch : OUT STD_LOGIC;
266 test : OUT STD_LOGIC
270 test : OUT STD_LOGIC
267 );
271 );
268 END COMPONENT;
272 END COMPONENT;
269
273
270 -- todo clean file
274 -- todo clean file
271 COMPONENT DUAL_ADS1278_DRIVER IS
275 COMPONENT DUAL_ADS1278_DRIVER IS
272 PORT(
276 PORT(
273 Clk : IN STD_LOGIC;
277 Clk : IN STD_LOGIC;
274 reset : IN STD_LOGIC;
278 reset : IN STD_LOGIC;
275 SpiClk : OUT STD_LOGIC;
279 SpiClk : OUT STD_LOGIC;
276 DIN : IN STD_LOGIC_VECTOR(1 DOWNTO 0);
280 DIN : IN STD_LOGIC_VECTOR(1 DOWNTO 0);
277 SmplClk : IN STD_LOGIC;
281 SmplClk : IN STD_LOGIC;
278 OUT00 : OUT STD_LOGIC_VECTOR(23 DOWNTO 0);
282 OUT00 : OUT STD_LOGIC_VECTOR(23 DOWNTO 0);
279 OUT01 : OUT STD_LOGIC_VECTOR(23 DOWNTO 0);
283 OUT01 : OUT STD_LOGIC_VECTOR(23 DOWNTO 0);
280 OUT02 : OUT STD_LOGIC_VECTOR(23 DOWNTO 0);
284 OUT02 : OUT STD_LOGIC_VECTOR(23 DOWNTO 0);
281 OUT03 : OUT STD_LOGIC_VECTOR(23 DOWNTO 0);
285 OUT03 : OUT STD_LOGIC_VECTOR(23 DOWNTO 0);
282 OUT04 : OUT STD_LOGIC_VECTOR(23 DOWNTO 0);
286 OUT04 : OUT STD_LOGIC_VECTOR(23 DOWNTO 0);
283 OUT05 : OUT STD_LOGIC_VECTOR(23 DOWNTO 0);
287 OUT05 : OUT STD_LOGIC_VECTOR(23 DOWNTO 0);
284 OUT06 : OUT STD_LOGIC_VECTOR(23 DOWNTO 0);
288 OUT06 : OUT STD_LOGIC_VECTOR(23 DOWNTO 0);
285 OUT07 : OUT STD_LOGIC_VECTOR(23 DOWNTO 0);
289 OUT07 : OUT STD_LOGIC_VECTOR(23 DOWNTO 0);
286 OUT10 : OUT STD_LOGIC_VECTOR(23 DOWNTO 0);
290 OUT10 : OUT STD_LOGIC_VECTOR(23 DOWNTO 0);
287 OUT11 : OUT STD_LOGIC_VECTOR(23 DOWNTO 0);
291 OUT11 : OUT STD_LOGIC_VECTOR(23 DOWNTO 0);
288 OUT12 : OUT STD_LOGIC_VECTOR(23 DOWNTO 0);
292 OUT12 : OUT STD_LOGIC_VECTOR(23 DOWNTO 0);
289 OUT13 : OUT STD_LOGIC_VECTOR(23 DOWNTO 0);
293 OUT13 : OUT STD_LOGIC_VECTOR(23 DOWNTO 0);
290 OUT14 : OUT STD_LOGIC_VECTOR(23 DOWNTO 0);
294 OUT14 : OUT STD_LOGIC_VECTOR(23 DOWNTO 0);
291 OUT15 : OUT STD_LOGIC_VECTOR(23 DOWNTO 0);
295 OUT15 : OUT STD_LOGIC_VECTOR(23 DOWNTO 0);
292 OUT16 : OUT STD_LOGIC_VECTOR(23 DOWNTO 0);
296 OUT16 : OUT STD_LOGIC_VECTOR(23 DOWNTO 0);
293 OUT17 : OUT STD_LOGIC_VECTOR(23 DOWNTO 0);
297 OUT17 : OUT STD_LOGIC_VECTOR(23 DOWNTO 0);
294 FSynch : OUT STD_LOGIC
298 FSynch : OUT STD_LOGIC
295 );
299 );
296 END COMPONENT;
300 END COMPONENT;
297
301
298 --===========================================================|
302 --===========================================================|
299 -- DRIVER ADS7886
303 -- DRIVER ADS7886
300 --===========================================================|
304 --===========================================================|
301 COMPONENT top_ad_conv_ADS7886_v2 IS
305 COMPONENT top_ad_conv_ADS7886_v2 IS
302 GENERIC(
306 GENERIC(
303 ChannelCount : INTEGER := 8;
307 ChannelCount : INTEGER := 8;
304 SampleNbBits : INTEGER := 14;
308 SampleNbBits : INTEGER := 14;
305 ncycle_cnv_high : INTEGER := 40; -- at least 32 cycles
309 ncycle_cnv_high : INTEGER := 40; -- at least 32 cycles
306 ncycle_cnv : INTEGER := 500);
310 ncycle_cnv : INTEGER := 500);
307 PORT (
311 PORT (
308 -- CONV
312 -- CONV
309 cnv_clk : IN STD_LOGIC;
313 cnv_clk : IN STD_LOGIC;
310 cnv_rstn : IN STD_LOGIC;
314 cnv_rstn : IN STD_LOGIC;
311 cnv : OUT STD_LOGIC;
315 cnv : OUT STD_LOGIC;
312 -- DATA
316 -- DATA
313 clk : IN STD_LOGIC;
317 clk : IN STD_LOGIC;
314 rstn : IN STD_LOGIC;
318 rstn : IN STD_LOGIC;
315 sck : OUT STD_LOGIC;
319 sck : OUT STD_LOGIC;
316 sdo : IN STD_LOGIC_VECTOR(ChannelCount-1 DOWNTO 0);
320 sdo : IN STD_LOGIC_VECTOR(ChannelCount-1 DOWNTO 0);
317 -- SAMPLE
321 -- SAMPLE
318 sample : OUT Samples14v(ChannelCount-1 DOWNTO 0);
322 sample : OUT Samples14v(ChannelCount-1 DOWNTO 0);
319 sample_val : OUT STD_LOGIC
323 sample_val : OUT STD_LOGIC
320 );
324 );
321 END COMPONENT;
325 END COMPONENT;
322
326
323 COMPONENT ADS7886_drvr_v2 IS
327 COMPONENT ADS7886_drvr_v2 IS
324 GENERIC(
328 GENERIC(
325 ChannelCount : INTEGER := 8;
329 ChannelCount : INTEGER := 8;
326 NbBitsSamples : INTEGER := 16);
330 NbBitsSamples : INTEGER := 16);
327 PORT (
331 PORT (
328 -- CONV --
332 -- CONV --
329 cnv_clk : IN STD_LOGIC;
333 cnv_clk : IN STD_LOGIC;
330 cnv_rstn : IN STD_LOGIC;
334 cnv_rstn : IN STD_LOGIC;
331 -- DATA --
335 -- DATA --
332 clk : IN STD_LOGIC;
336 clk : IN STD_LOGIC;
333 rstn : IN STD_LOGIC;
337 rstn : IN STD_LOGIC;
334 sck : OUT STD_LOGIC;
338 sck : OUT STD_LOGIC;
335 sdo : IN STD_LOGIC_VECTOR(ChannelCount-1 DOWNTO 0);
339 sdo : IN STD_LOGIC_VECTOR(ChannelCount-1 DOWNTO 0);
336 -- SAMPLE --
340 -- SAMPLE --
337 sample : OUT Samples(ChannelCount-1 DOWNTO 0);
341 sample : OUT Samples(ChannelCount-1 DOWNTO 0);
338 sample_val : OUT STD_LOGIC
342 sample_val : OUT STD_LOGIC
339 );
343 );
340 END COMPONENT;
344 END COMPONENT;
341
345
342 COMPONENT top_ad_conv_RHF1401_withFilter
346 COMPONENT top_ad_conv_RHF1401_withFilter
343 GENERIC (
347 GENERIC (
344 ChanelCount : INTEGER;
348 ChanelCount : INTEGER;
345 ncycle_cnv_high : INTEGER;
349 ncycle_cnv_high : INTEGER;
346 ncycle_cnv : INTEGER);
350 ncycle_cnv : INTEGER);
347 PORT (
351 PORT (
348 cnv_clk : IN STD_LOGIC;
352 cnv_clk : IN STD_LOGIC;
349 cnv_rstn : IN STD_LOGIC;
353 cnv_rstn : IN STD_LOGIC;
350 cnv : OUT STD_LOGIC;
354 cnv : OUT STD_LOGIC;
351 clk : IN STD_LOGIC;
355 clk : IN STD_LOGIC;
352 rstn : IN STD_LOGIC;
356 rstn : IN STD_LOGIC;
353 ADC_data : IN Samples14;
357 ADC_data : IN Samples14;
354 ADC_nOE : OUT STD_LOGIC_VECTOR(ChanelCount-1 DOWNTO 0);
358 ADC_nOE : OUT STD_LOGIC_VECTOR(ChanelCount-1 DOWNTO 0);
355 sample : OUT Samples14v(ChanelCount-1 DOWNTO 0);
359 sample : OUT Samples14v(ChanelCount-1 DOWNTO 0);
356 sample_val : OUT STD_LOGIC);
360 sample_val : OUT STD_LOGIC);
357 END COMPONENT;
361 END COMPONENT;
358
362
359
363
360 END lpp_ad_conv;
364 END lpp_ad_conv;
361
365
362
366
363
367
364
368
365
369
366
370
367
371
368
372
@@ -1,221 +1,221
1
1
2 LIBRARY IEEE;
2 LIBRARY IEEE;
3 USE IEEE.STD_LOGIC_1164.ALL;
3 USE IEEE.STD_LOGIC_1164.ALL;
4 USE IEEE.numeric_std.ALL;
4 USE IEEE.numeric_std.ALL;
5 LIBRARY lpp;
5 LIBRARY lpp;
6 USE lpp.lpp_ad_conv.ALL;
6 USE lpp.lpp_ad_conv.ALL;
7 USE lpp.general_purpose.SYNC_FF;
7 USE lpp.general_purpose.SYNC_FF;
8
8
9 ENTITY top_ad_conv_RHF1401_withFilter IS
9 ENTITY top_ad_conv_RHF1401_withFilter IS
10 GENERIC(
10 GENERIC(
11 ChanelCount : INTEGER := 8;
11 ChanelCount : INTEGER := 8;
12 ncycle_cnv_high : INTEGER := 13;
12 ncycle_cnv_high : INTEGER := 13;
13 ncycle_cnv : INTEGER := 25);
13 ncycle_cnv : INTEGER := 25);
14 PORT (
14 PORT (
15 cnv_clk : IN STD_LOGIC; -- 24Mhz
15 cnv_clk : IN STD_LOGIC; -- 24Mhz
16 cnv_rstn : IN STD_LOGIC;
16 cnv_rstn : IN STD_LOGIC;
17
17
18 cnv : OUT STD_LOGIC;
18 cnv : OUT STD_LOGIC;
19
19
20 clk : IN STD_LOGIC; -- 25MHz
20 clk : IN STD_LOGIC; -- 25MHz
21 rstn : IN STD_LOGIC;
21 rstn : IN STD_LOGIC;
22 ADC_data : IN Samples14;
22 ADC_data : IN Samples14;
23 ADC_nOE : OUT STD_LOGIC_VECTOR(ChanelCount-1 DOWNTO 0);
23 ADC_nOE : OUT STD_LOGIC_VECTOR(ChanelCount-1 DOWNTO 0);
24 sample : OUT Samples14v(ChanelCount-1 DOWNTO 0);
24 sample : OUT Samples14v(ChanelCount-1 DOWNTO 0);
25 sample_val : OUT STD_LOGIC
25 sample_val : OUT STD_LOGIC
26 );
26 );
27 END top_ad_conv_RHF1401_withFilter;
27 END top_ad_conv_RHF1401_withFilter;
28
28
29 ARCHITECTURE ar_top_ad_conv_RHF1401 OF top_ad_conv_RHF1401_withFilter IS
29 ARCHITECTURE ar_top_ad_conv_RHF1401 OF top_ad_conv_RHF1401_withFilter IS
30
30
31 SIGNAL cnv_cycle_counter : INTEGER;
31 SIGNAL cnv_cycle_counter : INTEGER;
32 SIGNAL cnv_s : STD_LOGIC;
32 SIGNAL cnv_s : STD_LOGIC;
33 SIGNAL cnv_sync : STD_LOGIC;
33 SIGNAL cnv_sync : STD_LOGIC;
34 SIGNAL cnv_sync_pre : STD_LOGIC;
34 SIGNAL cnv_sync_pre : STD_LOGIC;
35
35
36 SIGNAL ADC_nOE_reg : STD_LOGIC_VECTOR(ChanelCount-1 DOWNTO 0);
36 SIGNAL ADC_nOE_reg : STD_LOGIC_VECTOR(ChanelCount-1 DOWNTO 0);
37 SIGNAL enable_ADC : STD_LOGIC;
37 SIGNAL enable_ADC : STD_LOGIC;
38
38
39
39
40 SIGNAL sample_reg : Samples14v(ChanelCount-1 DOWNTO 0);
40 SIGNAL sample_reg : Samples14v(ChanelCount-1 DOWNTO 0);
41
41
42 SIGNAL channel_counter : INTEGER;
42 SIGNAL channel_counter : INTEGER;
43 CONSTANT MAX_COUNTER : INTEGER := ChanelCount*2+1;
43 CONSTANT MAX_COUNTER : INTEGER := ChanelCount*2+1;
44
44
45 SIGNAL ADC_data_selected : Samples14;
45 SIGNAL ADC_data_selected : Samples14;
46 SIGNAL ADC_data_result : Samples14;
46 SIGNAL ADC_data_result : Samples15;
47
47
48 SIGNAL sample_counter : INTEGER;
48 SIGNAL sample_counter : INTEGER;
49
49
50 BEGIN
50 BEGIN
51
51
52
52
53 -----------------------------------------------------------------------------
53 -----------------------------------------------------------------------------
54 -- CNV GEN
54 -- CNV GEN
55 -----------------------------------------------------------------------------
55 -----------------------------------------------------------------------------
56 PROCESS (cnv_clk, cnv_rstn)
56 PROCESS (cnv_clk, cnv_rstn)
57 BEGIN -- PROCESS
57 BEGIN -- PROCESS
58 IF cnv_rstn = '0' THEN -- asynchronous reset (active low)
58 IF cnv_rstn = '0' THEN -- asynchronous reset (active low)
59 cnv_cycle_counter <= 0;
59 cnv_cycle_counter <= 0;
60 cnv_s <= '0';
60 cnv_s <= '0';
61 ELSIF cnv_clk'EVENT AND cnv_clk = '1' THEN -- rising clock edge
61 ELSIF cnv_clk'EVENT AND cnv_clk = '1' THEN -- rising clock edge
62 IF cnv_cycle_counter < ncycle_cnv-1 THEN
62 IF cnv_cycle_counter < ncycle_cnv-1 THEN
63 cnv_cycle_counter <= cnv_cycle_counter + 1;
63 cnv_cycle_counter <= cnv_cycle_counter + 1;
64 IF cnv_cycle_counter < ncycle_cnv_high THEN
64 IF cnv_cycle_counter < ncycle_cnv_high THEN
65 cnv_s <= '1';
65 cnv_s <= '1';
66 ELSE
66 ELSE
67 cnv_s <= '0';
67 cnv_s <= '0';
68 END IF;
68 END IF;
69 ELSE
69 ELSE
70 cnv_s <= '1';
70 cnv_s <= '1';
71 cnv_cycle_counter <= 0;
71 cnv_cycle_counter <= 0;
72 END IF;
72 END IF;
73 END IF;
73 END IF;
74 END PROCESS;
74 END PROCESS;
75
75
76 cnv <= cnv_s;
76 cnv <= cnv_s;
77
77
78
78
79 -----------------------------------------------------------------------------
79 -----------------------------------------------------------------------------
80 -- SYNC CNV
80 -- SYNC CNV
81 -----------------------------------------------------------------------------
81 -----------------------------------------------------------------------------
82
82
83 SYNC_FF_cnv : SYNC_FF
83 SYNC_FF_cnv : SYNC_FF
84 GENERIC MAP (
84 GENERIC MAP (
85 NB_FF_OF_SYNC => 2)
85 NB_FF_OF_SYNC => 2)
86 PORT MAP (
86 PORT MAP (
87 clk => clk,
87 clk => clk,
88 rstn => rstn,
88 rstn => rstn,
89 A => cnv_s,
89 A => cnv_s,
90 A_sync => cnv_sync);
90 A_sync => cnv_sync);
91
91
92
92
93 -----------------------------------------------------------------------------
93 -----------------------------------------------------------------------------
94 -- DATA GEN Output Enable
94 -- DATA GEN Output Enable
95 -----------------------------------------------------------------------------
95 -----------------------------------------------------------------------------
96 PROCESS (clk, rstn)
96 PROCESS (clk, rstn)
97 BEGIN -- PROCESS
97 BEGIN -- PROCESS
98 IF rstn = '0' THEN -- asynchronous reset (active low)
98 IF rstn = '0' THEN -- asynchronous reset (active low)
99 ADC_nOE_reg(ChanelCount-1 DOWNTO 0) <= (OTHERS => '1');
99 ADC_nOE_reg(ChanelCount-1 DOWNTO 0) <= (OTHERS => '1');
100 cnv_sync_pre <= '0';
100 cnv_sync_pre <= '0';
101 enable_ADC <= '0';
101 enable_ADC <= '0';
102 ELSIF clk'event AND clk = '1' THEN -- rising clock edge
102 ELSIF clk'event AND clk = '1' THEN -- rising clock edge
103 cnv_sync_pre <= cnv_sync;
103 cnv_sync_pre <= cnv_sync;
104 IF cnv_sync = '1' AND cnv_sync_pre = '0' THEN
104 IF cnv_sync = '1' AND cnv_sync_pre = '0' THEN
105 enable_ADC <= '1';
105 enable_ADC <= '1';
106 ADC_nOE_reg(0) <= '0';
106 ADC_nOE_reg(0) <= '0';
107 ADC_nOE_reg(ChanelCount-1 DOWNTO 1) <= (OTHERS => '1');
107 ADC_nOE_reg(ChanelCount-1 DOWNTO 1) <= (OTHERS => '1');
108 ELSE
108 ELSE
109 enable_ADC <= NOT enable_ADC;
109 enable_ADC <= NOT enable_ADC;
110 IF enable_ADC = '0' THEN
110 IF enable_ADC = '0' THEN
111 ADC_nOE_reg(ChanelCount-1 DOWNTO 0) <= ADC_nOE_reg(ChanelCount-2 DOWNTO 0) & '1';
111 ADC_nOE_reg(ChanelCount-1 DOWNTO 0) <= ADC_nOE_reg(ChanelCount-2 DOWNTO 0) & '1';
112 END IF;
112 END IF;
113 END IF;
113 END IF;
114
114
115 END IF;
115 END IF;
116 END PROCESS;
116 END PROCESS;
117
117
118 ADC_nOE <= (OTHERS => '1') WHEN enable_ADC = '0' ELSE ADC_nOE_reg;
118 ADC_nOE <= (OTHERS => '1') WHEN enable_ADC = '0' ELSE ADC_nOE_reg;
119
119
120 -----------------------------------------------------------------------------
120 -----------------------------------------------------------------------------
121 -- ADC READ DATA
121 -- ADC READ DATA
122 -----------------------------------------------------------------------------
122 -----------------------------------------------------------------------------
123 PROCESS (clk, rstn)
123 PROCESS (clk, rstn)
124 BEGIN -- PROCESS
124 BEGIN -- PROCESS
125 IF rstn = '0' THEN -- asynchronous reset (active low)
125 IF rstn = '0' THEN -- asynchronous reset (active low)
126 channel_counter <= MAX_COUNTER;
126 channel_counter <= MAX_COUNTER;
127 sample_reg(0) <= (OTHERS => '0');
127 sample_reg(0) <= (OTHERS => '0');
128 sample_reg(1) <= (OTHERS => '0');
128 sample_reg(1) <= (OTHERS => '0');
129 sample_reg(2) <= (OTHERS => '0');
129 sample_reg(2) <= (OTHERS => '0');
130 sample_reg(3) <= (OTHERS => '0');
130 sample_reg(3) <= (OTHERS => '0');
131 sample_reg(4) <= (OTHERS => '0');
131 sample_reg(4) <= (OTHERS => '0');
132 sample_reg(5) <= (OTHERS => '0');
132 sample_reg(5) <= (OTHERS => '0');
133 sample_reg(6) <= (OTHERS => '0');
133 sample_reg(6) <= (OTHERS => '0');
134 sample_reg(7) <= (OTHERS => '0');
134 sample_reg(7) <= (OTHERS => '0');
135
135
136 sample_val <= '0';
136 sample_val <= '0';
137 sample_counter <= 0;
137 sample_counter <= 0;
138 ELSIF clk'event AND clk = '1' THEN -- rising clock edge
138 ELSIF clk'event AND clk = '1' THEN -- rising clock edge
139 IF cnv_sync = '1' AND cnv_sync_pre = '0' THEN
139 IF cnv_sync = '1' AND cnv_sync_pre = '0' THEN
140 channel_counter <= 0;
140 channel_counter <= 0;
141 ELSE
141 ELSE
142 IF channel_counter < MAX_COUNTER THEN
142 IF channel_counter < MAX_COUNTER THEN
143 channel_counter <= channel_counter + 1;
143 channel_counter <= channel_counter + 1;
144 END IF;
144 END IF;
145 END IF;
145 END IF;
146 sample_val <= '0';
146 sample_val <= '0';
147
147
148 CASE channel_counter IS
148 CASE channel_counter IS
149 WHEN 0*2 => sample_reg(0) <= ADC_data_result;
149 WHEN 0*2 => sample_reg(0) <= ADC_data_result(14 DOWNTO 1);
150 WHEN 1*2 => sample_reg(1) <= ADC_data_result;
150 WHEN 1*2 => sample_reg(1) <= ADC_data_result(14 DOWNTO 1);
151 WHEN 2*2 => sample_reg(2) <= ADC_data_result;
151 WHEN 2*2 => sample_reg(2) <= ADC_data_result(14 DOWNTO 1);
152 WHEN 3*2 => sample_reg(3) <= ADC_data_result;
152 WHEN 3*2 => sample_reg(3) <= ADC_data_result(14 DOWNTO 1);
153 WHEN 4*2 => sample_reg(4) <= ADC_data_result;
153 WHEN 4*2 => sample_reg(4) <= ADC_data_result(14 DOWNTO 1);
154 WHEN 5*2 => sample_reg(5) <= ADC_data_result;
154 WHEN 5*2 => sample_reg(5) <= ADC_data_result(14 DOWNTO 1);
155 WHEN 6*2 => sample_reg(6) <= ADC_data_result;
155 WHEN 6*2 => sample_reg(6) <= ADC_data_result(14 DOWNTO 1);
156 WHEN 7*2 => sample_reg(7) <= ADC_data_result;
156 WHEN 7*2 => sample_reg(7) <= ADC_data_result(14 DOWNTO 1);
157 IF sample_counter = 9 THEN
157 IF sample_counter = 9 THEN
158 sample_counter <= 0 ;
158 sample_counter <= 0 ;
159 sample_val <= '1';
159 sample_val <= '1';
160 ELSE
160 ELSE
161 sample_counter <= sample_counter +1;
161 sample_counter <= sample_counter +1;
162 END IF;
162 END IF;
163
163
164 WHEN OTHERS => NULL;
164 WHEN OTHERS => NULL;
165 END CASE;
165 END CASE;
166
166
167 END IF;
167 END IF;
168 END PROCESS;
168 END PROCESS;
169
169
170
170
171 WITH channel_counter SELECT
171 WITH channel_counter SELECT
172 ADC_data_selected <= sample_reg(0) WHEN 0*2,
172 ADC_data_selected <= sample_reg(0) WHEN 0*2,
173 sample_reg(1) WHEN 1*2,
173 sample_reg(1) WHEN 1*2,
174 sample_reg(2) WHEN 2*2,
174 sample_reg(2) WHEN 2*2,
175 sample_reg(3) WHEN 3*2,
175 sample_reg(3) WHEN 3*2,
176 sample_reg(4) WHEN 4*2,
176 sample_reg(4) WHEN 4*2,
177 sample_reg(5) WHEN 5*2,
177 sample_reg(5) WHEN 5*2,
178 sample_reg(6) WHEN 6*2,
178 sample_reg(6) WHEN 6*2,
179 sample_reg(7) WHEN OTHERS ;
179 sample_reg(7) WHEN OTHERS ;
180
180
181
181
182 ADC_data_result <= std_logic_vector( (signed(ADC_data_selected) + signed(ADC_data)) / 2);
182 ADC_data_result <= std_logic_vector( (signed( ADC_data_selected(13) & ADC_data_selected) + signed( ADC_data(13) & ADC_data)) );
183
183
184 sample <= sample_reg;
184 sample <= sample_reg;
185
185
186
186
187
187
188
188
189 --RHF1401_drvr_1: RHF1401_drvr
189 --RHF1401_drvr_1: RHF1401_drvr
190 -- GENERIC MAP (
190 -- GENERIC MAP (
191 -- ChanelCount => ChanelCount)
191 -- ChanelCount => ChanelCount)
192 -- PORT MAP (
192 -- PORT MAP (
193 -- cnv_clk => cnv_sync,
193 -- cnv_clk => cnv_sync,
194 -- clk => clk,
194 -- clk => clk,
195 -- rstn => rstn,
195 -- rstn => rstn,
196 -- ADC_data => ADC_data,
196 -- ADC_data => ADC_data,
197 -- --ADC_smpclk => OPEN,
197 -- --ADC_smpclk => OPEN,
198 -- ADC_nOE => ADC_nOE,
198 -- ADC_nOE => ADC_nOE,
199 -- sample => sample,
199 -- sample => sample,
200 -- sample_val => sample_val);
200 -- sample_val => sample_val);
201
201
202
202
203
203
204
204
205 END ar_top_ad_conv_RHF1401;
205 END ar_top_ad_conv_RHF1401;
206
206
207
207
208
208
209
209
210
210
211
211
212
212
213
213
214
214
215
215
216
216
217
217
218
218
219
219
220
220
221
221
General Comments 0
You need to be logged in to leave comments. Login now