AlphaMil
Jun 22 2011, 14:40
Уважаемые, подскажите как определить наличие клока от внешнего генератора? Клок ~27МГц. Т.е. есть клок - выдаю на определенный пин "1", нет - "0".
в логике, без эталонного генератора, никак
Mahagam
Jun 22 2011, 14:59
QUOTE (des00 @ Jun 22 2011, 17:56)

в логике, без эталонного генератора, никак
ну почему это? используем DCM, а там есть сигнал locked ))))
второй вариант - создать дополнительный генератор на линиях задержки )))
но всё это, конечно, костыли из говна и палок. )))
Цитата(Mahagam @ Jun 22 2011, 08:59)

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

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

Вся прелесть, что есть другой генератор, несинхронный с тестируемым клоком, а их периоды отличаются где-то в 1.3 раза....
Т. Е. счетчик может даже один раз не посчитать...
..не понимаю , почему бы не завести контролируемую частоту на вход счётчика , и по второй частоте (делённой на 10 например) время от времени не проверять насчитал счётчик что-нить или нет ?
Shtirlits
Jun 22 2011, 18:47
Я бы сначала задал себе вопросы:
- что считать наличием и отсутствием клока
- как быстро нужно реагировать
- синхронным ли должен быть флаг наличия клока и если да, то с каким клоком
Потом взял бы клок с "другого генератора", умножил бы его в DCM, например, на 4.
Полученным клоком тактировал бы схему защиты от метастабильности и автомат, который оценивает состояние входного клока.
Да, для анализа лучше использовать не сам сигнал клока, а выходы двух регистров, каждый из которых тактируется анализируемым клоком, но на разных фронтах и инвертируют свой вход. Если вычислить XOR по ним, то получится почти исходный клок, но не будет проблемы с разводкой.
PS: в default chip SPARTAN 3E сигнал lock падает при продолжительном пропадании опорного входного клока, но заново без ресета не поднимается даже при его восстановлении.
BSACPLD
Jun 22 2011, 19:09
Делал подобную вещь:
Код
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
Jun 22 2011, 19:46
По поводу определения что считать отсутствием клока - очень важны вопрос. Пока не стоит задача определения периода и скважности. Только наличие единицы, а не постоянный ноль. Сча тоже подумал сделать на сдвиговом регистре. Попробую. Еще появилась идея ввести счетчик для опорной частоты и флаг наличия единицы в тестируемом клоке. Если за время счета была хоть одна единица, то клок присутствует, иначе нет.
Как такой подход?
Victor®
Jun 22 2011, 21:55
Цитата(AlphaMil @ Jun 22 2011, 22:46)

По поводу определения что считать отсутствием клока - очень важны вопрос. Пока не стоит задача определения периода и скважности. Только наличие единицы, а не постоянный ноль. Сча тоже подумал сделать на сдвиговом регистре. Попробую. Еще появилась идея ввести счетчик для опорной частоты и флаг наличия единицы в тестируемом клоке. Если за время счета была хоть одна единица, то клок присутствует, иначе нет.
Как такой подход?
Фронты надо выделить, если интересует переход 0->1
vadimuzzz
Jun 22 2011, 23:06
в циклоновских PLL, например, есть фича переключения с одного входного клока на другой при пропадании первого. или сигнал locked использовать
AlphaMil
Jun 23 2011, 05:38
Цитата(vadimuzzz @ Jun 23 2011, 02:06)

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

может попроще?
имхо определить наличие сигнала (без подсчета параметров) можно простым триггером. А сброс этого триггера делать скажем раз в секунду. И никаких dcm, pll не надо...
Конечно для определения параметров сигнала (частота, скважность и т.п.) это не подходит.
Не устроит?
Да, это вполне устроит. Сейчас пробую разные варианты.
Лучше поставить сдвиговый регистр из двух триггеров, и тактом интересующей частоты задвигать единичку. Сделать таймер на счетчике на время, равное двум периодам интересующей частоты. По переполнению таймера читать выход сдвигового регистра, и очищать его. Если была единица, значит, два фронта частоты пришли. Значит, имеется сигнал с частотой, не менее, чем нужная.
Если делать на одном триггере, то при частоте, ниже требуемой, будет то 0, то 1.
Shtirlits
Jun 23 2011, 08:38
Если частоту умножать нельзя, но хочется быть уверенным, что за отчетный период исследуемый клок дрыгнулся сколько надо раз, то нужно сделать по счетчику на каждый клок и смотреть что начитали одним при переполнении другого.
Еще раз обращаю внимание на несинхронность клоков.
Цитата(Shtirlits @ Jun 23 2011, 02:38)

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

а я бы обратил внимание на то, что все предлагаемые здесь схемы требуют наличия эталонной (опорной) частоты. А предложите схему без не

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

а я бы обратил внимание на то, что все предлагаемые здесь схемы требуют наличия эталонной (опорной) частоты. А предложите схему без не

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

Подзаряжать конденсатор .....Приблизительно.
это аналоговое решение
Цитата(AlphaMil @ Jun 23 2011, 02:56)

Только вот если клок пропадет уже в процессе работы устройства?
в этом и весь цимус, найти цифровое решение (точнее без внешней обвязки плис) этой задачи

с помощью опорной частоты задача тривиальная, можно даже задать окно ухода частоты
Цитата(des00 @ Jun 23 2011, 12:00)

в этом и весь цимус, найти цифровое решение (точнее без внешней обвязки плис) этой задачи с
Вы же написали, что нельзя.

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

можно даже задать окно ухода частоты
На регистре из трех триггеров. Чтобы когда ловится один фронт, было мало, а когда три - много.
Цитата(ViKo @ Jun 23 2011, 13:13)

Задержать на логике, объединить по
xor, получим импульс на каждое изменение сигнала... Его можно и в триггер защелкнуть, собой же, задержанным.
Только триггер тот кто-то сбрасывать должен.

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

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

В чем причина-то?
Цитата(Grumbler_2002 @ Jun 23 2011, 14:55)

А частоту я проверяю эталонной двумя счетчиками.
читаем внимательно пост 19 и 22
Grumbler_2002
Jun 24 2011, 04:43
Цитата(des00 @ Jun 24 2011, 06:22)

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

читаем внимательно пост 19 и 22
Гм... Вы скажите,
зачем придумывать такое решение, когда в реальной жизни клок есть в 99% случаев? Вы решение без клока знаете? Если да, то говорите уж, не томите. А то я уже начинаю думать, что это Ваша идея - такие вопросы на собеседованиях задавать.
На задержках в логических элементах вычислить период частоты.

Приблизительно.
Цитата(AlphaMil @ Jun 22 2011, 17:40)

Уважаемые, подскажите как определить наличие клока от внешнего генератора? Клок ~27МГц. Т.е. есть клок - выдаю на определенный пин "1", нет - "0".
Вешаете внешний ватч-дог из 3-х ног и всё...
AlphaMil
Jun 24 2011, 09:21
Цитата(Мур @ Jun 24 2011, 10:29)

Вешаете внешний ватч-дог из 3-х ног и всё...
Нет, уж увольте. Сделал с помощью счетчика.
Цитата(Grumbler_2002 @ Jun 23 2011, 22:43)

Читал. Все-таки я Ваш пост не продублировал, как мне кажется. А первое предложение в моем посте относится непосредственно к теме.
я немного другое имел в виду, ну да ладно %)
Цитата(vitan @ Jun 24 2011, 00:07)

Гм... Вы скажите,
зачем придумывать такое решение, когда в реальной жизни клок есть в 99% случаев? Вы решение без клока знаете? Если да, то говорите уж, не томите. А то я уже начинаю думать, что это Ваша идея - такие вопросы на собеседованиях задавать.

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

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

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

Цитата(des00 @ Jun 24 2011, 14:10)

ЗЫ. а про вопрос заданный вам на собеседовании вы погорячились с соотнесением его с этой темой, там несколько о другом шла речь %)
Ну почему? Принцип-то один и тот же просматривается (мною). Уверен, что тот, кто решит одну задачу, сможет и вторую решить. Я - пас.
RobFPGA
Jun 24 2011, 13:59
Приветствую!
Ну если нет внешней опорной частоты то сделайте внутри свою и пользуйте на здоровье.
Тот же Xilinx когда в Virtex 4 глюк с DCM обнаружился спокойно так и делал - на триггере и LE делал генератор опорной частоты и использовал ее для определения наличия частоты на входе DCM. Все определение занимало 2-3 CLB. На сайте можно найти аппноту с исходниками.
В поздних сериях они кстати сделали аппаратный блочек для генерации такой "опорной" частоты только он не документирован.
Удачи! Rob.
Цитата(RobFPGA @ Jun 24 2011, 17:59)

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

Ну если нет внешней опорной частоты то сделайте внутри свою и пользуйте на здоровье.
да, было такое дело а еще генератор случайных чисел работающий на эффекте метастабильности
RobFPGA
Jun 24 2011, 14:30
Приветствую!
h22p://www.xilinx.com/support/answers/21127.htm
Внизу ссылки на исходники DCM_STANDBY, внутри есть файлик ringosc это как раз и есть генератор, кстати там же и делитель этой опорной частоты на одном SRL16.
Успехов! Rob.
troiden
Jun 26 2011, 07:14
А что за целевая ПЛИС используется? Например для пятых вертексов в даташитах нашелся примитив 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
Jun 26 2011, 09:28
Целевая плис - spartan 3e. Там такого вроде нет. Но за намек спасибо...
Цитата(RobFPGA @ Jun 24 2011, 18:30)

Внизу ссылки на исходники DCM_STANDBY, внутри есть файлик ringosc это как раз и есть генератор
Интересная схемка. Я делал такие генераторы на лутах, но приходилось добавлять внешнее управление чтобы среда не оптимизировала схему. Хитрецы, сделали на триггерах! Не понятно зачем на выходе поставили MUX5?
Updated
MUX5 служит для развязки генератора от дальнейшей схемы, чтобы не было влияния нагрузки на частоту.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.