Functional Description
12-8 ADSP-214xx SHARC Processor Hardware Reference
rate, a fast mode has been added to the filter. When the digital-servo loop
starts up or the sample rate is changed, the digital-servo loop kicks into
fast mode to adjust and settle on the new sample rate. Upon sensing the
digital-servo loop settling down to some reasonable value, the digital-servo
loop kicks into normal or slow mode. During fast mode, the
SRCx_MUTE_OUT bit of the SRC is asserted to remind the user to mute the
SRC which avoids clicks and pops.
The FIR filter is a 64-tap filter in the case of SRCx_FS_OP < SRCx_FS_IP
and is (SRCx_FS_IP)/(SRCx_FS_OP) × 64 taps for the case when
SRCx_FS_IP > SRCx_FS_OP. The FIR filter performs its convolution by
loading in the starting address of the RAM address pointer and the ROM
address pointer from the digital-servo loop at the start of the SRCx_FS_OP
period. The FIR filter then steps through the RAM by decrementing its
address by 1 for each tap, and the ROM pointer increments its address by
the (SRCx_FS_OP/SRCx_FS_IP) × 2
20
ratio for SRCx_FS_IP > SRCx_FS_OP or
2
20
for SRCx_FS_OP < SRCx_FS_IP. Once the ROM address rolls over, the
convolution is complete. The convolution is performed for both the left
and right channels, and the multiply/accumulate circuit used for the con-
volution is shared between the channels.
The (SRCx_FS_IP)/(SRCx_FS_OP) sample rate ratio circuit is used to dynam-
ically alter the coefficients in the ROM for the case when
SRCx_FS_IP > SRCx_FS_OP. The ratio is calculated by comparing the out-
put of an SRCx_FS_OP counter to the output of an SRCx_FS_IP counter. If
SRCx_FS_OP > SRCx_FS_IP, the ratio is held at one. If SRCx_FS_IP >
SRCx_FS_OP, the sample rate ratio is updated if it is different by more than
two SRCx_FS_OP periods from the previous SRCx_FS_OP to SRCx_FS_IP
comparison. This is done to provide some hysteresis to prevent the filter
length from oscillating and causing distortion.
However, the hysteresis of the (SRCx_FS_OP)/(SRCx_FS_IP) ratio circuit can
cause phase mismatching between two SRCs operating with the same
input and output clocks. Since the hysteresis requires a difference of more
than two SRCx_FS_OP periods to update the SRCx_FS_OP and SRCx_FS_IP