Шина управления системой ( SMBus или SMB ) — это простая двухпроводная шина с одним концом для облегченной связи. Чаще всего она встречается в чипсетах материнских плат компьютеров для связи с источником питания для инструкций ВКЛ/ВЫКЛ. Точная функциональность и аппаратные интерфейсы различаются в зависимости от поставщиков.
Он получен из I²C для связи с устройствами с низкой пропускной способностью на материнской плате , особенно чипами, связанными с питанием, такими как подсистема аккумуляторной батареи ноутбука (см. Smart Battery System и ACPI ). Другие устройства могут включать внешние главные хосты, датчик температуры, датчики вентилятора или напряжения, переключатели крышки, тактовый генератор и RGB-освещение . Дополнительные платы Peripheral Component Interconnect (PCI) могут подключаться к сегменту SMBus.
Устройство может предоставлять информацию о производителе, указывать свою модель/номер детали, сохранять свое состояние для события приостановки, сообщать о различных типах ошибок, принимать параметры управления, возвращать статус по SMBus и опрашивать регистры чипсета. SMBus, как правило, не настраивается или недоступен пользователю. Хотя устройства SMBus обычно не могут идентифицировать свою функциональность, новая коалиция PMBus расширила SMBus, включив соглашения, позволяющие это.
SMBus был определен Intel и Duracell в 1994 году. [1] Он переносит тактовую частоту, данные и инструкции и основан на протоколе последовательной шины Philips I²C . Диапазон его тактовой частоты составляет от 10 кГц до 100 кГц. (PMBus расширяет его до 400 кГц.) Его уровни напряжения и тайминги определены более строго, чем у I²C, но устройства, принадлежащие к этим двум системам, часто успешно смешиваются на одной шине. [ необходима цитата ]
SMBus используется в качестве межсоединения в нескольких стандартах управления платформами, включая: Alert Standard Format (ASF), Desktop and mobile Architecture for System Hardware (DASH), Intelligent Platform Management Interface (IPMI).
SMBus используется для доступа к информации о конфигурации DRAM как часть обнаружения последовательного присутствия (SPD). SMBus развился в широкий спектр вариантов использования перечисления систем, отличных от управления питанием.
Хотя SMBus является производным от I²C, между спецификациями двух шин существует несколько существенных различий в области электротехники, синхронизации, протоколов и режимов работы. [2] [3] [4] [5]
При смешивании устройств спецификация I²C определяет входные уровни как 30% и 70% от напряжения питания V DD , [4] : 9, которое может быть 5 В, 3,3 В или каким-либо другим значением. Вместо того, чтобы соотносить входные уровни шины с V DD , SMBus определяет их как фиксированные на уровне 0,8 и 2,1 В. SMBus 2.0 поддерживает V DD в диапазоне от 3 до 5 В. SMBus 3.0 поддерживает V DD в диапазоне от 1,8 до 5 В и V IH = 1,35 В. [3]
SMBus 2.0 определяет класс «Высокая мощность», включающий ток потребления 4 мА, который не может быть передан микросхемами I²C, если подтягивающий резистор не рассчитан на уровни шины I²C.
Устройства NXP имеют более высокий набор электрических характеристик мощности, чем SMBus 1.0. Основное отличие заключается в возможности стока тока с V OL = 0,4 В.
Устройства SMBus «высокой мощности» и устройства шины I²C будут работать вместе, если подтягивающий резистор рассчитан на ток 3 мА.
Частота SMBus определяется от 10 до 100 кГц, тогда как I²C может быть 0–100 кГц, 0–400 кГц, 0–1 МГц и 0–3,4 МГц в зависимости от режима. Это означает, что шина I²C, работающая на частоте менее 10 кГц, не будет совместима с SMBus, поскольку устройства SMBus могут выйти из строя по тайм-ауту. Однако многие устройства SMBus будут поддерживать более низкие частоты.
SMBus 3.0 добавляет скорости шины 400 кГц и 1 МГц.
Существуют следующие различия в использовании сигнализации шины NACK: В I²C подчиненному приемнику разрешено не подтверждать подчиненный адрес, если, например, он не может получить его, поскольку выполняет какую-то задачу в реальном времени. SMBus требует, чтобы устройства всегда подтверждали свой собственный адрес, как механизм для обнаружения наличия съемного устройства на шине (аккумулятор, док-станция и т. д.)
I²C указывает, что ведомое устройство, хотя оно и может подтвердить свой собственный адрес, может решить, некоторое время спустя в передаче, что оно не может больше получать байты данных. I²C указывает, что устройство может указать на это, генерируя неподтверждение в первом последующем байте.
Помимо указания на занятость подчиненного устройства, SMBus также использует механизм NACK для указания на прием недопустимой команды или данных. Поскольку такое состояние может возникнуть на последнем байте передачи, требуется, чтобы устройства SMBus имели возможность генерировать неподтверждение после передачи каждого байта и до завершения транзакции. Это важно, поскольку SMBus не предоставляет никакой другой сигнализации повторной отправки. Это различие в использовании сигнализации NACK имеет последствия для конкретной реализации порта SMBus, особенно в устройствах, которые обрабатывают критически важные системные данные, такие как хост SMBus и компоненты SBS.
Каждая транзакция сообщения на SMBus следует формату одного из определенных протоколов SMBus. Протоколы SMBus являются подмножеством форматов передачи данных, определенных в спецификациях I²C. Устройства I²C, к которым можно получить доступ через один из протоколов SMBus, совместимы со спецификациями SMBus. Устройства I²C, не соответствующие этим протоколам, не могут быть доступны стандартными методами, определенными в спецификациях SMBus и Advanced Configuration and Power Interface (ACPI).
SMBus использует аппаратное обеспечение I²C и адресацию аппаратного обеспечения I²C, но добавляет программное обеспечение второго уровня для построения специальных систем. В частности, его спецификации включают протокол разрешения адресов, который может выполнять динамическое распределение адресов. Динамическая реконфигурация аппаратного и программного обеспечения позволяет шинным устройствам быть «горячо подключенными» и использоваться немедленно, без перезапуска системы. Устройства распознаются автоматически и им назначаются уникальные адреса. Это преимущество приводит к пользовательскому интерфейсу plug-and-play. В обоих этих протоколах проводится очень полезное различие между системным хостом и всеми другими устройствами в системе, которые могут иметь имена и функции ведущих или ведомых устройств.
SMBus имеет функцию тайм-аута, которая сбрасывает устройства, если связь занимает слишком много времени. Это объясняет минимальную тактовую частоту 10 кГц для предотвращения блокировки шины. I²C может быть шиной «DC», что означает, что ведомое устройство растягивает тактовый генератор при выполнении некоторой процедуры, пока ведущее устройство обращается к нему. Это уведомит ведущее устройство о том, что ведомое устройство занято, но не хочет терять связь. Ведомое устройство разрешит продолжение после завершения своей задачи. В протоколе шины I²C нет ограничений на продолжительность этой задержки, тогда как для системы SMBus она будет ограничена 35 мс. Протокол SMBus просто предполагает, что если что-то занимает слишком много времени, то это означает, что на шине возникла проблема, и что все устройства должны сбросить настройки, чтобы очистить этот режим. В этом случае ведомым устройствам не разрешается удерживать тактовый генератор на низком уровне слишком долго.
SMBus 1.1 и более поздние версии определяют необязательную проверку ошибок пакета ( PEC ). В этом режиме байт PEC (код ошибки пакета) добавляется в конце каждой транзакции. Байт вычисляется как контрольная сумма CRC-8 , вычисляемая по всему сообщению, включая адрес и бит чтения/записи. Используемый полином — x 8 +x 2 +x+1 (алгоритм CRC-8- ATM HEC , инициализированный нулем). [6] [7] [8]
SMBus имеет дополнительный необязательный сигнал общего прерывания , называемый SMBALERT#, который может использоваться ведомыми устройствами, чтобы сообщить хосту о необходимости опросить его ведомых устройств о событиях, представляющих интерес. SMBus также определяет менее распространенный «протокол уведомления хоста», предоставляющий похожие уведомления, но передающий больше данных и работающий на основе режима I²C с несколькими ведущими устройствами.
Устройства SMBus поддерживаются FreeBSD , OpenBSD , NetBSD , DragonFly BSD , Linux , Windows 98 и более поздними версиями, а также Windows CE .