Полная версия этой страницы:
БИХ-фильтр
Sidoroff
Feb 19 2013, 20:04
Возможно ли сделать асинхронный сумматор и перемножитель для плавающей точки
хотя-бы одинарной точности (32 бита), ПЛИС Cyclone 3?
Есть ли примеры (VHDL) или надо писать самому?
Собственно задача сделать БИХ-фильтр 16 порядка (32 коэффициента) на поток данных 1 МГц.
Хочется сэкономить на логике и энергопотреблении за счет уменьшения частоты дизайна.
Встроенный конструктор Quartus умеет генерировать только очень латентные (а значит
расходующие много лишней логики на защелкивание промежуточных результатов) умножители и сумматоры.
Поэтому предполагаю рассчитывать последовательно, в 2-4 потока однотактовыми операциями
(2-4 асинхронных умножителя и сумматоры по месту), частота дизайна не более 20МГц,
соответственно 20 тактов на расчет одного результата должно хватить.
Если ход мыслей неверный, подскажите, как можно решить такую задачу.
Вам хочется странного

. Спрашиваю Вас - зачем именно БИХ? Вы же неопытны для него(судя во по вопросу можно ли сделать асихронный сумматор

).
Сделайте КИХ фильтр. Ему нафиг не понадобится умножитель с плавающей запятой который сожрет кучу ресурсов ,а динамический диапазон скорее всего недалек от диапазона АЦП.
Все прямо слева на право на "очень латентных умножителях и сумматорах". Экономия на умножителях будет Ваша тактовая/выходную тактовую. Наверно у альтеры и компилятор готовый есть.
Sidoroff
Feb 20 2013, 07:48
КИХ-фильтр у меня давно есть на "очень латентных умножителях и сумматорах", "все прямо слева на право".
Но нужна широкая полоса пропускания в НЧ области, с отношением частоты дискретизации к частоте сигнала порядка
нескольких тысяч, поэтому надо очень много коэффициентов КИХ-фильтра и FIFO-буфера.
В мою ПЛИС (EP3C25E144I7) такой не влезет.
те если выходная частота дискретизации низкая. вообще ких фильтр на 1 умножителе.
Sidoroff
Feb 20 2013, 09:04
На одном умножителе не получится, надо 4-8, но не в этом дело.
К каждому умножителю нужно два буфера на сигнал и коэффициенты (к которым
этот умножитель "приписан") на встроенной памяти, а память нужна для другой задачи,
значит только на регистрах.
Не влезет именно FIFO данных и массив коэффициентов.
RobFPGA
Feb 20 2013, 09:46
Приветствую!
Такая реализация называется Distributed Arithmetic - в гугле полно ссылок как это устроенно.
Однако по поводу float реализации стоит подумать - все же может лучше сделать fix реализацию с соответствующим
масштабированием и только потом конвертировать во float.
Тем более частота сигнала низкая - можно на одном-двух широком параллельном умножителе и сумматоре сделать автомат который будет считать в в fix формате последовательно все 16 порядков.
Успехов! Rob.
анатолий
Feb 20 2013, 19:31
Вот здесь пример, как разрабатывают БИХ-фильтры высокого порядка на ПЛИС:
http://kanyevsky.kpi.ua/publicacii2010/HPF_Serg.pdfИдея такая: структура, в принципе, считает 1 звено фильтра, но за счет латентной задержки в цепи обратной связи на К тактов, структура реализует последовательно-параллельно цепочку К звеньев фильтра. Фильтр может быть и с плавающей запятой.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.