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

 
 
> Выбор разрядности на выходе фильтров
Artunique
сообщение May 27 2015, 08:24
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 56
Регистрация: 25-11-14
Из: Санкт-Петербург
Пользователь №: 83 820




Добрый день. Реализую приемник прямого преобразования на ПЛИС. Сначала скидываю сигнал на ноль с помощью NCO, затем фильтрую CIC и FIR фильтрами. Что на вход каждого фильтра, что на выход, можно загонять сигнал любой разрядности. Как ее выбирать? исходя из чего? Динамический диапазон вроде обеспечил требуемый, а вот с избирательностью по соседнему каналу никак не получается. Получаемые значения очень сильно зависят от разрядности. Как ее грамотно выбрать? При учете того, что с АЦП идет 14 бит и на выходе FIR фильтра нужна конкретная разрядность 24 бита. Заранее спасибо.
Go to the top of the page
 
+Quote Post
3 страниц V   1 2 3 >  
Start new topic
Ответов (1 - 38)
Alexey_Rostov
сообщение May 27 2015, 10:07
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 236
Регистрация: 28-06-13
Из: Минск, Беларусь
Пользователь №: 77 312



Цитата(Artunique @ May 27 2015, 11:24) *
Что на вход каждого фильтра, что на выход, можно загонять сигнал любой разрядности. Как ее выбирать? исходя из чего? Динамический диапазон вроде обеспечил требуемый, а вот с избирательностью по соседнему каналу никак не получается. Получаемые значения очень сильно зависят от разрядности. Как ее грамотно выбрать? При учете того, что с АЦП идет 14 бит и на выходе FIR фильтра нужна конкретная разрядность 24 бита. Заранее спасибо.

Разрядность сигнала на вход я выбирал исходя из разрядности АЦП, отбросив шумящие младшие разряды. В моём случае из 14 я брал только 8. Коэффициенты фильтра рассчитал в матлабе и далее округлил до целого значения в 16ти или 32 разрядной сетке. На выходе округлил значения до требуемой разрядности. Все действия проверял матлабом.
Go to the top of the page
 
+Quote Post
Artunique
сообщение May 27 2015, 10:16
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 56
Регистрация: 25-11-14
Из: Санкт-Петербург
Пользователь №: 83 820



Цитата(farbius @ May 27 2015, 13:07) *
Разрядность сигнала на вход я выбирал исходя из разрядности АЦП, отбросив шумящие младшие разряды. В моём случае из 14 я брал только 8. Коэффициенты фильтра рассчитал в матлабе и далее округлил до целого значения в 16ти или 32 разрядной сетке. На выходе округлил значения до требуемой разрядности. Все действия проверял матлабом.


Я так понимаю, что за избирательность отвечает именно FIR фильтр?
Go to the top of the page
 
+Quote Post
Alexey_Rostov
сообщение May 27 2015, 10:33
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 236
Регистрация: 28-06-13
Из: Минск, Беларусь
Пользователь №: 77 312



Цитата(Artunique @ May 27 2015, 13:16) *
Я так понимаю, что за избирательность отвечает именно FIR фильтр?

После АЦП фильтр. Его частотная характеристика зависит от разрядности при округлении.
Go to the top of the page
 
+Quote Post
des00
сообщение May 27 2015, 10:39
Сообщение #5


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



считайте по эффектиной разрядности = разрядность на входе фильтра + log2(полоса на входе/полоса на выходе) и учтите требуемый вам динамический диапазон. Ну и сам фильтр, для подавления соседнего канала должен быть соотвествующим образом посчитан. Ну и в фильтре промежуточных округлений быть не должно.


--------------------
Go to the top of the page
 
+Quote Post
Artunique
сообщение May 27 2015, 11:49
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 56
Регистрация: 25-11-14
Из: Санкт-Петербург
Пользователь №: 83 820



Цитата(des00 @ May 27 2015, 13:39) *
считайте по эффектиной разрядности = разрядность на входе фильтра + log2(полоса на входе/полоса на выходе) и учтите требуемый вам динамический диапазон. Ну и сам фильтр, для подавления соседнего канала должен быть соотвествующим образом посчитан. Ну и в фильтре промежуточных округлений быть не должно.



Спасибо! А правила округления есть какие-либо? у меня на выходе FIR мегафункция предлагает 50 бит, мне нужно только 24.
Go to the top of the page
 
+Quote Post
des00
сообщение May 27 2015, 12:55
Сообщение #7


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(Artunique @ May 27 2015, 18:49) *
Спасибо! А правила округления есть какие-либо? у меня на выходе FIR мегафункция предлагает 50 бит, мне нужно только 24.

Как по мне, если позволяет ресурс, то взять на 1-2 бит больше и банальный flour. Кстати, учите еще тот факт, что при сильных соседних каналах, АРУ тоже должно быть сделано соответствущим образом.


--------------------
Go to the top of the page
 
+Quote Post
stealth-coder
сообщение May 28 2015, 18:49
Сообщение #8


Частый гость
**

Группа: Участник
Сообщений: 112
Регистрация: 27-12-08
Пользователь №: 42 786



Из собственного опыта:
1. Везде использовать математическое округление, это сильно влияет на качество.
2. Наибольшее влияние на качество оказывает разрядность первых CIC-ов, чем ближе к выходу, тем менее критично.
3. Если есть возможность - делайте разрядность по максимуму, на выходе ставите окно нужного размера (обязательно с округлением) - получаете цифровое АРУ.
Go to the top of the page
 
+Quote Post
serjj
сообщение May 29 2015, 08:01
Сообщение #9


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



Цитата
Везде использовать математическое округление, это сильно влияет на качество.

Его нужно ставить там, где это нужно. Отсутствие математического округления порождает постоянку. Если схема игнорирует постоянку, то округлять не требуется. Также это критично при малых разрядностях, когда постоянка в 1 бит сопоставима с уровнем сигнала.
Цитата
Наибольшее влияние на качество оказывает разрядность первых CIC-ов, чем ближе к выходу, тем менее критично.

На каждой ступени обработки необходимая разрядность считается, как подсказывает des00 по формуле разрядность на входе фильтра + log2(полоса на входе/полоса на выходе). Независимо от структуры фильтра. Просто у первых CICов понижение частоты самое значительное, т.к. они как правило очень узкополосные (за тем их и ставят), поэтому на этой стадии влияние роста разрядности самое критическое.
Цитата
Если есть возможность - делайте разрядность по максимуму, на выходе ставите окно нужного размера (обязательно с округлением) - получаете цифровое АРУ.

Использование максимальной разрядности актуально только в процессорах, т.к. они работают с фиксированной разрядностью в принципе. В ПЛИС такой подход затратен. Нужно разрядность ставить ровно столько, сколько нужно для обеспечения требуемого чутья в приёмнике или точности в передатчике.
Go to the top of the page
 
+Quote Post
stealth-coder
сообщение May 29 2015, 17:26
Сообщение #10


Частый гость
**

Группа: Участник
Сообщений: 112
Регистрация: 27-12-08
Пользователь №: 42 786



Цитата(serjj @ May 29 2015, 11:01) *
Его нужно ставить там, где это нужно. Отсутствие математического округления порождает постоянку. Если схема игнорирует постоянку, то округлять не требуется. Также это критично при малых разрядностях, когда постоянка в 1 бит сопоставима с уровнем сигнала.


Отбрасываемые разряды тоже содержат информацию, при простом обрезании она теряется, при округлении - частично сохраняется.

Цитата(serjj @ May 29 2015, 11:01) *
На каждой ступени обработки необходимая разрядность считается, как подсказывает des00 по формуле разрядность на входе фильтра + log2(полоса на входе/полоса на выходе). Независимо от структуры фильтра. Просто у первых CICов понижение частоты самое значительное, т.к. они как правило очень узкополосные (за тем их и ставят), поэтому на этой стадии влияние роста разрядности самое критическое.


Формула корректная, но если пользоваться готовыми реализациями от Xilinx, например, то нельзя выставить произвольную разрядность, в таком случае экономия выходит боком.

Цитата(serjj @ May 29 2015, 11:01) *
Использование максимальной разрядности актуально только в процессорах, т.к. они работают с фиксированной разрядностью в принципе. В ПЛИС такой подход затратен. Нужно разрядность ставить ровно столько, сколько нужно для обеспечения требуемого чутья в приёмнике или точности в передатчике.


В теории - да, в жизни - если в ПЛИСе есть место, почему бы не добавить системе помехоустойчивости?
Go to the top of the page
 
+Quote Post
Hose
сообщение May 30 2015, 05:25
Сообщение #11


Частый гость
**

Группа: Участник
Сообщений: 82
Регистрация: 7-01-15
Пользователь №: 84 450



Я бы добавил: на NCO тоже надо заложить увеличение разрядности не менее чем на 2.
Go to the top of the page
 
+Quote Post
serjj
сообщение Jun 1 2015, 06:24
Сообщение #12


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



Цитата
Я бы добавил: на NCO тоже надо заложить увеличение разрядности не менее чем на 2.

С чем это связано? В моём понимание на смесителе (вы же имеете в виду не сам NCO а смеситель?) динамический диапазон никак не изменяется, т.к. сигнал от NCO идёт в полную шкалу, соответственно, если у нас с NCO сигнал, например, 16 бит, то на перемножение мы добавляем 16 бит, а после спокойно можем их отнять, ничего не потеряв. Вы предлагаете отнять не 16 а 14, правильно я понял? С чем это связано?
Цитата
В теории - да, в жизни - если в ПЛИСе есть место, почему бы не добавить системе помехоустойчивости?

Вы добавляете не помехоустойчивость а точность. Есть например приёмник. На тепловой шум отводится 6-8 разрядов, арифметический шум - 1 разряд. В таком случае очевидно, что тепловой шум много больше арифметического, следовательно арифметическим шумом можно принебречь и оптимальный приём будет работать как в учебнике. Добавляя разрядности, вы увеличиваете точность квантования теплового шума. Т.к. от этого сигнал-шум не поменяется, откуда взяться выигрышу в помехоустойчивости. Другое дело, если у вас рекурсивная схема, в ней 1 битный арифметический шум может вырасти и стать сравнимым или даже большим чем шум тепловой, снизив помехоустойчивость. Или другой пример - выделение сверхмалого сигнала на фоне большой помехи. Если выбрать малую разрядность, то в процессе обработки малый сигнал потеряется, т.к. в процессе выделения используется корреляционная обработка (т.е. фактически эквивалент возведению в квадрат, а это приведет к двукратному росту динамического диапазона, отбросив разрядность очень легко потерять слабый сигнал, который после возведение в квадрат станет еще слабее). С практической точки зрения разрядность все таки уменьшать стоит, но не более чем до разрядности умножителя ПЛИС.

Сообщение отредактировал serjj - Jun 1 2015, 06:27
Go to the top of the page
 
+Quote Post
andyp
сообщение Jun 1 2015, 07:22
Сообщение #13


Местный
***

Группа: Участник
Сообщений: 453
Регистрация: 23-07-08
Пользователь №: 39 163



Цитата(serjj @ Jun 1 2015, 09:24) *
С чем это связано? В моём понимание на смесителе (вы же имеете в виду не сам NCO а смеситель?) динамический диапазон никак не изменяется, т.к. сигнал от NCO идёт в полную шкалу, соответственно, если у нас с NCO сигнал, например, 16 бит, то на перемножение мы добавляем 16 бит, а после спокойно можем их отнять, ничего не потеряв. Вы предлагаете отнять не 16 а 14, правильно я понял? С чем это связано?


Пр повороте вектора длина проекции может увеличиться. Т.е. если на входе ты закладываешься на максимальное значение в каждой квадратуре K, то на выходе надо иметь sqrt(2) * K
Go to the top of the page
 
+Quote Post
serjj
сообщение Jun 1 2015, 07:34
Сообщение #14


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



Цитата
Пр повороте вектора длина проекции может увеличиться. Т.е. если на входе ты закладываешься на максимальное значение в каждой квадратуре K, то на выходе надо иметь sqrt(2) * K

А ведь да ) только тогда можно 1 бит добавить, т.к. sqrt(2) < 2.
Go to the top of the page
 
+Quote Post
Artunique
сообщение Jun 2 2015, 07:26
Сообщение #15


Участник
*

Группа: Участник
Сообщений: 56
Регистрация: 25-11-14
Из: Санкт-Петербург
Пользователь №: 83 820



Цитата(andyp @ Jun 1 2015, 10:22) *
Пр повороте вектора длина проекции может увеличиться. Т.е. если на входе ты закладываешься на максимальное значение в каждой квадратуре K, то на выходе надо иметь sqrt(2) * K



Поясните пожалуйста про NCO. Я умножаю 14 бит с NCO на 14 бит с АЦП. И на выходе сколько бит можно оставить? 16? я правильно понял?


Сообщение отредактировал Artunique - Jun 2 2015, 07:26
Go to the top of the page
 
+Quote Post
thermit
сообщение Jun 2 2015, 07:43
Сообщение #16


Знающий
****

Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730



Цитата(Artunique @ Jun 2 2015, 10:26) *
Поясните пожалуйста про NCO. Я умножаю 14 бит с NCO на 14 бит с АЦП. И на выходе сколько бит можно оставить? 16? я правильно понял?



1.13 x 1.13 -> 2.26 >> 11 -> 1.15
Go to the top of the page
 
+Quote Post
andyp
сообщение Jun 2 2015, 07:54
Сообщение #17


Местный
***

Группа: Участник
Сообщений: 453
Регистрация: 23-07-08
Пользователь №: 39 163



Цитата(Artunique @ Jun 2 2015, 10:26) *
Поясните пожалуйста про NCO. Я умножаю 14 бит с NCO на 14 бит с АЦП. И на выходе сколько бит можно оставить? 16? я правильно понял?


Вы про какой миксер? Я выше про комплексный писал.

Если комплексный, то на выходе для реальной части (мнимая аналогично):

s_re * m_re - s_im * m_im. При знаковом умножении 14 на 14 полчается 27 бит результата (28ой, самый старший разряд после перемножения можно отбросить, он тоже знаковый), при суммировании - всего 28. Итого (после вычитания)- 28 разрядов выхода в каждом квадратурном канале. Если считать, что на гетеродинном входе смесителя числа от -1 до 1, а на сигнальном - целые, то точка, разделяющая целую и дробную часть выхода смесителя будет после 13 разряда (15 старших - целая часть, затем 13 - дробная).

Если на сигнальном входе смесителя реальный сигнал то для действительной части выхода получаем s * m_re. Аналогично, на выходе 14 бит целой части и 13 дробной.
Go to the top of the page
 
+Quote Post
Artunique
сообщение Jun 2 2015, 08:23
Сообщение #18


Участник
*

Группа: Участник
Сообщений: 56
Регистрация: 25-11-14
Из: Санкт-Петербург
Пользователь №: 83 820



Цитата(andyp @ Jun 2 2015, 10:54) *
Вы про какой миксер? Я выше про комплексный писал.

Если комплексный, то на выходе для реальной части (мнимая аналогично):

s_re * m_re - s_im * m_im. При знаковом умножении 14 на 14 полчается 27 бит результата (28ой, самый старший разряд после перемножения можно отбросить, он тоже знаковый), при суммировании - всего 28. Итого (после вычитания)- 28 разрядов выхода в каждом квадратурном канале. Если считать, что на гетеродинном входе смесителя числа от -1 до 1, а на сигнальном - целые, то точка, разделяющая целую и дробную часть выхода смесителя будет после 13 разряда (15 старших - целая часть, затем 13 - дробная).

Если на сигнальном входе смесителя реальный сигнал то для действительной части выхода получаем s * m_re. Аналогично, на выходе 14 бит целой части и 13 дробной.


с АЦП шина 14 бит с комплексными отсчетами идет на 2 одинаковых смесителя. В одном смесителе данные с АЦП умножаются на sin, в другом на cos.

Цитата(andyp @ Jun 2 2015, 10:54) *
Если считать, что на гетеродинном входе смесителя числа от -1 до 1, а на сигнальном - целые, то точка, разделяющая целую и дробную часть выхода смесителя будет после 13 разряда (15 старших - целая часть, затем 13 - дробная).


Поясните пожалуйста, как Вы это рассчитали.

Сообщение отредактировал Artunique - Jun 2 2015, 08:24
Go to the top of the page
 
+Quote Post
andyp
сообщение Jun 2 2015, 08:33
Сообщение #19


Местный
***

Группа: Участник
Сообщений: 453
Регистрация: 23-07-08
Пользователь №: 39 163



Цитата(Artunique @ Jun 2 2015, 11:23) *
Поясните пожалуйста, как Вы это рассчитали.


out_re = s_re * m_re - s_im * m_im;
m_re = mr*2^-13; m_im = mi*2^-13
m_re, m_im - то, на что надо умножить (-1...+1), mi, mr - представление числа в памяти или регистрах

Для сигнального входа представление и само число совпадают.

out_re = (s_re*mr - s_im*mi) * 2(-13) - итого, у результата будет тоже 13 дробных разрядов

Сообщение отредактировал andyp - Jun 2 2015, 08:34
Go to the top of the page
 
+Quote Post
Artunique
сообщение Jun 2 2015, 08:47
Сообщение #20


Участник
*

Группа: Участник
Сообщений: 56
Регистрация: 25-11-14
Из: Санкт-Петербург
Пользователь №: 83 820



Цитата(andyp @ Jun 2 2015, 11:33) *
out_re = s_re * m_re - s_im * m_im;
m_re = mr*2^-13; m_im = mi*2^-13
m_re, m_im - то, на что надо умножить (-1...+1), mi, mr - представление числа в памяти или регистрах

Для сигнального входа представление и само число совпадают.

out_re = (s_re*mr - s_im*mi) * 2(-13) - итого, у результата будет тоже 13 дробных разрядов



Спасибо большое. Только все равно не пойму почему m_re = mr*2^-13; m_im = mi*2^-13. почему именно число 13?
Go to the top of the page
 
+Quote Post
andyp
сообщение Jun 2 2015, 09:08
Сообщение #21


Местный
***

Группа: Участник
Сообщений: 453
Регистрация: 23-07-08
Пользователь №: 39 163



Цитата(Artunique @ Jun 2 2015, 11:47) *
Спасибо большое. Только все равно не пойму почему m_re = mr*2^-13; m_im = mi*2^-13. почему именно число 13?


Всего бит 14 (по условию), 1 бит - знак. Остальные 13 используются для хранения дробных бит значения синуса или косинуса из диапазона (-1..1). Это позволяет при заданной разрядности сохранить в регистре наибольшее количество значащих бит.
Go to the top of the page
 
+Quote Post
Artunique
сообщение Jun 2 2015, 10:08
Сообщение #22


Участник
*

Группа: Участник
Сообщений: 56
Регистрация: 25-11-14
Из: Санкт-Петербург
Пользователь №: 83 820



Цитата(andyp @ Jun 2 2015, 12:08) *
Всего бит 14 (по условию), 1 бит - знак. Остальные 13 используются для хранения дробных бит значения синуса или косинуса из диапазона (-1..1). Это позволяет при заданной разрядности сохранить в регистре наибольшее количество значащих бит.


Понял, спасибо. В общем в итоге-то что? 15 старших бит оставляю, а остальное можно выкинуть?
Go to the top of the page
 
+Quote Post
andyp
сообщение Jun 2 2015, 10:26
Сообщение #23


Местный
***

Группа: Участник
Сообщений: 453
Регистрация: 23-07-08
Пользователь №: 39 163



Цитата(Artunique @ Jun 2 2015, 13:08) *
Понял, спасибо. В общем в итоге-то что? 15 старших бит оставляю, а остальное можно выкинуть?


Если есть вещественный смеситель 14x14 (вход умножается на синус или косинус), то из 28 выходных можно отбросить один старший разряд (он повторяет знак) и 13 младших, где сидит дробная часть. Итого останется 14 разрядов.
Go to the top of the page
 
+Quote Post
Artunique
сообщение Jun 2 2015, 10:43
Сообщение #24


Участник
*

Группа: Участник
Сообщений: 56
Регистрация: 25-11-14
Из: Санкт-Петербург
Пользователь №: 83 820



Цитата(andyp @ Jun 2 2015, 13:26) *
Если есть вещественный смеситель 14x14 (вход умножается на синус или косинус), то из 28 выходных можно отбросить один старший разряд (он повторяет знак) и 13 младших, где сидит дробная часть. Итого останется 14 разрядов.


Разобрался, спасибо. А еще вопрос про FIR фильтр. Если на выходе режу например 15 младших бит, то динамический диапазон вообще никакой. А если режу 5 старших и 10 младших, то картина лучше становится. Есть ли здесь правила какие-то?

Сообщение отредактировал Artunique - Jun 2 2015, 10:45
Go to the top of the page
 
+Quote Post
andyp
сообщение Jun 2 2015, 12:11
Сообщение #25


Местный
***

Группа: Участник
Сообщений: 453
Регистрация: 23-07-08
Пользователь №: 39 163



Цитата(Artunique @ Jun 2 2015, 13:43) *
Разобрался, спасибо. А еще вопрос про FIR фильтр. Если на выходе режу например 15 младших бит, то динамический диапазон вообще никакой. А если режу 5 старших и 10 младших, то картина лучше становится. Есть ли здесь правила какие-то?


Максимум, на какой может разогнаться сигнал на выходе FIR равен сумме абсолютных величин отсчетов импульсной характеристики. log2 этой суммы даст максимальное увеличение разрядности на выходе. Если редкие переполнения допустимы и фильтр - ФНЧ, то можно оценить требуемое увеличение разрядности просто как сумму отсчетов ИХ (фактически, это коэффициент передачи фильтра на 0).
Go to the top of the page
 
+Quote Post
Artunique
сообщение Jun 2 2015, 12:30
Сообщение #26


Участник
*

Группа: Участник
Сообщений: 56
Регистрация: 25-11-14
Из: Санкт-Петербург
Пользователь №: 83 820



Цитата(andyp @ Jun 2 2015, 15:11) *
Максимум, на какой может разогнаться сигнал на выходе FIR равен сумме абсолютных величин отсчетов импульсной характеристики. log2 этой суммы даст максимальное увеличение разрядности на выходе. Если редкие переполнения допустимы и фильтр - ФНЧ, то можно оценить требуемое увеличение разрядности просто как сумму отсчетов ИХ (фактически, это коэффициент передачи фильтра на 0).



А еще в чем смысл производить децимацию в несколько этапов? В чем разница, поставлю я один фильтр с коэффициентом децимации 300 или поставлю два с коэффициентами 15 и 20?
Go to the top of the page
 
+Quote Post
andyp
сообщение Jun 2 2015, 13:18
Сообщение #27


Местный
***

Группа: Участник
Сообщений: 453
Регистрация: 23-07-08
Пользователь №: 39 163



Цитата(Artunique @ Jun 2 2015, 15:30) *
А еще в чем смысл производить децимацию в несколько этапов? В чем разница, поставлю я один фильтр с коэффициентом децимации 300 или поставлю два с коэффициентами 15 и 20?


В количестве вычислениий, которые придется сделать. Это что, блитц из "Что? Где? Когда?" sm.gif)
Go to the top of the page
 
+Quote Post
serjj
сообщение Jun 2 2015, 13:19
Сообщение #28


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



Цитата
А еще вопрос про FIR фильтр.

Если фильтр делали сами, то смотрите где у вас там округление (либо на умножениях либо на интеграторе) и порулите им, чтобы прикурить побольше мощности на выходе. Если не взяли готовый, то как вам сказал andyp, все дело в импульсной, нужно её смасштабировать, чтобы поднять мощность на выходе. Если будете варьировать разрядностью только по выходу, то можете немного дБ профукать. Ну и все эти махинации нужно производить для самого большого сигнала, который может прийти на вход приёмника, чтобы ничего не переполнялось. Если после этого у вас чутьё пропадет вдруг, то значит где-то ошибка - неправильно фильтр посчитан, пожелели разрядности и т.д.
Цитата
А еще в чем смысл производить децимацию в несколько этапов? В чем разница, поставлю я один фильтр с коэффициентом децимации 300 или поставлю два с коэффициентами 15 и 20?

Абсолютно никакого смысла в этом нет, если вы сможете сделать это в 1 каскад и еще и обеспечить требования заказчика по согласованности полосы, крутизны фильтра, согласованного с полосой, удовлетворите критерий Найквиста по MSI, если у вас SC и т.д. rolleyes.gif
Go to the top of the page
 
+Quote Post
Artunique
сообщение Jun 2 2015, 13:32
Сообщение #29


Участник
*

Группа: Участник
Сообщений: 56
Регистрация: 25-11-14
Из: Санкт-Петербург
Пользователь №: 83 820



Цитата(andyp @ Jun 2 2015, 16:18) *
В количестве вычислениий, которые придется сделать. Это что, блитц из "Что? Где? Когда?" sm.gif)



Нет, просто мало информации про это все. Приемник заработал, а вот избирательность хромает и непонятно что где крутить )
Go to the top of the page
 
+Quote Post
andyp
сообщение Jun 2 2015, 13:55
Сообщение #30


Местный
***

Группа: Участник
Сообщений: 453
Регистрация: 23-07-08
Пользователь №: 39 163



Цитата(Artunique @ Jun 2 2015, 16:32) *
Нет, просто мало информации про это все. Приемник заработал, а вот избирательность хромает и непонятно что где крутить )


Избирательность по соседнему каналу Вашего приемника определяется фильтром, попробуйте загнать усиление АРУ на максимум и посмотреть на спектр того, что на выходе приемника. Должна быть АЧХ Вашего фильтра. Еще, как вариант, где-то что-то перегружается.
Go to the top of the page
 
+Quote Post
Artunique
сообщение Jun 2 2015, 14:06
Сообщение #31


Участник
*

Группа: Участник
Сообщений: 56
Регистрация: 25-11-14
Из: Санкт-Петербург
Пользователь №: 83 820



Цитата(andyp @ Jun 2 2015, 16:55) *
Избирательность по соседнему каналу Вашего приемника определяется фильтром, попробуйте загнать усиление АРУ на максимум и посмотреть на спектр того, что на выходе приемника. Должна быть АЧХ Вашего фильтра. Еще, как вариант, где-то что-то перегружается.


Каким именно фильтром? В приемнике я изменил только часть, отвечающую за сброс на ноль несущей и процесс децимации. До этого стояла отдельная микросхема, все работало. Теперь я все это сделал в плис. Даже коэффициенты FIRа оставил прежними. Как я понимаю, дело исключительно в операциях с разрядами.
Go to the top of the page
 
+Quote Post
andyp
сообщение Jun 2 2015, 14:23
Сообщение #32


Местный
***

Группа: Участник
Сообщений: 453
Регистрация: 23-07-08
Пользователь №: 39 163



Цитата(Artunique @ Jun 2 2015, 17:06) *
Каким именно фильтром? В приемнике я изменил только часть, отвечающую за сброс на ноль несущей и процесс децимации. До этого стояла отдельная микросхема, все работало. Теперь я все это сделал в плис. Даже коэффициенты FIRа оставил прежними. Как я понимаю, дело исключительно в операциях с разрядами.


FIR на последней стадии децимации. Все, что работает на более высоких частотах дискретизации - более широкополосно. Спектр шума на выходе приемника как раз и скажет, правильно ли работает FIR - на выходе должна быть его АЧХ, даже если что и перегружается до него. Если АЧХ нет, то перегруз происходит внутри этого фильтра.
Go to the top of the page
 
+Quote Post
Artunique
сообщение Jun 2 2015, 14:33
Сообщение #33


Участник
*

Группа: Участник
Сообщений: 56
Регистрация: 25-11-14
Из: Санкт-Петербург
Пользователь №: 83 820



Цитата(andyp @ Jun 2 2015, 17:23) *
FIR на последней стадии децимации. Все, что работает на более высоких частотах дискретизации - более широкополосно. Спектр шума на выходе приемника как раз и скажет, правильно ли работает FIR - на выходе должна быть его АЧХ, даже если что и перегружается до него. Если АЧХ нет, то перегруз происходит внутри этого фильтра.


Как я посмотрю спектр на выходе FIR? Там же отсчеты валятся. Кроме как загонять их в регистры dsp и потом обрабатывать на компе никаких вариантов не придумывается 05.gif
Go to the top of the page
 
+Quote Post
andyp
сообщение Jun 2 2015, 15:21
Сообщение #34


Местный
***

Группа: Участник
Сообщений: 453
Регистрация: 23-07-08
Пользователь №: 39 163



Цитата(Artunique @ Jun 2 2015, 17:33) *
Как я посмотрю спектр на выходе FIR? Там же отсчеты валятся. Кроме как загонять их в регистры dsp и потом обрабатывать на компе никаких вариантов не придумывается 05.gif


Ну да. Обычно так и делают. Если внутри FPGA есть доступные ресурсы, то можно всякую инструментовку для отладки FPGA поиспользовать, чтобы вытянуть отсчеты на PC - типа альтеровского ChipScope.

Ну и нечто для визуализации выхода приемника все равно потребуется, если будешь его сдавать. Как еще подтвердить его соответствие ТЗ?

Сообщение отредактировал andyp - Jun 2 2015, 15:35
Go to the top of the page
 
+Quote Post
serjj
сообщение Jun 2 2015, 20:25
Сообщение #35


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



А вот тут то и начнётся самое интересное. В случае с такой тривиальной вещью как узкополосный DDC обработка пишется за неделю-полторы, а всё остальное время делается отладочный интерфейс, если его еще нет. Со временем конечно выработаются шаблоны и заготовки, а то и вовсе универсальный интерфейс, но в первый раз придётся поднапрячься. Вывод на комп через COM порт (медленный канал) или Ethernet+UDP (быстрый канал). Если есть возможность по ресурсам сразу ставте простенький проц, т.к. на него потом еще можно что-нибудь понавешать в плане управления. Если нет, можно и на ПЛИС конечно всё сделать, даже UDP аппаратный, но лучше конечно с процом разобраться, пригодится. На компе в Qt например можно сделать программку, QWT библиотека будет в помощь для построения графиков, сокеты и COM порт идут в комплекте с Qt. Средств Signaltap/Chipscope обычно недостаточно чтобы нормально ЦОС отлаживать да и непрезентабельно это.

Сообщение отредактировал serjj - Jun 2 2015, 20:26
Go to the top of the page
 
+Quote Post
Artunique
сообщение Jun 24 2015, 12:43
Сообщение #36


Участник
*

Группа: Участник
Сообщений: 56
Регистрация: 25-11-14
Из: Санкт-Петербург
Пользователь №: 83 820



Цитата(serjj @ Jun 2 2015, 16:19) *
Если фильтр делали сами, то смотрите где у вас там округление (либо на умножениях либо на интеграторе) и порулите им, чтобы прикурить побольше мощности на выходе. Если не взяли готовый, то как вам сказал andyp, все дело в импульсной, нужно её смасштабировать, чтобы поднять мощность на выходе.



Фильтр взял готовый. По поводу масштабирования: большое количество лишних старших разрядов на выходе фильтра говорит как раз о том, что ИХ смасштабирована неверно, так? А масштабируется ИХ только за счет увеличения разрядности коэффициентов фильтра?
Go to the top of the page
 
+Quote Post
Krys
сообщение Aug 21 2015, 04:16
Сообщение #37


Гуру
******

Группа: Свой
Сообщений: 2 002
Регистрация: 17-01-06
Из: Томск, Россия
Пользователь №: 13 271



Цитата(Artunique @ Jun 2 2015, 19:30) *
А еще в чем смысл производить децимацию в несколько этапов? В чем разница, поставлю я один фильтр с коэффициентом децимации 300 или поставлю два с коэффициентами 15 и 20?
Выигрыш ещё и в том, что на последующих этапах децимации тактовая частота поступления отсчётов снижается, и фильтры могут работать в т.н. "полифазном" режиме, т.е. когда на одном и том же умножителе обсчитывается сразу несколько коэффициентов последовательно, а на умножитель подаётся повышенная тактовая частота.


--------------------
Зная себе цену, нужно ещё и пользоваться спросом...
Go to the top of the page
 
+Quote Post
Corner
сообщение Sep 20 2015, 21:21
Сообщение #38


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

Группа: Участник
Сообщений: 1 072
Регистрация: 11-12-12
Пользователь №: 74 815



Цитата(Krys @ Aug 21 2015, 07:16) *
Выигрыш ещё и в том, что на последующих этапах децимации тактовая частота поступления отсчётов снижается, и фильтры могут работать в т.н. "полифазном" режиме, т.е. когда на одном и том же умножителе обсчитывается сразу несколько коэффициентов последовательно, а на умножитель подаётся повышенная тактовая частота.

Более того, если использовать коэффициенты децимации равные 2 и дециматоры цепочкой, то экономия аппаратных умножителей вообще будет бешеная...

У меня к ТС сразу ряд вопросов:
1. Какая избирательность по вашему мнению у АЦП. Опишите хоть как-то аппаратную часть!
2. Подробно распишите, сколько и каких разрядов на каждом этапе. Вход, выход.
3. Какой NCO используете. Свой писали/кореген взяли. Штатные Ксайлинкс/Альтера из бесплатных библиотек фуфел полный или надо правильно настроить все параметры, а то такие проблемы неизбежны. Настройки в генераторе ИП в студию.
4. При использовании БИХ фильтров требуется дикое количество дополнительных разрядов. Фильтр их съедает и не давится. Данные на входе нужно расширять, заполняя младшую часть битами обратным знаку. В старшей части исходное число, разумеется.
5. При использовании КИХ фильтров возможны проблемы если результат умножения округляется сразу после умножения, а не на выходе фильтра после суммирования. Плюс, если коэффициенты маленькие относительно выбранной разрядности. Тогда проблемы сходные с п. 4. Что выливается в паразитных лепестках после основной полосы.

Сообщение отредактировал Corner - Sep 20 2015, 21:26
Go to the top of the page
 
+Quote Post
Krys
сообщение Oct 13 2015, 08:32
Сообщение #39


Гуру
******

Группа: Свой
Сообщений: 2 002
Регистрация: 17-01-06
Из: Томск, Россия
Пользователь №: 13 271



Цитата(Corner @ Sep 21 2015, 04:21) *
Более того, если использовать коэффициенты децимации равные 2 и дециматоры цепочкой, то экономия аппаратных умножителей вообще будет бешеная...
А подскажите, пожалуйста, за счёт чего коэффициенты децимации 2 дают экономию умножителей? За счёт half-band фильтров?


Цитата(Corner @ Sep 21 2015, 04:21) *
4. При использовании БИХ фильтров требуется дикое количество дополнительных разрядов. Фильтр их съедает и не давится. Данные на входе нужно расширять, заполняя младшую часть битами обратным знаку. В старшей части исходное число, разумеется.
5. При использовании КИХ фильтров возможны проблемы если результат умножения округляется сразу после умножения, а не на выходе фильтра после суммирования. Плюс, если коэффициенты маленькие относительно выбранной разрядности. Тогда проблемы сходные с п. 4. Что выливается в паразитных лепестках после основной полосы.
А это уже не вопросы )))


--------------------
Зная себе цену, нужно ещё и пользоваться спросом...
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 11th August 2025 - 15:30
Рейтинг@Mail.ru


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