|
FERS 0.1.0
The Flexible Extensible Radar Simulator
|
Classes | |
| class | CwSignal |
| Continuous-wave signal implementation. More... | |
| class | DecadeUpsampler |
| Implements a specialized upsampler with a fixed upsampling factor of 10. More... | |
| class | DownsamplingSink |
| Stateful FIR decimator for chunked streaming output. More... | |
| class | DspFilter |
| Abstract base class for digital filters. More... | |
| class | FirFilter |
| Implements a Finite Impulse Response (FIR) filter. More... | |
| class | FmcwChirpSignal |
| FMCW linear chirp signal implementation. More... | |
| struct | FmcwIfRateRatio |
| struct | FmcwIfResamplerLimits |
| struct | FmcwIfResamplerPlan |
| struct | FmcwIfResamplerRequest |
| struct | FmcwIfResamplerStagePlan |
| class | FmcwIfResamplingSink |
| struct | FmcwIfZeroInputResult |
| class | FmcwTriangleSignal |
| FMCW symmetric triangular modulation signal implementation. More... | |
| class | IirFilter |
| Implements an Infinite Impulse Response (IIR) filter. More... | |
| class | RadarSignal |
| Class representing a radar signal with associated properties. More... | |
| class | Signal |
| Class for handling radar waveform signal data. More... | |
Enumerations | |
| enum class | FmcwIfResamplerStageKind : std::uint8_t { HalfBandDecimateBy2 , RationalPolyphase } |
| enum class | FmcwChirpDirection : std::uint8_t { Up , Down } |
| Sweep direction for a linear FMCW chirp. More... | |
Functions | |
| void | to_json (nlohmann::json &j, const RadarSignal &rs) |
| void | from_json (const nlohmann::json &j, std::unique_ptr< RadarSignal > &rs) |
| void | upsample (const std::span< const ComplexType > in, const unsigned size, std::span< ComplexType > out) |
| Upsamples a complex waveform with zero-stuffing followed by Blackman FIR filtering. | |
| std::vector< ComplexType > | downsample (std::span< const ComplexType > in) |
| Low-pass filters and decimates an oversampled complex waveform back to base rate. | |
| FmcwIfRateRatio | approximateFmcwIfRateRatio (const RealType output_sample_rate_hz, const RealType input_sample_rate_hz, const FmcwIfResamplerLimits &limits) |
| FmcwIfResamplerPlan | planFmcwIfResampler (const FmcwIfResamplerRequest &request) |
| std::string_view | fmcwChirpDirectionToken (FmcwChirpDirection direction) noexcept |
| Converts a chirp direction to the schema token. | |
| FmcwChirpDirection | parseFmcwChirpDirection (std::string_view direction) |
| Parses a schema chirp direction token. | |
|
strong |
Sweep direction for a linear FMCW chirp.
| Enumerator | |
|---|---|
| Up | Instantaneous baseband frequency increases over the chirp. |
| Down | Instantaneous baseband frequency decreases over the chirp. |
Definition at line 36 of file radar_signal.h.
|
strong |
| Enumerator | |
|---|---|
| HalfBandDecimateBy2 | |
| RationalPolyphase | |
Definition at line 25 of file if_resampler.h.
| FmcwIfRateRatio fers_signal::approximateFmcwIfRateRatio | ( | const RealType | output_sample_rate_hz, |
| const RealType | input_sample_rate_hz, | ||
| const FmcwIfResamplerLimits & | limits | ||
| ) |
Definition at line 295 of file if_resampler.cpp.
References a, max, fers_signal::FmcwIfResamplerLimits::max_ratio_denominator, and fers_signal::FmcwIfResamplerLimits::ratio_relative_tolerance.
Referenced by planFmcwIfResampler().
Here is the caller graph for this function:| std::vector< ComplexType > fers_signal::downsample | ( | std::span< const ComplexType > | in | ) |
Low-pass filters and decimates an oversampled complex waveform back to base rate.
Downsamples a signal by a given ratio.
The same fixed-length FIR design is reused for anti-alias filtering, and unsupported ratios fail fast before filtering begins.
| in | Input span of oversampled complex samples. |
| std::invalid_argument | if in is empty. |
| std::runtime_error | if the configured oversampling ratio is unsupported. |
| in | Input span of complex samples. |
| std::invalid_argument | if the input or output spans are empty or the ratio is zero. |
Definition at line 183 of file dsp_filters.cpp.
References max, params::oversampleRatio(), and params::renderFilterLength().
Referenced by processing::pipeline::applyDownsampling().
Here is the call graph for this function:
Here is the caller graph for this function:
|
noexcept |
Converts a chirp direction to the schema token.
Definition at line 30 of file radar_signal.cpp.
Referenced by serial::xml_serializer_utils::serializeWaveform(), and to_json().
Here is the caller graph for this function:| void fers_signal::from_json | ( | const nlohmann::json & | j, |
| std::unique_ptr< RadarSignal > & | rs | ||
| ) |
Definition at line 653 of file json_serializer.cpp.
References params::endTime(), serial::loadWaveformFromFile(), LOG, max, parseFmcwChirpDirection(), params::startTime(), and logging::WARNING.
Referenced by serial::parse_waveform_from_json().
Here is the call graph for this function:
Here is the caller graph for this function:| FmcwChirpDirection fers_signal::parseFmcwChirpDirection | ( | const std::string_view | direction | ) |
Parses a schema chirp direction token.
Definition at line 35 of file radar_signal.cpp.
Referenced by from_json(), and serial::xml_parser_utils::parseWaveform().
Here is the caller graph for this function:| FmcwIfResamplerPlan fers_signal::planFmcwIfResampler | ( | const FmcwIfResamplerRequest & | request | ) |
Definition at line 353 of file if_resampler.cpp.
References fers_signal::FmcwIfResamplerPlan::actual_output_sample_rate_hz, approximateFmcwIfRateRatio(), fers_signal::FmcwIfResamplerPlan::branch_interpolation_fraction, fers_signal::FmcwIfResamplerPlan::estimated_macs_per_output_sample, fers_signal::FmcwIfResamplerPlan::estimated_phase_error_radians, fers_signal::FmcwIfResamplerPlan::estimated_timing_error_seconds, fers_signal::FmcwIfResamplerPlan::filter_bandwidth_hz, fers_signal::FmcwIfResamplerPlan::filter_transition_width_hz, fers_signal::FmcwIfResamplerPlan::fractional_output_delay_samples, fers_signal::FmcwIfResamplerPlan::fractional_phase_offset, fers_signal::FmcwIfResamplerPlan::group_delay_output_samples, fers_signal::FmcwIfResamplerPlan::group_delay_seconds, HalfBandDecimateBy2, fers_signal::FmcwIfResamplerPlan::input_sample_rate_hz, fers_signal::FmcwIfResamplerPlan::limits, max, fers_signal::FmcwIfResamplerPlan::overall_ratio, fers_signal::FmcwIfResamplerPlan::phase_refinement, PI, RationalPolyphase, fers_signal::FmcwIfResamplerPlan::requested_output_sample_rate_hz, fers_signal::FmcwIfResamplerPlan::stages, fers_signal::FmcwIfResamplerPlan::stopband_attenuation_db, and fers_signal::FmcwIfResamplerPlan::warmup_discard_samples.
Here is the call graph for this function:| void fers_signal::to_json | ( | nlohmann::json & | j, |
| const RadarSignal & | rs | ||
| ) |
Definition at line 601 of file json_serializer.cpp.
References EPSILON, fmcwChirpDirectionToken(), and max.
Here is the call graph for this function:| void fers_signal::upsample | ( | const std::span< const ComplexType > | in, |
| const unsigned | size, | ||
| std::span< ComplexType > | out | ||
| ) |
Upsamples a complex waveform with zero-stuffing followed by Blackman FIR filtering.
Upsamples a signal by a given ratio.
The production path uses a fixed-length single-stage FIR, so unsupported ratios fail fast before filtering begins.
| in | Input span of base-rate complex samples. |
| size | Number of input samples to process from in. |
| out | Output span receiving size * oversampleRatio() filtered samples. |
| std::runtime_error | if the configured oversampling ratio is unsupported. |
| in | Input span of complex samples. |
| size | Size of the input signal. |
| out | Output span for upsampled complex samples. |
| std::invalid_argument | if the input or output spans are empty or the ratio is zero. |
Definition at line 145 of file dsp_filters.cpp.
References max, params::oversampleRatio(), and params::renderFilterLength().
Referenced by fers_signal::Signal::load(), and fers_signal::DecadeUpsampler::~DecadeUpsampler().
Here is the call graph for this function:
Here is the caller graph for this function: