´ Ustav radioelektroniky Vysok´ e uˇ cen´ı technick´ e v Brnˇ e
Komunikace zaˇr´ızen´ı po sbˇ ernici Mikroprocesorov´ a technika, pˇredn´ aˇska ˇ c. 3
Ing. Fr´yza Tom´aˇs, Ph.D. 10. ˇr´ıjna 2007
Obsah pˇredn´ aˇsky Z´ akladn´ı pojmy a terminologie z mikroprocesorov´ e techniky Obecn´ eˇ casov´ e pr˚ ubˇ ehy Obvody s tˇr´ı-stavov´ ym v´ ystupem Komunikace po sbˇ ernici Adresn´ı, datov´a a ˇr´ıdic´ı sbˇernice Blokov´ a struktura ˇrady ’51, AVR Uk´ azka programu v JSA a v C pro ATmega16 Ovl´ad´an´ı vstupnˇe/v´ystupn´ıho portu Zdroje informac´ı Ot´ azky a pˇr´ıklady k procviˇ cen´ı
Obsah pˇredn´ aˇsky Z´ akladn´ı pojmy a terminologie z mikroprocesorov´ e techniky Obecn´ eˇ casov´ e pr˚ ubˇ ehy Obvody s tˇr´ı-stavov´ ym v´ ystupem Komunikace po sbˇ ernici Adresn´ı, datov´a a ˇr´ıdic´ı sbˇernice Blokov´ a struktura ˇrady ’51, AVR Uk´ azka programu v JSA a v C pro ATmega16 Ovl´ad´an´ı vstupnˇe/v´ystupn´ıho portu Zdroje informac´ı Ot´ azky a pˇr´ıklady k procviˇ cen´ı
Z´ akladn´ı pojmy mikroprocesorov´ e techniky I
Bit – zkratka ”Binary Digit”, tj. jeden symbol v bin´arn´ı soustavˇe I I
I
I
I
I
Jednotka ”b”. Napˇr. 8b, Nastaven´ı hodnoty bitu (set bit) – hodnota bitu = 1 (vysok´a u ´roveˇ n), Nulov´an´ı hodnoty bitu (clear bit) – hodnota bitu = 0 (n´ızk´a u ´roveˇ n).
Pamˇet’ov´a buˇ nka – zaˇr´ızen´ı nebo elektrick´y obvod pro uchov´an´ı hodnoty 1 bitu (klopn´y obvod, stav tranzistoru, jeden ”spot” na CD, magnetick´y n´aboj, . . .). Pamˇet’ov´e slovo – mnoˇzina pamˇet’ov´ych bunˇek urˇcit´e velikosti (registr z osmi klopn´ych obvod˚ u, . . .); typick´a velikost od 4 do 64 bit˚ u. Pamˇet’ – souˇc´astka, umoˇzn ˇuj´ıc´ı uloˇzen´ı programu nebo dat v bin´arn´ı podobˇe. Soubor urˇcit´eho poˇctu pamˇet’ov´ych slov.
Z´ akladn´ı pojmy mikroprocesorov´ e techniky
I
Registr – skupina pamˇet’ov´ych bunˇek k uloˇzen´ı bin´arn´ı informace. Snazˇs´ı/rychlejˇs´ı pˇr´ıstup neˇz u ostatn´ıch pamˇet’ov´ych slov. ˇıˇrka registru - poˇcet bit˚ S´ u v registru.
I
Registrov´y p´ar – dvojice registr˚ u.
I
Pin – vodiˇc vyveden´y vnˇe souˇc´astky.
I
Port – skupina pin˚ u (nejˇcastˇeji 8), umoˇzn ˇuj´ıc´ı vstupnˇe/v´ystupn´ı komunikaci mikrokontrol´eru s okol´ım.
I
Sbˇernice – skupina vodiˇc˚ u umoˇzn ˇuj´ıc´ı propojen´ı vstup˚ ua v´ystup˚ u nˇekolika zaˇr´ızen´ı, registr˚ u, apod.
I
Z´ akladn´ı pojmy a terminologie I
Jednotka ”B”. Byte [bajt] – slovo o ˇs´ıˇrce 8 bit˚ u; jedno z nejpouˇz´ıvanˇejˇs´ıch pamˇet’ov´ych slov v mikroprocesorov´e technice I
Napˇr. 16B,
I
Nibl [nibl] – slovo o ˇs´ıˇrce 4 bit˚ u; polovina bytu; dˇr´ıve hojnˇe vyuˇz´ıv´ano.
I
MSB (Most Significant Bit/Byte) - nejv´yznamnˇejˇs´ı bit/byte.
I
LSB (Least Significant Bit/Byte) - nejm´enˇe v´yznamn´y bit/byte. Pamˇet’ov´a kapacita – celkov´y poˇcet bit˚ u v pamˇeti, nebo v syst´emu. Ud´av´a se ve tvaru poˇcet slov × ˇs´ıˇrka slova
I
I
I
Napˇr. 8k × 16, 1k × 8, 512 × 8.
Pozn.: Pracujeme ve dvojkov´e soustavˇe, proto I I I
1k [kilo] = 210 = 1 024 (pozor: 1k 6= 1 000), 1M [mega] = 220 = 1 048 576, 1G [giga] = 230 = 1 073 741 824.
Z´ akladn´ı pojmy a terminologie Pˇr´ıklad Co pˇredstavuje z´apis pamˇet’ov´e kapacity 4 096 × 20? ˇ sen´ı Reˇ I I
Poˇcet slov = 4 096 (4k), ˇıˇrka slova, tj. poˇcet bit˚ S´ u na slovo = 20b.
Pˇr´ıklad Necht’ je pamˇet’ov´a kapacita vyj´adˇrena hodnotou 2k x 8 a) Kolik slov obsahuje tato souˇc´astka? b) Jak´a je ˇs´ıˇrka jednoho slova?
(2 048)
,
,
(8 bit˚ u)
c) Jak´y je celkov´y poˇcet bit˚ u v pamˇet’ov´e souˇc´astce? bit˚ u).
(2 048 × 8 = 16 384
Z´ akladn´ı pojmy a terminologie, pamˇ eti I
I
I
Adresa – index, kter´y identifikuje pozici slova v pamˇeti; kaˇzd´e slovo m´a unik´atn´ı adresu; nejˇcastˇeji se ud´av´a v ˇsestn´actkov´e soustavˇe (prefix 0x nebo $). ˇ ı z pamˇeti (anglicky fetch) – operace, Cten´ pˇri kter´e je bin´arn´ı slovo (napˇr. slovo 10 na obr´azku) vyzvednuto z konkr´etn´ı adresy v pamˇeti (0x0a) a pˇreneseno na jin´e m´ısto. Z´apis do pamˇeti (anglicky store) – operace, pˇri kter´e je nov´e slovo (napˇr. slovo 1 na obr´azku) pˇreneseno na konkr´etn´ı pozici v pamˇeti (0x01); p˚ uvodn´ı informace je ztracena.
Obr´ azek: Uspoˇr´ad´an´ı pamˇeti
Uk´ azka adresov´ an´ı pamˇ et’ov´ eho slova
I
I
Uk´azka adresov´an´ı 8bitov´eho slova pomoc´ı 16bitov´e adresy. MSB tvoˇr´ı vyˇsˇs´ı byte adresy, LSB tvoˇr´ı niˇzˇs´ı byte adresy I I
I
MSB: 0b00101010 @ $2a, LSB: 0b01110011 @ $73.
Vˇsechna pamˇet’ov´a slova jsou stejnˇe ˇsirok´a. Adresovan´a data I
0b00010111 @ $17. Obr´ azek: Adresov´an´ı pamˇet’ov´eho slova
Obsah pˇredn´ aˇsky Z´ akladn´ı pojmy a terminologie z mikroprocesorov´ e techniky Obecn´ eˇ casov´ e pr˚ ubˇ ehy Obvody s tˇr´ı-stavov´ ym v´ ystupem Komunikace po sbˇ ernici Adresn´ı, datov´a a ˇr´ıdic´ı sbˇernice Blokov´ a struktura ˇrady ’51, AVR Uk´ azka programu v JSA a v C pro ATmega16 Ovl´ad´an´ı vstupnˇe/v´ystupn´ıho portu Zdroje informac´ı Ot´ azky a pˇr´ıklady k procviˇ cen´ı
ˇ Casov´ e pr˚ ubˇ ehy obecnˇ e
I
I
I
ˇ Casov´ e pr˚ ubˇehy (diagramy) jsou z´akladn´ım n´astrojem pro pochopen´ı funkce ˇc´ıslicov´ych syst´em˚ u a pro kontrolu spr´avn´e ˇcinnosti pˇri n´avrhu.
I
Diagramy zn´azorˇ nuj´ı zmˇenu vybran´ych sign´al˚ u v ˇcase, i pˇr´ıpadn´e z´avislosti mezi zmˇenami jednotliv´ych sign´al˚ u.
ˇ Uk´azka: Casov´ e pr˚ ubˇehy vstup˚ u a v´ystup˚ u pˇrevodn´ıku 3bitov´eho ˇc´ısla na k´od 7segmentov´eho displeje. Svisl´y marker na obr´azku I I
Vstup = 0b011 @ 3 V´ystup = pouze sign´aly F a E na vysok´e u ´rovni, tj. nesv´ıt´ı. Obr´ azek: Pr˚ ubˇehy pˇrevodn´ıku k´odu
Z´ akladn´ı ˇ casov´ e diagramy I
Pˇrehled z´akladn´ıch situac´ı I
I
I
I
Syst´emy s tˇr´ı-stavov´ym v´ystupem mohou nab´yvat stav˚ u: L (v okol´ı 0V), H (v okol´ı nap´ajec´ıho napˇet´ı) a vysok´a impedance, Pˇrechody sign´al˚ u z n´ızk´e do vysok´e u ´rovnˇe (L→H) a naopak, Pˇrechod svazku paraleln´ıch sign´al˚ u (sbˇernice) z jednoho stavu do druh´eho (´ uspornˇejˇs´ı zp˚ usob zobrazen´ı nˇekolika vodiˇc˚ u), Sign´al ve stavu vysok´e impedance (plovouc´ı sign´al).
Z´ akladn´ı ˇ casov´ e diagramy, pokraˇ cov´ an´ı I
Pˇrehled z´akladn´ıch situac´ı, pokraˇcov´an´ı I
I
I
Paraleln´ı sign´aly ve stavu vysok´e impedance, Zmˇena stavu jednoho sign´alu m˚ uˇze zp˚ usobit pˇrechod jin´eho sign´alu(˚ u); viz. obr. pˇrechod L→H zp˚ usobil pˇrechod H→L jin´eho sign´alu, typick´ym pˇr´ıkladem jsou obvody ˇr´ızen´e hranou, V´ıce neˇz jedna podm´ınka m˚ uˇze zp˚ usobit zmˇenu stavu na sbˇernici; viz. obr. v´ystup 3bitov´eho ˇc´ıtaˇce reaguje na hodinov´y sign´al i na sign´al urˇcuj´ıc´ı smˇer ˇc´ıt´an´ı.
Obsah pˇredn´ aˇsky Z´ akladn´ı pojmy a terminologie z mikroprocesorov´ e techniky Obecn´ eˇ casov´ e pr˚ ubˇ ehy Obvody s tˇr´ı-stavov´ ym v´ ystupem Komunikace po sbˇ ernici Adresn´ı, datov´a a ˇr´ıdic´ı sbˇernice Blokov´ a struktura ˇrady ’51, AVR Uk´ azka programu v JSA a v C pro ATmega16 Ovl´ad´an´ı vstupnˇe/v´ystupn´ıho portu Zdroje informac´ı Ot´ azky a pˇr´ıklady k procviˇ cen´ı
Komunikace mezi zaˇr´ızen´ımi I
Typick´a komunikace uvnitˇr mikrokontrol´eru, ale i mezi mikrokontrol´erem a zaˇr´ızen´ımi prob´ıh´a po paraleln´ım veden´ı, tj. po sbˇernici (u 8bitov´ych syst´em˚ u tvoˇrena zpravidla 8 vodiˇci).
I
Vˇsechna zaˇr´ızen´ı obsahuj´ı 8bitov´y vstupnˇe/v´ystupn´ı port, pomoc´ı nˇehoˇz jsou pˇripojena na jedinou skupinu vodiˇc˚ u– sbˇernici. Nejedn´a se tedy o spojen´ı point-point.
I
Aby byly eliminov´any kolize na sbˇernici, kdy nˇekolik zaˇr´ızen´ı vys´ıl´a souˇcasnˇe – stav na sbˇernici je d´an kombinac´ı v´ıce sign´al˚ u; data jsou ”neˇciteln´a” – se pouˇz´ıvaj´ı syst´emy s tˇr´ı-stavov´ymi v´ystupy, pˇr´ıp. oddˇelovac´ı bufery s tˇr´ıstavov´ym v´ystupem.
I
Tˇr´ı-stavov´y v´ystup je ˇr´ızen povolovac´ım vstupem (Enable), kter´y zajist´ı aktivaci vˇzdy jen jednoho zaˇr´ızen´ı, v´ystupy ostatn´ıch jsou ve stavu vysok´e impedance.
Tˇr´ı-stavov´ y v´ ystup I
I
V´ystupy obsahuj´ı kromˇe stavu HIGH a LOW tak´e stav vysok´e ˇ ızen´ı reˇzimu pomoc´ı ˇr´ıdic´ıho sign´alu ENABLE impedance. R´ (E). Uk´azka: Symbolick´a znaˇcka ˇc´asti tˇr´ı-stavov´eho buferu 74HC125 (Philips) I I I
I
Pouzdro obsahuje celkem 4 takov´e buˇ nky, Troj´ uheln´ıˇcek znamen´a tˇr´ı-stavov´y v´ystup, Mal´e koleˇcko u ˇr´ıdic´ıho vstupu E informuje, ˇze aktivn´ı u ´roveˇ n je n´ızk´a, Nˇekter´e 3stavov´e bufery maj´ı aktivn´ı u ´roveˇ n vysokou (74HC126), pˇr´ıp. invertuj´ı v´ystupn´ı hodnotu.
Obr´ azek: Symbolick´a znaˇcka tˇr´ı-stavov´eho buferu 74HC125
Tˇr´ı-stavov´ y v´ ystup, pokraˇ cov´ an´ı I
Popis ˇcinnosti I
I
I
E = 1; v´ystup ve stavu vysok´e impedance – v´ystup se chov´a jakoby fyzicky odpojen´y od sbˇernice, E = 0; bufer pracuje v norm´aln´ım reˇzimu, tj. v´ystup X je napˇet’ov´y ekvivalent vstupu A.
Tˇr´ı-stavov´e obvody jsou jiˇz obsaˇzeny v klopn´ych obvodech, registrech, pamˇet’ov´ych souˇc´astk´ach, a t´emˇeˇr ve vˇsech mikrokontrol´erech.
Tˇr´ı-stavov´ y v´ ystup, dokonˇ cen´ı I
Tˇr´ı-stavov´e bufery se ˇcasto pouˇz´ıvaj´ı k pˇripojen´ı nˇekolika zaˇr´ızen´ı/sign´al˚ u ke sbˇernici.
Obr´ azek: Tˇri odliˇsn´e bufery pro sign´aly A, B a C
I
V pˇr´ıpadˇe vys´ıl´an´ı v´ıce zaˇr´ızen´ı, dojde ke kolizi na sbˇernici ˇ ıdic´ı sign´aly EN mus´ı zajistit, aby ke sbˇernici (neˇz´adouc´ı). R´ bylo pˇripojeno jen jedno zaˇr´ızen´ı.
Obsah pˇredn´ aˇsky Z´ akladn´ı pojmy a terminologie z mikroprocesorov´ e techniky Obecn´ eˇ casov´ e pr˚ ubˇ ehy Obvody s tˇr´ı-stavov´ ym v´ ystupem Komunikace po sbˇ ernici Adresn´ı, datov´a a ˇr´ıdic´ı sbˇernice Blokov´ a struktura ˇrady ’51, AVR Uk´ azka programu v JSA a v C pro ATmega16 Ovl´ad´an´ı vstupnˇe/v´ystupn´ıho portu Zdroje informac´ı Ot´ azky a pˇr´ıklady k procviˇ cen´ı
Paraleln´ı pˇrenos dat mezi registry I
I
Registry hraj´ı v´yznamnou u ´lohu v mikroprocesorov´e technice. Ze softwarov´eho pohledu je mikrokontrol´er syst´emem registr˚ u, mezi kter´ymi je bin´arn´ı informace pˇresunov´ana a zpracov´av´ana. Existuj´ı dva zp˚ usoby pˇresunu dat mezi registry I
Paraleln´ı, S´eriov´y.
Obr´ azek: Paraleln´ı pˇrenos dat
I
Uk´azka: Dvojice 3bitov´ych registr˚ u X a Y, kter´e jsou tvoˇreny klopn´ymi obvody typu D, ˇr´ızen´ych hranou.
I
Pˇresun dat je ˇr´ızen hodinov´ym sign´alem CLK.
Paraleln´ı a s´ eriov´ y pˇrenos dat mezi registry I
Symbolick´y z´apis pˇrenosu dat: [X]→[Y] (pˇresun obsahu registru X do registru Y).
I
Hodinov´y pulz aplikov´an na vstupy CLK zp˚ usob´ı pˇresun dat z v´ystup˚ u X2 , X1 , X0 (vstupy DY ) na v´ystupy Y2 , Y1 , Y0 .
I
Jedn´a se o paraleln´ı pˇresun, protoˇze cel´y obsah registru X se pˇrekop´ıruje do Y najednou (pomoc´ı jedn´e hrany ˇr´ıdic´ıho sign´alu).
I
Uk´azka: S´eriov´y pˇrenos dat prostˇrednictv´ım 3bitov´eho posuvn´eho registru (klopn´e obvody typu JK, ˇr´ızen´e hranou).
Obr´ azek: Posuvn´y (shift) registr
S´ eriov´ y pˇrenos dat mezi registry
Obr´ azek: S´eriov´y pˇrenos dat I
Pˇri aktivn´ı hranˇe sign´alu CLK jsou hodnoty vstupn´ıch sign´al˚ u klopn´ych obvod˚ u pˇrekop´ırov´any na v´ystupy (tj. na vstupy obvod˚ u vpravo).
I
Data z v´ystupu posledn´ıho KO jsou ztracena. S´eriov´y pˇrenos vyˇzaduje v´ıce ˇcasu (jeden bit vyˇzaduje jeden pulz), ale m´enˇe vodiˇc˚ u.
S´ eriov´ y pˇrenos dat mezi registry, pˇr´ıklad Pˇr´ıklad Pˇrenos dat [X]→[Y]; necht’ [X]=101, [Y]=011 a S = 0 ˇ sen´ı Reˇ I
1. pulz: [X]=010, [Y]=101
I
2. pulz: [X]=001, [Y]=010
I
3. pulz: [X]=000, [Y]=101 Tabulka: Postupn´e posouv´an´ı dat
S 0 0 0 0
X2 1 0 0 0
X1 0 1 0 0
X0 1 0 1 0
Y2 0 1 0 1
Y1 1 0 1 0
Y0 1 1 0 1
pˇred po po po
1. 1. 2. 3.
pulzem pulzu pulzu pulzu
Komunikace mezi zaˇr´ızen´ımi Pˇr´ıklad Jak´ym zp˚ usobem zajistit bezpeˇcn´y pˇrenos dat ze zaˇr´ızen´ı ˇc. 2 do ˇr´ıdic´ı jednotky? (Necht’ ˇr´ıdic´ı jednotka v tomto pˇr´ıpadˇe shromaˇzd’uje informace od jednotliv´ych zaˇr´ızen´ı). Pˇr´ıklad Jak´e napˇet’ov´e u ´rovnˇe budou na datov´e sbˇernici v pˇr´ıpadˇe, ˇze vˇsechny zaˇr´ızen´ı budou ve stavu vysok´e impedance?
Obr´ azek: Komunikace po sbˇernici
Pˇr´ıklad pˇrenosu dat po sbˇ ernici I
I
Pˇr´ıklad zapojen´ı tˇr´ı 4bitov´ych registr˚ u 74173 (4bitov´y 3stavov´y klopn´y obvod typu D) na 4bitovou sbˇernici, tvoˇrenou vodiˇci DB3 -DB0 . Registry obsahuj´ı tˇri ˇr´ıdic´ı sign´aly I
I
I
IE (Input Enable) – n´ızk´a u ´roveˇ n aktivuje vstupn´ı obvody, OE (Output Enable) – n´ızk´a u ´roveˇ n aktivuje v´ystupn´ı obvody, CLK – hodinov´y sign´al.
Pˇr´ıklad Zajistˇete pˇrenos dat z registru B do registru A, [B]→[A]. Necht’ [B] = 1100.
Obr´ azek: 4bitov´e registry 74173
Pˇr´ıklad pˇrenosu dat po sbˇ ernici, ˇreˇsen´ı ˇ sen´ı Reˇ I
V´ystupy I
I
I
Pouze registr B mus´ı m´ıt aktivn´ı v´ystupn´ı obvody, tj. OE A = 1, OE C = 1, OE B = 0, Obsah registru B je t´ım zaps´an na datovou sbˇernici.
Vstupy I
Pouze registr A mus´ı m´ıt aktivn´ı vstupn´ı obvody, tj. IE A = 0, IE B = 1, IE C = 1.
I
N´asleduj´ıc´ı aktivn´ı hrana hodinov´eho sign´alu zajist´ı pˇrenos (pˇreˇcten´ı) dat ze sbˇernice do klopn´ych obvod˚ u registru A.
I
Pˇrenos dat je tedy zajiˇstˇen generov´an´ım korektn´ı posloupnost´ı ˇr´ıdic´ıch sign´al˚ u – zajiˇst’uje ˇr´ıdic´ı jednotka.
Pˇr´ıklad pˇrenosu dat po sbˇ ernici, ˇreˇsen´ı
ˇ sen´ı Reˇ I Platn´ a data jsou v registru A pˇreneseny v ˇcasov´em intervalu t1 − t2 . ˇ Obr´ azek: Casov´ e pr˚ ubˇehy
Pˇr´ıklad Proˇc je aktivn´ı u ´roveˇ n ˇr´ıdic´ıch sign´al˚ u v n´ızk´e u ´rovni?
Rozˇs´ıˇren´ı sbˇ ernice I
Bˇeˇznˇe se pouˇz´ıv´a vˇetˇs´ı poˇcet registr˚ u neˇz 3. Obecnˇe lze na sbˇernici pˇripojit libovoln´y poˇcet registr˚ u. Zvyˇsuje se t´ım ale u. poˇcet ˇr´ıdic´ıch sign´al˚ u OE, IE a vstupnˇe/v´ystupn´ıch vodiˇc˚
I
Obdobnˇe jako u 4bitov´e sbˇernice funguj´ı sbˇernice 8bitov´e, 16bitov´e, nebo 32bitov´e. Zobecnˇen´y princip
I
I
I
I
Jeden registr (zaˇr´ızen´ı) m´a aktivov´any v´ystupn´ı obvody a zapisuje data na sbˇernici, Jin´y registr (zaˇr´ızen´ı) m´a aktivov´any vstupn´ı obvody, ˇc´ımˇz m˚ uˇze data ze sbˇernice ˇc´ıst, Pˇri aktivn´ı hranˇe hodinov´eho sign´alu dojde k z´apisu dat do registru.
Rozˇs´ıˇren´ı sbˇ ernice, pokraˇ cov´ an´ı I
ˇıˇrka sbˇernice (poˇcet vodiˇc˚ S´ u) je d´ana ˇs´ıˇrkou datov´eho slova, pˇren´aˇsen´eho v syst´emu. 8bitov´e slovo ⇒ 8 vodiˇc˚ u, 16bitov´e slovo ⇒ 16 vodiˇc˚ u, . . . Nˇekter´e syst´emy obsahuj´ı kombinac´ı nˇekolika r˚ uznˇe-ˇsirok´ych sbˇernic.
I
Poˇcet zaˇr´ızen´ı, pˇripojen´ych na sbˇernici je rozd´ıln´y pˇr´ıpad od pˇr´ıpadu. Z´avis´ı na velikosti pamˇeti syst´emu a na poˇctu vstupn´ıch a v´ystupn´ıch zaˇr´ızen´ıch, kter´e mus´ı s CPU komunikovat po sbˇernici. Vˇsechna zaˇr´ızen´ı mus´ı b´yt pˇripojena pˇres 3stavov´e bufery
I
I
I
Nˇekter´a zaˇr´ızen´ı tyto bufery jiˇz obsahuj´ı pˇr´ımo na ˇcipu, napˇr. registry 74173 (viz. v´yˇse), Ostatn´ı zaˇr´ızen´ı mus´ı b´yt ke sbˇernici pˇripojeny pˇres tzv. ˇradiˇc sbˇernice (bus driver).
ˇ c sbˇ Radiˇ ernice I
ˇ c sbˇernice obsahuje 3stavov´y v´ystup s velmi n´ızkou Radiˇ v´ystupn´ı impedanc´ı, coˇz zp˚ usobuje rychl´e nab´ıjen´ı a vyb´ıjen´ı celkov´e kapacitn´ı reaktance (odpor) sbˇernice ⇒ kr´atk´e doby ˇ c sbˇernice tedy nezhorˇsuje doby pˇrechodu.) pˇrechodu. (Radiˇ
I
Kapacitn´ı odpor je tvoˇren kumulac´ı parazitn´ıch kapacitanc´ı vˇsech vstup˚ u a v´ystup˚ u, pˇripojen´ych ke sbˇernici a m˚ uˇze zhorˇsit doby pˇrechodu.
I
Pˇr´ıklad ˇradiˇce sbˇernice – 8bitov´y 74HC541.
Vyuˇ zit´ı ˇradiˇ ce sbˇ ernice I
Pˇripojen´ı v´ystupu 8bitov´eho A/D pˇrevodn´ıku k datov´e sbˇernici pomoc´ı 74HC541. Tabulka: Funkˇcn´ı tabulka
OE1 0 0 1 X
OE0 0 0 X 1
An 0 1 X X
Yn 0 1 Z Z ˇ c sbˇernice Obr´ azek: Radiˇ
Zjednoduˇsen´ a reprezentace ˇ casov´ ych pr˚ ubˇ eh˚ u I
I
ˇ Casov´ e pr˚ ubˇehy jednotliv´ych sign´al˚ u na sbˇernici lze z d˚ uvodu pˇrehlednosti z´apisu sdruˇzit do jedin´eho pr˚ ubˇehu – v´yhodn´e u syst´em˚ u s 8, 16, nebo s 32 vodiˇci.
Uk´azka: Pˇrenos dat ze zaˇr´ızen´ı B do A, viz. pˇredeˇsl´y pˇr´ıpad [B]=1100 I I
OE B = 0; IE A = 0, Ostatn´ı ˇr´ıdic´ı vstupy/v´ystupy nejsou zakresleny.
I
Platn´a data na sbˇernici v dobˇe trv´an´ı aktivn´ı u ´rovnˇe hodinov´eho impulsu (interval t2 − t1 ).
I
Neplatn´a data v intervalech t1 − t0 a t3 − t2 .
Obr´ azek: Zjednoduˇsen´e ˇcasov´e pr˚ ubˇehy
Zjednoduˇsen´ a reprezentace sbˇ ernic I
Z d˚ uvodu pˇripojen´ı velk´eho mnoˇzstv´ı zaˇr´ızen´ı ke sbˇernici se pouˇz´ıv´a zjednoduˇsen´e zn´azornˇen´ı vodiˇc˚ u ve sch´ematech I
I
Pomoc´ı ˇsirok´ych ˇsipek; ˇc´ıslo v [·] zn´azorˇ nuje ˇs´ıˇrku registr˚ u/poˇcet pˇripojen´ych vodiˇc˚ u, Pomoc´ı jedin´eho vodiˇce (fyzicky nespojeno) s indikovanou ˇs´ıˇrkou (poˇctem bit˚ u) \4.
Obr´ azek: 4bitov´y registr 74173 a MCU ATtiny11
Obr´ azek: Zjednoduˇsen´e zn´azornˇen´ı sbˇernice
Obousmˇ ern´ a sbˇ ernice I
Uvaˇzovan´y obvod (registr 74173) m´a vstupy i v´ystupy napojen´e na shodn´y vodiˇc datov´e sbˇernice, napˇr. vstupn´ı sign´al DC0 je propojen s v´ystupem OC0 pˇres vodiˇc DB0 (neplat´ı pˇri pouˇzit´ı ˇradiˇce sbˇernice) I I
DC0 – vstup ˇc. nula registru C, OC0 – v´ystup ˇc. nula registru C.
I
Z d˚ uvodu sn´ıˇzen´ı poˇctu pin˚ u, bylo vyvinuto uspoˇr´ad´an´ı s propojen´ım vstup˚ u a v´ystup˚ u uvnitˇr integrovan´ych obvod˚ u.
I
Kaˇzd´y pin (I0 /O0 aˇz In /On ) m˚ uˇze pracovat jako vstupn´ı nebo v´ystupn´ı v z´avislosti na ˇr´ıdic´ıch sign´alech. Proto jsou piny I/O naz´yv´any jako obousmˇern´e datov´e linky. Mnoho pamˇet’ov´ych obvod˚ u a mikroprocesor˚ u samozˇrejmˇe umoˇzn ˇuje obousmˇern´y pˇrenos.
I
Obousmˇ ern´ a sbˇ ernice
Obr´ azek: Propojen´ı I/O pin˚ u uvnitˇr obvodu
Adresn´ı, datov´ a, ˇr´ıdic´ı sbˇ ernice I
I
V mikroprocesorov´ych syst´emech se obecnˇe vyskytuj´ı tˇri typy sbˇernic. Adresn´ı sbˇernice: pˇren´aˇs´ı n-bitovou adresu z mikroprocesoru do pamˇeti I
I
I
Mikrokontrol´ery AVR obsahuj´ı 16bitovou adresn´ı sbˇernici, tj. mohou adresovat 216 = 65 536 pozic v pamˇeti nebo ve vstupnˇe/v´ystupn´ım zaˇr´ızen´ı, ˇ ı/z´apis z/do pamˇeti mus´ı b´yt doprov´azen pˇr´ısluˇsn´ym Cten´ ˇr´ıdic´ım sign´alem.
Datov´a sbˇernice: obousmˇern´a 8bitov´a sbˇernice (u 8bitov´ych syst´em˚ u) pro pˇrenos dat do/z pamˇeti. I
Datov´a sbˇernice nemus´ı obsahovat jen ”data”, ale tak´e instrukce, kter´e maj´ı b´yt vykon´any (viz. dalˇs´ı pˇredn´aˇsky).
Adresn´ı, datov´ a, ˇr´ıdic´ı sbˇ ernice I
ˇ ıdic´ı sbˇernice je skupina vˇsech R´ ˇcasovac´ıch a ˇr´ıdic´ıch sign´al˚ u, nutn´ych pro korektn´ı synchronizaci operac´ı mikroprocesoru s ostatn´ımi souˇc´astmi syst´emu. I
I
I
Nˇekter´e ˇr´ıdic´ı sign´aly jsou v´ystupem mikroprocesoru a nˇekter´e jsou vstupy od I/O zaˇr´ızen´ı. Poˇcet a typ sign´al˚ u se liˇs´ı, Mezi z´akladn´ı sign´aly patˇr´ı READ/WRITE, generovan´y mikroprocesorem a obsahuj´ı ho vˇsechny mikroprocesory (pˇr´ıp. jeho ekvivalent), Obr´ azek: Zjednoduˇsen´e blokov´e Sign´al Enable. sch´ema MCU typu AVR
Obsah pˇredn´ aˇsky Z´ akladn´ı pojmy a terminologie z mikroprocesorov´ e techniky Obecn´ eˇ casov´ e pr˚ ubˇ ehy Obvody s tˇr´ı-stavov´ ym v´ ystupem Komunikace po sbˇ ernici Adresn´ı, datov´a a ˇr´ıdic´ı sbˇernice Blokov´ a struktura ˇrady ’51, AVR Uk´ azka programu v JSA a v C pro ATmega16 Ovl´ad´an´ı vstupnˇe/v´ystupn´ıho portu Zdroje informac´ı Ot´ azky a pˇr´ıklady k procviˇ cen´ı
Blokov´ a struktura mikrokontrol´ eru ˇrady ’51 (MCS 51)
Obr´ azek: Zjednoduˇsen´e blokov´e sch´ema mikrokontrol´eru ˇrady ’51
Blokov´ a struktura mikrokontrol´ eru ˇrady ’51 (MCS 51) I
ˇ Casovac´ ı a ˇr´ıdic´ı jednotka I
I
I
I
I I
Instrukˇcn´ı registr - m´ısto uloˇzen´ı instrukce z pamˇeti, kter´a se m´a dek´odovat a vykonat, ˇ ıdic´ı sign´aly: P SEN ”Program store enable” - k pˇripojen´ı s R´ OE pinem extern´ı pamˇeti, ALE ”Address latch enable” - demultiplexov´an´ı adresy/dat z extern´ı pamˇeti (port 0), EA ”External access” - moˇznost uloˇzen´ı programu v extern´ı pamˇeti, RST - resetovac´ı vstup, Zdroj hodinov´eho sign´alu.
I
Aritmeticko/logick´a jednotka ALU - v´ykon vˇsech aritmetick´ych a logick´ych operac´ı.
I
Registr B, akumul´ator ACC, pˇr´ıznakov´y registr PSW ”Processor status word”.
Blokov´ a struktura mikrokontrol´ eru ˇrady ’51 (MCS 51) I I I
I
4 banky po osmi pracovn´ıch registrech (R0-R7). Programov´a, datov´a pamˇet’ RAM, EPROM/ROM. Pˇreruˇsen´ı s definovanou prioritou, full-duplexn´ı s´eriov´y port, 8/16bitov´y ˇc´ıtaˇc/ˇcasovaˇc. Ukazatel na z´asobn´ık ”Stack pointer” I
I
Obsahuje adresu vrcholu z´asobn´ıku (z´asobn´ık - ukl´ad´an´ı n´avratov´ych adres).
16bitov´y programov´y ˇc´ıtaˇc ”Program counter” I
Obsahuje adresu aktu´alnˇe vykon´avan´e instrukce.
I
16bitov´y ”Data pointer” DPTR
I
4 obousmˇern´e 8bitov´e porty P0-P3.
I
Dalˇs´ı moˇzn´e vybaven´ı: ADC, DAC, kompar´ator, watchdog, PWM, I2C, . . .
Blokov´ a struktura mikrokontrol´ eru ˇrady AVR (ATtiny11)
Obr´ azek: Zjednoduˇsen´e blokov´e sch´ema mikrokontrol´eru ATtiny11
Blokov´ a struktura mikrokontrol´ eru ˇrady AVR (ATtiny11) I
32 8bitov´ych registr˚ u pro bˇeˇzn´e pouˇzit´ı ”General purpose registers” GPIO I
Registrov´y p´ar Z (r31-r30) pro nepˇr´ım´e adresov´an´ı.
I
Hardwarov´y z´asobn´ık ”Hardware stack”.
I
Program uloˇzen v pamˇeti typu Flash.
I
Kontroln´ı registr mikrokontrol´eru ”MCU control register”.
I
Pˇr´ıznakov´y registr mikrokontrol´eru ”MCU status register”.
Obsah pˇredn´ aˇsky Z´ akladn´ı pojmy a terminologie z mikroprocesorov´ e techniky Obecn´ eˇ casov´ e pr˚ ubˇ ehy Obvody s tˇr´ı-stavov´ ym v´ ystupem Komunikace po sbˇ ernici Adresn´ı, datov´a a ˇr´ıdic´ı sbˇernice Blokov´ a struktura ˇrady ’51, AVR Uk´ azka programu v JSA a v C pro ATmega16 Ovl´ad´an´ı vstupnˇe/v´ystupn´ıho portu Zdroje informac´ı Ot´ azky a pˇr´ıklady k procviˇ cen´ı
Uk´ azka programu v JSA pro ATmega16 – I/O port I
Pouˇzit´e registry I I
I
I
V´yznam pouˇzit´ych instrukc´ı I
I
I
I I
I
r16 - jeden z 32 8bitov´ych registr˚ u pro obecn´e pouˇzit´ı, ddrb (PortB Data Direction Register) - urˇcuje smˇer komunikace jednotliv´ych pin˚ u portu B. 0 ⇔ vstupn´ı pin, 1 ⇔ v´ystupn´ı pin, portb - obsahuje data pro v´ystupn´ı piny portu B. ser temp – do registru temp (r16) uloˇz osmibitovou konstantu 0xff (255 dek.), out ddrb,temp – do registru ddrb zkop´ıruj obsah registru temp ⇒ cel´y port b bude v´ystupn´ı, out portb,temp – do registru portb zkop´ıruj obsah registru temp, dec temp – od obsahu registru temp odeˇcti jedniˇcku, rjmp loop – skoˇc na n´avˇest´ı loop.
Velikost v´ysledn´eho k´odu je 12 B, tj. 0,1% pamˇeti Flash mikrokontrol´eru ATmega16.
Uk´ azka programu v JSA pro ATmega16 – I/O port .include <m16def.inc> .def temp = r16
; definiˇ cn´ ı soubor pro mikrokontrol´ er ATmega16 ; konstanta temp nahrazuje registr r16
.org 0x0000 rjmp reset reset: ser temp
; uloˇ z n´ asleduj´ ıc´ ı k´ od od adresy 0x0000 ; skok na n´ avˇ eˇ st´ ı reset
out ddrb,temp loop: out portb,temp dec temp rjmp loop
; ; ; ;
nastav vˇ sechny bity v registru temp temp = 0xff = 0b1111 1111 uloˇ z obsah temp do smˇ erov´ eho registru pro port b port b == v´ ystupn´ ı
; poˇ sli obsah temp na v´ ystup portu b ; odeˇ cti jedniˇ cku od obsahu temp ; skok na n´ avˇ eˇ st´ ı loop, tj. nekoneˇ cn´ a smyˇ cka
Uk´ azka programu v jazyce C pro ATmega16 – I/O port I
Identick´a aplikace v jazyce C. Konkr´etn´ı typ mikrokontrol´eru (napˇr. ATmega16) je definov´an v prostˇred´ı AVR Studio a pˇred´an pˇrekladaˇci jako jeden z parametr˚ u.
I
Soubor io.h obsahuje n´azvy a adresy vˇsech registr˚ ua perif´eri´ı. Jm´ena registr˚ u jsou zde definov´any velk´ymi p´ısmeny. Nˇekter´e formy z´apisu nekoneˇcn´ych (tj. vˇzdy pravdiv´ych) smyˇcek v jazyce C
I
I I
while( 1 ) {·} for( ;; ) {·}
I
Zkr´acen´y z´apis aritmetick´e operace PORTB-- je totoˇzn´y se z´apisem PORTB=PORTB-1.
I
Program naps´an pro pˇrekladaˇc AVR-GCC! Pro jin´e pˇrekladaˇce m˚ uˇze b´yt neˇciteln´y.
I
Velikost v´ysledn´eho k´odu je 174 B (1,1% pamˇeti ATmega16).
Uk´ azka programu v jazyce C pro ATmega16 – I/O port #include "avr\io.h" int main( void ) { DDRB = 0xff ; PORTB = 0xff ; while( 1 ) PORTB-- ;
// vloˇ zen´ ı definiˇ cn´ ıho souboru pro mikrokontrol´ ery AVR, // kter´ y je uloˇ zen v adres´ aˇ ri avr // hlavn´ ı funkce aplikace // // // // //
do smˇ erov´ eho registru pro port b uloˇ z konstantu 0xff <=> port b bude v´ ystupn´ ı poˇ sli konstantu 0xff na port b nekoneˇ cn´ a smyˇ cka odeˇ cti jedniˇ cku od obsahu portu b
}
Pˇr´ıklad Jak prakticky ovˇeˇrit spr´avnou funkc´ı programu?
Obsah pˇredn´ aˇsky Z´ akladn´ı pojmy a terminologie z mikroprocesorov´ e techniky Obecn´ eˇ casov´ e pr˚ ubˇ ehy Obvody s tˇr´ı-stavov´ ym v´ ystupem Komunikace po sbˇ ernici Adresn´ı, datov´a a ˇr´ıdic´ı sbˇernice Blokov´ a struktura ˇrady ’51, AVR Uk´ azka programu v JSA a v C pro ATmega16 Ovl´ad´an´ı vstupnˇe/v´ystupn´ıho portu Zdroje informac´ı Ot´ azky a pˇr´ıklady k procviˇ cen´ı
Zdroje informac´ı V´an ˇa, V. Mikrokontrol´ery ATMEL AVR; popis procesor˚ u a instrukˇcn´ı soubor. Ben – technick´a literatura, Praha, 2003, ISBN 80-7300-083-0. Gadre, D.V. Programming and Customizing the Avr Microcontroller. McGraw-Hill, New York (USA), 2001, ISBN 0-07-134666-X. Tocci, R.J. Microprocessors and Microcomputers. Prentice Hall, New Jersey (USA), 2003, ISBN 0-13-060904-8.
Zdroje informac´ı Barnett, R., O’Cull, L., Cox, S. Embedded C Programming and the Atmel AVR, 2e. Thomson Delmar Learning, New York (USA), 2006, ISBN 1-4180-3959-4. Intel. Ofici´aln´ı str´anky firmy Intel, (ˇr´ıjen 2007). http://www.intel.com/
Obsah pˇredn´ aˇsky Z´ akladn´ı pojmy a terminologie z mikroprocesorov´ e techniky Obecn´ eˇ casov´ e pr˚ ubˇ ehy Obvody s tˇr´ı-stavov´ ym v´ ystupem Komunikace po sbˇ ernici Adresn´ı, datov´a a ˇr´ıdic´ı sbˇernice Blokov´ a struktura ˇrady ’51, AVR Uk´ azka programu v JSA a v C pro ATmega16 Ovl´ad´an´ı vstupnˇe/v´ystupn´ıho portu Zdroje informac´ı Ot´ azky a pˇr´ıklady k procviˇ cen´ı
Ot´ azky a pˇr´ıklady k procviˇ cen´ı 1. Jak´e hodnoty vyjadˇruje n´asleduj´ıc´ı z´apis v mikroprocesorov´e technice 2k = ?; 3k = ?; 4k = ?; 8k = ? 2. Uvaˇzujte obvod tˇr´ı-stavov´eho invertoru. Nakreslete symbolickou znaˇcku tohoto obvodu a sestavte funkˇcn´ı tabulku jeho vstup˚ u a v´ystupu. 3. Navrhnˇete principi´aln´ı zapojen´ı obousmˇern´e komunikace dvou 8bitov´ych zaˇr´ızen´ı s mikrokontrol´erem (nakreslete sch´ema). Naznaˇcte ˇcasov´y diagram vˇsech nutn´ych sign´al˚ u pro pˇrenos dat po sbˇernici a) od 1 zaˇr´ızen´ı k mikrokontrol´eru, b) od mikrokontrol´eru k obˇema zaˇr´ızen´ım (uvaˇzujte 1B slovo pro pˇrenos).
4. 8bitov´y shift registr X obsahuje data 1011 0010. Jak´y obsah bude m´ıt tento registr po vykonan´ych 5 ˇcasov´ych pulzech? (S´eriov´y vstup registru periodicky stˇr´ıd´a hodnotu 0 a 1.)