Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Сериализатор на Циклон2
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Raw
при использовании мегафункции altlvds пара передатчик приемник - на приеме путаютс яразряды передаваемого когда между собой - обычно парами
причем реконфигурация каждый раз приводит к разным вариантам - то так то эдак - иногда правильно

Циклон 2 ep2c5SQC144
50 МГц по двум каналам передаю 14 разрядов - по 7 на канал. В плисе используются и приемник и передатчик. Пробовал и сам на себя - на другую плату - одно и тоже - путаютс яразряды ....
Kuzmi4
2 Raw
1) пробовали это же самое симулировать ?
2) пробовали понизить частоту ?
3) пробовали передавать другое кол-во разрядов на канал ?
Raw
да пробовал разные варианты
Kuzmi4
А что в симуляции ?
Raw
А что в симуляции ?

приемник не симулировал , а передатчик все понятно показывает где какие разряды - все вроде
логично



причем работает все четко стабильно - но разряды идут парами - два разряда верно - ну типа 0178239А45.... и порядок после перезагрузки меняется
Kuzmi4
Ну как это что в симуляции: сделайте 2 дизайна, засуньте в ТБ, дайти им клок и посомтрите что у вас в RTL-е laughing.gif
Вдруг у вас там то же самое rolleyes.gif
А если там всё нормально, тогда нужно клоки и данные осцилом просматривать при маленькой частоте
bogaev_roman
делал на стратикс 4 и на частоте 500 smile.gif
там и на передаче и на приеме я вручную конвертер ставил перед/после altlvds

Код
assign data_lvds_tx={link_dat[13],link_dat[6],link_dat[12],link_dat[5],
        link_dat[11],link_dat[4],link_dat[10],link_dat[3],
        link_dat[9],link_dat[2],link_dat[8],link_dat[1],
        link_dat[7],link_dat[0]}; - на передаче до altlvds

always @(posedge link_clk) link_dat<={link_data_14[13],link_data_14[11],link_data_14[9],link_data_14[7],
        link_data_14[5],link_data_14[3],link_data_14[1],link_data_14[12],
        link_data_14[10],link_data_14[8],link_data_14[6],link_data_14[4],
        link_data_14[2],link_data_14[0]}; - на приеме после altlvds


На моделировании у меня все работало, можете попробовать.
Порядок компоновки можно вообщето посмотреть, если открыть на RTL блок altlvds
yakub_EZ
Сделал на Cyclone3 5c144. Функция altlvds. Сериалайзер и десериалайзер загнал в один кристалл. Соединил вход с выходом советским выводным МЛТ резистором 27 Ом. Получил перетасованные разряды. Перестановка при каждой компиляции была, как мне казалось, со сдвигом - типа применения ассемблерной функции ror на 2-4 разряда.
Через резистор удалось 400 Мбод прогнать без проблем, на больших частотах появляется шум.
murmel1
Именно так оно и работает. Почему - не знаю, но при использовании ALT_DDR или ALT_LVDS всегда после петли приемник-передатчик разряды переставленны (попарно на каждой линии). Так и на симуляции и в жизни.
С этой штукой я столкнулся еще лет 5 назад, на первом циклоне. Сейчас работаю со Stratix 2 GX - все то же самое.
Так что, просто подправьте код, чтобы переставить их обратно и не беспокойтесь - преемственность подобного ... бага ? сохраняется.
Raw
Именно так оно и работает. Почему - не знаю, но при использовании ALT_DDR или ALT_LVDS всегда после петли приемник-передатчик разряды переставленны (попарно на каждой линии). Так и на симуляции и в жизни.
С этой штукой я столкнулся еще лет 5 назад, на первом циклоне. Сейчас работаю со Stratix 2 GX - все то же самое.
Так что, просто подправьте код, чтобы переставить их обратно и не беспокойтесь - преемственность подобного ... бага ? сохраняется.

Спасибо за поддержку - но у меня при каждой перезагрузке через Jtag расстановка меняется - вот только с конф. микросхемы еще не пробовал, может там есть стабильность?
DmitryR
Насколько я помню у Альтеры нет аппаратных сериализаторов, и ALT_LVDS реализована на рассыпухе. Поэтому, когда передо мной встала однажды задача сделать что-то подобное - я написал подобие этой мегафункции сам (там и делать-то вобщем нечего, просто нужна аккуратность) и не имел проблем. Частота была 245МГц DDR на третьем Циклоне.
KWIer
Цитата(DmitryR @ Apr 9 2010, 12:19) *
Насколько я помню у Альтеры нет аппаратных сериализаторов, и ALT_LVDS реализована на рассыпухе. Поэтому, когда передо мной встала однажды задача сделать что-то подобное - я написал подобие этой мегафункции сам (там и делать-то вобщем нечего, просто нужна аккуратность) и не имел проблем. Частота была 245МГц DDR на третьем Циклоне.

DmitryR, а не могли бы вы выложить здесь этот код? в большей степени интересует десериализатор, но если вы писали только сериализатор, то и его код очень бы мне помог!
bogaev_roman
Цитата
Насколько я помню у Альтеры нет аппаратных сериализаторов, и ALT_LVDS реализована на рассыпухе.

Если мегафункцию использовать, то квартус сериализатор/десериализатор в конкретное место поставит (для стратикс4 сам проверял), хотя можно самому собрать на обычных триггерах и щелкать данные по фронту и срезу.

KWIer. Откройте RTL viewer и посмотрите как квартус мегафункцию реализует, там все просто и понятно, Вам просто надо будет разряды по другому скомпоновать.
Raw
Спасибо за совет... так и сделал. организовал сер-р и десериал-р сам на рассыпухе. Все работает отлично. А на родной мегафункции alttx altrx так так и не смог добиться стабильности назначения разрядов. причем каждая перезагрузка приводит к новой расстановке///
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.