|
После децимации фильтр - не фильтр, Децимация на 2. Хрень какая-то! |
|
|
|
Nov 29 2011, 16:59
|
Участник

Группа: Участник
Сообщений: 17
Регистрация: 3-02-05
Пользователь №: 2 399

|
Цитата(Самурай @ Nov 29 2011, 16:19)  Так на какой же все-таки частоте у Вас работает ЦАП, когда Вы используете децимацию? Момент третий: А выполняются ли у Вас правильные соотношения между частотами всех сигналов I2S ЦАПа? Какова частота MCLK, LRCK и SCLK сигналов? В каком режиме работает ЦАП, Slave Mode или Master Mode? Не может быть так, что Ваш эффект вызван тем, что у ЦАП просто срывает крышу?  Не хотел я здесь в дебри лезть, но если подробно, то система такая: Контроллер STM32F103 имеет встроенный I2S, тактовая 72МГц. Его предделитель для I2S не слишком гибкий и когда его настраиваешь на 44,1кГц, он дает погрешность 6.29%(при тактовой 72МГц) то есть фактически 46,875кГц. Когда переключаешь его на 22,05кГц, он работает на 21,63461кГц(погрешность 1.88%). Такой вот он кривой, кто с ним работал - знает, в даташите это описано. Соотношение у него между MCLK и LRCK фиксированное 256×FS, что тоже не очень гут, но не так страшно. Так вот контроллер работает мастером и сам формирует MCLK, LRCK, SCLK. В связи со всем этим, для того чтобы вся система работала синхронно получается два случая: 1. Без децимации. I2S работает на 46,875кГц, поэтому на этой частоте работает и ЦАП и АЦП. 2. С децимацией. I2S работает на 21,63461кГц, поэтому ЦАП работает тоже на 21,63461кГц, а АЦП работает на удвоенной частоте т.е. 43,26922кГц. Соотношения MCLK, LRCK, SCLK не меняются, так что ЦАПу по барабану он молотит и молотит. А горбы на частотке плывут, это видно и сходится с условиями проведения опыта. Так что с этой стороны (со стороны цап), я думаю огрехов нет. Цитата(Самурай @ Nov 29 2011, 16:19)  И еще, Вы смотрели осциллографом, что творится на выходе ЦАПа? И действительно ли когда Вы подаете на вход синус, к примеру 15кГц, он у Вас заворачивается на выходе ЦАП в 7кГц? А вообще, если есть такая возможность, то лучше конечно скидывать данные на комп и уже там анализировать АЧХ. Осциллографом смотрел, синус действительно заворачивается из 15 в 7кГц, но конечно он не такой чистый получается. На комп скидывать возможности к сожалению нет.
|
|
|
|
|
Nov 30 2011, 08:07
|
Участник

Группа: Участник
Сообщений: 17
Регистрация: 3-02-05
Пользователь №: 2 399

|
Цитата(Alex11 @ Nov 30 2011, 00:23)  А SCLK идет 64*Fs? И что все-таки в данных? SCLK идет 32*Fs (16разраядные данные) режим Left-Justified, и контроллер и цап оба этот режим поддерживают. Данные в норме, т.к. ВИЖУ синус. Цитата(V_G @ Nov 29 2011, 09:41)  Пожалуйста. Теорема Котельникова задает ограничение на сигнал при дискретизации. Причем это касается всех видов дискретизации по времени, в том числе и передискретизации, и децимации. При первой дискретизации (перед АЦП) вы, наверное, выполнили это ограничение. А при второй (перед децимацией) выполнять не собираетесь. Т.е. понижая частоту дискретизации вдвое, спектр перед децимаций ужимать не хотите. Как же у вас случится ослабление БОЛЕЕ 30 дБ, если на новой верхней частоте спектра (11 кГц) имеете ослабление 30 дБ? Я не понимаю Ваших объяснений. Если так рассуждать, получается сделал фильтр на 30дБ - получил 0дБ, сделал на 60дБ - после децимации получи 30дБ, сделал на 90 - получи 60! Так что-ли?
Сообщение отредактировал avmsystem - Nov 30 2011, 08:08
|
|
|
|
|
Nov 30 2011, 10:59
|

Профессионал
    
Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955

|
Цитата(avmsystem @ Nov 30 2011, 18:07)  Если так рассуждать, получается сделал фильтр на 30дБ - получил 0дБ, сделал на 60дБ - после децимации получи 30дБ, сделал на 90 - получи 60! Так что-ли? Именно так, если вы не желаете считаться с теорией (кстати, ваш красненький график полностью соответствует теории). Децимация делается с целью уменьшить нагрузку на проц, но за это вы должны кое-чем заплатить, ведь децимация в вашем случае - уменьшение частоты дискретизации аж в 2 раза! Не верите, пересчитайте чисто для интереса свой фильтр на частоту в 5-10 раз ниже, не меняя числа коэффициентов (и программу тем самым). Совпадение графиков с децимацией и без будет гораздо лучшим
|
|
|
|
|
Nov 30 2011, 12:08
|
Участник

Группа: Участник
Сообщений: 17
Регистрация: 3-02-05
Пользователь №: 2 399

|
Всё, нашел грабли! Стыдно признаться, но не всю правду я поначалу сообщил общественности. Дело в том, что было у меня 2 почти одинаковые реализации фильтра, одна без децимации, а вторая с децимацией. Так вот второй вариант был так сказать "оптимизирован", для того чтобы не считать все выборки, и потом прореживать, а сдвигать сразу на 2 выборки и один раз считать (ну собст-но как все и делают), чтоб обработка в 2 раза быстрее была. Так вот эти две выборки входили в сдвиговый регистр задом наперед - сначала последующая а потом предыдущая. Из-за этого и АЧХ такая веселая получалась, нарочно не придумаешь такой фильтр сгородить. Ошибку исправил, фильтр рабочий, реализацию его я уже приводил, а АЧХ теперь такая:  Так что извините кого ввел в заблуждение. Всем большое спасибо за участие. Кстати, кто какие фильтры обычно применяет от алиасинга при оцифровке звука (в частности речи)? С каким затуханием? Hi-Fi конечно я не имею ввиду. Отдельное спасибо V_G за его советы. Был у нас на работе мужик один, на все вопросы знал ответ и любил давать советы. Когда он только пришел, все очень внимательно слушали его рекомендации и тратили много времени на их анализ. Но через некоторое время все его стали посылать, типа хорош мозги засирать, но он все равно давал советы. Переубедить его было невозможно, даже если он говорил одно, а выходило все наоборот, он тут же менял свою позицию типа "вот я же тебе говорил!". В общем такой веселый чувак, потом правда уволился, наверное где-то сейчас работает ...
|
|
|
|
|
Nov 30 2011, 14:21
|

Профессионал
    
Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955

|
Цитата(avmsystem @ Nov 30 2011, 22:08)  Отдельное спасибо V_G за его советы. Спасибо за спасибо, Очень даже вероятно, что я ни фига не понимаю в цифровой обработке сигналов, либо вы опять что-то недоговариваете. Так объясните мне, дураку, что же в самом деле вы делали при измерениях? Пока я понимаю так: 1. Брали исходный фильтр с частотой дискретизации 44 кГц, подавали на него сигналы от аналогового генератора от 0 до 20 кГц, и построили частотку голубой линией. 2. Потом взяли фильтр с децимацией, т.е. с конечной частотой дискретизации 22 кГц (условно-округлительно), снова подали на него сигналы от 0 до 20 кГц, и получили частотку зеленого цвета? Это как, 12 кГц он давит на 40 дБ, и 20 кГц он давит на 40 дБ?? Вы же сами тут расписывали про заворот спектра!!!
|
|
|
|
|
Nov 30 2011, 18:25
|
Местный
  
Группа: Участник
Сообщений: 468
Регистрация: 4-03-05
Пользователь №: 3 066

|
Цитата(V_G @ Nov 30 2011, 17:21)  ...что же в самом деле вы делали при измерениях? Пока я понимаю так: 1. Брали исходный фильтр с частотой дискретизации 44 кГц, подавали на него сигналы от аналогового генератора от 0 до 20 кГц, и построили частотку голубой линией. 2. Потом взяли фильтр с децимацией, т.е. с конечной частотой дискретизации 22 кГц (условно-округлительно), снова подали на него сигналы от 0 до 20 кГц, и получили частотку зеленого цвета? Это как, 12 кГц он давит на 40 дБ, и 20 кГц он давит на 40 дБ?? Вы же сами тут расписывали про заворот спектра!!! Я позволю себе ответить вместо автора топика. Собственно, как я понял, он именно так вот по пунктам все и делал. И спектр в самом деле заворачивается. И нет ничего удивительного в том, что в случае децимации, 20кГц давятся так же как и 12кГц. Нужно просто не забывать, что фильтр всегда работает на тактовой частоте 44кГц. Есть ли после него децимация сигнала, нет ли децимации - фильтру пофиг, он честно давит все частоты больше 11кГц (на 40дБ в данном случае). Ну а дальше понятно, что если на входе дециматора мы имеем сигнал с уровнем -40дБ, то на выходе дециматора сигналу с бОльшей амплитудой взяться просто неоткуда. Понятно, что после дециматора все, что выше 11кГц завернется в НЧ область, и завернется оно именно с ослаблением в 40дБ. И никаких чудес и обмана
|
|
|
|
|
Dec 1 2011, 06:39
|
Местный
  
Группа: Свой
Сообщений: 216
Регистрация: 31-03-05
Из: Зеленоград
Пользователь №: 3 839

|
Цитата(avmsystem @ Nov 30 2011, 16:08)  Кстати, кто какие фильтры обычно применяет от алиасинга при оцифровке звука (в частности речи)? С каким затуханием? Hi-Fi конечно я не имею ввиду. 40-60 дБ, если не Hi-F. Цитата(V_G @ Nov 30 2011, 18:21)  Это как, 12 кГц он давит на 40 дБ, и 20 кГц он давит на 40 дБ?? Вы же сами тут расписывали про заворот спектра!!! ну все правильно. На 11кГц подавление -20 (синяя), все что выше этой частоты - завернулось в полезную часть, изменив АЧХ (зеленая) на спектре этого не увидеть толком, заметите только при дальнейшей обработки в виде ухудшения С/Ш
|
|
|
|
|
Dec 1 2011, 17:05
|
Местный
  
Группа: Участник
Сообщений: 350
Регистрация: 16-11-08
Пользователь №: 41 680

|
Цитата(avmsystem @ Nov 30 2011, 16:08)  Кстати, кто какие фильтры обычно применяет от алиасинга при оцифровке звука (в частности речи)? С каким затуханием? Вообще наверное корректно будет делать по разрядности АЦП, больше смысла нет а меньше повысится шум в полосе. + если есть сильная помеха в не полосы и при этом сам сигнал мал или вообще отсутствует то при маленьком подавление эта помеха вылезет в полосе и будет слышна.
Сообщение отредактировал ivan219 - Dec 1 2011, 17:09
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|