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

 
 
 
Reply to this topicStart new topic
> Задать констрейн или переделать?, Как правильно?
alexPec
сообщение Mar 9 2011, 21:41
Сообщение #1


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

Группа: Свой
Сообщений: 1 284
Регистрация: 9-04-06
Пользователь №: 15 968




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

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

Спасибо.
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Mar 9 2011, 23:45
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



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

1. читайте (у des00 статья есть) про мультициклы
2. нет, автоматом он считает для PLL, если ему сказать
3. чем меньше клоков, тем проще. про потребление скажет Power Analyzer, не должно различаться в первом приближении
Go to the top of the page
 
+Quote Post
barabek
сообщение Mar 10 2011, 01:29
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 540
Регистрация: 16-08-07
Из: Владивосток
Пользователь №: 29 831



Цитата(alexPec @ Mar 10 2011, 07:41) *
2.Не умеет ли таймквест создавать автоматом такие констрейны, вроде ведь все очевидно? Ведь после делителя частоты например он понимает, что клок в 2 раза меньше.


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


Go to the top of the page
 
+Quote Post
alexPec
сообщение Mar 10 2011, 04:42
Сообщение #4


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

Группа: Свой
Сообщений: 1 284
Регистрация: 9-04-06
Пользователь №: 15 968



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

А какая разница как numer и denom меняются? Ониведь по фронту защелкиваются, лишь бы setup прокатил.
Go to the top of the page
 
+Quote Post
barabek
сообщение Mar 10 2011, 05:05
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 540
Регистрация: 16-08-07
Из: Владивосток
Пользователь №: 29 831



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


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

PS Я это написал из соображений, что сперва производится расчет на комбинаторике и результат записывается в регистр, а не запись по enable входных делимого и делителя в свои регистры и последующий расчет в комбинаторике. Надеюсь, поняли о чем я.
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Mar 10 2011, 05:55
Сообщение #6


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832



Цитата(alexPec @ Mar 9 2011, 23:41) *
2.Не умеет ли таймквест создавать автоматом такие констрейны, вроде ведь все очевидно?


Таймквест может сам создать нужный констрейн, но ему нужно указать какой констрейн Вы хотите и для каких сигналов.Потом эту созданную строчку можно просто вставить в файл *.sdc
Go to the top of the page
 
+Quote Post
Ethereal
сообщение Mar 10 2011, 07:54
Сообщение #7


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

Группа: Свой
Сообщений: 114
Регистрация: 7-05-08
Из: РФ, Москва
Пользователь №: 37 354



Вообще, при таком подходе (данные раз в 216 тактов) не лучше ли поставить рекуррентный делитель с защелкиванием входных данных и началом счета по инейблу?
Если я не ошибаюсь, то стандартный альтеровский делитель на мегафункциях при любой конвейеризации занимает много-много логики, потому что параллельно реализует все N ступеней деления.


--------------------
SystemVerilog - язык, заточенный Альтерой под свои кристаллы теми же приемами использования примитивов, что и AHDL. ©
Go to the top of the page
 
+Quote Post

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

 


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


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