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

 
 
> Непонятка с количеством регистров в feedback фильтра, Непонятка с ISE
syoma
сообщение Mar 10 2014, 16:13
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 817
Регистрация: 14-02-07
Из: наших, которые работают за бугром
Пользователь №: 25 368



Народ, помогите - уже неделю мучаюсь, но не могу найти причину.
В общем делаю в 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 даже с такими делами проблем не было.

Спасибо за советы.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 8)
SM
сообщение Mar 11 2014, 01:54
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



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

синтезатор может попередвигать регистры сквозь логику, но добавить лишнего никак не имеет право, как и убрать.
Go to the top of the page
 
+Quote Post
litv
сообщение Mar 11 2014, 02:21
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 401
Регистрация: 6-10-04
Из: Воронеж
Пользователь №: 806



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

Обычно при некотором снижении частоты после фильтрации КИХ выгоднее по ресурсам. И нет никаких трахов с устойчивостью и нестандартной разрядностью. Зачем вообще Вам БИХ - Вы сами знаете?
Go to the top of the page
 
+Quote Post
olegras
сообщение Mar 11 2014, 02:26
Сообщение #4


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

Группа: Участник
Сообщений: 113
Регистрация: 12-03-07
Пользователь №: 26 075



Убрать может в ходе оптимизации. Легко. Но информирует обязательно. У Вас фильтр на варнинги случайно не включен?
Go to the top of the page
 
+Quote Post
SM
сообщение Mar 11 2014, 03:34
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(olegras @ Mar 11 2014, 06:26) *
Убрать может в ходе оптимизации. Легко. Но информирует обязательно.

ТОЛЬКО, и никак иначе, если выход этого регистра нигде не используется. Иначе никакого права убирать его у него нету.
Go to the top of the page
 
+Quote Post
syoma
сообщение Mar 11 2014, 05:37
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 817
Регистрация: 14-02-07
Из: наших, которые работают за бугром
Пользователь №: 25 368



Вот сам фильтр в МАТЛАБе. Да - он был сделан из фильтра с плавающей точкой. Сигнал изменяется от -1 до +1. Рабочая частота фильтра 1МГц, но благодаря задержкам реальная частота выхода сэмплов 200кГц. Фильтр настроен на выделение 50Гц составляющей сигнала. Как я уже говорил в МАТЛАБе все работает включая максимальные значения и переполнения - все умножители и сумматоры имеют опцию Saturate on Overflow и как видно из рисунка разрядность внутренних данных больше чем входных и выходных. В Chipscope тоже все работает также как и в МАТЛАбе, но когда фильтр действительно работает.
Прикрепленное изображение
Go to the top of the page
 
+Quote Post
SM
сообщение Mar 11 2014, 06:50
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



так соберите старой версией ISE/XST. Или, что лучше, synplify. Если глюки останутся, то ловите блох в питании микросхемы.
Go to the top of the page
 
+Quote Post
litv
сообщение Mar 11 2014, 07:07
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 401
Регистрация: 6-10-04
Из: Воронеж
Пользователь №: 806



коэффициент а2 = - 2 ???

Да и как в матлабе все работает . Сильно сказано. При каких условиях и какое время моделирования?
Подайте максимальный сигнал на полсекунды.
Go to the top of the page
 
+Quote Post
syoma
сообщение Mar 13 2014, 06:53
Сообщение #9


Профессионал
*****

Группа: Свой
Сообщений: 1 817
Регистрация: 14-02-07
Из: наших, которые работают за бугром
Пользователь №: 25 368



Вроде нашли причину - не было нормальных констрейнов на тайминг в этой системе. В итоге разводилось оно, как получалось.
Всем все равно спасибо.
Коэффициент а2 = - 2 rolleyes.gif
Go to the top of the page
 
+Quote Post

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

 


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


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