|
Констрейны на глобальные сигналы: как правильно?, Сделать из багов фичи |
|
|
|
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.
|
|
|
|
3 страниц
1 2 3 >
|
 |
Ответов
(1 - 38)
|
Jan 20 2012, 11:43
|
Знающий
   
Группа: Участник
Сообщений: 881
Регистрация: 21-03-10
Из: _// \\_
Пользователь №: 56 107

|
а зачем вообще кострейн то? Почему нельзя сделать сихронный компаратор и на него поставить еще один триггер? Ну, типа такого: Код if rising_edge( clk ) then count <= count + 1; flag_1s <= '0'; if count = (PERIOD_IN_CYCLES-1) then count <= 0; flag_1s <= '1'; end if;
pulse <= flag_1s; end if; -- rising edge Транслятор будет автоматически делать register duplication для триггера pulse и в итоге всюду будет сфазированный. Я правда, видимо, не понял главного, зачем пихать это в глобальный сигнал.
|
|
|
|
|
Jan 20 2012, 12:08
|
Знающий
   
Группа: Свой
Сообщений: 972
Регистрация: 12-04-09
Из: Москва
Пользователь №: 47 543

|
Цитата Я правда, видимо, не понял главного, зачем пихать это в глобальный сигнал. В глобальный сигнал - потому что много потребителей у этого импульса. Цитата Транслятор будет автоматически делать register duplication для триггера pulse и в итоге всюду будет сфазированный. Он как-то очень хаотично его делает - то делает, то не делает, причем когда не делает - потом на него же ругается, что из-за него всё тормозит. Цитата а зачем вообще кострейн то? Почему нельзя сделать сихронный компаратор и на него поставить еще один триггер? Собственно, так и есть. TCNTR_TimeCounter:CNTR_TimeCounter|Time_1S_Pulse - это триггер как раз после компаратора. Цитата А если большой счетчик разбить на 2 или несколько счетчиков? Или в крайнем случае большой счетчик с периодом пол-секунды, а после него делитель на 2, ну т.е. один триггер. Он то быстро будет щелкать. И уже сигнал с него рассылать. Не пойдет? Проблема не в самом триггере, а в пути от него до потребителей - микросхема большая, потребителей много, чтобы всё это работало не слишком долго, фиттер тянет все потребляющие этот сигнал цепи к генератору секундного сигнала, что портит разводку.
|
|
|
|
|
Jan 20 2012, 12:45
|
Знающий
   
Группа: Свой
Сообщений: 972
Регистрация: 12-04-09
Из: Москва
Пользователь №: 47 543

|
Попробовал так, как написал в корне: Код 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 В результате, картина маргарином. Период тактового сигнала T = 5.714нс (175 Мгц). Я хочу, чтобы сигнал Time_1S_Pulse приходил в интервале между T и 2*T, т.е. (если не считать времен установки и удержания) от 5.714нс до 11.428. После компиляции, максимальная задержка - 7.968 (нормально, Tsetup выдерживается с запасом), минимальная - 5.209, т.е. время установки не выдерживается больше чем на пол-наносекунды. => то ли я не так задал констрейн на hold, то ли здесь мультициклы вообще неприменимы. Цитата Но вообще на частотах до 200МГц, 3000 нормальный фанаут что бы работало без этих танцев (сыклон 3) Там фанаут тысяч 5... Stratix-IIGX в самой медленной градации...
|
|
|
|
|
Jan 20 2012, 13:26
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(Koluchiy @ Jan 20 2012, 06:45)  Попробовал так, как написал в корне: скрин бы отчета TQ по этому пути. я бы сделал так -to [all_clocks {}] Цитата Период тактового сигнала T = 5.714нс (175 Мгц). Я хочу, чтобы сигнал Time_1S_Pulse приходил в интервале между T и 2*T, т.е. (если не считать времен установки и удержания) от 5.714нс до 11.428. этого, мультицикл не гарантирует. Цитата Там фанаут тысяч 5... Stratix-IIGX в самой медленной градации... не вижу проблем, дуплицирование двух-четырех регистров должно решить проблему.
--------------------
|
|
|
|
|
Jan 20 2012, 14:00
|
Знающий
   
Группа: Свой
Сообщений: 972
Регистрация: 12-04-09
Из: Москва
Пользователь №: 47 543

|
Цитата я бы сделал так -to [all_clocks {}] Результат идентичный. Скрин положу в понедельник.
|
|
|
|
|
Jan 20 2012, 14:14
|

Лентяй
     
Группа: Свой
Сообщений: 2 203
Регистрация: 11-10-04
Из: Санкт-Петербург
Пользователь №: 843

|
Цитата(Koluchiy @ Jan 20 2012, 17:47)  Суть в том, что в имеющихся условиях глобальные и региональные клоки в большинстве своем висят без использования, а туда можно было бы понавешивать много интересного. Что-то я не могу проникнуться глубиной мысли... Если нужно какой-то сигнал засандалить на глобальную линию, то можно воспользоваться примитивом GLOBAL . Только что это в данном случае даст? Предположим, что сигнал по глобальной линии добегает до всех ALM'ов примерно в одно время. Что с ним ALM'у делать дальше? Насколько я понял, этот сигнал должен попасть в ALUT. Как его вытягивать на Local Interconect с глобальной линии? Или я не прав?
--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
|
|
|
|
|
Jan 21 2012, 08:57
|
Знающий
   
Группа: Свой
Сообщений: 972
Регистрация: 12-04-09
Из: Москва
Пользователь №: 47 543

|
Цитата временные констрейны используются не для того, для чего вы хотите их использовать Применительно к вводу-выводу они используются именно так, как я хочу их использовать, т.е. для задания минимальных/максимальных задержек. В Вашей же статье про это читал, часть 4 если не путаю  . Правда, там с использованием элементов задержек... Вообще, применительно к данной задаче надо попробовать set_max_delay, set_min_delay  . Но, честно говоря, как-то это совсем уже выглядит стремно. Цитата Если нужно какой-то сигнал засандалить на глобальную линию, то можно воспользоваться примитивом GLOBAL . Логично, так и затягиваю. А что, есть еще способы? Цитата нормально он вытягивается, правда задержка чтобы затащить и вытащить сигнал с этой линии порой перекрывает весь возможный выигрыш Ну так в том и идея - при помощи допзадержки перед подачей сигнала на GLOBAL задержать сигнал грубо говоря на такт (поскольку это не влияет на работу алгоритма) и, таким образом, компенсировать влияние задержек (одинаковых для всех потребителей) по вводу сигнала на GLOBAL и выведения его из GLOBAL. Цитата Лучше дуплицировать. Тоска у него с дуплицированием. Ставлю цепочку из нескольких триггеров, чтобы дуплицированием сделал иерархическое дерево и развел сигнал куда надо. Смотрю результат фиттера - никакого дерева нет, вся цепочка спиралькой расставлена в центре, к концу цепочки стянуты потребители. TimeQuest ругается на то, что часть потребителей не удалось притянуть достаточно близко. Вручную, наверное, дерево можно сделать и результат будет лучше (если сделать так, чтобы синтезатор не выкинул дублирующие триггеры  ).
|
|
|
|
|
Jan 22 2012, 05:05
|
Участник

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

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

|
Цитата(MHC @ Jan 22 2012, 12:05)  и всем тем, кто тут предлагает "делить счетчик пополам и т.д": кто Вам всем сказал, что разрядности счётчика или компаратора влияют на задержку выхода результата? upcounter представляет из себя конвейерную цепочку триггеров и, соответственно, работает с задержками одного триггера. Только не надо путать счетчик и сумматор. в последнем используются переносы битов, со всеми вытекающими задержками. Вы бы хоть почитали немного о том, как устроены счётчики и что такое перенос к примеру прежде чем со своими умными замечаниями лезть... Правильно советуют. Счётчик на 175000000 легко пилится на 2 14-разрядных параллельных счётчика. Второй счётчик получает на свой вход CE перенос от первого счётчика предварительно пропущенный через триггер дабы задержки переноса в первом счётчике не суммировались с задержками второго. Второй счётчик своим переносом (опять же протактированным) кормит всю оставшуюся часть схемы с большим fanout. Если цепь с большим fanout плохо разводится (во что я честно говоря не верю, ибо речь идёт о стратиксах 4 и частотке всего 175 МГц) то этот fanout можно уменьшить несколькими способами. Синтезатор сам где надо навтыкает дуплицирующих триггеров.Fanout можно поменять глобально (в любом синтезаторе есть такая настройка), а можно и локально - атрибутом на конкретную цепь. Как делать - это ваш выбор. Но ничего сверхужасного, что требовало бы плясок с бубном вокруг глобальных цепей и constrains я тут не вижу. Всё тривиально.
|
|
|
|
|
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 22 2012, 10:45
|
Знающий
   
Группа: Свой
Сообщений: 972
Регистрация: 12-04-09
Из: Москва
Пользователь №: 47 543

|
Цитата что-то вы умалчиваете Только давайте не будем Шерлоками Холмсами  . Любой интересующийся может в любой момент соорудить проект (или взять имеющийся) и попробовать. Цитата не может ква так тупить Ага  . меня другое в ква удивляет : поставим Max_Fanout в 200, вот если их будет например 205, то он дуплицирует логику, на одну точку повесит 200 точек подключения, а на другую 5. Даже попытку балансировать нагрузку не предпринимает (до 9.1 версии включительно).
|
|
|
|
|
Jan 22 2012, 11:56
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(Koluchiy @ Jan 22 2012, 05:21)  - а именно, использование глобальных тактовых сигналов для цепей с большим фанаутом и компенсация задержек ввода/вывода сигналов на глобальные сигналы и из них. Вам же уже сказали %) 1. Вы не можете гарантировать точные времена задержек, у квартуса тоже нет возможности выровнять их, т.к. он этому не обучен. 2. Назначая мультицикл вы не сможете гарантировать задержку, вы всего лишь облегчаете условия выполнения tsu/th для определенного сигнала. Но это не означает что этот сигнал добежит до ВСЕХ остальных именно через такт. Почему у вас не сработало задание мультицикла для вашего проекта, по "фотографии" вылечить нельзя. Как минимум нужно посмотреть full_path отчет о tsu/th по конкретным путям. 3. Задавать max_net_delay/min_net_delay для асинхронных путей опять же бессмысленно, квартус не умеет выравнивать такие пути и эти параметры задаются скорее для успокоения совести, фиттер на них не смотрит и они даже не входят в комманду проверки валящихся путей (ну до 9.1 точно не входили, врядли что-то изменилось в 11 ой версии). В таких условиях, в вашем случае лучше всего мультиплицировать регистры и вот тут начинается вопрос : почему у вас ква не хочет этого делать автоматически. Что бы это выяснить по "фотографии" нужны нехилые телепатические способности. Поэтому ИМХО либо ждите телепата, либо перестаньте обижаться и давайте обратную связь. ЗЫ. если бы не стояла задача обеспечить однозначность прихода импульса на все ваши блоки, то задача решается элементартно. set_false_path + два тригера в каждом модуле, куда приходит сигнал. ЗЫ. Цитата меня другое в ква удивляет : поставим Max_Fanout в 200, вот если их будет например 205, то он дуплицирует логику, на одну точку повесит 200 точек подключения, а на другую 5. Даже попытку балансировать нагрузку не предпринимает (до 9.1 версии включительно). лечится как раз разрешением дуплицирования логики, на автомате и этой функции квартус порой творит чудеса по утаптыванию проектов, как по времянке, так и по уменьшению ресурса(!!!)
--------------------
|
|
|
|
|
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, 16:30
|
Знающий
   
Группа: Свой
Сообщений: 654
Регистрация: 24-01-07
Из: Воронеж
Пользователь №: 24 737

|
Цитата(MHC @ Jan 23 2012, 19:57)  Но, к счастью, синтезатор от ise13.1 в 5-м виртексе и с дефолтными настройками выдал мне в качестве результата 28-ми битный upcounter на clb-блоках (проверено в "technology schematic"). В clb блоках как раз есть аппаратные ускорители цепи переноса. ug190.pdf стр. 198. Fast Lookahead Carry Logic
|
|
|
|
|
Jan 23 2012, 16:54
|
Участник

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

|
Цитата(dvladim @ Jan 23 2012, 20:30)  В clb блоках как раз есть аппаратные ускорители цепи переноса. ug190.pdf стр. 198. Fast Lookahead Carry Logic ага, понятно, спасибо.
|
|
|
|
|
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 слоёв логики. С использованием цепей быстрого переноса такое реализовать на современных ПЛИСах вполне реально. Без цепей быстрого переноса частотка угробится сразу и очень сильно.
|
|
|
|
|
Jan 24 2012, 07:18
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(Мур @ Jan 24 2012, 01:02)  Простите, а где об этом можно почитать? Мне это предстоит как раз в ближайшие пару дней... что там читать то, все на виду, первый код такого счетчика выложил на этом форуме уважаемый SM лет 7 назад, если мне память не изменяет Код logic [31 : 0] fcnt; logic [3 : 0] cnt [0 : 7]; logic carry [0 : 7];
always_ff @(posedge iclk) begin for (int i = 0; i < 8; i++) begin cnt[i] <= (i == 0) ? (cnt + 1'b1) : (cnt + carry[i-1]); carry[i] <= (cnt[i] == 4'd14); end end
assign fcnt <= {cnt[7], cnt[6], cnt[5], cnt[4], cnt[3], cnt[2], cnt[1], cnt[0]};
--------------------
|
|
|
|
|
Jan 24 2012, 18:25
|
Знающий
   
Группа: Свой
Сообщений: 972
Регистрация: 12-04-09
Из: Москва
Пользователь №: 47 543

|
Я смотрю, тема ушла не то, чтобы не туда, а прямо совсем не туда  . Впрочем, если Цитата Вы не можете гарантировать точные времена задержек, у квартуса тоже нет возможности выровнять их, т.к. он этому не обучен. то исходная тема себя исчерпала.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|