Offтопик:
Сообщение от
Alex
Если бы я знал как в нем сделать программную коррекцию, может быть и сделал бы
для XMOS мысль такая, но еще не опробованная. SDK v6.15, но думаю и на старых не сильно отличается.
1. Считываем сэмплы правого и левого канала, файл audio.xc в модуле module_usb_audio
для левого считывается пораньше, поэтому сохраняем это значение в какаю нибудь переменную, например
unsigned __temp_L_Sample;
далее немного математики с правым сэмплом:
if(buffIndex)
samplesIn_1[((frameCount-1)&(I2S_CHANS_PER_FRAME-1))+i] = bitrev(sample); // <-- здесь заменить на что то вроде такого: (bitrev(sample)/2+__temp_L_Sample/2)*k;
else
samplesIn_0[((frameCount-1)&(I2S_CHANS_PER_FRAME-1))+i] = bitrev(sample); // <-- здесь заменить на что то вроде такого: (bitrev(sample)/2+__temp_L_Sample/2)*k;
Перед этим конечно желательно проверить на переполнение, но я хочу просто показать суть метода. Всё это можно сделать на DSP, и добавить на оставшуюся производительность DSP какой нибудь ФНЧ, что бы убрать горб после 48 кГц.
В итоге получаем моно АЦП, в котором левый канал обычный, а правый сумма левого и правого, так же можно умножить на заранее посчитанный коэффициент k, зависящий от делителя на входе фильтра, для получения 0 дБ, т.е. калибровка не нужна будет. Конечно действительно измерительного устройства не получится, только для оценки, но эта мера улучшит показатели АЦП на заветные 3дБ в одном канале, что позволит например на том же циррусе получить 123 дБ SNR/DNR/THD+N при -10 дБ входного уровня.
входы естественно должны быть запараллелены
Социальные закладки