|
Констрейны на глобальные сигналы: как правильно?, Сделать из багов фичи |
|
|
|
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. Добавлю - задержка на такт не дается "даром". В счетчике теряется одно из состояний, т.е., если бы он был загружаемым, он не смог бы делить на любое допустимое число.
|
|
|
|
|
Jan 24 2012, 03:44
|
Участник

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

|
Цитата(ViKo @ Jan 23 2012, 22:17)  Давайте я вам покажу - см на элемент, формирующий сигнал T4 (AND4), и на элемент, формирующий сигнал TC (уже AND5). это совсем другая задержка, которая отвечает лишь за то, что счётчик тупо будет или не будет работать на выбранной тактовой частоте. 28 -- сложно судить: много это или мало  но, как бы там ни было, это меньше 2^5. и, пусть даже "энды" делались бы на 2-х входовых элементах, то с оптимизацией синтезатора по скорости (как и выставлено по дефолту в ise13.1) имеем в худшем случае последовательный проход сигнала через 5 элементов, согласно рисунку:
. Но, во-первых, мы уже давно имеем дело с четырех и более -входовых LUT'ами. И, во-вторых, речь идет совсем о другой задержке: о задержке выдачи результата относительно времени прихода клока. И эта задержка, по-прежнему, остается равной задержке одного триггера. Цитата(ViKo @ Jan 23 2012, 22:17)  Проверить зависимость максимальной тактовой частоты от разрядности счетчика элементарно просто. угу, сейчас попробовал с теми же условиями: оптимизация по объему -- 350 МГц, оптимизация по скорости (дефолтная) -- 550 МГц.
|
|
|
|
|
Jan 24 2012, 04:46
|
Знающий
   
Группа: Свой
Сообщений: 802
Регистрация: 11-05-07
Из: Томск
Пользователь №: 27 650

|
Цитата(MHC @ Jan 24 2012, 10:44)  это совсем другая задержка, которая отвечает лишь за то, что счётчик тупо будет или не будет работать на выбранной тактовой частоте. 28 -- сложно судить: много это или мало  но, как бы там ни было, это меньше 2^5. и, пусть даже "энды" делались бы на 2-х входовых элементах, то с оптимизацией синтезатора по скорости (как и выставлено по дефолту в ise13.1) имеем в худшем случае последовательный проход сигнала через 5 элементов, согласно рисунку:
. Но, во-первых, мы уже давно имеем дело с четырех и более -входовых LUT'ами. И, во-вторых, речь идет совсем о другой задержке: о задержке выдачи результата относительно времени прихода клока. И эта задержка, по-прежнему, остается равной задержке одного триггера. угу, сейчас попробовал с теми же условиями: оптимизация по объему -- 350 МГц, оптимизация по скорости (дефолтная) -- 550 МГц. Вы нарисовали сейчас бинарное дерево формирования преноса для n-го бита. Для формирования только одного переноса такая схема пойдёт вполне. Однако в реальной жизни для работы счётчика также необходимо сформировать переносы для ВСЕХ предыдущих n-му разрядов. Поэтому в реальности переносы формируются последовательно дабы не дуплицировать нарисованные вами бинарные деревья для КАЖДОГО разряда. Таким образом, количество "слоёв логики" необходимое для формирования м-разрядного счётчика при r-входовых LUT будет равно (м-1)/(r-1) . Вторая минус единица тут появляется потому, что один вход как раз и занят под переносы со всех младших разрядов. Для первой группы этот вход можно не пользовать (поэтому минус первая единица). Тогда к примеру для 34-разрядного счётчика и 5-входовой LUT необходимо 9 слоёв логики. С использованием цепей быстрого переноса такое реализовать на современных ПЛИСах вполне реально. Без цепей быстрого переноса частотка угробится сразу и очень сильно.
|
|
|
|
Сообщений в этой теме
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   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
|
|
|