46 std::string device_name,
47 uint32_t select_queue,
48 std::vector<std::pair<uint32_t, uint32_t>> &downsampling_filter_specs,
49 uint32_t &max_FFT_size);
60 void init(uint32_t nsamples, uint32_t d_fft_size,
61 int64_t resampled_fs, uint32_t downsampling_filter_num, uint32_t excludelimit, uint32_t *all_fft_codes);
85 uint64_t *initial_sample,
87 uint32_t *doppler_index,
88 uint32_t *total_blk_exp);
127 static const uint32_t FPGA_ACQ_IP_VERSION_1 = 0x0001;
132 static const uint32_t FREQ_BAND_DOWNSAMPLE_REG_ADDR = 0;
133 static const uint32_t FFT_LENGTH_REG_ADDR = 1;
134 static const uint32_t CORR_NSAMPLES_REG_ADDR = 2;
135 static const uint32_t DOPPLER_MIN_REG_ADDR = 3;
136 static const uint32_t DOPPLER_STEP_REG_ADDR = 4;
137 static const uint32_t NUM_DOPPLER_SEARCH_STEPS_REG_ADDR = 5;
138 static const uint32_t PROG_MEM_ADDR = 6;
139 static const uint32_t LOG2_FFT_LENGTH_REG_ADDR = 7;
140 static const uint32_t ACQ_COMMAND_FLAGS_REG_ADDR = 8;
141 static const uint32_t CLEAR_MEM_REG_ADDR = 9;
142 static const uint32_t MAX_FFT_SCALING_FACTOR_REG_ADDR = 11;
143 static const uint32_t EXCL_LIM_REG_ADDR = 12;
146 static const uint32_t TEST_REG_ADDR = 15;
149 static const uint32_t RESULT_VALID_REG_ADDR = 0;
150 static const uint32_t SAMPLESTAMP_LSW_REG_ADDR = 1;
151 static const uint32_t SAMPLESTAMP_MSW_REG_ADDR = 2;
152 static const uint32_t MAG_SQ_FIRST_PEAK_REG_ADDR = 3;
153 static const uint32_t MAG_SQ_SECOND_PEAK_REG_ADDR = 4;
154 static const uint32_t ACQ_DELAY_SAMPLES_REG_ADDR = 5;
155 static const uint32_t DOPPLER_INDEX_REG_ADDR = 7;
156 static const uint32_t FFT_SCALING_FACTOR_REG_ADDR = 8;
157 static const uint32_t MAX_FFT_SIZE_REG_ADDR = 9;
158 static const uint32_t DOWNSAMPLING_FILTER_DEC_FACTORS_REG_ADDR = 10;
159 static const uint32_t DOWNSAMPLING_FILTER_LATENCIES_REG_ADDR = 11;
160 static const uint32_t FPGA_IP_CORE_VERSION_REG_ADDR = 14;
163 static const uint32_t FPGA_PAGE_SIZE = 0x1000;
164 static const uint32_t LAUNCH_ACQUISITION = 1;
165 static const uint32_t RESET_ACQUISITION = 2;
166 static const uint32_t STOP_ACQUISITION = 4;
167 static const uint32_t TEST_REG_SANITY_CHECK = 0x55AA;
168 static const uint32_t LOCAL_CODE_CLEAR_MEM = 0x10000000;
169 static const uint32_t MEM_LOCAL_CODE_WR_ENABLE = 0x0C000000;
170 static const uint32_t POW_2_2 = 4;
171 static const uint32_t POW_2_31 = 2147483648;
172 static const uint32_t MAX_FILTERS_AVAILABLE = 2;
173 static const uint32_t DEFAULT_MAX_FFT_SIZE = 32768;
174 static const uint32_t ACQ_BUFF_0 = 0;
175 static const uint32_t ACQ_BUFF_1 = 0;
178 static const uint32_t RSHIFT_4_BITS = 0x4;
179 static const uint32_t RSHIFT_8_BITS = 0x8;
180 static const uint32_t BIT_MASK_4 = 0xF;
181 static const uint32_t BIT_MASK_8 = 0xFF;
184 const uint32_t DEFAULT_DOWNSAMPLING_FILTER_DELAY = 40;
185 const uint32_t DEFAULT_DOWNSAMPLING_FACTOR = 4;
188 void fpga_acquisition_test_register(
void);
189 void read_ipcore_info(std::vector<std::pair<uint32_t, uint32_t>> &downsampling_filter_specs, uint32_t &max_FFT_size);
191 std::vector<std::pair<uint32_t, uint32_t>> d_downsampling_filter_specs;
192 std::string d_device_name;
193 int64_t d_resampled_fs;
194 volatile uint32_t *d_map_base;
195 uint32_t *d_all_fft_codes;
198 uint32_t d_excludelimit;
200 uint32_t d_filter_num;
201 uint32_t d_downsampling_factor;
202 uint32_t d_downsampling_filter_delay;
203 uint32_t d_select_queue;
205 uint32_t d_IP_core_version;