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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Узкополосный КИХ ФНЧ на FPGA, помогите новичку разобраться
stoker
сообщение Oct 10 2007, 12:51
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 340
Регистрация: 28-11-05
Из: Москва
Пользователь №: 11 469



Уважаемые знатоки! Я новичёк в реализации ЦОС на FPGA. В общем нужно сделать на FPGA ФНЧ с полосой пропускания 0,01 задерживания 0,02 с ослаблением >87Дб.
Но при расчете получается огромный порядок. Ума не приложу, как такое можно реализовать, по стандартной схеме? Может есть какие то более рациональные подходы?

Хотя возможно я иду не правильным путём.
В общем задача такая:
АЦП работатет со сверхдискретизацией на 50Мгц, полоса сигнала от 30Кгц до 1Мгц, внутри FPGA нужно перемножить sin/cos c DDS на входной сигнал(частота с DDS такая же как и сигнал, только фаза разная). В Фазе заключена полезная информация. Мой не большой опыт подсказывает что сигнал нужно отфильтровать, затем проредить до 2Мгц. После перемножения с DDS снова отфильтровать, убрав двойную частоту. Может быть "пнёте" в нужном направлении как такую задачу можно решить более безболезненно?
Go to the top of the page
 
+Quote Post
YuP
сообщение Oct 10 2007, 13:47
Сообщение #2


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

Группа: Свой
Сообщений: 129
Регистрация: 28-11-06
Пользователь №: 22 854



Цитата(stoker @ Oct 10 2007, 16:51) *
Уважаемые знатоки! Я новичёк в реализации ЦОС на FPGA. В общем нужно сделать на FPGA ФНЧ с полосой пропускания 0,01 задерживания 0,02 с ослаблением >87Дб.
Но при расчете получается огромный порядок. Ума не приложу, как такое можно реализовать, по стандартной схеме? Может есть какие то более рациональные подходы?

По стандартной никак.Можно конечно реализовать фильтр с параллельной структурой,но реализовывать больше 500 умножителей и хренову тучу сумматоров ни к чему 05.gif
Советую структуру на ячейке MAC Engine.Один умножитель,один аккумулятор,линия задержки и блочок управления.И будет Вам счастье.
Или просто сгенерите готовую корку в CoreGenerator.
Прикрепленные файлы
Прикрепленный файл  mac_fir.bmp ( 36.23 килобайт ) Кол-во скачиваний: 127
 


--------------------
Противник, вскрывающий ваши ошибки, гораздо полезнее, чем друг, скрывающий их. /Леонардо да Винчи/
Go to the top of the page
 
+Quote Post
stoker
сообщение Oct 10 2007, 14:26
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 340
Регистрация: 28-11-05
Из: Москва
Пользователь №: 11 469



Цитата(YuP @ Oct 10 2007, 17:47) *
По стандартной никак.Можно конечно реализовать фильтр с параллельной структурой,но реализовывать больше 500 умножителей и хренову тучу сумматоров ни к чему 05.gif
Советую структуру на ячейке MAC Engine.Один умножитель,один аккумулятор,линия задержки и блочок управления.И будет Вам счастье.
Или просто сгенерите готовую корку в CoreGenerator.


А есть ли более подробная информация по данному методу реализации? Мож книжкие какие подскажите? Не люблю я "корки", просто не знаю что там в них внутри генерится.
Кстати я слышал о CIC фильтрах, но немогу понять как производить нормировку данных в FPGA. Ведь при суммировании на множестве каскадов может быть переполнение, да и точность не хочется терять.
Go to the top of the page
 
+Quote Post
vladv
сообщение Oct 10 2007, 21:20
Сообщение #4


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

Группа: Участник
Сообщений: 128
Регистрация: 7-06-06
Пользователь №: 17 825



Цитата(stoker @ Oct 10 2007, 18:26) *
А есть ли более подробная информация по данному методу реализации? Мож книжкие какие подскажите? Не люблю я "корки", просто не знаю что там в них внутри генерится.
Кстати я слышал о CIC фильтрах, но немогу понять как производить нормировку данных в FPGA. Ведь при суммировании на множестве каскадов может быть переполнение, да и точность не хочется терять.


CIC-фильтр - правильное направление. При больших коэффициентах децимации, обычно вначале делают "грубую" фильрацию-децимацию на CIC, а потом на FIR с децимацией в 2-4 раза "подправляют". CIC хороши тем, что в них нет умножителей и их сложность от порядка децимации зависит слабо.

Информации по CIC полно в интернете. Например: http://users.snip.net/~donadio/cic.pdf (Ну и вообще: www.yahoo.com=>search: CIC-filter). Там есть и удобная струтура (Хогенаура) и как разрядность каскадов выбрать. Переполнения, кстати, в CIC-е постоянно происходят, но не мешают.

Еще у Xilinx в appnot-ах естьинформация по CIC (http://www.xilinx.com/ipcenter/catalog/logicore/docs/cic.pdf), а также по FIR и DDC. Посмотрите, на их сайте.


Еще можеть быть полезно посмотреть Digital Down Convertor-ы (DDC) - микросхемы, сделанные специально для Вашей задачи. У Analog Device: AD6620, AD6634, AD6635, и т.д. или у Texas Instrument GC4016, GC5016.
Go to the top of the page
 
+Quote Post
stoker
сообщение Oct 12 2007, 03:04
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 340
Регистрация: 28-11-05
Из: Москва
Пользователь №: 11 469



Цитата(vladv @ Oct 11 2007, 01:20) *
CIC-фильтр - правильное направление. При больших коэффициентах децимации, обычно вначале делают "грубую" фильрацию-децимацию на CIC, а потом на FIR с децимацией в 2-4 раза "подправляют". CIC хороши тем, что в них нет умножителей и их сложность от порядка децимации зависит слабо.

Спасибо за толчок в нужном направлении, буду изучать CIC.

Цитата(vladv @ Oct 11 2007, 01:20) *
Информации по CIC полно в интернете. Например: http://users.snip.net/~donadio/cic.pdf (Ну и вообще: www.yahoo.com=>search: CIC-filter). Там есть и удобная струтура (Хогенаура) и как разрядность каскадов выбрать. Переполнения, кстати, в CIC-е постоянно происходят, но не мешают.

Смотрел, в общем мне идея понятна. Хочу правда с переполнениями разобраться, мож есть у кого оригинальная статья Хогенауэра про CIC? Здесь была ветка по CIC, но я пока не "свой" и скачать немогу с ФТП. Если не сложно, может ли кто нибудь ее здесь приаттачить? кажется называется она так: "An economical class of digital filters for decimation and interpolation.pdf"


Цитата(vladv @ Oct 11 2007, 01:20) *
Еще у Xilinx в appnot-ах естьинформация по CIC (http://www.xilinx.com/ipcenter/catalog/logicore/docs/cic.pdf), а также по FIR и DDC. Посмотрите, на их сайте.
Еще можеть быть полезно посмотреть Digital Down Convertor-ы (DDC) - микросхемы, сделанные специально для Вашей задачи. У Analog Device: AD6620, AD6634, AD6635, и т.д. или у Texas Instrument GC4016, GC5016.

У меня к сожалению не стандартная задача.
DDS выдаёт 3 сигнала sin(wt);cos(wt);sin(wt+p)
сигнал sin(wt+p) - выдаётся наружу через DAC, на исследуемый элемент на основе кварца. Он добавляет фазовый сдвиг, который зависит от механических воздействий на него. А фаза p - для компенсации фазовых потерь в аналоговых цепях. В итоге получается сигнал sin(wt+f)
задача сводится в выделении сигналов sin(f) и cos(f) в fixed point. которые потом уходят на ДСП. ДСП, в свою очередь подстраивает w на DDS, чтобы система находилась в резонансе. В общем это ФАПЧ в цифровом виде. Вообще говоря, может быть кто нибудь делал похожую задачу. Был бы очень признателен, если кто нибудь подскажет, правильно ли я все делаю, а то я тока начинаю разбираться в ЦОС, да и может быть выбрал не самый короткий путь.
Go to the top of the page
 
+Quote Post
YuP
сообщение Oct 12 2007, 04:43
Сообщение #6


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

Группа: Свой
Сообщений: 129
Регистрация: 28-11-06
Пользователь №: 22 854



Цитата(stoker @ Oct 12 2007, 07:04) *
Хочу правда с переполнениями разобраться, мож есть у кого оригинальная статья Хогенауэра про CIC?

Пользуйтесь наздоровье beer.gif
Прикрепленные файлы
Прикрепленный файл  An_economical_class_of_digital_filters_for_decimation_and_interpolation.pdf ( 807.71 килобайт ) Кол-во скачиваний: 233
 


--------------------
Противник, вскрывающий ваши ошибки, гораздо полезнее, чем друг, скрывающий их. /Леонардо да Винчи/
Go to the top of the page
 
+Quote Post
rloc
сообщение Oct 12 2007, 10:02
Сообщение #7


Узкополосный широкополосник
******

Группа: Свой
Сообщений: 2 316
Регистрация: 13-12-04
Из: Moscow
Пользователь №: 1 462



Цитата(stoker @ Oct 10 2007, 16:51) *
Уважаемые знатоки! Я новичёк в реализации ЦОС на FPGA. В общем нужно сделать на FPGA ФНЧ с полосой пропускания 0,01 задерживания 0,02 с ослаблением >87Дб.
Но при расчете получается огромный порядок. Ума не приложу, как такое можно реализовать, по стандартной схеме? Может есть какие то более рациональные подходы?

Не подскажете, какой порядок получается для FIR'а? Дополнительно, какая форма АЧХ нужна и неравномерность?
Go to the top of the page
 
+Quote Post
stoker
сообщение Oct 12 2007, 17:27
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 340
Регистрация: 28-11-05
Из: Москва
Пользователь №: 11 469



Цитата(YuP @ Oct 12 2007, 08:43) *
Пользуйтесь наздоровье beer.gif

Спасибо!

Цитата(rloc @ Oct 12 2007, 14:02) *
Не подскажете, какой порядок получается для FIR'а? Дополнительно, какая форма АЧХ нужна и неравномерность?

Синтезил в Матлабе - порядок 506, думаю для такой задачи главное линейная фаза в полосе пропускания. Ачх - как у обычного FIR, главное чтобы подавление на 2w частоте было не менее 87Дб, иначе смысла в сверхдискретизации нет. Что касается неравномерности, тут я пока оценить немогу.

Решил вот попробовать корки. Но не могу понять, поставил ISE.9.2, в папке где находятся все корки есть DDC и CIC, но немогу найти их в самой среде. Может кто подскажет, в чем может быть проблемма?
Go to the top of the page
 
+Quote Post
Leshii
сообщение Oct 12 2007, 18:02
Сообщение #9


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

Группа: Новичок
Сообщений: 120
Регистрация: 28-01-05
Пользователь №: 2 256



В продолжении о применении CIC фильтра возникает еще один вопрос. Полоса пропускания чистого CIC фильтра очень неравномерна и соответственно после него необходимо ставить корректирующий фильтр. Подскажите пожалуйста методику расчета этого корректирующего фильтра.
Go to the top of the page
 
+Quote Post
rloc
сообщение Oct 12 2007, 19:52
Сообщение #10


Узкополосный широкополосник
******

Группа: Свой
Сообщений: 2 316
Регистрация: 13-12-04
Из: Moscow
Пользователь №: 1 462



Цитата
В общем задача такая:
АЦП работатет со сверхдискретизацией на 50Мгц, полоса сигнала от 30Кгц до 1Мгц, внутри FPGA нужно перемножить sin/cos c DDS на входной сигнал(частота с DDS такая же как и сигнал, только фаза разная). В Фазе заключена полезная информация. Мой не большой опыт подсказывает что сигнал нужно отфильтровать, затем проредить до 2Мгц. После перемножения с DDS снова отфильтровать, убрав двойную частоту. Может быть "пнёте" в нужном направлении как такую задачу можно решить более безболезненно?

Цитата(stoker @ Oct 12 2007, 21:27) *
Синтезил в Матлабе - порядок 506, думаю для такой задачи главное линейная фаза в полосе пропускания. Ачх - как у обычного FIR, главное чтобы подавление на 2w частоте было не менее 87Дб, иначе смысла в сверхдискретизации нет. Что касается неравномерности, тут я пока оценить немогу.


Если фильтр нужен симметричный, то никакого CIC для такого порядка не надо, для Virtex-4 или -5 все решается "в лоб" - 2 блока памяти и 3 DSP48 + немного логики.
Go to the top of the page
 
+Quote Post
YuP
сообщение Oct 13 2007, 07:47
Сообщение #11


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

Группа: Свой
Сообщений: 129
Регистрация: 28-11-06
Пользователь №: 22 854



Цитата(Leshii @ Oct 12 2007, 22:02) *
В продолжении о применении CIC фильтра возникает еще один вопрос. Полоса пропускания чистого CIC фильтра очень неравномерна и соответственно после него необходимо ставить корректирующий фильтр. Подскажите пожалуйста методику расчета этого корректирующего фильтра.

По-моему в Mathlab просто выбирается Инверсный sinc фильтр,ну и параметры свой вбиваете.Получите набор коэффициентов для обычного FIR фильтра.И будет Вам счастье.

Цитата(stoker @ Oct 12 2007, 21:27) *
Решил вот попробовать корки. Но не могу понять, поставил ISE.9.2, в папке где находятся все корки есть DDC и CIC, но немогу найти их в самой среде. Может кто подскажет, в чем может быть проблемма?

Пользуйтесь поиском или посмотрите сдесь
http://electronix.ru/forum/index.php?showtopic=34205


--------------------
Противник, вскрывающий ваши ошибки, гораздо полезнее, чем друг, скрывающий их. /Леонардо да Винчи/
Go to the top of the page
 
+Quote Post
Leshii
сообщение Oct 13 2007, 07:59
Сообщение #12


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

Группа: Новичок
Сообщений: 120
Регистрация: 28-01-05
Пользователь №: 2 256



А поточнее можно в матлабе место указать, где в качестве желаемой АЧХ можно задавать инверсный sinc, да и не просто sinc, а его некая степень?
Go to the top of the page
 
+Quote Post
stoker
сообщение Oct 13 2007, 11:04
Сообщение #13


Местный
***

Группа: Свой
Сообщений: 340
Регистрация: 28-11-05
Из: Москва
Пользователь №: 11 469



Цитата(rloc @ Oct 12 2007, 23:52) *
Если фильтр нужен симметричный, то никакого CIC для такого порядка не надо, для Virtex-4 или -5 все решается "в лоб" - 2 блока памяти и 3 DSP48 + немного логики.


У меня спартан 3, поколение Virtex для меня дороговато. так что особо ресурсами похвастаться немогу.
А насчет того, нужна ли мне симметриная ИХ, скорее все равно, если только тут нет каких то скрытых камней.

У меня все же осталься вопрос по ISE.9.2. У когонибудь загружаются корки: CIC и DDC?

Цитата(YuP @ Oct 13 2007, 11:47) *
Пользуйтесь поиском или посмотрите сдесь
http://electronix.ru/forum/index.php?showtopic=34205

Там особо ничего нету, типа ставте полную версию - и все будет ок. Но у меня вроде полный ISE. В папке где корки лежат они есть, но из среды не запускаются.
Go to the top of the page
 
+Quote Post
rloc
сообщение Oct 13 2007, 16:16
Сообщение #14


Узкополосный широкополосник
******

Группа: Свой
Сообщений: 2 316
Регистрация: 13-12-04
Из: Moscow
Пользователь №: 1 462



Цитата(stoker @ Oct 13 2007, 15:04) *
Цитата
Если фильтр нужен симметричный, то никакого CIC для такого порядка не надо, для Virtex-4 или -5 все решается "в лоб" - 2 блока памяти и 3 DSP48 + немного логики.

У меня спартан 3, поколение Virtex для меня дороговато. так что особо ресурсами похвастаться немогу.
А насчет того, нужна ли мне симметриная ИХ, скорее все равно, если только тут нет каких то скрытых камней.

Ставьте два FIR'а последовательно, и то меньше будут чем этот CIC. CIC выгодно использовать, когда коэффициент децимации нужен большой и полоса узкая (не Ваш случай). Коэффициент децимации для CIC придется брать наверное 10 и количество стадий >5, но скорей всего вообще использовать нельзя (слишком большое внеполосное подавление и полоса широкая). Посмотрите по даташиту, сколько ресурсов на это уйдет.
По поводу симметрии - в большинстве случаев используются симметричные фильтры и подводных камней не вижу.
Go to the top of the page
 
+Quote Post
stoker
сообщение Oct 15 2007, 08:20
Сообщение #15


Местный
***

Группа: Свой
Сообщений: 340
Регистрация: 28-11-05
Из: Москва
Пользователь №: 11 469



Цитата(rloc @ Oct 13 2007, 20:16) *
У меня спартан 3, поколение Virtex для меня дороговато. так что особо ресурсами похвастаться немогу.
А насчет того, нужна ли мне симметриная ИХ, скорее все равно, если только тут нет каких то скрытых камней.
Ставьте два FIR'а последовательно, и то меньше будут чем этот CIC. CIC выгодно использовать, когда коэффициент децимации нужен большой и полоса узкая (не Ваш случай). Коэффициент децимации для CIC придется брать наверное 10 и количество стадий >5, но скорей всего вообще использовать нельзя (слишком большое внеполосное подавление и полоса широкая). Посмотрите по даташиту, сколько ресурсов на это уйдет.
По поводу симметрии - в большинстве случаев используются симметричные фильтры и подводных камней не вижу.


Если ставить 2 FIR последовательно где нужно ставить дециматор или его делать прямо внутри FIR'ов? И как их нужно правильно рассчитывать? Кстати ширина полосы - 200Гц - довольно узкая.
Go to the top of the page
 
+Quote Post

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

 


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


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