Перейти к содержанию
    

Проблема со скремблированием

Задача: передать 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 или САПРа нужно снять/поставить "галочку", дабы Квартус не ворчал?

Изменено пользователем Max42

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А задействоанный банк каким напряжением питается?

Может надо выставлять напряжения по требованиям LVDS или других скоростных шин..

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может быть потому что аппаратные блоки, соответствующие примитивам ALTLVDS_TX и ALTLVDS_RX, в реальной ПЛИС соединены с LVDS приёмопередатчиком без возможности коммутации.

Поэтому он требует и на схеме так же изобразить.

То есть вам нужно или сериализатор и десериализатор самому ручками делать (если по быстродействию пройдёт) или скремблирование делать в параллельном коде, до сериализатора и после десериализатора.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А задействоанный банк каким напряжением питается?

Может надо выставлять напряжения по требованиям LVDS или других скоростных шин..

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

 

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

Любопытно, а такое вообще практикуют ?)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Любопытно, а такое вообще практикуют ?)

Вообще да.

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Благодарю за подсказки.

 

Описал всё на VHDL, проект компилиуется, ошибок не возникает. Будет ли работать в железе - увидим.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...