Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Проблема со скремблированием
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Max42
Задача: передать 10-разрядные данные с одной Альтеры на другую со скоростью 27 Мбит/с.
Представляю это так:

Альтера-передатчик
10-разрядный поток данных(27Мбит/с) -> сериализатор(270Мбит/с) -> скремблирование(270Мбит/с) -> выходной порт(270Мбит/с)

Альтера-приемник
входной порт(270Мбит/с) -> дескремблирование(270Мбит/с) -> десериализатор(27Мбит/с) -> 10-разрядный поток данных(27Мбит/с)

Для операции сериализации/десериализации использую МегаВизард и функции ALTLVDS_TX и ALTLVDS_RX. Скремблирование - на триггерах и XOR по SMPTE 259M.

И вот тут Квартус выдаёт ошибку:
Код
Error (15873): Output port DATAOUT of DDIO_OUT primitive "Ser:inst1|altlvds_tx:ALTLVDS_TX_component|Ser_lvds_tx:auto_generated|Ser_ddio_out:ddio_out|ddio_outa_0" must drive input port I of an I/O OBUF primitive
Error: Quartus II 32-bit Analysis & Synthesis was unsuccessful. 1 error, 33 warnings

Когда делаю на 10Мбит/с и без операции скремблирования - всё работает как часы. Ошибка возникает при добавлении любого лог элемента между выходом сериализатора и выходным портом. Замечу, что на приемной стороне между входным портом и десериализатором никакой ошибки не возникает ни при каких условиях.
Думаю, как вариант, можно самому реализовать функцию сериализации на том же VHDL, но не уверен что тогда ПЛИС 270Мбит/с вытянет. Может быть где-нибудь в настройках ALTLVDS или САПРа нужно снять/поставить "галочку", дабы Квартус не ворчал?
Александр77
А задействоанный банк каким напряжением питается?
Может надо выставлять напряжения по требованиям LVDS или других скоростных шин..
maksimp
Может быть потому что аппаратные блоки, соответствующие примитивам ALTLVDS_TX и ALTLVDS_RX, в реальной ПЛИС соединены с LVDS приёмопередатчиком без возможности коммутации.
Поэтому он требует и на схеме так же изобразить.
То есть вам нужно или сериализатор и десериализатор самому ручками делать (если по быстродействию пройдёт) или скремблирование делать в параллельном коде, до сериализатора и после десериализатора.
Max42
Цитата
А задействоанный банк каким напряжением питается?
Может надо выставлять напряжения по требованиям LVDS или других скоростных шин..

Это уже была бы аппаратная проблема. Если вы имеете ввиду "I/O Standard" в ПинПланере - я выставляю Bus LVDS.

Цитата
скремблирование делать в параллельном коде, до сериализатора и после десериализатора

Любопытно, а такое вообще практикуют ?)
AndrewS6
Цитата(Max42 @ Mar 5 2013, 13:56) *
Любопытно, а такое вообще практикуют ?)

Вообще да.

Для ускорения разработки можете воспользоваться генератором параллельного скремблера http://outputlogic.com/?page_id=205
Max42
Благодарю за подсказки.

Описал всё на VHDL, проект компилиуется, ошибок не возникает. Будет ли работать в железе - увидим.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.