Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Дифференциальные приёмники на Spartan 3
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
dryadae
Рассматривая примитивы Xilinx, столкнулась со следующей проблемой. Для Spartan 3/3E на сайте приведена следующая табличка (примитив IBUFDS):
Inputs Outputs
I IB O
0 0 No Change
0 1 0
1 0 1
1 1 No Change

Ну, c 0 и 1 вроде бы всё понятно, а вот как понимать "No Change"? Не означает ли это, что в высокоимпедансном состоянии ресивер держит на цифровой линии предыдущее состояние?
Если так, так польза данного устройства для межплатных и кабельных соединений кажется сомнительной; выдь обычно "нормальные" LVDS-устройства удерживают некий фиксированный уровень (как правило, 1) не только при разрыве линии, но и при коротком замыкании - см., в частности, продукцию Maxim.

Есть ли у кого-то реальный опыт работы с данными ресиверами в качестве портов ввода-вывода, и если да, то как они ведут себя при обрыве, или закорачивании линии, а также выдаче на неё третьего состояния? Ведь судя по той же документации, OBUFTDS, имея отдельный вход ~enable, может это.

Адрес документа - http://toolbox.xilinx.com/docsan/xilinx7/b...edl0025_17.html
m_y
No change означает, что состояние выхода останется в предыдущем состоянии. Чтобы не было проблем при обрыве, или закорачивании линии, а также выдаче на неё третьего состояния можно использовать pullup или pulldown.
dryadae
Цитата(m_y @ Sep 29 2006, 09:46) *
No change означает, что состояние выхода останется в предыдущем состоянии. Чтобы не было проблем при обрыве, или закорачивании линии, а также выдаче на неё третьего состояния можно использовать pullup или pulldown.

То есть опознавать подобные ситуации - никак? Только pull-up до нейтрального уровня?
dryadae
Или использование выходного pull-up позволит получить тот же результат, что и с использованием внешнего MAX9111-9113 ? unsure.gif
dryadae
up
DmitryR
Цитата(m_y @ Sep 29 2006, 09:46) *
Чтобы не было проблем при обрыве, или закорачивании линии, а также выдаче на неё третьего состояния можно использовать pullup или pulldown.

А не приведет ли это к рассогласованию импеданса линии?
dryadae
Цитата(DmitryR @ Oct 5 2006, 12:25) *
Цитата(m_y @ Sep 29 2006, 09:46) *

Чтобы не было проблем при обрыве, или закорачивании линии, а также выдаче на неё третьего состояния можно использовать pullup или pulldown.

А не приведет ли это к рассогласованию импеданса линии?

Какой? Дифференциальной? Но ведь pull-up'ы, как я правильно поняла, предполагается ставить за приёмником, где гуляют уже обычные CMOS/TTL. Или что вы имели в виду? blush.gif
DmitryR
Цитата(dryadae @ Oct 5 2006, 14:52) *
Или что вы имели в виду? blush.gif

Изначально вопрос был по примитивам IBUFDS. Этот примитив осуществляет непосредственно прием дифференциального сигнала, т.е. дифференциальный сигнал подается прямо на выводы ПЛИС. Соответственно, если поставить на них pullup/pulldown, это IMHO может привести к рассогласованию импеданса дифференциальной трассы.
dryadae
Почему на них? На выход! Как можно single-ended привязать к дифференциалу??!?? По-моему, это всё равно что поставить трансформатор на линию с постоянным током...
beg
Цитата(dryadae @ Sep 29 2006, 01:24) *
Рассматривая примитивы Xilinx, столкнулась со следующей проблемой. Для Spartan 3/3E на сайте приведена следующая табличка (примитив IBUFDS):
Inputs Outputs
I IB O
0 0 No Change
0 1 0
1 0 1
1 1 No Change

Ну, c 0 и 1 вроде бы всё понятно, а вот как понимать "No Change"? Не означает ли это, что в высокоимпедансном состоянии ресивер держит на цифровой линии предыдущее состояние?
Если так, так польза данного устройства для межплатных и кабельных соединений кажется сомнительной; выдь обычно "нормальные" LVDS-устройства удерживают некий фиксированный уровень (как правило, 1) не только при разрыве линии, но и при коротком замыкании - см., в частности, продукцию Maxim.

Есть ли у кого-то реальный опыт работы с данными ресиверами в качестве портов ввода-вывода, и если да, то как они ведут себя при обрыве, или закорачивании линии, а также выдаче на неё третьего состояния? Ведь судя по той же документации, OBUFTDS, имея отдельный вход ~enable, может это.

Адрес документа - http://toolbox.xilinx.com/docsan/xilinx7/b...edl0025_17.html


"No Change" в данном документе означает, что при одинаковых уровнях входов, выход элемента остается в том же состоянии, в каком он был до установления одинаковых уровней на входе. Переключения выхода происходят только при различных уровнях на входах. Высокоимпедансноого состояния вовсе нет. Выход элемента доступен только внутри ПЛИС.
DmitryR
Цитата(dryadae @ Oct 9 2006, 13:30) *
Почему на них? На выход! Как можно single-ended привязать к дифференциалу??!?? По-моему, это всё равно что поставить трансформатор на линию с постоянным током...

На выход чего? Вы связываете OBUFTDS с IBUFDS. По плате идет дифференциальная трасса. Single-ended сигнализации нигде нет.
dryadae
To DmitryR:
Теперь уже я не понимаю. Вы же сами вроде советовали использовать выходной pull-up для "притяжки" плавающего состояния к "1" (именно выходной, да? это ведь не PECL какой-нибудь, право же smile.gif ) .

Цитата
"No Change" в данном документе означает, что при одинаковых уровнях входов, выход элемента остается в том же состоянии, в каком он был до установления одинаковых уровней на входе. Переключения выхода происходят только при различных уровнях на входах. Высокоимпедансноого состояния вовсе нет. Выход элемента доступен только внутри ПЛИС.

Все дифф. приёмники так работают - за исключением того, что никому пока что не приходило в голову хранить предыдущее состояние на выходах (а действительно, зачем?) Ну вот в этом-то и вопрос - как получить дифф. приёмник Спартана в качестве MAX1111-1113. d>-100 mV, высокий импеданс, "коротыш" - преобразуются в "1", всё остальное - соответственно в "0".

Цитата
Высокоимпедансноого состояния вовсе нет. Выход элемента доступен только внутри ПЛИС.

Как это это? А если, например, эти ноги спаять вместе, или вовсе оставить ни к чему не присоединёнными???
Приведу простой пример - скажем, по LVDS связываются две платы, и на одной из них вдруг пропадает питание. Как об этом узнать без дополнительных single-ended линий? Мне кажется, через Hi-Z более определённого промежутка времени - а иначе ноль превратится в бесокнечный период, и думай потом, что хочешь...
beg
А не флуд ли это? Вроде вполне доступно в прошлый раз написал...
Ладно, в последний раз:
Цитата(dryadae @ Oct 10 2006, 02:50) *
...Вы же сами вроде советовали использовать выходной pull-up для "притяжки" плавающего состояния к "1" (именно выходной, да? это ведь не PECL какой-нибудь, право же smile.gif ) .

Никакого "плавающего состояния" на выходе обсуждаемого примитива быть не может (смотрите приведенную Вами же таблицу истинности), следовательно и выход притягивать никуда не требуется.

Цитата(dryadae @ Oct 10 2006, 02:50) *
Все дифф. приёмники так работают - за исключением того, что никому пока что не приходило в голову хранить предыдущее состояние на выходах (а действительно, зачем?) Ну вот в этом-то и вопрос - как получить дифф. приёмник Спартана в качестве MAX1111-1113. d>-100 mV, высокий импеданс, "коротыш" - преобразуются в "1", всё остальное - соответственно в "0".

Сделано как раз очень разумно - для того, чтобы исключаить ложные переключения при недействительных комбинациях входных сиггналов - помехоустойчивость.

Цитата
Высокоимпедансноого состояния вовсе нет. Выход элемента доступен только внутри ПЛИС.


Цитата(dryadae @ Oct 10 2006, 02:50) *
Как это это? А если, например, эти ноги спаять вместе, или вовсе оставить ни к чему не присоединёнными???

Если входы соединить, выход переключаться не будет, если входы будут висеть, то в зависимости от того, что на них наведется.

Цитата(dryadae @ Oct 10 2006, 02:50) *
Приведу простой пример - скажем, по LVDS связываются две платы, и на одной из них вдруг пропадает питание. Как об этом узнать без дополнительных single-ended линий? Мне кажется, через Hi-Z более определённого промежутка времени - а иначе ноль превратится в бесокнечный период, и думай потом, что хочешь...

Не очень вразумительно, но Z на входе даже при пропадании питания передатчика все равно не будет - там д. б. согласующая цепь. Однако приведенную в Вашем примере задачу не решает и МАХ1111-1113, т.к 1 на его выходе при верной комбинации входных сигналов не отличается от 1 при КЗ или ХХ.
dryadae
Цитата
А не флуд ли это? Вроде вполне доступно в прошлый раз написал...

Ну, во-первых, ничего нового Вы не написали - всё это уже было выше, в посте от m_y.

Цитата
Чтобы не было проблем при обрыве, или закорачивании линии, а также выдаче на неё третьего состояния можно использовать pullup или pulldown.

Не уверена, что понимаю, о каком именно pull-up'е идёт речь.
Читаем (http://www.interfacebus.com/Design_Connector_LVDS.html):
LVDS Pull-up/Pull-Down Resistors
LVDS uses a single 100 ohm termination resistor at the Receiver side of the bus. The Receiver provides failsafe bias so Pull-up/down resistors are not required. Noisy environments may require the addition of bias resistors.


The Pullup/Down Resistors (Idle-line failsafe) are used to keep the +/- inputs of the Receiver(s) inputs at a minimum of 200mV differential or higher. Normally required once the system has reached it's quiescent state, when no drivers are driving the bus. Only one end of the bus requires the resistor network.

По аресу http://www.interfacebus.com/Design_Connector_RS644.html
есть пример использования этих самых "bias resistors", но оттуда непонятно, можно ли применить нечто подобное на LVDS-to-LVDS линии.

В общем, странное поведение ресиверов (в теории) остаётся фактом - непонятно, почему бы им не вести себя так же, как и, скажем, стандартные продукты - DS90LV048A, UT54LVDS032LV, а также вышеозначенные Максимы...

Может, кто-то знает, зачем нужно хранить предыдущее состояние на выходе в отсутствии изменений, или обрыве на линии, если обычной практикой является притягивание к "1"?
DmitryR
Теперь понятно, откуда весь этот шум про pullup. Документ ужасно старый, там еще 5V. Короче, так не делают. Для noisy environment делают так: каждый провод LVDS пары на стороне приемника соединяют резисторами номиналом в дифференциальное сопротивление с питанием и землей. Питание для Spartan-3 имеет смысл взять с того же полигона, с которого питаются приемники. Собственно, точно так работает например DCI. Но это не pullup/pulldown, это будет просто делитель, формирующий в проводе пол-питания, что есть опорный DC для LVDS. При обрыве оба провода будут под одним потенциалом.

Цитата(dryadae @ Oct 12 2006, 19:48) *
Может, кто-то знает, зачем нужно хранить предыдущее состояние на выходе в отсутствии изменений, или обрыве на линии, если обычной практикой является притягивание к "1"?


Да какая разница? Ну будет у Вас притянут к единице, все равно не поймете, это передатчик гонит константную единицу или у Вас обрыв. А если передатчик не может гнать константный сигнал - то Вы и по заморозке состояния поймете, что обрыв.
tegumay
Только одно мелкое замечание к пред. посту дифф. не только LVDS, и согласование там другое и не все прокатит, ну и согласование там может быть другое (для плис), не такое какое указано в стандарте
(читать мануал по плисе надо иначе будет шаманство!!!)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.