реклама на сайте
подробности

 
 
> После децимации фильтр - не фильтр, Децимация на 2. Хрень какая-то!
avmsystem
сообщение Nov 27 2011, 12:19
Сообщение #1


Участник
*

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



Цифрую сигнал на Fs=44кГц, после пропускаю через небольшой КИХ и на ЦАП
Смотрю АЧХ, все более менее, начиная с 11кГц (Fs/4) затухание в пределах 30дБ.

Теперь просто выкидываю каждый второй отсчет и получается совсем другой результат.
Fs теперь равно 22кГц.
Частоты в районе 12-20кГц (теперь они отражены и на выходе они 10-2кГц соответственно)
имеют амплитуду всего лишь на 8-10дБ меньше от исходных.
Получается, что фильтр теперь не работает как надо!
Но без децимации-то фильтр работает.


В общем не понимаю, подскажите, что не так-то?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Alex11
сообщение Nov 29 2011, 20:23
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 106
Регистрация: 23-10-04
Из: С-Петербург
Пользователь №: 965



А SCLK идет 64*Fs? И что все-таки в данных?
Go to the top of the page
 
+Quote Post
avmsystem
сообщение Nov 30 2011, 08:07
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
V_G
сообщение Nov 30 2011, 10:59
Сообщение #4


Профессионал
*****

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



Цитата(avmsystem @ Nov 30 2011, 18:07) *
Если так рассуждать, получается сделал фильтр на 30дБ - получил 0дБ, сделал на 60дБ - после децимации получи 30дБ, сделал на 90 - получи 60!
Так что-ли?

Именно так, если вы не желаете считаться с теорией (кстати, ваш красненький график полностью соответствует теории). Децимация делается с целью уменьшить нагрузку на проц, но за это вы должны кое-чем заплатить, ведь децимация в вашем случае - уменьшение частоты дискретизации аж в 2 раза!
Не верите, пересчитайте чисто для интереса свой фильтр на частоту в 5-10 раз ниже, не меняя числа коэффициентов (и программу тем самым). Совпадение графиков с децимацией и без будет гораздо лучшим
Go to the top of the page
 
+Quote Post
avmsystem
сообщение Nov 30 2011, 12:08
Сообщение #5


Участник
*

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



Всё, нашел грабли!

Стыдно признаться, но не всю правду я поначалу сообщил общественности.
Дело в том, что было у меня 2 почти одинаковые реализации фильтра, одна без децимации,
а вторая с децимацией.
Так вот второй вариант был так сказать "оптимизирован", для того чтобы не считать все выборки, и потом прореживать,
а сдвигать сразу на 2 выборки и один раз считать (ну собст-но как все и делают), чтоб обработка в 2 раза быстрее была.
Так вот эти две выборки входили в сдвиговый регистр задом наперед - сначала последующая а потом предыдущая.
Из-за этого и АЧХ такая веселая получалась, нарочно не придумаешь такой фильтр сгородить.

Ошибку исправил, фильтр рабочий, реализацию его я уже приводил, а АЧХ теперь такая:



Так что извините кого ввел в заблуждение.
Всем большое спасибо за участие. a14.gif

Кстати, кто какие фильтры обычно применяет от алиасинга при оцифровке звука (в частности речи)? С каким затуханием?
Hi-Fi конечно я не имею ввиду.


Отдельное спасибо V_G за его советы.
Был у нас на работе мужик один, на все вопросы знал ответ и любил давать советы.
Когда он только пришел, все очень внимательно слушали его рекомендации и тратили много времени на их анализ.
Но через некоторое время все его стали посылать, типа хорош мозги засирать, но он все равно давал советы.
Переубедить его было невозможно, даже если он говорил одно, а выходило все наоборот, он тут же менял свою позицию
типа "вот я же тебе говорил!".
В общем такой веселый чувак, потом правда уволился, наверное где-то сейчас работает ... rolleyes.gif
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- avmsystem   После децимации фильтр - не фильтр   Nov 27 2011, 12:19
- - HFSSLer   Если выводите на ЦАП с частотой 22 кГц, то должен ...   Nov 27 2011, 13:03
|- - avmsystem   Цитата(HFSSLer @ Nov 27 2011, 16:03) Если...   Nov 27 2011, 16:42
- - V_G   Вообще-то до децимации, а не после ЦАП, должен быт...   Nov 27 2011, 16:44
|- - HFSSLer   Может действительно из какой-нибудь верхней зоны Н...   Nov 27 2011, 18:12
|- - avmsystem   Цитата(V_G @ Nov 27 2011, 20:44) Вообще-т...   Nov 28 2011, 07:50
|- - V_G   Цитата(avmsystem @ Nov 28 2011, 17:50) Во...   Nov 28 2011, 07:57
|- - Самурай   Цитата(avmsystem @ Nov 28 2011, 10:50) Во...   Nov 28 2011, 09:20
|- - V_G   Цитата(Самурай @ Nov 28 2011, 19:20) Скор...   Nov 28 2011, 11:01
|- - avmsystem   Цитата(Самурай @ Nov 28 2011, 13:20) Скор...   Nov 28 2011, 11:09
- - Alex11   Что-то у Вас не так в системе. Какая амплитуда сиг...   Nov 28 2011, 19:41
|- - avmsystem   Цитата(Alex11 @ Nov 28 2011, 23:41) Что-т...   Nov 29 2011, 04:17
|- - Самурай   Цитата(avmsystem @ Nov 29 2011, 07:17) Сп...   Nov 29 2011, 12:19
|- - avmsystem   Цитата(Самурай @ Nov 29 2011, 16:19) Так ...   Nov 29 2011, 16:59
- - V_G   Пожалуйста. Теорема Котельникова задает ограничени...   Nov 29 2011, 05:41
- - Fast   for(n=0; n<(lentg/2); n++) y += FIRCoef[n] * (x...   Nov 29 2011, 07:23
- - Alex11   Я по трезвому размышлению тоже склоняюсь к мысли о...   Nov 29 2011, 14:48
- - V_G   Цитата(avmsystem @ Nov 30 2011, 22:08) От...   Nov 30 2011, 14:21
|- - Самурай   Цитата(V_G @ Nov 30 2011, 17:21) ...что ж...   Nov 30 2011, 18:25
- - Fast   Цитата(avmsystem @ Nov 30 2011, 16:08) Кс...   Dec 1 2011, 06:39
- - ivan219   Цитата(avmsystem @ Nov 30 2011, 16:08) Кс...   Dec 1 2011, 17:05


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 03:01
Рейтинг@Mail.ru


Страница сгенерированна за 0.02088 секунд с 7
ELECTRONIX ©2004-2016