I3C (автобус) - Википедия - I3C (bus)

Шина I3C
Диаграмма Венна для I3C Heritage
ТипПоследовательная связь автобус
ДизайнерMIPI Альянс
Рабочая группа по датчикам
Разработано2016; 4 года назад (2016)
Горячее подключениеистинный
СигналCMOS
Сигнал данныхОткрытый сток или толкать / тянуть
Ширина2 провода [данные + часы]
Битрейт

12.5 Мбит / с (SDR, стандарт), 25Мбит / с (ГДР), 33Мбит / с (тройной),
устаревшие тарифы I²C
400 Кбит / с (FM),

Мбит / с (FM +)
ПротоколСерийный, полудуплекс

I3C (также известен как SenseWire) это Технические характеристики[1] для обеспечения связи между компьютерные чипы путем определения электрического соединения между микросхемами и используемыми шаблонами сигналов. Стандарт определяет, что электрическое соединение между микросхемами должно быть двухпроводным, общим (многоточечный ), последовательные данные автобус, один провод (SCL) используется как часы для определения времени выборки, другой провод (ПДД) используется в качестве линии данных, напряжение которой может быть измерено. Стандарт определяет протокол сигнализации, в котором несколько микросхем могут управлять связью и, таким образом, действовать как шина. владелец.

Спецификация I3C берет свое название от, использует те же электрические соединения, что и, и допускает некоторую обратную совместимость с I²C автобус, де-факто стандарт для межчиповой связи, широко используется для низкоскоростных периферийных устройств и датчиков в компьютерных системах. Стандарт I3C предназначен для сохранения некоторых Обратная совместимость с системой I²C, в частности, позволяя конструкции, в которых существующие устройства I²C могут быть подключены к шине I3C, но при этом шина может переключаться на более высокую скорость передачи данных для связи на более высоких скоростях между совместимыми устройствами I3C. Таким образом, стандарт I3C сочетает в себе преимущества простой двухпроводной архитектуры I²C с более высокими скоростями связи, характерными для более сложных шин, таких как Последовательный периферийный интерфейс (SPI).

Стандарт I3C был разработан совместными усилиями компаний, занимающихся электроникой и компьютерами, под эгидой Mobile Industry Processor Interface Alliance (MIPI Альянс ). Стандарт I3C был впервые опубликован в конце 2017 года.[2][3] хотя для доступа требуется раскрытие частной информации. Google и Intel поддержали I3C в качестве стандарта интерфейса датчика для Интернет вещей (IoT) устройства.[4]

История

Цели рабочей группы по датчикам MIPI были впервые объявлены в ноябре 2014 года на Исполнительном конгрессе MEMS в Скоттсдейле, штат Аризона.[5]

Автоматизация электронного проектирования поставщиков инструментов, включая Каденция,[6] Synopsys[7] и Сильвако[8] выпустили контроллер IP-блоки и сопутствующее программное обеспечение для проверки для реализации шины I3C в новых конструкциях интегральных схем.

В декабре 2016 г. Решетчатый полупроводник интегрировал поддержку I3C в свой новый FPGA известный как iCE40 UltraPlus.[9]

В 2017 г. Qualcomm объявил о Львиный зев 845 мобильный SOC со встроенной поддержкой мастера I3C.[10][неудачная проверка ]

В декабре 2017 года спецификация I3C 1.0 была выпущена для публичного рассмотрения.[4][11]Примерно в то же время Борис Брезильон предложил патч ядра Linux, вводящий поддержку I3C.[12]

В июне 2020 г. Renesas Electronics представила продукты I3C.[13]

Цели

Перед публичным выпуском спецификации был опубликован значительный объем общей информации о ней в виде слайдов с конференции MIPI DevCon 2016.[14] Цели этого интерфейса были основаны на опросе организаций-членов MIPI и членов MEMS Industry Group (MIG). Результаты этого опроса обнародованы.[15]

I3C V1.0

Первоначальная конструкция I3C была направлена ​​на улучшение по сравнению с I²C следующими способами:[16]

  • Двухконтактный интерфейс, расширенный по стандарту I²C. Устаревшие ведомые устройства I²C могут быть подключены к более новой шине.
  • Маломощный и компактный дизайн, предназначенный для мобильных устройств (смартфоны и Интернет вещей устройств.)
  • Внутриполосные прерывания по последовательной шине не требуют отдельных выводов. В I²C для прерываний от периферийных устройств обычно требуется дополнительный неразделяемый вывод для каждого пакета.
  • Стандартная скорость передачи данных (SDR) от 10 до 12,5 Мбит / с с использованием уровней ввода-вывода CMOS.
  • Режимы с высокой скоростью передачи данных (HDR), допускающие несколько битов за такт. Они поддерживают пропускную способность, сопоставимую с SPI при этом требуется лишь небольшая часть мощности I²C Fast Mode.[17]
  • Стандартизированный набор общих кодов команд
  • Поддержка очереди команд
  • Обнаружение и восстановление ошибок (проверка четности в режиме SDR и 5 бит CRC для режимов HDR)
  • Динамическое назначение адресов (DAA) для ведомых устройств I3C, при этом поддерживая статические адреса для устаревших устройств I²C
  • Трафик I3C невидим для устаревших устройств I²C, если они оснащены фильтрами пиков I²C, что достигается за счет времени SCl HIGH менее 50 нс.
  • Горячее соединение (некоторые устройства на шине могут включаться / выключаться во время работы)
  • Работа с несколькими мастерами с четко определенным протоколом для переключения между мастерами

Базовая спецификация I3C

Сделав стандарт I3C 1.0 общедоступным, организация впоследствии опубликовала спецификацию I3C Basic, подмножество, предназначенное для реализации организациями, не являющимися членами, в рамках RAND-Z лицензия. Базовая версия включает многие из нововведений протокола I3C 1.0, но не имеет некоторых потенциально более трудных для реализации, таких как дополнительные режимы высокой скорости передачи данных (HDR), такие как DDR. Тем не менее режим SDR по умолчанию на скорости до 12,5 Мбит / с является значительным улучшением скорости / емкости по сравнению с I²C.[18]

I3C V1.1

Эта спецификация, опубликованная в декабре 2019 года, доступна только членам MIPI.

Номенклатура

Сигнальные контакты

I3C использует те же два сигнальных контакта, что и I²C, называемые SCL (последовательные часы) и ПДД (серийные данные). Основное отличие состоит в том, что 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, он сначала увидит нарастающий фронт, поэтому будет короткий период перекрытия, когда оба управляют 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-го бита являются нечетными. бит четности при записи и флаг конца данных при чтении.

Запись может быть прекращена только мастером.

Либо ведущий, либо ведомый может завершить чтение. Подчиненное устройство устанавливает низкий уровень SDA, чтобы указать, что больше нет доступных данных; мастер отвечает, принимая SDA и генерируя СТОП или повторный ПУСК. Чтобы позволить продолжить чтение, ведомое устройство устанавливает высокий уровень SDA, в то время как SCL низкий до 9-го бита, но позволяет SDA плавать (открытый сток), пока SCL высокий. Мастер может в это время установить SDA на низкий уровень (условие повторного ПУСК), чтобы прервать чтение.

Автобусный арбитраж

В начале кадра несколько устройств могут конкурировать за использование шины, и процесс арбитража шины служит для выбора того, какое устройство получает управление линией SDA. Как в I²C, так и в I3C, арбитраж шины выполняется с помощью линии SDA в режиме открытого стока, что позволяет устройствам, передающим двоичный 0 (низкий), отменять устройства, передающие двоичный 1. Конкурирующие устройства контролируют линию SDA, управляя ею в открытом состоянии. сливной режим. Когда устройство обнаруживает низкий уровень (0 бит) в SDA при передаче высокого уровня (1 бит), оно теряет арбитраж и должно прекратить борьбу до начала следующей транзакции.

Каждая транзакция начинается с целевого адреса, и реализация отдает приоритет целевым адресам с меньшими номерами. Разница в том, что I²C не имеет ограничения на то, как долго может длиться арбитраж (в редкой, но законной ситуации, когда несколько устройств соревнуются за отправку сообщения на одно и то же устройство, конфликт не будет обнаружен до тех пор, пока не будет байта адреса). Однако I3C гарантирует, что арбитраж будет завершен не позднее конца первого байта. Это позволяет использовать двухтактные драйверы и более высокие тактовые частоты в большинстве случаев.

Это делается несколькими способами:

  • I3C поддерживает несколько мастеров, но они не симметричны; один из них является текущим мастером и отвечает за генерацию часов. Другие устройства, отправляющие сообщение по шине (внутриполосные прерывания или вторичные ведущие устройства, желающие использовать шину), должны выполнять арбитраж, используя свой собственный адрес перед отправкой любых других данных. Таким образом, никакие два законных сообщения шины не имеют одного и того же первого байта. Кроме если мастер и другое устройство одновременно обмениваются данными друг с другом.
  • I3C, как и I²C, допускает несколько сообщений для каждой транзакции, разделенных повторяющимися символами START. Арбитраж проводится для каждой транзакции, поэтому эти последующие сообщения никогда не подлежат арбитражу.
  • Большинство мастер-транзакций I3C начинаются с зарезервированного адреса 0x7E(11111102). Поскольку это имеет более низкий приоритет, чем любое устройство I3C, после того, как оно прошло арбитраж, ведущее устройство знает, что никакое другое устройство не конкурирует за шину.
  • В качестве особого случая, если устройствам I3C назначаются низкие адреса (I3C поддерживает динамическое назначение адресов, управляемое мастером), то, как только 0x7E адрес выиграл арбитраж для достаточного количества начальных битов, чтобы отличить его от любого назначенного адреса, мастер знает, что арбитраж завершен, и он может переключиться на двухтактную операцию на SDA. Если все присвоенные адреса меньше, чем 0x40, это после первого бита. Если все адреса меньше 0x60, это после второго бита и так далее.
  • В случае, описанном выше, когда текущий ведущий начинает транзакцию с адреса устройства, которое само борется за использование шины, оба успешно передают байты своего адреса. Однако каждый будет ожидать, что другой подтвердит адрес (установив низкий уровень SDA) для следующего бита подтверждения. Следовательно, ни один из них не будет, и оба будут наблюдать отсутствие признания. В этом случае сообщение не отправляется, но мастер выигрывает арбитраж: он может отправить повторный запуск, за которым следует повторная попытка, которая будет успешной.

Общие коды команд

Запись на зарезервированный адрес 0x7E используется для выполнения ряда специальных операций в I3C. Все устройства I3C должны получать и интерпретировать записи на этот адрес в дополнение к своим индивидуальным адресам.

Прежде всего, запись, состоящая только из байта адреса и отсутствия байтов данных, не влияет на ведомые устройства I3C, но может использоваться для упрощения арбитража I3C. Как описано выше, этот префикс может ускорить арбитраж (если мастер поддерживает оптимизацию переключения на двухтактный средний байт) и упрощает мастер, избегая немного сложного арбитражного случая.

Если за записью следует байт данных, этот байт кодирует «общий код команды», стандартизированную операцию I3C. Коды команд 0–0x7F широковещательные команды, адресованные всем ведомым устройствам I3C. За ними могут следовать дополнительные параметры, специфичные для команды. Коды команд 0x80–0xFE прямые команды, адресованные отдельным ведомым устройствам. За ними следует серия повторяющихся запусков и операций записи или чтения в определенные ведомые устройства.

Пока действует прямая команда, запись или чтение каждого ведомого передают параметры, специфичные для команды. Эта операция заменяет нормальный ответ ведомого устройства на сообщение I3C. За одной прямой командой может следовать несколько сообщений для каждого ведомого, каждому из которых предшествует повторный START. Этот специальный режим заканчивается в конце транзакции (символ STOP) или при следующем сообщении, адресованном 0x7E.

Некоторые коды команд существуют как в широковещательной, так и в прямой форме. Например, команды для включения или отключения внутриполосных прерываний могут быть отправлены отдельным ведомым или широковещательно рассылаются всем. Команды для получения параметров от ведомого устройства (например, команда GETHDRCAP, чтобы спросить устройство, какие режимы высокой скорости передачи данных оно поддерживает) существуют только в прямой форме.

Классы устройств

На шине I3C в режиме по умолчанию (SDR) могут поддерживаться четыре различных класса устройств:

  • Главный мастер I3C
  • I3C вторичный мастер
  • I3C ведомый
  • I²C Slave (устаревшие устройства)

Параметры высокой скорости передачи данных (HDR)

Каждая транзакция шины I3C начинается в режиме SDR, но ведущее устройство I3C может выдать широковещательную команду CCC «Enter HDR», которая сообщает всем ведомым устройствам I3C, что транзакция будет продолжена в указанном режиме HDR. Подчиненные устройства I3C, которые не поддерживают HDR, могут игнорировать трафик шины до тех пор, пока не увидят определенную последовательность «HDR exit», которая сообщает им, что пора снова прослушать шину. (Мастер знает, какие подчиненные устройства поддерживают HDR, поэтому никогда не будет пытаться использовать HDR для связи с подчиненным устройством, которое его не поддерживает.)

Некоторые режимы HDR также совместимы с устройствами I²C. если устройства I²C имеют на линии SCL импульсный фильтр 50 нс; то есть они будут игнорировать высокий уровень на линии SCL, который длится менее 50 нс. Это требуется спецификацией I²C, но реализуется не повсеместно, и не все реализации игнорируют часто повторяющиеся всплески,[19] поэтому необходимо проверить совместимость I3C HDR. Совместимые режимы HDR используют импульсы SCL длительностью не более 45 нс, поэтому устройства I²C игнорируют их.

В режиме HDR-DDR используется двойная скорость передачи данных сигнализация с тактовой частотой 12,5 МГц для достижения скорости исходных данных 25 Мбит / с (эффективная 20 Мбит / с). Это требует изменения линии SDA при высоком уровне SCK, что является нарушением протокола I²C, но устройства I²C не будут видеть краткий импульс высокого уровня на SCL и, следовательно, не заметят нарушения.

В режимах HDR-TSP и HDR-TSL используется один из трех символов в качестве троичные цифры (триц):

  1. Переход как SDA, так и SCL (полученные с интервалом 12,8 нс),
  2. Только переход SCL, или
  3. Только переход ПДД.

Два байта плюс два бита четности (всего 18 бит) разбиты на шесть 3-битных триплетов, и каждый триплет кодируется как два трита. При передаче со скоростью 25 Мбит / с достигается эффективная скорость передачи данных 33,3 Мбит / с.

Пара trit, состоящая только из двух переходов SDA, не используется для кодирования данных, а вместо этого используется для кадрирования, чтобы отметить конец последовательности HDR. Хотя это ограничивает максимальное время между переходами SCL тремя временами trit, это превышает ограничение в 50 нс для устаревших устройств I²C, поэтому режим HDR-TSP (тернарный символ, чистый) может использоваться только на шине без устаревших устройств I²C.

Чтобы разрешить шины, включающие устройства I²C (с фильтром пиков), необходимо использовать режим HDR-TSL (тройной символ, устаревший). Это поддерживает совместимость I²C за счет начинка с тростью: после любого нарастающего фронта на SCL, если следующее трение нет 0, 1 trit (переход только на SCL) вставляется отправителем и игнорируется получателем. Это гарантирует, что SCL никогда не будет высоким более одного раза.

Функции I²C не поддерживаются в I3C

  • Подтягивающие резисторы предоставляются мастером I3C. Внешние подтягивающие резисторы больше не нужны.
  • Clock Stretching - ожидается, что устройства будут достаточно быстрыми, чтобы работать со скоростью шины. Мастер I3C является единственным источником синхронизации.
  • Расширенные (10-битные) адреса I²C. Все устройства на шине I3C адресуются по 7-битному адресу. Собственные устройства I3C имеют уникальный 48-битный адрес, который используется только при динамическом назначении адресов.

Рекомендации

  1. ^ «MIPI I3C и I3C Basic». mipi.org.
  2. ^ «Альянс MIPI открывает доступ к спецификации интерфейса датчика MIPI I3C».
  3. ^ «Альянс MIPI выпускает спецификацию интерфейса датчика MIPI I3C». www.evaluationengineering.com.
  4. ^ а б «MIPI продвигает рынок сенсорного интерфейса I3C». 14 декабря 2017.
  5. ^ http://www.eetimes.com/document.asp?doc_id=1324598
  6. ^ http://ip.cadence.com/uploads/1075/Cadence_Brochure_MIPI_I3C_Slave_Controller-pdf
  7. ^ "VC Verification IP для MIPI I3C". www.synopsys.com.
  8. ^ «Семейство MIPI I3C для приложений датчиков и Интернета вещей» (PDF). silvaco.com.
  9. ^ «Решетка дает iCE40 больше мощности, ввода-вывода и памяти». 12 декабря 2016.
  10. ^ "Характеристики SDM845".
  11. ^ «MIPI I3C». mipi.org.
  12. ^ "LKML: Борис Брезильон: [PATCH v2 0/7] Добавить подсистему I3C". lkml.org.
  13. ^ «Renesas представляет новые продукты для расширения шины I3C». 6 июня 2020.
  14. ^ Inc, MIPI Alliance. «Сессии датчиков MIPI I3C на MIPI DevCon2016». resources.mipi.org.
  15. ^ http://mipi.org/sites/default/files/MIPI%20+%20MIG%20Member%20Sensor%20Interface%20Survey%20Results%20final.pdf
  16. ^ MIPI Alliance (23 сентября 2016 г.). «MIPI DevCon 2016: Руководство разработчика по реализации MIPI I3C».
  17. ^ MIPI Alliance (23 сентября 2016 г.). «MIPI DevCon 2016: режимы высокой скорости передачи данных MIPI I3C».
  18. ^ Group, Кен Фуст, председатель рабочей группы MIPI I3C и специальной рабочей группы MIPI I3C. «Альянс MIPI представляет новую базовую спецификацию I3C». resources.mipi.org. Получено 2020-04-06.
  19. ^ "8-кбит серийный I2Спецификация EEPROM шины C " (PDF). STMicroelectronics. Октябрь 2017. с. 27. DocID 023924 Ред. 6. В архиве (PDF) из оригинала на 18.10.2019. Получено 19 ноября 2019.

внешняя ссылка