Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Непонятка с количеством регистров в feedback фильтра
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
syoma
Народ, помогите - уже неделю мучаюсь, но не могу найти причину.
В общем делаю в Virtex 6 цифровой БИХ фильтр на Virtex 6 в DSP System Generator - реальную картинку могу выложить, но сам фильтр примерно такой:


Смысл в том, что там есть две обратных связи с разными pipeline задержками на регистрах и умножителями. Эти связи суммируются с входным сигналом. В итоге в моделировании в МАТЛАБе все работает, но дизайн очень чувствителен к количеству регистров=задержек в цепях обратной связи. +-1штука делают фильтр полностью неработоспособным - на выходе мусор.

В самом дизайне 3 полностью одинаковых фильтра. В итоге System Generator создает VHDL файл с только одним блоком Filter и делает 3 entity от него.
Версия тулзов - ISE 14.5 x64. Варнингов по таймингам нет. Дизайн работает на 100Mhz, ISE показывает 125MHz.
Фигня в том, что один из трех фильтров в железе то работает, то не работает - выдает мусор на выходе. Два других - нормально. В Chipscope видно, что выход неработающего фильтра - это просто 01111.... или 10000.... Т.е. полный максимум или минимум. При этом его выход задержан на один клок системный клок 100MHz (реальная рабочая частота фильтра 5MHz) от остальных 2-х фильтров.
При этом вид "мусора" такой же, как если в дизайне принудительно добавить или исключить один регистр в цепи ОС. Самое смешное - от синтеза к синтезу или изменений в других частях проекта - ситуация может поменяться - то может другой из трех перестать работать, то вообще все фильтры работают.

Вопрос - может ли ISE добавлять и убирать pipeline регистры по своему усмотрению, без того, чтобы меня проинформировать? Может есть опция какая-то?
Я уже думал, может в 14.5 поменялись какие нибудь значения опций по умолчанию - так как в этой версии другой дизайн с обратными связями тоже иногда сбоит без видимых причин, а в старых версиях ISE даже с такими делами проблем не было.

Спасибо за советы.
SM
Если это три экземпляра одного модуля, и один из них, бывает, сбоит, в зависимости от разводки, то тут три варианта:
1) Баг разводчика/синтезатора (проще всего проверяется другой версией)
2) Стоит констрейн типа set_false_path где-то, и какие то пути не проверяются на тайминги.
3) Проблемы с питанием, особенно PLL (если клок от нее), менее вероятно ядра.

синтезатор может попередвигать регистры сквозь логику, но добавить лишнего никак не имеет право, как и убрать.
litv
1)БИХ фильтров проектирование с фиксированной точкой - это сложное дело. Обычно при неправильном выборе разрядности умножителей и сумматоров они переполняются. Что у Вас и видно. Разрядность умножителей и сумматоров должна быть в два - три раза шире чем разрядность входных данных.
2)В Матлабе все точно совпадает с чипсокопом всегда. Раздражает фраза что чипскоп показывает не то что матлаб. Это уже говорит о юниорском подходе к тестированию в матлабе. БИХ фильтры легко переполняются при длинных по времени например импульсах.
(А в матлабе такое тестирование проводилось???)
3)Коэффициенты бих фильтра должны быть внутри 1 окружности для устойчивости(Вы знакомы с этой фразой?).
Если нет - тоже плохо.

Обычно при некотором снижении частоты после фильтрации КИХ выгоднее по ресурсам. И нет никаких трахов с устойчивостью и нестандартной разрядностью. Зачем вообще Вам БИХ - Вы сами знаете?
olegras
Убрать может в ходе оптимизации. Легко. Но информирует обязательно. У Вас фильтр на варнинги случайно не включен?
SM
Цитата(olegras @ Mar 11 2014, 06:26) *
Убрать может в ходе оптимизации. Легко. Но информирует обязательно.

ТОЛЬКО, и никак иначе, если выход этого регистра нигде не используется. Иначе никакого права убирать его у него нету.
syoma
Вот сам фильтр в МАТЛАБе. Да - он был сделан из фильтра с плавающей точкой. Сигнал изменяется от -1 до +1. Рабочая частота фильтра 1МГц, но благодаря задержкам реальная частота выхода сэмплов 200кГц. Фильтр настроен на выделение 50Гц составляющей сигнала. Как я уже говорил в МАТЛАБе все работает включая максимальные значения и переполнения - все умножители и сумматоры имеют опцию Saturate on Overflow и как видно из рисунка разрядность внутренних данных больше чем входных и выходных. В Chipscope тоже все работает также как и в МАТЛАбе, но когда фильтр действительно работает.
Нажмите для просмотра прикрепленного файла
SM
так соберите старой версией ISE/XST. Или, что лучше, synplify. Если глюки останутся, то ловите блох в питании микросхемы.
litv
коэффициент а2 = - 2 ???

Да и как в матлабе все работает . Сильно сказано. При каких условиях и какое время моделирования?
Подайте максимальный сигнал на полсекунды.
syoma
Вроде нашли причину - не было нормальных констрейнов на тайминг в этой системе. В итоге разводилось оно, как получалось.
Всем все равно спасибо.
Коэффициент а2 = - 2 rolleyes.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.