I3C (автобус)
Тип | Последовательная коммуникационная шина | ||
---|---|---|---|
История производства | |||
Дизайнер |
МИПИ Альянс Рабочая группа по датчикам | ||
Разработанный | 2016 | ||
Производитель | корпорация Интел; Решетка полупроводника | ||
Горячее подключение | Да | ||
Электрический | |||
Сигнал | КМОП | ||
Данные | |||
Сигнал данных | Открытый дренаж или Push/Pull | ||
Ширина | 2 провода [данные + часы] | ||
Битрейт |
12,5 Мбит/с (SDR, стандарт),
25 Мбит/с (DDR),
33 Мбит/с (троичная),
| ||
Протокол | Последовательный , полудуплексный |
I3C , также известный как SenseWire , [1] [2] это спецификация [3] обеспечить связь между компьютерными чипами путем определения электрического соединения между чипами и используемых шаблонов сигнализации. Сокращение от «Улучшенная межинтегральная схема». [4] стандарт определяет электрическое соединение между чипами как двухпроводное, совместно используемое ( многоточечное ), последовательную шину данных , однопроводное ( SCL
) используется как часы для определения времени выборки, другой провод ( SDA
) используется в качестве линии передачи данных, напряжение которой можно измерять. Стандарт определяет протокол сигнализации, в котором несколько микросхем могут управлять связью и, таким образом, действовать как контроллер шины.
Спецификация I3C получила свое название, использует те же электрические соединения и обеспечивает некоторую обратную совместимость с шиной I²C , фактическим стандартом межчиповой связи, широко используемым для низкоскоростных периферийных устройств и датчиков в компьютерных системах. Стандарт I3C разработан для сохранения некоторой обратной совместимости с системой I²C, в частности, позволяя создавать конструкции, в которых существующие устройства I²C могут быть подключены к шине I3C, но при этом шина может переключаться на более высокую скорость передачи данных для связи на более высоких скоростях между совместимыми I3C. устройства. Таким образом, стандарт I3C сочетает в себе преимущества простой двухпроводной архитектуры I²C с более высокими скоростями передачи данных, характерными для более сложных шин, таких как последовательный периферийный интерфейс (SPI).
Стандарт I3C был разработан в результате совместных усилий компаний, связанных с электроникой и компьютерами, под эгидой Альянса интерфейсов процессоров мобильной индустрии ( MIPI Alliance ). Стандарт I3C был впервые представлен публике в конце 2017 года. [5] [6] хотя доступ требует раскрытия частной информации. Google и Intel поддержали I3C в качестве стандарта сенсорного интерфейса для устройств Интернета вещей (IoT). [7]
История
[ редактировать ]Цели деятельности рабочей группы по датчикам MIPI были впервые объявлены в ноябре 2014 года на Исполнительном конгрессе MEMS в Скоттсдейле, штат Аризона. [8]
Поставщики средств автоматизации электронного проектирования , включая Cadence , [9] Синопсис [10] и Сильвако [11] выпустила IP-блоки контроллеров и соответствующее программное обеспечение для проверки реализации шины I3C в новых конструкциях интегральных схем.
В декабре 2016 года компания Lattice Semiconductor интегрировала поддержку I3C в свою новую FPGA, известную как iCE40 UltraPlus. [12]
В 2017 году Qualcomm анонсировала Snapdragon 845 мобильный SOC со встроенной поддержкой контроллера I3C. [13] [ не удалось пройти проверку ]
В декабре 2017 года спецификация I3C 1.0 была выпущена на публичное рассмотрение. [7] [14] Примерно в то же время Борис Брезиллон предложил патч ядра Linux, вводящий поддержку I3C. [15]
В 2021 году в DDR5 появился I3C.
В июне 2022 года Renesas Electronics представила первые интеллектуальные коммутаторы I3C. [16]
Цели
[ редактировать ]До публичного выпуска спецификации значительный объем общей информации о ней был опубликован в виде слайдов с конференции MIPI DevCon 2016. [17] Цели этого интерфейса были основаны на опросе организаций-членов MIPI и членов Промышленной группы MEMS (MIG). Результаты этого опроса были обнародованы. [18]
I3C v1.0
[ редактировать ]Первоначальная конструкция I3C стремилась улучшить I²C следующими способами: [19]
- Двухконтактный интерфейс, являющийся расширенной версией стандарта I²C. Устаревшие целевые устройства I²C можно подключить к новой шине.
- Маломощный и компактный дизайн, предназначенный для мобильных устройств (смартфонов и устройств Интернета вещей ).
- Внутриполосные прерывания по последовательной шине вместо необходимости использования отдельных контактов. В I²C для прерываний от периферийных устройств обычно требуется дополнительный общий вывод на корпус.
- Пропускная способность стандартной скорости передачи данных (SDR) от 10 до 12,5 Мбит/с с использованием уровней ввода-вывода CMOS.
- Режимы высокой скорости передачи данных (HDR), позволяющие использовать несколько бит за такт. Они поддерживают пропускную способность, сравнимую с SPI , требуя при этом лишь часть мощности I²C в быстром режиме. [20]
- Стандартизированный набор общих кодов команд.
- Поддержка очереди команд
- Обнаружение и восстановление ошибок (проверка четности в режиме SDR и 5-битная CRC для режимов HDR)
- Динамическое назначение адресов (DAA) для целей I3C с поддержкой статических адресов для устаревших устройств I²C.
- Трафик I3C невидим для устаревших устройств I²C, если они оснащены пиковыми фильтрами I²C, что достигается за счет времени SCL HIGH менее 50 нс.
- Горячее соединение (некоторые устройства на шине могут включаться/выключаться во время работы)
- Работа с несколькими контроллерами с четко определенным протоколом переключения между контроллерами
Базовая спецификация I3C
[ редактировать ]Сделав стандарт I3C 1.0 общедоступным, организация впоследствии опубликовала базовую спецификацию I3C, подмножество, предназначенное для реализации организациями, не являющимися членами, по лицензии RAND-Z . I3C Basic обеспечивает бесплатную реализацию I3C и предназначен для организаций, которые могут рассматривать членство в MIPI как препятствие для внедрения. Базовая версия включает в себя множество нововведений протокола I3C 1.0, но в ней отсутствуют некоторые потенциально более сложные в реализации, такие как дополнительные режимы высокой скорости передачи данных (HDR), такие как DDR. Тем не менее, режим SDR по умолчанию со скоростью до 12,5 Мбит/с является значительным улучшением скорости/емкости по сравнению с I²C. [21]
I3C v1.1
[ редактировать ]Эта спецификация, опубликованная в декабре 2019 года, доступна только членам MIPI.
I3C v1.1.1
[ редактировать ]В нем, опубликованном в июне 2021 года, устаревшие термины «главный/ведомый» и теперь используются обновленные нормативные термины «контроллер/цель». Технические определения таких устройств и их роль на шине I3C остаются неизменными.
Номенклатура
[ редактировать ]Сигнальные контакты
[ редактировать ]I3C использует те же два сигнальных контакта, что и I²C, называемые SCL (последовательные часы) и SDA (последовательные данные). Основное отличие состоит в том, что I²C всегда использует их как выходы с открытым стоком , поэтому его скорость ограничивается результирующим медленным временем нарастания сигнала . I3C использует режим с открытым стоком, когда это необходимо для совместимости, но, когда это возможно, переключается на двухтактные выходы и включает изменения протокола, чтобы сделать это возможным чаще, чем в I²C.
- SCL — это обычный цифровой тактовый сигнал , управляемый двухтактным выходом контроллера шины тока во время передачи данных. ( Растяжение тактовой частоты , часто используемая функция I²C, не поддерживается.) В транзакциях с участием целевых устройств I²C этот тактовый сигнал обычно имеет рабочий цикл примерно 50%, но при обмене данными с известными целями I3C контроллер шины может переключиться на более высокую частоту и/или изменить рабочий цикл, чтобы период высокого уровня SCL был ограничен максимум 40 нс.
- SDA передает поток последовательных данных, который может управляться контроллером или целью, но управляется со скоростью, определяемой сигналом SCL контроллера. Для совместимости с протоколом I²C каждая транзакция начинается с SDA, работающего как выход с открытым стоком, что ограничивает скорость передачи. Для сообщений, адресованных цели I3C, режим драйвера SDA переключается на двухтактный после первых нескольких бит транзакции, что позволяет дополнительно увеличить тактовую частоту до 12,5 МГц. Эта функция средней скорости называется режимом стандартной скорости передачи данных (SDR).
Обычно SDA изменяется сразу после спадающего фронта SCL, а результирующее значение получается по следующему нарастающему фронту. Когда контроллер передает SDA цели, он также делает это по заднему фронту SCL. Однако, когда цель возвращает управление SDA контроллеру (например, после подтверждения своего адреса перед записью), она освобождает SDA по нарастающему фронту SCL, и контроллер отвечает за удержание полученного значения в течение всего времени SCL. высокий. (Поскольку контроллер управляет SCL, он первым увидит нарастающий фронт, поэтому будет короткий период перекрытия, когда оба управляют SDA, но, поскольку они оба управляют одним и тем же значением, конфликтов на шине не происходит.)
Обрамление
[ редактировать ]Все коммуникации в I²C и I3C требуют кадрирования для синхронизации. В пределах кадра изменения на линии SDA всегда должны происходить, пока SCL находится в низком состоянии, чтобы SDA можно было считать стабильным при переходе SCL с низкого на высокий уровень. Нарушения этого общего правила используются для кадрирования (по крайней мере, в устаревших и стандартных режимах скорости передачи данных).
Между кадрами данных контроллер шины поддерживает высокий уровень SCL, фактически останавливая тактовый сигнал, а драйверы SDA находятся в состоянии с высоким импедансом, что позволяет подтягивающему резистору поднять его до высокого уровня. Переход SDA от высокого к низкому уровню при высоком уровне SCL известен как символ START и сигнализирует о начале нового кадра данных. Переход от низкого уровня к высокому на SDA, когда SCL находится на высоком уровне, является символом STOP, завершающим кадр данных.
START без предшествующего STOP, называемый «повторяющимся START», может использоваться для завершения одного сообщения и начала другого в рамках одной транзакции шины.
В I²C символ START обычно генерируется контроллером шины, но в I3C даже целевые устройства могут понижать уровень SDA, чтобы указать, что они хотят запустить кадр. Это используется для реализации некоторых расширенных функций I3C, таких как внутриполосные прерывания, поддержка нескольких контроллеров и горячие соединения. После запуска контроллер шины перезапускает часы, управляя SCL, и начинает процесс арбитража шины.
Девятый бит
[ редактировать ]Как и I²C, I3C использует 9 тактов для отправки каждого 8-битного байта. Однако 9-й цикл используется по-другому. I²C использует последний цикл для подтверждения, отправленного в направлении, противоположном первым 8 битам. I3C работает одинаково для первого (адресного) байта каждого сообщения и для сообщений, совместимых с I²C, но при обмене данными с целями I3C байты сообщения после первого используют 9-й бит в качестве бита нечетной четности при записи, а конечный бит Флаг -of-data при чтении.
Запись может быть прекращена только контроллером.
Либо контроллер, либо цель могут прекратить чтение. Цель устанавливает низкое значение SDA, чтобы указать, что данных больше нет; контроллер реагирует, принимая на себя управление SDA и генерируя СТОП или повторный ПУСК. Чтобы продолжить чтение, целевой объект устанавливает высокий уровень SDA, пока уровень SCL находится на низком уровне перед 9-м битом, но позволяет SDA плавать (с открытым стоком), пока уровень SCL находится на высоком уровне. В это время контроллер может установить низкий уровень SDA (повторяющееся условие START), чтобы прервать чтение.
Автобусный арбитраж
[ редактировать ]В начале кадра несколько устройств могут конкурировать за использование шины, и процесс арбитража шины служит для выбора того, какое устройство получит контроль над линией SDA. Как в I²C, так и в I3C арбитраж шины выполняется с использованием линии SDA в режиме с открытым стоком, что позволяет устройствам, передающим двоичный 0 (низкий уровень), блокировать устройства, передающие двоичную 1. Конкурирующие устройства контролируют линию SDA, управляя ею в открытом состоянии. режим слива. Всякий раз, когда устройство обнаруживает низкий уровень (0 бит) на SDA при передаче высокого уровня (1 бит), оно теряет арбитраж и должно прекратить конкуренцию до начала следующей транзакции.
Каждая транзакция начинается с целевого адреса, и реализация отдает приоритет целевым адресам с меньшим номером. Разница в том, что I²C не имеет ограничений на продолжительность арбитража (в редкой, но законной ситуации, когда несколько устройств конкурируют за отправку сообщения на одно и то же устройство, конфликт не будет обнаружен до тех пор, пока не будет обнаружен адресный байт). Однако I3C гарантирует, что арбитраж завершится не позднее окончания первого байта. Это позволяет большую часть времени использовать двухтактные драйверы и более высокие тактовые частоты.
Это делается несколькими способами:
- I3C поддерживает несколько контроллеров, но они не симметричны; один из них является контроллером тока и отвечает за генерацию часов. Другие устройства, отправляющие сообщение по шине (внутриполосные прерывания или вторичные контроллеры, желающие использовать шину), должны использовать свой собственный адрес перед отправкой любых других данных. Таким образом, никакие два допустимых сообщения шины не используют один и тот же первый байт, за исключением случаев, когда контроллер и другое устройство одновременно обмениваются данными друг с другом.
- I3C, как и I²C, допускает несколько сообщений для каждой транзакции, разделенных символами «повторяющегося START». Арбитраж осуществляется для каждой транзакции, поэтому последующие сообщения никогда не подлежат арбитражу.
- Большинство транзакций контроллера I3C начинаются с зарезервированного адреса.
0x7E
(1111110 2 ). Поскольку оно имеет более низкий приоритет, чем любое устройство I3C, после прохождения арбитража контроллер знает, что ни одно другое устройство не претендует на шину. - В частном случае, если устройствам I3C назначены низкие адреса (I3C поддерживает динамическое назначение адресов, управляемое контроллером), то как только
0x7E
Если адрес выиграл арбитраж на достаточное количество ведущих битов, чтобы отличить его от любого назначенного адреса, контроллер знает, что арбитраж завершен, и может переключиться на двухтактный режим SDA. Если все присвоенные адреса меньше0x40
, это после первого бита. Если все адреса меньше0x60
, это после второго бита и так далее. - В описанном выше случае, когда контроллер тока начинает транзакцию с адреса устройства, которое само претендует на использование шины, оба устройства успешно передадут свои адресные байты. Однако каждый из них ожидает, что другой подтвердит адрес (переведя SDA в низкий уровень) для следующего бита подтверждения. Следовательно, ни один из них не будет, и оба будут наблюдать отсутствие признания. В этом случае сообщение не отправляется, но контроллер выигрывает арбитраж: он может отправить повторный запуск, за которым последует повторная попытка, которая будет успешной.
Общие коды команд
[ редактировать ]Запись, адресованная на зарезервированный адрес 0x7E
используется для выполнения ряда специальных операций в I3C. Все устройства I3C должны получать и интерпретировать записи по этому адресу в дополнение к своим индивидуальным адресам.
Прежде всего, запись, состоящая только из байта адреса и без байтов данных, не влияет на цели I3C, но может использоваться для упрощения арбитража I3C. Как описано выше, этот префикс может ускорить арбитраж (если контроллер поддерживает оптимизацию переключения на двухтактный средний байт), а также упрощает контроллер, избегая немного сложного арбитражного случая.
Если за записью следует байт данных, этот байт кодирует «общий командный код», стандартизированную операцию I3C. Коды команд 0–0x7F
— это широковещательные команды, адресованные всем целям I3C. За ними могут следовать дополнительные параметры, специфичные для команды. Коды команд 0x80–0xFE
представляют собой прямые команды, адресованные отдельным целям. За ними следует серия повторяющихся START и запись или чтение для определенных целей.
Пока действует прямая команда, запись или чтение для каждой цели передает параметры, специфичные для команды. Эта операция заменяет обычный ответ цели на сообщение I3C. За одной прямой командой может следовать несколько сообщений для каждой цели, каждому из которых предшествует повторяющийся СТАРТ. Этот специальный режим заканчивается в конце транзакции (символ STOP) или при следующем сообщении, адресованном 0x7E
.
Некоторые коды команд существуют как в широковещательной, так и в прямой форме. Например, команды включения или отключения внутриполосных прерываний могут быть отправлены отдельным целям или широковещательны для всех. Команды для получения параметров от цели (например, команда GETHDRCAP, позволяющая узнать у устройства, какие режимы высокой скорости передачи данных оно поддерживает) существуют только в прямой форме.
Классы устройств
[ редактировать ]На шине I3C в режиме по умолчанию (SDR) могут поддерживаться четыре различных класса устройств:
- Главный контроллер I3C
- Вторичный контроллер I3C
- Цель I3C
- Цель I²C (устаревшие устройства)
Опции с высокой скоростью передачи данных (HDR)
[ редактировать ]Каждая транзакция шины I3C начинается в режиме SDR, но контроллер I3C может выдать широковещательную команду CCC «Ввести HDR», которая сообщает всем целям I3C, что транзакция будет продолжена в указанном режиме HDR. Цели I3C, которые не поддерживают HDR, могут затем игнорировать трафик шины до тех пор, пока не увидят определенную последовательность «выход HDR», которая сообщает им, что пришло время снова прослушать шину. (Контроллер знает, какие цели поддерживают HDR, поэтому никогда не будет пытаться использовать HDR для связи с целью, которая его не поддерживает.)
Некоторые режимы HDR также совместимы с устройствами I²C, если устройства I²C имеют пиковый фильтр 50 нс на линии SCL; то есть они будут игнорировать высокий уровень на линии SCL, который длится менее 50 нс. Это требуется спецификацией I²C, но не реализовано повсеместно, и не все реализации игнорируют часто повторяющиеся выбросы. [22] поэтому необходимо проверить совместимость I3C HDR. Совместимые режимы HDR используют импульсы SCL длительностью не более 45 нс, поэтому устройства I²C будут их игнорировать.
В режиме HDR-DDR используется сигнализация с двойной скоростью передачи данных с тактовой частотой 12,5 МГц для достижения скорости необработанных данных 25 Мбит/с (эффективная 20 Мбит/с). Это требует изменения линии SDA, пока SCK имеет высокий уровень, что является нарушением протокола I²C, но устройства I²C не увидят короткий импульс высокого уровня на SCL и, следовательно, не заметят нарушения.
В режимах HDR-TSP и HDR-TSL в качестве троичных цифр (тритов) используется один из трех символов:
- Переход как SDA, так и SCL (полученный с разницей в 12,8 нс),
- Переход только SCL или
- Переход только ПДД.
Два байта плюс два бита четности (всего 18 бит) разбиваются на шесть 3-битных тройки, и каждая тройка кодируется как две триты. При отправке со скоростью 25 Мбит/с достигается эффективная скорость передачи данных 33,3 Мбит/с.
Пара тритов, состоящая только из двух переходов SDA, не используется для кодирования данных, а вместо этого используется для кадрирования, чтобы отметить конец последовательности HDR. Хотя это ограничивает максимальное время между переходами SCL до трех тритов, это превышает предел в 50 нс для устаревших устройств I²C, поэтому режим HDR-TSP (троичный символ, чистый) можно использовать только на шине без устаревших устройств I²C.
Чтобы разрешить шины, включающие устройства I²C (с пиковым фильтром), необходимо использовать режим HDR-TSL (троичный символ, устаревший). Это обеспечивает совместимость I²C за счет заполнения тритов : после любого нарастающего фронта на SCL, если следующий трит не равен 0, отправитель вставляет 1 трит (переход только на SCL) и игнорирует получателя. Это гарантирует, что SCL никогда не будет высоким более чем в течение одного трита.
Функции I²C, не поддерживаемые в I3C
[ редактировать ]- Подтягивающие резисторы предоставляются контроллером I3C. Внешние подтягивающие резисторы больше не нужны.
- Растяжение тактовой частоты – ожидается, что устройства будут достаточно быстрыми, чтобы работать на скорости шины. Контроллер I3C является единственным источником синхронизации.
- Расширенные (10-битные) адреса I²C. Все устройства на шине I3C адресуются по 7-битному адресу. Собственные устройства I3C имеют уникальный 48-битный адрес, который используется только во время динамического назначения адресов.
Ссылки
[ редактировать ]- ^ Коул, Бернард (5 ноября 2014 г.). «MIPI приближается к ратификации расширения SenseWire/I3C для I2C/SPI» . Новости. Embedded.com . Архивировано из оригинала 22 марта 2024 г. Проверено 22 марта 2024 г.
- ^ Джонсон, Р. Колин (11 декабря 2014 г.). «Интерфейс MEMS/сенсор I3C не работает» . Проектирование промышленного контроля. ЭЭ Таймс . Архивировано из оригинала 22 марта 2024 г. Проверено 22 марта 2024 г.
- ^ «MIPI I3C и I3C Basic» . mipi.org . 06.01.2017.
- ^ «Часто задаваемые вопросы по I3C и I3C Basic | MIPI» . www.mipi.org . Проверено 29 августа 2022 г.
- ^ «Альянс MIPI открывает доступ к своей спецификации интерфейса датчика MIPI I3C» . 14 декабря 2017 г.
- ^ «Альянс MIPI выпускает спецификацию интерфейса датчика MIPI I3C» . www.evaluationengineering.com .
- ^ Перейти обратно: а б «MIPI продвигает на рынок сенсорный интерфейс I3C» . 14 декабря 2017 г.
- ^ «Интерфейс MEMS/сенсор I3C не работает» . 2014-11-12.
- ^ «ИП | Каденция» . Проверено 11 августа 2023 г.
- ^ «IP-адрес проверки VC для MIPI I3C» . www.synopsys.com .
- ^ «Семейство MIPI I3C для датчиков и приложений Интернета вещей» (PDF) . silvaco.com . Архивировано из оригинала (PDF) 30 августа 2019 г. Проверено 30 августа 2019 г.
- ^ «Решетка дает iCE40 больше мощности, ввода-вывода и памяти» . 12 декабря 2016 г.
- ^ «SoC Qualcomm SDM845 | Интегрированный процессор приложений LTE на базе Snapdragon 845 | Qualcomm» . www.qualcomm.com . Проверено 11 августа 2023 г.
- ^ «МИПИ I3C» . mipi.org . 06.01.2017.
- ^ «LKML: Борис Брезиллон: [ИСПРАВЛЕНИЕ v2 0/7] Добавьте подсистему I3C» . lkml.org .
- ^ «Renesas представляет первое в отрасли семейство интеллектуальных коммутаторов I3C для серверов нового поколения, систем хранения данных и систем связи | Renesas» . www.renesas.com . Проверено 11 августа 2023 г.
- ^ «Сессии датчиков MIPI I3C на MIPI DevCon2016» . resources.mipi.org . МИПИ Альянс Инк.
- ^ http://mipi.org/sites/default/files/MIPI%20+%20MIG%20Member%20Sensor%20Interface%20Survey%20Results%20final.pdf [ мертвая ссылка ]
- ^ «MIPI DevCon 2016: Руководство разработчика по реализации MIPI I3C» . Ютуб . МИПИ Альянс . 23 сентября 2016 г.
- ^ «MIPI DevCon 2016: Режимы высокой скорости передачи данных MIPI I3C» . МИПИ Альянс . 23 сентября 2016 г.
- ^ Фауст, Кен. «Альянс MIPI представляет новую базовую спецификацию I3C» . resources.mipi.org . Проверено 6 апреля 2020 г.
- ^ «8-Кбитный серийный номер I 2 Технический паспорт EEPROM шины C» (PDF) . STMicroelectronics. Октябрь 2017. стр. 27 (23-24). DocID 023924 Rev 6. Архивировано (PDF) из оригинала 18 октября 2019 г. Проверено 19 ноября 2019 г.
Дальнейшее чтение
[ редактировать ]Внешние ссылки
[ редактировать ]- Спецификация I3C — MIPI