rockpool.devices.xylo.syns65302.afe.params

Design parameters for XyloAudio 3 Audio Frontend.

NOTE: Refer to the following documentation file for further details on the design https://spinystellate.office.synsense.ai/saeid.haghighatshoar/agc-for-xylo-v3/blob/master/README.md

Module Attributes

XYLO_MAX_AMP

Due to the differential design of the amplifier

SYSTEM_CLOCK_RATE

The system clock

AUDIO_SAMPLING_RATE

Audio sampling rate of ~48.8 kHz

AUDIO_SAMPLING_RATE_AGC

Audio sampling rate of ~50.0 kHz

NUM_BITS_AGC_ADC

Number of bits allocated for AGC path's digital output

NUM_BITS_PDM_ADC

Number of bits devoted to the final sampled audio obtained after low-pass filtering + decimation.

AUDIO_CUTOFF_FREQUENCY

The upper limit for human audio spectrum 20 kHz

AUDIO_CUTOFF_FREQUENCY_WIDTH

Used as transition widths, set to 20% of the cutoff frequency

PDM_FILTER_DECIMATION_FACTOR

Oversampling factor, how much the signal needs to be decimated or subsampled

PDM_SAMPLING_RATE

Sampling rate/clock rate of PDM module.

DELTA_SIGMA_ORDER

Order of the deltasigma modulator (conventional ones are 2 or 3)

DECIMATION_FILTER_LENGTH

Length of the designed FIR filter

NUM_BITS_FILTER_Q

Number of bits used for quantizing the filter coefficients

SETTLING_TIME_PGA

The settling time (due to working point variation) in PGA NOTE: this is at the moment less than half clock period.

HIGH_PASS_CORNER

high-pass corner due to AC coupling

LOW_PASS_CORNER

low-pass corner due to frequency response or low-pass filtering (e.g., anti-aliasing low-pass filter)

MAX_PGA_GAIN

maximum target gain for PGA

NUM_BITS_COMMAND

Number of bits assigned to command from envelope controller (EC) to programmable-gain amplifier (PGA)

EXP_PGA_GAIN_VEC

Gain vector used in the design of AGC NOTE: we use an exponential gain pattern but other gain patterns are also possible

DEFAULT_PGA_COMMAND_IN_FIXED_GAIN_FOR_PGA_MODE

We have a fixed-gain mode for PGA where PGA ignores the gain-change commands it receives from EC module.

RISE_TIME_CONSTANT

default rise time-constant used for estimating the envelope

FALL_TIME_CONSTANT

default fall time-constant used for estimating the envelope

SATURATION_LEVEL

Saturation level boundary NOTE: we should set the saturation level a little bit lower for two reasons (i) when it is low, the system is more cautious and, when the signal becomes strong suddenly, goes outside saturation very fast. (ii) at the moment, we are using an oversampled ADC with decimation filter where as a result of processing, the quantized signal may not have full rail-to-rail dynamics due to some inner attenuation. If we use a very large saturation level, the weak signal after attenuation may indeed be in saturation but not get detected by EC.

WAITING_TIME_VEC

Waiting times used for waiting before any gain switch

MAX_WAITING_TIME_BEFORE_GAIN_CHANGE

Maximum waiting time before change gain NOTE: This parameter makes sure that the gain change happens with at least some interval independent of how much it is delayed!

RELIABLE_MAX_HYSTERESIS

Reliable hysteresis in detecting the maximum NOTE: to make sure that waiting times are working well, we need to extend waiting times when the signal amplitude increase is significant we measure this by a hysteresis parameter which should be typically around 2 ~ 10 for an ADC with 10 bits

PGA_GAIN_INDEX_VARIATION

  • dynamics of the gain-change at each amplitude level

AMPLITUDE_THRESHOLDS

Threshold amplitude levels NOTE (1): here we are working with the exponential amplitude levels that match the exponential pattern of the gains sequence in PGA.

MAX_WAITING_BITWIDTH

  • what is the largest waiting time length covered by the XyloAudio 3 -> how many bits suffice?

INIFINITY_OF_TRANSIENT_PHASE

In gain smoother we need to adjust the gain slowly to avoid fast gain jump.

NUM_BITS_GAIN_QUANTIZATION

number of bits used for quantizing the gain ratio

NUM_FILTERS

Total number of filters in the filter bank

MAX_SPIKES_INPUT

Maximum number of spikes that input neurons can handle