|
Констрейны на глобальные сигналы: как правильно?, Сделать из багов фичи |
|
|
|
Jan 20 2012, 11:12
|
Знающий
   
Группа: Свой
Сообщений: 972
Регистрация: 12-04-09
Из: Москва
Пользователь №: 47 543

|
Здравствуйте, уважаемые гуру. Хотца сделать банальнейшую вещь, а именно - использовать глобальные сигналы для передачи своих сигналов. Ну например: секундный импульс. Представляет из себя сигнал, который равен 1 один такт в секунду, всё остальное время он равен нулю. Ну то есть, ____________________________/\________________________________/\__________ Получается этот сигнал при помощи здорового счетчика с не менее здоровым компаратором, соответственно уже имеет значительную задержку. Если его посадить на глобальный сигнал, это добавит задержку пути через буфер этого самого глобального сигнала, в результате чего задержка станет совсем немаленькой, и после дохождения до логики на другом конце микросхемы суммарная задержка начинает немного превышать значение периода такта (5 нс). (необходимо сказать, что тактовая частота везде одна и та же, секундный импульс используется как линия данных в комбинационной логике) Фишка в том, что нет никаких проблем, если к логике этот сигнал будет приходить с задержкой на такт, лишь бы приходил на всей микросхеме в пределах одного такта и с соблюдением времен установки/удержания триггеров. Как это правильно сделать? Применим ли здесь Multicycle, например так: Код set_multicycle_path -from [get_registers {TCNTR_TimeCounter:CNTR_TimeCounter|Time_1S_Pulse}] -to * -setup -end 2 set_multicycle_path -from [get_registers {TCNTR_TimeCounter:CNTR_TimeCounter|Time_1S_Pulse}] -to * -hold -end 1 Ну то есть, насколько я понимаю эти констрейны, они требуют, чтобы сигнал Time_1S_Pulse анализировался относительно 2-го фронта, считая за 0 - фронт генерации Time_1S_Pulse. Сможет ли фиттер обеспечить разводку по таким констрейнам, т.е. добавить необходимую задержку для "перекидывания" сигнала через 1-й фронт. Всем заранее спасибо за ответы. P.S. Altera, TimeQuest.
|
|
|
|
|
 |
Ответов
|
Jan 22 2012, 05:05
|
Участник

Группа: Validating
Сообщений: 36
Регистрация: 4-10-10
Пользователь №: 59 931

|
Цитата(Koluchiy @ Jan 20 2012, 15:12)  Получается этот сигнал при помощи здорового счетчика с не менее здоровым компаратором, соответственно уже имеет значительную задержку. и всем тем, кто тут предлагает "делить счетчик пополам и т.д": кто Вам всем сказал, что разрядности счётчика или компаратора влияют на задержку выхода результата? upcounter представляет из себя конвейерную цепочку триггеров и, соответственно, работает с задержками одного триггера. Только не надо путать счетчик и сумматор. в последнем используются переносы битов, со всеми вытекающими задержками.
|
|
|
|
|
Jan 22 2012, 09:20
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(MHC @ Jan 21 2012, 23:05)  кто Вам всем сказал, что разрядности счётчика или компаратора влияют на задержку выхода результата? upcounter представляет из себя конвейерную цепочку триггеров и, соответственно, работает с задержками одного триггера. Только не надо путать счетчик и сумматор. в последнем используются переносы битов, со всеми вытекающими задержками. Как минимум синтезаторы, которые последние лет 5-8, на всех современных плис синтезируют счетчики на основе ячеек аппаратных суммторов с быстрым переносом. А вот некоторые разработчики до сих пор мыслят в рамках К155, вместо примитивов целевой ПЛИС %) Цитата(Koluchiy @ Jan 20 2012, 08:00)  Результат идентичный. Скрин положу в понедельник. правленные сорцы, скрины и т.д. выкладывайте. что-то вы умалчиваете, не может ква так тупить
--------------------
|
|
|
|
|
Jan 23 2012, 15:57
|
Участник

Группа: Validating
Сообщений: 36
Регистрация: 4-10-10
Пользователь №: 59 931

|
Цитата(Bad0512 @ Jan 22 2012, 13:14)  Вы бы хоть почитали немного о том, как устроены счётчики и что такое перенос к примеру прежде чем со своими умными замечаниями лезть... Правильно советуют. Счётчик на 175000000 легко пилится на 2 14-разрядных параллельных счётчика. Второй счётчик получает на свой вход CE перенос от первого счётчика предварительно пропущенный через триггер дабы задержки переноса в первом счётчике не суммировались с задержками второго. ..... Ок, давайте немного почитаем... не так ли устроены счетчики?
покажите пальцем: где зависимость задержки выхода от разрядности счетчика? дока старая, но не думаю, что что-либо принципиально поменялось. повторюсь еще раз: не путайте с сумматорами. Цитата(des00 @ Jan 22 2012, 13:20)  Как минимум синтезаторы, которые последние лет 5-8, на всех современных плис синтезируют счетчики на основе ячеек аппаратных сумматоров с быстрым переносом. А вот некоторые разработчики до сих пор мыслят в рамках К155, вместо примитивов целевой ПЛИС %) гм... либо я не те ПЛИС пробую, либо не с тем синтезатором, либо просто отстаю от жизни... по поводу "ячеек аппаратных сумматоров с быстрым переносом" -- это как? к примеру, у виртексов 4-5-х из основных элементов я знаю только clb-блоки, ram-блоки и блоки dsp48 (я ничего не пропустил?). И я сильно разочаровался бы, если б синтезатор сделал мне данный счётчик на dsp48. У последних имеется уйма куда более полезных применений. Но, к счастью, синтезатор от ise13.1 в 5-м виртексе и с дефолтными настройками выдал мне в качестве результата 28-ми битный upcounter на clb-блоках (проверено в "technology schematic").
|
|
|
|
|
Jan 23 2012, 18:17
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
Цитата(MHC @ Jan 23 2012, 18:57)  покажите пальцем: где зависимость задержки выхода от разрядности счетчика? Давайте я вам покажу - см на элемент, формирующий сигнал T4 (AND4), и на элемент, формирующий сигнал TC (уже AND5). Сигнал T4 участвует в формировании сигнала TC. То есть, пока T4 не сформируется, TC не начнет формироваться. Дальше - больше. Потребуются AND6, AND7, AND8, AND9... В конце концов перенос съедается совсем. И не cможет сформироваться за период тактовой частоты. Схемы быстрого переноса не меняют в принципе формирования переноса ничего. Также рано или поздно съедаются. Спасает задержка на такт на триггере. Появляется целый такт времени для формирования переносов. Проверить зависимость максимальной тактовой частоты от разрядности счетчика элементарно просто. P.S. Добавлю - задержка на такт не дается "даром". В счетчике теряется одно из состояний, т.е., если бы он был загружаемым, он не смог бы делить на любое допустимое число.
|
|
|
|
Сообщений в этой теме
Koluchiy Констрейны на глобальные сигналы: как правильно? Jan 20 2012, 11:12 barabek Цитата(Koluchiy @ Jan 20 2012, 21:12) Пол... Jan 20 2012, 11:43 Hoodwin а зачем вообще кострейн то? Почему нельзя сделать ... Jan 20 2012, 11:43 Koluchiy ЦитатаЯ правда, видимо, не понял главного, зачем п... Jan 20 2012, 12:08 des00 Цитата(Koluchiy @ Jan 20 2012, 06:08) Про... Jan 20 2012, 12:13 Koluchiy Попробовал так, как написал в корне:
Кодset_multic... Jan 20 2012, 12:45 des00 Цитата(Koluchiy @ Jan 20 2012, 06:45) Поп... Jan 20 2012, 13:26 ViKo Разбиваете счетчик пополам, с младшего в старший п... Jan 20 2012, 13:29 Koluchiy Мне бы хотелось, чтобы мне посоветовали, как сдела... Jan 20 2012, 13:47 des00 Цитата(Koluchiy @ Jan 20 2012, 07:47) Мне... Jan 20 2012, 13:57 Stewart Little Цитата(Koluchiy @ Jan 20 2012, 17:47) Сут... Jan 20 2012, 14:14  des00 Цитата(Stewart Little @ Jan 20 2012, 08:1... Jan 20 2012, 16:52   Stewart Little Цитата(des00 @ Jan 20 2012, 20:52) правда... Jan 20 2012, 18:43 Koluchiy Цитатая бы сделал так -to [all_clocks {}]
Результа... Jan 20 2012, 14:00 Koluchiy Цитатавременные констрейны используются не для тог... Jan 21 2012, 08:57 Bad0512 Цитата(MHC @ Jan 22 2012, 12:05) и всем т... Jan 22 2012, 09:14    MHC Цитата(ViKo @ Jan 23 2012, 22:17) Давайте... Jan 24 2012, 03:44     Bad0512 Цитата(MHC @ Jan 24 2012, 10:44) это совс... Jan 24 2012, 04:46   des00 Цитата(MHC @ Jan 23 2012, 10:57) по повод... Jan 24 2012, 04:49    Мур Цитата(des00 @ Jan 24 2012, 07:49) ...на ... Jan 24 2012, 07:02     bogaev_roman Цитата(Мур @ Jan 24 2012, 11:02) Простите... Jan 24 2012, 07:13     des00 Цитата(Мур @ Jan 24 2012, 01:02) Простите... Jan 24 2012, 07:18 Koluchiy Цитатачто-то вы умалчиваете
Только давайте не буде... Jan 22 2012, 10:45 des00 Цитата(Koluchiy @ Jan 22 2012, 04:45) Тол... Jan 22 2012, 10:58 Koluchiy Я не буду всех убеждать в совершенстве своего прое... Jan 22 2012, 11:21 des00 Цитата(Koluchiy @ Jan 22 2012, 05:21) - а... Jan 22 2012, 11:56 dvladim Цитата(des00 @ Jan 22 2012, 14:58) да что... Jan 22 2012, 14:51 Bad0512 Цитата(dvladim @ Jan 22 2012, 21:51) Да к... Jan 22 2012, 15:36 dvladim Цитата(MHC @ Jan 23 2012, 19:57) Но, к сч... Jan 23 2012, 16:30 MHC Цитата(dvladim @ Jan 23 2012, 20:30) В cl... Jan 23 2012, 16:54 Мур Да!.. Я Verilog не очень знаю. Идея формирова... Jan 24 2012, 09:11 bogaev_roman Цитата(Мур @ Jan 24 2012, 13:11) Да!.... Jan 24 2012, 09:28  Мур Цитата(bogaev_roman @ Jan 24 2012, 12:28)... Jan 24 2012, 12:30 Koluchiy Я смотрю, тема ушла не то, чтобы не туда, а прямо ... Jan 24 2012, 18:25 des00 недавно решал похожую задачу, есть дсп блок, с нег... Jan 28 2012, 18:33
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|