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

 
 
 
Reply to this topicStart new topic
> IIR на FPGA
Igont
сообщение Sep 25 2007, 12:59
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 24
Регистрация: 25-09-07
Пользователь №: 30 811



Уважаемый All.
Не имея достаточно опыта в проектировании фильтров на логике, обращаюсь за Вашим мнением.
Задача: Имеем 4 канала "цифры" после АЦП (16 бит 500 Гц каждый).
Надо убрать из каждого канала 50Гц (IIR Filter 4 order) и 35Гц (IIR Filter 4 order).
Данные выводятся во внешнее ОЗУ, к которому имеет доступ контроллер (через ту же
ПЛИС)

Вопрос:
1. Реализуемо ли это в принципе
2. На какого объема ПЛИС приходится расчитывать (TQFP144 max)
3. Существуют ли готовые решения

Сбивает с толку, что библиотечный компонент LPM_MUL 16x16 (Altera - MAX II Plus)
ВЛЕЗ ОДИН ТОЛЬКО В ACEX 30K, а на бумажке посчитал, что и 80 триггеров хватает.

Спасибо
Go to the top of the page
 
+Quote Post
Rendom
сообщение Sep 25 2007, 15:41
Сообщение #2


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

Группа: Свой
Сообщений: 85
Регистрация: 6-05-07
Пользователь №: 27 538



1. Реализуемо.
2. На умножитель 16х16 используется минимум 81 триггер (ISE Xilinx), либо 1 аппаратный умножитель 18х18 (в зависимости от возможностей кристала). Если исходить из корпуса TQ144 я бы порекомендовал посмотреть в сторону Spartan 3E, а конкретно XC3S250E.
3. На глаза не попадались, но задача решается достаточно просто : в MathLab синтезируется требуемый фильтр, после чего в схемотехническом редакторе среды проектирования ISE/Quatus полностью повторяется расчитанная матлабом схема.
Если использовать вместо БИХ-фильтров КИХ-фильтры, то задача с точки зрения проектирования упрощается до элементарной- синтез фильтра в матлабе и загрузка файла коэффициентов в генераторе ядер в ПЛИС, либо начиная с 7й версии матлаб может дать hdl-код КИХ-фильтра которые просто подключается в проект.
Go to the top of the page
 
+Quote Post
tocha
сообщение Sep 25 2007, 18:43
Сообщение #3


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

Группа: Свой
Сообщений: 92
Регистрация: 16-05-05
Из: Kiev
Пользователь №: 5 080



Цитата(Igont @ Sep 25 2007, 15:59) *
ВЛЕЗ ОДИН ТОЛЬКО В ACEX 30K, а на бумажке посчитал, что и 80 триггеров хватает.

Если на Альтере и нет 5в-логики, Acex в утиль, вместо него Cyclone II, там есть встроенные умножители, ресурсов больше, стоит дешевле. Отфильтруете лёгко.
Go to the top of the page
 
+Quote Post
EvgenyNik
сообщение Sep 26 2007, 05:40
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 597
Регистрация: 24-05-06
Из: г. Чебоксары
Пользователь №: 17 402



Если умножители Вам нужны только для перемножения на постоянные коэффициенты, то не обязательно умножать.
Умножение N на любой коэффициент можно представить как 4*N +/- 2*N +/- N +/- 0.5N +/- 0.25N +/- 0.125N...
Ваша задача реализуема на самом простом Cyclone EP1C3T100C8.


--------------------
Почему разработчики систем повышенной надёжности плохо справляются с простыми проектами? :)
Go to the top of the page
 
+Quote Post
bav
сообщение Sep 26 2007, 06:59
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 693
Регистрация: 21-06-05
Из: Санкт-Петербург
Пользователь №: 6 184



4x500 Гц? FPGA + контроллер? может, дешевле и проще взять к-н DSP? или с этим справится ARM?
не знаю, дело Ваше. Я бы тогда порекомендовал Cyclone II, там ресурсов точно хватит и цена не большая. если плиску грузить с контроллера, можно сэкономить еще 5$.
Go to the top of the page
 
+Quote Post
mse
сообщение Sep 26 2007, 07:28
Сообщение #6


Знающий
****

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



Цитата(bav @ Sep 26 2007, 10:59) *
4x500 Гц? FPGA + контроллер? может, дешевле и проще взять к-н DSP? или с этим справится ARM?
не знаю, дело Ваше. Я бы тогда порекомендовал Cyclone II, там ресурсов точно хватит и цена не большая. если плиску грузить с контроллера, можно сэкономить еще 5$.

ИМХО, дохлая атмега48 за $0.91 уделает эту задачу и ещё место останется. ;О)
Go to the top of the page
 
+Quote Post
EvgenyNik
сообщение Sep 26 2007, 07:51
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 597
Регистрация: 24-05-06
Из: г. Чебоксары
Пользователь №: 17 402



Цитата
дохлая атмега48 за $0.91 уделает эту задачу и ещё место останется. ;О)

В защиту FPGA скажу, что на нём можно будет сделать очень хороший фильтр порядка так 16-22-го, да ещё и с одинаковым групповым временем задержки для пропускаемых частот. А ненужные 35 и 50Гц будут именно вырезаться, а не ослабляться с искажением фаз соседних частот.
Для начала хорош тот инструмент, к которому руки лучше приспособлены, а уж потом можно удешевлять и упрощать.


--------------------
Почему разработчики систем повышенной надёжности плохо справляются с простыми проектами? :)
Go to the top of the page
 
+Quote Post
mse
сообщение Sep 26 2007, 07:55
Сообщение #8


Знающий
****

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



Цитата(Евгений Николаев @ Sep 26 2007, 11:51) *
...
Для начала хорош тот инструмент, к которому руки лучше приспособлены, а уж потом можно удешевлять и упрощать.

Это точно:
Цитата
Не имея достаточно опыта в проектировании фильтров на логике, обращаюсь за Вашим мнением...
Go to the top of the page
 
+Quote Post
Igont
сообщение Sep 26 2007, 09:14
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 24
Регистрация: 25-09-07
Пользователь №: 30 811



Спасибо за ответ. - широта взглядов позволяет оптимизировать.

Цитата(mse @ Sep 26 2007, 11:28) *
ИМХО, дохлая атмега48 за $0.91 уделает эту задачу и ещё место останется. ;О)


Считал. Не успеет:
1 IIR фильтр 4 порядка 16 бит -> 8 умножений 16x16, 8 сложений 32 бит, 2 циклических буфера 8x16

фильтров 8 шт (4 канала по два фильтра на каждый) * 500 Гц.

По среднему Atmega "делает" 8*10^6 операций/сек
Go to the top of the page
 
+Quote Post
mse
сообщение Sep 26 2007, 11:52
Сообщение #10


Знающий
****

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



Цитата(Igont @ Sep 26 2007, 13:14) *
Спасибо за ответ. - широта взглядов позволяет оптимизировать.
Считал. Не успеет:
1 IIR фильтр 4 порядка 16 бит -> 8 умножений 16x16, 8 сложений 32 бит, 2 циклических буфера 8x16

фильтров 8 шт (4 канала по два фильтра на каждый) * 500 Гц.

По среднему Atmega "делает" 8*10^6 операций/сек


Ну не знаю. Давайте прикинем без всякого разбора, что у вас и как было прикинуто:
16х16знаковое - 17 тактов. 17*8=136. Ну, пусть ещё до 200 тактов на всё-про всё. Нет, пусть 340! ;О)
Сложения: 20*8=160. Без всякой экономии. Из памяти взяли, в память поклали.
ЦБ, пусть 100. Хотя, считая промежутки, можно тупо перекладывать результаты по мере счёта. Ну да ланна.
Итго: всего на фильтер 340+160+100=600. Пусть 1000 для ровного щщёта. Таких фильтеров 8, итого 8000тактов.
500Гц, это 40килотактов, если м48 будет топтаться на 20МГц. Я ничего не пропустил? Получаицца, что с заметным запасом на допущения "а пусть...", м48 пережуёт эту задачу на тактовой 4МГц. На 20МГц она всё это может смело делать в таймерном прерывании, а в фоне играть в шашматы. ;О)
Go to the top of the page
 
+Quote Post

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

 


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


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