[an error occurred while processing this directive]
|
Всем читающим добрый день.
Virtex-II Pro, на входе данные source synchronous 400MHz DDR со своим клоком сдвинутым на 90 градусов. Еще есть reference clock 200MHz синхронизированный с клоком данных, и генератор pletronix LV1145B на 200MHz.
Reference clock и генератор подключены к ножкам GCLK, клок данных - нет.
Как сделано сейчас:
- Клок данных пропускается через DCM, сигнал от ножки идет к DCM через BUFG.
- Reference clock делится на 2 в DCM и используется основной схемой
- Данные с ножек сэмплируются по их клоку (400MHz), десериализируются и складываются в FIFO, откуда забираются на 100MHz. Потом они выравниваются.
Что не нравится:
1. Хотя работает все без замечаний, неприятно, что клок данных оказался на обычном lvds-ном входе, а не на GCLK - плату переделать невозможно.
2. Поскольку фазу клока основной части схемы быстро поменять не получается, приходится выравнивание выполнять на маленькой частоте (100MHz) и задерживать на FIFO данные, в результате получать latancy больше, чем хочется.
3. Остался бесхозным генератор :)
Вот теперь вопросы:
1. Можно ли как-то не тянуть к DCM клок от ноги общего назначения, а
безобразничать с какой-нибудь автоподстройкой фазы, а клок данных генерировать из reference clock (XAPP268 Active Phase Alignment) или лучше не сделать и это глупость?
2. Что если основную медленную схему питать тем же клоком данных (400MHz), но разрешать его через global clock mux 1 такт через 3? Тогда выравнивание данных можно сделать без лишних задержек и выкинуть FIFO.