Данная информация предназначена только только для IT-специалистов по системной интеграции модулей БИОСОФТ-М. (см. Руководства пользователя к программным продуктам)
Это описание принципа работы и формата данных последовательного протокола передачи байтов между Unimod контроллерами называемого далее FED.
Существующие контроллерные модули могут соединятся по SPI с дополнительными конгломератами концентраторов Unimod-FS и Unimod-HS с расширенным набором портов и их независимой конфигурацией. Потоки разной природы (команды, конфигурация, прикладные сигналы) в разных направлениях поступая по одному каналу передачи в сильно перемешанном виде кодируются FED протоколом.
Протокол оптимизирован в первую очередь для надежнойэффективной параллельной двунаправленной передачи данных по нескольким независимым логическим каналам разной природы.
Важные приоритеты
простота кода С и его однозначного документированиявозможность максимально эффективной реализации на C51минимум памяти на запоминание контекста передаваемого пакета (3-4 байта)минимум задержек между пакетами и на переключение между портами
Для передачи байтно-ориентированных данных по последовательному двунаправленному каналу данных, в том числе по SPI.
Требует четкой разбивки на байты протоколом более низкого уровня.Не требует дополнительной маркировки границ слов или иных управляющих битов.Не требует ответа и подтверждения от получателя о приеме данных.
FED не оптимален для пакетной передачи непрерывного потока данных одного канала в условиях гарантированного отсутствия сбоев и рассинхронизаций между абонентами если требуется задействовать пропускную способность на максимум. Не предусматривает CRC и ECC полагается на низкую верояность сбоев и детекцию оных по значениям управляющих октетов.Количество идентифицируемых виртуальных портов до 15 шт. (не ограничивает общее количество портов которые может иметь вся сеть а только количество портов которые можно различить в данном канале связи)
(1п)
По доступному каналу прокачивается более одного байта на каждый полезный байт порта. Каждый передаваемый пакет битов делится на полезную зону и управляющий хидер. Для параллельной высокоскоростной передачи прикладных (RAW) данных в качестве управляющих хидеров используются зарезервированные битовые коды F, E и D. (отсюда название протокола). Наиболее эффективная логика энкодера и декодера:
FSM, the finite state machine:
-- sending a byte
--- State=F: if FIFO not empty: pop a byte, send port index FP, go state=E
--- State=E: send low, go state=D
--- State=D: send high, go state=F
-- receiving a byte
--- State=F: if FP detected save P, go state=E
--- State=E: if EL detected save low, go state=D (else go state F)
--- State=D: if DH detected get low, FIFO[P] += byte, always go state F
Для передачи следующего байта для того же самого порта не обязательно повторять хидер. Пока порт не изменился можно для экономии трафика и оптимизации ликвидности инвестиций сразу слать LH следующего байта.
Посылатель обязан повторять значение FP не реже чем через каждые 100 байт (для скорейшего восстановления при временных сбоях передачи в канале).
(1п)
Вся управляющая и статусная информация от/к портам должна кодироваться в рамках конфигурационных пакетов
Конфигурационные данные так же как и полезные ориентированы на один выбранный порт и кодируются схожим образом.
Специальные коды, зарезервированные для команд конфигурирования:
P - port index (external port index local to a board)L - low config bitsH - high 4 config bits
Логика передачи конфига похожа на передачу данных но имеет следующие важные отличия:
1) Конфигурационные данные в отличие от полезных RAW данных объединяются в пакеты определенного формата. Пакеты выравнены на границу байта. Интерпретация пакета и применение конфигурации производится получателем только после получения всего пакета полностью и верификации корректности всех сигнатур.
2) Нельзя перемешивать пакеты для разных портов. Это отличается от логики для FP появление которого никак не разграничивает RAW данные после их интерпретации.
3) Точный формат конфигурационного пакета данным стандартом не оговаривается и может меняться в будущих версиях Unimod. см Формат конфигурационных команд портам Unimod
4) Конфигурационные байты C-B-A могут произвольно перемешиваться с передаваемыми байтами даннх F-E-D. Это важно учитывать проектируя парсер! Парсер FED должен иметь абсолютно независимые текущие состояния, номера портов и счетчики для канала передачи RAW данных и для канала передачи конфигурации.
5) Парсер не поддерживающий команды конфигурации может просто игнорировать все входящие байты с конфигурационными управляющими хидерами.
Номера виртуальных портов указываемые в FP и CP могут менятся от 0x0 до 0xe и значение 0xf зарезервирована для потока глобальных данных предназначенных для всего получателя вцелом (глобальная конфигурация контроллера и т.п.) Контроллер, реализующий один порт должен использовать 0x0 для этого порта, резервируюя 0xf для глобальной конфигурации. Номера портов в общении со слевом являются локальными для данного слейва.
Note: поддержка обмена глобальными данными по зарезервированному порту не реализвана в текущей версии Unimod так как не востребована.
Для заполнения пробелов между данными (полезно для SPI) используется байт 0x10. В будущем планируется ввести переполняющийся счетчик в младшем октете.
Паддинг может следовать в любом месте и в любом количестве между байтами любого типа и должен игнорироваться при интерпретации данных.
Возможно будет введен управляющий октет для однобайтного кода задающего слейву его номер.
Полученный протокол позволяет новым модулям успешно работать в роли юнимодов безотносительно к аппаратной платформе их прошивки безгранично расширяя коммуникационную емкость аппаратуры без необходимости доработки существующих прошивок снижая совокупную стоимость владения и повышая почасовую отдачу от инвестиций ассимптотически приводя ликвидность системных капиталовложений к экономическому эквилибриуму при быстроменяющейся коньюнктуре в индустриальном масштабе времени.
Иначе говоря User:Libr (и не только он) может собирвать по SPI данные Атмелом с портов модулей на Сайлабсе и потенциально версии Сайлабса могут использовать модули на Атмеле в любых комбинациях.