Alex77 12 April 22, 2025 Posted April 22, 2025 · Report post https://hardwarebee.com/clock-domain-crossing-techniques-for-fpga/ определитесь с требованиями: "по переднему фронту асинхронного импульса сформировать периодический сигнал" - период , это сколько ? " чтобы он был синхронен с этим передним фронтом и НЕ СОВПАДАЛ с системны clk, т.е. был бы сдвинут относительно него." - какова точность не совпадения ? "период/скважность оного асинхронного импульса" ? Без оного: тут посоветую использовать либо песочные часы, для определения солнцестояния, или атомные часы для измерения периода полураспада плутония. Quote Share this post Link to post Share on other sites More sharing options...
Plain 404 April 22, 2025 Posted April 22, 2025 · Report post 2 часа назад, _pv сказал: Можно вытащить вход/выход инвертора наружу, навесить на него RC, отпускать асинхронно В предыдущей теме автор говорил, что ему нужно (надеемся, это другое) создать сотни фазосдвинутых с разрешением 100 пс сигналов, и в этой можно ожидать такие же количества и качества, поэтому в сумме ему скорее всего всё-таки надо дать ответ, что такие задачи на ПЛИС не решить, и даже один канал не сделать, по причине её грязного питания. Quote Share this post Link to post Share on other sites More sharing options...
Alex11 13 April 22, 2025 Posted April 22, 2025 · Report post Здесь бы требуемая точность и частота системного клока бы прозвучала хоть раз... И, может быть, применить другой метод измерения, если нужно именно измерение, а не генератор. Quote Share this post Link to post Share on other sites More sharing options...
RobFPGA 101 April 22, 2025 Posted April 22, 2025 · Report post 4 hours ago, tems-ya said: Если бы удалось по переднему фронту асинхронного импульса как-либо запустить какой-либо перодический сигнал, то используя нониусный метод измерения, думаю можно было бы относительно несложно определить положение этого переднего фронта на интервале системного clk, что собственно и является исходной задачей. Зациклившись на запуске "нониусного" клока вы упускаете одну "маленькую" деталь (кроме огромной проблемы стабильности этого клока ) - вам как то нужно находить точное совпадение фронтов основного клока и вашего "нониусного". А для асинхронных сигналов, коим будут эти клоки, в FPGA это проблема ... Quote Share this post Link to post Share on other sites More sharing options...
_pv 107 April 22, 2025 Posted April 22, 2025 · Report post 20 minutes ago, Plain said: поэтому в сумме ему скорее всего всё-таки надо дать ответ, что такие задачи на ПЛИС не решить, и даже один канал не сделать, по причине её грязного питания. От неозвученной требуемой точности всё-таки зависит, если надо относительно условных опорных 100МГц сказать когда пришёл именно импульс с точностью +-1-2нс то наверное можно и так, сделать ring или RC oscillator на условные 101МГц запускать его от импульса и считать когда когда он фазу опоры "догонит". И в эти несколько процентов наверное возможно и без особых автокалибровок "из говна и палок" попасть, в тепличных условиях. А если нужны пикосекунды и сотни каналов, тогда пожалуй да, не решить. Quote Share this post Link to post Share on other sites More sharing options...
RobFPGA 101 April 22, 2025 Posted April 22, 2025 · Report post 24 minutes ago, _pv said: если надо относительно условных опорных 100МГц сказать когда пришёл именно импульс с точностью +-1-2нс то наверное можно и так На FPGA точность 1-2 нс можно и так получить, без возни с ring, простым multiphase capture. Для опорника 250 MHz и 4 фазами будет вам как раз 1 нс. Для классического TDC на цепочке задержек (что по сути тот же multiphase capture) можно получить типичные точности ~100 ps. Все что ниже (до десятков ps) набирается только статистикой и усреднением, и то с большой долей удачи ... Quote Share this post Link to post Share on other sites More sharing options...
tems-ya 0 April 22, 2025 Posted April 22, 2025 · Report post Alex77, постараюсь ответить по порядку: 1) если вы потратите немного своего времени и почитаете про нониусные измерения, то, надеюсь поймете, что конкретное значение периода желаемого мной сигнала, по большому счету не играет принципиальной роли, т.к. две сдвинутые относительно друг друга гребенки обязательно где-то совпадут. Где конкретно - это будет важно при конкретном воплощении решения в железе. Но пока приемлемого варианта формирования такого периодического игнала СРЕДСТВАМИ ПЛИС никто (кроме RobFPGA) не озвучил. Странно, что здесь еще никто не вспомнил про какие-нибудь генераторы ударного возбуждения. Повторюсь еще раз, две достаточно длинные гребенки (с одинаковыми или разными частотами) сдвинутые друг относительно друга на какую-то величину (в пределах одного периода) где-то, может даже далеко вправо обязательно совпадут передними фронтами своих зубцов если не в математическом, то в физическом смысле точно. В этом суть нониусного метода измерения. Конкретные значения будут играть роль на коэффициенты, на точность но никак не на суть. Что в написанном не понятно? Для тех кто не может мыслить абстрактно и привык к конкретным ТЗ, пусть считает, что нужно сформировать сигнал по частоте равный частоте clk, один из передних фронтов которого синхронен с передним фронтом асинхронного импульса, ну типа как в pll, получаем сдвинутый по фазе сигнал с той же частотой что и clk. 2) "точность несовпадения" в данном методе является величиной переменной, которую как раз мы таким способом и пытаемся определить - это цель всех этих манипуляций. 3) "период/скважность оного асинхронного импульса" - нет у него никакого периода, это просто одиночный импульс "Одын...софсэм, одын..." Может туплю, но при чем тут "Clock Domain Crossing" пока не понимаю. Если вы понимаете как это можно использовать для озвученных ранее целей, не могли-бы вы как-то, хотя бы на пальцах объяснить суть идеи? Alex11, ранее писал, что частота clk=50MHz. Можно сгенерировать и более на pll. Точность штангенциркуля в 10 раз выше чем линейки. Здесь думаю реально получить то же самое. Точность в 10 раз выше периода (когда частоты одинаковые). Если два сигнала будут иметь одинаковую частоту = 50MHz (период 20ns), то точность определения будет 2ns. Если 100MHz (период 10ns), то точность будет 1ns. Другие методы также прорабатываются, просто они выходят за рамки данной темы. Quote Share this post Link to post Share on other sites More sharing options...
_pv 107 April 22, 2025 Posted April 22, 2025 · Report post 1 minute ago, RobFPGA said: На FPGA точность 1-2 нс можно и так получить, без возни с ring, простым multiphase capture. можно, 100MHz и 1нс просто для примера, как будто если там мелкая cpld вообще без pll. так-то можно и без всякого tdc засунуть этот вход в приёмник 14ГБитного трансивера и вот они 70пс Quote Share this post Link to post Share on other sites More sharing options...
RobFPGA 101 April 22, 2025 Posted April 22, 2025 · Report post 4 minutes ago, tems-ya said: Для тех кто не может мыслить абстрактно и привык к конкретным ТЗ, пусть считает, что нужно сформировать сигнал по частоте равный частоте clk Для тех кто не мыслит абстрактно, а практически, равность частот опорника (clk) и "нониуса" говорит о том что фронты этих сигналов никогда не совпадут если входной импульс и опорник не были в фазе изначально ... Схема c "нониусом" будет работает только когда у вас есть малая но стабильная разность частот опорника и "нониуса" Quote Share this post Link to post Share on other sites More sharing options...
blackfin 84 April 22, 2025 Posted April 22, 2025 · Report post On 4/22/2025 at 4:14 PM, tems-ya said: Для тех кто не может мыслить абстрактно ... Да, для них это проблема: Quote «А сегодня в завтрашний день не все могут смотреть. Вернее смотреть могут не только лишь все, мало кто может это делать». Quote Share this post Link to post Share on other sites More sharing options...
tems-ya 0 April 22, 2025 Posted April 22, 2025 · Report post Ок, "...я кратко резюмирую сегодняшний базар" Средствами плис невозможно никак (по крайней мере просто) сформировать требуемый сигнал, в этом смысле это направление тупиковое, поэтому не стоит тратить время в попытках реализовать все это на практике. Всем спасибо. Quote Share this post Link to post Share on other sites More sharing options...
Alex77 12 April 22, 2025 Posted April 22, 2025 (edited) · Report post Ч.т.д. Нет ясного ТЗ - и в результате советы "в кепку" насованы. Всего-то надо было (как вариант) сказать что надо померить разность фаз (время) между опорником и импульсом. Или время между входными импульсами вот с такой (33нс к примеру) точностью. Или... пс: Штангенциркуль вот прям щаз в сумке лежит... Фото для пруфа надо ? Edited April 22, 2025 by Alex77 Quote Share this post Link to post Share on other sites More sharing options...
_pv 107 April 22, 2025 Posted April 22, 2025 · Report post 28 minutes ago, tems-ya said: Средствами плис невозможно никак (по крайней мере просто) сформировать требуемый сигнал возможно всё, только в реальных условиях работать это будет как попало и показывать погоду. Quote Share this post Link to post Share on other sites More sharing options...
Plain 404 April 22, 2025 Posted April 22, 2025 · Report post 40 минут назад, tems-ya сказал: Средствами плис невозможно никак (по крайней мере просто) сформировать требуемый сигнал Это из чего такой вывод? Вам же сказали — пишете типовой кольцевой генератор с сигналом разрешения от входного триггера, затем фазовый детектор, т.е. просто счётчик на частоте эталона, а если задача утолить академический интерес до конца, то добавляете калибратор чередованием, т.е. вышеописанный измеритель пишете в двух экземплярах, которые мультиплексор меняет местами — пока один измеряет, второй калибруется, т.е. просто измеряется его частота — соответственно, если она выходит за пределы, можно ещё добавить её регулировку, т.е. переключать количество элементов кольца, у Cyclone IV задержка элемента 300 пс. Quote Share this post Link to post Share on other sites More sharing options...
khach 85 April 22, 2025 Posted April 22, 2025 · Report post 4 минуты назад, Plain сказал: Это из чего такой вывод? Вам же сказали — пишете типовой кольцевой генератор с сигналом разрешения от входного триггера, затем фазовый детектор, т.е. просто счётчик на частоте эталона И как это сделать на СОВРЕМЕННОЙ FPGA, в которой все сигналы ретаймятся от синтезируемого внутри клока? А если клок внутри не синтезировать, ту лезет куча проблем. Не говоря уж о несимметричном асинхронном клоковом сигнале. Не, оно конечно как кто запустится, но на частотах раз в 10 меньше паспортных. То что предлагается, неплохо работало на древних CPLD, был даже проект ТДС, где был второй петдевой генератор с компаратором фазы, который сравнивал частоту генератора с эталоном и от результата подстраивал напряжения питания ядра CPLD ( или мелкой FPGA) и таким образом регулировал временные задержки в петле. Но давно это было, сейчас подробности не помню. Quote Share this post Link to post Share on other sites More sharing options...