|
|
  |
Правильное использование locked у PLL |
|
|
|
Feb 5 2015, 08:34
|
Гуру
     
Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881

|
Цитата(Krys @ Feb 5 2015, 05:27)  100) Gated clock Да не 100) он, а именно 3). Просто, его надо уметь готовить - им пугают не знающих, так как легко можно получить глитчи в клоке при некорректном использовании. Но стоит подумать пару минут, и нарисовать диаграммы включение и выключения, и все встанет на свои места, как избежать этих глитчей. Во всем остальном (почти, еще задержка будет другая, но вполне детерминированная) он от BUFGCE, где безглитчевая схема встроена, и ее самому описывать не надо, не отличается.
|
|
|
|
|
Feb 5 2015, 09:01
|

Гуру
     
Группа: Свой
Сообщений: 2 002
Регистрация: 17-01-06
Из: Томск, Россия
Пользователь №: 13 271

|
Цитата(SM @ Feb 5 2015, 14:34)  Да не 100) он, а именно 3) Тогда так: 1) CLB CE. 1,15) BUFGCE. 3) Gated clock. )))))
--------------------
Зная себе цену, нужно ещё и пользоваться спросом...
|
|
|
|
|
Feb 5 2015, 16:50
|
Местный
  
Группа: Участник
Сообщений: 294
Регистрация: 25-09-13
Из: Н.Новгород
Пользователь №: 78 485

|
Цитата(Jackov @ Feb 3 2015, 20:41)  Не совсем, у меня в always-е два сигнала фигурируют, там один. Попробую завтра так сделать, отпишусь что получилось. Цитата(Krys @ Feb 4 2015, 06:09)  Ну да, у Вас асинхронный сброс, не вчитался. Просто сотрите его из олвейза ))) Будет сброс синхронный, а засинтезируется он как клок енэйбл. И наверняка (потом покажете кусок схемы) он ляжет как дополнительный вход LUTа, стоящего перед входом данных триггера. По опыту, не хочет синтезатор подключать сигналы типа CE к соответствующим входам триггера, лучше ему через LUT. Ну на то есть причины конечно (хотя это касается Xilinx, в Альтере может и захочет). В общем вот. Имеем такой код: Код module test(output reg Q, input D, En, input Clk); always @(posedge Clk) begin if(En) begin Q = D; end end endmodule Синтезатор, вроде, ссинтезировал правильно  А вот как развелось
Такое ощущение, что надо чего-то в настройках повращать. Запускал в Квартуе 9.1 для Циклона 4. Цитата(SM @ Feb 4 2015, 20:55)  1) CLB CE. 2) BUFGCE. 3) Gated clock.
Но, в данном, конкретном случае, явно BUFGCE просится, ввиду особенности задачи. Поясните ньюфагу по хардкору. Если всё правильно понял, то Gated clock - это разрешение клока на триггере, BUFGCE - переключатель клоков с входом разрешения. CLB CE - это что за зверь? Цитата(ViKo @ Feb 4 2015, 21:23)  Топикстартеру надо пересмотреть свою позицию: Разверните мысль, пожалуйста.
Сообщение отредактировал Jackov - Feb 5 2015, 16:51
|
|
|
|
|
Feb 5 2015, 17:10
|
Местный
  
Группа: Участник
Сообщений: 294
Регистрация: 25-09-13
Из: Н.Новгород
Пользователь №: 78 485

|
Цитата(ViKo @ Feb 5 2015, 19:56)  Развернул уже, и не раз. Да, увидел. Цитата(ViKo @ Feb 5 2015, 11:44)  "думать над этим желания нет" - а там, может, всего от пары триггеров и зависит зависание всей схемы. Это еще надо умудриться подвесить схему. Точно нет. Проект большой. Это надо все автоматы сбрасывать (а их больше десятка), кое-какие регистры, в общем надо долго и нудно в этом копаться. Цитата(ViKo @ Feb 5 2015, 11:44)  "усложняет трассировку" - для сброса есть специально выделенные цепи, вплоть до глобального сброса каждого триггера. Да, мне уже объяснили. И в связи с этим я начал кое-что переосмысливать. Если асинхронный сброс действительно распространяется по выделенным линиям и он ни как не усложняет трассировку, тогда может быть имеет смысл сбрасывать асинхронно все триггеры, и не ломать голову какие нужно сбрасывать, а какие нет? Цитата(ViKo @ Feb 5 2015, 11:44)  - я не смотрел конкретно, но разве та галочка в мегавизарде self-reset on loss lock не спасает, пока тактовая частота не установится? Это не то. Не помню точно что это, но точно не то. Скорее всего там речь идёт о частоте от генератора, а у нас ПЛЛ в самом начале нестабильную частоту выдаёт, и вот это надо как-то задавить.
|
|
|
|
|
Feb 5 2015, 17:23
|
Гуру
     
Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881

|
Цитата(Jackov @ Feb 5 2015, 20:10)  И в связи с этим я начал кое-что переосмысливать. Если асинхронный сброс действительно распространяется по выделенным линиям и он ни как не усложняет трассировку, тогда может быть имеет смысл сбрасывать асинхронно все триггеры, и не ломать голову какие нужно сбрасывать, а какие нет? Ну, только, некоторые, обычно, надо и предустанавливать... По этой части недавно темка была, где я подробно все описал, что и как надо делать, чтобы после такого асинхронного резета все завелось без сбоев - http://electronix.ru/forum/index.php?showtopic=125343. Та тема немного о другом, но и применима к Вашему случаю - все сбрасываете асинхронно, а вот на разрешение работы триггеров, инициирующих первичные процессы в системе, в тех случаях, когда это может привести к метастабильности от неудачного отпускания резета, подаете слегка задержанный сигнал того же резета, синхронизированный с клоком. Получите минимум занятых ресурсов. Только не догадайтесь завести этот резет на резет PLL - оно тогда само себя заклинит через Lock
|
|
|
|
|
Feb 5 2015, 19:13
|
Местный
  
Группа: Участник
Сообщений: 294
Регистрация: 25-09-13
Из: Н.Новгород
Пользователь №: 78 485

|
Цитата(ViKo @ Feb 5 2015, 20:17)  Да ну... Я устанавливал эту галку - не помогло, на старте частота нестабильна. Цитата(SM @ Feb 5 2015, 20:23)  Та тема немного о другом, но и применима к Вашему случаю - все сбрасываете асинхронно, а вот на разрешение работы триггеров, инициирующих первичные процессы в системе, в тех случаях, когда это может привести к метастабильности от неудачного отпускания резета, подаете слегка задержанный сигнал того же резета, синхронизированный с клоком. Получите минимум занятых ресурсов. Ну я так и не пойму зачем эти сложности, если асинхронные сбросы триггеров подключаются к глобальным линиям? Не проще ли сбрасывать все триггеры разом, предварительно засинхронизировать асинхронный сброс?
|
|
|
|
|
Feb 5 2015, 19:27
|
Гуру
     
Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881

|
Цитата(Jackov @ Feb 5 2015, 22:13)  Не проще ли сбрасывать все триггеры разом, предварительно засинхронизировать асинхронный сброс? Ну если это возможно, засинхронизировать его со всем необходимым сразу, то, конечно, проще. Но в реальности, обычно, так не бывает, поэтому оказывается проще оставить сброс асинхронным, но отодвинуть начало работы схемы на 1-2 такта от сброса, сделав сдвинутый по времени enable в одной...двух точках, отвечающих за начало работы. Хотя, для проекта, полностью работающего на одном клоке, наверное это не актуально.
|
|
|
|
|
Feb 5 2015, 19:34
|
Местный
  
Группа: Участник
Сообщений: 294
Регистрация: 25-09-13
Из: Н.Новгород
Пользователь №: 78 485

|
Цитата(SM @ Feb 5 2015, 22:27)  Ну если это возможно, засинхронизировать его со всем необходимым сразу, то, конечно, проще. Но в реальности, обычно, так не бывает, поэтому оказывается проще оставить сброс асинхронным, но отодвинуть начало работы схемы на 1-2 такта от сброса, сделав сдвинутый по времени enable в одной...двух точках, отвечающих за начало работы. Хотя, для проекта, полностью работающего на одном клоке, наверное это не актуально. Я понял, Вы про многоклоковый дизайн. Да, у меня именно такой. Спасибо за наводку.
|
|
|
|
|
Feb 6 2015, 04:15
|

Гуру
     
Группа: Свой
Сообщений: 2 002
Регистрация: 17-01-06
Из: Томск, Россия
Пользователь №: 13 271

|
Цитата(Jackov @ Feb 5 2015, 22:50)  Ну как я и предсказывал: Цитата(Krys @ Feb 4 2015, 09:09)  Будет сброс синхронный, а засинтезируется он как клок енэйбл. И наверняка (потом покажете кусок схемы) он ляжет как дополнительный вход LUTа, стоящего перед входом данных триггера. По опыту, не хочет синтезатор подключать сигналы типа CE к соответствующим входам триггера, лучше ему через LUT. Ну на то есть причины конечно (хотя это касается Xilinx, в Альтере может и захочет). Кто может ответить, почему к аппаратному входу CE триггера не подключает такие вещи? (я могу предположить некоторые причины, но не уверен). К стати, вопрос: как получить такую схему после разводки в Квартусе (коллеге надо, квартус 9.0, плисина FLEX10K), т.е. что куда нажать, чтобы вывело? Цитата(Jackov @ Feb 5 2015, 22:50)  Если всё правильно понял, то Gated clock - это разрешение клока на триггере, BUFGCE - переключатель клоков с входом разрешения. CLB CE - это что за зверь? Ну этот документ и термины от Xilinx, в альтере, кажется, это называется Ripple Clock. Но предлагаю Вам этот документ всё же прочитать, буквально пару страниц, вокруг того абзаца на английском, там есть все разъяснения и примеры, что есть что. В двух словах: Вы немного перепутали: CLB CE - это "разрешение клока на триггере". BUFGCE - правильно. Gated clock - питание входов CLK триггеров от выхода логики (триггер или лут), зачастую с подключением этого выхода к глобальной линии.
--------------------
Зная себе цену, нужно ещё и пользоваться спросом...
|
|
|
|
|
Feb 6 2015, 05:20
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(Jackov @ Feb 5 2015, 23:50)  Синтезатор, вроде, ссинтезировал правильно  А вот как развелось
Такое ощущение, что надо чего-то в настройках повращать. Запускал в Квартуе 9.1 для Циклона 4. Ничего удивительного. Именно для вашего примера, использование сигнала En, как сигнала разрешения ENA триггера в LE не эффективно. Причины объясняются тут Cyclone IV Device Handbook -> Logic Elements and Logic Array Blocks in Cyclone IV Devices -> Logic Array Blocks. Цитата ..... Each LAB consists of the following features: ■ 16 LEs ■ LAB control signals ■ LE carry chains ■ Register chains ■ Local interconnect ...... LAB Control Signals Each LAB contains dedicated logic for driving control signals to its LEs. The control signals include: ■ Two clocks ■ Two clock enables ■ Two asynchronous clears ■ One synchronous clear ■ One synchronous load ....... Логический вывод из этого думаю сможете сделать самостоятельно. Это кстати касается всех современных ПЛИС.
--------------------
|
|
|
|
|
Feb 6 2015, 05:44
|
Гуру
     
Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881

|
Цитата(des00 @ Feb 6 2015, 08:20)  Логический вывод из этого думаю сможете сделать самостоятельно. Это кстати касается всех современных ПЛИС. Вот, кстати, именно в данном случае, в проекте из одного триггера, это логике и не поддается. По разводке оба варианта одинаковы (какая разница, завести enable на LAB CE, или на LUT, все равно куда-то заводить, конкуренции между этими сигналами в данной схеме нет), а вот лишний LUT занят (кол-во LUT - вроде как один из критериев оптимизации). И, кстати, это далеко не всех ПЛИС и сред касается:
Эскизы прикрепленных изображений
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|