Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Сериальные протоколы
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
maailmankaikkeus
Здравствуй, господа знатоки!

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

Дано:
1) FLEX10KA
2) Расстояние между ПЛИС: не более 50 см
3) Связь по двум линиям: эрикс, тэикс (каждая - LVDS)

Надо:
1) Скорость не менее 1 Мбод, лучше всего - 5 Мбод smile.gif

P.S. В принципе, [а]синхронность работы приемопередатчика не имеет значения. Однако, можно ли применять синхронные протоколы, такие, как например, HDLC, если имеется ОБЩАЯ синхронизация всех плат от единого такта (очень стабильного порядка 100 МГц)?
WEST128
Можно, если есть уверенность в том, что длина пути клока от источника до каждой микросхемы одинакова (на ваших частотах разница меньше 1-2 см). Если же это не так, то можно воспользоваться сдвигом фазы PLL (если есть, с вашими микросхемами не работал).
maailmankaikkeus
Цитата(WEST128 @ Sep 23 2008, 15:35) *
Можно, если есть уверенность в том, что длина пути клока от источника до каждой микросхемы одинакова (на ваших частотах разница меньше 1-2 см). Если же это не так, то можно воспользоваться сдвигом фазы PLL (если есть, с вашими микросхемами не работал).


К сожалению, когда придумали камень FLEX, такой вещи как PLL еще не придумали smile.gif
Не думаю, что несколько сантиметров будут играть существенную роль на нескольких мегагерцах.

Какие еще подобные протоколы существуют, которые можно реализовать в камне?!
sazh
Цитата(maailmankaikkeus @ Sep 23 2008, 12:18) *
Дано:
1) FLEX10KA
2) Расстояние между ПЛИС: не более 50 см
3) Связь по двум линиям: эрикс, тэикс (каждая - LVDS)

Надо:
1) Скорость не менее 1 Мбод, лучше всего - 5 Мбод smile.gif


У Вас есть приемники передатчики LVDS на два сигнала RX, TX. (У старых флексов таких буферов нет)
Ну что тут можно кроме асинхронного придумать типа старт - данные - стоп.
maailmankaikkeus
Цитата(sazh @ Sep 23 2008, 17:55) *
У Вас есть приемники передатчики LVDS на два сигнала RX, TX. (У старых флексов таких буферов нет)
Ну что тут можно кроме асинхронного придумать типа старт - данные - стоп.


А может, можно smile.gif
Вдруг есть какой-нибудь opencore типа синхронного HDLC на opencores.org (c которым разбираюсь). Зачем зря ручками писать такие сложные вещи? smile.gif Вдруг кто-нибудь знает еще что-нибудь?
Ну даже пусть если асинхронный старый-добрый УАРТ взять, существуют ли их high speed (более чем 1Мбод) модификации?
MrYuran
Есть такая замечательная штука - маньчестер называется. (M-II).
Самосинхронизируется, реализация - проще пареной репы.
А уж на него вешайте чё угодно.
Postoroniy_V
Цитата(maailmankaikkeus @ Sep 24 2008, 11:41) *
А может, можно smile.gif
Вдруг есть какой-нибудь opencore типа синхронного HDLC на opencores.org (c которым разбираюсь). Зачем зря ручками писать такие сложные вещи? smile.gif Вдруг кто-нибудь знает еще что-нибудь?
Ну даже пусть если асинхронный старый-добрый УАРТ взять, существуют ли их high speed (более чем 1Мбод) модификации?

ну видимо стоит смотреть в сторону
http://en.wikipedia.org/wiki/Differential_...hester_encoding

MrYuran опередил smile.gif
sazh
Цитата(maailmankaikkeus @ Sep 24 2008, 06:41) *
А может, можно smile.gif
Вдруг есть какой-нибудь opencore типа синхронного HDLC на opencores.org (c которым разбираюсь). Зачем зря ручками писать такие сложные вещи? smile.gif Вдруг кто-нибудь знает еще что-нибудь?
Ну даже пусть если асинхронный старый-добрый УАРТ взять, существуют ли их high speed (более чем 1Мбод) модификации?


Значит HDLC - это легко, а УАРТ сложно. И причем тут high speed на частоте 5 мГц. Это уж от драйверов приемника передатчика зависит. RS -232. RS -429
Манчестер - дорогое удовольствие. Там принципиально нужно два ЦИФРОВЫХ сигнала, преобразованных драйвером из линии, для качественного выделения синхроимпульса (искаженный манчестер). И пропускная способность канала должна быть удвоенной относительно необходимой.
Гораздо проще каналы SpaceWire (Там данные сопровождаются стробом. Фактически тот же манчестер но на несущей). Посмотрите документ Альтеры an.332 pdf
The purpose of this reference design is to demonstrate that Altera
Stratix™ and Cyclone™ devices are suitable in performance to
implement link-port interfaces to Analog Devices DSPs.
А вообще по идее сначала выбирают необходимый протокол, а затем реализуют, а не наоброт.
Если добавить к линии данных еще хотя бы линию клока и линию строба данных, так вообще пара строчек описания.
maailmankaikkeus
Спасибо за линки!

Цитата(sazh @ Sep 24 2008, 14:08) *
А вообще по идее сначала выбирают необходимый протокол, а затем реализуют, а не наоброт.


Истинная правда, но то ли руки из жопы, то ли пушок еще не сошел, не знаю smile.gif Взрослеем, однако

Цитата(sazh @ Sep 24 2008, 14:08) *
Если добавить к линии данных еще хотя бы линию клока и линию строба данных, так вообще пара строчек описания.


Дык нету! Есть только по одному туда и сюда.


Манчестер, в принципе, при наличиии LVDS, можно себе повзолить.
Однако, проблема даже не столько в синхронизации, а в создании контроллера передачи данных сетевого уровня (по двум линиям) с фрэймингом, CRC, FIFO, обранужением ошибок, повторной передачей и пр. вкусностями, который бы работал не через жопу. А то год назад пробовал сделать подобную обвязку на UART. Кое-как оно завелось на 115200 и то с клоком не выше 5 МГц и тучей глюков. Например, если добавляю строчку типа "wire НИКОГДА_НЕИСПОЛЬЗУЕМЫЙ_В_ПРОЕКТЕ_ПРОВОД" и оно уже не работает. Ибо писать код надо правильно. Не умею. Поэтому хочется скачать чего-нибудь готовое и работающее, особенно если кто-то уже юзал.
sazh
Цитата(maailmankaikkeus @ Sep 24 2008, 11:57) *
Спасибо за линки!
Истинная правда, но то ли руки из жопы, то ли пушок еще не сошел, не знаю smile.gif Взрослеем, однако
Дык нету! Есть только по одному туда и сюда.
Манчестер, в принципе, при наличиии LVDS, можно себе повзолить.
Однако, проблема даже не столько в синхронизации, а в создании контроллера передачи данных сетевого уровня (по двум линиям) с фрэймингом, CRC, FIFO, обранужением ошибок, повторной передачей и пр. вкусностями, который бы работал не через жопу. А то год назад пробовал сделать подобную обвязку на UART. Кое-как оно завелось на 115200 и то с клоком не выше 5 МГц и тучей глюков. Например, если добавляю строчку типа "wire НИКОГДА_НЕИСПОЛЬЗУЕМЫЙ_В_ПРОЕКТЕ_ПРОВОД" и оно уже не работает. Ибо писать код надо правильно. Не умею. Поэтому хочется скачать чего-нибудь готовое и работающее, особенно если кто-то уже юзал.


И это все на устаревшей серии, которая то и ресурсов для такого не имеет.
Это Вам надо в раздел интерфейсов конференции.
Если UART не написали, то и все Выше перечисленное под вопросом.

Вот выкладывал UART. Может поможет. (Частоту любую можно поставить)
http://electronix.ru/forum/index.php?showt...mp;#entry425957
AndruB
Мы для подобных случаев используем I2C подобный протокол, а в качестве носителя драйвера RS485.
Хотя можно подобрать и посовременней.
Splice
Цитата(maailmankaikkeus @ Sep 23 2008, 14:09) *
К сожалению, когда придумали камень FLEX, такой вещи как PLL еще не придумали smile.gif
Не думаю, что несколько сантиметров будут играть существенную роль на нескольких мегагерцах.

Какие еще подобные протоколы существуют, которые можно реализовать в камне?!

FLEX10KE есть с PLL, на конце буковка 'x' smile.gif
Мы применяем связки FLEX10KE->MAX9112---->MAX9159->FLEX10KE (LVDS)
Работает отлично, протокол свой(подобный MIL-STD-1553), частота 66МГц. laughing.gif
Также имели дело с читым MIL-STD-1553, модуль алгоритма полностью в плис APEX, физика на микросхемах HOLT IC.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.