System Management Bus

System Management Bus (zkráceně SMBus nebo SMB) je jednoduchá dvouvodičová sběrnice vyvinutá za účelem snadné komunikace. Nejčastěji ji můžeme nalézt na základních deskách počítače pro komunikaci se zdrojem napájení instrukcí ON/OFF.

Je odvozena ze sběrnice I²C pro komunikaci na základní desce se zařízením s malou šířkou pásma, a to zejména s čipy souvisejícími s napájením. V notebooku je to například subsystém dobíjení baterie (viz Smart Battery data). Jiná zařízení mohou zahrnovat teplotní, ventilátorová nebo napěťová čidla a čipy hodin. K SMBus segmentu se mohou připojit PCI karty.

Zařízení může poskytnout informace o výrobci, uvést typ modelu/číslo dílu, uložit svůj stav a pozastavit událost, hlásit různé typy chyb, přijímat regulační parametry a návratový stav. SMBus není obecně uživatelsky konfigurovatelné nebo přístupné. Ačkoli u SMBus zařízení obvykle nelze identifikovat jejich funkci, nová PMBus rozšířila SMBus o tuto možnost.

SMBus byla definována společností Intel v roce 1995. Je založena na I²C protokolu sériové sběrnice firmy Philips a přinesla hodiny, data a instrukce. Její frekvenční rozsah je 10 kHz až 100 kHz (PMBus rozšiřuje až na 400 kHz). Její úrovně napětí a časování jsou přísněji definována než u I²C, ale zařízení, které patří do obou systémů jsou často přiřazována do jedné skupiny sběrnic.

SMBus se používá jako propojení v několika normách platformového managementu včetně ASF, DASH a IPMI.

Spolupráce SMBus/I²C editovat

I když je SMBus odvozen od I²C, je zde několik hlavních rozdílů mezi specifikací obou sběrnic v oblastech napájení, časování, protokolů a provozních režimů.[1][2][3]

Elektrická část editovat

Vstupní napětí (VIL a VIH) editovat

Při spojování zařízení I²C nastavuje VDD na 5,0 V ±10% a stanoví tak vstupní úrovně na 1,5 a 3,0 V. Místo vstupních úrovní vztahujících se k VDD, SMBus musí být stanovena na 0,8 a 2,1 V. Tato specifikace SMBus umožňuje sběrnici implementace s VDD rozmezím 3 až 5 V.

Sink Current (IOL) editovat

SMBus má „High Power“ verze 2.0, která obsahuje 4 mA „sink current“, který nemůže pohánět I²C čipy, ledaže je pull-up odpor dimenzován na I²C úrovně. NXP zařízení mají vyšší výkonnostní sadu elektrických charakteristik než SMBus 1.0. Hlavní rozdíl je proudová kapacita s VOL = 0,4 V.

  • SMBus nízký výkon = 350 uA
  • SMBus vysoký výkon = 4 mA
  • I²C sběrnice = 3 mA

SMBus „high power“ přístroje a I²C zařízení budou pracovat společně, pokud pull-up odpor je navržena pro 3 mA.

Frekvence (FMAX a FMIN) editovat

SMBus hodiny jsou definovány na 10–100 kHz, zatímco I²C může být 0–100 kHz, 0–400 kHz, 0–1 MHz a 0–3,4 MHz, v závislosti na režimu. To znamená, že když I²C sběrnice běží na méně než 10 kHz nebude SMBus kompatibilní, protože SMBus zařízením může vypršet časový limit. Mnohá SMBus zařízení však budou podporovat nižší frekvence.

Časování editovat

  • SMBus definuje nízký časový limit hodin, TTIMEOUT 35 ms. I²C nestanoví žádnou časový limit
  • SMBus stanoví TLOW: SEXT jako souhrnný nízko rozšířený čas hodin pro slave. I²C nemá podobnou specifikaci.
  • SMBus stanoví TLOW: MEXT jako souhrnný nízko rozšířený čas hodin pro master. I²C opět nemá podobnou specifikaci.
  • SMBus definuje čas jak vzestupu tak pádu sběrnicových signálů. I²C nemá.
  • Specifikace časového limitu SMBus nebrání I²C zařízením spolupracovat spolehlivě na SMBus. Je povinností projektanta, aby zajistily, že I²C zařízení nebude v rozporu s parametry časování sběrnice.

Protokoly editovat

Použití ACK a NACK editovat

K dispozici jsou následující rozdíly v použití NACK sběrnicové signalizace: V I²C, slave přijímač nemá právo uznat slave adresy, pokud například adresu nelze přijmout z důvodů provádění nějakého dotazu v reálném čase. SMBus vyžaduje aby zařízení potvrdilo svou vlastní adresu vždy, jako mechanismus k odhalování přítomnosti přenosných zařízení na sběrnici (baterie, dokovací stanice, atd.). I²C určuje, že slave, i když uznává svou vlastní adresu, se může rozhodnout o nějaký čas později, že dál neobdrží žádné datové bajty. I²C určuje, že zařízení předchozí situaci indikuje tím, že generuje chybu na následujícím prvním bajtu. Kromě označení obsazených slave zařízení, SMBus také využívá NACK k označení příjmu neplatných příkazů nebo dat. Protože takový stav může nastat na posledním bajtu převodu, je nutné, aby SMBus zařízení měly schopnost generovat chyby po převodu každého bajtu a před dokončením transakce (to je důležité, protože SMBus neposkytuje žádnou jinou opětovnou signalizaci). Tento rozdíl v použití NACK signalizace má vliv na konkrétní implementaci SMBus portů, a to zejména v zařízeních, která zpracovávají kritické systémové údaje jako SMBus hosta a SBS součásti.

SMBus protokoly editovat

Každá zpráva transakce na SMBus má formát jednoho z definovaných SMBus protokolů. SMBus protokoly jsou podmnožinou formátů pro přenos dat definovaných v I²C specifikacích. I²C zařízení, ke kterým lze přistupovat prostřednictvím jednoho z SMBus protokolů, jsou kompatibilní s SMBus specifikací. K I²C zařízením, které se nedrží těchto protokolů nelze přistupovat standardními způsoby, jaké jsou definovány v SMBus a ACPI specifikacích.

Řešení adresových protokolů editovat

SMBus používá I²C hardware a hardwarové adresování I²C, ale přidává software druhé úrovně pro stavbu speciálních systémů. Z části specifikace zahrnují Address Resolution Protocol, který umožňuje dynamickou alokaci adres. Dynamická přenastavení hardwaru a softwaru umožňuje zařízením na sběrnici „hot-plugged“ a použít ihned, bez restartování systému. Zařízení jsou rozpoznány automaticky a jsou jim přiřazeny unikátní adresy. To je výhodné zejména pří zapojení plug-and-play uživatelského rozhraní. V obou těchto protokolech je velmi výhodný, protože rozlišuje mezi host systémem a všemi ostatními zařízeními v systému, které mohou mít jména a funkce master nebo slave.

Funkce Time-out editovat

SMBus má funkci time-out, která resetuje zařízení, pokud komunikace trvá příliš dlouho. To vysvětluje minimální taktovací frekvenci 10 kHz, aby se zabránilo zablokování sběrnice. I²C může být „DC“ sběrnice, což znamená, že při provádění rutinních operací slave nastavuje časovač master, zatímco masteru je dál přístupný. Master dostane oznámení že slave je příliš přehlcený, ale nechce ztratit komunikaci. Slave umožní pokračování komunikace po provedení tohoto operace. Proto není v I²C-bus protokolu určeno jak dlouhá musí být odezva, jako u SMBus systému, který je limitován 35 ms. SMBus protokol předpokládá, že pokud něco trvá příliš dlouho, pak je problém na sběrnici a že všechny zařízení je nutné resetovat, aby se vyčistil tento režim. Slave zařízení pak neumožňují držet hodiny LOW příliš dlouho.

Kontrola chyby paketu editovat

SMBus 2.0 a 1.1 vždy umožňují kontrolu chyby paketu (Packet Error Checking, zkratka PEC). V tomto režimu je PEC byte (chybový kód paketu) připojen na konec každého přenosu. Byte se vypočítá pomocí kontrolního výpočtu CRC-8, počítaného z celé zprávy včetně adresy a read/write bitu. Využívá polynom x8+x2+x+1 (CRC-8-ATM HEC algoritmus, inicializovány na nulu).[4][5][6]

SMBALERT# editovat

SMBus má navíc volitelně sdílené přerušení signálu s názvem SMBALERT#, které mohou být použity slavem k odpovědi hostu na dotaz o zajímavých událostech. SMBus také definuje méně častý „Host Notify Protocol“, poskytující obdobné oznámení, ale kolem více dat a vytváří na I²C multi-master mód.

Podpora v operačních systémech editovat

SMBus zařízení jsou podporována v operačních systémech FreeBSD, OpenBSD, NetBSD, DragonFly BSD, Linux, Windows 2000 a novějších.

Reference editovat

  1. System Management Bus (SMBus) Specification Version 2.0 [online]. Dostupné online.  smbus.org
  2. I2C-bus specification and user manual [online]. [cit. 2012-10-11]. Dostupné v archivu pořízeném dne 2009-07-10.  nxp.com
  3. APPLICATION NOTE 476 Comparing the I²C Bus to the SMBus [online]. Maxim, 2000-12-01 [cit. 2012-10-11]. Dostupné v archivu pořízeném dne 2009-12-12.  090429 maxim-ic.com
  4. Designing with SMBus 2.0[nedostupný zdroj]
  5. SMBus.org CRC-8 Calculator
  6. CRC-8 for SMBus, PICBasic code

Související články editovat

Externí odkazy editovat