Jump to content

    
Sign in to follow this  
Reffum2

LVDS протокол для передачи на 50-100 МБ/с

Recommended Posts

Требуется передавать данные от одного устройства на несколько других. В оба направления. Передатчик и приемник - ПЛИС. Для последовательной передачи достаточно скорости 50-100 Мб/с. Устройства связаны кабелем или шлейфом и расстояние между ними до 0,5 м.

В качестве физического протокола я выбрал LVDS. У меня возникли такие вопросы:

1. Можно ли передавать данные по обычному SPI. Т.е. использовать 3 линии SCK, MOSI, MISO(через LVDS)? Или это слишком высокая скорость?

2. Можно ли использовать синхронный или асинхронный UART на 50-100 Мб/с?

3. Какие еще варианты посоветуете?

 

Я работал с SPI только на скоростях до 25 Мб/с и только через КМОП. Разумеется, есть быстрые последовательные протоколы(RapidIO, PCI-E, Aurora и др). Но в спецификациях на них указано что они разработаны для скоростей в 10 раз выше нужной мне, и для их использования нужна будет более дорогая ПЛИС на стороне приемника. И отлаживать их дольше.

 

Еще хочу задать вопрос по протоколам. Мне известны протоколы для низких скоростей: RS-4.., CAN, SPI, I2C и др. И известны высокоскоростные: PCI-E, Ethernet. Существуют ли решения для скоростей именно 25-~ 200 Мб/с?

МБ/с - это мегабит в секунду.

Edited by Олег Гаврильченко

Share this post


Link to post
Share on other sites
Требуется передавать данные от одного устройства на несколько других. В оба направления. Передатчик и приемник - ПЛИС. Для последовательной передачи достаточно скорости 50-100 МБ/с. Устройства

100 МБ/с - это 100 мегабит в секунду или мегабайт?

Даже если это всего лишь 100 мбит/с то это точно не уарт . Может быть SPI . Для работы Aurora на стороне приёмника нужна такая же плис как и на стороне передатчика, правда там не lvds .

А ещё есть SerDes .

Share this post


Link to post
Share on other sites
Требуется передавать данные от одного устройства на несколько других. В оба направления. Передатчик и приемник - ПЛИС. Для последовательной передачи достаточно скорости 50-100 Мб/с. Устройства связаны кабелем или шлейфом и расстояние между ними до 0,5 м.

В качестве физического протокола я выбрал LVDS. У меня возникли такие вопросы:

1. Можно ли передавать данные по обычному SPI. Т.е. использовать 3 линии SCK, MOSI, MISO(через LVDS)? Или это слишком высокая скорость?

да можно.

 

2. Можно ли использовать синхронный или асинхронный UART на 50-100 Мб/с?

uart до 50 не разогнать. без извращений

 

3. Какие еще варианты посоветуете?

по простому - double или quad spi.

 

Еще хочу задать вопрос по протоколам. Мне известны протоколы для низких скоростей: RS-4.., CAN, SPI, I2C и др. И известны высокоскоростные: PCI-E, Ethernet. Существуют ли решения для скоростей именно 25-~ 200 Мб/с?

МБ/с - это мегабит в секунду.

Ethernet 100 - как раз оно. Возможно идеальный путь, если места на плате не жалко под phy и пинов на плисе. Или SpaceWire. Или перепиливать UART. Или в личку.

Share this post


Link to post
Share on other sites

Манчестер можно попробовать

Share this post


Link to post
Share on other sites

Можно понизить частоту SPI, используя больше линий данных. Есть же Quad SPI, но линий данных можно и больше сделать.

Share this post


Link to post
Share on other sites

SPI стандартный работать не будет на 100 МГц. На 50 может быть. Проблема в обратной по отношению к клоку передаче данных. Можно сделать модифицированный SPI с двумя линиями клоков - в одну и другую строну, тогда проблем не будет. Синхронный UART тоже можно использовать (это, правда, уже не UART, но в смысле клок и данные со старт-стопом). Только с той же оговоркой - в каждую строну свой клок.

Share this post


Link to post
Share on other sites
SPI стандартный работать не будет на 100 МГц. На 50 может быть. Проблема в обратной по отношению к клоку передаче данных.

 

SPI-flash вполне себе работают на 100+ МГц. Да, для больших частот предлагается калибровать фазу приемного клока. Но на 100 МГц у меня сейчас просто FPGA грузится без всяких ухищрений.

Share this post


Link to post
Share on other sites
SPI-flash вполне себе работают на 100+ МГц. Да, для больших частот предлагается калибровать фазу приемного клока. Но на 100 МГц у меня сейчас просто FPGA грузится без всяких ухищрений.

Завялено требование в 0.5 м, а SPI-flash обычно существенно ближе.

Share this post


Link to post
Share on other sites
uart до 50 не разогнать. без извращений

делали на 128 МБит/с, отлично работает без каких-либо извращений. Но при условии, что это действительно UART, а не какой-то синхронный мутант. Единственное ограничение -- на приёмной стороне должна быть возможность работать на тактах 2x.

Share this post


Link to post
Share on other sites
Завялено требование в 0.5 м, а SPI-flash обычно существенно ближе.

 

Да, согласен. 0.5 м это уже 7 нс задержки туда-обратно...

Share this post


Link to post
Share on other sites
Да, согласен. 0.5 м это уже 7 нс задержки туда-обратно...

если клок только у мастера, тогда да, проблема. если данные в обе стороны со своими клоками, управляющими сигналами и т.д. идут, то +/- одинаковые задержки будут, но в таком случае даже lvds наловит столько помех, что ему хватит (тем более, что проводами качественный lvds не сделать).

а UART -- линия туда, линия обратно. обе "молчаливые". для отсеивания "вдруг чего словится" -- можно добавить контрольную сумму.

Share this post


Link to post
Share on other sites
а UART -- линия туда, линия обратно. обе "молчаливые". для отсеивания "вдруг чего словится" -- можно добавить контрольную сумму.

..мой опыт говорит - не хочешь проблем , веди синхронные интерфейсы.

Share this post


Link to post
Share on other sites
..мой опыт говорит - не хочешь проблем , веди синхронные интерфейсы.

не вижу никаких проблем кроме той, что нужен клок в 2 раза выше того, на котором сформирована последовательность бит. если сделать всё грамотно, то как раз наоборот: меньше сигналов -- меньше проблем.

Share this post


Link to post
Share on other sites
.. в таком случае даже lvds наловит столько помех, что ему хватит (тем более, что проводами качественный lvds не сделать)..

Напомню про Ultra-640_SCSI:

Частота шины: 160 МГц DDR

Пропускная способность: 640 Мбайт/сек

Максимальная длина кабеля: 10 м

Share this post


Link to post
Share on other sites
Завялено требование в 0.5 м, а SPI-flash обычно существенно ближе.

Так говорят, что физический уровень lvds а это согласование и никакой отражухи. :)

А SPI обычно CMOS3.3 или меньшего напряжения.

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this