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

для прототипирования еще одного ASICa хочу промоделировать работу SERDES 500Mb/s

то есть задача сделать передатчик, который сможет передавать поток, который можно будет принимать в стандартное IP (лучше Ксайлинс, но можно и Альтера)

 

технология SOI, то есть практически аналоговая :), каких-то готовых IP нет (по крайней мере, рассчитывать не стоит), есть LVDS IO выход и библиотека стандартных ячеек (пока еще не видел, но уверили, что 500МГц для сдвигового регистра - легко)

 

поток до 500Mb/s, по плате предполагается расстояние до 10см. собственно зачем надо - сжать паралельную шину в LVDS пару, выигрыш размер чипа, и предположительно, лучше EMI

 

вопрос - понять, какие недостатки

 

соотношение 10:1, весь интерфейс 4 пары с данными и пара для тактового 50Мгц

называется по-моему source-synchronous

пары по задержке у передатчика не выровнены

 

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

но может я не понимаю чего-то важного, из-за крайне скудного знакомства с практической реализацией сериализатора-десериализатора?

 

------------

 

в деталях:

есть ли проекты реализации передатчиков для ПЛИС, где нет аппаратной поддержки? получится ли на них 500Мбит?

соединение Xilinx-овского и Альтеровского IP/мегафункции будет работать? то есть если на плате ксайлинкс и альтера - можно ли передавать поток между ними?

какую из Ксайлинской/Альтеровской реализации/ПЛИС лучше взять в качестве приемника?

какие еще вопросы должны возникнуть :)?

 

 

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


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

Почему SOI - именно аналоговая технология? То же самое что и объемный кремний, делай что хочешь. Есть небольшой нюанс проектирования топологии (антенны), но не более того. И что за фабрика, где нет IP? Если речь о Микрон 250КНИ, то сердес должен быть.

 

По поводу высокоскоростных PHY, основная проблема это выравнивающий буфер: поскольку в линиях передачи может гулять фаза, то приемный буфер (находится после десериалайзера) обязан эту фазу выровнять. Если сердес заменяется на что то другое - к примеру несколько LVDS впараллель, то приемный буфер все равно нужен. Впрочем, если хост и эндпоинт тактируются с одного генератора (как в pci-e, к примеру), то наверное можно обойтись и без буфера. Почитать обо всем этом можно, погуглив PCI-E Intel PIPE interface. Там это называется Elastic Buffer.

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


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

собственно зачем надо - сжать паралельную шину в LVDS пару, выигрыш размер чипа, и предположительно, лучше EMI

А я вот задумался над применением интерфейса QuadSPI между микроконтроллером и ПЛИС.

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


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

Приветствую!

...

в деталях:

есть ли проекты реализации передатчиков для ПЛИС, где нет аппаратной поддержки? получится ли на них 500Мбит?

соединение Xilinx-овского и Альтеровского IP/мегафункции будет работать? то есть если на плате ксайлинкс и альтера - можно ли передавать поток между ними?

какую из Ксайлинской/Альтеровской реализации/ПЛИС лучше взять в качестве приемника?

какие еще вопросы должны возникнуть :)?

500 MHz serial сейчас для FPGA не проблема даже без serdes - DDR регистр на входе и вот уже поток 2 бит 250 МНz, Главное чтобы IO обеспечивал требуемую частоту. Естественно при этом придется все жестко прибивать "гвоздями" constaint по расположению в кристалле. Давным давно я делал похожее еще для VirteII (вроде 450 MHz между чипами было) и для Virtex4 (а тут 600 MHz по 2м кабелю), динамического выравнивания задержек по линиям не было.

У Xilinx раньше много app-note было для старых семейств - но сейчас тяжело их найти - новые семейства все забивает в поиске. Как пример xapp6856 xapp855 xapp860 xapp585, вроде раньше такое было и для Virtex2. А вот это уже раритет xapp688, xapp454 spartan 3 - все на тиргерах, задержки на LE - хардкор и ностальгия :) Многие app идут с исходниками.

 

Успехов! Rob.

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


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

спасибо, особенно за старые xapp!

 

но еще хотелось бы общих соображений, применимых к моим условиям

1) я хочу давать тактовый сигнал отдельной парой - то есть всякие синхропоследовательности для тренировки и т.п. не нужны, так же не нужны старт-стоп биты и какое-то "управление потоком"

2) связывать буду по постоянному току, без конденсаторов, то есть 8b/10b тоже не нужны - пусть хоть все время идут 00000 или 111 - проблем не будет

правильно я понимаю?

а то взял посмотреть ТИ-шные дискретные сердесы - так там чего-то наворотили такого, что гораздо сложнее, чем я ожидал (ну и лет 10 назад было в этой sn56 серии)

 

в принципе, тестовую последовательность (по команде с отдельного SPI интерфейса) я буду делать, для проверки линка, что-то типа 0,1,2,3...1023, "шахматные доски", может ПСП от сдвигового регистра, но не предполагаю динамической калибровки задержки в приемнике - то есть подбирается один раз для конкретной платы и проверяется в температуре/разбросе - так можно?

 

остался вопрос - можно ли это принять в современной ПЛИС - ну может там какой-то обязательный формат (со старт-стопом, синхропосылками и т.д.), с неотключаемым 8b/10b и т.п. или есть гибкость? если например, от мегафунций отказаться и клеить из примитивов?

 

 

-----------

 

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

поэтому хотелось мне "по-быстрому" получить общую картину "как принято" это делать, а после искать IP с требованиями - естественно они есть, но мне пока не понятно ТЗ на них

 

и соответственно

>приемный буфер (находится после десериалайзера)

я не понял

 

про PIPE еще не почитал, но хочу для начального понимания уточнить: после сериализатора, я предполагаю защелку на /10 такт, то есть в приемнике у меня будет PLL, которая дает сфазированые clk и clk/10, а на каждой линии программируемая задержка idelay - то есть я рассчитываю реализовать такой приемник в ПЛИС (можно ли?), а потом, возможно и в отдельном цифровом АЗИКе

 

в чем тут ошибка?

 

 

 

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


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

Приветствую!

 

...

но еще хотелось бы общих соображений, применимых к моим условиям

1) я хочу давать тактовый сигнал отдельной парой - то есть всякие синхропоследовательности для тренировки и т.п. не нужны, так же не нужны старт-стоп биты и какое-то "управление потоком"

2) связывать буду по постоянному току, без конденсаторов, то есть 8b/10b тоже не нужны - пусть хоть все время идут 00000 или 111 - проблем не будет

правильно я понимаю?

а то взял посмотреть ТИ-шные дискретные сердесы - так там чего-то наворотили такого, что гораздо сложнее, чем я ожидал (ну и лет 10 назад было в этой sn56 серии)

 

3) в принципе, тестовую последовательность (по команде с отдельного SPI интерфейса) я буду делать, для проверки линка, что-то типа 0,1,2,3...1023, "шахматные доски", может ПСП от сдвигового регистра, но не предполагаю динамической калибровки задержки в приемнике - то есть подбирается один раз для конкретной платы и проверяется в температуре/разбросе - так можно?

 

4) остался вопрос - можно ли это принять в современной ПЛИС - ну может там какой-то обязательный формат (со старт-стопом, синхропосылками и т.д.), с неотключаемым 8b/10b и т.п. или есть гибкость? если например, от мегафунций отказаться и клеить из примитивов?

...

1, Да - это на то оно и source synchronous

2, Да правильно - но в любом случае надо будет делать word синхронизацию при инициализации либо динамически (bit-slip) либо статикой (задержкой между clk и датой)

 

3, Трудно сказать это зависит от того как будет гулять задержка от температуры - у меня в старых проектах была постройка задержки clk в приемнике относительно данных - то есть линии данные считались как бы выровненными и при инициализации подстраивалась глобальная задержка clk в DCM для попадания в середину битового окна. Причем для Virtes2 это даже делалось внешним CPU.

 

4) Это без проблем! для Вашего случая это чистая реализация на логике - что хотите то и городите.

Может и есть готовые корки которые можно использовать но мне кажется что сделать все самому будет проще.

 

Успехов! Rob.

 

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


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

...

>приемный буфер (находится после десериалайзера)

я не понял

...

Если совсем грубо, то внутри PHY есть FIFO, у которого со стороны десериалайзера одна частота и разрядность, а в сторону Core другая частота и другая разрядность. Плюс, может быть опция декапсуляции принятого пакета с проверкой четности. В PIPE эту проблему решает Elastic Buffer, а в RIO еще и добавляется пересинхронизация данных, поскольку сердес работает на восстановленной частоте (clock recovery).

 

И еще о буферизации, если есть несколько последовательных каналов, работающих в параллель.

Представьте, что у Вас два последовательных канала параллельно принимают информацию. С первого десериалайзера идет поток данных, и идет поток данных со второго десериалайзера. А теперь представьте, что из-за асинхронности и разбежки фаз в последовательных каналах, оба потока сдвинуты друг относительно друга на один-два такта. Чтобы их выровнять, нужен еще один буфер - он к PHY уже отношения не имеет, и ставится в самом контроллере.

 

По поводу IP - либо Вы используете восстановленный клок на приеме (как в RIO), либо у Вас все устройства на плате работают от одного генератора (как в PCI-E). Можно купить только SerDes (опционально с clock recovery), можно купить целый PHY (PIPE интерфейс в случае PCI-E). Как называется PHY интерфейс в RIO, я не помню; cкорее всего обычный TBI, а все остальное должен делать сам контроллер.

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


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

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

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

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

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

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

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

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

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

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