|
|
  |
для прототипирования еще одного ASICa хочу промоделировать работу SERDES 500Mb/s, то есть сделать на FPGA fabric OSERDES, а приемник взять готовое IP |
|
|
|
Dec 9 2016, 17:40
|
Гуру
     
Группа: Свой
Сообщений: 2 198
Регистрация: 23-12-04
Пользователь №: 1 640

|
то есть задача сделать передатчик, который сможет передавать поток, который можно будет принимать в стандартное IP (лучше Ксайлинс, но можно и Альтера) технология SOI, то есть практически аналоговая  , каких-то готовых IP нет (по крайней мере, рассчитывать не стоит), есть LVDS IO выход и библиотека стандартных ячеек (пока еще не видел, но уверили, что 500МГц для сдвигового регистра - легко) поток до 500Mb/s, по плате предполагается расстояние до 10см. собственно зачем надо - сжать паралельную шину в LVDS пару, выигрыш размер чипа, и предположительно, лучше EMI вопрос - понять, какие недостатки соотношение 10:1, весь интерфейс 4 пары с данными и пара для тактового 50Мгц называется по-моему source-synchronous пары по задержке у передатчика не выровнены вроде кажется, что все проблемы на стороне приемника, ну там калибровка задержек для линий данных, восстановление тактового сигнала и т.д. но может я не понимаю чего-то важного, из-за крайне скудного знакомства с практической реализацией сериализатора-десериализатора? ------------ в деталях: есть ли проекты реализации передатчиков для ПЛИС, где нет аппаратной поддержки? получится ли на них 500Мбит? соединение Xilinx-овского и Альтеровского IP/мегафункции будет работать? то есть если на плате ксайлинкс и альтера - можно ли передавать поток между ними? какую из Ксайлинской/Альтеровской реализации/ПЛИС лучше взять в качестве приемника? какие еще вопросы должны возникнуть  ?
|
|
|
|
|
Dec 10 2016, 07:32
|

Знающий
   
Группа: Свой
Сообщений: 680
Регистрация: 11-02-08
Из: Msk
Пользователь №: 34 950

|
Почему SOI - именно аналоговая технология? То же самое что и объемный кремний, делай что хочешь. Есть небольшой нюанс проектирования топологии (антенны), но не более того. И что за фабрика, где нет IP? Если речь о Микрон 250КНИ, то сердес должен быть.
По поводу высокоскоростных PHY, основная проблема это выравнивающий буфер: поскольку в линиях передачи может гулять фаза, то приемный буфер (находится после десериалайзера) обязан эту фазу выровнять. Если сердес заменяется на что то другое - к примеру несколько LVDS впараллель, то приемный буфер все равно нужен. Впрочем, если хост и эндпоинт тактируются с одного генератора (как в pci-e, к примеру), то наверное можно обойтись и без буфера. Почитать обо всем этом можно, погуглив PCI-E Intel PIPE interface. Там это называется Elastic Buffer.
|
|
|
|
|
Dec 10 2016, 11:27
|
Профессионал
    
Группа: Свой
Сообщений: 1 214
Регистрация: 23-12-04
Пользователь №: 1 643

|
Приветствую! Цитата(yes @ Dec 9 2016, 20:40)  ... в деталях: есть ли проекты реализации передатчиков для ПЛИС, где нет аппаратной поддержки? получится ли на них 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.
|
|
|
|
|
Dec 10 2016, 12:42
|
Гуру
     
Группа: Свой
Сообщений: 2 198
Регистрация: 23-12-04
Пользователь №: 1 640

|
спасибо, особенно за старые 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 - то есть я рассчитываю реализовать такой приемник в ПЛИС (можно ли?), а потом, возможно и в отдельном цифровом АЗИКе
в чем тут ошибка?
|
|
|
|
|
Dec 10 2016, 14:40
|
Профессионал
    
Группа: Свой
Сообщений: 1 214
Регистрация: 23-12-04
Пользователь №: 1 643

|
Приветствую! Цитата(yes @ Dec 10 2016, 15:42)  ... но еще хотелось бы общих соображений, применимых к моим условиям 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.
|
|
|
|
|
Dec 10 2016, 19:19
|

Знающий
   
Группа: Свой
Сообщений: 680
Регистрация: 11-02-08
Из: Msk
Пользователь №: 34 950

|
Цитата(yes @ Dec 10 2016, 15:42)  ... >приемный буфер (находится после десериалайзера) я не понял ... Если совсем грубо, то внутри 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, а все остальное должен делать сам контроллер.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|