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

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

|
Цифрую сигнал на Fs=44кГц, после пропускаю через небольшой КИХ и на ЦАП Смотрю АЧХ, все более менее, начиная с 11кГц (Fs/4) затухание в пределах 30дБ.
Теперь просто выкидываю каждый второй отсчет и получается совсем другой результат. Fs теперь равно 22кГц. Частоты в районе 12-20кГц (теперь они отражены и на выходе они 10-2кГц соответственно) имеют амплитуду всего лишь на 8-10дБ меньше от исходных. Получается, что фильтр теперь не работает как надо! Но без децимации-то фильтр работает.
В общем не понимаю, подскажите, что не так-то?
|
|
|
|
|
 |
Ответов
|
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дБ. И никаких чудес и обмана
|
|
|
|
Сообщений в этой теме
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    Fast Цитата(avmsystem @ Nov 30 2011, 16:08) Кс... Dec 1 2011, 06:39    ivan219 Цитата(avmsystem @ Nov 30 2011, 16:08) Кс... Dec 1 2011, 17:05
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|