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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> После децимации фильтр - не фильтр, Децимация на 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
HFSSLer
сообщение Nov 27 2011, 13:03
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 74
Регистрация: 29-10-09
Из: Воронеж
Пользователь №: 53 299



Если выводите на ЦАП с частотой 22 кГц, то должен быть после ЦАП аналоговый реконструирующий ФНЧ с частотой задерживания выше Fc/2, т. е. выше 11 кГц должно быть приемлемое для вас затухание, иначе будут возникать отражения спектра.

Сообщение отредактировал HFSSLer - Nov 27 2011, 13:12
Go to the top of the page
 
+Quote Post
avmsystem
сообщение Nov 27 2011, 16:42
Сообщение #3


Участник
*

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



Цитата(HFSSLer @ Nov 27 2011, 16:03) *
Если выводите на ЦАП с частотой 22 кГц, то должен быть после ЦАП аналоговый реконструирующий ФНЧ с частотой задерживания выше Fc/2, т. е. выше 11 кГц должно быть приемлемое для вас затухание, иначе будут возникать отражения спектра.


Я тоже так подумал поначалу, и поставил в качестве цап аудиокодек CS42L51 у которого все это хозяйство уже внутри есть (он делает оверсемплинг на 128Fs и последующую фильтрацию), результат тот же.
Go to the top of the page
 
+Quote Post
V_G
сообщение Nov 27 2011, 16:44
Сообщение #4


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

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



Вообще-то до децимации, а не после ЦАП, должен быть хороший, а не "небольшой" фильтр, давящий частоты выше 11 кГц.
Go to the top of the page
 
+Quote Post
HFSSLer
сообщение Nov 27 2011, 18:12
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 74
Регистрация: 29-10-09
Из: Воронеж
Пользователь №: 53 299



Может действительно из какой-нибудь верхней зоны Найквиста перекочевали? Чудес в этом деле не бывает.
Go to the top of the page
 
+Quote Post
avmsystem
сообщение Nov 28 2011, 07:50
Сообщение #6


Участник
*

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



Цитата(V_G @ Nov 27 2011, 20:44) *
Вообще-то до децимации, а не после ЦАП, должен быть хороший, а не "небольшой" фильтр, давящий частоты выше 11 кГц.


Вопрос не в том "хороший" или "небольшой" фильтр, а в том что его измеренная ачх после децимации другая.
Go to the top of the page
 
+Quote Post
V_G
сообщение Nov 28 2011, 07:57
Сообщение #7


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

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



Цитата(avmsystem @ Nov 28 2011, 17:50) *
Вопрос не в том "хороший" или "небольшой" фильтр, а в том что его измеренная ачх после децимации другая.

Она и будет другая, если вы ДО децимации не обеспечите подавление частот выше 11 кГц на 60 или более дБ (в зависимости от задачи)
А у вас подавление 30 дБ, чего вы хотите?
Go to the top of the page
 
+Quote Post
Самурай
сообщение Nov 28 2011, 09:20
Сообщение #8


Местный
***

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



Цитата(avmsystem @ Nov 28 2011, 10:50) *
Вопрос не в том "хороший" или "небольшой" фильтр, а в том что его измеренная ачх после децимации другая.


Скорее всего, у Вас где-то ошибка. Возможно, что-то у Вас ломается при добавлении децимации. Информации мало. Что за фильтр? Как измеряете АЧХ? Аппаратная платформа (DSP/FPGA)? Ну и т.д.
Go to the top of the page
 
+Quote Post
V_G
сообщение Nov 28 2011, 11:01
Сообщение #9


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

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



Цитата(Самурай @ Nov 28 2011, 19:20) *
Скорее всего, у Вас где-то ошибка.

Почему "где-то", если элементарно не соблюдаются условия теоремы Котельникова?
Go to the top of the page
 
+Quote Post
avmsystem
сообщение Nov 28 2011, 11:09
Сообщение #10


Участник
*

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



Цитата(Самурай @ Nov 28 2011, 13:20) *
Скорее всего, у Вас где-то ошибка. Возможно, что-то у Вас ломается при добавлении децимации. Информации мало. Что за фильтр? Как измеряете АЧХ? Аппаратная платформа (DSP/FPGA)? Ну и т.д.


Фильтр делаю на STM32 (arm), ацп его внутренний, цап внешний cs42l51.

АЧХ снимаю обычным способом на входе генератор, на выходе миливольтметр и осциллограф.

Фильтр обрабатывает данные пачками по 100 отсчетов.
Вот его реализация:
Код
#define lentg 10
void filtr(void)
  {
    const int16_t FIRCoef[lentg] = { -1380,-298,5444,15153,22974,22974,15153,5444,-298,-1380};
    
    static int16_t x[lentg];
    int32_t  y=0;    
    uint16_t n;
    
    for(int i=0; i<100; i++)//обсчет сразу 100 сэмплов
      {
        for(n=lentg-1; n>0; n--) x[n] = x[n-1];

        x[0] = ADC_array[i];
        y=0;
        for(n=0; n<(lentg/2); n++) y += FIRCoef[n] * (x[n]+x[(lentg-1)-n]);          
              
        DAC_array[i]=(int16_t)(y>>13);        
      }
  }


Графики с децимацией и без:



Go to the top of the page
 
+Quote Post
Alex11
сообщение Nov 28 2011, 19:41
Сообщение #11


Гуру
******

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



Что-то у Вас не так в системе. Какая амплитуда сигнала после АЦП? Если полные 16 бит - то у Вас переполнение в фильтре на выходе. Должет быть сдвиг на 16, а не на 13. Кроме того, спектр сигнала даже до децимации отличается от теоретического. Ваш фильтр на модели дает другую характеристику:

Прикрепленное изображение
Go to the top of the page
 
+Quote Post
avmsystem
сообщение Nov 29 2011, 04:17
Сообщение #12


Участник
*

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



Цитата(Alex11 @ Nov 28 2011, 23:41) *
Что-то у Вас не так в системе. Какая амплитуда сигнала после АЦП? Если полные 16 бит - то у Вас переполнение в фильтре на выходе. Должет быть сдвиг на 16, а не на 13. Кроме того, спектр сигнала даже до децимации отличается от теоретического. Ваш фильтр на модели дает другую характеристику:

Прикрепленное изображение

ацп (и соотв-но отсчеты на входе фильтра) 12 разрядный, а сдвиг на 13 после фильтра - это я его к 16 разрядам привожу для цап. Переполнения нет, синус в норме, проверено.
Спектр похож, еслу уж говорить более подробно, то без децимации система у меня работает на 46кгц с копейками.
А когда используется децимация то на около 43кгц и соответственно 21,5кгц на выходе.

Просто у STM32 такой не очень удобный делитель для I2S стоит, по другому сделать пока не получается.

Поэтому и спектр немного другой, но это ничего не меняет, просто горбы немного по частотной оси смещаются,
а суть-то остается прежняя.


Цитата(V_G @ Nov 28 2011, 15:01) *
Почему "где-то", если элементарно не соблюдаются условия теоремы Котельникова?


Я не совсем понимаю причем здесь теорема Котельникова, про наложение спектров все в курсе.
Но я не помню, чтобы в теореме говорилось про минимально допустимое затухание.
Меня устроит алиазинг с ослаблением более 30дБ, поэтому и фильтр такой, но после децимации он не дает
то что требуется, вот в чем вопрос.

Может быть Вы помните из теоремы что-то более глубокое? Поясните пожалуйста свою мысль.


Go to the top of the page
 
+Quote Post
V_G
сообщение Nov 29 2011, 05:41
Сообщение #13


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

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



Пожалуйста.
Теорема Котельникова задает ограничение на сигнал при дискретизации. Причем это касается всех видов дискретизации по времени, в том числе и передискретизации, и децимации. При первой дискретизации (перед АЦП) вы, наверное, выполнили это ограничение. А при второй (перед децимацией) выполнять не собираетесь. Т.е. понижая частоту дискретизации вдвое, спектр перед децимаций ужимать не хотите. Как же у вас случится ослабление БОЛЕЕ 30 дБ, если на новой верхней частоте спектра (11 кГц) имеете ослабление 30 дБ?
Go to the top of the page
 
+Quote Post
Fast
сообщение Nov 29 2011, 07:23
Сообщение #14


Местный
***

Группа: Свой
Сообщений: 216
Регистрация: 31-03-05
Из: Зеленоград
Пользователь №: 3 839



for(n=0; n<(lentg/2); n++) y += FIRCoef[n] * (x[n]+x[(lentg-1)-n]);
DAC_array[i]=(int16_t)(y>>13);

замените на

for(n=0; n<(lentg/2); n++) y += (FIRCoef[n] * (x[n]+x[(lentg-1)-n]) >> 2);
DAC_array[i]=(int16_t)(y>>11);

есть подозрение на переполнение y
Go to the top of the page
 
+Quote Post
Самурай
сообщение Nov 29 2011, 12:19
Сообщение #15


Местный
***

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



Цитата(avmsystem @ Nov 29 2011, 07:17) *
Спектр похож, еслу уж говорить более подробно, то без децимации система у меня работает на 46кгц с копейками. А когда используется децимация то на около 43кгц и соответственно 21,5кгц на выходе.

Просто у STM32 такой не очень удобный делитель для I2S стоит, по другому сделать пока не получается.

Поэтому и спектр немного другой, но это ничего не меняет, просто горбы немного по частотной оси смещаются, а суть-то остается прежняя.


Первый момент: если все сделано корректно, то таких эффектов, как у Вас на графике АЧХ, не должно быть в принципе.

Момент второй: на мой взгляд, вот эти две Ваши фразы очень слабо между собой согласуются:
Цитата(avmsystem @ Nov 27 2011, 15:19)
Теперь просто выкидываю каждый второй отсчет и получается совсем другой результат.
Fs теперь равно 22кГц.

и
Цитата(avmsystem @ Nov 29 2011, 07:17) *
А когда используется децимация то на около 43кгц и соответственно 21,5кгц на выходе.

Так на какой же все-таки частоте у Вас работает ЦАП, когда Вы используете децимацию?

Момент третий: А выполняются ли у Вас правильные соотношения между частотами всех сигналов I2S ЦАПа? Какова частота MCLK, LRCK и SCLK сигналов? В каком режиме работает ЦАП, Slave Mode или Master Mode? Не может быть так, что Ваш эффект вызван тем, что у ЦАП просто срывает крышу?sm.gif

И еще, Вы смотрели осциллографом, что творится на выходе ЦАПа? И действительно ли когда Вы подаете на вход синус, к примеру 15кГц, он у Вас заворачивается на выходе ЦАП в 7кГц?

А вообще, если есть такая возможность, то лучше конечно скидывать данные на комп и уже там анализировать АЧХ.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 19th July 2025 - 16:38
Рейтинг@Mail.ru


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