Mahagam (05.10.2019 23:40, просмотров: 432) ответил MBedder на Что значит "ловить биты" - создавать timestamp каждому приходящему активному фронту?
смотри, MMCM генерит клок в 625MHz. это 1600ps период. но выдает по 4-м линиям со сдвигом на 90°, то есть со сдвигом в 400ps между линиями. 4 запаралленых триггера в блоке ISERDESE2 тактируются этими 4-мя хитросдвинутыми клоками, и стробят одну входную линию по этим клокам. далее эти 4 захваченных бита хитромудро переносятся на одну частоту. то есть с частотой 625MHz ловим тетрады вида 0000 0001 0011 0111 1111 в зависимости от того в каком временном интервале с шагом 400ps нам пришёл фронт.
теперь шаг 2: захватываемый вход идёт не напрямую на ISERDESE2, а распараллеливается через 2 программируемые линии задержки. одна выставляется на 0ps, вторая на ~208ps (в даташите они пишут хитро, типа шаг в 52ps, надо 4 шага, и получаем 200, возможно, нулевой задержки нет, а есть стартовая в 8ps, тогда да, разница в 200ps). после чего оригинальный сигнал и чуть задержанный захватываются уже парой рядом расположенных блоков ISERDESE2.
итого да, с периодом в 1600ps (625MHz) мы получаем пачку в 8 бит вида 0000_0001 0001_0001 0001_0011 0011_0011 0011_0111, по значению которой и получаем временной сдвиг с шагом 200ps.
причём блоки эти (две блока задержек и два ISERDESE2) расположены в чипе как один большой субблок, их трассировка внутри явно строго одинакова (клонирована), а значит что разрешение в 200ps достигается без извращений. разве что на этой частоте (625MHz) даже в артиксе работать неудобно. но там уже перенести работу частоту ниже и растянув захваченные данные на 32 бита - дело техники.
дальше уже можно на лету программировать линии задержки и ловить времянки точнее.