Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Timing constraint. PLL, выравнивание задержек до логики.
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Zlodeinik
Добрый день товарищи.

Стоит задача получить с выходов PLL 4 тактовых сигнала. Каждый клок сдвинут относительно предыдущего на 45 градусов.
Необходимо тактировать несколько разных блоков. содержание блоков крайне простое(счетчики). Мне необходимо выровнять задержки каждого клока до логики.
Пишу для cyclone 4. quartus 15.


Подскажите проведет ли quartus выходы Pll через цепи тактирования, если нет то как правильно описать timing Constraint. как специфицировать задержки каждого клока до конкретных регистров?
iosifk
Цитата(Zlodeinik @ May 22 2016, 16:26) *
Добрый день товарищи.

Стоит задача получить с выходов PLL 4 тактовых сигнала. Каждый клок сдвинут относительно предыдущего на 45 градусов.

А вот эти 4 тактовых - это предельные частоты для данной ПЛИС?
Или же можно взять предельную частоту одну на все фазы, а разнести только сигналы "разрешения" для триггеров?
Zlodeinik
Цитата(iosifk @ May 22 2016, 14:06) *
А вот эти 4 тактовых - это предельные частоты для данной ПЛИС?
Или же можно взять предельную частоту одну на все фазы, а разнести только сигналы "разрешения" для триггеров?



4 тактовых сигнала одной частоты и эта частота близка к максимуму. 200-250 МГЦ. Начну с 200 , а там насколько разгонится.

Если вы знаете как разнести сигналы разрешения на 500пс будет круто ) изначально задачка выглядит как точный счетчик времени.
Хочу с помощью ПЛИС измерять промежутки времени порядка <=200 пс. Вот и решил с помощью PLL сделать себе 4 клока сдвинутые относительно друг друга.
И затактировать каждым отдельный счетчик по переднему и по заднему фронту. итого получается,что тактовая частота 250 МГц(4 нс) умножается(делиться) на 8 .
Inanity
Цитата(Zlodeinik @ May 22 2016, 17:37) *
Хочу с помощью ПЛИС измерять промежутки времени порядка <=200 пс.


Вы, наверное, используете метод TDC?
http://home.agh.edu.pl/~turcza/rf_prj/arXiv_1206.0679.pdf

Насколько я понимаю, там задержки настолько критичны, что триггеры вручную жёстко фиксируют:
Цитата
...Xilinx provides two constraint commands to limit the skew and the delay of the input signal, but better performances can be obtained by manually placing the input flip-flops.
Zlodeinik
Цитата(Inanity @ May 22 2016, 16:45) *
Вы, наверное, используете метод TDC?
http://home.agh.edu.pl/~turcza/rf_prj/arXiv_1206.0679.pdf

Насколько я понимаю, там задержки настолько критичны, что триггеры вручную жёстко фиксируют:


Да, буду использовать подобный метод.
Действительно крайне критичны задержки. Я и обратился за советом с этим впоросом.
Как прописать констрейны чтобы выровнять время между всеми тактовыми сигналами от pll до логики
Timmy
Цитата(Zlodeinik @ May 23 2016, 13:06) *
Да, буду использовать подобный метод.
Действительно крайне критичны задержки. Я и обратился за советом с этим впоросом.
Как прописать констрейны чтобы выровнять время между всеми тактовыми сигналами от pll до логики

Вопрос странный, так как эти задержки изначально хорошо выровнены(до порядка 100пс) за счёт идентичной структуры клоковых деревьев. Вас должно бы волновать выравнивание сигнала от входного буфера до нескольких LAB, которое требует ручного размещения триггеров. И больше чем на 2 LAB-а, то есть 4 триггера, у меня, например, не получалось нормально выровнять.
krux
сложно что-то посоветовать, кроме как постоянно после каждой сборки гонять симуляцию post-fit нетлиста с учетом задержек. вот тогда станет понятно что и где пытаться "затянуть".
до тех пор, пока саму PLL, входные триггеры, а также цепи между ними жестко не прибьёте гвоздями, чтобы они от сборки к сборке не гуляли.
а так это по 2 констрейна на каждый входной регистр - на тактовую до него и на данные. на 8 фаз - итого 16 констрейнов.
проблема в том, что сами xilinx или altera имеют все варианты этих задержек на руках в виде таблиц, и могут подобрать соответствующие LOC'-и, а вам же придётся подбирать их опытным путём.
про задний фронт - забудьте сразу. на высоких частотах фазы будут не те, которые вы ожидаете.

можно было какую-нибудь LMK01010 снаружи приспособить. тогда бы входными триггерами в IOB-ах отделались, если при подаче питания калибровку делать. не понравилась?
Zlodeinik
Цитата(krux @ May 23 2016, 13:02) *
сложно что-то посоветовать, кроме как постоянно после каждой сборки гонять симуляцию post-fit нетлиста с учетом задержек. вот тогда станет понятно что и где пытаться "затянуть".
до тех пор, пока саму PLL, входные триггеры, а также цепи между ними жестко не прибьёте гвоздями, чтобы они от сборки к сборке не гуляли.
а так это по 2 констрейна на каждый входной регистр - на тактовую до него и на данные. на 8 фаз - итого 16 констрейнов.
проблема в том, что сами xilinx или altera имеют все варианты этих задержек на руках в виде таблиц, и могут подобрать соответствующие LOC'-и, а вам же придётся подбирать их опытным путём.
про задний фронт - забудьте сразу. на высоких частотах фазы будут не те, которые вы ожидаете.

можно было какую-нибудь LMK01010 снаружи приспособить. тогда бы входными триггерами в IOB-ах отделались, если при подаче питания калибровку делать. не понравилась?



Я думал в макете заложить и такое решение.
Кстати остановился именно на этом буфере. На входных получится? Боюсь не найду столько ног)

Предполагал на глобальные цепи тактирования подать эти клоки и независимо собрать необходимое количество счетчиков с общим сигналом en.

Прибивать гвоздями совсем не хочется. Там месяцами можно сидеть прибивать и про переносимость можно сразу забыть.


А что с задним фронтом стряслось? Dutty cycle может выручить нет?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.