Добрый день.
Пытаюсь разобраться с приемом LVDS сигнала. В теме ориентируюсь весьма скромно, поэтому могут быть неточности в терминологии и т.п. Суть: необходимо принять через Cyclone III LVDS сигнал, состоящий из тактового сигнала и сигнала данных. И тактовый сигнал, и сигнал данных передаются в дифференциальном виде. Вопрос в том, какие действия по пунктам требуется осуществить, чтобы реализовать прием.
На данный момент поступаю так:
1) В даташите на микросхему, которая передает данные в ПЛИС, указано, что она использует для передачи стандарт LVDS. Поэтому подключаю диф. входы микросхемы к DIFFIO-пинам ПЛИС и между ними ставлю резистор на 100 Ом.
2) Верний уровень у меня на Verilog. Поэтому создаю по входные сигнла для клока и данных:
module LVDS_RECEIVER(
input LVDS_DATA_p;
input LVDS_DATA_n;
input LVDS_CLK_p;
input LVDS_CLK_n;
...
Через визард вставляю в проект ALTIOBUF настроеный как дифф. вход и в качестве параметров задаю ему свои входные дифф. сигналы и выходные сигнал типа wire. Т.е. в итоге у меня имеется четыре входных порта для "+" и "-" входов LVDS'а и два внутренних уже не дифференциальный сигнал:
wire LVDS_CLK;
wire LVDS_DATA;
Далее в PinPlanner'е привязываю входные диф. сигналы к конкретным DIFFIO-пинам. Причем когда в параметрах пина указываю, что это LVDS пин, автоматически создается дифференциальный ему сигнал. Т.е. задаю, что LVDS_DATA_p имеет тип LVDS - в списке портов появляется LVDS_DATA_p(n). Вот этот момент не совсем ясен, непонятно как в итоге необходимо задавать назначение таких дифф. входов: необходимо задавать оба дифф входа или достаточно задать только один (например "+").
3) Через визард вставлю в проект элемент ALTLVDS_RX, коэф десериализации 10 (т.к. данные 10-битные). Подключаю порт данных и клока.
В итоге на выходе с ALTLVDS_RX наблюдаю постоянный 0) ?