VyÜlo v t²denφku: COMPUTERWORLD
╚φslo:35/93
RoΦnφk:1993
Rubrika/kategorie: Co (ne)najdete ve slovnφku

zp∞t do archivu Φlßnk∙ | rejst°φk | p°edchozφ Φlßnek | nßsledujφcφ Φlßnek

Ji°φ Peterka

Three-state vs. Open Collector

V minulΘm vydßnφ tΘto rubriky jsme dosp∞li k tomu, ₧e jednφm z mo₧n²ch v²znam∙ anglickΘho termφnu driver je samostatn² integrovan² obvod nebo ta Φßst integrovanΘho obvodu, kterß mß na starosti generovßnφ v²stupnφch signßl∙ - Φesky budiΦ, od toho, ₧e "budφ" v²stupnφ signßly v pot°ebnΘ sφle.

Jak u₧ to ale v ₧ivot∞ b²vß, nenφ budiΦ jako budiΦ: n∞kterΘ budiΦe jsou konstruovßny tak, aby jejich v²stupy mohly b²t p°ipojeny na systΘmovΘ sb∞rnice poΦφtaΦe, zatφmco jinΘ toto neumo₧≥ujφ. Dokonce i ty, kterΘ tuto mo₧nost p°ipouÜtφ, se takΘ mohou v²razn∞ liÜit - natolik, ₧e jeden typ t∞chto budiΦ∙ ji₧ p°estßvß b²t pouh²m zesilovaΦem, jeho₧ existence je z hlediska logick²ch funkcφ zcela transparentnφ.

Nejprve si ale up°esn∞me, v Φem je podstata problΘmu: v tom, zda je mo₧nΘ propojit v²stup jednoho budiΦe s v²stupem jinΘho budiΦe (obecn∞ s v²stupy vφce budiΦ∙) a na takovΘto spojenΘ v²stupy pak napojovat vstupy dalÜφch obvod∙, nebo zda mo₧nost vzßjemnΘho propojenφ v²stup∙ nep°ipadß v ·vahu. Prßv∞ tato vlastnost budiΦ∙ je toti₧ rozhodujφcφ pro to, zda je mo₧nΘ p°φsluÜn² budiΦ p°ipojit na systΘmovΘ sb∞rnice, na kterΘ obvykle ·stφ v²stupy vφce r∙zn²ch budiΦ∙.

Rozdφl mezi jednotliv²mi druhy budiΦ∙ je samoz°ejm∞ dßn tφm, jak²m zp∙sobem vlastn∞ "budφ" v²stupnφ signßly. AΦkoli exaktnφ popis skuteΦnΘho zapojenφ a funkce budiΦ∙ by byl pon∞kud slo₧it∞jÜφ a vy₧adoval by jist² matematick² aparßt, pro naÜe pot°eby vystaΦφme s velmi jednoduch²m modelem, kter² p°esto dosti v∞rn∞ vystihuje skuteΦnost. Tφmto modelem je tzv. odporov² d∞liΦ neboli dva odpory zapojenΘ za sebou (tzv. do sΘrie). K prßci s tφmto modelem pak budeme pot°ebovat jen ten nejelementßrn∞jÜφ ze vÜech zßkon∙ elektrotechniky - Ohm∙v zßkon. Ten °φkß, ₧e nap∞tφ vznikajφcφ na odporu je rovno souΦinu velikosti danΘho odporu a proudu, kter² odporem protΘkß. Z tohoto obecnΘho zn∞nφ Ohmova zßkona si m∙₧eme odvodit to, co pro nßs bude podstatnΘ: ₧e p°i danΘm proudu je nap∞tφ na urΦitΘm odporu p°φmo ·m∞rnΘ velikosti tohoto odporu.

Nynφ se vra¥me k naÜemu odporovΘmu d∞liΦi a uv∞domme si jeden podstatn² moment - p°i sΘriovΘm zapojenφ dvou odpor∙ prochßzφ ka₧d²m z nich stejn² proud. To lze zd∙vodnit jednoduchou ·vahou: v bod∞, ve kterΘm jsou oba odpory propojeny, se nem∙₧e ₧ßdn² proud ani "ztrßcet", ani "p°ib²vat" (to si uv∞domil ji₧ v minulΘm stoletφ pan Gustav Robert Kirchhoff a podle toho zformuloval tvrzenφ dnes znßmΘ jako tzv. prvnφ Kirchhoff∙v zßkon). DalÜφm podstatn²m momentem je skuteΦnost, ₧e p°i sΘriovΘm spojenφ dvou odpor∙ se nap∞tφ na nich sΦφtajφ - tedy ₧e v²slednΘ nap∞tφ mezi ob∞ma voln²mi konci sΘriovΘho spojenφ odpor∙ bude rovno souΦtu obou dφlΦφch nap∞tφ.

Nynφ si p°edstavme, ₧e naÜe dva odpory p°ipojφme na zdroj napßjecφho nap∞tφ - p°esn∞ji jeden voln² konec sΘriovΘho spojenφ odpor∙ p°ipojφme na kladn² p≤l zdroje a druh² voln² konec p°ipojφme na druh² p≤l zdroje (kter² budeme pro jednoduchost oznaΦovat jako zem). Proud, kter² pak bude protΘkat ob∞ma odpory, bude stejn² (vzhledem k jejich zapojenφ do sΘrie). JakΘ ale bude nap∞tφ na jednotliv²ch odporech? Podle Ohmova zßkona bude toto nap∞tφ (p°i danΘm proudu) p°φmo ·m∞rnΘ velikosti p°φsluÜnΘho odporu. ProtΘkß-li ob∞ma odpory stejn² proud, je pom∞r t∞chto dvou dφlΦφch nap∞tφ roven pom∞ru velikostφ obou odpor∙! To si dejme jeÜt∞ do souvislosti s tφm, ₧e ob∞ tato nap∞tφ se sΦφtajφ a ₧e jejich v²sledn² souΦet musφ b²t roven nap∞tφ napßjecφho zdroje. Z toho nßm pak ji₧ snadno vyplyne, proΦ se dv∞ma do sΘrie zapojen²m odpor∙m °φkß "odporov² d∞liΦ" - nap∞tφ zdroje toti₧ d∞lφ p°esn∞ v tom pom∞ru, v jakΘm jsou v∙Φi sob∞ velikosti obou odpor∙.

V zßjmu v∞tÜφ nßzornosti si jeÜt∞ zave∩me sice nep°φliÜ formßlnφ, zato ale velmi intuitivnφ terminologii: odpory tvo°φcφ odporov² d∞liΦ oznaΦme jako hornφ a dolnφ, podle toho, zda je p°φsluÜn² odpor p°ipojen ke kladnΘmu p≤lu napßjecφho zdroje (hornφ odpor), nebo k zemi (dolnφ odpor).

Poslednφ d∙le₧itou skuteΦnostφ, kterou si musφme uv∞domit, je zp∙sob znßzorn∞nφ dvou logick²ch hodnot (1, resp. 0, ano, resp. ne) pomocφ nap∞tφ. V zßsad∞ platφ, ₧e logickou hodnotu (kterß je diskrΘtnφ veliΦinou) mß smysl reprezentovat pomocφ nap∞tφ (kterΘ je analogovou, a tudφ₧ spojitou veliΦinou) pouze tak, ₧e jednΘ logickΘ hodnot∞ p°isoudφme cel² interval mo₧n²ch hodnot nap∞tφ a druhΘ logickΘ hodnot∞ jin² interval nap∞tφ (samoz°ejm∞ disjunktnφ). Jednφm intervalem b²vajφ hodnoty blφzkΘ nule a druh²m hodnoty blφzkΘ napßjecφmu nap∞tφ (konkrΘtnφ hodnoty zßvisφ na pou₧itΘ technologii, nap°. u b∞₧n²ch TTL obvod∙ a p°i napßjecφm nap∞tφ 5 V je "spodnφ" interval od 0 do 0,4 V a "hornφ" interval od 2,4 do 5 V). O nap∞tφ, kterΘ spadß do jednoho z obou disjunktnφch interval∙, se pak °φkß, ₧e mß tzv. nφzkou ·rove≥ (v angliΦtin∞: ·rove≥ Low, zkratkou L), resp. tzv. vysokou ·rove≥ (·rove≥ High, zkratkou H).

Jakß je ale korespondence mezi logick²mi hodnotami a ob∞ma disjunktnφmi intervaly nap∞tφ? Mß b²t nap°. logickß 1 reprezentovßna nap∞tφm vysokΘ ·rovn∞ (·rovn∞ H), a logickß 0 nap∞tφm nφzkΘ ·rovn∞ (·rovn∞ L)? Nebo tomu mß b²t prßv∞ naopak? Oba p°φpady jsou mo₧nΘ, zßle₧φ pouze na zvolenΘ konvenci. TΘ prvnφ (kdy logickß 1 je reprezentovßna nap∞tφm ·rovn∞ H) se °φkß pozitivnφ logika a druhΘ (kdy log. 1 = ·rove≥ L) negativnφ logika.

Po tΘto krßtkΘ exkurzi se ji₧ m∙₧eme vrßtit zp∞t k naÜemu p∙vodnφmu tΘmatu - k tomu, jak fungujφ jednotlivΘ druhy budiΦ∙.

V²stupnφ budiΦ si m∙₧eme p°edstavit prßv∞ jako odporov² d∞liΦ, kter² je schopen podle pot°eby m∞nit hodnoty obou odpor∙ zapojen²ch do sΘrie. Oba volnΘ konce tohoto odporovΘho d∞liΦe jsou p°ipojeny na napßjecφ zdroj a v²stupnφ signßl je vytvß°en nap∞tφm mezi zemφ a bodem, ve kterΘm je hornφ odpor spojen s dolnφm odporem. Nap∞tφ v²stupnφho signßlu je tedy shodnΘ s nap∞tφm na dolnφm odporu!!

Mß-li pak budiΦ za ·kol vytvo°it na svΘm v²stupu nap∞tφ ·rovn∞ H (tedy nap∞tφ vysokΘ ·rovn∞ blφzkΘ ·rovni napßjecφho nap∞tφ), musφ zm∞nit d∞licφ pom∞r tak, aby na spodnφm odporu bylo co nejv∞tÜφ nap∞tφ (kterΘ je souΦasn∞ nap∞tφm v²stupnφho signßlu). Toho budiΦ dosßhne tak, ₧e co mo₧nß nejvφce zmenÜφ hornφ odpor a co nejvφce zv∞tÜφ dolnφ odpor.

V opaΦnΘm p°φpad∞, kdy₧ mß budiΦ vytvß°et v²stupnφ signßl ·rovn∞ L, je situace p°esn∞ opaΦnß - musφ co nejvφce zmenÜit dolnφ odpor a co nejvφce zv∞tÜit hornφ odpor. JednoduchΘ, ne?

Te∩ si ale p°edstavme, ₧e pot°ebujeme vzßjemn∞ propojit v²stupy dvou takov²chto budiΦ∙ - nap°φklad je oba chceme p°ipojit na tutΘ₧ sb∞rnici. ProblΘm nastane v okam₧iku, kdy jeden z nich se bude sna₧it vytvo°it na svΘm v²stupu nap∞tφ vysokΘ ·rovn∞ (·rovn∞ H) a druh² nap∞tφ nφzkΘ ·rovn∞ (·rovn∞ L). Jeden z budiΦ∙ tedy co nejvφce zmenÜφ sv∙j hornφ odpor a druh² co nejvφce zmenÜφ sv∙j dolnφ odpor. OvÜem tφm, ₧e jsme v²stupy obou budiΦ∙ vzßjemn∞ propojili, jsem vlastn∞ vytvo°ili sΘriovΘ spojenφ obou t∞chto velmi mal²ch odpor∙. Tφm jsme oba p≤ly napßjecφho zdroje zkratovali velmi mal²m odporem (rovn²m souΦtu obou mal²ch odpor∙), kter²m zaΦne okam₧it∞ protΘkat velmi velk² proud. Je pak otßzkou konkrΘtnφho technickΘho °eÜenφ, zda na tento prudk² nßr∙st odebφranΘho proudu staΦφ vΦas zareagovat pojistka napßjecφho zdroje, nebo zda dojde k poÜkozenφ n∞kterΘho z budiΦ∙ (kter² na takto velk² proud nenφ dimenzovßn).

V²stupy takto fungujφcφch budiΦ∙ tedy nesmφme propojovat mezi sebou.

Co kdy₧ to ale opravdu nezbytn∞ pot°ebujeme? Pak nezb²vß ne₧ zvolit pon∞kud jinak fungujφcφ budiΦe. Ty, kterΘ jsme si a₧ dosud popisovali, se mohou nachßzet vlastn∞ jen ve dvou stavech - v jednom majφ velk² hornφ odpor a mal² dolnφ odpor a ve druhΘm velk² dolnφ odpor a mal² hornφ odpor. Jedno °eÜenφ pak spoΦφvß v zavedenφ jeÜt∞ jednoho mo₧nΘho stavu (t°etφho, odsud: t°φstavovΘ budiΦe, three-state drivers), ve kterΘm budou oba odpory souΦasn∞ velkΘ. V tomto t°etφm stavu (oznaΦovanΘm takΘ jako stav vysokΘ impedance) se pak v²stup p°φsluÜnΘho budiΦe chovß stejn∞, jako kdyby byl doslova "ve vzduchu" - pokud je tento v²stup spojen s v²stupem jinΘho budiΦe, nemß na n∞j prakticky ₧ßdn² vliv.

V²stupy t°φstavov²ch budiΦ∙ tedy m∙₧eme mezi sebou propojovat, ale musφme p°itom dbßt na dodr₧enφ d∙le₧itΘ zßsady: mimo t°etφ stav se v ka₧dΘm okam₧iku smφ nachßzet v²stup nejv²Üe jednoho budiΦe! T°φstavovΘ budiΦe jsou za tφmto ·Φelem vybaveny vstupnφm °φdicφm signßlem. V zßvislosti na jeho stavu se pak v²stup budiΦe nachßzφ bu∩ ve t°etφm stavu, nebo mimo n∞j (a pak zßle₧φ na tom, jakß data budiΦem "prochßzφ").

Existuje vÜak jeÜt∞ jedna dalÜφ a velmi zajφmavß mo₧nost, jak umo₧nit vzßjemnΘ propojenφ v²stup∙ budiΦ∙. Je zalo₧ena na myÜlence, ₧e jednotlivΘ budiΦe nebudou mφt ka₧d² sv∙j vlastnφ hornφ odpor, ale mφsto n∞j budou sdφlet jedin² spoleΦn² odpor, kter² bude jejich hornφ odpory nahrazovat (Jin²mi slovy: jednotlivΘ budiΦe nebudou mφt svΘ hornφ odpory pevn∞ zabudovßny. V²stupy t∞chto budiΦ∙ se vzßjemn∞ spojφ, a teprve tento jejich spojen² v²stup se p°es externφ hornφ odpor p°ipojφ ke kladnΘmu p≤lu napßjecφho nap∞tφ.) TΘto variant∞ se pak °φkß zapojenφ s otev°en²m kolektorem (Open Collector, OC). To vychßzφ ze skuteΦnΘ realizace, kdy nßmi uva₧ovanΘ odporovΘ d∞liΦe jsou ve skuteΦnosti zapojenφ s tranzistory a kdy chyb∞jφcφmu hornφmu odporu odpovφdß p°φmΘ vyvedenφ jednΘ z elektrod tranzistoru (tzv. kolektoru) na v²stup - proto "otev°en² kolektor".

BudiΦ s otev°en²m kolektorem se tak vlastn∞ redukuje z dvojice odpor∙ jen na samotn² dolnφ odpor, kter² se op∞t m∙₧e nachßzet jen ve dvou mo₧n²ch stavech - bu∩to je hodn∞ mal², nebo hodn∞ velk². SpoleΦn² hornφ odpor (tzv. kolektorov² odpor) svou hodnotu nem∞nφ - ta ovÜem musφ b²t vhodn∞ volena mezi ob∞ma t∞mito krajnφmi hodnotami dolnφch odpor∙. Tak, aby v p°φpad∞, kdy vÜechny dolnφ odpory jsou velkΘ, byl spoleΦn² hornφ odpor dostateΦn∞ mal² a vytvß°el v²stupnφ nap∞tφ vysokΘ ·rovn∞ (·rovn∞ H). Zßrove≥ vÜak musφ b²t zase natolik velk², ₧e kdy₧ alespo≥ jeden z dolnφch odpor∙ bude mal², bude v²sledn² d∞lφcφ pom∞r zajiÜ¥ovat dostateΦn∞ nφzkΘ v²stupnφ nap∞tφ (tedy nap∞tφ ·rovn∞ L).

Funkci spoleΦnΘho hornφho odporu lze v²sti₧n∞ charakterizovat takΘ tak, ₧e sßm o sob∞ se sna₧φ vytvß°et v²stupnφ nap∞tφ vysokΘ ·rovn∞, ale ka₧dΘmu jednotlivΘmu budiΦi dßvß mo₧nost, aby dostateΦn²m zmenÜenφm svΘho dolnφho odporu "stßhl" toto nap∞tφ a₧ do nφzkΘ ·rovn∞. Z toho lze takΘ vysledovat, ₧e vzßjemnΘ propojenφ budiΦ∙ s otev°en²m kolektorem plnφ i urΦitou logickou funkci: v²stupnφ nap∞tφ mß vysokou ·rove≥ (·rove≥ H) pouze tehdy, pokud se vÜechny budiΦe sna₧φ o vytvo°enφ tΘto ·rovn∞ (tj. pokud vÜechny jejich dolnφ odpory jsou velkΘ). Pokud se alespo≥ jeden budiΦ sna₧φ vytvo°it v²stupnφ nap∞tφ nφzkΘ ·rovn∞ (·rovn∞ L), eliminuje tφm snahu t∞ch budiΦ∙, kterΘ usilujφ o opak, a na spoleΦnΘm v²stupu skuteΦn∞ bude nap∞tφ ·rovn∞ L.

Pouh²m propojenφm v²stup∙ budiΦ∙ s otev°en²m kolektorem tak m∙₧eme dosßhnout logickΘ funkce, kterß p°i ·rovni H vÜech sv²ch vstupnφch prom∞nn²ch dßvß hodnotu H a ve vÜech ostatnφch p°φpadech dßvß hodnotu L. Je to logick² souΦet, nebo logick² souΦin? Odpov∞∩ zßle₧φ na tom, zda pou₧φvßme pozitivnφ, nebo negativnφ logiku: v p°φpad∞ pozitivnφ logiky, kdy ·rove≥ H odpovφdß logickΘ 1, jde o logick² souΦin, zatφmco v p°φpad∞ negativnφ logiky jde o logick² souΦet. Pro tuto svou vlastnost b²vß zapojenφ budiΦ∙ s otev°en²m kolektorem oznaΦovßno v angliΦtin∞ takΘ jako wired OR (v p°φpad∞ pou₧itφ negativnφ logiky), resp. wired AND (p°i pou₧itφ pozitivnφ logiky). V ΦeÜtin∞ se hovo°φ o tzv. montß₧nφm souΦtu a montß₧nφm souΦinu, neformßln∞ pak o "drßtovΘm OR" Φi "drßtovΘm AND".

Kdy a v jak²ch situacφ se pou₧φvajφ t°φstavovΘ budiΦe a kdy budiΦe s otev°en²m kolektorem? ÄßdnΘ p°esnΘ a zßvaznΘ pravidlo samoz°ejm∞ neexistuje, ale obvyklß praxe je nßsledujφcφ: t°φstavov² budiΦ se pou₧φvß tam, kde ji₧ existuje n∞jak² mechanismus, kter² rozhoduje o tom, kdo mß prßvo vysφlat na sb∞rnici (tedy mechanismus, na jeho₧ zßklad∞ mohou b²t generovßny pot°ebnΘ signßly pro °φzenφ t°φstavov²ch budiΦ∙). Tento p°φpad obvykle nastßvß u datov²ch a adresov²ch sb∞rnic, kterΘ kontroluje procesor - pro p°ipojenφ na adresovou a datovou sb∞rnici se tedy nejΦast∞ji pou₧φvajφ t°φstavovΘ budiΦe. Naopak budiΦe s otev°en²m kolektorem se pou₧φvajφ tam, kde ₧ßdn² °φdicφ mechanismus neexistuje a kde nelze p°edem vylouΦit p°φpad, ₧e vφce zdroj∙ bude vysφlat na sb∞rnici souΦasn∞. To je obvykle p°φpad nejr∙zn∞jÜφch °φdicφch a stavov²ch signßl∙, zahrnovan²ch do °φdφcφ sb∞rnice poΦφtaΦe - ₧ßdostφ o p°eruÜenφ, °φdφcφch signßl∙ pro zßpis Φi Φtenφ z pam∞ti apod. U t∞chto signßl∙ se vesm∞s po₧aduje, aby jejich aktivnφ stav (nap°. aktivnφ ₧ßdost o p°eruÜenφ) mohl vyvolat ka₧d² ₧adatel sßm a nepot°eboval k tomu spoluprßci ostatnφch potencißlnφch ₧adatel∙ - tomuto po₧adavku odpovφdß nutnost logickΘho souΦtu individußlnφch ₧ßdostφ, co₧ znamenß pou₧itφ negativnφ logiky. To je pak jeden z d∙vod∙, proΦ se pro adresy a data obvykle pou₧φvß pozitivnφ logika, ale pro nejr∙zn∞jÜφ °φdicφ signßly negativnφ logika. TakΘ dalÜφ d∙vod pro pou₧itφ negativnφ logiky a budiΦ∙ s otev°en²m kolektorem u °φdicφch signßl∙ je Φist∞ praktick²: odpojφme-li z n∞jakΘho d∙vodu vÜechny vzßjemn∞ propojenΘ budiΦe s otev°en²m kolektorem, z∙stane nßm jen jejich spoleΦn² hornφ (kolektorov²) odpor a dφky n∞mu bude na p°φsluÜnΘm vodiΦi °φdicφ sb∞rnice nap∞tφ ·rovn∞ H. P°i pou₧itφ negativnφ logiky to odpovφdß neaktivnφmu stavu p°φsluÜnΘho °φdicφ signßlu (tedy takovΘmu, kter² nepo₧aduje p°φsluÜnou akci).


zp∞t do archivu Φlßnk∙ | rejst°φk | p°edchozφ Φlßnek | nßsledujφcφ Φlßnek
Tento Φlßnek m∙₧e b²t voln∞ Üφ°en, pokud se tak d∞je pro studijnφ ·Φely, na nev²d∞leΦnΘm zßklad∞ a se zachovßnφm tohoto dov∞tku. Podrobnosti hledejte zde, resp. na adrese http://archiv.czech.net/copyleft.htm