Audio Perfection Forum

Полная версия: FFT и прочее - как правильно?
Вы просматриваете упрощённую версию нашего контента. Просмотр полной версии с полным форматированием.
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
По моему стайт вариабл прекрасно перестраивается любым перемножителем, включая перемножающий ЦАП. По сути там будет получатся контроль тока заряжающего ёмкость интегратора. Кроме того можно использовать DAC как просто перемножитель/делитель и после буфера подавать на интегратор
собсно, генератор и фильтр в структуре стэйт вариабл ничем не отличаются, кроме глубины ПОС.
а если заменить слово "нотчь" на "хай-пасс", заранее знать форму сего хай-пасса и подправить излишнее подавление софтом?
и затем вфотошопить все это действо (или только гармошки) в замерянный прямым образом сигнал вторым каналом...
Не нужно вырезать всю несущую, достаточно убрать ее хотя-бы 10-20дБ ниже искажений АЦП и шум на те-же 10-20дБ выше полки АЦП...
Это все понятно, тут основная проблема - сделать чтобы этот нотч или хайпасс (или банпасс, в случае фильра для генератора), не вносили своих искажений больше, чем измеряемое устройство.
А еще можно интермоды двумя каналами, гены - левый канал - 19к, правый - 20к, сумма не имеет интермодов т.к. они ввиде искажений уже состоялись в отдельных каналах ЦАПа.
Остается проблема АЦП, но очень простая - хоть лоупассом первого порядка срезать несущие 19+20, и на 1к будем иметь первую гармошку.
Или нет... :)
s3t Написал:А еще можно интермоды двумя каналами
Не можно, а нужно. И да, LPF и смотришь 1Кгц
Но интермоды не очень интересный тест, в большинстве случаев он не покажет ничего нового.
По крайней мере в обычном глубокооснике.
Altor Audio Написал:тут основная проблема
Зачем? Коммерческого интереса это особого не представляет поскольку получится достаточно громоздко.
А для себя любимого можно сделать нотч на несколько частот с ручной настройкой.
Посмотреть что нужно. И забыть.
А если убрать вообще гармошки в лупбэке. Т.е., совсем компенсировать в генераторе так, чтоб в лупбеке получалось без искажений.
Допустим записав лупбек, выдернув из него гармошки, перевернув их и использовав запись как генератор (только составляющие несущей и гармошек).
100% инверсия) (можно и более сложно - характеризовать генератор по измеренным гармошкам)

Засунув DUT в лупбек, получится его взаимодействие с уже существующими гармошками, но т.к. они уже откомпенсированы, то будет виден только его вклад.

Конешно все это при условии, что таки удастся компенсировать в ноль)
Это не работает. Поскольку ты не знаешь скоко у генератора и скоко у АЦП. Изменишь уровень, например если Кпередачи устройства не 1, и всё уплыло.
Хотя генератор так в принципе можно откалибровать. Но для этого надо чтоб АЦП имел на порядки меньше гармоник. Или измеряя с режектором.
При этом калибровать компенсацию скорее всего надо будет на разных уровнях.
Если сделать режектор то можно будет ЦАП легко так компенсировать.
А если ЦАП и АЦП тактируются от одного гена можно будет мерять искажения вообще без оконных функций.
да-да, кто-то уже предлагал тут когерентный сэмплинг.
Насколько я понял, когерентный сэмплинг - это просто использование частоты генератора, выставленной в согласии с Fs и длинны FFT так, чтоб количество циклов сигнала было нечетным и цельночисленным за период окна FFT.
Т.е. никакой синхронизации не требуется (окроме уже существующей работы в одном и том-же clock domain и Fs).
Т.е. не надо пытаться заставить генератор стартовать с 0 в каждом периоде окна ФФТ.
И желательно (?) держать количество циклов сигнала равным прайм намберу.

Ок, факап намбер ван - мое "динамичное окно ФФТ, увеличевающееся по мере заполнения буфера" перестает работать в случае когерентности, т.е. придется ждать пока окно ФФТ заполнится до целевого, и только тогда будет достигнута когерентность. ФФФФФ
Т.к. количество циклов генератора на окно ФФТ обязанно быть нечетным, а длинна ФФТ всегда удваивается = соотношение не сработает)

У Prism выцепил еще глубже методику - генерирование мультитон сигнала, соответствующего когерентности.
Т.е. на сколько я понял, генерируется ряд синусов с нечетными цельными циклами на длинну ФФТ. Много синусов. Очень много синусов), например каждые 1.345..Гц для 65к ффт и 44.1к Fs (судя по формуле из вики).
Потом из него можно вычислить всякого разного)



UPD: ЫЫЫ. А что будет с четными гармошками!? Они же дадут четное количество циклов на окно ФФТ!
s3t Написал:чтоб количество циклов сигнала было нечетным и цельночисленным за период окна FFT.
ЕМНИП, лучше чтобы количество циклов было простым числом.

P.S.
Вообще-то, складывается такое мнение, что вопросы "coherent sampling" как-то невнятно описаны.
Например, на длинных FFT будет влияние стабильности (drift) частоты опорного гена... А вот насколько, как этот фифект взвесить? wink

Может в таких случаях уместно использовать дополнительно какое-то очень специфическое окошко? хзхз....
ФШ нивелируется при использовании одного и того-же гена для ЦАП и АЦП, поэтому джиттер невозможно увидеть в лупбеке) Видно лишь
- спектральную утечку оконной функции
- работу ФАПЧ если где-то в процессе использован СПДИФ) (это уже менее кошерно)

Ок, судя по
https://www.renesas.com/eu/en/www/doc/ap...an9675.pdf
прайм (простое число) требуется для того, чтоб просчелкать как можно больше уровней ЦАП/АЦП, иначе мы имеем повторяющиеся значения в окне, что не очень характеризует ЦАП/АЦП.
Но при этом, для удовлетворения самой когерентности (т.е. составляющая спектра падает ровно посередине бина ФФТ) достаточно чтобы количество циклов было цельночисленным.
Значит четные гармошки будут удовлетворять когерентность)


Интересно бы вычислить и заполнение битиков генерированным сигналом - т.е. сколько дискретных уровней было задействовано для создания конкретного сигнала.
И заодно нарисовать гистрограмму (вернее ее отклонение) (ст. 14, http://www.mit.edu/people/klund/A2Dtesting.pdf )
или как-то по другому выдернуть-визуализировать характеристики INL/DNL
Вот еще нашлось такое (может уже проскакивало...)
"A Theoretical View of Coherent Sampling"
https://www.renesas.com/eu/en/www/doc/ap...an9705.pdf
s3t Написал:это просто использование частоты генератора, выставленной в согласии с Fs и длинны FFT так
Насколько я понимаю, количество тактов должно быть степенью двойки. Иначе нельзя будет считать ФФТ, а просто ФТ считается значительно дольше.
И при этом надо чтоб период генератора был кратен длине ФФТ. Т.е, получалось целое количество периодов на интервале выборки. Плюс сама длина ФФТ выбирается
исходя из ширины получающегося бина, или, другими словами, необходимого уровня шума.
И в результате, всего что Вы добьётесь-использование прямоугольного окна вместо других. Ну да, в этом случае не будет "заплывания". А что, оно так сильно мешает?
Тем более что можно всегда попробовать несколько окон и посмотреть что меняется.
При адекватном учитывании вкладов нескольких соседних бинов использование окна не является проблемой, особенно при измерении гармоник.
Поскольку разнос по частоте очень большой.
И оно вам всё надо?
Лучше сделайте адекватно работающее синхронное накопление (до ФФТ). Чтоб было можно использовать более короткое преобразование, но при этом убирать шумы измеряемого устройства.
Это может работать лучше чем очень длинное ФФТ при не очень стабильном генераторе.
Вот нашел книжечку "Accurate and Robust Spectral Testing with Relaxed Instrumentation Requirements"
https://www.springer.com/gp/book/9783319777177

Прицепил и дисер одного из авторов, имеющий к ней отношение.

Может кому будет интересно.
С триггером будет больно для произвольных сигналов(

В случае с непроизвольными (частота ровно укладывается в окно ФФТ) - разници между векторным усреднением между ФФТ, и простым усреднением между кусками сигнала, равными длинной в окно ффт с последующей ффт, быть не должно)

* как и разници с ффт, по длинне в N раз длиннее вышеописанной, где N = количество "усреднений")

Остается мучаться с триггером Sad
s3t Написал:С триггером будет больно для произвольных сигналов(
Ага, это головняк. Мало того, умные люди (АП) ещё и оценивают качество синхронизации и не дают пользоваться этим модом если оно не достаточно. С их точки зрения.
Я намучился с этим в АП. У 2722 очень мелкая максимальная длина ФФТ, всего 32К. Прибор же "античный". И всё время хочется уйти от шумов.
Если под произвольным имеется ввиду всё тот же синус + некий шум + искажения->Ищешь переход через 0, оцениваешь производную...Но только не просто по 2-3 точкам, а по длинней + с оценкой того что может быть на данной частоте синуса. Если совпало-от пересечения берёшь нужную длину ФФТ . Скользишь до следующего пересечения. Получил второй набор. Складываешь с первым. Скользишь дальше...
То что получилось * с окном. Получается что в идеальном случае нужная длина-длина ФФТ + количество периодов синуса равное количеству усреднений. Т.е. в большинстве случаев длинна намного меньше чем просто удваивание всей длинны для получения 3 дБ улучшения. Соответственно, абсолютное уплывание частоты намного меньше.
Ну и конечно это может работать когда +шум + искажения малы по сравнению с основным сигналом.
Что в принципе именно наш случай. Чаше всего.
Если это не так-надо включать дополнительную фильтрацию на тригерный сигнал
Но вообще, каждый раз когда я с этим развлекался в АП, тупо смотришь на результат и думаешь-что за хрень получилась и можно ли этому верить. При том что генератор там очень неплохой.
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18