Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Глобальные клоки на Spartan6
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
toxxin
Доброго времени суток!
Помогите разобраться с подключением глобальных тактовых сигналов к Spartan6. Всего необходимо 5 глобальных тактовых сигналов. Согласно Clock Guide всего 32 GCLK пина, но глобальных буферов только 16, поэтому существуют парные глобальные пины. В приложении табличка парных буферов с собственно схемой соединения буферов. Понятно, что GCLK19 и GCLK11 соединены непосредственно и подключены к BUFGMUX_X2Y1 и разные клоки к ним подключать "не стоит". Такая же история с GCLK15 и GCLK7. Непонятно только как эти пары взаимодействуют между собой и почему они объединены в таблице.
Также не понятно как связаны между собой BUFGMUX-ы. Например X2Y1 и X2Y2.
И последний вопрос - тактирование от любого глобального тактового сигнала распространяется на все банки или только на ту пару, которая описана в приведенной таблице??

Нажмите для просмотра прикрепленного файла

Нажмите для просмотра прикрепленного файла
VladimirB
Цитата(toxxin @ Apr 8 2011, 10:43) *
Доброго времени суток!
Помогите разобраться с подключением глобальных тактовых сигналов к Spartan6. Всего необходимо 5 глобальных тактовых сигналов. Согласно Clock Guide всего 32 GCLK пина, но глобальных буферов только 16, поэтому существуют парные глобальные пины. В приложении табличка парных буферов с собственно схемой соединения буферов. Понятно, что GCLK19 и GCLK11 соединены непосредственно и подключены к BUFGMUX_X2Y1 и разные клоки к ним подключать "не стоит". Такая же история с GCLK15 и GCLK7. Непонятно только как эти пары взаимодействуют между собой и почему они объединены в таблице.
Также не понятно как связаны между собой BUFGMUX-ы. Например X2Y1 и X2Y2.
И последний вопрос - тактирование от любого глобального тактового сигнала распространяется на все банки или только на ту пару, которая описана в приведенной таблице??


Дык всё же нарисовано. Если тактироваться напрямую через глобальные буферы, то нельзя подавать разные клоки на GCLK19 и GCLK11(возникает конфликт), если тактировать SERDESы в БАНКЕ0 через BUFIO, то конфликт между GCLK19 и GCLK15. Аналогично если тактировать SERDESы в БАНКЕ1 через BUFIO, то конфликт между GCLK11 и GCLK7. В UG382 далее приведена таблица конфликтов.
Тактирование через глобальный буфер естественно распространяется на всю ПЛИС и все БАНКИ, а BUFIO расположен в конкретном банке.




Иван Панченко
на конкретный банк,если не ошибаюсь, распространяются региональные клоки
Leka
Раз уж про клок...
bb-offtopic.gif
ISE, Spartan3a/e.
После P&R выдает Fmax ~600МГц для клока. Тогда как по даташиту максимальная частота клокового дерева (BUFG и тп) ~300МГц.
Как это понимать? STA не учитывает эти ограничения ?
И чем вызвано это ограничение Fmax для BUFG (для триггеров Fmax ~600МГц) ?
Может ли небольшая часть дизайна работать со своим клоковым деревом на ~600МГц ?
Можно запретить использование BUFG для клока, тогда получается ~500МГц после P&R. Как все-таки правильно?
VladimirB
Цитата(Leka @ Apr 12 2011, 21:31) *
Раз уж про клок...
bb-offtopic.gif
ISE, Spartan3a/e.
После P&R выдает Fmax ~600МГц для клока. Тогда как по даташиту максимальная частота клокового дерева (BUFG и тп) ~300МГц.
Как это понимать? STA не учитывает эти ограничения ?
И чем вызвано это ограничение Fmax для BUFG (для триггеров Fmax ~600МГц) ?
Может ли небольшая часть дизайна работать со своим клоковым деревом на ~600МГц ?
Можно запретить использование BUFG для клока, тогда получается ~500МГц после P&R. Как все-таки правильно?


Чудеса sm.gif

Может проект слишком маленький и целиком в один slice-lut влезает, или клок dcm-кой делится. А может ИСЕ версии типа 11.1 стоит глюкавое.
Leka
В качестве примера можно просто сдвиговый регистр привести, запретив использование I/O триггеров, STA выдаст ~500МГц после P&R:

Код
module tst(
   (* buffer_type = "ibuf" *)
   input clk,
   output reg [7:0] q = 0,  
   input d
);
   always@(posedge clk) q <= {q, d};
endmodule


Shtirlits
Если вас не затруднит, пришлите прокт на адрес boris.fpga@gmail.com, я удовлетворю свою малую любопытствующую алгоритмическую нужду.
Вообще, я без каких либо обязательств посмотрю и напишу тут(или нет)/ или пришлю на почту (ну или не смогу)(как хотите) подсказку или решение.
Чудес на самом деле не бывает, только глюки и чудесное непонимаение физики процессов, которое легко исправляется, если глюк слабее квалификации специалиста.
Мой телефон +7 905 633 61 45
Борис.
Leka
Если убрать (* buffer_type = "ibuf" *) - будет задействовано глобальное клоковое дерево (а у него по даташиту 350МГц max) - STA по-прежнему выдаст 500МГц...

Реальная схема - асинхронный последовательный интерфейс, но в форуме лучше простой пример разобрать, предлагаю сдвиговый регистр (см выше).
VladimirB
Цитата(Leka @ Apr 13 2011, 01:08) *
Если убрать (* buffer_type = "ibuf" *) - будет задействовано глобальное клоковое дерево (а у него по даташиту 350МГц max) - STA по-прежнему выдаст 500МГц...
Реальная схема - асинхронный последовательный интерфейс, но в форуме лучше простой пример разобрать, предлагаю сдвиговый регистр (см выше).


Сдвиговый регистр упаковывается в LUT (SLICEM) без использования триггеров, поэтому если нет триггеров - нет и анализа путей между ними.
В результате пишется максимальная частота тактирования сдвигового регистра, равная из даташита на Spartan3 500МГц.

Это кстати, большой косяг, т.к. при этом никоим образом не учитываются пути от ног ввода вывода до LUTов.
Надо ставить аттрибуты, запрещающие shift register extraction. А в Virtex6 появилась опция, позволяющая задавать длину цепочки, больше которой которой осуществляется "экстракция" регистров сдвига.

А чтобы сказать, что-то определённое про клоковые деревья, то надо в FPGA editor глядеть.


P.S. скоре всего STA, увидев такую асинхронщину, забыл про клоковые деревья и пошёл отдыхать sm.gif
Leka
Можно и другие мелкие схемки придумать на ~500МГц по STA, 4х-разрядный счетчик:
Код
module tst(
   (* buffer_type = "ibuf" *)
   input clk,
   output reg [3:0] q = 0
);
   always@(posedge clk) q <= q + 1;
endmodule

Красным выделен клок:

Реальный проект побольше, конечно, и 500МГц клок внутри формируется, но суть та-же, имхо.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.