stoker 0 10 октября, 2007 Опубликовано 10 октября, 2007 · Жалоба Уважаемые знатоки! Я новичёк в реализации ЦОС на FPGA. В общем нужно сделать на FPGA ФНЧ с полосой пропускания 0,01 задерживания 0,02 с ослаблением >87Дб. Но при расчете получается огромный порядок. Ума не приложу, как такое можно реализовать, по стандартной схеме? Может есть какие то более рациональные подходы? Хотя возможно я иду не правильным путём. В общем задача такая: АЦП работатет со сверхдискретизацией на 50Мгц, полоса сигнала от 30Кгц до 1Мгц, внутри FPGA нужно перемножить sin/cos c DDS на входной сигнал(частота с DDS такая же как и сигнал, только фаза разная). В Фазе заключена полезная информация. Мой не большой опыт подсказывает что сигнал нужно отфильтровать, затем проредить до 2Мгц. После перемножения с DDS снова отфильтровать, убрав двойную частоту. Может быть "пнёте" в нужном направлении как такую задачу можно решить более безболезненно? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
YuP 0 10 октября, 2007 Опубликовано 10 октября, 2007 · Жалоба Уважаемые знатоки! Я новичёк в реализации ЦОС на FPGA. В общем нужно сделать на FPGA ФНЧ с полосой пропускания 0,01 задерживания 0,02 с ослаблением >87Дб. Но при расчете получается огромный порядок. Ума не приложу, как такое можно реализовать, по стандартной схеме? Может есть какие то более рациональные подходы? По стандартной никак.Можно конечно реализовать фильтр с параллельной структурой,но реализовывать больше 500 умножителей и хренову тучу сумматоров ни к чему :05: Советую структуру на ячейке MAC Engine.Один умножитель,один аккумулятор,линия задержки и блочок управления.И будет Вам счастье. Или просто сгенерите готовую корку в CoreGenerator. mac_fir.bmp Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
stoker 0 10 октября, 2007 Опубликовано 10 октября, 2007 · Жалоба По стандартной никак.Можно конечно реализовать фильтр с параллельной структурой,но реализовывать больше 500 умножителей и хренову тучу сумматоров ни к чему :05: Советую структуру на ячейке MAC Engine.Один умножитель,один аккумулятор,линия задержки и блочок управления.И будет Вам счастье. Или просто сгенерите готовую корку в CoreGenerator. А есть ли более подробная информация по данному методу реализации? Мож книжкие какие подскажите? Не люблю я "корки", просто не знаю что там в них внутри генерится. Кстати я слышал о CIC фильтрах, но немогу понять как производить нормировку данных в FPGA. Ведь при суммировании на множестве каскадов может быть переполнение, да и точность не хочется терять. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vladv 0 10 октября, 2007 Опубликовано 10 октября, 2007 · Жалоба А есть ли более подробная информация по данному методу реализации? Мож книжкие какие подскажите? Не люблю я "корки", просто не знаю что там в них внутри генерится. Кстати я слышал о 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. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
stoker 0 12 октября, 2007 Опубликовано 12 октября, 2007 · Жалоба CIC-фильтр - правильное направление. При больших коэффициентах децимации, обычно вначале делают "грубую" фильрацию-децимацию на CIC, а потом на FIR с децимацией в 2-4 раза "подправляют". CIC хороши тем, что в них нет умножителей и их сложность от порядка децимации зависит слабо. Спасибо за толчок в нужном направлении, буду изучать CIC. Информации по 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" Еще у 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, чтобы система находилась в резонансе. В общем это ФАПЧ в цифровом виде. Вообще говоря, может быть кто нибудь делал похожую задачу. Был бы очень признателен, если кто нибудь подскажет, правильно ли я все делаю, а то я тока начинаю разбираться в ЦОС, да и может быть выбрал не самый короткий путь. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
YuP 0 12 октября, 2007 Опубликовано 12 октября, 2007 · Жалоба Хочу правда с переполнениями разобраться, мож есть у кого оригинальная статья Хогенауэра про CIC? Пользуйтесь наздоровье :beer: An_economical_class_of_digital_filters_for_decimation_and_interpolation.pdf Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rloc 56 12 октября, 2007 Опубликовано 12 октября, 2007 · Жалоба Уважаемые знатоки! Я новичёк в реализации ЦОС на FPGA. В общем нужно сделать на FPGA ФНЧ с полосой пропускания 0,01 задерживания 0,02 с ослаблением >87Дб. Но при расчете получается огромный порядок. Ума не приложу, как такое можно реализовать, по стандартной схеме? Может есть какие то более рациональные подходы? Не подскажете, какой порядок получается для FIR'а? Дополнительно, какая форма АЧХ нужна и неравномерность? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
stoker 0 12 октября, 2007 Опубликовано 12 октября, 2007 · Жалоба Пользуйтесь наздоровье :beer: Спасибо! Не подскажете, какой порядок получается для FIR'а? Дополнительно, какая форма АЧХ нужна и неравномерность? Синтезил в Матлабе - порядок 506, думаю для такой задачи главное линейная фаза в полосе пропускания. Ачх - как у обычного FIR, главное чтобы подавление на 2w частоте было не менее 87Дб, иначе смысла в сверхдискретизации нет. Что касается неравномерности, тут я пока оценить немогу. Решил вот попробовать корки. Но не могу понять, поставил ISE.9.2, в папке где находятся все корки есть DDC и CIC, но немогу найти их в самой среде. Может кто подскажет, в чем может быть проблемма? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Leshii 0 12 октября, 2007 Опубликовано 12 октября, 2007 · Жалоба В продолжении о применении CIC фильтра возникает еще один вопрос. Полоса пропускания чистого CIC фильтра очень неравномерна и соответственно после него необходимо ставить корректирующий фильтр. Подскажите пожалуйста методику расчета этого корректирующего фильтра. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rloc 56 12 октября, 2007 Опубликовано 12 октября, 2007 · Жалоба В общем задача такая: АЦП работатет со сверхдискретизацией на 50Мгц, полоса сигнала от 30Кгц до 1Мгц, внутри FPGA нужно перемножить sin/cos c DDS на входной сигнал(частота с DDS такая же как и сигнал, только фаза разная). В Фазе заключена полезная информация. Мой не большой опыт подсказывает что сигнал нужно отфильтровать, затем проредить до 2Мгц. После перемножения с DDS снова отфильтровать, убрав двойную частоту. Может быть "пнёте" в нужном направлении как такую задачу можно решить более безболезненно? Синтезил в Матлабе - порядок 506, думаю для такой задачи главное линейная фаза в полосе пропускания. Ачх - как у обычного FIR, главное чтобы подавление на 2w частоте было не менее 87Дб, иначе смысла в сверхдискретизации нет. Что касается неравномерности, тут я пока оценить немогу. Если фильтр нужен симметричный, то никакого CIC для такого порядка не надо, для Virtex-4 или -5 все решается "в лоб" - 2 блока памяти и 3 DSP48 + немного логики. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
YuP 0 13 октября, 2007 Опубликовано 13 октября, 2007 · Жалоба В продолжении о применении CIC фильтра возникает еще один вопрос. Полоса пропускания чистого CIC фильтра очень неравномерна и соответственно после него необходимо ставить корректирующий фильтр. Подскажите пожалуйста методику расчета этого корректирующего фильтра. По-моему в Mathlab просто выбирается Инверсный sinc фильтр,ну и параметры свой вбиваете.Получите набор коэффициентов для обычного FIR фильтра.И будет Вам счастье. Решил вот попробовать корки. Но не могу понять, поставил ISE.9.2, в папке где находятся все корки есть DDC и CIC, но немогу найти их в самой среде. Может кто подскажет, в чем может быть проблемма? Пользуйтесь поиском или посмотрите сдесь http://electronix.ru/forum/index.php?showtopic=34205 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Leshii 0 13 октября, 2007 Опубликовано 13 октября, 2007 · Жалоба А поточнее можно в матлабе место указать, где в качестве желаемой АЧХ можно задавать инверсный sinc, да и не просто sinc, а его некая степень? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
stoker 0 13 октября, 2007 Опубликовано 13 октября, 2007 · Жалоба Если фильтр нужен симметричный, то никакого CIC для такого порядка не надо, для Virtex-4 или -5 все решается "в лоб" - 2 блока памяти и 3 DSP48 + немного логики. У меня спартан 3, поколение Virtex для меня дороговато. так что особо ресурсами похвастаться немогу. А насчет того, нужна ли мне симметриная ИХ, скорее все равно, если только тут нет каких то скрытых камней. У меня все же осталься вопрос по ISE.9.2. У когонибудь загружаются корки: CIC и DDC? Пользуйтесь поиском или посмотрите сдесь http://electronix.ru/forum/index.php?showtopic=34205 Там особо ничего нету, типа ставте полную версию - и все будет ок. Но у меня вроде полный ISE. В папке где корки лежат они есть, но из среды не запускаются. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rloc 56 13 октября, 2007 Опубликовано 13 октября, 2007 · Жалоба Если фильтр нужен симметричный, то никакого CIC для такого порядка не надо, для Virtex-4 или -5 все решается "в лоб" - 2 блока памяти и 3 DSP48 + немного логики. У меня спартан 3, поколение Virtex для меня дороговато. так что особо ресурсами похвастаться немогу. А насчет того, нужна ли мне симметриная ИХ, скорее все равно, если только тут нет каких то скрытых камней. Ставьте два FIR'а последовательно, и то меньше будут чем этот CIC. CIC выгодно использовать, когда коэффициент децимации нужен большой и полоса узкая (не Ваш случай). Коэффициент децимации для CIC придется брать наверное 10 и количество стадий >5, но скорей всего вообще использовать нельзя (слишком большое внеполосное подавление и полоса широкая). Посмотрите по даташиту, сколько ресурсов на это уйдет. По поводу симметрии - в большинстве случаев используются симметричные фильтры и подводных камней не вижу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
stoker 0 15 октября, 2007 Опубликовано 15 октября, 2007 · Жалоба У меня спартан 3, поколение Virtex для меня дороговато. так что особо ресурсами похвастаться немогу. А насчет того, нужна ли мне симметриная ИХ, скорее все равно, если только тут нет каких то скрытых камней. Ставьте два FIR'а последовательно, и то меньше будут чем этот CIC. CIC выгодно использовать, когда коэффициент децимации нужен большой и полоса узкая (не Ваш случай). Коэффициент децимации для CIC придется брать наверное 10 и количество стадий >5, но скорей всего вообще использовать нельзя (слишком большое внеполосное подавление и полоса широкая). Посмотрите по даташиту, сколько ресурсов на это уйдет. По поводу симметрии - в большинстве случаев используются симметричные фильтры и подводных камней не вижу. Если ставить 2 FIR последовательно где нужно ставить дециматор или его делать прямо внутри FIR'ов? И как их нужно правильно рассчитывать? Кстати ширина полосы - 200Гц - довольно узкая. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться