Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Задать констрейн или переделать?
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
alexPec

Добрый день. Вопрос по созданию констрена для схемки на рисунке. Входной клок большой, больше 100 МГц, и понятно что делитель не сможет работать на такой частоте.
Но Ck_en срабатывает в 216 раз реже и естественно за время между импульсами ck_en все благополучно успевает поделиться, а таймквест ругается, думает что я хочу делить на частотах >100 мгц. И справедливо, т.к. задан в констрейнах только клок. Собственно 3 вопроса:

1.Как такой констрейн задать?
2.Не умеет ли таймквест создавать автоматом такие констрейны, вроде ведь все очевидно? Ведь после делителя частоты например он понимает, что клок в 2 раза меньше.
3.Нет ли каких отрицательных, снижающих производительность (а может увеличивающих потребление) системы, последствий в такой реализации клокования делителя (minimum pulse width в норме)? Может правильнее подать клок в 216 раз меньше на делитель и убрать ck_en (но крайне не желательно, на весь проект так клоков не напасешся, а так общий клок на весь проект)? В общем, хотелось бы от профессионалов услышать как правильнее делать.

Спасибо.
vadimuzzz
Цитата(alexPec @ Mar 10 2011, 03:41) *
1.Как такой констрейн задать?
2.Не умеет ли таймквест создавать автоматом такие констрейны, вроде ведь все очевидно? Ведь после делителя частоты например он понимает, что клок в 2 раза меньше.
3.Нет ли каких отрицательных, снижающих производительность (а может увеличивающих потребление) системы, последствий в такой реализации клокования делителя (minimum pulse width в норме)? Может правильнее подать клок в 216 раз меньше на делитель и убрать ck_en (но крайне не желательно, на весь проект так клоков не напасешся, а так общий клок на весь проект)?

1. читайте (у des00 статья есть) про мультициклы
2. нет, автоматом он считает для PLL, если ему сказать
3. чем меньше клоков, тем проще. про потребление скажет Power Analyzer, не должно различаться в первом приближении
barabek
Цитата(alexPec @ Mar 10 2011, 07:41) *
2.Не умеет ли таймквест создавать автоматом такие констрейны, вроде ведь все очевидно? Ведь после делителя частоты например он понимает, что клок в 2 раза меньше.


У Вас на приведенном участке схемы неочевидно для таймквеста. Да, enable имеет низкую частоту, но numer и denum не показаны, когда меняются. А если они меняются по предыдущему клоку, тогда время выполнения распространения сигналов по комбинаторике делителя должно уложиться в 1 клок. Другими словами, Ваш модуль должен считать быстро, но редко. Другое дело если numer и denum не меняются от enable до enable. Но, повторюсь, из Вашего куска схемы это совсем не очевидно.


alexPec
Цитата(barabek @ Mar 10 2011, 04:29) *
У Вас на приведенном участке схемы неочевидно для таймквеста. Да, enable имеет низкую частоту, но numer и denum не показаны, когда меняются. А если они меняются по предыдущему клоку, тогда время выполнения распространения сигналов по комбинаторике делителя должно уложиться в 1 клок. Другими словами, Ваш модуль должен считать быстро, но редко. Другое дело если numer и denum не меняются от enable до enable. Но, повторюсь, из Вашего куска схемы это совсем не очевидно.

А какая разница как numer и denom меняются? Ониведь по фронту защелкиваются, лишь бы setup прокатил.
barabek
Цитата(alexPec @ Mar 10 2011, 14:42) *
А какая разница как numer и denom меняются? Ониведь по фронту защелкиваются, лишь бы setup прокатил.


Так вот он (setup) может быть и не выдержан. От enable до триггера время распростронения как раз таки очень малое - упрощенно это мультиплексор выбирающий что подать на вход D-триггера - текущее состояние самого триггера или новое рассчитанное значение. А вот от numer и denom до входа триггера основные "облока" комбинаторики и расположены. От чего зависит результат деления? От делителя и делимого. Соответственно, изменилось любая из этих состовляющих - пошел распростроняться сигнал от входа элемента до выходного триггера этого элемента. Допустим время рассчета занимает 2 такта. Тогда делимое и делитель должны быть неизменные в течении 2 тактов включая такт с установленным enable. Иначе - беда и отрицательные слаки. Последние Вы можете задавить констрейнами (multicycle или даже falthpath), а вот с бедой ничего не поделать sm.gif.

PS Я это написал из соображений, что сперва производится расчет на комбинаторике и результат записывается в регистр, а не запись по enable входных делимого и делителя в свои регистры и последующий расчет в комбинаторике. Надеюсь, поняли о чем я.
_Anatoliy
Цитата(alexPec @ Mar 9 2011, 23:41) *
2.Не умеет ли таймквест создавать автоматом такие констрейны, вроде ведь все очевидно?


Таймквест может сам создать нужный констрейн, но ему нужно указать какой констрейн Вы хотите и для каких сигналов.Потом эту созданную строчку можно просто вставить в файл *.sdc
Ethereal
Вообще, при таком подходе (данные раз в 216 тактов) не лучше ли поставить рекуррентный делитель с защелкиванием входных данных и началом счета по инейблу?
Если я не ошибаюсь, то стандартный альтеровский делитель на мегафункциях при любой конвейеризации занимает много-много логики, потому что параллельно реализует все N ступеней деления.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.