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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Вроде простой констрейн, а второй день бьюсь...
alexPec
сообщение Apr 20 2012, 18:44
Сообщение #1


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

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



Подскажите, Уважаемые. Чего-то вообще тупик.
Есть простая схема (первый рисунок) - специально нарисовал чтоб кусок с констрейном отладить. Триггер должен разрешать импульс на выход.
Если брать все без задержек, то на входах элемента "И" получится картина как на втором рисунке
Чтобы весь положительный импульс прошел наверняка, надо сигнал разрешения сдвинуть как на третьем рисунке, на 3нс. Т.е. на вход элемента "И" сигнал с триггера должен прийти на 3 нс раньше, чем фронт клока.
Как это описать? Пробовал делать сгенерированный клок на выходе триггера и ставить set_max_delay, пробовал делать так:

set_max_delay -from [get_registers {inst2}] -rise_to [get_clocks {inst1|altpll_component|auto_generated|pll1|clk[0]}] 3

и еще много чего, уже не упомнить, но результата ноль...

Кто чем может, подскажите пожалуйста!

PS. Крутить фазы на ПЛЛ-е не предлагать, этап пройденный, в большом проекте в итоге от сборки к сборке всяко может получится: может первый сигнал задержаться, а может и второй. Надо именно законстрейнить, НО КАК?


UPD: Сигналы рисовал сам, есть неточность, изменение на выходе триггера должно быть по фронту а не по спаду, но сути это не меняет.
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
alevnew
сообщение Apr 21 2012, 05:03
Сообщение #2


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

Группа: Участник
Сообщений: 90
Регистрация: 17-05-07
Пользователь №: 27 775



Вы бы лучше нарисовали диаграммы того, что требуется получить на выходе.
Может бы и мысли появились.

А у Вас клок заведен на логику - как то это неправильно. Есть смутные предположения, что от этого надо избавиться и увеличить клок в 2 раза.

Сообщение отредактировал alevnew - Apr 21 2012, 05:05
Go to the top of the page
 
+Quote Post
maksimp
сообщение Apr 21 2012, 05:29
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 313
Регистрация: 2-07-11
Пользователь №: 66 023



Тактировать триггер по спаду. Если это не допустимо, как вы пишете - то общий ответ - сделать этого нельзя.
Вы хотите написать количество наносекунд задержки, и чтобы в соответствии с этим САПР вставила требуемое количестов элементов lcell или аналогичных, чтобы задержка была не менее заданной? Она так не умеет. Ограничения воспринимаются в обратную сторону - вставить не слишком много логических ячеек по ходу сигнала.
Go to the top of the page
 
+Quote Post
alexPec
сообщение Apr 21 2012, 06:37
Сообщение #4


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

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



Цитата(alevnew @ Apr 21 2012, 09:03) *
Вы бы лучше нарисовали диаграммы того, что требуется получить на выходе.
Может бы и мысли появились.

А у Вас клок заведен на логику - как то это неправильно. Есть смутные предположения, что от этого надо избавиться и увеличить клок в 2 раза.


Диаграмма того что требуется получить на входах И и есть 3-й рисунок

Клок нельзя увеличить в 2 раза.

Цитата(maksimp @ Apr 21 2012, 09:29) *
Тактировать триггер по спаду. Если это не допустимо, как вы пишете - то общий ответ - сделать этого нельзя.
Вы хотите написать количество наносекунд задержки, и чтобы в соответствии с этим САПР вставила требуемое количестов элементов lcell или аналогичных, чтобы задержка была не менее заданной? Она так не умеет. Ограничения воспринимаются в обратную сторону - вставить не слишком много логических ячеек по ходу сигнала.


Я хочу описать количество наносекунд задержки, и чтобы в соответствии с этим САПР расположил элементы (не добавлял новые) и провел пути так чтоб выполнить это требование. Ув. DES00 консультировал по констрейнам, многие сигналы двигаются в пределах +/- 1..2 нс только за счет указания констрейнов путем расположения элементов и проведения трасс.

Да хотя бы как это описать, чтоб он хоть ругнулся при компиляции что тайминг не проходит. Ато только в симуляторе и вижу что что-то не так, когда глитчи появляются от компиляции к компиляции при изменении проекта.

Спасибо за ответы!

PS Насчет того что нельзя этого сделать - можно, при каких-то сборках все ведь нормально бывает, а чуть поменял - улетели нужные задержки и в отчете таймквеста это никак не отражается, что уже нерабочий проект...
Go to the top of the page
 
+Quote Post
Timmy
сообщение Apr 21 2012, 09:48
Сообщение #5


Знающий
****

Группа: Участник
Сообщений: 835
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515



Если есть возможность, для такой функции лучше использовать выходной DDR триггер.
Go to the top of the page
 
+Quote Post
alexPec
сообщение Apr 21 2012, 14:31
Сообщение #6


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

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



Цитата(Timmy @ Apr 21 2012, 13:48) *
Если есть возможность, для такой функции лучше использовать выходной DDR триггер.

Нельзя триггер: надо пропустить на выход положительный импульс ровно той ширины как на выходе PLL.
Повторюсь - это тестовая схема, в ней триггер - имитация сигнала разрешения в реальной схеме. Вот и нужно задать констрейн между клоком и сигналом разрешения клока. Чтоб сигнал разрешения приходил немного загодя до положительного импульса.
Go to the top of the page
 
+Quote Post
UtArt
сообщение Apr 21 2012, 16:17
Сообщение #7





Группа: Новичок
Сообщений: 3
Регистрация: 25-07-08
Пользователь №: 39 201



Пару мыслей на этот счет...
Насколько я понимаю, на 2-м рисунке сигнал а - нижний вход элемента "И", b - верхний вход. ИМХО очевидно, что изменение сигнала на b есть следствие изменение сигнала a (по логике работы D-триггера). А из 3-го рисунка видно, что Вы хотите, чтобы b изменялся раньше, чем a, т.е. следствие опережает причину...
Теперь почему у Вас схема в некоторых случаях работает...
Возможно один из сигналов a или b "добегает" до элемента "И" раньше. Если предположить, что сигнал до b "добегает" позже сигнала до "a" на ~10 нс (по рисунку), то все должно работать.
Сомневаюсь, что существует констрейн, который указывает, чтобы сигнал до элемента доходил "не раньше, чем". Поэтому в вашем случае лучше использовать дополнительные триггеры.

Возможно сумбурно получилось, но смысл, думаю, понятен.


--------------------
Не тратьте время напрасно. Из него состоит наша жизнь.
Go to the top of the page
 
+Quote Post
alexPec
сообщение Apr 21 2012, 18:52
Сообщение #8


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

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



Цитата(UtArt @ Apr 21 2012, 20:17) *
Пару мыслей на этот счет...
Насколько я понимаю, на 2-м рисунке сигнал а - нижний вход элемента "И", b - верхний вход. ИМХО очевидно, что изменение сигнала на b есть следствие изменение сигнала a (по логике работы D-триггера). А из 3-го рисунка видно, что Вы хотите, чтобы b изменялся раньше, чем a, т.е. следствие опережает причину...
Теперь почему у Вас схема в некоторых случаях работает...
Возможно один из сигналов a или b "добегает" до элемента "И" раньше. Если предположить, что сигнал до b "добегает" позже сигнала до "a" на ~10 нс (по рисунку), то все должно работать.
Сомневаюсь, что существует констрейн, который указывает, чтобы сигнал до элемента доходил "не раньше, чем". Поэтому в вашем случае лучше использовать дополнительные триггеры.

Возможно сумбурно получилось, но смысл, думаю, понятен.


В случае клоков таймквест считает параметр "clock relationship" - расстояние между активными фронтами как я понял. Т.е по сути неважно, доходит сигнал со сдвигом на один такт или без оного. Сам клок то ведь периодический. Поэтому и констрейн надо задать до активного фронта (переднего). Если мультицикл=2 использовать (т.е. указать констрейн чтоб таймквест считал фронты со сдвигом клока на один такт) - тоже варинат, но у меня не получилось...

Повторюсь, триггеры нельзя - после них потеряется длительность импульса с ПЛЛ, а ее надо соблюсти
Go to the top of the page
 
+Quote Post
Timmy
сообщение Apr 21 2012, 22:28
Сообщение #9


Знающий
****

Группа: Участник
Сообщений: 835
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515



Цитата(alexPec @ Apr 21 2012, 18:31) *
Нельзя триггер: надо пропустить на выход положительный импульс ровно той ширины как на выходе PLL.

Ну так DDR триггер именно это и может. Там же внутри несколько обычных триггеров и логика, прямо управляемая клоком, с гарантированными задержками.
Go to the top of the page
 
+Quote Post
des00
сообщение Apr 23 2012, 05:59
Сообщение #10


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(alexPec @ Apr 21 2012, 00:37) *
Я хочу описать количество наносекунд задержки, и чтобы в соответствии с этим САПР расположил элементы (не добавлял новые) и провел пути так чтоб выполнить это требование.

В данном конкретном случае, в рамках квартуса и автоматически ИМХО это не возможно. Потому что, как уже отметили, схема асинхронная и несвязанная с передачей данных.

ИМХО решать эту задачу нужно в рамках построения переключателей тактовой частоты, а именно сигнал управления должен работать по спадающему фронту частоты и задавать максимальные задержки от триггера управляющего сигнала, до ключа. Но подобные вещи задаются через set_net_delay, на которые ква не смотрит и команда проверки задержек, даже не включена в пакетную задачу анализа времянок (до 9.1 включительно).

Помимо этого есть очевидные проблемы с разводкой глобального тактового сигнала на логику. Поэтому, если out это выходной порт, то вам правильно посоветовали использовать DDR выходной триггер. Для этого нужно включить его повторителем тактового сигнала и подать сигнал управления с логики, работающей на спадающем фронте тактовой частоты.

UPD. при разводке ква старается минимизировать задержки (об этом на форуме альтеры говорилось), поэтому вариант с управлением по спаду тактовой имеет больше шансов получиться wink.gif


--------------------
Go to the top of the page
 
+Quote Post
alexPec
сообщение Apr 26 2012, 18:32
Сообщение #11


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

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



Цитата(des00 @ Apr 23 2012, 09:59) *
Помимо этого есть очевидные проблемы с разводкой глобального тактового сигнала на логику. Поэтому, если out это выходной порт, то вам правильно посоветовали использовать DDR выходной триггер. Для этого нужно включить его повторителем тактового сигнала и подать сигнал управления с логики, работающей на спадающем фронте тактовой частоты.


Раз появилось два мнения одинаковых - так и сделал. Но раньше с ддр не работал, поэтому запустить сходу не получается, а о граблях не знаю. Правильно ли я понял идею, подскажите.

Схема в рисунке. С плл выходит два клока, сдвинутые на 90 град. один заводится на входы D - входы обоих DDR триггеров, другой - на клок. Ожидал на выходе увидеть повторение сигнала cl. Как видно из рисунка симулятора - неопределенность. Выходы cl и clk80 - виртуальные, чтоб было видно соотношение фаз. Таймквест не ругается, ПЛЛ лочится, DDR буфер используется (рисунок resource property editor, там видно)

В чем может быть затык?
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
des00
сообщение Apr 26 2012, 19:21
Сообщение #12


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(alexPec @ Apr 26 2012, 13:32) *
В чем может быть затык?

в том, что это не повторитель тактовой wink.gif посмотрите логическую функцию выполняемую ddr регистром и поймете в чем ваша ошибка. Подсказка частота там используется всего одна wink.gif


--------------------
Go to the top of the page
 
+Quote Post
alexPec
сообщение Apr 27 2012, 08:22
Сообщение #13


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

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



Цитата(des00 @ Apr 26 2012, 23:21) *
в том, что это не повторитель тактовой wink.gif посмотрите логическую функцию выполняемую ddr регистром и поймете в чем ваша ошибка. Подсказка частота там используется всего одна wink.gif


Вроде понял. Сделал так (рисунок), покритикуйте. Триггер играет роль разрешителя импульсов. С первого взгляда все ок (рисунок симулятора)...
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
des00
сообщение Apr 27 2012, 18:00
Сообщение #14


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(alexPec @ Apr 27 2012, 02:22) *
Вроде понял. Сделал так (рисунок), покритикуйте. Триггер играет роль разрешителя импульсов. С первого взгляда все ок (рисунок симулятора)...

хммм, для повторителя явно не то %) там надо на ноги данных подать 0 и 1, а рулить всем остальным. Но в вашем случае может быть ваша схема и работает %)


--------------------
Go to the top of the page
 
+Quote Post
alexPec
сообщение Apr 28 2012, 13:37
Сообщение #15


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

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



Цитата(des00 @ Apr 27 2012, 22:00) *
хммм, для повторителя явно не то %) там надо на ноги данных подать 0 и 1, а рулить всем остальным. Но в вашем случае может быть ваша схема и работает %)

Да я сначала так и сделал, подал 0 и 1, а как тогда импульсы запрещать? У меня не получалось. Один раз защелкнули 0 и 1 (если клокэнейблом разрешать) и все - потом хоть разрешай, хоть не разрешай - 0 и 1 уже защелкнуты и импульсы уже не останавливаются. А тут получается подоспела единица к началу импульса - прошел импульс, нет - нет импульса. То есть импульс либо проходит полностью (не обрезается), либо вообще не идет, и если времянки не проходят сейчас по крайней мере должен ругнуться.

Вобщем идея действительно стоящая, сейчас все по уму, огромное Вам спасибо, Des00 и Timmy!
Go to the top of the page
 
+Quote Post

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

 


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


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