Цитата(АБС @ Oct 29 2009, 17:40)

Так почему же все таки Вы считаете, что механизмы доставки клока в этом случае не используются?
Чую.

Вообще мое чутье обусловлено двумя вещами:
1) опытом с virtex, stratix, fpslic, в них перетаскивание клока на вход данных или затягивание сигнала с ресурсов общего назначения на вход тактирования приводят к заметному перекосу. В документации на ProASIC3 я не нашел никаких ограничений на соединения. Так что хоть данные, хоть клок можно цеплять к low skew ресурсам. Остается опасность из пункта 2.
2) опытом с синтезаторами quartus, xst, synplify, leonardo spectrum - если они захотят нагадить незадачливому разработчику, то могут воткнуть где не нужно глобальный буфер или не сделать его где нужно. И все, толкаем веревку, по расчудесной fpga потащится провод мимо глобальных сетей, потому что его не посчитали клоком и плевать им на перекос и на то, что вы хотели сделать, им это не ведомо.
Полистал я документацию на proasic3 и мысли следующие:
Оцифровку нужно делать на одном блоке CCC с PLL. Второй замучаешься синхронизировать.
Если умножить с помощью PLL частоту до 250 MHz, то получается тоже самое, что и с двумя PLL на 125MHz.
После PLL есть 3 селектора фазы с делителем частоты и программируемой задержкой. Но делители нам не помогут, так как VCO больше 350 MHz не разогнать. Остается только выбрать фазы 0 и 90 и с разной задержкой выдать на 4 клоковых сети квадранта.
Например, получится 4 сети тактируемые с периодом 4nS:
GLB 0 + 0 pS = +0 pS/+2000pS (это задний фронт)
YB 0 +600 pS = +600 pS/+2600pS
GLC 90 + 0 pS = +1000 pS/+3000pS
YC 90 +600 pS = +1600 pS/+3600pS
GLA можно сделать 125 MHz со сдвигом 0.
Захватываемый сигнал тоже надо подать на глобальную сеть.
Дальше наверное все равно кого кем захватывать, это вопрос не разрешения, а крутизны фронтов, надежности и предпочтений.
Еще, если учесть:
- джиттер до 5.6% периода ~225 pS
- skew глобальной сети 250 pS, который надо бы удвоить, так как перекос клока и перекос данных.
- ошибку duty cycle +-1.5% ~60 pS
то видно, что точнее 1nS может и не получиться.
Кстати, "градусник" из регистров и элементов задержки может дать результат лучше, если его непрерывно калибровать.
Для этого можно сделать пару экземпляров градусника, один калибруется по биениям частот двух PLL, другой работает, потом меняются.
Еще лучше перестать использовать fpga не по назначению и применить что-то специальное.
Цитата(АБС @ Oct 29 2009, 17:40)

A вообще получается, даже если бы я реализовал это на элементах задержки, все равно надо было бы такую же логику делать чтобы избежать метастабильных состояний?
Да. Это нужно делать в любой схеме, в которой есть вероятность нарушения таймингов.
Цитата(АБС @ Oct 29 2009, 17:40)

Стоит ли думать о возможном относительном фазовом сдвиге этих двух PLL?
Да.