yes 5 9 декабря, 2016 Опубликовано 9 декабря, 2016 · Жалоба то есть задача сделать передатчик, который сможет передавать поток, который можно будет принимать в стандартное IP (лучше Ксайлинс, но можно и Альтера) технология SOI, то есть практически аналоговая :), каких-то готовых IP нет (по крайней мере, рассчитывать не стоит), есть LVDS IO выход и библиотека стандартных ячеек (пока еще не видел, но уверили, что 500МГц для сдвигового регистра - легко) поток до 500Mb/s, по плате предполагается расстояние до 10см. собственно зачем надо - сжать паралельную шину в LVDS пару, выигрыш размер чипа, и предположительно, лучше EMI вопрос - понять, какие недостатки соотношение 10:1, весь интерфейс 4 пары с данными и пара для тактового 50Мгц называется по-моему source-synchronous пары по задержке у передатчика не выровнены вроде кажется, что все проблемы на стороне приемника, ну там калибровка задержек для линий данных, восстановление тактового сигнала и т.д. но может я не понимаю чего-то важного, из-за крайне скудного знакомства с практической реализацией сериализатора-десериализатора? ------------ в деталях: есть ли проекты реализации передатчиков для ПЛИС, где нет аппаратной поддержки? получится ли на них 500Мбит? соединение Xilinx-овского и Альтеровского IP/мегафункции будет работать? то есть если на плате ксайлинкс и альтера - можно ли передавать поток между ними? какую из Ксайлинской/Альтеровской реализации/ПЛИС лучше взять в качестве приемника? какие еще вопросы должны возникнуть :)? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Shivers 0 10 декабря, 2016 Опубликовано 10 декабря, 2016 · Жалоба Почему SOI - именно аналоговая технология? То же самое что и объемный кремний, делай что хочешь. Есть небольшой нюанс проектирования топологии (антенны), но не более того. И что за фабрика, где нет IP? Если речь о Микрон 250КНИ, то сердес должен быть. По поводу высокоскоростных PHY, основная проблема это выравнивающий буфер: поскольку в линиях передачи может гулять фаза, то приемный буфер (находится после десериалайзера) обязан эту фазу выровнять. Если сердес заменяется на что то другое - к примеру несколько LVDS впараллель, то приемный буфер все равно нужен. Впрочем, если хост и эндпоинт тактируются с одного генератора (как в pci-e, к примеру), то наверное можно обойтись и без буфера. Почитать обо всем этом можно, погуглив PCI-E Intel PIPE interface. Там это называется Elastic Buffer. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 10 декабря, 2016 Опубликовано 10 декабря, 2016 · Жалоба собственно зачем надо - сжать паралельную шину в LVDS пару, выигрыш размер чипа, и предположительно, лучше EMI А я вот задумался над применением интерфейса QuadSPI между микроконтроллером и ПЛИС. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 27 10 декабря, 2016 Опубликовано 10 декабря, 2016 · Жалоба Приветствую! ... в деталях: есть ли проекты реализации передатчиков для ПЛИС, где нет аппаратной поддержки? получится ли на них 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. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
yes 5 10 декабря, 2016 Опубликовано 10 декабря, 2016 · Жалоба спасибо, особенно за старые 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 - то есть я рассчитываю реализовать такой приемник в ПЛИС (можно ли?), а потом, возможно и в отдельном цифровом АЗИКе в чем тут ошибка? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 27 10 декабря, 2016 Опубликовано 10 декабря, 2016 · Жалоба Приветствую! ... но еще хотелось бы общих соображений, применимых к моим условиям 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. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Shivers 0 10 декабря, 2016 Опубликовано 10 декабря, 2016 · Жалоба ... >приемный буфер (находится после десериалайзера) я не понял ... Если совсем грубо, то внутри 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, а все остальное должен делать сам контроллер. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться