Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Выбор разрядности на выходе фильтров
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
Artunique

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

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


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

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



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

Как по мне, если позволяет ресурс, то взять на 1-2 бит больше и банальный flour. Кстати, учите еще тот факт, что при сильных соседних каналах, АРУ тоже должно быть сделано соответствущим образом.
stealth-coder
Из собственного опыта:
1. Везде использовать математическое округление, это сильно влияет на качество.
2. Наибольшее влияние на качество оказывает разрядность первых CIC-ов, чем ближе к выходу, тем менее критично.
3. Если есть возможность - делайте разрядность по максимуму, на выходе ставите окно нужного размера (обязательно с округлением) - получаете цифровое АРУ.
serjj
Цитата
Везде использовать математическое округление, это сильно влияет на качество.

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

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

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


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

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


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

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


В теории - да, в жизни - если в ПЛИСе есть место, почему бы не добавить системе помехоустойчивости?
Hose
Я бы добавил: на NCO тоже надо заложить увеличение разрядности не менее чем на 2.
serjj
Цитата
Я бы добавил: на NCO тоже надо заложить увеличение разрядности не менее чем на 2.

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

Вы добавляете не помехоустойчивость а точность. Есть например приёмник. На тепловой шум отводится 6-8 разрядов, арифметический шум - 1 разряд. В таком случае очевидно, что тепловой шум много больше арифметического, следовательно арифметическим шумом можно принебречь и оптимальный приём будет работать как в учебнике. Добавляя разрядности, вы увеличиваете точность квантования теплового шума. Т.к. от этого сигнал-шум не поменяется, откуда взяться выигрышу в помехоустойчивости. Другое дело, если у вас рекурсивная схема, в ней 1 битный арифметический шум может вырасти и стать сравнимым или даже большим чем шум тепловой, снизив помехоустойчивость. Или другой пример - выделение сверхмалого сигнала на фоне большой помехи. Если выбрать малую разрядность, то в процессе обработки малый сигнал потеряется, т.к. в процессе выделения используется корреляционная обработка (т.е. фактически эквивалент возведению в квадрат, а это приведет к двукратному росту динамического диапазона, отбросив разрядность очень легко потерять слабый сигнал, который после возведение в квадрат станет еще слабее). С практической точки зрения разрядность все таки уменьшать стоит, но не более чем до разрядности умножителя ПЛИС.
andyp
Цитата(serjj @ Jun 1 2015, 09:24) *
С чем это связано? В моём понимание на смесителе (вы же имеете в виду не сам NCO а смеситель?) динамический диапазон никак не изменяется, т.к. сигнал от NCO идёт в полную шкалу, соответственно, если у нас с NCO сигнал, например, 16 бит, то на перемножение мы добавляем 16 бит, а после спокойно можем их отнять, ничего не потеряв. Вы предлагаете отнять не 16 а 14, правильно я понял? С чем это связано?


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

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



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



1.13 x 1.13 -> 2.26 >> 11 -> 1.15
andyp
Цитата(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 дробной.
Artunique
Цитата(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 - дробная).


Поясните пожалуйста, как Вы это рассчитали.
andyp
Цитата(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 дробных разрядов
Artunique
Цитата(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?
andyp
Цитата(Artunique @ Jun 2 2015, 11:47) *
Спасибо большое. Только все равно не пойму почему m_re = mr*2^-13; m_im = mi*2^-13. почему именно число 13?


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


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


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


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


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



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


В количестве вычислениий, которые придется сделать. Это что, блитц из "Что? Где? Когда?" sm.gif)
serjj
Цитата
А еще вопрос про FIR фильтр.

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

Абсолютно никакого смысла в этом нет, если вы сможете сделать это в 1 каскад и еще и обеспечить требования заказчика по согласованности полосы, крутизны фильтра, согласованного с полосой, удовлетворите критерий Найквиста по MSI, если у вас SC и т.д. rolleyes.gif
Artunique
Цитата(andyp @ Jun 2 2015, 16:18) *
В количестве вычислениий, которые придется сделать. Это что, блитц из "Что? Где? Когда?" sm.gif)



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


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


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


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


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


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

Ну и нечто для визуализации выхода приемника все равно потребуется, если будешь его сдавать. Как еще подтвердить его соответствие ТЗ?
serjj
А вот тут то и начнётся самое интересное. В случае с такой тривиальной вещью как узкополосный DDC обработка пишется за неделю-полторы, а всё остальное время делается отладочный интерфейс, если его еще нет. Со временем конечно выработаются шаблоны и заготовки, а то и вовсе универсальный интерфейс, но в первый раз придётся поднапрячься. Вывод на комп через COM порт (медленный канал) или Ethernet+UDP (быстрый канал). Если есть возможность по ресурсам сразу ставте простенький проц, т.к. на него потом еще можно что-нибудь понавешать в плане управления. Если нет, можно и на ПЛИС конечно всё сделать, даже UDP аппаратный, но лучше конечно с процом разобраться, пригодится. На компе в Qt например можно сделать программку, QWT библиотека будет в помощь для построения графиков, сокеты и COM порт идут в комплекте с Qt. Средств Signaltap/Chipscope обычно недостаточно чтобы нормально ЦОС отлаживать да и непрезентабельно это.
Artunique
Цитата(serjj @ Jun 2 2015, 16:19) *
Если фильтр делали сами, то смотрите где у вас там округление (либо на умножениях либо на интеграторе) и порулите им, чтобы прикурить побольше мощности на выходе. Если не взяли готовый, то как вам сказал andyp, все дело в импульсной, нужно её смасштабировать, чтобы поднять мощность на выходе.



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

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

У меня к ТС сразу ряд вопросов:
1. Какая избирательность по вашему мнению у АЦП. Опишите хоть как-то аппаратную часть!
2. Подробно распишите, сколько и каких разрядов на каждом этапе. Вход, выход.
3. Какой NCO используете. Свой писали/кореген взяли. Штатные Ксайлинкс/Альтера из бесплатных библиотек фуфел полный или надо правильно настроить все параметры, а то такие проблемы неизбежны. Настройки в генераторе ИП в студию.
4. При использовании БИХ фильтров требуется дикое количество дополнительных разрядов. Фильтр их съедает и не давится. Данные на входе нужно расширять, заполняя младшую часть битами обратным знаку. В старшей части исходное число, разумеется.
5. При использовании КИХ фильтров возможны проблемы если результат умножения округляется сразу после умножения, а не на выходе фильтра после суммирования. Плюс, если коэффициенты маленькие относительно выбранной разрядности. Тогда проблемы сходные с п. 4. Что выливается в паразитных лепестках после основной полосы.
Krys
Цитата(Corner @ Sep 21 2015, 04:21) *
Более того, если использовать коэффициенты децимации равные 2 и дециматоры цепочкой, то экономия аппаратных умножителей вообще будет бешеная...
А подскажите, пожалуйста, за счёт чего коэффициенты децимации 2 дают экономию умножителей? За счёт half-band фильтров?


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