|
"Открытый" последовательный интерфейс, Найти готовый или рискнуть и взяться за разработку? |
|
|
|
Jan 22 2006, 20:52
|
Группа: Новичок
Сообщений: 10
Регистрация: 15-01-06
Пользователь №: 13 195

|
Существует много стандартный последовательных интерфесов от SPI до Fibre Channel. Но почему-то не получается ничего подобрать. Вот требования:
1) Реализуемость на ПЛИС FPGA (с ценой до 20$) для скоростей порядка 10MBit/s 2) Произвольный выбор реализации уровня "проводов" от банального TTL, до LVDS, потенциальный код с двумя уровнями. 3) Хорошее (большое) отношение пропускной способности к требуемой полосе пропускания канала. Возможность применения гальванической развязки через трансформатор (т.е. код без постоянной составляющей). К примеру, соблазнительно выглядит кодирование 4B/5B, 8B/9B или 8B/10B. 4) Произвольный выбор скорости от 1MBit/s до потолка, например, 100MBit/s. 5) "Дальность" (как и скорость) зависит от реализации. 6) Ассинхронный. Чтобы была возможность использовать "один провод" и при большой дальности между абонентами не было критичности к задержке между шиной данных и синронизацией. 7) Передача пачками байтов (или слов), контроль ошибок (исправление необязательно). 8) Соединение точка-точка (как RS232), возможность расширения, например, соединение нескольких устройств по кольцу или через коммутатор (Switch). 9) Наращиваемость.
Зачем это нужно? Хотелось бы иметь собсвенные наработки на VHDL/Verilog и применять их где только возможно в силу универсальности.
Вот некоторая критика сущесвующих протоколов:
RS-232 и его братья. Плюсы: простота, любая скорость. Минусы: нельзя вырезать постоянную составлющую ибо допустимо 9 одинаковых бит подряд и даже больше в паузах, эквивалентое кодирование 8B/10B было бы эффективнее, к примеру.
ARINC-429 (используется в авионике, кодирование с возвратом к нулю). Плюсы: используется в области моей деятельности, прост. Минусы: трехуровневое кодирование (а хочется двухуровневое). широкий спектр, нельзя вырезать постоянную составляющую, низкие скорости (менее 100KBit/s).
MIL-1553 (т.н. Манчестер-2, так же "военный" и авиационный интерфейс). Плюсы: нет постоянной составляющей, это стандарт ГОСТ. Минусы: не самое эффективное кодирование, потому широкий спектр, не очень большая скорость (<1MBit/s), "тяжелость" стандартной обвязки.
Fibre Channel. Плюсы: Очень быстрый, то, что надо. Минусы: Реализуем только с помощью специализированных дорогих ИМС (на ПЛИС, полагаю, сложно), слишком сложный и узкоспециализированный, для простого межплатного обмена не подойдет.
PCI-Express. Минусы: слишком сложный, только для межплатного взаимодейсвия, на ПЛИС не реализуешь.
SPI. Минусы: синхронный, соединить две деревни по витой паре типа "полевка" невозможно.
Если ничего подобного не подвернется, возникла идея о реализации приемопередатчика типа 4B/5B или 8B/9B на VHDL/Verilog для ПЛИС. Если получится что-либо "достойное" результат можно "выложить" в сети и получится что-то типа "Open Serial Bus".... $-)
Не критикуйте за "Пионерство".
|
|
|
|
|
 |
Ответов
|
Jan 23 2006, 15:30
|
Группа: Новичок
Сообщений: 10
Регистрация: 15-01-06
Пользователь №: 13 195

|
"open source 8b10b encoder/decoder на Verilog" - я так понял это лишь комбинаторная схема без триггеров (дишефратор) 8b->10b и 10b->8b по схеме IBM запатентованной в 1983 году в США. Интересно, это значит что все кто использует 8B/10B "должны" теперь IBM? По крайней мере в США? Или если использовать другую схему кодирования/декодирования, то IBM тут ни при чем? Интересно было бы найти оптимальную схему не просто дешифратора, а приемника и передатчика. Пока не нашел, если не найду еще через "пол года", займусь разработкой "jast for fun".
В Интернете действительно много разрозненный статей на тему кодирования типа 4B/5B которое используется для Fast Ethernet и 8B/10B которое во всех скоростный интерфейсах типа Fibre Channet, 1GBit Ethernet, PCI-Express... Но вот готовые исходники на HDL (даже много) попадаются только для UART (RS-232).
Полагаю 5B/6B не очень удобен, ведь все-равно нужно передавать байты, слова, и прочее кратное 8 бит. А вот 8B/9B выглядит неплохо, если посмотреть на биноминальное распределение числа единиц и нулей (если будет интерес позже поясню, чего насчитал), к тому же вроде бы нет технологии, которая уже запатентована.
Задача кодирования и оптимального приема достаточно сложная, потому и такой интерес.
Вот примерно то, что хотелось бы (подобно HDLC): 1) Передача идет пакетами, начало пакета начинается со слова, которое не используется для кодирования данных и имеет хорошие автокорреляционные свойства, например код Баркер-7, 11 или 13. 2) При использовании выбранного кодирования можно реализовать фазовую автоподсройку для снятия ограничения на длину пакета при заданной погрешности расхождения генераторов приемника и передатчика. 3) прилепить контрольную сумму в конец. 4) Паузы можно чем-то забить для контроля линии 5) Как адресовать несколько устройств без коллизий, это второй вопрос ну и т.д. и т.п.. и все такое...
Неужели нет реализаций чего-дибо подобного с отрытым кодом или какой-либо стандарт, который хорошо описан с точки зрения математики реализации оптимального приемника? Конечно на первый взгляд фазовая подстройка и вычисления корреляции в ПЛИС за 10$ не влезет, но это и обсуждается...
Сообщение отредактировал Alex Zorg - Jan 23 2006, 15:53
|
|
|
|
Сообщений в этой теме
Alex Zorg "Открытый" последовательный интерфейс Jan 22 2006, 20:52 Evgeny_CD HDLC?
http://www.interfacebus.com/Design_HDLC.html... Jan 22 2006, 21:14 iosifk Цитата(Alex Zorg @ Jan 22 2006, 23:52) Су... Jan 23 2006, 06:04 Alex Zorg Evgeny_CD, спасибо, почитаем.
iosifk, сейчас у ме... Jan 23 2006, 10:18 iosifk Цитата(Alex Zorg @ Jan 23 2006, 13:18) Ev... Jan 23 2006, 11:54 Alex Zorg P.S. Evgeny_CD, кажется FM/MFM/RLL это хорошие про... Jan 23 2006, 11:11 Evgeny_CD Цитата(Alex Zorg @ Jan 23 2006, 14:11) P.... Jan 23 2006, 14:55 Alex Zorg нiosifk, нет... радиолюбительством я называю разра... Jan 23 2006, 14:35 ASN Alex Zorg
Я уже приводил пример приёмопередатчика... Jan 23 2006, 20:50 yornik Мне кажется, уже начальная установка "Зачем э... Jan 23 2006, 22:30 Alex Zorg ASN
На соседнюю ветку уже попал, как-то "... Jan 24 2006, 16:26
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|