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

 
 
> Артефакты в сигнале при децимации
alexkis
сообщение Aug 6 2018, 10:50
Сообщение #1





Группа: Новичок
Сообщений: 4
Регистрация: 9-12-16
Пользователь №: 94 570



Добрый день! Есть проект в котором необходимо произвести децимацию сигнала вплоть до 16000. Столкнулся с тем что с определенного момента вижу артефакты в сигнале, хочу понять откуда они / их природу и можно ли с этим что-нибудь сделать. Объясню подробнее на упрощенном примере:

Есть необходимость децимировать сигнал с частотой дискретизации 96 МГц в 2^11 раз. Т.е. необходимо 11 фильтров с фактором децимации 2 (для того чтобы можно было посмотреть где начинают появляться артефакты).
Вход - 16 бит, внутренняя разрядность между каскадами - 18, коэффициенты фильтров - 18, выход каскада - 16. Так же производится скалирование между каскадами (усиление сигнала сдвигом к младшим разрядам выхода фильтра при усечении, при этом откидываются дублирующие знаковые биты).
Matlab модель каскада: Прикрепленный файл  df_2_firs.zip ( 1.97 килобайт ) Кол-во скачиваний: 14


Спектр входного сигнала (16 бит):
Прикрепленное изображение


При этом наблюдаю некоторые артефакты / составляющие в сигнале которых не ожидаю на выходе каскада (выход 16 бит)
Прикрепленное изображение

Под артефактами я имею ввиду этот "лес палок" над шумом. Уровень палок меняется.

Если выход сделать 18 бит, то спектр будет похож на то что ожидаю увидеть:
Прикрепленное изображение


При этом эти артефакты появляются начиная с 9 фильтра (в 16 битном представлении выхода), выходы фильтров 8 и 9 соответственно:
Прикрепленное изображение

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


Так же собрал проект в железе с этими фильтрами на ядрах Xilinx (+ добавил DDС на входе). В качестве округления при переходе между фильтрами каскада использовал округление к ближайшему целому (когда добавляется старший из отбрасываемых разрядов, модель я смотрел и с таким округлением, по сути ничего не меняется).
При подаче мощного сигнала (5 дБм) с генератора, на выходе каскада, подстраиваясь скейлерами получаю следующий сигнал (16 бит):
Прикрепленное изображение

Т.е. сигнал такой каким я его ожидаю, но если не изменяя скейлеров уйти ниже по мощности (например с 5 дБм на -50 дБм на генераторе):
Прикрепленное изображение

Правда тут артефакты начинают появляться начиная с 8 фильтра.

При этом этот же сигнал в представлении 18 бит выглядит ожидаемо:

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


Еще вопрос в том почему здесь палки похоже что стоят на тех же частотах, но не статичны и, судя по всему, перемещаются по частотам?
Прикрепленное изображение


Структурная схема каскада в железе:
Прикрепленное изображение


PS: если в модели подавать на вход не зашумленный сигнал, то эти палки будет отлично видно (16-битный выход последнего (11) фильтра в каскаде):
Прикрепленное изображение

Получается что это спуры от синусоиды, которые частично закрывает шум?
Если смотреть на выход предпоследнего фильтра (10) в 16 битном виде:

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

Получается что они идут не со входа? Если построить спектр синусоиды (той же частоты что и на входе каскада и с частотой сэмплирования выхода фильтра) без awgn, то получится примерно такая же картина по спурам как и на выходах фильтров:
Код
Fs = 96e+6/2^11;
N = 2^14;
Fc = 15e+3;

t = 0:1/Fs:(N - 1)/Fs;
sig = complex(cos(2*pi*Fc*t), sin(2*pi*Fc*t)).';
% sig = awgn(sig, 65);
sig = sig / max(max(abs(real(sig))), max(abs(imag(sig))));
sig = round(sig * (2^(16 - 1) - 1));

data = sig;
figure(4); periodogram(data, blackmanharris(size(data, 1)), 'centered', 2^(nextpow2(size(data, 1))+1), Fs);


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


Надеюсь Вы прольете мне свет на этот вопрос.
Спасибо!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
alexkis
сообщение Aug 6 2018, 15:45
Сообщение #2





Группа: Новичок
Сообщений: 4
Регистрация: 9-12-16
Пользователь №: 94 570



Цитата(blackfin @ Aug 6 2018, 14:20) *
На мой взгляд, точность промежуточных вычислений недостаточна.

После каждой пары децимирующих фильтров разрядность вычислений должна увеличиваться на один бит. То есть, после децимации на 16000 разрядность семплов на выходе должна быть:

16 + 10*lg(16000)/6 = 16 + 7 = 23 бита.

Буквально каждые пару фильтров? Имеется ввиду конкретный пример с децимацией по 2, как я понял. В реальном проекте используется солянка разных фильтров в каскаде, например - 5 -> 4 -> 200 -> 4. И необходимое число разрядов между каскадами складывается из фактора децимации до каждого следующего фильтра? Если я сделаю в этом примере (с децимацией по 2) между каскадов разрядность 23, а не 18 как сейчас, то на выходе я могу усекать разрядность до 16 или все равно необходимо брать разрядность 23 и на выходе? Откуда берется этот необходимый рост разрядности?

Судя по MatLab модели нельзя на выходе брать разрядность 16 на выходе, даже если между каскадами разрядность 23 сохранять.
Цитата(andyp @ Aug 6 2018, 17:24) *
ИМХО Недофильтрованная ошибка округления предыдущего каскада заворачивается в полезную полосу при каждой децимации.

В примере с MatLab модели используется усечение с round, артефакты есть. Попробую в железе сделать уточненное округление (оно больше похоже на round, чем текущее округление к ближайшему целому). Возможно дрожание по частотам от округления?

PSS. Извините за поток вопросов.

Сообщение отредактировал alexkis - Aug 6 2018, 15:47
Go to the top of the page
 
+Quote Post
blackfin
сообщение Aug 6 2018, 17:34
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 3 106
Регистрация: 18-04-05
Пользователь №: 4 261



Цитата(alexkis @ Aug 6 2018, 18:45) *
Откуда берется этот необходимый рост разрядности?

Рост разрядности возникает в результате увеличения отношения С/Ш на выходе фильтра. Децимирующий фильтр обычно сужает полосу входного сигнала в число раз равное коэффициенту децимации. Как следствие, в той же самой пропорции уменьшается мощность белого шума на выходе дециматора. В вашем случае каждая пара дециматоров с суммарным коэффициентом децимации равным 4 будет уменьшать полосу белого шума в 4 раза. Мощность полезного сигнала при этом остается неизменной. В результате, отношение С/Ш после децимации на 4 увеличится на 6 дБ, то есть, на один разряд.
Go to the top of the page
 
+Quote Post



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

 


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


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