Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Отследить наличие клока
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
AlphaMil
Уважаемые, подскажите как определить наличие клока от внешнего генератора? Клок ~27МГц. Т.е. есть клок - выдаю на определенный пин "1", нет - "0".
des00
в логике, без эталонного генератора, никак
Mahagam
QUOTE (des00 @ Jun 22 2011, 17:56) *
в логике, без эталонного генератора, никак

ну почему это? используем DCM, а там есть сигнал locked ))))


второй вариант - создать дополнительный генератор на линиях задержки )))




но всё это, конечно, костыли из говна и палок. )))

des00
Цитата(Mahagam @ Jun 22 2011, 08:59) *
ну почему это? используем DCM, а там есть сигнал locked ))))

а гун внутри DCM это не эталонный генератор ? sm.gif
Lmx2315
использовать счётчик и схему сравнения с эталоном . Досчитал счётчик до 4-х например - значит клок идёт .
dmitry-tomsk
Цитата(Mahagam @ Jun 22 2011, 17:59) *
ну почему это? используем DCM, а там есть сигнал locked ))))


второй вариант - создать дополнительный генератор на линиях задержки )))




но всё это, конечно, костыли из говна и палок. )))

locked без сброса не упадёт, если тактовая пропала. Счётчик обычный покажет частоту, можно через грей код с эталоном сравнить, если есть другая тактовая конечно.
AlphaMil
Вся прелесть, что есть другой генератор, несинхронный с тестируемым клоком, а их периоды отличаются где-то в 1.3 раза....
Т. Е. счетчик может даже один раз не посчитать...
Lmx2315
Цитата(AlphaMil @ Jun 22 2011, 21:39) *
Вся прелесть, что есть другой генератор, несинхронный с тестируемым клоком, а их периоды отличаются где-то в 1.3 раза....
Т. Е. счетчик может даже один раз не посчитать...


..не понимаю , почему бы не завести контролируемую частоту на вход счётчика , и по второй частоте (делённой на 10 например) время от времени не проверять насчитал счётчик что-нить или нет ?
Shtirlits
Я бы сначала задал себе вопросы:
- что считать наличием и отсутствием клока
- как быстро нужно реагировать
- синхронным ли должен быть флаг наличия клока и если да, то с каким клоком

Потом взял бы клок с "другого генератора", умножил бы его в DCM, например, на 4.
Полученным клоком тактировал бы схему защиты от метастабильности и автомат, который оценивает состояние входного клока.

Да, для анализа лучше использовать не сам сигнал клока, а выходы двух регистров, каждый из которых тактируется анализируемым клоком, но на разных фронтах и инвертируют свой вход. Если вычислить XOR по ним, то получится почти исходный клок, но не будет проблемы с разводкой.

PS: в default chip SPARTAN 3E сигнал lock падает при продолжительном пропадании опорного входного клока, но заново без ресета не поднимается даже при его восстановлении.
BSACPLD
Делал подобную вещь:
Код
reg in_clk_det;
reg [19:0] out_clk_det;
reg clk_sync_det;

always @(posedge clk_sync or posedge out_clk_det[1]) begin
    if (out_clk_det[1]) in_clk_det <= 1'b0;
    else if (~in_clk_det) in_clk_det <= 1'b1;
end

always @(posedge clk_0) begin
    out_clk_det[0] <= in_clk_det;
    out_clk_det[19:1] <= out_clk_det[18:0];
    clk_sync_det <= |out_clk_det[19:2];
end

эталонный клок - clk_0
AlphaMil
По поводу определения что считать отсутствием клока - очень важны вопрос. Пока не стоит задача определения периода и скважности. Только наличие единицы, а не постоянный ноль. Сча тоже подумал сделать на сдвиговом регистре. Попробую. Еще появилась идея ввести счетчик для опорной частоты и флаг наличия единицы в тестируемом клоке. Если за время счета была хоть одна единица, то клок присутствует, иначе нет.
Как такой подход?
Victor®
Цитата(AlphaMil @ Jun 22 2011, 22:46) *
По поводу определения что считать отсутствием клока - очень важны вопрос. Пока не стоит задача определения периода и скважности. Только наличие единицы, а не постоянный ноль. Сча тоже подумал сделать на сдвиговом регистре. Попробую. Еще появилась идея ввести счетчик для опорной частоты и флаг наличия единицы в тестируемом клоке. Если за время счета была хоть одна единица, то клок присутствует, иначе нет.
Как такой подход?


Фронты надо выделить, если интересует переход 0->1
vadimuzzz
в циклоновских PLL, например, есть фича переключения с одного входного клока на другой при пропадании первого. или сигнал locked использовать
AlphaMil
Цитата(vadimuzzz @ Jun 23 2011, 02:06) *
в циклоновских PLL, например, есть фича переключения с одного входного клока на другой при пропадании первого. или сигнал locked использовать

Могу использовать только Xilinx.
Важно не переключиться на другой клок, а определить наличие как таковое.
eugen_pcad_ru
может попроще?
имхо определить наличие сигнала (без подсчета параметров) можно простым триггером. А сброс этого триггера делать скажем раз в секунду. И никаких dcm, pll не надо...
Конечно для определения параметров сигнала (частота, скважность и т.п.) это не подходит.
Не устроит?
AlphaMil
Цитата(eugen_pcad_ru @ Jun 23 2011, 08:41) *
может попроще?
имхо определить наличие сигнала (без подсчета параметров) можно простым триггером. А сброс этого триггера делать скажем раз в секунду. И никаких dcm, pll не надо...
Конечно для определения параметров сигнала (частота, скважность и т.п.) это не подходит.
Не устроит?

Да, это вполне устроит. Сейчас пробую разные варианты.
ViKo
Лучше поставить сдвиговый регистр из двух триггеров, и тактом интересующей частоты задвигать единичку. Сделать таймер на счетчике на время, равное двум периодам интересующей частоты. По переполнению таймера читать выход сдвигового регистра, и очищать его. Если была единица, значит, два фронта частоты пришли. Значит, имеется сигнал с частотой, не менее, чем нужная.
Если делать на одном триггере, то при частоте, ниже требуемой, будет то 0, то 1.
Shtirlits
Если частоту умножать нельзя, но хочется быть уверенным, что за отчетный период исследуемый клок дрыгнулся сколько надо раз, то нужно сделать по счетчику на каждый клок и смотреть что начитали одним при переполнении другого.

Еще раз обращаю внимание на несинхронность клоков.
des00
Цитата(Shtirlits @ Jun 23 2011, 02:38) *
Еще раз обращаю внимание на несинхронность клоков.

а я бы обратил внимание на то, что все предлагаемые здесь схемы требуют наличия эталонной (опорной) частоты. А предложите схему без не wink.gif
AlphaMil
Цитата(des00 @ Jun 23 2011, 11:47) *
а я бы обратил внимание на то, что все предлагаемые здесь схемы требуют наличия эталонной (опорной) частоты. А предложите схему без не wink.gif

Я так понимаю это возможно только с предварительной установкой значения регистра в, например, "1" в секции initial. А потом по клоку его сбрасывать. Т.е. если клок есть, регистр сбросится, а если нет - то так и будет в "1".
Только вот если клок пропадет уже в процессе работы устройства?
ViKo
Цитата(des00 @ Jun 23 2011, 11:47) *
а я бы обратил внимание на то, что все предлагаемые здесь схемы требуют наличия эталонной (опорной) частоты. А предложите схему без не wink.gif

Подзаряжать конденсатор, прицепленный снаружи на ножку, импульсами от интересующей частоты. А разряжать медленно, по другой цепи (диодами развязать). Другой ногой ПЛИС проверять уровень (0 или 1). Приблизительно.
des00
Цитата(ViKo @ Jun 23 2011, 02:58) *
Подзаряжать конденсатор .....Приблизительно.

это аналоговое решение
Цитата(AlphaMil @ Jun 23 2011, 02:56) *
Только вот если клок пропадет уже в процессе работы устройства?

в этом и весь цимус, найти цифровое решение (точнее без внешней обвязки плис) этой задачи wink.gif с помощью опорной частоты задача тривиальная, можно даже задать окно ухода частоты wink.gif
ViKo
Цитата(des00 @ Jun 23 2011, 12:00) *
в этом и весь цимус, найти цифровое решение (точнее без внешней обвязки плис) этой задачи с

Вы же написали, что нельзя. wink.gif

Задержать на логике, объединить по xor, получим импульс на каждое изменение сигнала... Его можно и в триггер защелкнуть, собой же, задержанным.
Только триггер тот кто-то сбрасывать должен. sad.gif
ViKo
Цитата(des00 @ Jun 23 2011, 12:00) *
можно даже задать окно ухода частоты

На регистре из трех триггеров. Чтобы когда ловится один фронт, было мало, а когда три - много.
vitan
Цитата(ViKo @ Jun 23 2011, 13:13) *
Задержать на логике, объединить по xor, получим импульс на каждое изменение сигнала... Его можно и в триггер защелкнуть, собой же, задержанным.
Только триггер тот кто-то сбрасывать должен. sad.gif

Хм, похоже, это действительно популярный вопрос.
Вот тут пообсуждали похожие вещи уже немного.
Получается, что основной элемент такой схемы - это таки задержка, реализованная на логике.

Интересно, а что это такой интерес к подобным вещам появился? Типа триггеры уже не в моде? Экономия электроэнергии? Дефицит кварцев? В чем причина-то?
AlphaMil
Интерес с моей стороны вполне объясним: микросхема захвата видео генерирует залоченный к строке меандр, по которому идут пиксельные данные. Если микросхема выходит из строя она перестает генерировать и нужно об этом просигналить.
vitan
И что, прямо сию секунду надо сигнализировать, что она вышла из строя? Если использовать тот второй генератор, который в 1.3 раза отличается, что, это вызовет большую проблему?
AlphaMil
При чем тут сию секунду? Я об этом не говорил. Вопрос принципиально в том, что бы определить наличие клока.
vitan
Цитата(AlphaMil @ Jun 23 2011, 16:46) *
При чем тут сию секунду? Я об этом не говорил. Вопрос принципиально в том, что бы определить наличие клока.

Так ведь если не надо сию секунду, то чем не нравится этот второй клок?
Grumbler_2002
Status(1) DCM-ки не пробовали использовать? А частоту я проверяю эталонной двумя счетчиками. Когда эталонный посчитает фиксированное (достаточно большое для требуемой точности) число тактов, значение второго сравнивается с константой. При выходе за диапазон - соответствующая телеметрия.
des00
Цитата(vitan @ Jun 23 2011, 05:03) *
В чем причина-то?

Цитата(Grumbler_2002 @ Jun 23 2011, 14:55) *
А частоту я проверяю эталонной двумя счетчиками.

читаем внимательно пост 19 и 22
Grumbler_2002
Цитата(des00 @ Jun 24 2011, 06:22) *
читаем внимательно пост 19 и 22


Читал. Все-таки я Ваш пост не продублировал, как мне кажется. А первое предложение в моем посте относится непосредственно к теме.
vitan
Цитата(des00 @ Jun 24 2011, 06:22) *
читаем внимательно пост 19 и 22

Гм... Вы скажите, зачем придумывать такое решение, когда в реальной жизни клок есть в 99% случаев? Вы решение без клока знаете? Если да, то говорите уж, не томите. А то я уже начинаю думать, что это Ваша идея - такие вопросы на собеседованиях задавать. sm.gif
ViKo
На задержках в логических элементах вычислить период частоты. sm.gif Приблизительно.
Мур
Цитата(AlphaMil @ Jun 22 2011, 17:40) *
Уважаемые, подскажите как определить наличие клока от внешнего генератора? Клок ~27МГц. Т.е. есть клок - выдаю на определенный пин "1", нет - "0".

Вешаете внешний ватч-дог из 3-х ног и всё...
AlphaMil
Цитата(Мур @ Jun 24 2011, 10:29) *
Вешаете внешний ватч-дог из 3-х ног и всё...

Нет, уж увольте. Сделал с помощью счетчика.
des00
Цитата(Grumbler_2002 @ Jun 23 2011, 22:43) *
Читал. Все-таки я Ваш пост не продублировал, как мне кажется. А первое предложение в моем посте относится непосредственно к теме.

я немного другое имел в виду, ну да ладно %)
Цитата(vitan @ Jun 24 2011, 00:07) *
Гм... Вы скажите, зачем придумывать такое решение, когда в реальной жизни клок есть в 99% случаев? Вы решение без клока знаете? Если да, то говорите уж, не томите. А то я уже начинаю думать, что это Ваша идея - такие вопросы на собеседованиях задавать. sm.gif

как зачем ? когда еще предоставится случай, заставить толпу плисоводов задуматься о чем то нестандартном ? Решение будет интересно узнать, т.к. я его тоже не знаю wink.gif

ЗЫ. а про вопрос заданный вам на собеседовании вы погорячились с соотнесением его с этой темой, там несколько о другом шла речь %)
vitan
Цитата(des00 @ Jun 24 2011, 14:10) *
как зачем ? когда еще предоставится случай, заставить толпу плисоводов задуматься о чем то нестандартном ? Решение будет интересно узнать, т.к. я его тоже не знаю wink.gif

Ох уж эти головолмки! Ну это разве что лежа на пляже можно задуматься, имхо практического смысла в таких напрягах нету. Или есть? sm.gif

Цитата(des00 @ Jun 24 2011, 14:10) *
ЗЫ. а про вопрос заданный вам на собеседовании вы погорячились с соотнесением его с этой темой, там несколько о другом шла речь %)

Ну почему? Принцип-то один и тот же просматривается (мною). Уверен, что тот, кто решит одну задачу, сможет и вторую решить. Я - пас.
RobFPGA
Приветствую!

Ну если нет внешней опорной частоты то сделайте внутри свою и пользуйте на здоровье.
Тот же Xilinx когда в Virtex 4 глюк с DCM обнаружился спокойно так и делал - на триггере и LE делал генератор опорной частоты и использовал ее для определения наличия частоты на входе DCM. Все определение занимало 2-3 CLB. На сайте можно найти аппноту с исходниками.
В поздних сериях они кстати сделали аппаратный блочек для генерации такой "опорной" частоты только он не документирован.

Удачи! Rob.

vitan
Цитата(RobFPGA @ Jun 24 2011, 17:59) *
на триггере и LE делал генератор опорной частоты

А можно ткнуть пальцем, где это посмотреть?
des00
Цитата(RobFPGA @ Jun 24 2011, 07:59) *
Ну если нет внешней опорной частоты то сделайте внутри свою и пользуйте на здоровье.

да, было такое дело а еще генератор случайных чисел работающий на эффекте метастабильности
RobFPGA
Приветствую!

h22p://www.xilinx.com/support/answers/21127.htm

Внизу ссылки на исходники DCM_STANDBY, внутри есть файлик ringosc это как раз и есть генератор, кстати там же и делитель этой опорной частоты на одном SRL16.

Успехов! Rob.
troiden
А что за целевая ПЛИС используется? Например для пятых вертексов в даташитах нашелся примитив STARTUP_VIRTEX5, у которого есть пин CFGMCLK. Если я правильно понимаю из описания на него (CFGMCLK is driven by the configuration internal oscillator. Its rate is approximately 50 MHz and can be used as a generic clock source instead of a ring oscillator in the fabric.), то этот клок у живого ПЛИСа есть всегда. К сожалению, проверить это в реальности на данный момент нет возможности, но если это и правда так - то чем не решение для схемы без второго внешнего тактового сигнала?
AlphaMil
Целевая плис - spartan 3e. Там такого вроде нет. Но за намек спасибо...
rloc
Цитата(RobFPGA @ Jun 24 2011, 18:30) *
Внизу ссылки на исходники DCM_STANDBY, внутри есть файлик ringosc это как раз и есть генератор

Интересная схемка. Я делал такие генераторы на лутах, но приходилось добавлять внешнее управление чтобы среда не оптимизировала схему. Хитрецы, сделали на триггерах! Не понятно зачем на выходе поставили MUX5?

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