реклама на сайте
подробности

 
 
> "Открытый" последовательный интерфейс, Найти готовый или рискнуть и взяться за разработку?
Alex Zorg
сообщение Jan 22 2006, 20:52
Сообщение #1





Группа: Новичок
Сообщений: 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".... $-)

Не критикуйте за "Пионерство".
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Alex Zorg
сообщение Jan 23 2006, 15:30
Сообщение #2





Группа: Новичок
Сообщений: 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
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 2nd August 2025 - 15:15
Рейтинг@Mail.ru


Страница сгенерированна за 0.01388 секунд с 7
ELECTRONIX ©2004-2016