Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

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

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

История [ править ]

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

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

В декабре 2016 года компания Lattice Semiconductor интегрировала поддержку I3C в свою новую FPGA, известную как iCE40 UltraPlus. [9]

В 2017 году Qualcomm анонсировала мобильный SOC Snapdragon 845 со встроенной поддержкой ведущего устройства 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 (последовательные часы) и 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, завершающим фрейм данных.

СТАРТ без предшествующего ОСТАНОВА, называемый «повторный СТАРТ», может использоваться для завершения одного сообщения и начала другого в рамках одной транзакции на шине.

В 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 на низкий уровень (условие повторного ПУСК), чтобы прервать чтение.

Автобусный арбитраж [ править ]

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

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

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

  • I3C поддерживает несколько мастеров, но они не симметричны; один из них является текущим мастером и отвечает за генерацию часов. Другие устройства, отправляющие сообщение по шине (внутриполосные прерывания или вторичные ведущие устройства, желающие использовать шину), должны выполнять арбитраж, используя свой собственный адрес, перед отправкой любых других данных. Таким образом, никакие два законных сообщения шины не используют один и тот же первый байт, за исключением случаев, когда ведущее устройство и другое устройство одновременно обмениваются данными друг с другом.
  • I3C, как и I²C, допускает несколько сообщений для каждой транзакции, разделенных символами «повторный СТАРТ». Арбитраж проводится для каждой транзакции, поэтому эти последующие сообщения никогда не подлежат арбитражу.
  • Большинство основных транзакций I3C начинаются с зарезервированного адреса 0x7E(1111110 2 ). Поскольку это имеет более низкий приоритет, чем любое устройство 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 имеют пиковый фильтр 50 нс на линии SCL; то есть они будут игнорировать высокий уровень на линии 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 (переход только по 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 Alliance открывает доступ к спецификации интерфейса датчика MIPI I3C» .
  3. ^ "MIPI Alliance выпускает спецификацию интерфейса датчика MIPI I3C" . www.evaluationengineering.com .
  4. ^ a b «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 . Проверено 6 апреля 2020 .
  19. ^ "Технические данные EEPROM шины последовательного интерфейса I 2 C 8 Кбит " (PDF) . STMicroelectronics. Октябрь 2017. с. 27. DocID 023924 Ред. 6. Архивировано (PDF) из оригинала 18.10.2019 . Проверено 19 ноября 2019 .

Внешние ссылки [ править ]

  • MIPI I3C