|
|
  |
IIR на FPGA |
|
|
|
Sep 25 2007, 12:59
|
Участник

Группа: Участник
Сообщений: 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 триггеров хватает.
Спасибо
|
|
|
|
|
Sep 25 2007, 18:43
|
Частый гость
 
Группа: Свой
Сообщений: 92
Регистрация: 16-05-05
Из: Kiev
Пользователь №: 5 080

|
Цитата(Igont @ Sep 25 2007, 15:59)  ВЛЕЗ ОДИН ТОЛЬКО В ACEX 30K, а на бумажке посчитал, что и 80 триггеров хватает. Если на Альтере и нет 5в-логики, Acex в утиль, вместо него Cyclone II, там есть встроенные умножители, ресурсов больше, стоит дешевле. Отфильтруете лёгко.
|
|
|
|
|
Sep 26 2007, 07:51
|

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

|
Цитата дохлая атмега48 за $0.91 уделает эту задачу и ещё место останется. ;О) В защиту FPGA скажу, что на нём можно будет сделать очень хороший фильтр порядка так 16-22-го, да ещё и с одинаковым групповым временем задержки для пропускаемых частот. А ненужные 35 и 50Гц будут именно вырезаться, а не ослабляться с искажением фаз соседних частот. Для начала хорош тот инструмент, к которому руки лучше приспособлены, а уж потом можно удешевлять и упрощать.
--------------------
Почему разработчики систем повышенной надёжности плохо справляются с простыми проектами? :)
|
|
|
|
|
Sep 26 2007, 07:55
|
Знающий
   
Группа: Свой
Сообщений: 709
Регистрация: 3-05-05
Пользователь №: 4 693

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

Группа: Участник
Сообщений: 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 операций/сек
|
|
|
|
|
Sep 26 2007, 11:52
|
Знающий
   
Группа: Свой
Сообщений: 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МГц она всё это может смело делать в таймерном прерывании, а в фоне играть в шашматы. ;О)
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|