Цитата(maxics @ Nov 26 2013, 20:39)

Требуется принять поток данных в SPARTAN-6 с двухканальной АЦП LTC2195. Частота 100 МГц, режим DDR 4 lane, т.е данные в АЦП приходят с частотой 200 МГц по переднему и заднему фронту.
Это второй релиз платы (разводка сильно не менялась). В первом релизе, потратив много времени, удалось подобрать смещение фазы DCO (такт с АЦП) с помощью DCM (PHASE_SHIFT).
В последнем релизе сделать это не удается. Видно искажение входного сигнала. Пытались подобрать фазу DCO, закреплять в PlanAhead, но безрезультатно. Бывает, что при определенном значении Phase Shift данные принимаются верно, но достаточно что-нибудь поменять в проекте, как все "уезжает". В чем может таиться ошибка? Как лучше организовать прием?
Файл с исходным кодом:
ADC2195_receiver.vhd ( 9.53 килобайт )
Кол-во скачиваний: 6381. Пропишите в UCF файле OFFSET constraint, описывающий вашу ситуацию. Примеры есть в Constraints guide.
2. Вместо того АДа, что у вас в коде используйте примитивы IDDR для работы с LVDS сигналом по двум фронтам. В итоге сигнал будет проходить вот так : IBUFGDS -> IDDR -> ваша дальнейшая логика демультиплексирования.
3. На таких частотах в принципе можно и без DCM обойтись если грамотно использовать рекмендации Xilinx по source synchronous clocking, тут выбор за вами.
4. В вашем модуле данные идут с 2-х АЦП, а DCO - всего один, почему?