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

 
 
> Констрейны на глобальные сигналы: как правильно?, Сделать из багов фичи
Koluchiy
сообщение Jan 20 2012, 11:12
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 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.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
MHC
сообщение Jan 22 2012, 05:05
Сообщение #2


Участник
*

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



Цитата(Koluchiy @ Jan 20 2012, 15:12) *
Получается этот сигнал при помощи здорового счетчика с не менее здоровым компаратором, соответственно уже имеет значительную задержку.
и всем тем, кто тут предлагает "делить счетчик пополам и т.д":
кто Вам всем сказал, что разрядности счётчика или компаратора влияют на задержку выхода результата? upcounter представляет из себя конвейерную цепочку триггеров и, соответственно, работает с задержками одного триггера. Только не надо путать счетчик и сумматор. в последнем используются переносы битов, со всеми вытекающими задержками.
Go to the top of the page
 
+Quote Post
des00
сообщение Jan 22 2012, 09:20
Сообщение #3


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

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



Цитата(MHC @ Jan 21 2012, 23:05) *
кто Вам всем сказал, что разрядности счётчика или компаратора влияют на задержку выхода результата? upcounter представляет из себя конвейерную цепочку триггеров и, соответственно, работает с задержками одного триггера. Только не надо путать счетчик и сумматор. в последнем используются переносы битов, со всеми вытекающими задержками.

Как минимум синтезаторы, которые последние лет 5-8, на всех современных плис синтезируют счетчики на основе ячеек аппаратных суммторов с быстрым переносом. А вот некоторые разработчики до сих пор мыслят в рамках К155, вместо примитивов целевой ПЛИС %)

Цитата(Koluchiy @ Jan 20 2012, 08:00) *
Результат идентичный.
Скрин положу в понедельник.

правленные сорцы, скрины и т.д. выкладывайте. что-то вы умалчиваете, не может ква так тупить


--------------------
Go to the top of the page
 
+Quote Post
MHC
сообщение Jan 23 2012, 15:57
Сообщение #4


Участник
*

Группа: 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").
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jan 23 2012, 18:17
Сообщение #5


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 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. Добавлю - задержка на такт не дается "даром". В счетчике теряется одно из состояний, т.е., если бы он был загружаемым, он не смог бы делить на любое допустимое число.
Go to the top of the page
 
+Quote Post
MHC
сообщение Jan 24 2012, 03:44
Сообщение #6


Участник
*

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



Цитата(ViKo @ Jan 23 2012, 22:17) *
Давайте я вам покажу - см на элемент, формирующий сигнал T4 (AND4), и на элемент, формирующий сигнал TC (уже AND5).

это совсем другая задержка, которая отвечает лишь за то, что счётчик тупо будет или не будет работать на выбранной тактовой частоте. 28 -- сложно судить: много это или мало sm.gif но, как бы там ни было, это меньше 2^5. и, пусть даже "энды" делались бы на 2-х входовых элементах, то с оптимизацией синтезатора по скорости (как и выставлено по дефолту в ise13.1) имеем в худшем случае последовательный проход сигнала через 5 элементов, согласно рисунку:
Прикрепленное изображение
.
Но, во-первых, мы уже давно имеем дело с четырех и более -входовых LUT'ами.
И, во-вторых, речь идет совсем о другой задержке: о задержке выдачи результата относительно времени прихода клока. И эта задержка, по-прежнему, остается равной задержке одного триггера.

Цитата(ViKo @ Jan 23 2012, 22:17) *
Проверить зависимость максимальной тактовой частоты от разрядности счетчика элементарно просто.

угу, сейчас попробовал с теми же условиями: оптимизация по объему -- 350 МГц, оптимизация по скорости (дефолтная) -- 550 МГц.
Go to the top of the page
 
+Quote Post
Bad0512
сообщение Jan 24 2012, 04:46
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 802
Регистрация: 11-05-07
Из: Томск
Пользователь №: 27 650



Цитата(MHC @ Jan 24 2012, 10:44) *
это совсем другая задержка, которая отвечает лишь за то, что счётчик тупо будет или не будет работать на выбранной тактовой частоте. 28 -- сложно судить: много это или мало sm.gif но, как бы там ни было, это меньше 2^5. и, пусть даже "энды" делались бы на 2-х входовых элементах, то с оптимизацией синтезатора по скорости (как и выставлено по дефолту в ise13.1) имеем в худшем случае последовательный проход сигнала через 5 элементов, согласно рисунку:
Прикрепленное изображение
.
Но, во-первых, мы уже давно имеем дело с четырех и более -входовых LUT'ами.
И, во-вторых, речь идет совсем о другой задержке: о задержке выдачи результата относительно времени прихода клока. И эта задержка, по-прежнему, остается равной задержке одного триггера.


угу, сейчас попробовал с теми же условиями: оптимизация по объему -- 350 МГц, оптимизация по скорости (дефолтная) -- 550 МГц.

Вы нарисовали сейчас бинарное дерево формирования преноса для n-го бита. Для формирования только одного переноса такая схема пойдёт вполне. Однако в реальной жизни для работы счётчика также необходимо сформировать переносы для ВСЕХ предыдущих n-му разрядов. Поэтому в реальности переносы формируются последовательно дабы не дуплицировать нарисованные вами бинарные деревья для КАЖДОГО разряда. Таким образом, количество "слоёв логики" необходимое для формирования м-разрядного счётчика при r-входовых LUT будет равно (м-1)/(r-1) . Вторая минус единица тут появляется потому, что один вход как раз и занят под переносы со всех младших разрядов. Для первой группы этот вход можно не пользовать (поэтому минус первая единица). Тогда к примеру для 34-разрядного счётчика и 5-входовой LUT необходимо 9 слоёв логики. С использованием цепей быстрого переноса такое реализовать на современных ПЛИСах вполне реально. Без цепей быстрого переноса частотка угробится сразу и очень сильно.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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


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

 


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


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