ˇ e vysok´e uˇcen´ı technick´e v Praze Cesk´ Masaryk˚ uv u ´stav vyˇsˇs´ıch studi´ı
Bakal´aˇrsk´a pr´ace
Hodnocen´ı sch´ ematick´ eho programovac´ıho jazyka didaktick´ ym testem Jan Smrˇz
Vedouc´ı pr´ace: Prof. RNDr. Emanuel Svoboda, Csc.
Studijn´ı program: Specializace v pedagogice Obor: Uˇcitelstv´ı odborn´ ych pˇredmˇet˚ u ˇcerven 2012
Abstrakt V´ yuka programov´an´ı jako prostˇredku pro u ´kolov´an´ı stroj˚ u v´ ypoˇcetn´ı techniky je v´ yznamnou souˇc´ast´ı vzdˇel´av´an´ı student˚ u technick´ ych obor˚ u. Programov´an´ı lze ch´apat v obecnˇejˇs´ı rovinˇe jako schopnost analyzovat, dekomponovat na elementy a n´aslednˇe ˇreˇsit probl´emy pomoc´ı urˇcen´ ych n´astroj˚ u. Jedn´a se tedy o postup spoleˇcn´ y vˇsem vˇed´am, kter´ y pˇrijde vhod i netechnicky zamˇeˇren´ ym student˚ um. V konkr´etn´ı rovinˇe tomu tak ale nen´ı, nebot’ programov´an´ı je v´az´ano na mnoho technick´ ych detail˚ u, kter´e znepˇr´ıstupˇ nuj´ı kr´asu princip˚ u program´atorsk´eho uvaˇzov´an´ı ˇsirˇs´ımu obecenstvu. Autor v n´avaznosti na sv´e pˇredeˇsl´e b´ad´an´ı v oblasti automatizace domovn´ıch proces˚ u a teorie ˇr´ızen´ı usiluje o vytvoˇren´ı didaktick´e pom˚ ucky, kter´a neklade pˇrek´aˇzky technick´eho charakteru do v´ yuky programov´an´ı. Hled´a bod mezi programov´an´ım osobn´ıch poˇc´ıtaˇc˚ u pomoc´ı vyˇsˇs´ıch programovac´ıch jazyk˚ u, kter´e jsou v´ ypoˇcetnˇe mocn´e a silnˇe abstraktn´ı, a amat´erskou elektrotechnikou, kter´a pˇritahuje svou n´azornost´ı, ale m´a-li plnit praktick´e u ´koly, je velmi sloˇzit´a. Autor vid´ı moˇzn´e ˇreˇsen´ı v programov´an´ı pomoc´ı kartiˇckov´eho sch´ematick´eho programovac´ıho jazyka. Spr´avn´a volba element´arn´ıch konstrukt˚ u jazyka je urˇcuj´ıc´ı rovnov´ahu mezi snadnou pochopitelnost´ı a schopnost´ı ˇreˇsit libovoln´e zad´an´ı. Pro erudovan´ y n´avrh jazyka je nutn´a anal´ yza technick´eho zp˚ usobu myˇslen´ı student˚ u, jejich vrozen´eho logick´eho uvaˇzov´an´ı a intuitivn´ıho pˇr´ıstupu k programov´an´ı, vˇse v z´avislosti na vˇeku a m´ıˇre ovlivnˇen´ı pˇredchoz´ı v´ yukou. C´ılem t´eto pr´ace je realizace didaktick´eho testu a poskytnut´ı analytick´ ych z´avˇer˚ u pouˇziteln´ ych pro n´avrh a vylepˇsen´ı novˇe vznikaj´ıc´ıho sch´ematick´eho programovac´ıho jazyka.
Abstract Evaluating a schematic programming language through a didactic test Teaching of programming as a means of task specification for computational machinery is a significant part of education of students with technical specialization. Programming is in general an ability to analyze, decompose into fundamentals and solve problems using given instruments. It is the ability useful in every science, including humanities and arts. Practically it is not so, because programming binds to lots of technical particularities, which exclude the public audience from understanding the programmer’s way of thinking. The author of this thesis worked previously in the domain of home automation and process control and strives for creating a didactic aid, which doesn’t put technical obstacles into the programming-teaching. He also seeks for a midpoint between the high-level programming, which is computationally powerful and abstract, and the hobby-electronics, which is spectacular and attractive in the beginning, but it turns to be complicated
when you need it to be useful. The author presents his card-built schematic programming language. The right selection of language constructs is essential to well-ballance both easy comprehension and complex problem solvability. For an erudite language design an analysis of students’ way of thinking, natural reasoning and intuitive approach to programming problems has to be done, reflecting the age and the forepast education of each student. The objective of this thesis is to implement a didactic test and to provide analytical conclusions useful for designing and improving the all-new schematic language.
4
Obsah ´ 1 Uvod 1.1 Motivace . . . . . . . . . . . . . . . 1.2 C´ıl pr´ace . . . . . . . . . . . . . . . 1.3 Univerz´aln´ı s´eriov´a sbˇernice - USB 1.4 Mikroˇradiˇce AVR . . . . . . . . . . 1.5 Abstrakce zaˇr´ızen´ı a ovladaˇce . . . 1.6 Hypot´eza . . . . . . . . . . . . . .
. . . . . .
2 Anal´ yza 2.1 Existuj´ıci ˇreˇsen´ı USB ˇradiˇc˚ u . . . . . 2.1.1 Obvody FTDI . . . . . . . . . 2.1.2 AVR AT90USB . . . . . . . . ˇ ska . . . . . 2.1.3 IgorPlug Igora Ceˇ 2.2 Rozbor vlastnost´ı USB . . . . . . . . 2.2.1 Souhrnn´e vlastnosti USB 1.1 . 2.2.2 Elektrick´a vrstva . . . . . . . 2.2.3 Mechanick´a ˇca´st . . . . . . . . 2.2.4 Linkov´a vrstva . . . . . . . . 2.2.5 Cyklick´a redundantn´ı kontrola
. . . . . .
. . . . . . . . . .
. . . . . .
. . . . . . . . . .
. . . . . .
. . . . . . . . . .
. . . . . .
. . . . . . . . . .
. . . . . .
. . . . . . . . . .
. . . . . .
. . . . . . . . . .
. . . . . .
. . . . . . . . . .
. . . . . .
. . . . . . . . . .
. . . . . .
. . . . . . . . . .
. . . . . .
. . . . . . . . . .
. . . . . .
. . . . . . . . . .
. . . . . .
. . . . . . . . . .
. . . . . .
. . . . . . . . . .
. . . . . .
. . . . . . . . . .
. . . . . .
. . . . . . . . . .
. . . . . .
. . . . . . . . . .
. . . . . .
. . . . . . . . . .
. . . . . .
. . . . . . . . . .
. . . . . .
1 1 1 1 2 2 3
. . . . . . . . . .
4 4 4 5 7 8 8 9 10 10 12
1 1.1
´ Uvod Motivace
ˇ Valn´a vˇetˇsina souˇcasn´ ych USB periferi´ı ˇreˇs´ı implementaci specifikace hardwarovˇe. Casto se pouˇz´ıvaj´ı USB pˇrevodn´ıky (napˇr´ıklad FTDI USB→serial [?]), kter´e pˇrev´adˇej´ı datov´ y tok USB na jinou sbˇernici (RS-232, RS-485, IEEE 1284) a neumoˇzn ˇuj´ı vyuˇz´ıt vˇsech v´ yhod USB sbˇernice. Pouˇzit´ı takov´ ych obvod˚ u s sebou nese nutnost pouˇz´ıvat ovladaˇce zaˇr´ızen´ı vydan´e v´ yrobcem obvodu bez moˇznosti vlastn´ı u ´pravy a zlepˇsen´ı. Existuj´ı t´eˇz hardwarov´e USB ˇradiˇce, kter´e jsou souˇca´st´ı programovateln´ ych jednoˇcipov´ ych miˇ ızen´ı ˇradiˇce, jakoˇzto i pˇr´ıstup k pˇrij´ıman´ krokontrol´er˚ u. R´ ym a odes´ılan´ ym dat˚ um ’ se zajiˇst uje prov´adˇen´ım instrukc´ı mikropoˇc´ıtaˇce. Pohodln´e pouˇz´ıv´an´ı a efektivita takov´ ych obvod˚ u je vyv´aˇzena vysokou cenou nˇekolikan´asobnˇe pˇrevyˇsuj´ıc´ı cenu ostatn´ıch programovateln´ ych obvod˚ u bez integrovan´eho USB ˇradiˇce. Aby bylo moˇzn´e pˇristupovat k USB sbˇernici i pomoc´ı programovateln´ ych obvod˚ u, kter´e nejsou pro takovou komunikaci nijak hardwarovˇe vybaveny, mus´ıme vytvoˇrit software vyuˇz´ıvaj´ıc´ı pouze standardn´ı vstupnˇe-v´ ystupn´ı porty a nahrazuj´ıc´ı chybˇej´ıc´ı hardware efektivn´ım pouˇz´ıv´an´ım instrukˇcn´ı sady. V souˇcasn´e dobˇe je k dispozici k´od [?], kter´ y implementuje USB rozhran´ı a funkˇcnost obvodu (pˇrij´ımaˇc d´alkov´eho ovl´ad´an´ı - DO) plnˇe softwarovˇe, ale nen´ı modul´arn´ı. Nelze tud´ıˇz oddˇelit k´od USB ˇradiˇce od k´odu zajiˇst’uj´ıc´ıho samotnou funkci pˇrij´ımaˇce DO. Jak´akoliv u ´prava funkˇcnosti m´a za n´asledek pracn´e pˇrepisov´an´ı t´emˇeˇr cel´eho programu.
1.2
C´ıl pr´ ace
C´ılem t´eto pr´ace je pˇrekonat st´avaj´ıc´ı stav softwarov´ ych USB ˇradiˇc˚ u vytvoˇren´ım nov´eho programov´eho ˇreˇsen´ı, kter´e bude pˇri n´avrhu dodrˇzovat n´asleduj´ıc´ı krit´eria: modularita funkˇcn´ıch celk˚ u, zapouzdˇrenost k´odu, pˇrenositelnost ˇreˇsen´ı uvnitˇr rodiny AVR, pouˇzit´ı levn´eho a dostupn´eho hardware a minimalizace poˇctu extern´ıch elektronick´ ych souˇc´astek. V r´amci dosaˇzen´ı takov´eho c´ıle budou realizov´ana 4 zaˇr´ızen´ı pracuj´ıc´ı na r˚ uzn´ ych frekvenc´ıch a typech mikrokontrol´er˚ u, aby bylo zˇreteln´e, v ˇcem tkv´ı v´ yhody a jak´e jsou hranice softwarov´eho USB ˇradiˇce.
1.3
Univerz´ aln´ı s´ eriov´ a sbˇ ernice - USB
Universal Serial Bus je standard organizace USB Implementers Forum. Definuje pr˚ umyslov´ y standard Univerz´aln´ı s´eriov´e sbˇernice a popisuje jej´ı vlastnosti, protokol, typy pˇrenos˚ u, hospodaˇren´ı s prostˇredky, potˇrebnou programovou podporu, elektrick´e a mechanick´e vlastnosti hardwaru. Existuj´ı tˇri verze specifikac´ı: USB 1.0, USB 1.1 a USB 2.0. V t´eto 1
pr´aci se budeme zab´ yvat v´ yhradnˇe verz´ı USB 1.1, jej´ıˇz specifikace je volnˇe k dispozici [?]. Mezi materi´aly, kter´e vysvˇetluj´ı USB 1.1 patˇr´ı tak´e dokument USB in a Nutshell [?], kter´ y je v´ıce didaktick´ y a pˇrehlednˇe popisuje principy komunikace po USB. Rozhran´ı je urˇceno pro komunikaci dvou elektronick´ ych pˇr´ıstroj˚ u - hostitele a zaˇr´ızen´ı (host a device). Hostitel (vˇetˇsinou osobn´ı poˇc´ıtaˇc) m˚ uˇze pˇripojit aˇz 127 zaˇr´ızen´ı. Komunikace je poloduplexn´ı, vˇzdy hostitelem iniciovan´a, neˇsifrovan´a, chr´anˇen´a cyklickou redundantn´ı kontrolou, pˇren´aˇsen´a po metalick´em diferenci´aln´ım veden´ı. Velikou v´ yhodou sbˇernice je pˇr´ıtomnost nap´ajec´ıch vodiˇc˚ u, ze kter´ ych lze ˇcerpat 500mA pˇri 5V. Modulaˇcn´ı rychlost m˚ uˇze b´ yt 1,5 Mbaud/s, 12 Mbaud/s nebo aˇz 480 Mbaud/s. Sbˇernice nativnˇe podporuje technologii Plug and Play, uˇzivatel se ˇza´dn´ ym zp˚ usobem ne´ uˇcastn´ı konfigurace zaˇr´ızen´ı, pouze je povinen dodat operaˇcn´ımu syst´emu potˇrebn´e ovladaˇce zaˇr´ızen´ı. Existuj´ı rozˇs´ıˇren´ı USB specifikace, tzv. tˇr´ıdn´ı specifikace, kter´e bl´ıˇze upravuj´ı povahu dat pˇren´aˇsen´ ych po USB sbˇernici a definuj´ı tˇr´ıdy zaˇr´ızen´ı. Usnadˇ nuj´ı tak n´avrh´aˇr˚ um v´ yvoj standardn´ıch zaˇr´ızen´ı, jako jsou myˇsi, kl´avesnice, komunikaˇcn´ı zaˇr´ızen´ı, u ´loˇziˇstˇe dat a mnoho dalˇs´ıch. Odstraˇ nuje se tak nutnost vym´ yˇslet opakovanˇe jiˇz existuj´ıc´ı protokoly, programovat ovladaˇce zaˇr´ızen´ı, knihovny i aplikaˇcn´ı software. V t´eto pr´aci je ˇca´steˇcnˇe vyuˇzita tˇr´ıda komunikaˇcn´ıch zaˇr´ızen´ı (Communication Device Class - CDC), kter´a poskytuje abstrakci s´eriov´e komunikace, v osobn´ıch poˇc´ıtaˇc´ıch rozˇs´ıˇren´e pod n´azvem COM port.
1.4
Mikroˇ radiˇ ce AVR
Firma Atmel vyr´ab´ı rodinu mikrokontrol´er˚ u AVR. Jedn´a se o jednoˇcipov´e mikropoˇc´ıtaˇce harwardovsk´e architektury s redukovanou instrukˇcn´ı sadou (RISC). Obsahuj´ı tˇri typy pamˇet´ı, 8-bitovou sbˇernici a mnoˇzstv´ı paralelnˇe pracuj´ıc´ıch periferi´ı. V´ ykon rodiny AVR spoˇc´ıv´a v efektivn´ı instrukˇcn´ı sadˇe - vˇetˇsina instrukc´ı trv´a 1 hodinov´ y takt, pˇriˇcemˇz maxim´aln´ı frekvence je 16 MHz aˇz 20 MHz. Typovˇe se dˇel´ı na obvody ATtiny a ATmega, hlavn´ı rozd´ıl je v poˇctu v´ yvod˚ u a schopnostech periferi´ı. Pouzdra, ve kter´ ych se obvody dod´avaj´ı, zahrnuj´ı klasick´e PDIP pouzdra i povrchovˇe montovan´e TQFP. Poˇcty v´ yvod˚ u jsou od 8 do 100. Cenovˇe se obvody pohybuj´ı kolem 50,- Kˇc. V´ yvojov´e prostˇred´ı je jednotn´e pro vˇsechny typy AVR mikrokontrol´er˚ u a je k dispozici zdarma. Kompil´ator jazyka C pro AVR (AVR GCC) je vyd´av´an pod licenc´ı GNU GPL.
1.5
Abstrakce zaˇ r´ızen´ı a ovladaˇ ce
Na elektronick´a zaˇr´ızen´ı lze nahl´ıˇzet jako na zdroje ˇci u ´loˇziˇstˇe informace. Pˇrestoˇze existuje cel´a ˇsk´ala navz´ajem velice odliˇsn´ ych zaˇr´ızen´ı, je moˇzn´e je pˇri abstraktn´ım pojet´ı jejich funkce rozdˇelit do dvou skupin. 2
• zaˇ r´ızen´ı blokov´ a - realizuj´ı funkci pamˇeti. Pro dan´ y index (adresu) z omezen´eho definiˇcn´ıho oboru dok´aˇz´ı uchovat urˇcit´e mnoˇzstv´ı dat. Poˇzaduje se, aby pro i ∈ (0, 1, 2, ..., n) : f (i) → (0, 1, ..., 2m ), kde n je kapacita zaˇr´ızen´ı a m je ˇs´ıˇrka datov´eho slova, byla funkce konstantn´ı v ˇcase. Podle toho, za jak´ ych okolnost´ı lze funkci f mˇenit (zapisovat do pamˇeti) se dˇel´ı na u ´loˇziˇstˇe doˇcasn´a a trval´a, zapisovateln´a nebo pouze pro ˇcten´ı (zapisovateln´a jednou). • zaˇ r´ızen´ı znakov´ a - funguj´ı jako zdroje/konzumenti datov´eho toku. Data, kter´a jsou ze/do zaˇr´ızen´ı pˇreˇctena/zaps´ana nemohou b´ yt vr´acena zpˇet. Neexistuje zde t´eˇz pojem adresy, protoˇze z datov´e posloupnosti je k dispozici vˇzdy jen jeden prvek. Typick´a znakov´a zaˇr´ızen´ı jsou kl´avesnice nebo termin´al. Operaˇcn´ı syst´em, kter´ y pracuje s blokov´ ymi a znakov´ ymi zaˇr´ızen´ımi, poskytuje jednotn´e rozhran´ı pro oba typy. Zaˇr´ızen´ı se naz´ yv´a soubor. Jsou definov´any funkce ˇcten´ı, ´ z´apisu a ˇr´ızen´ı (kde je zahrnuto nastaven´ı adresy pro blokov´a zaˇr´ızen´ı). Ukolem ovladaˇce zaˇr´ızen´ı je specifick´ ym zp˚ usobem realizovat funkce ˇcten´ı, z´apisu a ˇr´ızen´ı a t´ım vytvoˇrit most mezi abstraktn´ım pojet´ım souboru v r´amci operaˇcn´ıho syst´emu a mnoˇzinou re´aln´ ych periferi´ı, pro kter´e neexistuje abstraktn´ı model.
1.6
Hypot´ eza
Pr´ace je zaloˇzena na hypot´eze, ˇze pomoc´ı AVR mikroˇradiˇce a optimalizovan´eho k´odu v Assembleru lze sestrojit softwarov´ y USB ˇradiˇc. D´ale pomoc´ı tohoto softwarov´eho ˇradiˇce a doplˇ nuj´ıc´ıho programu v jazyce C lze vytvoˇrit USB zaˇr´ızen´ı pro pˇrenos uˇzivatelsk´ ych dat z osobn´ıho poˇc´ıtaˇce do periferie.
3
2
Anal´ yza
V t´eto kapitole bude rozebr´an souˇcasn´ y stav a pˇredvedena skupina n´astroj˚ u, kterou je moˇzn´e pouˇz´ıt pro nov´e ˇreˇsen´ı cel´e u ´lohy implementace USB ˇradiˇce.
2.1
Existuj´ıci ˇ reˇ sen´ı USB ˇ radiˇ c˚ u
Souˇcasn´a ˇreˇsen´ı USB ˇradiˇc˚ u obsahuj´ı dedikovan´e hardwarov´e ˇradiˇce (v samostatn´ ych pouzdrech), integrovan´e hardwarov´e ˇradiˇce (periferie mikrokontrol´eru) nebo softwarov´e ˇradiˇce. Vzhledem k tomu, ˇze se tato pr´ace zab´ yv´a implementac´ı softwarov´eho ˇradiˇce, bude kladen d˚ uraz na odstranˇen´ı nedostatk˚ u, kter´ ymi souˇcasn´a softwarov´a ˇreˇsen´ı trp´ı. 2.1.1
Obvody FTDI
Britsk´ y v´ yrobce Future Technology Devices International (FTDI) nab´ız´ı hardwarov´e USB ˇradiˇce realizuj´ıc´ı pˇrevod protokolu USB na jin´e datov´e sbˇernice (UART, parallel). Obvody nab´ızej´ı pˇrenosovou rychlost full-speed na stranˇe USB (12 MBaud/s). Pro sv˚ uj bˇeh potˇrebuj´ı 6 MHz krystal, mohou b´ yt doplnˇeny s´eriovou pamˇet´ı EEPROM (pro uloˇzen´ı deskriptor˚ u). Blokov´e sch´ema je na obr´azku 1. V´ yrobce nab´ız´ı bud’ ovladaˇce, kter´e funguj´ı jako virtu´aln´ı COM port, nebo jako obecn´e USB zaˇr´ızen´ı, ke kter´emu je nutn´e pˇristupovat vol´an´ım firemn´ıch knihovn´ıch funkc´ı. obvod FT232 FT245 FT2232 FT8U100AX
pˇ revod USB→UART USB→FIFO USB→2xUART USB→UART,PS2,KBD,hub
popis v´ ystup na s´eriovou linku paraleln´ı v´ ystup dvojit´ y v´ ystup na s´eriovou linku rozboˇcovaˇc kombinovan´ y se s´eriov´ ym v´ ystupem a PS2
Tabulka 1: Pˇrehled obvod˚ u firmy FTDI
v´ yhody vysok´a spolehlivost okamˇzit´a pouˇzitelnost virtu´aln´ı COM port seriov´e ˇcislo pro bezpeˇcnost
nev´ yhody obt´ıˇzn´a upravitelnost nutnost pouˇz´ıvat ovladaˇce v´ yrobce omezen´e pouˇzit´ı pro zaˇr´ızen´ı jin´e tˇr´ıdy vysok´a cena (aˇz 400,- Kˇc) latence pˇrenosu
Tabulka 2: Bilance obvod˚ u FTDI
4
Obr´azek 1: Blokov´e sch´ema obvodu FT232R firmy FTDI
Hardwarov´e dedikovan´e USB ˇradiˇce jsou nab´ızeny i jin´ ymi v´ yrobci a maj´ı obdobn´e vlastnosti. Napˇr. Atmel (AT76C712) nebo Silicon Labs (CT2102). 2.1.2
AVR AT90USB
Firma Atmel nab´ız´ı u ˇsesti model˚ u mikrokontrol´er˚ u rodiny AVR integrovan´ y hardwarov´ y USB ˇradiˇc. Pˇr´ıstup k ˇradiˇci se dˇeje pomoc´ı I/O adresn´ıho rozsahu mikrokontrol´eru. ˇ c je vybaven vlastn´ı pamˇet´ı dvouportovou DPRAM pro ukl´ad´an´ı pˇrijat´ Radiˇ ych/odes´ılan´ ych dat. Ud´alosti na USB sbˇernici jsou transformov´any do sady pˇreruˇsen´ı, d´ıky ˇcemuˇz lze v´est komunikaci s minim´aln´ımi ˇcasov´ ymi n´aklady. Periferie dok´aˇze probudit zbytek ˇ c podporuje jak kontrol´eru z u ´sporn´eho reˇzimu (na z´akladˇe pˇr´ıchoz´ıho paketu). Radiˇ low-speed, tak full-speed rychlosti, obsahuje vlastn´ı gener´ator hodinov´eho sign´alu (48 MHz) a vlastn´ı low-drop regul´ator na 3,3 V. Integrovan´e USB ˇradiˇce se st´avaj´ı standardn´ı vstupnˇe/v´ ystupn´ı periferi´ı a mladˇs´ı architektury mikrokontrol´er˚ u (ARM7 a v´ yˇse) je ˇcasto obsahuj´ı. Vytlaˇcuje se tak pouˇzit´ı extern´ıch ˇradiˇc˚ u s omezen´ ymi schopnostmi. Kromˇe mikrokontrol´er˚ u Atmel se USB
5
Obr´azek 2: Integrovan´ y USB ˇradiˇc v AVR mikrokontrol´eru v´ yhody spolehlivost vˇse v jednom pouzdˇre libovoln´a funkˇcnost moˇznost programov´an´ı ˇcipu pˇres USB
nev´ yhody potˇreba zkuˇsen´eho n´avrh´aˇre problematick´a kusov´a dostupnost vysok´a cena (500,- Kˇc)
Tabulka 3: Hodnocen´ı obvod˚ u AVR
ˇradiˇce objevuj´ı i u firmy Microchip (napˇr. model PIC16F745) a u ˇrady jin´ ych v´ yrobc˚ u (Texas Instruments TUSB3210, Realtek, UbiCom).
6
obvod AT90USB1286 AT90USB1287 AT90USB162 AT90USB646 AT90USB647 AT90USB82
Flash 128 kB 128 kB 16 kB 64 kB 64 kB 8 kB
RAM 8 kB 8 kB 512 B 4 kB 4 kB 512 B
E2 PROM 4kB 4kB 512 B 2 kB 2 kB 512 B
pouzdro QFN 64 TQFP 64, QFN 64 TQFP 32, QFN 32 QFN 32 TQFP 32, QFN 32 QFN 32
schopnosti USB USB, On-the-Go USB USB USB, On-the-Go USB
Tabulka 4: Pˇrehled obvod˚ u AT90USB
2.1.3
ˇ ska IgorPlug Igora Ceˇ
N´apad realizovat USB ˇradiˇc zcela softwarovˇe na mikrokontrol´eru, kter´ y USB hardwaˇ skem, kter´ rovˇe nepodporuje, byl uskuteˇcnˇen Igorem Ceˇ y v mikrokontrol´eru ATtiny2313 implementoval pˇrij´ımaˇc IR d´alkov´eho ovl´ad´an´ı. K´od je ps´an plnˇe v AVR assembleru.
Obr´azek 3: Sch´ema pˇrij´ımaˇce IgorPlug
Autor pouˇz´ıv´a syst´emov´e hodiny 12 MHz a z´ısk´av´a tak 8 hodinov´ ych takt˚ u na pˇrijet´ı jednoho bitu USB low-speed sign´alu (1,5 MBaud/s). Pˇrij´ımac´ı rutiny pouze vzorkuj´ı USB sbˇernici, deserializuj´ı bitov´ y tok a po bytech jej ukl´adaj´ı do SRAM. Dalˇs´ı operace (odstranˇen´ı kan´alov´eho k´odov´an´ı, odstranˇen´ı bit stuffingu a rozbor-parsov´an´ı) jsou ˇreˇseny aˇz po u ´pln´em pˇrijet´ı paketu. Spr´avn´e ˇcasov´an´ı (1,5 MHz) je zajiˇstˇeno vy7
kon´av´an´ım konstantn´ıho poˇctu instrukc´ı na pˇrijet´ı jednoho bitu. Odes´ılac´ı rutina je ˇcasovˇe m´enˇe kritick´a a proto stihne v 8 taktech/bit pˇridat kan´alov´e k´odov´an´ı i bit ˇ sen´ı je stuffing v re´aln´em ˇcase a nen´ı nutn´e paket k´odov´an´ım opatˇrovat pˇredem. Reˇ v hlavn´ıch rysech shodn´e s uk´azkov´ ym ˇreˇsen´ım pro ATtiny13 na 12MHz, kterou pro ilustraci prezentuje i tato pr´ace. v´ yhody n´ızk´a cena (40,- Kˇc) bezprobl´emov´a dostupnost mal´e fyzick´e rozmˇery
nev´ yhody vysok´e n´aroky na zkuˇsenost n´avrh´aˇre poruˇsen´ı USB specifikace nezaruˇcen´a spolehlivost programov´an´ı vlastn´ıho ovladaˇce
Tabulka 5: Hodnocen´ı softwarov´eho ˇreˇsen´ı USB ˇradiˇce IgorPlug
2.2 2.2.1
Rozbor vlastnost´ı USB Souhrnn´ e vlastnosti USB 1.1
• s´eriov´a poloduplexn´ı sbˇernice s pˇrenosovou rychlost´ı 1,5 Mbaud (low speed) a 12 Mbaud (full speed) • elektricky je sign´al pˇren´aˇsen po diferenci´aln´ım veden´ı a je galvanicky spojen s nap´ajec´ım (Vbus) a zemn´ıc´ım (GND) vodiˇcem • zaˇr´ızen´ı mohou b´ yt nap´ajena pˇr´ımo pˇres vodiˇce Vbus a GND, ale musej´ı m´ıt omezenou spotˇrebu (<500 mA) a schopnost u ´sporn´eho reˇzimu. • linkov´a vrstva pouˇz´ıv´a NRZI k´odov´an´ı a bit stuffing, pakety jsou chr´anˇeny CRC16 nebo CRC5 • de facto se nejedn´a o sbˇernici, ale o propojen´ı PTP (point-to-point) mezi hostitelem (host) nebo hubem a zaˇr´ızen´ım (device) • s´ıt’ov´a topologie je stromov´eho typu, v kaˇzd´em uzlu je um´ıstˇen pˇrep´ınaˇc (switch, ale naz´ yv´an USB hub) • z hlediska transportn´ı vrstvy (roura mezi odes´ılatelem a pˇr´ıjemcem) je cel´e pˇrenosov´e m´edium transparentn´ı • zaˇr´ızen´ı mohou obsahovat aˇz 7 rour (pipe) a v´ıce konfigurac´ı, zaˇr´ızen´ı se sama enumeruj´ı a splˇ nuj´ı specifikaci Plug and Play • maxim´aln´ı poˇcet USB zaˇr´ızen´ı pˇripojen´ ych k jednomu koˇrenov´emu pˇrep´ınaˇci je 127
8
2.2.2
Elektrick´ a vrstva
Diferenci´aln´ı veden´ı o impedanci 90 ohm slouˇz´ı pro obousmˇernou komunikaci. Pˇr´ıstup k m´ediu je deterministick´ y a nem˚ uˇze na nˇem doj´ıt ke kolizi, protoˇze komunikace je vˇzdy iniciov´ana hostitelem. Oba diferenci´aln´ı vodiˇce jsou na obou stran´ach veden´ı buzeny CMOS hradly (obr´azek 4) se s´eriovˇe zapojen´ ymi rezistory (28 aˇz 44 Ω), slouˇz´ıc´ımi jako impedanˇcn´ı pˇrizp˚ usoben´ı. Hostitel i zaˇr´ızen´ı maj´ı moˇznost odpojen´ı budic´ıho hradla od linky pro pˇr´ıpad, kdy pˇrech´azej´ı z vys´ılac´ıho do pˇrij´ımac´ıho reˇzimu.
Obr´azek 4: Budiˇce USB diferenci´aln´ıho veden´ı ´ Urovnˇ e jsou na diferenci´aln´ıch vodiˇc´ıch pro klidov´ y stav (hostitel i zaˇr´ızen´ı jsou odpojen´e) na stranˇe hostitele urˇceny dvˇema pull-down rezistory a na stranˇe zaˇr´ızen´ı jedn´ım pull-up rezistorem. Pˇripojen´ım pull-up rezistoru k D+ nebo D- vodiˇci se zaˇr´ızen´ı identifikuje bud’ jako full-speed nebo jako low-speed (tabulka 6). S t´ım se mˇen´ı tak´e poˇc´ateˇcn´ı podm´ınka pro v´ ypoˇcet NRZI (tabulka 7).
low-speed full-speed
pull up D+ 1,5k
pull up D1,5k -
Tabulka 6: Volba rychlosti pomoc´ı pull-up rezistor˚ u
low-speed full-speed
D+ 0V 3,3 V
D3,3 V 0V
poˇca´teˇcn´ı stav D+ 0 1
Tabulka 7: Klidov´e hodnoty na diferenci´aln´ıch vodiˇc´ıch Pˇr´ıtomnost spoleˇcn´eho potenci´alu na obou diferenci´aln´ıch vodiˇc´ıch po dobu alespoˇ n dvou bit˚ u znamen´a konec paketu a je oznaˇcov´ana jako SE0. 9
2.2.3
Mechanick´ aˇ c´ ast
Diferenci´aln´ı veden´ı se realizuj´ı kroucenou dvojlinkou se zemnˇen´ ym pl´aˇstˇem (obr´azek 5).
Obr´azek 5: Kabel USB Konektory se na stranˇe hostitele a na stranˇe zaˇr´ızen´ı liˇs´ı, takˇze nelze spojit dva hostitele nebo dvˇe zaˇr´ızen´ı k sobˇe. Typ A (samice) je na stranˇe hositele a tyb B (samec) je na stranˇe zaˇr´ızen´ı. U miniaturn´ıch zaˇr´ızen´ı se nemus´ı pouˇz´ıvat propojovac´ı A-B kabel, ale zaˇr´ızen´ı je pˇr´ımo opatˇreno konektorem typu A (samec). pin 1 2 3 4
v´ yznam Vcc DD+zelen´a GND
barva vodiˇ ce ˇcerven´a b´ıl´a ˇcern´a
Tabulka 8: Znaˇcen´ı vodiˇc˚ u
2.2.4
Linkov´ a vrstva
Pˇren´aˇsen´e element´arn´ı datov´e struktury se naz´ yvaj´ı pakety. MTU (maximal transfer unit) neboli maxim´aln´ı poˇcet byt˚ u v paketu (bez hlaviˇcek a CRC) je pro 0. endpoint
A (samec)
B (samice)
Obr´azek 6: USB konektory 10
ˇ a 8,16,32 nebo 64 byt˚ u, pro ostatn´ı endpointy je voliteln´ y v Endpoint descriptoru. Cist´ data je tedy tˇreba rozdˇelit na v´ıce paket˚ u, opatˇrit je hlaviˇckami a cyklickou redundantn´ı kontrolou. D´ale je nutn´e prov´est bit stuffing (za kaˇzdou 6. jedniˇcku mus´ı b´ yt vloˇzena nula), ˇc´ımˇz m˚ uˇze vzniknout neceloˇc´ıseln´ y poˇcet byt˚ u k pˇrenesen´ı. Pot´e se data zak´oduj´ı kan´alov´ ym k´odov´an´ım NRZI (Non-Return to Zero Invert), kter´e nulu k´oduje jako zmˇenu u ´rovnˇe a jedniˇcku jako setrv´an´ı v u ´rovni. Pro bit v ˇcase t plat´ı line(t)=line(t-1) xor (!bit(t)). Realizace m˚ uˇze probˇehnout pomoc´ı D klopn´eho obvodu (DFF) na obr´azku 7.
Obr´azek 7: NRZI kod´er Procesy linkov´e vrstvy (bit stuffing a NRZI) jsou zobrazen´e na obr´azku 8.
Obr´azek 8: Pˇr´ıklad bit stuffingu a NRZI k´odov´an´ı
Vˇsechny operace jsou bitovˇe orientovan´e a lze je tedy pˇrepsat do kask´ady proudov´ ych filtr˚ u (obr´azek 9), kter´e maj´ı za vstup bitov´ y tok dat (LSb i LSB se pos´ılaj´ı nejdˇr´ıve). Skuteˇcnost, ˇze data se zpracov´avaj´ı bit po bitu nahr´av´a realizaci USB ˇradiˇce na hradlov´em poli nebo pomoc´ı bitov´eho stavov´eho automatu. Rozhodnˇe vˇsak nelze data zpracov´avat instrukcemi procesoru po cel´ ych bytech. Budeme-li napˇr´ıklad vstupn´ı proud zpracov´avat procesorem, bude se jednat o operace nad kaˇzd´ ym jedn´ım bitem a teprve aˇz po proveden´ı vˇsech dek´odov´an´ı a CRC v´ ypoˇct˚ u bude moˇzn´e data deserializovat a skladovat po bytech.
11
Obr´azek 9: Proudov´e filtry v´ ystupn´ı ˇc´asti ˇradiˇce
V pˇr´ıpadˇe, ˇze odes´ılan´a data jsou dopˇredu zn´ama, je moˇzn´e vylouˇcit z kask´ady filtr˚ u v´ ypoˇcet CRC16 a jeho pˇredpoˇc´ıtanou hodnotu zaˇradit za data paketu. 2.2.5
Cyklick´ a redundantn´ı kontrola
Obsah paket˚ u je doplnˇen 16-bitov´ ym ˇc´ıslem, takzvanou cyklickou redundantn´ı kontrolou (CRC). Odes´ılatel poˇc´ıt´a CRC pro odeslanou zpr´avu a hodnotu CRC pˇrikl´ad´a na konec paketu. Pˇr´ıjemce m´a dvˇe moˇznosti, jak zkontrolovat spr´avnost paketu: 1. pˇr´ıjemce pˇreˇcte paket, kter´ y se skl´ad´a z dat (payload) a z dvoubytov´eho CRC. Pˇr´ıjemce pro data spoˇc´ıt´a CRC a porovn´a ji s pˇrijatou CRC. Pokud se obˇe ˇc´ısla shoduj´ı, paket dorazil spr´avnˇe. Pˇr´ıjemce bud’ potˇrebuje vˇedˇet dopˇredu, jak dlouh´a jsou data (to je na USB sbˇernici nemoˇzn´e), a nebo bude poˇc´ıtat CRC s dvoubytov´ ym zpoˇzdˇen´ım a pˇri konci paketu bude jist´e, ˇze v´ ypoˇcet probˇehl pouze nad daty a ne nad pˇrij´ıman´ ym CRC. 2. pˇr´ıjemce pˇreˇcte paket a CRC spoˇc´ıt´a z cel´eho jeho obsahu. Cyklick´a redundantn´ı kontrola obecnˇe m´a tu vlastnost, ˇze pˇrij´ım´ame-li stejnou posloupnost bit˚ u, jak´a byla obsahem CRC registru, pak dostaneme vˇzdy stejn´ y v´ ysledek (tzv. zbytek, residual). CRC spoˇc´ıtan´e z cel´eho paketu tedy mus´ı vyj´ıt pro kaˇzd´ y spr´avnˇe pˇrijat´ y paket vˇzdy stejnˇe. Pro n´aˇs pˇr´ıpad je zbytek 0x800D, zrcadlovˇe 0x4FFE. USB specifikace definuje poˇrad´ı odes´ılan´ ych bit˚ u jako LSb first, tedy nejm´enˇe v´ yznamn´ y bit je odes´ıl´an nejdˇr´ıve. Pokud m´ame data uloˇzena v registru, mus´ıme prov´est pravou rotaci (rotate through carry right). T´ım se vˇzdy nejm´enˇe v´ yznamn´ y bit odebere a zpracuje. Po proveden´ı sedmi rotac´ı zbyde v registru nejv´ıce v´ yznamn´ y bit - a ke zpracov´an´ı se tedy dostane jako posledn´ı. Je v´ yhodn´e, aby reprezentace vˇsech ˇc´ısel, kter´a se chyst´ame po USB sbˇernici odeslat, mˇela shodn´e poˇrad´ı bit˚ u. Zvykem je, ˇze bin´arn´ı ˇc´ısla (a obecnˇe ˇc´ısla) se zapisuj´ı zleva doprava od MSb po LSb. V´ ypoˇcet CRC je moˇzno prov´est dvˇema zp˚ usoby. Prvn´ı je uveden v USB specifikaci a pouˇz´ıv´a generuj´ıc´ı polynom x16 + x15 + x2 + 1 s bin´arn´ım vyj´adˇren´ım 0x8005 a zbytkem 0x800D. Pˇri generov´an´ı se ale nepochopitelnˇe pouˇz´ıv´a lev´a rotace (pˇrestoˇze vˇsechna data jsou pˇri vys´ıl´an´ı rotov´ana doprava) a t´ım vznik´a potˇreba CRC pˇred 12
odesl´an´ım zrcadlovˇe pˇrevr´atit. Druh´ y zp˚ usob v´ ypoˇctu pouˇz´ıv´a stejn´ y generuj´ıc´ı polynom, ale protoˇze pouˇz´ıv´a spr´avnˇe pravou rotaci, mus´ı b´ yt jeho bin´arn´ı vyj´adˇren´ı jin´e, tedy 0xA001 a zbytek 0x4FFE. Rozd´ıl mezi metodami je kromˇe poˇrad´ı bit˚ u tak´e v poˇca´teˇcn´ıch hodnot´ach registr˚ u. 1. metoda v´ ypoˇ ctu CRC16: 1. 2. 3. 4. 5.
poˇca´teˇcn´ı hodnota CRC je 0xFFFF CRC=(CRC shl 1), pˇriˇcemˇz vysunut´ y bit (MSb) je pˇredmˇetem dalˇs´ıho v´ ypoˇctu pokud je MSb r˚ uzn´ y od vstupn´ıho bitu (xor je 1), pak CRC=CRC xor 0x8005 pro vˇsechny vstupn´ı bity opakovat od bodu 2, jinak skonˇcit budeme-li CRC odes´ılat, mus´ıme jej zrcadlovˇe pˇrevr´atit (15. bit na 0., 14. bit na 1., atd.) a znegovat (xor 0xFFFF) 6. byl-li CRC poˇc´ıt´an pro kontrolu pˇr´ıchoz´ıho paketu, mus´ı se pro bezchybn´ y paket rovnat zbytku 0x800D Medota 1. je nevhodn´a kv˚ uli bodu 5), kdy je potˇreba zrcadlovˇe pˇrevracet a negovat CRC. 2. metoda v´ ypoˇ ctu CRC16: 1. poˇca´teˇcn´ı hodnota CRC je 0x0000 2. CRC=(CRC shr 1) or 0x8000, pˇriˇcemˇz vysunut´ y bit (LSb) je pˇredmˇetem dalˇs´ıho v´ ypoˇctu 3. pokud je LSb stejn´ y jako vstupn´ı bit (xor je 0), pak CRC=CRC xor 0xA001 4. pro vˇsechny vstupn´ı bity opakovat od bodu 2, jinak skonˇcit 5. budeme-li CRC odes´ılat, m˚ uˇzeme jej pouˇz´ıt bez jak´ekoliv u ´pravy 6. byl-li CRC poˇc´ıt´an pro kontrolu pˇr´ıchoz´ıho paketu, mus´ı se pro bezchybn´ y paket rovnat zbytku 0x4FFE 2. metoda je ekvivalentn´ı k 1., ale je zrcadlovˇe pˇrevr´acen´a od zaˇca´tku a m´enˇe n´aroˇcn´a na v´ ypoˇcet.
Obr´azek 10: V´ ypoˇcet CRC16 pomoc´ı shift registru s DFF
13
V´ ypoˇcet CRC je moˇzn´e hardwarovˇe realizovat shift registrem, jehoˇz nˇekter´e prvky maj´ı moˇznost znegovat sv˚ uj obsah (funkce XOR - negace na masku). U takov´eho CRC shift registru nem´a smysl hovoˇrit o lev´e nebo prav´e rotaci, protoˇze poˇrad´ı dat vstupu a v´ ystupu je zaruˇcenˇe stejn´e a nevznik´a zde zmatek ohlednˇe poˇrad´ı bit˚ u. Shift registr pro poˇca´teˇcn´ı hodnotu 0x0000 je uveden na obr´azku 10. Programovˇe lze v´ ypoˇcet CRC nahradit vol´an´ım procedury crcpipe pro kaˇzd´ y pˇrijat´ y bit: Bliˇzˇs´ı n´avod, jak pˇristupovat k zaˇr´ızen´ım, je moˇzn´e z´ıskat prostudov´an´ım knihoven, kter´e jsou souˇc´ast´ı ovladaˇcov´eho bal´ıku USBIO, nebo konkr´etnˇe nahl´ednut´ım do souy byl pouˇzit pro v´ yvoj demonstraˇcn´ı aplikace. Jednoduch´e n´azvy boru usbio i.pas, kter´ (pro DOS) nejsou ovladaˇcem exportov´any a proto nelze pouˇz´ıt jednoduch´e cesty, jako tomu je u pˇredchoz´ıch 3 pˇr´ıpravk˚ u.
14