Потребовалось мне на входе ПЛЛ тактовую переключать. Каюсь грешен, не полез в даташит, а поверил заверениям мегавизарда
The clkswitch input will behave as an input clock selection control input. Мой перевод : clkswitch будет вести себя как вход сигнала выбора входной частоты.
Но проект нормально не заработал, путем копания в сигнал тапе были интересные симптомы, как будто клок не переключается обратно. Полез в даташит, а там:
Цитата
Manual Clock Switchover
PLLs of Cyclone III family devices support manual switchover, in which the clkswitch signal controls whether inclk0 or inclk1 is the input clock to the PLL. The characteristics of a manual switchover is similar to the manual override feature in an automatic clock switchover, in which the switchover circuit is edge-sensitive. When the clkswitch signal goes high, the switchover sequence starts. The falling edge of the clkswitch signal does not cause the circuit to switch back to the previous input clock.
Выведя сигнал activeclock в сигнал тап убедился в этом, переключения тактовой происходят на положительных фронтах сигнала clkswitch, о чем мегавизард меня не предупредил %( Мораль : на заборе тоже много что написано, а даташиты никто не отменял %)
Kuzmi4
Aug 23 2011, 13:11
2 des00
Поковырялся я тут в сорцах (терзало что то смутное), по ходу такое переключение клока было и на 2м циклоне (ногодрыг там похожий как раз на то что вы описали)

так что каГбэ всё новое это хорошо забытое старое..
П.С.
там хитрый С2/3 код и пляски с altpll
Цитата(Kuzmi4 @ Aug 23 2011, 08:11)

П.С.
там хитрый С2/3 код и пляски с altpll
я выкрутился так
Код
logic [7 : 0] tx_delay;
always_ff @(posedge itx_clk) begin
if (~tx_delay[7] & (iloopforward ^ tx_activeclock)) // clk switch
tx_delay <= 8'hFF;
else
tx_delay <= (tx_delay << 1);
end
assign tx_clkswitch = tx_delay[7];
Hoodwin
Aug 24 2011, 09:28
des00
А что надо вначале делать, переключать входной клок или перегружать конфигурацию PLL?
Мне вот предстоит в перспективе делать настройку pixel clock для video dac, и для разных видеорежимов поставлены два разных опорных генератора. Для конечной частоты нужно сочетать настройку параметров со сменой входной частоты.
Цитата(Hoodwin @ Aug 24 2011, 04:28)

des00
А что надо вначале делать, переключать входной клок или перегружать конфигурацию PLL?
Мне вот предстоит в перспективе делать настройку pixel clock для video dac, и для разных видеорежимов поставлены два разных опорных генератора. Для конечной частоты нужно сочетать настройку параметров со сменой входной частоты.
судя по даташиту без разницы, думаю что это должно определятся условиями на клок с этой PLL. В любом случае будет время на ресинхронизацию PLL. Я бы сделал так : сменил клок, сменил конфигурацию, дождался захвата PLL.
Hoodwin
Aug 24 2011, 10:03
Ну вот меня терзают смутные опасения, что при смене клока с меньшей частотой на клок с бОльшей частотой, но с сохранением старых настроек коэффициентов умножения можно временно вылететь за пределы внутренней максимальной частоты PLL. Это может чем-нибудь грозить необратимым? Или просто оно никогда не защелкнет фазу в таком виде, пока не появятся вменяемые настройки коэффициентов? Сами то частоты у меня невысокие, до 200 МГц, но иногда у них довольно дурацкие дробные части, так что приходится их получать делением больших частот, которые получаются за счет больших коэффициентов умножения. Например, частота для развертки 1920x1080 равна 182.5 МГц. За основу удобно брать 10МГц, так как из нее можно получить и кучу частот других режимов. Так вот, 10 МГц входных нужно умножить на 73/4, чтобы получить 182.5. Если второй кварц будет, скажем, 27 МГц, то при умножении 27 на 73 возникнет внутренняя частота 1971 МГц, что больше максимальной частоты в 1300 МГц, указанной в даташите.
Может, переключение, равно как и перезагрузку параметров можно делать, пока сама PLL выведена в сброс?
Цитата(Hoodwin @ Aug 24 2011, 04:03)

Может, переключение, равно как и перезагрузку параметров можно делать, пока сама PLL выведена в сброс?
вот что говорит даташит
Цитата
Use the clkswitch input for user- or system-controlled switch conditions. This is
possible for same-frequency switchover or to switch between inputs of different
frequencies. For example, if inclk0 is 66 MHz and inclk1 is 200 MHz, you must
control the switchover because the automatic clock-sense circuitry cannot monitor
primary and secondary clock frequencies with a frequency difference of more than
20%. This feature is useful when clock sources can originate from multiple cards
on the backplane, requiring a system-controlled switchover between frequencies
of operation. Choose the secondary clock frequency so the VCO operates in the
recommended frequency range. Also, set the M, N, and C counters accordingly to
keep the VCO operating frequency in the recommended range
....
When using manual clock switchover, the difference between inclk0 and
inclk1 can be more than 20%. However, differences between the two clock
sources (frequency, phase, or both) can cause the PLL to lose lock. Resetting the
PLL ensures that the correct phase relationships are maintained between the input
and output clocks.
ждать ресинхронизации ПЛЛ нужно будет в любом случае. так что ИМХО без разницы %) ЗЫ. боюсь что при сбросе ПЛЛ, может потерятся выбор активного клока
Reanimator++
Dec 9 2011, 15:45
Меня смущает одна весч в даташите.
Циклон 3 хендбук, стр 5-21:
Both inclk0 and inclk1 must be running when the clkswitch signal goes high to
start the manual clock switchover event. Failing to meet this requirement causes the
clock switchover to malfunction.
Как сие понимать?
У меня задача такая - у дочерней платы есть два разъема, основной и резервный. Ее могут воткнуть либо тем, либо другим, соответственно на одном из входов будет клок, на другом неизвестно что (мб наводки).
Выбор клока хотел сделать с помощью мониторинга какого-нибудь пина питания в разъеме который вставили (оба одновременно невозможно).
По тексту выше непонятно смогу ли я переключиться на активный клок если второго не будет?
Цитата(Reanimator++ @ Dec 9 2011, 09:45)

По тексту выше непонятно смогу ли я переключиться на активный клок если второго не будет?
ИМХО нет
Reanimator++
Dec 9 2011, 21:03
Тогда вообще какая-то ерунда получается, они рекомендуют эту фичу для организации резервирования клока. Типа есть два одинаковых, один сдох и оно само на второй перекинулось и никто ничего не заметил. И получается что второй раз система не сможет включиться со сдохшим клоком..
Ну, типа, предполагается, что клок сдох, плата переключилась на резервный и зажёгся сигнальный ИК светодиод. Чтобы техник побежал и заменил блок.
Reanimator++
Dec 10 2011, 16:41
Подумал еще раз. Написанное возможно означает что для мануального переключения необходимы оба клока, иначе процесс зависнет (что в принципе логично, ибо не на что переключать). А вот автомат должен всегда работать, там про него ничего не сказано.
Где можно подробнее прочитать как работает этот автомат? Интересно сможет ли он отличить сигнал радио Маяк от нормального клока?
Там переключалка сделана безглитчевая, она требует наличия двух тактовых частот, для синхронизации сигнала включения в каждом тактовом домене. Если мне память не изменяет, в автоматическом режиме там тоже самое
Reanimator++
Dec 11 2011, 12:55
Мда. Меня бы глитчевая коммутация устроила вполне. Благо 1 раз всего надо сделать при включении и клок на выходе плл задействуется только иногда, для всего остального есть свой, набортный..
Завести оба на стандартные I/O скоммутить тупым assign-ом, вывести наружу и завести на клок инпут? ))
Цитата(Reanimator++ @ Dec 11 2011, 06:55)

Мда. Меня бы глитчевая коммутация устроила вполне. Благо 1 раз всего надо сделать при включении и клок на выходе плл задействуется только иногда, для всего остального есть свой, набортный..
Завести оба на стандартные I/O скоммутить тупым assign-ом, вывести наружу и завести на клок инпут? ))
предлагаю вам поставить экспиремент
Цитата
When the current reference clock is not present, the clock-sense block automatically switches to the backup clock for PLL reference. The clock switchover circuit also sends out three status signals—clkbad[0], clkbad[1], and activeclock—from the PLL to implement a custom switchover circuit. You can select a clock source at the backup clock by connecting it to the inclk1 port of the PLL in your design.
вроде как должно работать, попробуйте и сообщите общественности
Reanimator++
Dec 11 2011, 15:42
Проведем, что ж делать ) Раз на эти грабли еще не наступали. Первая версия железа обещает появиться в феврале..
dvladim
Dec 11 2011, 20:52
Цитата(des00 @ Dec 11 2011, 15:15)

Там переключалка сделана безглитчевая, она требует наличия двух тактовых частот, для синхронизации сигнала включения в каждом тактовом домене. Если мне память не изменяет, в автоматическом режиме там тоже самое
В автоматическом режиме скорее всего нет, иначе смысл теряется. В даташитах видел процедуру определения отсутствующего клока - где-то к третьему такту определяется что клока нет и идет переключение на запасной.
Кстати, всегда есть клок VCO и его скорее всего и задействуют для детектора badclk.
Reanimator++
Nov 16 2012, 09:28
Цитата(Reanimator++ @ Dec 9 2011, 19:45)

Меня смущает одна весч в даташите.
Циклон 3 хендбук, стр 5-21:
Both inclk0 and inclk1 must be running when the clkswitch signal goes high to
start the manual clock switchover event. Failing to meet this requirement causes the
clock switchover to malfunction.
Как сие понимать?
У меня задача такая - у дочерней платы есть два разъема, основной и резервный. Ее могут воткнуть либо тем, либо другим, соответственно на одном из входов будет клок, на другом неизвестно что (мб наводки).
Выбор клока хотел сделать с помощью мониторинга какого-нибудь пина питания в разъеме который вставили (оба одновременно невозможно).
По тексту выше непонятно смогу ли я переключиться на активный клок если второго не будет?
Отвечаю на свой вопрос относительно циклона 2 - собрали девайсы на нем.
Переключалка работает по фронту ClkSwitch.
Одного клока нет, второй есть. Сделал код который смотрит на сигнал PLL - locked. Если не locked то передергивает clkswitch. При таком раскладе плата всегда стартует.
Clkswitch корректно отрабатывает при переходе с неактивного клока на активный и зависает при переходе с активного на неактивный.
(если просто дергать clkswitch с некоторым достаточно большим периодом то сигнал locked не появляется после первого же перехода на неактивный клок).
Вот такая вот петрушка, мож пригодится кому.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.