ýESKÉ VYSOKÉ UýENÍ TECHNICKÉ V PRAZE Fakulta elektrotechnická Katedra mČĜení
Snímaþ polohy využívající obrazové informace Image Based Position Sensor Diplomová práce Praha, leden 2011
Autor: Petr BČlík Vedoucí práce: doc. Ing. Jan Fischer, CSc. Studijní program: Kybernetika a mČĜení Studijní obor: MČĜicí a pĜístrojové systémy
Anotace Diplomová práce se zabývá vývojem snímaþe polohy s CMOS obrazovým senzorem a signálovým procesorem Blackfin ADSP BF-532. Hlavními rysy zaĜízení jsou minimální obvodová konfigurace, prĤbČžné zpracování obrazové informace ze senzoru a rychlé mČĜení polohy objektu pro využití v nejrĤznČjších úlohách regulace. Snímaþ polohy je realizován na plošném spoji se stejnými rozmČry jako má deska obrazového senzoru a je opatĜen konektorem pro vzájemné modulární propojení tČchto dvou zaĜízení. Dále disponuje Ĝadiþem High-Speed USB 2.0 pro pĜenos obrazu, komunikaci s PC a programování bootovací pamČti procesoru. KromČ rozhraní USB je snímaþ polohy vybaven ještČ procesorovými rozhraními UART, SPORT, JTAG a GPIO, která jsou vyvedena na konektory a mohou být použita pro mnohé aplikace v mČĜicí technice. Nedílnou souþástí práce je software pro spolupráci s PC a vlastní implementace algoritmĤ.
Annotation This thesis deals with the development of position measuring element with CMOS image sensor and DSP Blackfin ADSP BF-532. The main features of this device are minimal circuit configuration, On-The-Fly image processing and rapid position measurement for use in various regulation tasks. The position sensor is implemented on the PCB with the same format as the CMOS sensor board and it has a connector for modular connection of these two devices. The sensing device has also a High-Speed USB 2.0 controller for image transmission, communication with PC and programming processor booting memory. Besides USB interface, there are also UART, SPORT, JTAG and GPIOs, which are available on connectors for the next various usage in the applied measurement engineering. An integral part of this thesis is software for cooperation with PC and the appropriate implementation of algorithms.
ýestné prohlášení autora práce Prohlašuji, že jsem pĜedloženou práci vypracoval samostatnČ a že jsem uvedl veškeré použité informaþní zdroje v souladu s Metodickým pokynem o dodržování etických principĤ pĜi pĜípravČ vysokoškolských závČreþných prací. Tato práce vznikla v laboratoĜi videometrie, katedry mČĜení ýVUT - FEL v Praze pod vedením doc. Ing. Jana Fischera, CSc. Navazuje též na výzkum v rámci MSM6840770015 - "Výzkum metod a systémĤ pro mČĜení fyzikálních veliþin a zpracování namČĜených dat", jehož nČkteré poznatky a výstupy v oblasti optoelektronických senzorĤ také využívá.
V Praze dne ..............................
........................................ Podpis autora práce
PodČkování DČkuji pĜedevším doc. Ing. Janu Fischerovi, CSc. za aktivní vedení práce, mnoho pĜínosných konzultací a snahu o okamžité Ĝešení vzniklých problému. Dále dČkuji doktorandĤm laboratoĜe videometrie katedry mČĜení Ing. Ondreji Pribulovi, Ing. Janu Šedivému a Ing. Janu Pohankovi za cenné rady bČhem vývoje zaĜízení. UpĜímné podČkování patĜí také mým rodiþĤm za pochopení a stoprocentní podporu bČhem celého studia a mým dalším blízkým za pomoc s korekcí chyb v tomto textu.
Obsah 1
2
Úvod..................................................................................................................................... 9 1.1
MČĜení polohy ............................................................................................................. 9
1.2
Použitelnost obrazových senzorĤ CMOS pro snímaþe polohy ................................. 10
1.3
Princip funkce CMOS senzorĤ.................................................................................. 10
1.4
Urþení polohy objektu z obrazových dat................................................................... 12
1.5
Princip funkce PSD senzorĤ jejich využití k mČĜení polohy .................................... 13
1.6
Urþení polohy objektu z obrazových dat signálovým procesorem ........................... 15
1.7
Cíl práce a pĜedstava o výsledné podobČ snímaþe polohy ........................................ 16
Postup vývoje vlastního hardware.................................................................................. 18 2.1
Shrnutí požadavkĤ na snímaþ polohy z hardwarového hlediska............................... 18
2.2
Volba USB Ĝadiþe...................................................................................................... 19 2.2.1
FT245R s programováním EEPROM v režimu Bit Bang............................. 21 2.2.1.1 Ovládání asynchronního Bit Bang módu USB Ĝadiþe FT245R na stranČ PC pod operaþním systémem Windows ......................... 23 2.2.1.2 Obslužný program Ĝadiþe FT245R pro generování programovacích prĤbČhĤ na SPI sbČrnici ...................................... 26 2.2.1.3 Zhodnocení a uplatnČní programátoru EEPROM 25LC256 v módu Bit Bang u obvodu FT245R .............................................. 29
2.2.2
FT232R s programováním EEPROM v režimu Bit Bang............................. 30
2.2.3 Obvod FT2232H ve funkci programátoru EEPROM a USB Ĝadiþe pro rychlý pĜenos obrazových dat ....................................................................... 31 2.2.3.1 Popis nČkterých konfigurovatelných režimĤ Ĝadiþe FT2232H a možnost jejich uplatnČní v zapojení snímaþe polohy.................. 32 2.2.3.2 Výsledná koncepce zapojení Ĝadiþe FT2232H pro pĜenos dat z procesoru BF–53x a programování bootovací pamČti EEPROM........................................................................................ 34 2.2.3.3 Programování EEPROM obvodem FT2232H v režimu MPSSE SPI .................................................................................................. 35 2.2.3.4 PĜenos dat USB Ĝadiþem FT2232H mezi PC a BF–53x................. 38 2.2.3.5 Zhodnocení vlastností programátoru EEPROM s FT2232H v režimu MPSSE SPI a paralelního 8–bitového pĜenosu dat ......... 40
-6-
2.3
Procesorová þást snímaþe polohy.............................................................................. 43 2.3.1
Struþný pĜehled vlastností procesorĤ Blackfin Ĝady BF–53x........................ 43
2.3.2
Propojení procesoru BF–53x s obrazovým senzorem................................... 44 2.3.2.1 Komunikace I2C ............................................................................. 45 2.3.2.2 ěídicí signály.................................................................................. 47 2.3.2.3 Signály pro pĜenos obrazových dat ................................................ 47 2.3.2.4 Synchronizaþní signály .................................................................. 48 2.3.2.5 Hodinové signály............................................................................ 49 2.3.2.6 Rozvod napájecího napČtí .............................................................. 49
2.3.3
Periferní obvody procesoru ........................................................................... 50 2.3.3.1 Hodinový systém............................................................................ 50 2.3.3.2 Resetovací obvod ........................................................................... 51 2.3.3.3 Bootování procesoru a pamČĢ EEPROM ....................................... 52
2.3.4 Uživatelská rozhraní snímaþe polohy ........................................................... 54 2.3.4.1 UART, þasovaþ, sériová linka RS–232/485................................... 54 2.3.4.2 Rozhraní GPIO (Programmable Flags) .......................................... 55 2.3.4.3 Sériový port SPORT....................................................................... 57 2.3.4.4 Ladicí rozhraní JTAG..................................................................... 58 2.3.5 3
Napájecí systém............................................................................................. 59
Softwarová þást vývoje..................................................................................................... 61 3.1
PĜenos obrazu ze senzoru do PC ............................................................................... 61 3.1.1 Nastavení GPIO linek a konfigurace jednotky PLL...................................... 61 3.1.2 Rychlý pĜenos velkého objemu dat z procesoru do USB Ĝadiþe ................... 63 3.1.2.1 Maximalizace zapisovací rychlosti procesoru do Ĝadiþe FT2232H ........................................................................................ 65 3.1.2.2 Zpomalení toku dat z obrazového senzoru..................................... 68 3.1.2.3 Kontinuální vyþítání dat z USB zaĜízení na stranČ PC a jejich následné zpracování ....................................................................... 70 3.1.3 Konfigurace PPI rozhraní a DMA kanálu pro pĜenos dat z CMOS senzoru do vnitĜní pamČti.............................................................................. 72 3.1.4 Softwarová implementace I2C rozhraní a nastavení registrĤ CMOS senzoru .......................................................................................................... 74
-7-
3.2
Hledání tČžištČ svČtelné stopy ................................................................................... 76 3.2.1
Výpoþetní metoda urþení tČžištČ svČtelné stopy z obrazových dat ............... 76
3.2.2
Rozbor algoritmu pro výpoþet tČžištČ jedné svČtelné stopy pouze s vnitĜní pamČtí SRAM .................................................................................... 77
3.2.3 Situace pĜi více svČtelných stopách v obraze ................................................ 79 3.2.4 Nastavení obrazového senzoru, pĜenos informace o poloze objektu do PC a grafické vyobrazení v demonstraþní aplikaci ....................................... 80 4
ZávČr.................................................................................................................................. 82 4.1
4.2
Shrnutí dosažených výsledkĤ .................................................................................... 82 4.1.1
MČĜení polohy svČtelné stopy ....................................................................... 83
4.1.2
PĜenos obrazu ze senzoru v plném rozlišení do poþítaþe .............................. 84
4.1.3
Návrh plošného spoje .................................................................................... 84
Perspektiva a možnosti využití snímaþe polohy ....................................................... 85 4.2.1 Integrace zaĜízení do prostĜedí LabView a packetová komunikace mezi snímaþem polohy a PC.................................................................................. 85 4.2.2
Další aplikovatelnost zaĜízení v úlohách mČĜicí techniky............................. 86
5
Seznam obrázkĤ a tabulek .............................................................................................. 87
6
Seznam odborné literatury.............................................................................................. 89
7
PĜílohy ............................................................................................................................... 93 7.1
PĜíloha A: Fotodokumentace..................................................................................... 93
7.2
PĜíloha B: Výkresy DPS (60 × 60 mm) a osazovací pĜedlohy.................................. 96
7.3
PĜíloha C: Soupiska souþástek .................................................................................. 98
-8-
1 Úvod 1.1 MČĜení polohy PĜesné a rychlé mČĜení polohy urþitých objektĤ je v souþasné dobČ požadováno v mnoha odvČtvích lidské þinnosti. Jestliže je poloha zaznamenávána v þase, pak je možné polohu analyzovat jako pohyb, þehož se využívá napĜíklad v: •
prĤmyslu – Ĝízení strojĤ, robotĤ, nárazové testy automobilĤ, sledování stopy,
•
zdravotnictví – prevence úrazĤ, rehabilitace, pĜedoperaþní vyšetĜení, virtuální operace,
•
fyzioterapie – analýza chĤze, hodnocení výkonu, trénování, efektivita rehabilitace,
•
psychologie – interakce ve virtuální realitČ, studie chování lidí a zvíĜat,
•
animace obrazu – speciální efekty, oživení videoher, kreslené filmy, choreografie a další, viz [1]. OborovČ nejbližší pĜíklad využití informace o poloze mĤže být v automatizaci, kdy
regulaþní smyþku tvoĜí snímaþ polohy, regulátor a akþní þlen (polohovací mechanismus), viz obr. 1.1. Poloha objektu je v tomto pĜípadČ mČĜena snímaþem polohy, a pokud se liší od polohy požadované, polohovací mechanismus ji zaþne okamžitČ regulovat. Na tomto pĜíkladČ se také vysvČtluje požadavek na rychlost poskytování informace o poloze – vliv velkého zpoždČní informace o poloze od zmČny polohy objektu by zpĤsoboval velkou setrvaþnost pĜi regulaci.
Obr. 1.1 Schematické znázornČní úlohy snímaþe polohy v regulaþní smyþce
V souþasnosti existuje velká Ĝada snímaþĤ polohy, které fungují na nejrĤznČjších fyzikálních principech. Použití vhodného typu snímaþe vždy záleží na konkrétní aplikaci. Pro ilustraci, snímaþe polohy lze zjednodušenČ rozdČlit podle principu na odporové, indukþnostní, kapacitní a optoelektronické. Bližší rozbor jednotlivých typĤ je vysvČtlen v [2]. Tato práce se zamČĜuje pouze na úzkou þást optoelektronických snímaþĤ polohy, konkrétnČ na snímaþe polohy -9-
s obrazovými senzory CMOS, doplnČných vhodným objektivem. Více je pozdČji zmínČno v kapitolách 1.2 a 1.3. Optoelektronické snímaþe patĜí do skupiny bezdotykových snímaþĤ, tzn. mČĜený systém není snímaþem prakticky ovlivĖován a odpadá potĜeba kontaktního spojení systému a snímaþe, což je v nČkterých pĜípadech požadavek zcela zásadní. Polohu lze urþovat jednak v 2D rovinČ s jedním snímaþem, ale i v 3D prostoru pomocí snímaþĤ dvou, které se spolu s mČĜeným objektem nastaví do urþité geometrické konfigurace, z níž pak metody pro urþení souĜadnic vycházejí. PodrobnČji pojednává o urþování souĜadnic polohy v prostoru a o stereovidČní napĜ. [3].
1.2 Použitelnost obrazových senzorĤ CMOS pro snímaþe polohy Za poslední desetiletí došlo k mohutnému nárĤstu rozvoje obrazových senzorĤ CMOS a dnes je možné se s nimi setkat prakticky ve všech oblastech. V podstatČ lze CMOS senzory rozdČlit do dvou základních kategorií: •
„low–end“ (senzory masovČ používané ve spotĜební elektronice jako jsou mobilní telefony, webkamery, osobní automobily, þteþky þárových kódĤ, zabezpeþovací technika, hraþky) a
•
„high–end“ (velmi kvalitní senzory s vysokým rozlišením, které mají uplatnČní napĜ. ve fotoaparátech, HD kamerách, lékaĜství, prĤmyslu, strojovém vidČní atd.).
Se vzrĤstajícím uplatnČním CMOS senzorĤ na trhu a s jejich masovou výrobou dochází zákonitČ k poklesu jejich poĜizovací ceny, což platí u obou výše uvedených kategorií [4]. RelativnČ nízká cena a dostupnost CMOS obrazových senzorĤ vedla k myšlence použití pĜi vývoji snímaþe polohy, kdy z pĤvodního urþení – senzoru obrazu – má vzniknout senzor polohy. MČlo tak dojít k „degradaci“ obrazového senzoru k principiálnČ blízkému PSD senzoru. Oba dva principy jsou uvedeny v následujících kapitolách.
1.3 Princip funkce CMOS senzorĤ Princip plošného obrazového CMOS senzoru je vysvČtlen podle blokového schématu senzoru Micron MT9M001 na obr. 1.2. VnitĜní bloková zapojení CMOS senzorĤ rĤzných výrobcĤ jsou pochopitelnČ þásteþnČ odlišná (možnost nastavení dČliþky hodin, typ elektronické závČrky, RGB obraz, množství konfigurovatelných parametrĤ, atd.), avšak základní princip zĤstává stejný.
- 10 -
Obr. 1.2 Blokové schéma plošného obrazového senzoru CMOS (Micron MT9M001) 1
Získání obrazové informace zaþíná v poli fotoelektrických elementĤ, což je uspoĜádaná matice bunČk, sestávajících z MOS tranzistorĤ a fotodiody. PĜed expozicí jsou všechny buĖky elektricky nabity (parazitní kapacity závČrnČ polarizovaných PN pĜechodĤ fotodiod). SvČtelná dávka, která poté dopadá na pĜíslušnou fotodiodu v buĖce, zpĤsobí takové vybití, jaké je pĜímo úmČrné intenzitČ a dobČ osvitu. PodrobnČ je princip funkce fotoelementĤ vysvČtlen v [6]. Pole fotoelementĤ lze pĜirovnat k dynamické pamČti RAM, tzn. že pro vyþtení informace na jednom Ĝádku se musí konkrétní Ĝádek adresovat, a poté je pĜíslušný sloupec se zesilovaþem vybrán a pĜiveden na výstup. Toto má za úkol blok analogového zpracování. Zesílený signál, který nese informaci o velikosti náboje na pĜíslušném fotoelementu je digitalizován analogovČ þíslicovým pĜevodníkem, odkud je n–bitovou sbČrnicí pĜipojen na výstup. Pro þasování veškerých vnitĜních obvodĤ je zapotĜebí hodinový (obdélníkový) signál, který je zpravidla pĜivádČn na samostatný pin. Slouží tedy k þasování vyþítání jednotlivých fotoelementĤ,
hradlování
A/ý
pĜevodníku,
generování
vertikálních
a
horizontálních
synchronizaþních impulzĤ a pro þasování I C komunikace, která probíhá mezi senzorem 2
a obsluhujícím mikrokontrolérem za úþelem nastavení vnitĜních Ĝídicích registrĤ senzoru. Pomocí Ĝídicích registrĤ senzoru lze nakonfigurovat jeho nejrĤznČjší parametry, napĜ. poþet pixelĤ na Ĝádku, poþet ĜádkĤ, délku Ĝádkových a snímkových zatemĖovacích impulzĤ, délka doby elektronické závČrky, módy vyþítání obrazových dat a další.
1
PĜevzato z katalogového listu MT9M001[5].
- 11 -
1.4 Urþení polohy objektu z obrazových dat Obraz objektu z CMOS senzoru musí mít takovou strukturu, aby bylo možné strojovým vidČním jednoznaþnČ urþit, ve kterém místČ se zkoumaný objekt nachází. Poloha objektu, která má být mČĜena, musí být tedy nejdĜíve definována na nČjakém bodČ objektu, který bude brán jako vztažný. MĤže to být bod ve stĜedu, na okraji nebo kdekoliv jinde. Referenþní bod mĤže být jeden nebo jich mĤže být více, což umožĖuje mČĜit napĜ. úhel natoþení objektu vzhledem k nČjakému smČru. Aby byl tento bod dobĜe odlišitelný od ostatních souþástí zkoumaného objektu, musí být jeho jas mnohonásobnČ vyšší. Clona objektivu pĜed obrazovým senzorem se potom nastaví tak, aby na snímku byla viditelná pouze záĜivá znaþka, zatímco její okolí zĤstalo tmavé, viz obr. 1.3. V praxi se používají dva zpĤsoby oznaþení referenþních bodĤ mČĜeného objektu: •
aktivními znaþkami – Active Marker System (svČtelné “body“, napĜ. LED),
•
pasivními znaþkami – Pasive Marker System (reflexní odrazné plošky, na které je svíceno ze samostatného svČtelného zdroje).
KromČ znaþek (markerĤ) se mĤže poloha urþovat také podle projekce intenzivní svČtelné stopy (soustĜedČného svazku paprskĤ soustavou þoþek, laser apod.).
Obr. 1.3 PĜíklady svČtelných stop LED a vypoþítaná tČžištČ pĜi rĤznČ nastaveném objektivu
PĜíklady toho, jak „vidí“ obrazový senzor po seĜízení clony a zaostĜení objektivu aktivní znaþku LED, jsou na obr. 1.3. Tvar svČtelné stopy není zpravidla kruhový a intenzita jasové plochy nebývá homogenní. Další deformaci tvaru stopy zpĤsobuje pohyb objektu bČhem získávání obrazu – zachycení snímku. Aby bylo možné urþit jednoznaþnČ stĜed takovéto svČtelné stopy, musí se hledat její tČžištČ, které je na obrázku v jednotlivých pĜípadech vyznaþeno modrými body. Více o výpoþtu tČžištČ svČtelné stopy procesorem a o implementaci algoritmu v programovacím jazyce C pojednává kapitola 3.2.
- 12 -
1.5 Princip funkce PSD senzorĤ jejich využití k mČĜení polohy KromČ obrazových senzorĤ CMOS lze zjišĢovat polohu svČtelné stopy také pomocí tzv. PSD senzorĤ. Zkratka PSD vznikla z anglických slov Position Sensitive photo – Detectors, tedy polohovČ citlivé detektory. Strukturální vyobrazení a náhradní schéma jednorozmČrného senzoru jsou na obr. 1.4. Pro dvojrozmČrný pĜípad je princip totožný, ovšem Ĝádkové provedení je pro pĜedstavu lépe názorné. KonstrukþnČ se PSD senzory blíží PIN diodČ, tzn. obsahují horní silnČ dotovanou tenkou vrstvu P+, spodní vrstvu N+ a prostĜední intrinsickou vrstvu I. Na horní vrstvČ jsou pĜipevnČny po stranách dva kontakty, na spodní je jeden celoplošný. MČrný odpor horní vrstvy je homogennČ rozložen po celé délce vrstvy, což si lze pĜedstavit jako odporovou dráhu (RL) potenciometru v náhradním schématu. Tento imaginární potenciometr je zapojen jako dČliþ proudu I na proudy I1 a I2 v obráceném pomČru drah RA a RB. Odboþka potenciometru je nastavována úzkým svazkem svČtelného paprsku, který dopadá do urþitého místa horní odporové vrstvy P+. Dopadajícím záĜením dochází ve vrstvČ I ke generování páru elektron – díra a podle orientace polarizace pĜechodĤ PI a NI dojde k posuvu elektronĤ k vrstvČ N a dČr k vrstvČ P. PrĤchodem proudu horní vrstvou P v tomto místČ dojde k rozdČlení odporu dráhy RL na RA a RB.
Obr. 1.4 Princip Ĝádkového PSD senzoru a jeho náhradní schéma 2
Urþení polohy dopadu svČtelné stopy se provádí pomČrovČ ze znalosti velikosti proudĤ I1 a I2. Lze tedy odvodit, že vzdálenost xa od stĜedu odporové dráhy, jejíž celková dráha je L, se vypoþítá ze vztahu
I 2 − I1 2 xa = . I 2 + I1 L
2
(1.1)
PĜevzato z [6].
- 13 -
Dopadá–li svČtelný paprsek do více míst na vrstvČ P, pak velikosti proudĤ I1 a I2 budou dány superpozicí fotoproudĤ. Jestliže dojde k homogennímu osvČtlení vrstvy po celé délce, tak I1 a I2 budou stejné, viz literatura [2] a [6]. ZpĤsob, jak umístit dva Ĝádkové nebo jeden plošný PSD senzor pro mČĜení polohy svČtelné stopy v rovinČ je znázornČn na obr. 1.5.
Obr. 1.5 Urþení polohy svČtelné stopy pomocí dvou Ĝádkových nebo jednoho plošného PSD senzoru
V pĜípadČ použití dvou Ĝádkových PSD senzorĤ musí být osy obou prvkĤ navzájem kolmé a pĜed každým senzorem musí být navíc umístČna vhodná optická soustava, která svČtelný paprsek soustĜedí do mČĜicí dráhy senzoru. Výhodou této konfigurace je nižší cena Ĝádkových PSD senzorĤ, nevýhodou pak jejich složité mechanické umístČní v okolí pohybujícího se objektu. Tento nedostatek lze však obejít pomocí jednoho plošného senzoru s jednou optickou soustavou. Osa senzoru je pak kolmá na rovinu pohybu objektu, podobnČ jako u obrazového CMOS senzoru. Jelikož mají signály z PSD senzorĤ analogový charakter, je nutné u obou typĤ (1D i 2D) provést digitalizaci, která je v dobČ souþasné elektrotechniky nezbytná, viz obr. 1.6. Obvod pro úpravu signálĤ z PSD senzorĤ musí navíc obsahovat analogové zesilovaþe a typicky i vlastní mikroĜadiþe pro þíslicové zpracování, což celý mČĜicí ĜetČzec prodražuje, viz dále.
Obr. 1.6 Typické zpracování analogových signálĤ z PSD senzorĤ
- 14 -
1.6 Urþení polohy objektu z obrazových dat signálovým procesorem Tato kapitola se zabývá dvČma pĜístupy ke zpracování informace z obrazového CMOS senzoru. První zpĤsob spoþívá ve zpČtném procesorovém zpracování dat z externí pamČti (Image Post Processing), zatímco druhá metoda je založena na prĤbČžném zpracování obrazových dat v omezené vnitĜní pamČti signálového procesoru (On The Fly Image Processing).
Obr. 1.7 Blokové schéma snímaþe polohy se signálovým procesorem a externí SDRAM
První, dĜíve ovČĜený pĜístup, znázorĖuje blokové schéma na obr. 1.7. Jedná se o tzv. inteligentní kameru (Smart Camera), kdy je obraz ze senzoru ukládán pĜes procesor DMA kanálem do externí pamČti typu SDRAM, odkud je následnČ zpracováván. Inteligentní kamera umožĖuje vykonat nad uloženými daty nejrĤznČjší metody zpracování obrazu, jako jsou napĜ. hledání tČžištČ svČtelné stopy, prahování obrazu, hranovou detekci, vyhledání vzoru v obraze a další, viz [23]. Pokud je navíc kamera vybavena rychlým USB Ĝadiþem, pak lze snadno pĜenášet obrazové videosekvence do PC. Nevýhodou této koncepce s pamČtí SDRAM je vyšší spotĜeba elektrické energie a nutnost rozmČrnČjšího plošného spoje. Proto je snaha tyto nedostatky odstranit, tzn. redukovat obvodové zapojení na minimální sestavu CMOS senzoru a signálového procesoru tak, aby bylo možné mČĜit polohu svČtelné stopy prĤbČžnČ z dat, která budou v þase pĜicházet z obrazového senzoru a bude je možné ukládat pouze do omezené vnitĜní pamČti SRAM procesoru. KromČ snížené spotĜeby je dalším požadavkem na snímaþ polohy tohoto typu také mČĜení v reálném þase pro úþely regulace a autonomní funkþnost bez nutnosti pĜipojení PC.
- 15 -
1.7 Cíl práce a pĜedstava o výsledné podobČ snímaþe polohy Realizace snímaþe polohy inteligentní kamerou není výhodná z dĤvodĤ uvedených v pĜedchozí kapitole (spotĜeba, rozmČry, cena). Ani použití PSD senzorĤ není optimální, a to zejména proto, že neumožĖují mČĜit polohy více svČtelných stop. Dále také kvĤli nutnosti doplnČní o obvody pro zpracování a digitalizaci analogových signálĤ, což zvyšuje jejich cenu, která je pak srovnatelná s kombinací (dnes již relativnČ levného) CMOS senzoru a signálového procesoru. Hlavním cílem práce je tedy navrhnout a realizovat rychlý snímaþ polohy tohoto typu v minimální možné obvodové konfiguraci na desce plošného spoje o rozmČrech senzorové desky, s konektorem pro vzájemné propojení, viz závČreþná podoba ve fotodokumentaci na obr. 7.3. Vedlejší požadavky na zaĜízení, které nemají takovou prioritu, jsou napĜ. pĜenos obrazových dat do PC pĜes USB Ĝadiþ, vyvedení nČkterých rozhraní procesoru na konektory a možnost implementace nČkterých dalších metod zpracování obrazu, které by byly zvládnutelné pouze s vnitĜní SRAM pamČtí. Jak již bylo uvedeno, navrhovaný snímaþ polohy musí být schopný samostatné þinnosti v regulaþní smyþce bez nutného pĜipojení PC (kromČ nastavování v servisním módu) a také by mČlo být možné jeho pĜipojení do senzorové sítČ napĜ. se sbČrnicí RS-485, viz obr. 1.8.
Obr. 1.8 Senzorová síĢ ze snímaþĤ polohy S1 - Sn
SíĢ senzorĤ je vhodná napĜ. tehdy, když je požadováno vícenásobné mČĜení polohy a každý snímaþ se mĤže chovat jako kamera s vnitĜním monitoringem, tzn. sama hlídá polohu svČtelné stopy do té doby, než dojde k nČjaké události, a poté zaþne pĜenášet obraz. SpouštČcí událostí mĤže být napĜ. vychýlení polohy objektu z dovolených mezí, skoková zmČna polohy, nestabilní poloha (chvČní objektu) apod. PĜenášený obraz nemusí být v plném rozlišení, podstatný je náhled (monitoring) mČĜené scény, což lze již pĜi rychlosti 10 Mb/s na sbČrnici RS-485 uskuteþnit. Více je o možnostech pĜenosu obrazu komunikaþními kanály s malou kapacitou pojednáváno v kapitole 3.1.2. Tímto zpĤsobem lze tedy realizovat distribuované zpracování obrazu, kdy každý snímaþ provádí samostatnČ pĜedzpracování (preprocessing) své mČĜené scény a obraz je - 16 -
pĜenášen až po nČjaké události. KromČ toho mĤže být snímaþ také periodicky požádán o obraz z Ĝídicího PC, kam jsou následnČ snímky ukládány. Hlavním dĤvodem upĜednostnČní signálového procesoru pĜed hradlovým polem je jednoduché nahrání obslužného programu z bootovací EEPROM pamČti a snadná rekonfigurovatelnost obrazového CMOS senzoru, zatímco obvod FPGA by musel být ještČ doplnČn o externí pamČt a pomocný mikrokontrolér, což by vyžadovalo vČtší obvodovou složitost. Dalším dĤvodem výbČru DSP procesorĤ Ĝady BF–53x je pĜímá podpora pĜipojení obrazového senzoru na rozhraní PPI a snadný pĜenos obrazových dat DMA kanálem do vnitĜní pamČti. Aby bylo možné snadné a rychlé nahrání obslužného programu z PC do bootovací pamČti procesoru, mČl by snímaþ polohy disponovat USB Ĝadiþem, který by (kromČ dalších funkcí) tuto vlastnost programátoru zastával. V EEPROM by pak mohl být v urþité oblasti nahrán zavadČþ (loader), který by se po restartu procesoru nahrál do jeho vnitĜní pamČti. Dále by procesor nahrával z pĜíslušných sektorĤ EEPROM pouze ty algoritmy, jež by byly právČ potĜebné pro vykonání zvolené metody zpracování , þímž by se také dále snížilo zaplnČní malé pamČti SRAM, viz kapitola 2.3.3.3.
- 17 -
2 Postup vývoje vlastního hardware 2.1 Shrnutí požadavkĤ na snímaþ polohy z hardwarového hlediska Celkové pojetí zadání této práce ilustruje obr. 2.1. Finální zaĜízení musí být schopné mČĜit polohu jedné a více svČtelných stop na zkoumaném objektu a musí umožĖovat autonomní mČĜení, kdy informaci o poloze pĜedává pĜes standardní rozhraní (napĜ. RS-232, RS-485, SPI, I2C apod.). Dále musí být snímaþ polohy pĜipojitelný k PC pĜes USB pro získání náhledového obrazu a pro konfiguraci nejrĤznČjších parametrĤ. DĤležitým požadavkem je pĜipojitelnost senzorových desek s CMOS senzory a objektivy, které na katedĜe mČĜení vznikly v pĜedchozích letech a mají definované rozmČry plošného spoje a rozložení signálĤ na propojovacím konektoru. RozmČry desky snímaþe polohy se musí shodovat s rozmČry senzorové desky, tedy 60 × 60 mm, a po sesazení spolu budou tvoĜit kompaktní celek.
Obr. 2.1 Blokové schéma mČĜení polohy obrazovým senzorem
Vlastní snímaþ polohy bude sestávat v minimální konfiguraci ze signálového procesoru ADSP BF–53x, bootovací pamČti EEPROM, USB Ĝadiþe, mČniþe napájecího napČtí pro potĜebné úrovnČ, konektorĤ signálových rozhraní (dle možností velikosti DPS) a doplĖkových obvodĤ (reset, tvarování hodinových pulzĤ, ochranných odporĤ, indikaþních LED). Podrobný postup vývoje snímaþe polohy, vzniklé problémy a odĤvodnČní konkrétního výsledného zapojení budou popsány v následujících kapitolách. - 18 -
2.2 Volba USB Ĝadiþe Prvním úkolem práce bylo vyĜešit zpĤsob programování bootovací pamČti procesoru, do kterého se z této pamČti po resetu nahraje Ĝídicí program. DĜívČjší zpĤsoby programování buć vyžadovaly vyjmutí pamČti z patice a naprogramování v externím programátoru, nebo jeho pĜipojení k SPI rozhraní na plošném spoji, viz napĜ. [7]. Jelikož tato procedura není pĜi ladČní programu pĜíliš þasovČ efektivní, hledalo se jiné Ĝešení. Procesory ADSP BF–53x sice disponují rozhraním JTAG, se kterým by bylo ladČní bČhem vývoje software pohodlné, ovšem dostupnost emulátoru není vždy z dĤvodu vyšší ceny samozĜejmostí.
Obr. 2.2 Využití USB Ĝadiþe k programování EEPROM
Na obr. 2.2 je blokové schéma snímaþe polohy se znázornČním SPI sbČrnice, na níž jsou pĜipojeny ADSP BF–53x, EEPROM a USB Ĝadiþ. V blokovém schématu jsou dále vyznaþeny uvažované režimy pĜipojení jednotek ke sbČrnici, tj. MASTER, SLAVE. Procesor je nakonfigurován tak, že po pĜipojení napájecího napČtí (nebo po resetu) zaþne bootovat z EEPROM, þili v ten okamžik se vždy pĜipojí ke sbČrnici. Aby nedošlo ke kolizi mezi procesorem a USB Ĝadiþem, musí být USB Ĝadiþ po celou dobu od sbČrnice odpojen, tzn. musí mít budiþe ve tĜetím stavu. PĜistupovat ke sbČrnici smí pouze tehdy, když je procesor „držen“ ve stavu reset. Pro možnost pĜímého programování EEPROM vyplývají z výše uvedeného tyto požadavky na USB Ĝadiþ: •
SPI rozhraní (HW/SW), pĜes které pĤjde nahrát z PC program, tj. signály (CS, MOSI, MISO, CLK),
•
trvalé odpojení od sbČrnice s výjimkou vlastního programování EEPROM,
•
možnost pĜímého resetu procesoru (optimálnČ). - 19 -
Další úkol, který mČl USB Ĝadiþ splĖovat, byl pĜenos obrázku ze senzoru do PC, aby bylo zjistitelné, co snímaþ „vidí“, když je nainstalován nad zkoumaným objektem, tzn. aby uživatel na monitoru vidČl, jak je tĜeba zaostĜit objektiv a nastavit clonu, pokud to pĜipojená senzorová deska umožĖuje. V ideálním pĜípadČ, pĜi dostateþném datovém toku pĜes USB Ĝadiþ, by mohl být snímaþ polohy využíván jako kamera. Na tomto místČ je nutné pĜipomenout, že rychlý pĜenos obrazu do PC nebyl primárním úkolem, ale pouze rozšiĜující vlastností snímaþe polohy. Tím hlavním požadavkem bylo rychlé mČĜení polohy a malé rozmČry plošného spoje. O možnostech pĜenosu náhledu mČĜené scény pĜes komunikaþní kanál s malou kapacitou a bez uložení do externí pamČti SDRAM se zmiĖuje kapitola 3.1.2. Po vytyþení hlavních požadavkĤ následoval výbČr konkrétního obvodu, pĜiþemž v dobČ rozhodování se byly na katedĜe dostupné tyto obvody: •
FTDI Chip – FT245R: USB FIFO,
•
FTDI Chip – FT232R: USB UART,
•
FTDI Chip – FT2232H: Hi-Speed USB 2.0 - Dual UART/FIFO Converter,
•
Cypress Semiconductor – CY7C680: EZ-USB FX2LP™ USB Microcontroller, High Speed USB Peripheral Controller. Shrnutí nejdĤležitČjších parametrĤ, které byly dĤležité pro optimální výbČr, je uvedeno
v tab. 2.1. Bližší popis možného zapojení konkrétního USB Ĝadiþe do obvodu bude vysvČtlen v dalším textu. FT245R Bit Bang: D4, 5, 6, 7 Parallel FIFO: D0–3, RD#, WR, RXF#, TXE#
realizace SPI pĜenos obrazu max. pĜenosová rychlost kompatibilita USB pouzdro
FT232R Bit Bang: CBUS0, 1, 2, 3 UART: RXD, TXD, handshaking
FT2232H ADBUS0–3: SK, DO, DI, CS BDBUS0–7: D0–7, handshaking
CY7C6801 PORT D: PD0, 1, 2, 3 Slave FIFO: FD[0–7], handshaking
500 kB/s
300 kB/s
8 MB/s
46 MB/s 3
Full Speed
Full Speed
High Speed
High Speed
SSOP – 28
SSOP – 28
LQFP – 64
SSOP – 56
Tab. 2.1 PĜehled nejpodstatnČjších parametrĤ dostupných USB ĜadiþĤ
3
Teoretická hodnota, které v praxi nelze dosáhnout. Více se o dosažených rychlostech tohoto Ĝadiþe zmiĖuje napĜ. [12], kapitola 4.5.
- 20 -
2.2.1 FT245R s programováním EEPROM v režimu Bit Bang Obvod FT245R je obousmČrný pĜevodník USB na paralelní FIFO. Pro nastavení nejrĤznČjších parametrĤ využívá interní integrovanou 128 B EEPROM, což je spolu s typem pouzdra SSOP – 28 výhodné z hlediska úspory místa na DPS. UvnitĜ obvodu je také integrován 12 MHz oscilátor, takže odpadá potĜeba pĜipojení externího krystalu s keramickými kondenzátory. Velikost pamČti Rx Bufferu (USB ĺ FIFO) je 128 B, velikost Tx Bufferu (FIFO ĺ USB) je 256 B. PĜenosová rychlost mĤže dosahovat až 1 MB/s, ovšem v pĜípadČ zapojení dle obr. 2.3 je možná rychlost pouze poloviþní, neboĢ pro pĜenos obrazu se využívají jen signálové linky D0 - D3. Mezi další vlastnosti patĜí možnost pĜepnutí obvodu do Bit Bang režimu, který popisuje následující odstavec. Více informací o tomto obvodu se nachází v [9].
Obr. 2.3 Propojení FT245R, pamČti EEPROM a BF–53x
Výrobce integrovaných obvodĤ FTDI Chip implementuje v souþasné dobČ do všech svých USB ĜadiþĤ tzv. Bit Bang mód4. PĜepnutí obvodu do tohoto módu se provádí buć programovČ, nebo pomocí manuální konfigurace v interní/externí EEPROM pamČti USB Ĝadiþe. Režim Bit Bang umožĖuje pomocí PC pĜímý zápis (a þtení) na nČkteré signálové vývody tak, že se chovají jako GPIO (General Purpose Input/Output) u nejrĤznČjších mikroprocesorĤ a mikrokontrolérĤ. Jinými slovy to znamená, že napĜ. datové linky D0 - D7 Ĝadiþe FT245R mohou být programovČ pĜepnuty do Bit Bang módu a okamžitČ se z nich stane 8–bitový paralelní IO port Ĝízený z PC. 4
Informace o nabízených produktech jsou dostupné online (11/2010): http://www.ftdichip.com/Products/ICs.htm
- 21 -
Toho lze využít k nejrĤznČjším úþelĤm, napĜ. k ovládání svítivých diod, relé, spínacích obvodĤ, displejĤ, þtení z maticových klávesnic apod. Použití Bit Bang módu k programování bootovací pamČti EEPROM je zjednodušenČ znázornČno ve schématu na obr. 2.3. Ke sbČrnici SPI, která je mezi procesorem a jeho bootovací pamČtí, byla pĜipojena další jednotka – Ĝadiþ FT245R, který generuje na signálových vodiþích D4 - D7 takové prĤbČhy, pomocí nichž je možné naprogramovat nebo vyþíst EEPROM, viz kapitola 2.2.1.2.
Obr. 2.4 Propojení jednotek na SPI sbČrnici a þasové prĤbČhy signálĤ 5
Obecný princip propojení dvou jednotek na sbČrnici SPI pĜipomíná obr. 2.4. V okamžiku zápisu na sbČrnici musí být pouze jedna jednotka typu MASTER, viz dále. Signály na sbČrnici mají následující význam: •
Chip Select (CS) – výbČrový signál od MASTER,
•
Serial Clock (SCLK) – hodinový signál od MASTER,
•
Master Out Slave In (MOSI) – výstup sériových dat od MASTER,
•
Master In Slave Out (MISO) – vstup sériových dat od SLAVE. V sérii s datovými linkami jsou ochranné odpory, které v pĜípadČ kolize na sbČrnici zabrání
vzájemnému zniþení všech obvodĤ. Teoreticky by k tomu mohlo dojít tehdy, pokud by procesor nebyl ve stavu reset a USB Ĝadiþ by se pokoušel o naprogramování pamČti. Reset procesoru pĜed zaþátkem programování se v tomto zapojení musí vyvolat manuálnČ propojkou nebo tlaþítkem.
5
PĜevzato a upraveno z aplikaþní poznámky AN_114 pro FT2232H [13].
- 22 -
Pozn.: Pro reset procesoru by sice bylo možné vyhradit další linku paralelní FIFO sbČrnice, ale kvĤli dalšímu snížení poþtu signálových vodiþĤ pro pĜenos obrazu toto není výhodné.
Obr. 2.5 Sériový odpor s parazitními kapacitami na signálové cestČ mezi USB Ĝadiþem a procesorem
Vložením ochranných sériových odporĤ dojde ke zpomalení dynamiky a k zaoblení nábČžných i spádových hran obdélníkového prĤbČhu. Po pĜekreslení obvodu do schématu na obr. 2.5 je zĜejmé, že výsledná þasová konstanta bude složena z odporu sepnutého tranzistoru výstupního budiþe RT1ON, ochranného odporu RS, kapacity výstupní CO, kapacity spoje (propojení) CP a kapacity vstupní CI, tedy
τ = (RT 1ON + RS ) ⋅ (C O + C P + C I ) .
(2.1)
Po dosazení hodnot ze schématu vychází, že τ = 35,4 ns. PĜi maximální pĜenosové rychlosti 1 MB/s mĤže docházet ke zmČnám signálu cca po 1 μs, takže ochranný odpor nezpĤsobí takovou degradaci obdélníkového prĤbČhu, že by nebylo možné data správnČ pĜenést.
2.2.1.1 Ovládání asynchronního Bit Bang módu USB Ĝadiþe FT245R na stranČ PC pod operaþním systémem Windows Výrobce FTDI poskytuje volnČ ke stažení ovladaþe pro rĤzné operaþní systémy (Windows, Linux, MAC) a podporu pro populární programovací jazyky jako napĜ. C++, C#, Delphi, LabView, Visual Basic a další. Distribuované ovladaþe lze rozdČlit na následující typy [15]: •
D2XX Direct Driver – pro Linux, MAC OS X (ver. 10.4 a vyšší), Windows CE (ver. 4.2 a vyšší). Tento ovladaþ mĤže být nainstalovaný v operaþním systému pouze samostatnČ
- 23 -
v jednom okamžiku. Využívá pĜímý pĜístup k pĜipojenému USB zaĜízení pomocí funkcí z knihovny FTD2XX.DLL6, •
VCP Virtual COM Port – emulace klasického sériového portu, kdy se k FTDI Ĝadiþi pĜistupuje tak, jako by to byl další COMx port v PC,
•
CDM Combined Driver Model – pouze pro Windows, je možné nainstalovat oba dva typy driverĤ (D2XX, VCP) najednou, ovšem v jednom okamžiku lze využívat pouze jeden z nich. V této práci je veškeré programové ovládání ĜadiþĤ FTDI soustĜedČno na OS Windows,
jazyk C/C++ a ovladaþe D2XX. Každá aplikace, ve které je využíván D2XX driver musí mít ve svém adresáĜi soubory FTD2XX.LIB a FTD2XX.H, pĜiþemž soubor FTD2XX.LIB musí být v daném projektu pĜidán k seznamu knihoven pro linker a FTD2XX.H vložen do zdrojového kódu pomocí pĜíkazu #include “ftd2xx.h“. Následující pĜehledový souhrn se vČnuje D2XX funkcím, které se pĜímo využívají pĜi programování v asynchronním Bit Bang módu. •
FT_STATUS FT_Open (int iDevice, FT_HANDLE *ftHandle), kde
¾ iDevice je index zaĜízení, které má být otevĜeno (0, pokud je pĜipojeno jediné), ¾ ftHandle je ukazatel na promČnnou typu FT_HANDLE. Handler je nezbytný pro další manipulaci s otevĜeným zaĜízením. Otevírá zaĜízení s odpovídajícím Device ID. Návratová hodnota FT_STATUS indikuje úspČšnost otevĜení jednotky (FT_OK), popĜ. nČjaký chybový kód [15]. U dalších funkcí má tato hodnota totožný význam, proto nebude v následujícím textu opakovanČ uvádČna. •
FT_STATUS FT_SetBitMode (FT_HANDLE ftHandle, UCHAR ucMask, UCHAR ucMode), kde
¾ ftHandle je handler zaĜízení, ¾ ucMask je 8–bitová hodnota, nastavující masku Bit módu, tzn. 0 = vstup, 1 = výstup na odpovídajícím pinu,
¾ ucMode je hodnota módu. Pro pĜepnutí FT245R do asynchronního módu se nastaví hodnota 0x01, hodnota 0x00 zpĤsobí reset módu. Kompletní pĜehled všech módĤ je v [15]. Funkce pĜepne USB Ĝadiþ do módu, ve kterém má být provozován.
6
Ovladaþe jsou dostupné k volnému stažení na http://www.ftdichip.com/Drivers/D2XX.htm.
- 24 -
•
FT_STATUS FT_GetBitmode (FT_HANDLE ftHandle, PUCHAR pucMode), kde
¾ ftHandle je handler zaĜízení, ¾ pucMode je ukazatel na unsigned char, ve kterém je uložena okamžitá hodnota pinĤ sbČrnice. Na hodnotu uloženou na pĜíslušnou adresu v pamČti nemá vliv, zda se jedná o datové linky vstupní nebo výstupní, proto je na uživateli, aby získanou informaci správnČ vyhodnotil. •
FT_STATUS FT_SetBaudRate (FT_HANDLE ftHandle, DWORD dwBaudRate), kde
¾ ftHandle je handler zaĜízení, ¾ dwBaudRate je hodnota Baud Rate. Rychlost pĜenosu dat je urþena touto funkcí, pĜiþemž þasování pro asynchronní Bit Bang mód odpovídá ve skuteþnosti 16 × Baud Rate. To znamená, že napĜ. pro hodnotu 9600 Baud budou data pĜenášena rychlostí (16 × 9600) = 153600 B/s, což þiní 6,5 μs na každý bajt. •
FT_STATUS FT_Write (FT_HANDLE ftHandle, LPVOID lpBuffer, DWORD
dwBytesToWrite, LPDWORD lpdwBytesWritten), kde ¾ ftHandle je handler zaĜízení, ¾ lpBuffer je ukazatel na pole bajtĤ s daty, která se mají zapsat na sbČrnici, ¾ dwBytesToWrite je poþet zapisovaných bajtĤ, ¾ lpdwBytesWritten je ukazatel na promČnnou typu DWORD, kam se uloží poþet bajtĤ, které se na sbČrnici zapsaly. Funkce zapíše odpovídající slovo nebo posloupnost slov na výstupní piny sbČrnice. •
FT_STATUS FT_Read (FT_HANDLE ftHandle, LPVOID lpBuffer, DWORD
dwBytesToRead, LPDWORD lpdwBytesReturned), kde ¾ ftHandle je handler zaĜízení, ¾ lpBuffer je ukazatel na Buffer, kam se mají pĜijatá data ze zaĜízení uložit, ¾ dwBytesToRead je poþet bajtĤ, kolik se má ze zaĜízení vyþíst, ¾ lpdwBytesReturned je ukazatel na promČnnou typu DWORD, kam se uloží poþet bajtĤ, které byly ze sbČrnice vyþteny. Funkce pĜeþte stavy pinĤ (vstupních i výstupních) a uloží je na urþené pamČĢové místo. V pĜípadČ požadavku na vícenásobné þtení jsou data na sbČrnici vzorkována stejnČ jako pĜi zápisu podle nastavení funkcí FT_SetBaudRate. •
FT_STATUS FT_Close (FT_HANDLE ftHandle), kde
¾ ftHandle je handler zaĜízení. - 25 -
Funkce se používá ke korektnímu uzavĜení otevĜeného zaĜízení ftHandle.
2.2.1.2 Obslužný program Ĝadiþe FT245R pro generování programovacích prĤbČhĤ na SPI sbČrnici USB Ĝadiþ FT245R umožĖuje pĜepnutí do asynchronního a synchronního Bit Bang módu [14]. Na poþátku vývoje programátoru EEPROM byl testován pouze asynchronní mód, vysvČtlení bude uvedeno pozdČji. V asynchronním módu lze datové linky D0 - D7 libovolnČ konfigurovat jako vstupy nebo výstupy. Rychlost zápisu/þtení vychází z nastavení Baud Rate generátoru. Po zápisu dat se na výstupních linkách objeví zapisované slovo, které je na nich ovšem drženo až do chvíle, kdy je pĜepsáno jinými daty. PĜehled nezbytných funkcí pro softwarové ovládání Bit Bang módu a možnosti instalovatelných ovladaþĤ pro PC byly uvedeny v kapitole 2.2.1.1. Prvním typem EEPROM pamČti, která mČla být v režimu Bit Bang naprogramována, byla pamČĢ o velikosti 256 kbit - 25LC256 od výrobce Microchip. Jedná se o pamČĢ s organizací 32768 × 8 bit, velikostí stránky 64 B a maximální frekvencí 10 MHz pro hodinový signál. Podrobný popis lze najít v katalogovém listu [16]. Programátor mČl zvládat tyto základní operace: •
vyþtení celé pamČti a uložení dat do souboru,
•
vyþtení n bajtĤ z pamČti od zvolené adresy a jejich uložení do souboru,
•
zápis libovolného souboru dat do pamČti od zvolené adresy.
PodaĜilo se realizovat všechny výše uvedené funkce, ovšem výsledná rychlost, zejména pĜi þtení, nebyla dostateþná. ZdĤvodnČní této skuteþnosti je obsaženo v následujících odstavcích. Podstata celého programátoru je založena na rozkladu prĤbČhĤ jednotlivých signálĤ do posloupnosti stavĤ, které budou postupnČ zapisovány (þteny) na sbČrnici pomocí elementárních funkcí
FT_Write, FT_Read a FT_GetBitMode. Celá aplikace je naprogramována genericky ve smyslu možnosti pĜiĜazení signálĤ CS , SCK, SI, SO na libovolné datové linky D0 - D7, což mĤže být pozdČji užiteþné napĜ. pĜi návrhu plošného spoje. Obsluha programátoru je založena na konzolovém pĜístupu, tzn., že veškeré funkcionality jsou spouštČny z pĜíkazové Ĝádky, napĜ. •
ftdiprog.exe –w testprg.ldr
zapíše celý soubor testprg.ldr do EEPROM od adresy 0x0000
•
ftdiprog.exe –r unknown.txt
vyþte obsah celé EEPROM a uloží jej do souboru
unknown.txt •
ftdiprog.exe –r origprg.ldr 14278
vyþte 14278 B EEPROM od adresy 0x0000 a uloží jej do souboru origprg.ldr
- 26 -
Obr. 2.6 Signály na SPI sbČrnici pro vyþtení bloku dat z pamČti EEPROM 25LC256 7
Aby bylo možné vyþíst obsah 25LC256, je zapotĜebí vygenerovat na SPI sbČrnici patĜiþné prĤbČhy, viz obr. 2.6, což vyžaduje kombinovaný zápis a þtení. Signál CS (Chip Select) slouží k výbČru obvodu pamČti a je aktivní v log. 0 po celou dobu vyþítání dat. Hodinový signál SCK (Serial Clock Input) slouží k hradlování událostí na vodiþích SI a SO, pĜesnČji Ĝeþeno s každou nábČžnou hranou hodinového signálu dojde ke vzorkování hodnoty vstupního pinu SI a k posunutí sériových dat na výstupním pinu SO. Na vstup SI (Serial Data Input) musí pĜijít nejprve instrukce pro þtení, tj. READ - 0000 0011, poté 16–bitová adresa (od nejvíce po nejménČ významný bit), od jakého místa v pamČti má být vyþítání obsahu zapoþato. Signál SO (Serial
Data Output) poskytuje sled vyþítaných dat, která se na tomto pinu zaþnou po odeslání posledního adresového bitu objevovat s každým hodinovým impulzem. Z hlediska aplikaþního programu tedy proces þtení nejprve kopíruje prĤbČhy signálĤ na SPI sbČrnici, tj. posloupnost: spádová hrana CS , zápis instrukce READ na SI a zápis 16–bitové adresy na SI. Od tohoto okamžiku by mČlo následovat vybavování dat na pin SO, což ovšem znamená nutnost pĜepínání funkcí FT_Write a FT_Read, tzn. sled tČchto elementárních krokĤ:
¾ v 1. kroku se zapíše slovo s log. 0 na bitu SCK, ¾ ve 2. kroku následuje zápis slova s log. 1 na bitu SCK, ¾ ve 3. kroku je þteno slovo, z nČhož je nemaskován pouze bit SO, který je posunut na 7. pozici zásobníku 1. vyþteného bajtu,
¾ ve 4. kroku se zapíše slovo s log. 0 na bitu SCK. Tato procedura se opakuje pro všech zbývajících bitĤ v 8–bitovém slovČ, které se postupnČ uloží celé do zásobníku. Tímto zpĤsobem se vyþte požadovaný obsah pamČti a pole vyþtených slov je uloženo do souboru.
7
PĜevzato z katalogového listu 25AA256/25LC256 [16].
- 27 -
Zápis dat ze souboru do pamČti EEPROM lze uskuteþnit dvČma zpĤsoby. Prvním je zápis po bajtech, kdy se zapíše kód instrukce WRITE – 0000 0010, 16–bitová adresa a osm bitĤ jednoho slova, viz obr. 2.7. Druhým zpĤsobem je zápis po 64 B stránkách, tj. kód instrukce WRITE, 16–bitová adresa a 64 B zapisovaných dat, po kterých je nutné pro další zápis celý postup zopakovat s adresou posunutou o velikost stránky, viz obr. 2.8.
Obr. 2.7 Signály na SPI sbČrnici pro zápis jednoho bajtu do pamČti EEPROM 25LC256 8
Obr. 2.8 Signály na SPI sbČrnici pro zápis celé 64 B stránky do pamČti EEPROM 25LC256 8
V aplikaþním programu se proces zápisu do EEPROM liší jen þásteþnČ. StejnČ jako pĜi
þtení musí být nejprve na SPI sbČrnici poslána data s kódem instrukce a poþáteþní adresa. Dále však již nedochází k pĜepínání mezi funkcemi FT_Write a FT_Read, neboĢ se pouze zapisuje datový bit stream, sestavený z posloupnosti bajtĤ zapisovaného souboru. PĜi zápisu celé stránky do pamČti bylo zjištČno, že generování prĤbČhĤ po jednotlivých slovech, sestavených z bitĤ CS , SCK, SI a SO, je þasovČ nároþné. Jinými slovy, pro zápis 64 B stránky musela být 180 × volána funkce FT_Write (ftHandle, currentByte, 1, lpdwBytesWritten). Možnost, jak obejít tento 8
PĜevzato z katalogového listu 25AA256/25LC256 [16].
- 28 -
zpĤsob, spoþívala v pĜipravení celých prĤbČhĤ do pole operaþní pamČti poþítaþe a následný zápis celého bloku najednou, tj. pĜíkazem FT_Write (ftHandle, memoryData, 180, lpdwBytesWritten). Výsledky obou procesĤ þtení/zápis pamČti EEPROM 25LC256 shrnuje následující kapitola.
2.2.1.3 Zhodnocení a uplatnČní programátoru EEPROM 25LC256 v módu Bit Bang u obvodu FT245R Jak již bylo Ĝeþeno, rychlost zapisování a zejména vyþítání se ukázala být manuálním Bit Bangem neúnosnČ malá. Z dĤvodu stĜídavého volání pĜíkazĤ pro zápis (generování hodinového pulzu na pinu SCK) a þtení (vyþítání posunutého bitu na pinu SO) docházelo k þasovým prodlevám, takže k vyþtení celého obsahu pamČti, tj. 32768 B, bylo zapotĜebí pĜibližnČ 1680 s
þasu, tedy 25,6 ms pro jeden stav na sbČrnici SPI. ZaplnČní celé pamČti EEPROM daty ze souboru pĜi zápisu po stránkách a hromadném zápisu bloku dat z operaþní pamČti poþítaþe trvalo pĜi nastavené Baud Rate = 256000 Bd pĜibližnČ 35, tedy cca 380 μs na jeden stav sbČrnice. Výše uvedené parametry naznaþují, že použití asynchronního Bit Bang módu k zápisu a hlavnČ vyþítání obsahu EEPROM pamČti není z dĤvodu velkých nárokĤ na þas ve snímaþi polohy uplatnitelné, ovšem využití obvodu FT245R je postaþující k programování nejrĤznČjších jednoþipových mikrokontrolérĤ a malých sériových pamČtí s SPI rozhraním. V praxi totiž þasto není délka pĜeloženého kódu tak velká, aby jeho nahrání do pamČti zabralo více þasu. Navíc je pro uživatele potĜebné pĜedevším zapisování dat do pamČti, vyþítání jejího obsahu se lze vzdát. Obvod FT245R je snadno dostupný a relativnČ levný, takže se pĜímo nabízí budoucí využití programátoru ve školních úlohách s mikroprocesory. KromČ jiného lze uplatnit obvod také pĜi doplĖkové komunikaci s PC, což se dĜíve Ĝešilo zpravidla pomocí sériové linky RS–232. Od dalšího vývoje snímaþe polohy s programátorem EEPROM v Bit Bang módu se tedy upustilo ze dvou dĤvodĤ: •
pomalá rychlost SPI programování bootovací pamČti EEPROM,
•
nízká pĜenosová rychlost pro pĜenos obrazu ze senzoru od PC.
V následující kapitole je jen naznaþeno možné Ĝešení s Bit Bang programováním, ale další vývoj práce smČĜoval k Ĝadiþi FT2232H, jemuž se vČnuje kapitola 2.2.3.
- 29 -
2.2.2 FT232R s programováním EEPROM v režimu Bit Bang Obvod FT232R je rozhraním mezi USB a asynchronním sériovým pĜenosem s plnou podporu HW/SW handshakingu. Lze nastavit standardní parametry jako napĜ. 7 nebo 8 datových bitĤ, 1 nebo 2 stop bity a lichou, sudou, mark, space nebo žádnou paritu. PĜenosová rychlost sériové komunikace je nastavitelná v rozpČtí 300 Bd – 3 MBd. Velikosti bufferĤ jsou 256 B na pĜijímací a 128 B na vysílací stranČ. ěadiþ využívá stejnČ jako FT245R interní integrovanou 128 B EEPROM, která slouží k uložení nejrĤznČjších parametrĤ obvodu, mezi nČž patĜí napĜ. také nakonfigurování linek CBUS jako zdroje výstupního obdélníkového hodinového signálu s kmitoþty 48, 24, 12 a 6 MHz pro nejrĤznČjší mikrokontroléry nebo FPGA. Další vlastnosti tohoto obvodu uvádí katalogový list [8]. Propojení FT232R s BF–53x mČlo vycházet ze schématu podle obr. 2.9. PĜenášení dat náhledového obrazu ze senzoru do USB Ĝadiþe mČlo být uskuteþĖováno asynchronním sériovým pĜenosem po linkách RX, TX. Dále mČly být využívány signály handshakingu pro Ĝízení pĜenosu, avšak z dĤvodu nepokraþování ve vývoji s tímto obvodem není handshaking ve schématu na stranČ procesoru detailnČ rozkreslen.
Obr. 2.9 Propojení FT232R, pamČti EEPROM a BF–53x
Programování pamČti EEPROM mČlo být pĤvodnČ uskuteþĖováno v tzv. CBUS Bit Bang
módu, což je Bit Bang mód, který má pouze FT232R. Pro aktivaci tohoto režimu na linkách CBUS0 - CBUS3 je nutné nastavení ve vnitĜní konfiguraþní pamČti. ObdobnČ jako v zapojení dle obr. 2.3 jsou vloženy v sérii s linkami ochranné odpory, aby nedošlo v pĜípadČ kolize na sbČrnici - 30 -
SPI ke zniþení nČkterého ze zúþastnČných obvodĤ. StejnČ jako u FT245R mČly být použity pro pĜístup k USB zaĜízení pod OS WINDOWS ovladaþe D2XX a pĜíslušné knihovny. Pro zápis/þtení se v CBUS Bit Bang módu využívají pouze funkce FT_SetBitMode a FT_GetBitMode. Funkce FT_GetBitMode, která již byla popsána v kapitole 2.2.1.1, se liší pouze v parametru pucMode, který je sice rovnČž ukazatelem na unsigned char, ovšem platná hodnota je obsažena pouze ve spodních 4 bitech. Funkce FT_SetBitMode se liší od užití pĜi asynchronním Bit Bang módu FT245R více, proto je zde pĜipojen podrobnČjší popis: •
FT_STATUS FT_SetBitMode (FT_HANDLE ftHandle, UCHAR ucMask, UCHAR ucMode), kde
¾ ftHandle je handler zaĜízení, ¾ ucMask je 8–bitová hodnota, jejíž vyšší þtyĜi bity nastaví vlastnost linek CBUS3-CBUS0 (0 = vstup, 1 = výstup) a spodní þtyĜi bity nastaví na pĜíslušné lince log. hodnotu 0 nebo 1 v pĜípadČ, že dotyþná linka je nastavená jako výstupní,
¾ ucMode je hodnota módu. Pro pĜepnutí FT232R do CBUS módu musí být zapsána hodnota 0x20. OdĤvodnČní, proþ ustoupit od dalšího vývoje SPI programátoru EEPROM v CBUS Bit Bang módu, byĢ i pomalého pro jednoþipové mikrokontroléry, pĜináší citace [14] z kapitoly 1.4:
Jelikož funkce SetBitMode a GetBitMode umožĖují odeslat nebo pĜijmout pouze jeden bajt, je tato verze Bit Bangu mnohem pomalejší než u asynchronního a synchronního typu, kdy jsou data pĜenášena pomocí funkcí FT_Write a FT_Read. PĜenosová rychlost je totiž v CBUS módu limitována USB rámci.
2.2.3 Obvod FT2232H ve funkci programátoru EEPROM a USB Ĝadiþe pro rychlý pĜenos obrazových dat Po zkušenostech s programováním USB ĜadiþĤ FT245R a FT232R pomocí funkcí z D2XX knihoven bylo praktiþtČjší dát pĜednost obvodu od stejného výrobce, tedy FT2232H, místo posledního zvažovaného obvodu CY7C6801. Pokraþování ve vývoji s obvodem FT2232H, který byl v pouzdĜe LQFP – 64 s sebou totiž neslo riziko, že se nepodaĜí umístit všechny souþástky na plošný spoj omezených rozmČrĤ, tj. 60 × 60 mm. Tento obvod potĜebuje ke své funkci na rozdíl od prvních dvou ĜadiþĤ také externí konfiguraþní pamČĢ EEPROM a krystal s keramickými kondenzátory jako zdroj hodinového signálu. V poþátcích vývoje, kdy ještČ nebyl plošný spoj navržen, byl obvod naletován na univerzální desce pro pouzdra typu LQFP – 64 a propojen s kontaktním nepájivým polem, vývojovým kitem s BF–532 [7] a ostatními souþástkami, viz fotodokumentace v pĜíloze A. - 31 -
Obvod FT2232H vychází z FTDI produktĤ 5. generace a patĜí do tĜídy vysokorychlostních High Speed ĜadiþĤ USB 2.0. V jednom pouzdĜe se nacházejí dvČ nezávislá USB zaĜízení, tedy dva kanály A a B, pro nČž lze nakonfigurovat následující režimy: Async Serial (RS232), Async
245 FIFO, Sync 245 FIFO, Async Bit Bang, Sync Bit Bang, MPSSE (Multi-Protocol Synchronous Serial Engine), Fast Serial Interface, CPU FIFO Style, Host Bus Emulation. Význam nČkterých režimĤ je zjevný, u tČch zbývajících jsou potĜebné informace k dohledání v katalogovém listČ [10]. Protože tento obvod nabízí více režimĤ, podle kterých by bylo možné
þásti zapojení pro programování EEPROM a pĜenos dat z procesoru do PC realizovat, vČnuje se následující kapitola struþnému odĤvodnČní výsledné volby.
2.2.3.1 Popis nČkterých konfigurovatelných režimĤ Ĝadiþe FT2232H a možnost jejich uplatnČní v zapojení snímaþe polohy PĜi rozhodování o koneþné podobČ zapojení USB Ĝadiþe ve snímaþi polohy pĜicházely do úvahy režimy Async Serial (RS232), Async 245 FIFO, Sync 245 FIFO, MPSSE a CPU FIFO
Style. Postupnou rozvahou se zužoval výbČr, až se nakonec ukázala optimální kombinace kanálu A v režimu MPSSE – SPI pro programování pamČti EEPROM a kanálu B v režimu Async 245 FIFO pro pĜenos dat z procesoru do PC. Následující pĜehled se zabývá principy a vlastnostmi uvažovaných módĤ. •
Async Serial (RS232) – je vhodný pro asynchronní sériový pĜenos s plnČ podporovaným HW/SW handshakingem. Nejvyšší pĜenosová rychlost je 12 MBaud. Tento kanál mČl být pĤvodnČ vyhrazen pro pĜenos dat jako v zapojení dle obr. 2.9, ovšem paralelní pĜenos byl výhodnČjší z dĤvodu vyšší rychlosti.
•
Async 245 FIFO – obdoba rozhraní 245 FIFO s osmi datovými signály A(B)DBUS0 – A(B)DBUS7, tzv. „Busy Flagy“ RXF#, TXE#, a signály pro vyvolání zápisu/þtení WR#, RD#. Zapojení je stejné jako na obr. 2.3 s tím rozdílem, že pro pĜenos dat z procesoru je využíváno všech osmi datových linek. Rychlost pĜenosu v tomto režimu mĤže dosahovat až 8 MB/s, proto byl zvolen v jednom kanálu jako režim pro pĜenos obrazových dat.
•
Sync 245 FIFO – tento režim, jehož pĜenosová rychlost þiní více než 25 MB/s, by byl ideální pro rychlý pĜenos velkého objemu obrazových dat. Jeho nevýhodou je, že v tomto režimu je nedostupný druhý kanál B potĜebný k programování EEPROM. Datové i Ĝídicí signály jsou shodné jako u Async 245 FIFO, navíc však obsahuje ještČ OE# a CLKOUT. Signál CLKOUT je výstup 60 MHz hodin, podle kterých musí být veškerý pĜenos v tomto režimu synchronizován, což je další dĤvod, proþ není v zapojení snímaþe polohy vhodný – senzorové desky typu Micron, které mČly být používány, dovolují nejrychlejší taktovací - 32 -
signál 48 MHz, takže by v tomto pĜípadČ muselo být navíc zapojení doplnČno o dČliþku kmitoþtu. •
MPSSE – u obou kanálĤ A i B lze nastavit v tomto režimu nezávisle na sobČ mnoho prĤmyslových standardĤ jako jsou JTAG, I2C, SPI nebo implementovat vlastní sbČrnicový protokol. V zapojení snímaþe polohy byl použit mód SPI k programování bootovací EEPROM, tj. signály SK, DO, DI a CS. Rychlost SPI mĤže být až 30 Mbit/s, což s rezervou pĜekraþuje mezní kmitoþty uvažovaných sériových EEPROM pamČtí. V režimu MPSSE lze využívat kromČ SPI sbČrnice zároveĖ i ostatní piny pĜíslušného kanálu, které jsou nakonfigurovány jako GPIO, viz kapitola 2.2.1. To je u snímaþe polohy výhodné napĜ. k tomu, že pomocí jedné linky GPIO mĤže být procesor držen ve stavu reset po dobu programování EEPROM a nemusí být tento úkon provádČn manuálnČ uživatelem.
•
CPU FIFO Style – princip této konfigurace se podobá Async 245 FIFO s tím rozdílem, že nejsou dostupné signály RXF#, TXE#, ale jsou zde navíc výbČrový signál CS# a adresní signál A0. VysvČtlení tohoto režimu se opírá o tab. 2.2, ze které je patrné, že pĜíslušný kanál USB Ĝadiþe se chová jako vstupnČ/výstupní brána, která je namapovaná do urþitého adresního prostoru. Pro zjištČní stavu zaĜízení je však nezbytný tzv. Polling (dotazování), z þehož vyplývá, že pĜed každým zápisem/þtením musí být testováno, zda je v pĜíslušné pamČti FIFO volné místo pro zápis/jsou dostupná data k vyþtení. Tato procedura ovšem natolik zamČstnávala procesor, že se pro pĜenos obrazu ukázal výhodnČjší režim Async 245 FIFO.
CS# 1 0 0
A0 X 0 1
RD# X þtení dat z pipe vyþtení stavu
WR# X zápis dat do pipe okamžitý zápis
Tab. 2.2 VýbČr operace v režimu CPU FIFO Style 9
9
PĜevzato z katalogového listu FT2232H [10].
- 33 -
2.2.3.2 Výsledná koncepce zapojení Ĝadiþe FT2232H pro pĜenos dat z procesoru BF–53x a programování bootovací pamČti EEPROM Z výše uvedených rozborĤ režimĤ, které obvod FT2232H nabízí, byl vybrán MPSSE SPI k programování EEPROM a Async 245 FIFO pro pĜenos dat mezi procesorem a PC. Principiální zapojení je naznaþeno na obr. 2.10. Pro pĜechod do režimu Async 245 FIFO musí být provedena konfigurace v externí pamČti EEPROM, která není ve schématu u obvodu FT2232H zakreslena. Možnosti tohoto zapojení jsou následující: •
SPI kanál (SK, DO, DI, CS) pro programování bootovací EEPROM,
•
doplĖková SPI komunikace mezi FT2232H (Master) a BF–53x (Slave) pomocí linek SK, DO, DI, GPIOL1,
•
Ĝízený reset BF–53x pomocí linky GPIOL0 bČhem procesu programování pamČti (ve zjednodušeném schématu naznaþen tranzistorem T1, ve skuteþném pak doplnČn obvodem ADM708TAR),
•
další linky GPIOL2, GPIOL3 a GPIOH0 - GPIOH7 pro libovolné využití,
•
pĜenos obrazu a dat po paralelní 8–bitové sbČrnici D0 - D7.
Obr. 2.10 Propojení FT2232H, pamČti EEPROM a BF–53x
- 34 -
V zapojení jsou dále zakresleny ochranné sériové odpory, jejichž význam je stejný jako v kapitole 2.2.1, tedy R1 - R4 slouží k ochranČ pĜi konfliktu na SPI sbČrnici, R5 je zapojen proto, že ke kolizi by mohlo dojít tehdy, kdyby byl pin 51 procesoru v režimu výstupního flagu a zároveĖ by byl provádČn select na SPI signálu GPIOL1 u FT2232H, který pĜistupuje ke sbČrnici pouze jako master. Odpory R8 a R9 mají obdobný význam – flagy PF4 a PF5 by rovnČž mohly být omylem nastaveny jako výstupní, signály RXF# a TXE# u FT2232H jsou výstupní v tomto režimu vždy. Hodnota odporĤ 39 Ω je z toho dĤvodu, že zmČny tČchto signálĤ jsou podstatnČ rychlejší než na SPI sbČrnici (až 10 MHz), proto musí být zajištČna i menší þasová konstanta, tj. po dosazení do (2.1) vychází τ = 6,1 ns. Tato hodnota odporĤ je zároveĖ vhodná k potlaþení odrazĤ na vedení.
2.2.3.3 Programování EEPROM obvodem FT2232H v režimu MPSSE SPI Obvod FT2232H má v režimu MPSSE pĜímou podporu SPI standardu, který umožĖuje sériovou komunikaci s ostatními zaĜízeními. Tento USB Ĝadiþ je možné provozovat pouze jako zaĜízení master, což ovšem není v tomto pĜípadČ tak závažný nedostatek, protože k programování EEPROM musí být FT2232H master a pro komunikaci s BF–53x lze tento procesor naprogramovat jako zaĜízení SPI slave. DĤležitým požadavkem na HW poþítaþe je, že musí podporovat High Speed USB 2.0, neboĢ nižší verze standardu neumožĖují pĜistupovat k nČkterým funkcím SPI DLL10. PodobnČ jako knihovny D2XX funkcí, které byly popsány v kapitole 2.2.1.1, musí být do projektu zvoleného programovacího jazyka pĜilinkována knihovna FTCSPI.LIB s hlaviþkovým souborem FTCSPI.H. Podrobný popis SPI funkcí, které tato knihovna pro obvody FT2232H, FT2232D a FT4232H nabízí, lze dohledat v dokumentu [17]. Výsledná aplikace je použitelná jako konzolový programátor SPI EEPROM pamČti. Je postavena na ukázkovém pĜíkladu výrobce FTDI ke komunikaci FT2232H se sériovou SPI EEPROM Microchip 93LC56, viz [18]. Vlastní podstata programátoru je naznaþena ve vývojovém diagramu dle obr. 2.11. Následující text obsahuje struþné vysvČtlení nČkterých blokĤ.
10
Ovladaþe SPI DLL pro OS Windows se nacházejí na stránkách výrobce (11/2010): http://www.ftdichip.com/Support/SoftwareExamples/MPSSE/FTCSPI/FTCSPI.zip
- 35 -
Obr. 2.11 Vývojový diagram programátoru EEPROM s FT2232H
Nastavení parametrĤ EEPROM – po spuštČní programu se nejprve naþtou parametry z konfiguraþního souboru, tj. typ EEPROM, velikost pamČti v bajtech, velikost sektoru v bajtech pro sektorové mazání, velikost stránky v bajtech, rychlost SPI komunikace v MHz a kódy instrukcí pamČti, tzn. napĜ. READ, WRITE, WRDI, WREN apod.
Pozn.: Programátor byl vyvíjen a testován na dvou druzích EEPROM pamČtí, konkrétnČ na dĜíve zmínČné 25LC256 [16] a na 8 Mbit pamČti M25P80 od výrobce STMicroelectronic [19], což je pamČĢ s velikostí stránky 256 B, celkovým i sektorovým mazáním a maximální frekvencí 25 MHz pro hodinový signál. Další popis programátoru je zamČĜen na M25P80, neboĢ ta má narozdíl od 25LC256 zmínČné sektorové a celkové mazání. Vyhodnocení parametrĤ pĜíkazové Ĝádky – úkolem je rozpoznání argumentĤ na pĜíkazové Ĝádce, tzn. zjištČní požadované funkce, názvu vstupního/výstupního souboru, poþtu bajtĤ, popĜ. adresu. PĜi nesprávném zápisu dojde k vypsání nápovČdy se syntaxí a ukonþení programu. Syntaxe je obdobná jako u programátoru s FT245R v Bit Bang módu a programátor byl navíc rozšíĜen o tyto funkcionality:
- 36 -
•
provede kompletní smazání celé pamČti, tzn. zapíše
m25p80_prog.exe –be
na všechny bity hodnotu log. 1, •
m25p80_prog.exe –se addr
smaže obsah pamČti od adresy addr.
Detekce, otevĜení a inicializace pĜipojeného USB zaĜízení – program provede diagnostiku všech USB zaĜízení od výrobce FTDI, které jsou pĜipojeny k PC, a najde–li Ĝadiþ FT2232H s kanálem, jehož sériové þíslo je shodné s definovaným, pak dojde k jeho otevĜení. Následuje posloupnost elementárních operací jako jsou reset otevĜeného zaĜízení, inicializace MPSSE, vyþištČní bufferĤ, nastavení SPI frekvence, konfigurace SPI signálĤ, signálu pro reset a ostatních GPIO linek.
Vykonání zvolené funkce – nejprve je aktivován na pinu GPIOL0 reset procesoru, aby byla uvolnČna SPI sbČrnice, a poté je spuštČn algoritmus, který provádí zápis, þtení nebo mazání pamČti. ProbČhne–li spuštČná operace korektnČ, dojde po jejím ukonþení k zobrazení doby trvání operace (tato funkce pĜetrvala z období programování v Bit Bang módu, kdy hrál tento údaj rozhodující roli) a vypíše se poþet zapsaných/vyþtených/smazaných bajtĤ. Následuje zavĜení USB zaĜízení a program je ukonþen. Pro pĜedstavu, jakým zpĤsobem se Ĝadiþ FT2232H v režimu MPSSE SPI programuje, bude proveden rozbor knihovní funkce SPI_WriteHiSpeedDevice, která se vyskytuje na mnoha místech kódu programátoru. Spolu s touto funkcí jsou významné i další funkce jako napĜ.
SPI_ReadHiSpeedDevice,
SPI_SetHiSpeedDeviceGPIOs,
které
jsou
podrobnČ
zdokumentované v [17]. Generování signálĤ protokolu SPI tímto Ĝadiþem se zásadnČ liší od zpĤsobu v módu Bit Bang, který byl testován v poþátcích vývoje s obvodem FT245R. Proto je v tab. 2.3 uveden pĜehled a význam všech argumentĤ výše uvedené funkce pro High Speed zápis.
Argument FTC_HANDLE ftHandle PFTC_INIT_CONDITION pWriteStartCondition BOOL bClockOutDataBitsMSBFirst BOOL bClockOutDataBitsPosEdge DWORD dwNumControlBitsToWrite
Význam Handler FTDI Hi–Speed zaĜízení. Ukazatel na strukturu, která obsahuje poþáteþní stavy (H/L) signálĤ SK, DO a CS. Sled sériových dat z DO. TRUE = první bit MSB, FALSE = první bit LSB Hradlování datových bitĤ podle hodinového signálu. TRUE = nábČžná hrana, FALSE = spádová hrana SK. Poþet Ĝídicích bitĤ, které budou zapsány na externí zaĜízení. Platný rozsah je 2 – 2040, tedy 2040 bit odpovídá 255 B. - 37 -
DWORD dwNumControlBytesToWrite BOOL bWriteDataBits DWORD dwNumDataBitsToWrite PWriteDataByteBuffer pWriteDataBuffer DWORD dwNumDataBytesToWrite PFTC_WAIT_DATA_WRITE pWaitDataWriteComplete PFTH_HIGHER_OUTPUT_PINS pHighPinsWriteActiveStates
Poþet bajtĤ v bufferu s Ĝídicími daty pro zápis, platný rozsah je 1 – 255 B. Povolení (TRUE)/zakázání (FALSE) zápisu datových bajtĤ na externí zaĜízení. Poþet datových bitĤ, které budou zapsány na externí zaĜízení. Platný rozsah je 2 – 524280, tedy 524280 bit odpovídá 64 kB. Ukazatel na buffer, který obsahuje data pro zápis na externí zaĜízení. Poþet bajtĤ v datovém bufferu, které mají být zapsány. Platný rozsah je 1 – 65355 B. Ukazatel na strukturu, v níž je nastaveno, má–li FT2232D þekat pĜed návratem z procedury na zápis všech dat na externí zaĜízení. Ukazatel na strukturu, ve které je nastaveno, zda piny GPIOH0 – GPIOH7 budou bČhem zápisu také využívány.
Tab. 2.3 PĜehled a význam argumentĤ funkce SPI_WriteHiSpeedDevice 11
2.2.3.4 PĜenos dat USB Ĝadiþem FT2232H mezi PC a BF–53x Jak již bylo uvedeno v kapitole 2.2.3.2, pro pĜenos dat mezi procesorem a USB Ĝadiþem byl zvolen 8–bitový paralelní pĜístup v režimu Async 245 FIFO, viz zapojení na obr. 2.10. Obvod FT2232H má shodnou velikost FIFO pamČtí na pĜijímací i vysílací stranČ, konkrétnČ 4096 B. Pro vysvČtlení principu obousmČrného pĜenosu budou v dalším textu popsána obČ rozhraní obvodu, tj. PC ↔ USB a 245 FIFO ↔ BF–53x.
Rozhraní 245 FIFO ↔ BF–53x – u FT2232H jsou dva výstupní signály s oznaþením TXE#, RXF#, které slouží k indikaci stavu vysílacího a pĜijímacího FIFO bufferu. PĜeklad popisu signálĤ od výrobce je spíše zavádČjící, neboĢ používá oznaþení Transmitter Empty – vysílaþ prázdný pro signál TXE# a Receiver Full – pĜijímaþ plný pro signál RXF#. PĜíhodnČjší by pravdČpodobnČ bylo oznaþení Transmitter Ready a Receiver Ready. Na obr. 2.12 a obr. 2.13 jsou prĤbČhy tČchto signálĤ od výrobce, které toto tvrzení dokazují. V prĤbČzích jsou zároveĖ zobrazeny signály pro vykonání zápisu jednoho bajtu – WR# a vyþtení jednoho bajtu RD#.
11
PĜeklad z aplikaþní poznámky AN_111 pro FTCSPI.DLL [17].
- 38 -
Obr. 2.12 PrĤbČhy signálĤ WR# a TXE# na rozhraní Async 245 FIFO 12
Obr. 2.13 PrĤbČhy signálĤ RD# a RXF# na rozhraní Async 245 FIFO 12 12
PĜevzato z aplikaþní poznámky AN232B–06 pro FT245BM [20], prĤbČhy jsou stejné jako u obvodu FT2232H, odlišnost je pouze ve velikosti þasové základny, neboĢ FT2232H umožĖuje pĜenášet data v režimu Async 245 FIFO rychlostí až 8 MB/s.
- 39 -
Z obr. 2.12 je patrné, že zápis dat z procesoru do USB Ĝadiþe je vykonán se spádovou hranou signálu WR# a že po každém zápisu dojde k nastavení signálu TXE# na urþitou dobu do log. 1, což jinými slovy znamená, že po tuto dobu není možné zapisovat do obvodu další data, aþkoliv poþet dĜíve zapsaných bajtĤ nepĜekraþuje kapacitu FIFO bufferu. Tím pádem není oznaþení Full namístČ. Tímto jevem se obvod odlišuje od tradiþní FIFO pamČti, kam lze pĜi dodržení prodlevy tWR (Write Recovery Time) opakovanČ zapisovat až do zaplnČní celé pamČti, kdy je teprve pĜíznak Full nastaven [21]. Nutnost testování signálĤ TXE# a RXF# je nepĜíjemná z dĤvodu zpomalení algoritmu zápisu/þtení v procesoru. Více se rychlým zápisem a þtením paralelních dat procesorem BF–53x zabývá kapitola 3.1.2. Na obr. 2.13 je zachycena situace pĜi þtení dat z USB Ĝadiþe. ýíst data je možné, pokud se ve FIFO pamČti nacházejí, což indikuje log. 0 signálu RXF#. Vyþtení jednoho bajtu probČhne pĜi spádové hranČ signálu RD#, po kterém následuje doþasný pĜechod RXF# do log. 1, kdy je další
þtení zakázáno, aþkoliv tato informace žádným zpĤsobem nevypovídá o dostupnosti dat ve FIFO bufferu kromČ toho, že pokud se v Rx bufferu žádná data nenacházejí, je signál RXF# na hodnotČ log. 1 trvale. ObdobnČ je tomu u Tx bufferu, kdy zĤstane signál TXE# také v hodnotČ log. 1 až do té doby, než jsou data z USB Ĝadiþe na stranČ PC vyþtena.
Rozhraní PC ↔ USB – ze strany PC se s daty v režimu Async 245 FIFO manipuluje standardnČ prostĜednictvím D2XX funkcí, které byly popsány v kapitole 2.2.1.1. KromČ funkcí FT_Open,
FT_Close, FT_Write a FT_Read je þasto používána funkce FT_GetStatus, která vrací poþet bajtĤ v pĜijímacím a vysílacím FIFO bufferu. Tato informace je užiteþná k Ĝízení algoritmu obslužného programu, napĜ. pĜi rychlém vyþítání obrazových dat. DetailnČjší popis této problematiky poskytuje kapitola 3.1.2.3.
2.2.3.5 Zhodnocení vlastností programátoru EEPROM s FT2232H v režimu MPSSE SPI a paralelního 8–bitového pĜenosu dat S Ĝadiþem FT2232H se podaĜilo realizovat plnČ funkþní programátor bootovací EEPROM pamČti pro procesor BF–53x. Rychlost zápisu a vyþítání EEPROM je dostateþná, srovnání s pĜedchozím zpĤsobem v Bit Bang módu a obvodu FT245R je v tab. 2.4. NamČĜené hodnoty jsou platné pro pĜenos 32768 B dat obČma smČry mezi USB Ĝadiþem a pamČtí 25LC256.
FT245R + Bit Bang FT2232H + MPSSE SPI
zápis 32768 B 35 s 3,063 s
vyþtení 32768 B 1680 s 0,281 s
Tab. 2.4 ýasy potĜebné k zápisu/vyþtení celé EEPROM 25LC256
- 40 -
Programátor byl napsán genericky, tzn. že drobnou úpravou ve zdrojovém kódu lze realizovat programovací aplikaci pro libovolný typ sériové EEPROM pamČti s SPI rozhraním. BČhem vlastního vývoje HW byly naprogramovány konzolové aplikace pro pamČti Microchip 25LC256 a STMicroelectronic M25P80. Protože pamČĢ M25P80 umožĖuje i sektorové a celkové mazání, byly do kódu pĜidány funkcionality pro tyto operace. Jelikož je pinem GPIOL0 Ĝízen také reset procesoru, je možné celý proces naprogramování EEPROM zautomatizovat a integrovat napĜ. do vývojového prostĜedí VisualDSP++, které je uzpĤsobené ke tvorbČ zdrojových kódĤ pro procesory Blackfin. ZpĤsob, jak nastavit vývojové prostĜedí, pĜibližuje obr. 2.14. Ve vlastnostech projektu (ALT+F7) se nachází položka Post-build, ve které lze nastavit posloupnost pĜíkazĤ, které se mají vykonat po pĜekladu zdrojových kódĤ. Výstupem pĜekladu je mimo jiných souborĤ i soubor s pĜíponou .ldr, což je takzvaný loader, který má být nahrán do pĜíslušného procesoru pĜi bootování. Parametry projektu se nastavují zvlášĢ pro Debug a pro
Release, což je nutné vČdČt pĜi zadávání cesty k vytvoĜenému .ldr souboru. Po pĜekladu tedy mohou být vykonány Post-build pĜíkazy, tedy i naprogramování EEPROM novČ pĜeloženým kódem.
Obr. 2.14 Dialogové okno prostĜedí VisualDSP++ pro nastavení Post-build pĜíkazĤ
Pozn.: Parametry souboru loaderu je nutné nastavit v Project : Load : Options tak, že Boot Mode = SPI, Boot Format = Binary a Output Width = 8–bit. - 41 -
PĜíklad: NechĢ aplikace programátoru se nachází v adresáĜi c:\m25p80_prog a projekt bf_centroid.dpj v adresáĜi c:\projects\vdsp\bf_centroid. Pak Post-build pĜíkaz pro zápis loaderu do EEPROM bude následující: c:\m25p80_prog\m25p80_prog.exe -w c:\projects\vdsp\bf_centroid\Release\bf_centroid.ldr Výhodou tohoto nastavení je, že pĜi ladČní programu pro procesor nemusí být po každém pĜekladu otevírána aplikace programátoru, zadávána cesta ke zmČnČnému loaderu a následné programování pamČti. V prostĜedí VisualDSP++ staþí pouze vyvolat kompilaci projektu (zdrojového kódu) a zbylé operace (programování EEPROM a reset procesoru) se vykonají automaticky, což pĜi absenci JTAGu mĤže ušetĜit mnoho þasu. Druhý požadavek na USB Ĝadiþ, tj. co nejrychlejší pĜenos dat mezi procesorem a PC byl splnČn tak, že maximální zaruþená rychlost þiní 8 MB/s. Tato hodnota je již dostateþná pro pĜenos celého snímku z CMOS senzoru v plném rozlišení (napĜ. 1280 × 1024) bez použití externí pamČti. Více se zpĤsobem pĜenosu obrazu zabývá kapitola 3.1.2. ZpĤsob komunikace mezi PC a procesorem pĜes 8–bitové paralelní rozhraní a pamČti FIFO obvodu FT2232H je založen na packetovém principu, který blíže popisuje kapitola 4.2.1. ZávČrem lze Ĝíci, že oba požadavky na USB Ĝadiþ byly splnČny, takže již nebylo zapotĜebí provádČt další experimenty s Ĝadiþem Cypress Semiconductor CY7C680. Mezi nevýhody Ĝešení s FT2232H patĜila pĜedevším velikost pouzdra a potĜeba dalších externích souþástek, takže výsledné schéma zapojení pĜinášelo riziko, že se nepodaĜí navrhnout plošný spoj s omezenými rozmČry 60 × 60 mm, viz kapitola 4.1.3.
- 42 -
2.3 Procesorová þást snímaþe polohy 2.3.1 Struþný pĜehled vlastností procesorĤ Blackfin Ĝady BF–53x Procesory Blackfin s oznaþením BF531/2/3 byly již mnohokrát popsány v nejrĤznČjší literatuĜe napĜ. [7], [22], [23]. Proto budou v této kapitole shrnuty jen základní rysy. V dalším textu pak bude uveden bližší popis jen tČch þástí, které se nČjakým zpĤsobem vztahují k uplatnČní v realizovaném snímaþi polohy. Na obr. 2.15 je znázornČno blokové schéma procesorĤ této Ĝady.
Obr. 2.15 Funkþní blokové schéma procesorĤ Blackfin ADSP BF–53x 13
V jádĜe procesoru jsou dvČ 16–bitové násobiþky, dva 40–bitové akumulátory, dvČ 40– bitové aritmeticko-logické jednotky, þtyĜi video aritmeticko-logické jednotky a jeden 40–bitový posuvný registr. Instrukþní model je postaven na redukované sadČ RISC. VnitĜní pamČĢ o velikosti až 148 kB (u BF–533), Ĝadiþ pro vnČjší pamČti typu SDRAM, SRAM, FLASH a ROM, možnost bootování z vnČjší SPI pamČti. Z periferií je tĜeba zmínit PPI (Parallel
Peripheral Interface) s podporou video formátĤ dat ITU-R 656, dva duální kanály pro plnČ duplexní synchronní sériovou komunikaci s podporou osmi stereo I2S kanálĤ, dva DMA Ĝadiþe 13
PĜevzato z katalogového listu ADSP–BF531/ADSP–BF532/ADSP–BF533 [22].
- 43 -
pro mezipamČĢový pĜesun dat a osm DMA ĜadiþĤ pro další periferie (SPORT, SPI, PPI, UART). Mezi další periferie patĜí SPI rozhraní se sedmi selektovacími signály v režimu master, tĜi 32– bitové þítaþe/þasovaþe s podporou PWM, hodiny reálného þasu a watchdog þasovaþ, jeden 32– bitový þasovaþ jádra, až 16 pinĤ GPIO, rozhraní UART s podporou IrDA, debugovací rozhraní JTAG a jednotka PLL s násobiþkou vstupního hodinového signálu, viz [22]. Výše uvedené rysy jsou pro všechny tĜi typy procesorĤ BF–53x spoleþné. Mají i stejná pouzdra (160–CSPBGA, 169–PBGA a 176–LQFP) se shodným rozmístČním pinĤ. Jediným rozdílem je rychlost a velikost vnitĜní pamČti. Procesory BF–531 a BF–532 mají poþetní výkon 800 MMACs a mezní kmitoþet hodin jádra CCLK 400 MHz. U BF–533 výkon dosahuje až 1200 MMACs a CCLK 600 MHz v pouzdĜe BGA. Srovnání velikosti rĤzných typĤ pamČti u tČchto procesorĤ ukazuje tab. 2.5.
Typ pamČti L1 Instr. SRAM/Cache L1 Instr. SRAM L1 Data SRAM/Cache L1 Data SRAM L1 Scratchpad L1 Celkem L3 Boot ROM
BF–531 16 kB 16 kB 16 kB – 4 kB
BF–532 16 kB 32 kB 32 kB – 4 kB
BF–533 16 kB 64 kB 32 kB 32 kB 4 kB
52 kB 1 kB
84 kB 1 kB
148 kB 1 kB
Tab. 2.5 PĜehled velikostí pamČtí procesorĤ ADSP BF–53x
2.3.2 Propojení procesoru BF–53x s obrazovým senzorem DĤležitým úkolem bylo navázání signálĤ obrazových senzorĤ Micron MT9M001 aMT9V032 na procesor a ostatní obvody snímaþe polohy. Senzorové desky mají katedrou standardizované rozmČry a rozložení pinĤ na propojovacím konektoru, þemuž musel být snímaþ polohy pĜizpĤsoben, viz obr. 2.16.
Obr. 2.16 ZnázornČní propojení procesoru BF–53x se signály senzorové desky
- 44 -
Piny obrazového CMOS senzoru MT9M001 lze pĜibližnČ rozdČlit do tČchto skupin14: •
komunikace I2C (SCLK, SDATA),
•
Ĝídicí signály (RESET#, OE#, TRIGGER, STANDBY),
•
signály pro pĜenos obrazových dat (D0 - D9),
•
synchronizaþní signály (LINE_VALID, FRAME_VALID, STROBE),
•
hodinové signály (CLKIN, PIXCLK),
•
rozvod napájecího napČtí (VDD, DGND, VAA, AGND, VAAPIX).
PĜehled o využitých signálech a zpĤsobu propojení konektoru senzoru s procesorem BF–53x je popsán v tab. 2.6. V dalších odstavcích bude pojednáno o vlastnostech tohoto zapojení z hlediska procesoru i obrazového senzoru.
þíslo pinu konektoru 1 2 3 4 5 6 7 8 9 10 14 11, 12, 13, 15, 16 19 – 20 21 – 28 29, 30
signál na konektoru STROBE OE# SDA SCLK SNAPSHOT RESET# PWDN HSYNC VSYNC PCLK MCLK GND D0 – D1 D2 – D9 VDD
pin na procesoru nebo signál v obvodu – – PF10 PF9 PF11 RESET – PPI_FS1 PPI_FS2 PPI_CLK MCLK GND – PPI0 – PPI7 3V3
Tab. 2.6 Propojení konektoru senzorové desky s procesorem a celým obvodem
2.3.2.1 Komunikace I2C Jedná se o obousmČrný sériový pĜenos dat mezi procesorem a senzorem. Fyzickou vrstvu tvoĜí dvojvodiþová sbČrnice se signály SDA (sériová data) a SCL (sériové hodiny). ObČ linky sbČrnice musí být opatĜeny pull-up odpory, aby byla na sbČrnici v klidovém stavu úroveĖ log. 1. Hodnota tČchto odporĤ by mČla být taková, aby nedocházelo k neúnosnému zaoblení 14
U senzorové desky s MT9V032 jsou na konektor vyvedeny témČĜ identické signály, proto zde nebudou z dĤvodu zachování pĜehlednosti uvádČny.
- 45 -
obdélníkového signálu a zároveĖ neprotékal pĜíliš velký proud tranzistorovými budiþi s otevĜeným kolektorem. Každý pull-up odpor spoleþnČ s kapacitou spoje sbČrnice pĜedstavuje integraþní þlánek, jehož þasová konstanta urþuje mezní kmitoþet, pĜi kterém bude ještČ možné komunikaci uskuteþnit. Situace v navrhovaném propojení procesoru a obrazového senzoru je znázornČna na obr. 2.17.
Obr. 2.17 SbČrnice I2C mezi procesorem a CMOS senzorem
Každý z kondenzátorĤ CV1 - CV4 pĜedstavuje parazitní kapacitu, na které se podílí kapacita spoje a kapacita pĜíslušného I2C budiþe. Odpory RPU3 a RPU4 je sice možné na senzorových deskách osadit, ovšem zpravidla na plošném spoji osazeny nejsou. Z toho dĤvodu bylo nutné poþítat radČji i s odpory RPU1 a RPU2 na desce snímaþe polohy, které by pro tento úþel mohly sloužit i tehdy, když by k senzorovému konektoru bylo pĜipojené jiné zaĜízení s I2C komunikací. Hodnota tČchto odporĤ byla stanovena podle hodnot ve schématu senzorových desek, tj. 1500 Ω. Pokud by se stalo, že by odpory byly osazeny na obou deskách, nedošlo by pĜesto k pĜetížení budiþĤ, neboĢ pĜi VCC = 3,3 V a paralelní kombinaci napĜ. RPU = (RPU1 || RPU3) = 750 Ω v sérii s odporem pĜechodu budiþe Drain-Source v sepnutém stavu, kdy RDS = 50 Ω, tedy IDS = VCC / RPU + RDS = 3,3 / 800 = 4,1 mA. Procesory Blackfin Ĝady BF–53x v sobČ nemají hardwarovou implementaci rozhraní I2C, proto muselo být I2C realizováno softwarovČ na GPIO linkách (PF9 a PF10), viz kapitola 3.1.4. Více informací o univerzálních vstupnČ/výstupních linkách GPIO procesorĤ BF–53x pĜináší kapitola 2.3.4.2.
- 46 -
2.3.2.2 ěídicí signály Z tČchto signálĤ je na konektoru CMOS senzoru propojen pouze RESET# a TRIGGER (SNAPSHOT). Signál RESET# je veden na výstup resetovacího obvodu ADM708TAR a je spoleþný i pro procesor, takže v okamžiku resetu procesoru dochází vždy i k resetu obrazového senzoru, viz kapitola 2.3.3.2. Signál TRIGGER v módu Snapshot slouží k poĜízení jednoho snímku. Po pĜepnutí do tohoto módu nejsou generovány signály FRAME_VALID a LINE_VALID, pouze výstup hodin PIXCLK. Jakmile dojde ke zmČnČ do log. 1 na pinu TRIGGER, je zachycen jeden snímek a obrazová data se zaþnou pĜenášet na výstup. Zbývající signály nebylo z funkþního hlediska nutné zapojovat, priorita byla co nejvČtší ušetĜení GPIO linek. Signál OE# je trvale na hodnotČ log. 0, v opeþném pĜípadČ by se využíval k pĜepínání signálĤ D0 - D9, FRAME_VALID, LINE_VALID, PIXCLK a STROBE do tĜetího stavu. Signál STANDBY vypne analogové obvody, þímž se aktivuje režim nízké spotĜeby.
2.3.2.3 Signály pro pĜenos obrazových dat Paralelní pĜenos obrazových dat do procesoru zajišĢuje tzv. PPI (Parallel Peripheral
Interface). Toto rozhraní umožĖuje poloduplexní obousmČrný pĜenos dat, je vhodné pro pĜipojení nejrĤznČjší periferní zaĜízení, A/D a D/A pĜevodníkĤ, video enkodérĤ/dekodérĤ a podporuje operace standardu ITU-656. Rozhraní sestává z 16 datových bitĤ PPI0 – PPI15, hodinového vstupu PPI_CLK a tĜí signálĤ pro snímkovou synchronizaci, tj. PPI_FS1–3. Rozhraní PPI lze provozovat ve tĜech režimech, tzv. General-Purpose Modes [22]: •
vstupní mód – signály snímkové synchronizace i paralelní data vstupují do PPI,
•
Frame Capture mód – signály snímkové synchronizace jsou výstupy, ale paralelní data vstupy PPI,
•
výstupní mód – signály snímkové synchronizace i paralelní data jsou výstupy z PPI.
Obr. 2.18 Konfigurace PPI rozhraní pro pĜenos obrazových dat z CMOS senzoru 15 15
PĜevzato a upraveno z hardwarového manuálu ADSP–BF533 [24].
- 47 -
V zapojení snímaþe polohy je pro pĜenos obrazových dat z CMOS senzoru využíván výhradnČ vstupní mód v konfiguraci patrné na obr. 2.18. Obrazová data jsou pĜenášena osmi PPI linkami PPI0 - PPI7. V této šíĜce datového slova je zaruþena nejvČtší propustnost dat rozhraním, neboĢ dva 8–bitové vzorky mohou být spojeny do jednoho 16–bitového slova, þímž se docílí vČtšího využití DMA kanálu, který je schopen do vnitĜní pamČti SRAM pĜenést právČ 16 bitĤ s každým taktem systémových hodin SCLK. Z hlediska obrazového senzoru jsou pĜenášeny signály D2 - D9, aþkoliv senzor poskytuje 10 bitĤ jasové informace na každý pixel. Je to z toho dĤvodu, že pro metody zpracování obrazové informace za úþelem urþení polohy objektu není nutné mít k dispozici tolik kvantizaþních úrovní na rozdíl od rychlého pĜesunu dat do pamČti. Navíc by došlo k obsazení dalších dvou GPIO linek, které jsou se zmiĖovanými vstupy PPI8,9 sdílené.
2.3.2.4 Synchronizaþní signály Tyto signály mají význam pro Ĝízení PPI, tzn. spouštČjí nebo zastavují pĜenos dat ze senzoru, aþkoliv hodinový signál PIXCLK je na vstupu pĜítomný neustále. Signál
LINE_VALID je aktivní pĜesnČ po dobu vyþítání jednoho Ĝádku, signál FRAME_VALID pak po dobu jednoho snímku. Jinými slovy, signály slouží pro Ĝádkovou a snímkovou synchronizaci, tj. napĜ. pro odpoþítání n ĜádkĤ od zaþátku snímku, pĜeskakování m ĜádkĤ apod. ZároveĖ platí, že oba tyto signály musí být aktivní, aby byla pĜenášena obrazová data rozhraním PPI. Pro názornost jsou prĤbČhy tČchto signálĤ na obr. 2.19.
Obr. 2.19 PrĤbČhy signálĤ snímkové a Ĝádkové synchronizace senzorĤ Micron 16
Znaky A, P1, P2 a Q vyjadĜují délku pĜíslušného intervalu v poþtu period Ĝídicího hodinového signálu MCLK. A je doba aktivního výstupu dat, P1 je zatemnČná oblast na zaþátku snímku, P2 je zatemnČná oblast na konci snímku a Q je zatemnČná oblast na konci každého
Ĝádku s výjimkou posledního. Platí, že Q = P1 + P2. Velikosti intervalĤ A a Q lze programovČ mČnit zápisem do pĜíslušných registrĤ obrazového senzoru. Toho se také využívá pro zpomalení vyþítání obrazových dat za úþelem kontinuálního pĜenosu pĜes USB Ĝadiþ do PC bez použití 16
PĜevzato z katalogového listu MT9M001 [5]. PrĤbČhy a oznaþení tČchto signálĤ je stejné i u MT9V032
- 48 -
externí pamČti SDRAM, viz kapitola 3.1.2.2. Signál STROBE je výstupní a slouží k indikaci doby integrace všech ĜádkĤ. Ve snímaþi polohy však využíván není.
2.3.2.5 Hodinové signály Obrazové senzory vyžadují pro svou funkci pĜipojení pravoúhlého hodinového signálu, ze kterého jsou Ĝízeny veškeré procesy. Senzor MT9M001 toleruje kmitoþty v rozsahu 1 – 48 MHz.
Signál CLKIN je hodinovým vstupem senzoru a je pĜivádČn pĜes tvarovaþ z krystalového oscilátoru, kterým je generován hodinový signál pro procesor. UvnitĜ procesoru je jednotka fázového závČsu PLL, kterou lze násobit kmitoþet oscilátoru v širokém rozsahu, což je výhodné pro optimální nastavení SCLK (System Clock) a CCLK (Core Clock). U obou výše zmínČných obrazových senzorĤ Micron však jakékoliv násobení nebo dČlení kmitoþtu CLKIN chybí, proto je vždy kmitoþet výstupního signálu PIXCLK stejný. Signál PIXCLK je pĜipojen na signál PPI_CLK a slouží ke vzorkování dat na sbČrnici PPI. Výstup hodin ze senzoru je možné potlaþit signálem OE# (Output Enable). PĜi návrhu snímaþe polohy tedy byla hodnota krystalu volena s ohledem na obrazový senzor, viz kapitola 3.1.2.2. Obrazové senzory mají odlišnou aktivní hranu signálu PIXCLK, což je nutné zohlednit pĜi nastavování konfiguraþních registrĤ PPI procesoru, jinak bude obraz ze senzoru obsahovat chyby. Více je uvedeno v kapitole 3.1.3.
2.3.2.6 Rozvod napájecího napČtí Napájecí napČtí 3,3 V je na konektor pĜivádČno z hlavního stabilizujícího mČniþe, který se také nachází v zapojení snímaþe polohy. Na senzorové desce se toto napČtí oddČluje pĜes tlumivku na napČtí jádra VDD a napČtí pro analogovou þást VAA, jimž pĜíslušejí zemČ DGND a AGND. K analogové þásti je rovnČž pĜipojeno VAAPIX, což je napájení pro matici pixelĤ. PĜi návrhu stabilizujícího mČniþe (kapitola 2.3.5) bylo nutné poþítat s rezervou pro mezní proudy obrazových senzorĤ, které þiní Imax = 144 mA pro MT9M001a Imax = 200 mA pro MT9V032.
- 49 -
2.3.3 Periferní obvody procesoru 2.3.3.1 Hodinový systém Procesory BF–53x mají vnitĜní obvod, k nČmuž staþí pĜipojit externí krystal Q a kondenzátory C1, C2, viz obr. 2.20. Hodnota tČchto kondenzátorĤ byla volena experimentálnČ, neboĢ záleží na mnoha faktorech, které popisuje [22]. ZpČtnovazební odpor RP není tĜeba osazovat, protože je již obsažen ve vnitĜním zapojení procesoru. Z výstupu XTAL je sinusový prĤbČh veden do tvarovacího hradla U1, které má za úkol dodávat obdélníkový hodinový signál MCLK pro CMOS senzor. Nutno pĜipomenout, že v používaných obrazových senzorech Micron, není žádná dČliþka hodinového signálu, proto jsou obrazová data vysouvána podle MCLK. Zvolená hodnota 16 MHz u krystalu Q je kompromisem dvou požadavkĤ: zpomalení toku obrazových dat za úþelem spojitého pĜesunu snímku do USB Ĝadiþe a co nejvČtší poþet snímkĤ za sekundu pro rychlé mČĜení polohy svČtelné stopy. S kmitoþtem 16 MHz byl u MT9M001 dosažen pĜenos obrazu v plném rozlišení 1280 × 1024 pixelĤ rychlostí 8 MB/s, tj. cca 6 snímkĤ/s a minimální doba vyþtení jednoho snímku ze senzoru v plném rozlišení byla 100 ms.
Obr. 2.20 Obvod pro generování hodinových signálĤ BF–53x 17
Možnosti nastavení hodinových signálĤ uvnitĜ procesoru SCLK (hodiny periferií) a CCLK (hodiny jádra) nabízí jednotka PLL, viz obr. 2.21. V té lze signál CLKIN násobit faktorem 0,5 až 64, ale nesmí být pĜekroþen mezní kmitoþet VCO (Voltage Contolled Ocillator). Následuje systém dČliþek, kterým se nastaví kmitoþty SCLK a CCLK na požadovanou hodnotu. Platí, že
fVCOMAX = fCCLK, pĜiþemž pro procesor BF–533 v pouzdĜe LQFP–176 je fCCLKMAX = 400 MHz a fSCLKMAX = 133 MHz. Teoretické zvýšení tČchto kmitoþtĤ pĜetaktováním sice možné je (za 17
PĜevzato a upraveno z katalogového listu ADSP–BF531/ADSP–BF532/ADSP–BF533 [22].
- 50 -
dodržení jistých podmínek), ovšem bČhem vývoje snímaþe polohy žádné experimenty tohoto typu provádČny nebyly.
Obr. 2.21 PLL systém procesoru BF–53x 18
Procesory BF–53x mají jeden pin vyhrazen jako výstup hodinového signálu CLKOUT, viz obr. 2.20. Tento signál je shodný s SCLK, lze jej tedy využít k taktování nejrĤznČjších externích obvodĤ, napĜ. pamČti SDRAM. Pro úþely generování hodinového signálu pro obrazový senzor však vhodný není, neboĢ þasování ostatních periferií by bylo pĜímo závislé na jeho okamžitém režimu (rychlosti vyþítání obrazových dat).
2.3.3.2 Resetovací obvod Po pĜivedení napájecího napČtí na procesor je jeho pin RESET držen v aktivní úrovni ještČ po dobu 3500 × tCLKIN (tCLKIN = 62,5 ns, tj. perioda hodinového signálu) od ustálení napájecích napČtí VDDINT a VDDEXT, poté následuje bootování procesoru ze sériové pamČti EEPROM (platí pro mód BMODE = 11, viz kapitola 2.3.3.3). Po výše uvedené dobČ je možné procesor BF–53x resetovat pĜivedením log. 0 na jeho pin RESET minimálnČ po dobu 11 × tCLKIN [22]. Ke generování korektního resetovacího pulzu je v zapojení snímaþe polohy použit obvod ADM708TAR, viz obr. 2.22.
18
PĜevzato a upraveno z katalogového listu ADSP–BF531/ADSP–BF532/ADSP–BF533 [22].
- 51 -
Obr. 2.22 Schéma zapojení resetovacího obvodu pro BF–53x a obrazový senzor
Tento obvod má navzájem inverzní výstupní signály RESET a RESET, pĜiþemž je schopný generovat resetovací pulz právČ tehdy, když dojde: •
k zapínání a vypínání napájecího zdroje a pĜi zakolísání napájecího napČtí,
•
k detekování napČtí menšího než 1,25 V na vstupu PFI (Power Fail Input),
•
k aktivní log. úrovni na vstupu MR (Manual Reset) s tolerovaným odskokem kontaktĤ.
Podrobné parametry všech prĤbČhĤ a úrovní jsou uvedeny v katalogovém listu obvodu [25]. Na vstup MR je pĜipojeno tlaþítko, aby bylo možné procesor kdykoliv resetovat, což je praktické pĜi použití desky snímaþe polohy i pro jiné úþely než zpracovávání obrazové informace z CMOS senzoru. K tlaþítku je zároveĖ pĜipojen paralelnČ tranzistor T1, který vykonává stejnou funkci, pokud je na jeho bázi pĜivedena pĜes odpor R2 úroveĖ log. 0, což zprostĜedkovává signál FT_RESET_IN z GPIOL0 linky USB Ĝadiþe FT2232H. Pro pĜipomenutí, tento signál je generován z FT2232H po celou dobu programování pamČti EEPROM, aby byl procesor BF–53x ve stavu resetu, aby mČl budiþe sbČrnice SPI ve tĜetím stavu a aby po naprogamování této pamČti provedl nabootování novČ uloženého loaderu.
2.3.3.3 Bootování procesoru a pamČĢ EEPROM Procesory Blackfin Ĝady BF–53x nemají pamČĢ programu umístČnou na þipu jako nČkteré mikrokontroléry, ale mají v sobČ zabudovaný bootovací systém, který musí vykonávaný program nahrát z externí pamČti. Výhoda této koncepce spoþívá v tom, že velikost programu není omezena kapacitou vnitĜní pamČti, a je tak možné procesorem zpracovávat i vČtší množství programových dat. Režimy bootování BF–53x jsou urþeny kombinací logických úrovní na vstupních pinech BMODE0,1 a jsou následující [26]: - 52 -
•
BMODE 00: bootování není povoleno, program je vykonáván pĜímo z externí 16–bitové pamČti,
•
BMODE 01: bootování z 8/16–bitové flash/PROM pamČti,
•
BMODE 10: bootování z hostitelského Ĝadiþe pĜes SPI v režimu slave,
•
BMODE 11: bootování z 8/16/24–bity adresovatelné SPI pamČti v režimu master.
Pro snímaþ polohy je použitelný pouze poslední zpĤsob bootování, tj. nahrání programu do vnitĜní pamČti z externí sériové EEPROM, protože paralelní flash pamČti ani další procesor by nebyly z hlediska rozmČrĤ DPS a minimální obvodové konfigurace žádoucí.
Obr. 2.23 PĜipojení 1 MB pamČti EEPROM M25P80 na sbČrnici SPI
Na obr. 2.23 je znázornČno pĜipojení pamČti M25P80 na signály SPI sbČrnice. Tato pamČĢ byla již zmínČna v kapitole 2.2.3.3 a její podrobný popis poskytuje katalogový list [19]. ZpĤsob propojení SPI sbČrnice mezi USB Ĝadiþem, procesorem a EEPROM pamČtí je pro pĜipomenutí na obr. 2.10. Pro správnou funkþnost a tvarování signálĤ na sbČrnici byly do obvodu pĜidány tzv.
pull–up odpory R1, R2 a R3. Jejich hodnota byla volena experimentálnČ tak, aby byla bezchybná komunikace i s ochrannými sériovými odpory 470 Ω u FT2232H v zapojení dle obr. 2.10. zaruþena. PamČĢ M25P80 má kromČ SPI signálĤ S (Chip Select), C (Clock), D (Data In), Q (Data Out) ještČ vstupní piny HOLD (Hold) a W (Write Protect). Pokud je signál HOLD uveden do aktivní log. úrovnČ a na výbČrovém pinu S se objeví spádová hrana, dojde k pĜerušení veškeré sériové komunikace, aktivní zĤstává pouze výbČrový vodiþ S. Ochrana zápisu a mazání je aktivní pĜi úrovni log. 0 na pinu W, pĜiþemž se vztahuje pouze na urþité
bloky pamČti, které se musí oznaþit pĜíslušnými bity BP0, BP1 a BP2 (Block Protect) ve stavovém registru. V obvodu snímaþe polohy nejsou funkce Hold ani Write Protect využívány, proto jsou na oba vstupní piny pĜivedeny úrovnČ log. 1. Plošný spoj pod pamČtí EEPROM byl navržen tak, aby bylo dobĜe pĜipájitelné vývodové pouzdro M25P80 (SO8) a zároveĖ byl kompatibilní i pro bezvývodové pouzdro pamČti M25P32 (MLP8) s plošným pinem na spodní þásti pouzdra, který je vnitĜnČ propojen s VSS. PamČĢ - 53 -
M25P32 [27] má 4 × vČtší kapacitu než M25P80 (4 MB) a je uvažováno o jejím použití v budoucích aplikacích s deskou snímaþe polohy. Tato koncepce procesoru s velkou bootovací pamČtí pĜedpokládá, že obsah pamČti bude rozdČlen na sektory, do nichž se nahrají rĤzné þásti programu mající odlišné funkcionality. NapĜíklad v prvním sektoru bude inicializaþní (hlavní) program, v druhém program pro hledání tČžištČ svČtelné stopy, ve tĜetím program pro hledání hran, ve þtvrtém program pro mČĜení plochy a podobnČ v dalších sektorech. Protože by se všechny naprogramované funkce nevešly do vnitĜní pamČti procesoru, nebo by zabíraly zbyteþnČ mnoho místa, byl by do ní po resetu nahrán pouze inicializaþní program a další þásti by byly nahrávány podle aktuálního aplikaþního využití. Více informací o tomto zpĤsobu bootování pĜináší dokument [26], kapitola Multi-Application Management na str. 7.
2.3.4 Uživatelská rozhraní snímaþe polohy 2.3.4.1 UART, þasovaþ, sériová linka RS–232/485 Procesory BF–53x jsou vybaveny obvody pro plnČ duplexní asynchronní sériovou komunikaci známou pod oznaþením UART. Mezi základní parametry pĜenosu patĜí: poþet datových bitĤ (5 - 8), poþet stop bitĤ (1 nebo 2), parita (sudá, lichá, žádná), rychlost pĜenosu (až 8,3 MBaud). Sériová linka zahrnuje pĜijímací Rx a vysílací Tx kanál s datovými registry, pro nČž je þtení nebo zapisování Ĝízeno procesorem a obsluha události na pĜijímací stranČ provádČna napĜ. pĜerušením nebo s minimální úþastí procesoru, tj. pomocí DMA kanálĤ. Piny na procesoru RX a TX jsou pĜivedeny pĜes ochranné odpory 470 Ω na 4–pinový konektor J2 s rozložením podle tab. 2.7.
þíslo pinu signál
1 UART_TX
2 TMR0
3 UART_RX
4 GND
Tab. 2.7 Rozložení pinĤ konektoru J2–UART na plošném spoji
Na pinu 2 konektoru J2 je vyveden signál TMR0, který pĜímo nesouvisí se sériovou komunikací. Pin s tímto oznaþením se však nachází v bezprostĜední blízkosti signálĤ RX a TX, takže bylo výhodné jej vyvést také. TMR0 je vstupnČ/výstupní pin prvního ze tĜí identických
þasovaþĤ, které procesory BF–53x obsahují, má tedy využití v mnoha dalších zapojeních. ýasovaþe lze provozovat ve vstupních režimech WDTH_CAP (Pulse Width Count and Capture), EXT_CLK (External Event) a výstupním režimu PWM_OUT (Pulse Width Modulation). Bližší popis þasovaþĤ a jejich režimĤ obsahuje [24]. Pro pĜipojení snímaþe polohy k PC pĜes sériovou linku RS–232 musí být použit pĜevodník napČĢových úrovní, napĜ. ADM3202 [28]. Tento obvod není v zapojení z dĤvodu snahy o úsporu místa na DPS integrován, ale je možné jej pĜipojit na dalším rozšiĜujícím modulu. Obvod - 54 -
ADM3202 je dvoukanálový, viz obr. 2.24, pĜípadné využití druhého kanálu by se nabízelo vytvoĜením dalšího UARTu softwarovČ na nČkterých vyvedených linkách GPIO, tj. PFx.
Obr. 2.24 Funkþní bloková schémata budiþĤ RS–232/485 19
Nevýhodou RS–232 je tzv. point-to-point komunikace, což prakticky znamená, že k jednomu PC by mohl být pĜipojen pouze jeden snímaþ polohy, navíc délka sbČrnice dosahuje pro vyšší pĜenosové rychlosti pouze nČkolik jednotek metrĤ. PraktiþtČjší je rozhraní RS–485, které podporuje multipoint komunikaci Master/Slave. Pro budoucí využití snímaþe polohy v senzorové síti by každý snímaþ mohl být pĜipojen na sbČrnici jako Slave a Ĝídicí poþítaþ jako Master. SbČrnici tvoĜí kroucený pár vodiþĤ a její délka mĤže dosahovat až 1200 m. Bez opakovaþe lze na sbČrnici pĜipojit až 32 zaĜízení, což znaþnČ pĜesahuje poþet portĤ v bČžných USB Hubech, takže ani USB rozhraní snímaþĤ polohy s nČkolikametrovými propojovacími kabely pro multisenzorovou síĢ vhodná nejsou. SbČrnice RS–485 je sice poloduplexní, ale rychlost komunikace mĤže dosahovat až 10 Mb/s, je tedy dostateþná i pro pĜenos vícenásobné informace o poloze. U obvodu ADM485 jsou v blokovém schématu na obr. 2.24 znázornČny povolovací vstupy DE (Driver Enable) a RE (Receiver Enable), jimiž se budiþ a pĜijímaþ pĜipojují ke sbČrnici a musí být Ĝízeny z volných linek PFx.
2.3.4.2 Rozhraní GPIO (Programmable Flags) Pro nejrĤznČjší aplikaþní uplatnČní jsou procesory BF–53x vybaveny 16–bitovým portem F, což jsou navzájem nezávislé piny PFx (Programmable Flags), a každý pin je možné v pĜíslušných registrech nastavit buć jako vstupní nebo jako výstupní. U každého vstupního pinu je nastavitelné samostatné pĜerušení s libovolnou prioritou. PĜerušení lze vyvolat úrovní, nábČžnou hranou, spádovou hranou nebo obČma hranami [24]. Snahou vývoje snímaþe polohy bylo i vyvedení co nejvČtšího poþtu PF na konektory, aby byly dostupné pro další použití. Všechny GPIO linky však sdílí pĜíslušné piny procesoru i pro ostatní funkcionality (rozhraní 19
PĜevzato a upraveno z katalogových listĤ ADM3202/ADM3222/ADM1385 [28] a ADM485 [29].
- 55 -
PPI, výbČrový vodiþ SPI sbČrnice, þasovaþ), takže po obsazení nČkterých linek signály obrazového senzoru a Ĝadiþe FT2232H zbylo pouze 5 flagĤ, které byly vyvedeny na konektor J4, viz tab. 2.8. V tabulce jsou uvedeny zároveĖ alternativní funkcionality, které má procesor na pĜíslušném pinu.
þíslo pinu
signál
další funkcionalita
sdílení
1 2 3 4 5 6 7 8
PF7 PF8 PF6 3V3 PF3 NC PF1 GND
SPISEL7 / PPI12 PPI11 SPISEL6 / PPI13 – SPISEL3 / PPI_FS3 – SPISEL7 / TACLK –
LED_R LED_G BTN – – – – –
Tab. 2.8 Propojení pinĤ na konektoru J4 s piny GPIO
V nČkterých pĜípadech je užiteþné mít na desce vyvedeny nČjaké vstupní a výstupní prvky pro elementární ovládací operace, což bylo u snímaþe polohy vyĜešeno testovacím tlaþítkem a dvČma indikaþními LED, viz obr. 2.25. Tlaþítko je pĜipojeno na flag PF6, kde pĜi stisknutí uvede vstupní pin do úrovnČ log. 0, pĜi uvolnČní zĤstává v log. 1. Pokud by byl tento pin nastaven jako výstupní do log. 1 a došlo by ke stisknutí, nedojde díky ochrannému odporu R2 k proudovému pĜetížení.
Obr. 2.25 PĜipojení testovacího tlaþítka a indikaþních LED na GPIO linky
ýervená a zelená LED jsou buzeny pĜes pĜedĜadné odpory R3 a R4 proti zemi úrovní log. 1. Hodnoty odporĤ byly stanoveny tak, aby LED vykazovaly stejnou svítivost a proudová zátČž každého pinu nepĜekroþila 10 mA. U tČchto dvou flagĤ je však nutné uvážit kvĤli nelineární zátČži zkreslení obdélníkového prĤbČhu, které by mohlo ovlivnit externí zaĜízení pĜipojené na dotyþné linky. Proto je vhodné zejména pĜi vyšších kmitoþtech indikaþní LED vyĜadit odletováním nebo zmČnou odporĤ R3 a R4. - 56 -
2.3.4.3 Sériový port SPORT Mezi další rysy DSP procesorĤ Blackfin BF–53x patĜí implementace dvou sériových portĤ SPORT0,1. Na plošném spoji byl z dĤvodu nedostatku místa vyveden na konektor J3 pouze SPORT0, jehož rozložení pinĤ s popisem signálĤ znázorĖuje tab. 2.9. Rozhraní SPORT je urþeno výhradnČ pro synchronní sériový pĜenos dat s možností plnČ duplexní komunikace.
þíslo pinu 1 2 3 4 5 6 7 8 9 10
signál DR0SEC TSCLK0 DR0PRI 3V3 RSCLK0 RFS0 TFS0 DT0PRI DT0SEC GND
popis Receive Data Secondary Transmit Clock Receive Data Primary Power Supply 3,3V Receive Clock Receive Frame Sync Transmit Frame Sync Transmit Data Primary Transmit Data Secondary Ground
Tab. 2.9 Rozložení signálĤ SPORT0 na pinech konektoru J3
Rozhraní SPORT zahrnuje jednu skupinu pinĤ pro vysílání (primární/sekundární data, hodiny, rámcovou synchronizaci) a druhou skupinu pro pĜíjem s totožným oznaþením. Na obr. 2.26 je znázornČn pĜíklad možného pĜipojení dvou sériových synchronních zaĜízení na SPORT0.
Obr. 2.26 PĜipojení synchronních zaĜízení A a B k sériovému portu SPORT0
20
K dalším vlastnostem SPORTu patĜí pĜenosová rychlost 66 nebo 133 Mbit/s (pĜi souþasném využití sekundárního kanálu Rx/Tx), nastavitelnost slov o délce 3–32 bitĤ,
20
PĜevzato a upraveno z hardwarového manuálu BF–533 [24].
- 57 -
programovatelná vnitĜní/vnČjší hodinová a rámcová synchronizace, podpora vícekanálových rozhraní TDM (Time Divison Multiplex) pro síĢovou komunikaci nebo podpora protokolu I2S. Sériový port lze uplatnit pro pĜipojení nejrĤznČjších audiokodekĤ, dalších procesorĤ, programovatelných polí FPGA apod.
2.3.4.4 Ladicí rozhraní JTAG JTAG je velmi praktickým nástrojem pĜi vývoji software pro procesory BF–53x, neboĢ umožĖuje plnou emulaci procesoru na zapájené desce (tzv. in–circuit), což znamená, že je možné provádČt krokování programu, sledovat a modifikovat promČnné, obsah pamČti a registrĤ na reálném hardwaru. Na desce snímaþe polohy proto byly vyvedeny signály JTAGu na 14-pinový konektor podle standardu IEEE 1149.1, viz tab. 2.10. Signály TDI, TCK a TMS jsou doplnČny pull–up odpory, signál TRST odporem pull–down, pĜiþemž schéma na obr. 2.27 je pĜevzato z ovČĜeného funkþního zapojení podle vývojové desky EZ–KIT Lite.
þíslo pinu 1 2 3 4, 7, 9, 11, 13 5 6 8 10 12 14
signál 3V3_10K EMU# NC GND 3V3 TMS TCK TRST# TDI TDO
popis 3,3 V With 10 kΩ Emulation Flag Not Connected Ground Power Supply 3,3V Test Mode Select Test Clock Test Reset Test Data Input Test Data Out
Tab. 2.10 Rozložení a popis pinĤ na konektoru JTAG
Obr. 2.27 Schéma zapojení JTAG konektoru
- 58 -
Testování funkþnosti JTAGu bylo provádČno na osazené desce snímaþe polohy pomocí emulátoru ICE-100B od Analog Devices, který byl katedrou mČĜení novČ zakoupen. Tento emulátor umožĖuje vykonávat veškeré ladicí operace, které byly uvedeny na zaþátku kapitoly. PĜed integrací do vývojového prostĜedí VisualDSP++ bylo nutné nejprve nainstalovat patĜiþný update, poté probČhla instalace vlastního hardware emulátoru již standardním zpĤsobem. Doporuþený postup celé instalace je podrobnČ popsán v dokumentu [30].
2.3.5 Napájecí systém Pro obvody snímaþe polohy bylo nutné zajistit dvČ úrovnČ napájecího napČtí – 3,3 V a 1,2 V. Napájecí napČtí ze zdroje 3,3 V vyžadoval procesor BF–53x (VDDEXT), Ĝadiþ FT2232H, obrazový senzor, obČ pamČti EEPROM, resetovací obvod ADM708TAR i invertor 74LVC04. Napájení 1,2 V pak mČlo být urþeno pouze pro jádro procesoru. Bylo zĜejmé, že proudové zatížení u pĜíslušných napČĢových hladin bude mít široký rozsah a bude záležet na okamžitém výpoþetním výkonu procesoru, USB Ĝadiþe a dalších periferií, u nichž ani nemohl být odbČr pĜedem známý. Z toho dĤvodu bylo tĜeba poþítat s jistou proudovou rezervou. Ve snaze o nepĜekroþení požadovaných rozmČrĤ DPS snímaþe polohy (60 × 60 mm), nemohl být v koneþném zapojení integrován žádný složitý spínaný mČniþ s indukþností. ZároveĖ byla zamítnuta myšlenka, že by se na vstupní svorky pĜivádČlo pĜímo napČtí 3,3 V (byĢ stabilizované), z nČjž by se odvozovalo napČtí 1,2 V pro jádro. Výsledná koncepce pak byla realizována ze dvou kaskádnČ zapojených lineárních stabilizátorĤ LM317T, kdy návaznost napČĢových hladin byla VIN → 3,3 V → 1,2 V.
Obr. 2.28 Schéma zapojení lineárního mČniþe pro napČtí 3,3 V s LM317T
Od pĤvodního zámČru použít stabilizátory v SMD pouzdĜe muselo být upuštČno, neboĢ plochy potĜebné k odvodu ztrátové tepelné energie plošný spoj omezené velikosti nenabízel. Oba dva prvky jsou tedy v pouzdĜe TO–220 s chladicí plochou u okraje desky pro pĜípadnou montáž na chladiþ nebo stČnu montážní krabice. K parametrĤm chladiþe je tĜeba pĜistupovat s ohledem - 59 -
na velikost vstupního napČtí a proudový odbČr 3,3 V vČtve, z níž je odebírán i proud pro jádro procesoru pĜes 1,2 V stabilizátor. Vstupní napČtí smí dosahovat až 40 V, ovšem pĜi této úrovni je již ztrátový výkon znaþný a provoz nehospodárný, proto je optimální napájet snímaþ polohy z 6 V zdroje. Mezní proud LM317T þiní 1,5 A, takže pro pĜípadné napájení externích 3,3 V zaĜízení z nČkterých konektorĤ je proudová rezerva dostateþná. Stabilizátor 1,2 V pĜi provozu v pokojových teplotách chlazen být nemusí, protože vzniklé teplo odvede samotné pouzdro souþástky. Na obr. 2.28 je uvedeno zapojení stabilizátoru pro 3,3 V se zpČtnovazebním odporovým dČliþem R1 a R2, který urþuje velikost výstupního napČtí podle vztahu
§ R · VOUT = 1,25 ⋅ ¨¨1 + 2 ¸¸ + I ADJ ⋅ R2 , R1 ¹ ©
(2.2)
kde IADJ je proud zpČtnovazebního pinu ADJ a þiní 50 až 100 μA. Stabilizátor 1,2 V je svým vstupem pĜipojen na 3,3 V a od zapojení na obr. 2.28 se liší tak, že odpor R1 není zapojen a R2 má hodnotu 0 Ω, resp. pin ADJ je pĜipojen pĜímo na zem. Po dosazení do rovnice (2.2) v tomto pĜípadČ vyjde, že VOUT = 1,25 V, což je s uvážením úbytkĤ na spojích pĜi zatížení a toleranþním intervalu napájení jádra VDDINT pĜípustné. Napájecí systém tvoĜí kromČ mČniþĤ napČtí také rozsáhlá síĢ blokovacích keramických kondenzátorĤ, které jsou osazeny v tČsné blízkosti jednotlivých napájecích pinĤ integrovaných obvodĤ. K vyhlazení zvlnČní jsou na nČkterých pinech doplnČny filtraþní tantalové kondenzátory. Proti pĜepólování celého obvodu snímaþe polohy slouží ochranná dioda D1, ovšem za cenu úbytku cca 0,6 V na PN pĜechodu v propustném smČru. Pro indikaci pĜipojení napájecího napČtí VIN slouží LED, která je napájená pĜes sériový odpor z vČtve 3,3 V.
- 60 -
3 Softwarová þást vývoje 3.1 PĜenos obrazu ze senzoru do PC PĜed samotným popisem zpĤsobu pĜenosu obrazu z CMOS senzoru, pĜipojeného ke snímaþi polohy pĜes USB Ĝadiþ do PC, je vhodné provést struþný rozbor tohoto úkolu z hlediska všech zúþastnČných hardwarových þástí. V první ĜadČ je nutné uvést programovou konfiguraci nČkterých registrĤ procesoru potĜebných k inicializaci GPIO linek (definování vstupních a výstupních pinĤ) a PLL jednotky. Další krok pĜedstavuje popis rozhraní BF–53x s FT2232H a odesílání velkého objemu dat do PC. NáslednČ lze pĜistoupit ke konfiguraci PPI rozhraní procesoru pro pĜipojení obrazového senzoru a nastavení DMA kanálu. PĜed samotným pĜenosem obrazových dat musí být provedeno také nastavení registrĤ CMOS senzoru, což vyžaduje softwarovou implementaci I2C sbČrnice pomocí programovatelných flagĤ. Nakonec je zapotĜebí, aby byl rychlý tok dat na stranČ PC neprodlenČ vyþítán z USB zaĜízení a nedocházelo ke ztrátČ dat na stranČ procesoru, který nemá dostatek pamČti na uchování více než nČkolika ĜádkĤ snímku. Vyþtená data jsou v PC ukládána do pamČti nebo do souboru, a poté vykreslena na monitor.
3.1.1 Nastavení GPIO linek a konfigurace jednotky PLL Po pĜipojení napájecího napČtí procesoru nebo po jeho resetu musí dojít k inicializaci programovatelných flagĤ, tzn. musí být definováno, které GPIO linky budou vstupní a které výstupní. Pro nastavení smČru linek slouží registr FIO_DIR (Flag Direction), kdy zápisem log. 1 na nČkterý bit v šesnáctibitovém registru dojde k nastavení pĜíslušného flagu jako výstupu a log. 0 jako vstupu. Po resetu jsou všechny bity v log. 0, tj. všechny linky vstupní. Aby procesor zaþal vyhodnocovat (þíst) stavy na vstupních linkách, musí být pĜipojen vstupní buffer na pĜíslušném flagu, což se provede nastavením log. 1 v registru FIO_INEN (Flag Input Enable). PĜíklad, jak nastavit flagy PF9, PF11 jako výstupy a PF4, PF5 jako vstupy uvádí následující kód. 1DVWDYHQtYêVWXSQtFKIODJĤ 1DVWDYHQtYêVWXSQtFKIODJĤ
S),2B',5_ 3) 3)_3) _3) 1DVWDYHQtYVWXSQtFKIODJĤ
1DVWDYHQtYVWXSQtFKIODJĤ
S),2B',5 a a3) 3) 3)_3) 3)
S),2B,1(1_ 3) 3) 3)_3) _3)
- 61 -
Pozn.: Názvy registrĤ a nČkterých bitĤ jsou definovány pro procesory BF–53x pomocí maker v souboru defBF532.h, takže zápis zdrojových kódĤ není nutné provádČt pomocí adres registrĤ a hexadecimálních hodnot. Ve vlastním zdrojovém kódu není zápis do registrĤ provádČn pomocí názvĤ flagĤ PFx, ale pĜes makra, která pĜiĜadí pĜíslušnému flagu pĜímý název signálu podle schématu, napĜ. pĜiĜazení S_SCLK flagu PF9 provede pĜíkaz GHILQH 6B6&/. 6B6&/.3) v konfiguraþním hlaviþkovém souboru config.h. Tento soubor slouží k nastavení nejrĤznČjších parametrĤ a pĜípadnému pĜedefinování signálĤ na GPIO linkách. Pro nastavení systémových hodin (SCLK) a hodin jádra (CCLK) musí být provedena konfigurace PLL jednotky a dČliþek, viz obr. 3.1.
Obr. 3.1 Systém pro generování hodinových signálĤ SCLK a CCLK 21
V registru PLL_CTL (PLL Control) se nastavují tyto bity: •
DF (Divide Frequency) – nastavením bitu dojde k aktivaci dČliþky CLKIN/2 na vstupu jednotky PLL,
•
MSEL[5:0] (Multiplier Select) – neboli zpČtnovazební dČliþka, kterou se Ĝídí kmitoþet VCO (Voltage Contolled Ocillator), tj. kolikrát je násobený hodinový signál CLKIN za vstupní dČliþkou. Velikost násobnosti podle hodnoty bitĤ MSEL udává tab. 3.1.
Hodnota MSEL Násobnost
0 64 ×
1 1×
2 2×
N = 3–62 N×
63 63 ×
Tab. 3.1 Násobnost výstupního kmitoþtu VCO vĤþi kmitoþtu na vstupu PLL
•
BYPASS – nastavením tohoto bitu bude PLL jednotka pĜeklenována a kmitoþty SCLK a CCLK budou odpovídat CLKIN.
21
PĜevzato z hardwarového manuálu BF–533 [24].
- 62 -
Dalším registrem, který urþuje dČlicí faktor kmitoþtu napČĢovČ Ĝízeného oscilátoru pro odvození hodin SCLK a CCLK, je PLL_DIV (PLL Divide) s tČmito nastavitelnými bity: •
CSEL[1:0] (Core Select) – platí, že CCLK = VCO / x, kde x = {1, 2, 4, 8} podle bitĤ CSEL,
•
SSEL[3:0] (System Select) – obdobnČ pro SCLK = VCO / x, kde x = 1–15 urþeno bity SSEL, hodnota 0 není povolena.
Pro nastavení snímaþe polohy k hledání tČžištČ svČtelné stopy nebo rychlý pĜenos obrazových dat do PC musel být zajištČn maximální výkon (bez pĜetaktování), tzn. s nastavením SCLK = 133 MHz a CCLK = 400 MHz. S kmitoþtem CLKIN = 16 MHz, tj. s pĜipojeným 16 MHz krystalem, bude vypadat úsek zdrojového kódu takto: 06(/ 06(/ ') ') %<3$66 %<3$66 9&2 9&2 &2 &/.,1 &/.,1
&/.,1 0+] 0+]
S3//B&7/ [ [ &6(/ &6(/ &&/. &&/. 9&2 9&2 0+] 66(/ 0+] 66(/ 6&/. 6&/. &&/. &&/. 0+] 0+]
S3//B',9 [ [
Výhoda výše uvedeného hodinového systému procesorĤ BF–53x spoþívá v tom, že po nastavení dČliþek pro SCLK a CCLK v registru PLL_DIV, dojde k pĜenastavení okamžitČ, bez nutnosti pĜedchozího uvádČní procesoru do režimu iddle.
3.1.2 Rychlý pĜenos velkého objemu dat z procesoru do USB Ĝadiþe V této kapitole je popsán zpĤsob, jak pĜenést snímek v plném rozlišení (napĜ. 1,25 MB u MT9M001) ze senzoru do poþítaþe bez použití externí pamČti. DĜívČjší pĜístupy byly takové, že nejprve se snímek dostal vysokou rychlostí DMA kanálem do vnČjší SDRAM pamČti, a potom byl nejvyšší možnou rychlostí použitého USB Ĝadiþe (nebo jiným PC rozhraním) pĜenesen do poþítaþe. MČl-li však být realizován snímaþ polohy v minimální konfiguraci bez vnČjší pamČti, musela pro pĜenos obrazu vystaþit omezená vnitĜní pamČĢ procesoru, viz srovnání typĤ BF–53x v tab. 2.5. S vnitĜní SRAM pĜicházejí v úvahu tyto metody, jak pĜenést obraz v nČjaké podobČ do PC:
Redukovaný obraz ve skip módu – obrazový senzor je možné nakonfigurovat tak, aby na svou datovou sbČrnici posílal pouze urþité pixely, ostatní „pĜeskoþil“. Vynechávání pixelĤ vede ke snížení datového toku, ale i kvality obrazu, což ovšem v nČkterých pĜípadech pro pouhé získání náhledu nemusí být pĜekážkou. Dalšího snížení objemu dat lze dosáhnout výĜezem segmentu ve snímku (napĜ. stĜed) a omezení pozornosti na oblast zájmu, na tzv. ROI (Region of Interrest). Tato obrazová data z jednoho snímku jsou pĜenesena do SRAM, odkud mohou být poslána dále pĜes USB Ĝadiþ do PC. - 63 -
Složení obrazu – sestává v plném rozlišení z nČkolika snímkĤ, kdy se do SRAM postupnČ ukládají n-Ĝádkové pruhy, které se vzápČtí pĜenášejí do PC. PoĜadí pruhĤ závisí na implementovaném algoritmu a toto poĜadí musí být známé pĜi skládání obrazu na stranČ poþítaþe. Jinými slovy to znamená, že od okamžiku spouštČ se v 1. snímku pĜenesou napĜ. Ĝádky 1–4, 240–244, 480–484,…, ve 2. snímku 5–9, 245–249, 485–489 a tak dále, dokud nejsou odeslány všechny pruhy ze snímku.
Složení redukovaného obrazu – je kombinací pĜedchozích dvou metod, kdy se zvolí únosný skip mód, dostateþnČ velká oblast zájmu, a poté jsou pruhy tohoto redukovaného obrazu postupnČ pĜeneseny do PC, kdy výsledný obraz je pochopitelnČ sestaven z nižšího poþtu snímkĤ.
Obraz v plném rozlišení – umožĖuje pĜenést rychlý USB Ĝadiþ s využitím SRAM jako vyrovnávací pamČti. PrávČ tato metoda je používána ve snímaþi polohy s Ĝadiþem FT2232H. Princip spoþívá v tom, že obrazová data jsou po Ĝádcích ukládána DMA kanálem do vnitĜní pamČti a souþasnČ jsou v tČsném závČsu þtena procesorem a odesílána na datovou sbČrnici, ke které je pĜipojen USB Ĝadiþ, z nČhož musí být data kontinuálnČ vyþítána, protože se nemohou déle hromadit v SRAM procesoru ani ve 4096 B pamČti FIFO FT2232H.
Obr. 3.2 PamČĢ SRAM ve funkci vyrovnávacího bufferu
Situaci vystihuje ilustrace na obr. 3.2. Ve vnitĜní pamČti jsou alokovány dva sektory A a B, jejichž velikost v bajtech je stejná jako poþet pixelĤ jednoho Ĝádku obrazového senzoru (HCNT = 1280 pix u MT9M001). Do tČchto sektorĤ se stĜídavČ zapisují data z jednotlivých ĜádkĤ a vzápČtí jsou þtena procesorem a odesílána USB Ĝadiþem do PC. PoĜadí je tedy takové, že 1. Ĝ → sektor A, 2. Ĝ → sektor B, 3. Ĝ → sektor A, 4. Ĝ → sektor B, …, (VCNT-1). Ĝ → sektor A, VCNT. Ĝ → sektor B. Data na stranČ PC nemusí být vždy z USB Ĝadiþe nepĜetržitČ vyþítána, obþas mĤže dojít k prodlevČ vyvolané operaþním systémem pĜepnutím kontextu pro proces s vyšší prioritou. DĤležité ale je, aby tato prodleva nepĜekroþila dobu, za kterou by se zaplnila TX FIFO pamČĢ USB Ĝadiþe a oba sektory pamČti SRAM obrazovými daty ze senzoru, která se na jeho datové sbČrnici vysouvají stále konstantní rychlostí a není možné je bČhem jednoho - 64 -
snímku pozastavit. Z výše uvedeného pak vyplývají pro pĜenos obrazu z jednoho snímku v plném rozlišení následující požadavky: •
maximalizace pĜenosové rychlosti Ĝadiþe FT2232H (dosaženo více než 8 MB/s),
•
co nejvČtší zpomalení toku dat výstupu obrazového senzoru, aby nepĜetekl vyrovnávací buffer pamČti SRAM,
•
okamžité a spojité vyþítání dat z FT2232H na stranČ PC.
Pokud jsou souþasnČ všechny tĜi požadavky splnČny, je možné tímto zpĤsobem obraz ze senzoru v plném rozlišení do PC pĜenést. Na tomto místČ je však tĜeba pĜipomenout, že pro snímaþ polohy není tato funkcionalita prioritní, je to pouze doplnČk pro rychlejší a pĜesnČjší nastavení objektivu pĜi získávání náhledu z mČĜené scény. V dalších kapitolách bude proveden popis jednotlivých bodĤ podrobnČji.
3.1.2.1 Maximalizace zapisovací rychlosti procesoru do Ĝadiþe FT2232H ZpĤsob hardwarového propojení procesoru s USB Ĝadiþem FT2232H byl uveden na obr. 2.10. Z hlediska procesoru je k Ĝadiþi pĜistupováno jako k paralelní 8–bitové datové sbČrnici asynchronní pamČti se signály AWE (Asynchronous Memory Write Enable) a ARE (Asynchronous Memory Read Enable). VýbČrové signály AMS3 - 0 (Asynchronous Memory
Selects) nejsou použity, procesor tedy provádí zápis (þtení) s každou adresací pamČĢového prostoru 0x20000000 – 0x204FFFFF, viz [24], tab 17-3. To ovšem není podstatné, neboĢ datová sbČrnice již není sdílena s žádným jiným adresovatelným obvodem. DĤležité je správné nastavení þasování pro R/W operace, tzn. aby bylo dodrženo þasování Ĝídicích signálĤ FT2232H potĜebných pro korektní zápis/þtení z FIFO pamČti. PrĤbČhy signálĤ pro zápis dat do USB Ĝadiþe s okótováním jednotlivých intervalĤ jsou uvedeny na obr. 3.3. a význam signálĤ byl popsán v kapitole 2.2.3.4. Pro pĜipomenutí – TXE# je výstup FT2232H, který indikuje pĜipravenost
Ĝadiþe pro zápis dat a musí být pĜed každým zápisem testován, signál WR# je vstup FT2232H a s každou jeho spádovou hranou dochází k vzorkování dat na sbČrnici D[7…0] s jejich následným zápisem do vnitĜní FIFO pamČti.
- 65 -
Obr. 3.3 Zapisovací signály u FT2232H v režimu Async 245 FIFO 22
PĜed zapisováním (a þtením) dat na datovou sbČrnici musí být v procesoru provedeno nastavení registrĤ pro Ĝadiþ externí pamČti EBIU (External Bus Interface Unit), ve kterých se pĜedevším udává, kolik cyklĤ SCLK budou trvat dČje bČhem R/W operací na datové sbČrnici a Ĝídicích signálech. PĜi nastavení systémových hodin SCLK na mezní hodnotu 133 MHz vychází délka periody jednoho cyklu pĜibližnČ 7,5 ns. Z tohoto údaje se snadno vypoþítá, kolik je potĜebných cyklĤ na dodržení správného þasování pro zápis podle doporuþení výrobce, viz tab. 3.2. Parametry pro þtení jsou obdobné, proto zde nejsou uvádČny a lze je nalézt v [10].
Interval
Popis
T7 T8 T9 T10 T11 T12
Délka neaktivního WR# signálu pĜed zápisem Doba aktivního WR# pulzu PĜítomnost dat pĜed zápisem Trvání dat po zápisu Reakþní doba signálu TXE# po zápisu Doba zakázaného zápisu pĜi neaktivním TXE#
Min [ns] 10 50 20 10 10 49
Max [ns] – – – – 25 84
Reg. CTL – WAT ST – – –
Cykly SCLK – 10 3 – – –
Tab. 3.2 ýasování signálĤ pro zápis do FT2232H
Aktivace pĜístupu do externí asynchronní pamČti musí být nejprve provedena v registru
EBIU_AMGCTL (Asynchronous Memory Global Control Register), kde se pomocí trojice bitĤ AMBEN[2:0] (Asynchronous Memory Bank Enable) zapnou požadované pamČĢové banky 0 - 3. Pro nastavení jednotlivých intervalĤ þasování slouží registry AMBCTL0,1 (Asynchronous
Memory Bank Control Register), jejichž bity, které jsou pro konfiguraci þasování FT2232H podstatné, mají napĜ. pro banku 0 následující význam: •
B0WAT (Bank0 Write Access Time) – aktivní doba signálu AWE , platný rozsah 1 - 15 cyklĤ,
22
PĜevzato z katalogového listu FT2232H [12].
- 66 -
•
B0RAT (Bank0 Read Access Time) – aktivní doba signálu ARE , platný rozsah 1 - 15 cyklĤ,
•
B0HT (Bank0 Hold Time) – doba mezi nábČžnou hranou AWE nebo ARE a nábČžnou hranou AMS0 , platný rozsah 0 - 3 cykly,
•
B0ST (Bank0 Setup Time) – doba mezi spádovou hranou AMS0 a spádovou hranou
AWE nebo ARE , platný rozsah 1 - 4 cykly, •
B0TT (Bank0 Transition Time) – doba vložená za þtecí pĜístup do banky 0 a pĜed zapisovacím pĜístupem do téže banky nebo pĜed þtecím pĜístupem do banky jiné, platný rozsah 1 - 4 cykly.
Inicializace registrĤ Ĝadiþe externí asynchronní pamČti se vykoná po restartu procesoru spoleþnČ s dalšími konfiguraþními procesy jako napĜ. nastavení jednotky PLL, viz kapitola 3.1.1. V následujícím kódu jsou nastaveny registry tak, aby bylo k Ĝadiþi pĜistupováno nejvyšší možnou rychlostí, kdy ještČ nejsou pĜekroþeny parametry þasování z tab. 3.2. =DSQXWtSDPČĢRYpEDQN\ =DSQXWtSDPČĢRYpEDQN\
S(%,8B$0*&7/ $0%(1B% $0%(1B% 3UR6/. 0+]EXGRXQDVWDYHQ\W\WR 0+]EXGRXQDVWDYHQ\W\WRLQWHUYDO\ QDVWDYHQ\W\WRLQWHUYDO\ LQWHUYDO\ :ULWH$FFHVV7LPH QV5HDG$FFHVV7LPH QV5HDG$FFHVV7LPH QV QV +ROG7LPH QV6HWXS7LPH QV QV7UDQVLWLRQ7LPH 7UDQVLWLRQ7LPH QV QV
S(%,8B$0%&7/ %:$7B %:$7B_%5$7B %5$7B_%+7B %+7B_%67B %67B_%77B %77B
V tomto okamžiku, kdy byla konfigurace jednotky EBIU dokonþena, bylo již možné pĜistoupit k samotnému zápisu/þtení dat z externí pamČti, neboli Ĝadiþe FT2232H. ěadiþ byl adresován na poþátek adresního prostoru banky 0, což se provedlo pomocí tohoto zápisu: *OREiOQtSURPČQQp *OREiOQtSURPČQQp XLQWBW)7B$GGU XLQWBW)7B$GGU [ [ $GUHVD)7+ $GUHVD)7+ + YRODWLOHXLQWBW )7B'DWD YRODWLOHXLQWBW )7B'DWD )7B'DWD 8ND]DWHOQDG
8ND]DWHOQDGDWRY 8ND]DWHOQDGDWRYRXVEČUQLF DWRYRXVEČUQLFL RXVEČUQLFL L 3ĜLĜD]HQtDGUHV 3ĜLĜD]HQtDGUHV\ 3ĜLĜD]HQtDGUHV\YHIXQNFLPDLQ YHIXQNFLPDLQ QDNWHUpEXGRXSUREtKDW5:RSHUDFH QDNWHUpEXGRXSUREtKDW5:RSHUDFH EXGRXSUREtKDW5:RSHUDFH
SĜLPDQLSXODFLVSURPČQRX)7B'DWD SĜLPDQLSXODFLVSURPČQRX)7B'DWD )7B'DWD YRODWLOH YRODWLOH YRODWLOHXLQWBW XLQWBW
)7B$GGU )7B$GGU
Jak již bylo uvedeno v kapitole 2.2.3.4, pĜed samotným zápisem nebo þtením každého bajtu z FT2232H musely být testovány pĜíznaky TXE# a RXF#, které byly pĜipojeny ke vstupním GPIO linkám PF4 a PF5. Testování výskytu dat v Rx bufferu pĜi þtení nebylo kritické, neboĢ smČrem z PC do BF–53x nebylo zapotĜebí pĜenášet vysokorychlostnČ velký objem dat. Horší - 67 -
situace nastala pĜi zápisu do FT2232H, protože periodické zjišĢování logické úrovnČ na pĜíslušném flagu znamenalo výrazné zpomalení algoritmu, takže v poþátcích vývoje nebylo možné dosáhnout ani mezní frekvence (8 MHz) zapisování na datovou sbČrnici USB Ĝadiþe. Byly provádČny i experimenty se zápisem bez testování pĜíznaku TXE#, kdy pĜenosová rychlost dosahovala s upraveným þasováním až 10 MB/s, ovšem spolehlivost pĜenosu nebyla (a z principu ani nemohla být) zaruþena.
Pozn.: V hardwarovém manuálu ADSP-BF533, viz [24], se uvádí v kapitole 14, podkapitole “Performance/Throughput“, že jsou-li programovatelné flagy nastaveny jako vstupy, pak pĜi þtení tČchto PFx pinĤ je zpoždČní detekce zmČny jejich log. úrovní procesorem od okamžiku volání pĜíkazu þtení 3 periody SCLK, tedy 22,6 ns pĜi SCLK = 133 MHz. Pro režimy pĜerušení jsou tyto hodnoty ještČ vyšší (4 p. SCLK pro detekci log. úrovnČ, 5 p. SCLK pro detekci hran), proto je nemČlo smysl uvažovat. Po nejrĤznČjších obmČnách zdrojového kódu a vypnutí optimalizace bylo nakonec dosaženo nejvyšší možné zaruþené pĜenosové rychlosti Ĝadiþe FT2232H, tj. 8 MB/s. Výsledný úsek kódu pro zápis jednoho znaku na datovou sbČrnici s testováním pĜíznaku TXE# je tedy tento: GHILQH1B7;(3) GHILQH1B7;(3) 1B7;(3) 3ĜLĜD]HQtIODJX 3ĜLĜD]HQtIODJX3)VLJQiOX7;( 3ĜLĜD]HQtIODJX3)VLJQiOX7;( 3)VLJQiOX7;( SUDJPDRSWLPL]HBRII SUDJPDRSWLPL]HBRII RSWLPL]HBRII =iND]RSWLPDOL]DFHNyGX =iND]RSWLPDOL]DFHNyGXSĜHNODGDþHP =iND]RSWLPDOL]DFHNyGXSĜHNODGDþHP SĜHNODGDþHP 3URFHGXUDSUR]iSLVMHGQRKR]QDNXFKQDGDWRYRXVEČUQLFL)7+ QDGDWRYRXVEČUQLFL)7+ YRLG86%B3XW&KDU YRLG86%B3XW&KDUXLQWBW 86%B3XW&KDUXLQWBWFK ^ XLQWBWFK ^ FK ^ ZKLOH ZKLOH S),2B)/$*B' 1B7;( ZKLOH S),2B)/$*B' 1B7;( S),2B)/$*B' 1B7;( =SĤVREWHVWRYiQt~URYQČVLJQiOX7 =SĤVREWHVWRYiQt~URYQČVLJQiOX7;( =SĤVREWHVWRYiQt~URYQČVLJQiOX7;( ;( )7B'DWD )7B'DWD FK FK =iSLV]QDNX =iSLV]QDNXFKQDVEČUQLFL7[EXIIHU5HDG\ `
3.1.2.2 Zpomalení toku dat z obrazového senzoru Má–li být pĜenesen do PC obraz v plném rozlišení bez použití externí pamČti, musí být splnČna základní podmínka, tj. že rychlost toku dat ze senzoru nebude vČtší než pĜenosová rychlost USB Ĝadiþe. Jak bylo uvedeno v pĜedchozí kapitole, u FT2232H se podaĜilo dosáhnout rychlosti 8 MB/s, která je i výrobcem garantována. Tato rychlost je však podstatnČ nižší než ta, kterou jsou vysouvána data na sbČrnici obrazového senzoru. Závisí pouze na kmitoþtu hodinového signálu MCLK, neboĢ oba používané senzory Micron v sobČ bohužel nemají žádnou vnitĜní dČliþku, takže vždy platí, že PIXCLK = MCLK. VytvoĜení externí dČliþky pomocí dalších souþástek v obvodu snímaþe polohy již nepĜicházelo v úvahu, protože by tím byl porušen - 68 -
požadavek minimální možné obvodové konfigurace. PĜi použití krystalu 8 MHz by sice signál CLKIN (fCLKIN = fMCLK) bylo možné PLL jednotkou násobit, aby procesor pracoval na plném výkonu, ovšem snížil by se poþet snímkĤ pĜenesených za sekundu ze senzoru, což není žádoucí z hlediska rychlého hledání svČtelné stopy. NapĜ. pro senzor MT9M001 by s krystalem 8 MHz trvalo získání dat jednoho snímku v plném rozlišení cca 200 ms (5 snímkĤ/s), aþkoliv je tento senzor schopný s doporuþeným krystalem 48 MHz získat až 30 snímkĤ/s. Jedinou možností tedy bylo zvolit kompromisní hodnotu krystalu (pokud možno dobĜe násobitelnou v PLL jednotce procesoru) a zpomalit výstup dat ze senzoru prodloužením zatemĖovací doby za každým
Ĝádkem. V kapitole 2.3.2.4 byly popsány Ĝádkové a snímkové synchronizaþní prĤbČhy, pĜiþemž pĜiblížení vztahu signálĤ WR# a LINE_VALID je znázornČno na obr. 3.4. U použitých senzorĤ
Micron lze prodlevu (Q) za aktivní dobou (A) vysouvání obrazových dat na sbČrnici nastavit v širokém rozsahu pĜíslušným registrem Horizontal Blanking. Zapisovací signál WR#, kterým se hradlují data z procesoru na sbČrnici FT2232H, sestává v prĤbČhu jednoho Ĝádku z tolika pulzĤ, kolik jich je nastaveno v senzoru na Ĝádek (proto nejsou na obrázku v tomto zvČtšení rozlišitelné).
Obr. 3.4 Zapisovací signál WR# v prĤbČhu celého Ĝádku 23
Aby bylo možné pĜenést do PC celý snímek v plném rozlišení, musí být délka intervalu aktivního signálu WR# kratší než souþet intervalĤ A + Q, což znamená, že pĜenos dat jednoho
Ĝádku musí být dokonþen pĜed koncem zatemĖovacího intervalu Q. Tohoto bylo docíleno s krystalem 16 MHz, takže nejdelší perioda výstupu informace o poloze je 100 ms pĜi plném rozlišení u senzoru MT9M001, viz kapitola 4.1.1. Kdyby délka intervalu aktivního signálu WR# nebyla kratší než A + Q, docházelo by k postupnému zaplĖování vyrovnávacího bufferu v SRAM (kapitola 3.1.2) a po nČkolika Ĝádcích by zaþalo docházet k pĜepisování dat, která ještČ nebyla do PC odeslána. Z toho dĤvodu je nutné nastavit registr Horizontal Blanking na maximální hodnotu.
23
PĜevzato a upraveno z katalogového listu MT9M001 [5].
- 69 -
3.1.2.3 Kontinuální vyþítání dat z USB zaĜízení na stranČ PC a jejich následné zpracování Jakmile se zaþne pĜenášet snímek z obrazového senzoru, musí být volný a zcela prostupný celý pĜenosový kanál ze senzoru až do PC, tzn. vnitĜní SRAM procesoru a Tx FIFO pamČĢ v Ĝadiþi USB, þehož lze dosáhnout pouze prĤbČžným vyþítáním dat z FT2232H na stranČ PC, protože ani souþet kapacit obou pamČtí není takový, aby mohly pojmout celý snímek v plném rozlišení. Jelikož se jedná o pomČrnČ velký objem dat (1,25 MB z MT9M001), který má být vysokorychlostnČ pĜenesen, musí být na stranČ PC softwarovČ zajištČno, aby nedocházelo bČhem pĜenosu k prodlevám, bČhem nichž by byl zaplnČn veškerý volný pamČĢový prostor ve vyrovnávacím SRAM bufferu. K neúnosným prodlevám by mohlo dojít snadno, pokud by bČhem doby pĜenosu jednoho celého snímku (100 ms u MT9M001) byl mnohokrát zmČnČn kontext v dĤsledku plánování procesĤ operaþního systému, tj. napĜ. pĜi souþasném otevĜení velkého poþtu procesorovČ nároþných úloh.
Obr. 3.5 Vývojový diagram pro vyþtení obrazových dat z USB Ĝadiþe
ZpĤsob, jakým bylo kontinuální vyþítání obrazových dat z FT2232H provedeno, znázorĖuje vývojový diagram algoritmu na obr. 3.5. Obrazová data jsou postupnČ ukládána do souboru na disku v PC tak, jak jsou posílána z procesoru do USB Ĝadiþe, tj. posloupnost bajtĤ, ve kterých je uložena hodnota jasu pĜíslušného pixelu. Po inicializaci potĜebných promČnných a otevĜení souboru je spuštČn cyklus, který trvá do té doby, než odpovídá celkový poþet - 70 -
vyþtených bajtĤ poþtu oþekávanému (napĜ. 1310720 B u MT9M001). Poté je soubor s vyþtenými daty zavĜen a proces konþí. PĜi vlastním vyþítání je postupováno tak, že v každém cyklu je vyslán do FT2232H dotaz na poþet bajtĤ, které jsou uloženy ve FIFO pamČti, a následuje jejich okamžité vyþtení do pole RXBUFF v pamČti poþítaþe. Pokud je délka RXB pole RXBUFF nenulová, znamená to, že byla nČjaká data vyþtena a uloží se na konec souboru, pĜiþemž se o poþet vyþtených bajtĤ RXB zvýší i poþitadlo celkových pĜenesených dat TBR. V každém cyklu je dĤležitý moment, kdy se vlákno vzdá na 1 ms dobrovolnČ nároku na procesor (funkcí 6OHHS 6OHHSGZ0LOOLVHFRQGV GZ0LOOLVHFRQGV
v knihovnČ windows.h), þímž þásteþnČ umožní ostatním procesĤm
vykonat jejich þinnost a není vláknu odebrán procesor operaþním systémem „násilnČ“. Za dobu 1 ms ani nedojde k pĜeteþení vyrovnávacích pamČtí v procesoru a USB Ĝadiþi. Výrobce FTDI bohužel neuvádí, jakým zpĤsobem fungují jeho ovladaþe D2XX pro USB zaĜízení pod OS Windows, takže je obtížné optimálnČ koordinovat souþinnost PC a algoritmu odesílání dat procesorem. Ovšem ukázalo se, že výše uvedený zpĤsob vede k žádanému cíli, tj. spolehlivému a opakovatelnému vyþítání celých snímkĤ v plném rozlišení rychlostí 8 MB/s. Následuje ukázka jádra vyþítací funkce pro PC v jazyce C. ,QLFLDOL]DFHSURPČQQêFK ,QLFLDOL]DFHSURPČQQêFK XQVLJQHGLQWWRWDO%\WHV5HFHLYHG FKDU ILOHQDPH FKDU ILOHQDPH FKDU FKDU ),/(1$0( FKDU ),/(1$0( ),/(1$0( ),/( ILOH ),/( ILOH HUUQRBWHUU HUUQRBWHUU 2WHYĜHQtVRXERUXVQi]YHPDFHVWRX),/(1$0( 2WHYĜHQtVRXERUXVQi]YHPDFHVWRX),/(1$0( HUU IRSHQBV IRSHQBV ILO IRSHQBV ILOH),/(1$0( ILOH),/(1$0(ZE H),/(1$0(ZE ZE ZKLOHWRWDO%\WHV5HFHLYHGGDWD([SHFWDQFH ^ ZKLOHWRWDO%\WHV5HFHLYHGGDWD([SHFWDQFH ^ WRWDO%\WHV5HFHLYHGGDWD([SHFWDQFH ^ 9\þtWDFtF\NOXV 9\þtWDFtF\NOXV 6OHHS 6OHHS 9]GHMVHSURFHVRUXQDPV 9]GHMVHSURFHVRUXQDPV =MLVWLNROLNMHYH),)2SDPČWtFK)7+5[D7[GDW =MLVWLNROLNMHYH),)2SDPČWtFK)7+5[D7[GDW IW6WDWXV )7B*HW6WDWXV )7B*HW6WDWXVIW+DQGOH 5[%\WHV 7[%\WHV (Y )7B*HW6WDWXVIW+DQGOH 5[%\WHV 7[%\WHV (YHQW':RUG IW+DQGOH 5[%\WHV 7[%\WHV (YHQW':RUG HQW':RUG 3ĜHVXĖGRVWXSQiGDWDGR5[%XIIHUX 3ĜHVXĖGRVWXSQiGDWDGR5[%XIIHUX IW6WDWXV )7B5HDG )7B5HDGIW+DQGOH5[%XIIHU5[%\WHV %\WHV5HFHLYHG )7B5HDGIW+DQGOH5[%XIIHU5[%\WHV %\WHV5HFHLYHG IW+DQGOH5[%XIIHU5[%\WHV %\WHV5HFHLYHG LI LI%\WHV5HFHLYHG! ^ %\ODQČMDNiGDWDY\þWHQD" %\WHV5HFHLYHG! ^ %\ODQČMDNiGDWDY\þWHQD" %\ODQČMDNiGDWDY\þWHQD" ,QNUHPHQWXMSRþLWDGORFHONRYČY\þWHQêFKGDW ,QNUHPHQWXMSRþLWDGORFHONRYČY\þWHQêFKGDW WRWDO%\WHV5HFHLYHG WRWDO%\WHV5HFHLYHG %\WHV5HFHLYHG %\WHV5HFHLYHG =DSLãQRYiGDWDQDNRQHFVRXERUX =DSLãQRYiGDWDQDNRQHFVRXERUX UHVXOW
IZULWH5[%XIIHU%\WHV5HFHLYHGILOH IZULWH5[%XIIHU%\WHV5HFHLYHGILOH 5[%XIIHU%\WHV5HFHLYHGILOH
` ` ` IFORVHILOH IFORVHILOH ILOH =DYĜLVRXERUVXORåHQêPLREUD]RYêPLGDW\
- 71 -
Z uloženého souboru mohou být data dále zpracovávána v jiných funkcích (napĜ. vyobrazení snímku na monitor s podporou knihovny OpenGL). Celá funkce bČží v samostatném vláknČ a je spouštČna poté, co poþítaþ vyšle smČrem k procesoru požadavek na zachycení jednoho snímku. Sejmutí snímku je možné samozĜejmé iniciovat i jiným zpĤsobem, napĜ. testovacím tlaþítkem, ale pĜed tímto úkonem musí být již vlákno pĜipraveno na zahájení vyþítání z FT2232H.
3.1.3 Konfigurace PPI rozhraní a DMA kanálu pro pĜenos dat z CMOS senzoru do vnitĜní pamČti V kapitole 2.3.2.3 bylo struþnČ popsáno PPI rozhraní a DMA pĜenos obrazových dat do vnitĜní pamČti SRAM procesoru. Na tomto místČ bude provedena ukázka, jakým zpĤsobem je tĜeba nakonfigurovat urþité registry, aby tento pĜenos mohl být uskuteþnČn. Jelikož je zapotĜebí nastavení mnoha registrĤ, bude podrobnČjší popis uveden v komentáĜích zdrojového kódu. Podstatou této konfigurace je, aby se po inicializaci pĜenášel vždy jen jeden celý Ĝádek ze snímku na urþité místo v pamČti, které se za každým Ĝádkem nastavuje a dochází tak ke stĜídání sektorĤ pamČĢového prostoru, viz obr. 3.2. K nastavování registrĤ jsou používány tyto procedury: •
void DMA_PPI_Init(uint8_t sensorType) – podle typu senzoru nastaví 2D DMA pĜenos (viz dále) o délce jednoho Ĝádku s dvoubajtovým balením obrazových dat,
•
void DMA_LineInit(uint16_t *memory) – slouží k nastavení adresy v pamČti, kam bude zahájen DMA pĜenos,
•
void DMA_Enable(void) – aktivace DMA kanálu,
•
void PPI_Enable(void) – aktivace PPI pĜenosu,
•
void PPI_Disable(void) – deaktivace PPI pĜenosu,
•
void WaitFor_DMA_TransferComplete(void) – þekání na dokonþení bČžícího DMA pĜenosu.
Pro inicializaci DMA0 Ĝadiþe musí být nejprve nastaven registr DMA0_PERIPHERAL_MAP, ve kterém se urþí, která periferie má být napojena na DMA kanál (PPI, UART, SPI, …). Dále se v registrech DMA0_?_MODIFY nastaví velikost inkrementace adresy pamČti mezi jednotlivými slovy na Ĝádku a mezi posledním a prvním slovem dvou po sobČ jdoucích ĜádkĤ, což je hodnota 2 z dĤvodu balení (Packing Mode) dvou 8–bitových slov do jednoho 16– bitového. V registru DMA0_?_COUNT se stanoví poþet slov v Ĝádku a poþet sloupcĤ. Kombinací pĜedchozích dvou registrĤ je možné vytvoĜit témČĜ libovolnou 2D (M × N) organizaci ukládání dat do pamČti, což je výhodné pro další zpracování. Registrem - 72 -
DMA0_CONFIG se nastavují další atributy, jejichž význam je þásteþnČ uveden v komentáĜích kódu a podrobnČji v hardwarovém manuálu [24]. Inicializaþní procedura pokraþuje dále obdobným nastavením vlastností PPI pĜenosu, tj. poþet sloupcĤ PPI_COUNT, poþet ĜádkĤ
PPI_FRAME a Ĝízení PPI pĜenosu – PPI_CONTROL, kde je dĤležitý bit POLC. Tímto bitem se nastavuje, zda bude provádČno vzorkování dat ze senzoru na paralelní 8–bitové sbČrnici nábČžnou nebo spádovou hranou signálu PCLK. U dvou používaných senzorĤ Micron se tato hrana liší, takže pĜi opomenutí tohoto faktu pak dochází k jisté chybovosti nČkolika pixelĤ v obraze. YRLG'0$B33,B,QLW YRLG'0$B33,B,QLWXLQWBW '0$B33,B,QLWXLQWBWVHQVRU7\SH ^ XLQWBWVHQVRU7\SH ^ VHQVRU7\SH ^ .RQILJXUDFHNDQiOX .RQILJXUDFHNDQiOX'0$
.RQILJXUDFHNDQiOX'0$ '0$
S'0$B3(5,3+(5$/B0$3 [ [ 1DPDSRYiQt'0$QD33, 1DPDSRYiQt'0$QD33, S'0$B;B02',)< [ ,QNUHPHQWDFHDGUHV\REDMW\3DFNLQJ [ ,QNUHPHQWDFHDGUHV\REDMW\3DFNLQJ ,QNUHPHQWDFHDGUHV\REDMW\3DFNLQJ S'0$B
070 ^ 070 ^ 1DVWDYHQtVSUiYQpKUDQ\Y]RUNRYiQt 1DVWDYHQtVSUiYQpKUDQ\Y]RUNRYiQtGDW Y]RUNRYiQtGDW GDW
9]RUNRYiQtGDWV
9]RUNRYiQtGDWVSiGRY 9]RUNRYiQtGDWVSiGRYRX SiGRYRXKUDQ RXKUDQRX KUDQRX0&/. RX0&/. 0&/. 9ODVWQRVWL 9ODVWQRVWL3$&.B(1 9ODVWQRVWL3$&.B(1D 3$&.B(1DNWLYDFHEDOHQtGYRMLFHGDWRYêFK NWLYDFHEDOHQtGYRMLFHGDWRYêFKEDMWĤ GDWRYêFKEDMWĤ EDMWĤ
3257B&)* 3257B&)* 3257B&)*±GYČH[WHUQt GYČH[WHUQtV H[WHUQtVQtPNRYpV\QFKURQL]DFH VQtPNRYpV\QFKURQL]DFH QtPNRYpV\QFKURQL]DFH ;)5B7<3(± ;)5B7<3(±\\SQXWt,78 \\SQXWt,78 \SQXWt,785PyGX 5PyGX S33,B&21752/
S33,B&21752/ 3$&.B(1_3257B&)* [ 3$&.B(1_3257B&)* [ _;)5B7<3(_32/& _;)5B7<3(_32/& ` `HOVHLIVHQVRU7\SH HOVHLIVHQVRU7\SH
079 ^ 079 ^
9]RUNRYiQtGDWQ 9]RUNRYiQtGDWQiEČåQ 9]RUNRYiQtGDWQiEČåQRX iEČåQRXKUDQ RXKUDQRX KUDQRX0&/. RX0&/. 0&/. S33,B&21752/ 3$&.B(1_3257B&)* [ 3$&.B(1_3257B&)* [ _;)5B7<3( _;)5B7<3( ` ` ` `
Další uvedené procedury obsahují ještČ nČkolik DMA/PPI registrĤ, které jsou ale již nastavovány prĤbČžnČ bČhem vlastního pĜenosu obrazových dat ze snímku. Do registru
DMA0_START_ADDR se pĜiĜazuje po skonþení každého Ĝádku ukazatel na adresu sektoru pamČti, kam se budou ukládat data Ĝádku následujícího. Zapnutí DMA0 kanálu se provádí nastavením bitu DMAEN v registru DMA0_CONFIG na zaþátku každého nového Ĝádku po - 73 -
konfiguraci poþáteþní adresy. Pro vyþkání na dokonþení DMA pĜenosu pĜíslušného Ĝádku slouží stavový registr DMA0_IRQ_STATUS, ve kterém nastavený bit DMA_DONE indikuje kompletní pĜenos. U PPI Ĝadiþe se provádí zapnutí a vypnutí pĜenosu pouze na zaþátku a na konci snímku bitem PORT_EN v registru PPI_CONTROL. Veškerá Ĝádková a snímková synchronizace probíhá automaticky a je Ĝízena signály HSYNC (LINE_VALID) a VSYNC (FRAME_VALID) z obrazového senzoru, viz kapitola 2.3.2.4
3.1.4 Softwarová implementace I2C rozhraní a nastavení registrĤ CMOS senzoru Jak již bylo uvedeno v kapitole 2.3.2.1, procesory Ĝady BF–53x v sobČ nemají hardwarovou podporu pro I2C komunikaci, musela být tedy emulována softwarovČ na dvou GPIO linkách, viz obr. 2.17. V zaĜízení snímaþe polohy slouží I2C komunikace pouze k výmČnČ dat mezi procesorem (Master) a obrazovým senzorem (Slave), viz obr. 3.6. Princip této komunikace spoþívá v tom, že Master stále generuje na vodiþi SCL hodinový signál, pĜiþemž po dobu vysílání zapisuje data na vodiþ SDA, po dobu pĜíjmu z tohoto vodiþe þte (zapisuje Slave). Vlastní pĜenos zaþíná tzv. START-stavem (spádová hrana SDA pĜi SCL v log. 1) a konþí STOPstavem (nábČžná hrana SDA pĜi SCL v log. 1). Oba tyto stavy generuje jednotka Master. Po START-stavu následuje vyslání 7–bitové adresy, jednoho bitu þtení/zápis R/ W a jednoho potvrzovacího bitu ACK, který je v log. 1 a jednotka Slave jej musí potvrdit pĜipojením do log. 0. Poté již probíhá až do ukonþení pĜenosu zápis nebo þtení sériových dat, která musí být také po každých osmi bitech potvrzována. PodrobnČjší popis I2C komunikace lze nalézt ve specifikaci této sbČrnice [31].
Obr. 3.6 Kompletní datový pĜenos na I2C sbČrnici 24
Softwarová implementace I2C pro BF–53x již byla na katedĜe mČĜení vyvinuta a odladČna v rámci diplomové práce [23], proto byly po dohodČ hotové knihovny pouze s mírnou modifikací 24
PĜevzato ze specifikace I2C sbČrnice [31].
- 74 -
pĜevzaty. Knihovní funkce ovládají pĜíslušné programovatelné flagy tak, že pokud má být signál na sbČrnici v úrovni log. 1, pĜepne se dotyþný pin do vstupního režimu, kdy je ve stavu vysoké impedance, protože pokud by byl jako výstupní a nastaven procesorem do log. 1, došlo by sepnutím pĜechodu Drain-Source v budiþi Slave zaĜízení ke kolizi (napĜ. pĜi potvrzování bitu ACK). Jestliže má být signál na sbČrnici v úrovni log. 0, je pĜíslušný pin nastaven jako výstup a programovČ uveden do této úrovnČ, viz [23]. Následující kód popisuje definovaná makra a hlaviþky využívaných funkcí. GHILQH,&B6'$B3,1 GHILQH,&B6'$B3,13) 3) GDWDSLQ
GDWDSLQ6'$ GDWDSLQ6'$ 3) 3) GHILQH,&B6&/.B3,1 GHILQH,&B6&/.B3,13) 3) FORFNSLQ
FORFNSLQ6&/ FORFNSLQ6&/ 3) 3)
,QLFLDOL]DFHELW'XUDWLRQ7LFV GpONDWUYiQtMHGQRKRELWX]iYLVtQD&&/. GpONDWUYiQtMHGQRKRELWX]iYLVtQD&&/. YRLG,&BLQLW YRLG,&BLQLWXQVLJQHGLQW ,&BLQLWXQVLJQHGLQWELW'XUDWLRQ7LFV XQVLJQHGLQWELW'XUDWLRQ7LFV ELW'XUDWLRQ7LFV =iSLVEDMWX =iSLVEDMWXGDWDGRUHJLVUXUHJLVWHU$GGUHVV]DĜt]HQt ]DĜt]HQtGHYLFH$GGUHVV YRLG,&BZULWH YRLG,&BZULWHXQVLJQHGFKDU ,&BZULWHXQVLJQHGFKDUGHYLFH$GGUHVV XQVLJQHGFKDUGHYLFH$GGUHVV GHYLFH$GGUHVVXQVLJQHGFKDUUHJLVWHU$GGUHVV XQVLJQHGFKDUUHJLVWHU$GGUHVV UHJLVWHU$GGUHVV
XQVLJQHGFKDUGDWD XQVLJQHGFKDUGDWD GDWD
ýWHQt ýWHQtEDMWX]UHJLVWUX ýWHQtEDMWX]UHJLVWUXUHJLVWHU$GGUHVV UHJLVWHU$GGUHVV]DĜt]HQtGHYLFH$GGUHVV XQVLJQHGFKDU,&BUHDG XQVLJQHGFKDU,&BUHDGXQVLJQHGFKDU ,&BUHDGXQVLJQHGFKDUGHYLFH$GGUHVV XQVLJQHGFKDUGHYLFH$GGUHVV GHYLFH$GGUHVV
XQVLJQHGFKDU XQVLJQHGFKDU KDUUHJLVWHU$GGUHVV UHJLVWHU$GGUHVV
Pomocí tČchto funkcí se konfigurace obrazového senzoru provádí jednoduše pouhým zápisem do pĜíslušného registru, jejichž pĜehled je uveden v katalogových listech Micron. Senzorová deska s MT9M001 má jednu I2C Slave adresu, u desky s MT9V032 lze nastavit tyto adresy þtyĜi (kombinací log. úrovní na vstupních pinech S_CTRL_ADRx). Adresu obrazového senzoru je nutné znát a nastavit v konfiguraþním souboru pĜíslušného programu. V budoucích verzích softwarového vybavení pro snímaþ polohy je plánována autodetekce pĜipojeného obrazového senzoru, což se provede postupným testováním možných I2C adres senzorových desek a þtením registrĤ 0x00 (Chip Version). Se znalostí typu pĜipojeného senzoru by pak byla možná i automatická konfigurace dalších parametrĤ, které by byly uloženy na vyhrazeném místČ EEPROM pamČti, tj. napĜ. horizontální a vertikální rozlišení, polarita hodin PPI, velikosti zatemĖovacích intervalĤ apod.
- 75 -
3.2 Hledání tČžištČ svČtelné stopy Tato kapitola se vČnuje hledání polohy objektu v rovinČ na základČ urþení tČžištČ svČtelné znaþky, která je na objektu pĜipevnČna. Z hlediska softwaru musí být provedeno jiné nastavení obrazového senzoru, PPI rozhraní a DMA kanálu. Následuje rozbor algoritmu prĤbČžného zpracování obrazových dat a výpoþet Ĝádkových mezivýsledkĤ. Koneþným výstupem je informace o poloze objektu a jednoduchý program pro PC, který grafickým zpĤsobem demonstruje okamžitou polohu objektu.
3.2.1 Výpoþetní metoda urþení tČžištČ svČtelné stopy z obrazových dat Základní pĜedstava o mČĜení polohy objektu spoþívá v tom, že referenþní bod objektu je opatĜen svČtelnČ výraznou znaþkou (odrazka, svítivá dioda, projekce laserového paprsku apod.). V pĜípadČ správného nastavení clony a zaostĜení objektivu sestává snímek monochromatického obrazového senzoru z tmavé plochy, ve které je na urþitém místČ shluk jasovČ výrazných bodĤ pĜedstavujících svČtelnou stopu. Tvar svČtelné stopy nemusí být vždy pravidelný (kruhový) a mĤže být pĜi rychlém pohybu pĜed objektivem rozmazán (analogie v televizním pĜenosu pĜi zachycení reflektorĤ pohybující se kamerou). Proto se pĜi mČĜení polohy svČtelné stopy zavádí pojem tČžištČ, což je oznaþení pro hmotný stĜed ve fyzice, ve videometrii by pak bylo pravdČpodobnČ výstižnČjší synonymum jasový stĜed. Obecné vzorce pro výpoþet tČžištČ (x, y) svČtelné stopy vycházejí z mechaniky tuhého tČlesa, kdy je pouze element hmotnosti tČlesa nahrazen elementem jasu obrazu (snímku), tedy jasem jednoho pixelu. Pak platí tyto vztahy: xH yV
x=
¦¦ iI (i, j ) i =0 j =0
S
xH yV
, y=
¦¦ jI (i, j ) i =0 j =0
S
, kde
(3.1)
xH yV
S = ¦¦ I (i, j ) .
(3.2)
i =0 j =0
Funkce I(i, j) zde znamená hodnotu jasu pixelu na pozici i, j. Hodnota xH odpovídá poþtu pixelĤ na jednom Ĝádku (horizontální rozlišení), yV je poþet ĜádkĤ (vertikální rozlišení). PromČnná S je souþet všech jasových hodnot pixelĤ celého snímku. Výsledkem rovnic jsou desetinná þísla, která po zaokrouhlení vyjadĜují pozici nejbližší jasovému stĜedu svČtelné stopy.
- 76 -
3.2.2 Rozbor algoritmu pro výpoþet tČžištČ jedné svČtelné stopy pouze s vnitĜní pamČtí SRAM Výše uvedené vztahy pro výpoþet tČžištČ jsou snadno algoritmizovatelné, pokud se obrazová data celého snímku nacházejí uložená v externí pamČti a lze libovolnČ adresovat. V tomto pĜípadČ staþí se dvČma vnoĜenými cykly vykonat nad všemi pixely pĜíslušné sumaþní funkce, provést operace dČlení a výsledek je urþen. PĜed vlastním výpoþtem se zpravidla vymezí oblast zájmu, ve které se svČtelná stopa ve snímku nachází, aby byla rychlost nalezení tČžištČ maximalizována. Tato operace je vykonávána buć výpoþetnČ (prahováním), nebo je provedena uživatelem pĜi konfiguraci mČĜicího zaĜízení.
Obr. 3.7 Algoritmus výpoþtu tČžištČ svČtelné stopy pĜi použití vnitĜní pamČti SRAM
K ponČkud odlišné situaci dochází pĜi prĤbČžném zpracování obrazové informace s použitím omezené vnitĜní pamČti SRAM. Na obr. 3.7 je naznaþen algoritmus, který provádí výpoþet tČžištČ pĜi využití dvou sektorĤ vnitĜní pamČti A a B, do nichž se vejdou právČ dva po sobČ jdoucí Ĝádky. Na podobném principu ukládání dat do dvou sektorĤ je založen pĜenos obrazu celého snímku do PC, který byl popsán v kapitole 3.1.2. Zde musí být za dobu ukládání jednoho
Ĝádku do pamČti provedeny všechny matematické operace nad Ĝádkem pĜedchozím, který již byl uložen. Délka DMA pĜenosu odpovídá vždy poþtu pixelĤ jednoho Ĝádku (pĜesnČji Ĝeþeno polovinČ, protože je aktivován režim Packing Mode, tj. spojení dvou 8–bitových slov do jednoho 16–bitového). Po skonþení každého Ĝádku je provedena zmČna adresy (na druhý sektor), kam bude DMA Ĝadiþ ukládat data z Ĝádku následujícího po pĜíchodu nábČžné hrany signálu LINE_VALID, viz kapitola 2.3.2.4. Od tohoto okamžiku je þinnost procesoru využita ke - 77 -
zmiĖovaným výpoþetním operacím, do kterých je zahrnuto poþítání þitatelĤ ve vztazích (3.1) a souþtu všech jasových hodnot S (3.2). Vlastní výpoþty nad jedním Ĝádkem lze v jazyce C zapsat tímto zpĤsobem: VKRUWLQWL;L< VKRUWLQWL;L<FKDU L;L<FKDUL, FKDUL,XQVLJQHGLQW L,XQVLJQHGLQWZ;Z<VXP;< XQVLJQHGLQWZ;Z<VXP;< 'H Z;Z<VXP;< 'HNODUDFHSURPČQQêFK 'HNODUDFHSURPČQQêFK NODUDFHSURPČQQêFK L< Z; Z< VXP;< ,QLFLDOL]DFHSRþiWHþQtFKKRGQRW ,QLFLDOL]DFHSRþiWHþQtFKKRGQRW ,QLFLDOL]DFHSRþiWHþQtFKKRGQRW
23(5$&(1$'-('1Ë0ěÈ'.(0
23(5$&(1$'-('1Ë0ěÈ'.(0
IRUL; IRUL; L;+B&17L; ^ L;+B&17L; ^ 9\NRQHMQDGYãHPLSL[HO\ĜiGNXL< 9\NRQHMQDGYãHPLSL[HO\ĜiGNXL< L, L, PHPRU\>L;@ PHPRU\>L;@ L;@ 1DþWLGRSURPČQQpL,KRGQRWXMDVXSL[HOXVRXĜDGQLFHL;L< 1DþWLGRSURPČQQpL,KRGQRWXMDVXSL[HOXVRXĜDGQLFHL;L< SL[HOXVRXĜDGQLFHL;L< LI LIL,!75(6+2/' ^ -HVWOLåHMHWDWRKRGQRWDMDVXYČWãtQHåSUiKSRþtWHM LIL,!75(6+2/' ^ L,!75(6+2/' ^ -HVWOLåHMHWDWRKRGQRWDMDVXYČWãtQHåSUiKSRþtWHM Z; Z;L; L, ýLWDWHOY]RUFHSURYêSRþHWWČåLãWČYVRXĜDGQLFL[ ýLWDWHOY]RUFHSURYêSRþHWWČåLãWČYVRXĜDGQLFL[ Z; Z;L; L, Z< Z< Z<L< L, Z<L< L, ýLWDWHOY]RUFHSURYêSRþHWWČåLãWČYVRXĜDGQLFL\ ýLWDWHOY]RUFHSURYêSRþHWWČåLãWČYVRXĜDGQLFL\ VXP;< VXP;< VXP;<L, VXP;<L, 6RXþHWYãHFKMDVRYêFKKRGQRW 6RXþHWYãHFKMDVRYêFKKRGQRW ` ` ` L< L< ,QNUHPHQWXMĜiGNRYpSRþLWDGOR ,QNUHPHQWXMĜiGNRYpSRþLWDGOR
Jinými slovy lze Ĝíci, že tento for–cyklus vykonává procesor nad každým Ĝádkem uloženým v nČkterém ze sektorĤ pamČti SRAM, zatímco DMA kanálem je zároveĖ pĜenášen do pamČti Ĝádek následující. Hodnota jasu pixelu je uložena do promČnné iI a je v následující instrukci komparována s prahovou úrovní jasu danou konstantou TRESHOLD. Tímto krokem se vylouþí poþetní operace nad tČmi pixely, jejichž jas nedosahuje požadované úrovnČ, a jsou tak považovány za þerné body v obraze. Je-li podmínka prahování splnČna, dojde k pĜiþtení jasu jednoho elementu násobeného indexem polohy v daném smČru ke globálním váhovým promČnným wX a wY, tj. je proveden jeden souþet s inkrementovaným indexem i v þitatelích vztahĤ (3.1). ZároveĖ se vykoná pĜiþtení této hodnoty jasu k celkové jasové promČnné sumXY neboli S ve vztahu (3.2). Po dokonþení tČchto výpoþtĤ nad posledním Ĝádkem snímku následuje závČreþné vydČlení váhových promČnných wX a wY promČnnou sumXY (pokud je vČtší než 0), což jsou výsledná tČžištČ celého snímku x a y. Rychlost tohoto algoritmu je závislá na velikosti svČtelné stopy, neboĢ þím více pixelĤ bude s hodnotou jasu vyšší než TRESHOLD, tím vícekrát bude muset být vykonána posloupnost poþetních operací uvnitĜ tČla podmínky. Od urþité velikosti svČtelné stopy by pak nebylo možné výpoþty jednoho Ĝádku stihnout za dobu trvání jednoho Ĝádku, což by vedlo k situaci, kdy napĜ. po dokonþení operací nad prvním Ĝádkem by byl již zaþátek druhého Ĝádku ztracen (data ze senzoru vystupují nepĜetržitČ) a data do volného sektoru pamČti by se zaþala ukládat až od Ĝádku tĜetího, takže tČžištČ by bylo po zpracování yV ĜádkĤ urþeno chybnČ. Tuto - 78 -
chybu je možné detekovat opatĜením, kdy Ĝadiþ DMA bude volat pĜerušení s každým dokonþením pĜenosu dat jednoho Ĝádku a v tomto pĜerušení bude nastavován pĜíznak chybného výpoþtu. Pokud však velikost svČtelné stopy nepĜekroþí povolenou mez, celý Ĝádkový algoritmus probČhne ještČ pĜed dokonþením DMA pĜenosu aktuálního Ĝádku a zakáže pĜerušení, které bude opČt nastaveno pĜi inicializaci volného pamČĢového sektoru pro Ĝádek následující. Dalším úkolem vývoje snímaþe polohy bude optimalizace tohoto algoritmu po zjištČní posloupnosti jednotlivých instrukcí pĜi pĜekladu z jazyka C do assembleru a zpĤsobu proudového
zpracování
informace
(pipelining).
PĜímým
naprogramováním
algoritmu
v assembleru pak bude pĜesnČ známo instrukþní zpracování v jednotlivých krocích, což nabízí výrazné možnosti zrychlení potĜebných výpoþtĤ.
3.2.3 Situace pĜi více svČtelných stopách v obraze V nČkterých pĜípadech nemusí být mČĜení polohy jedné svČtelné stopy dostaþující a je žádoucí urþit v jednom snímku polohy dvou a více stop. V takovém pĜípadČ se již nebude urþovat stĜed jasového rozložení celého snímku, ale výpoþetní algoritmus bude muset být rozšíĜen o rozpoznání pĜíslušnosti jasovČ výrazného pixelu k odpovídající svČtelné stopČ, pĜiþemž bude vykonávat poþetní operace pro každou stopu zvlášĢ. Vzájemná poloha dvou svČtelných stop bývá rĤzná, proto je nutné uvážit, v jakých možných pozicích se budou bČhem vlastního mČĜení nacházet a podle toho použít vhodný algoritmus. Na obr. 3.8 jsou znázornČny typické polohy dvou idealizovaných kruhových svČtelných stop v obraze jednoho snímku. V následujících odstavcích jsou pak jednotlivé pĜípady popsány a rozebrány principy algoritmĤ pro hledání tČžišĢ bez použití externí pamČti, tj. s poþítáním z rychlé posloupnosti obrazových dat jednotlivých ĜádkĤ. Pro tĜi a více stop by byl algoritmus rozšíĜen analogicky, pouze s nutným zpomalením toku obrazových dat kvĤli vČtší výpoþetní nároþnosti.
Obr. 3.8 RĤzné možnosti vzájemné polohy dvou svČtelných stop v obraze
SvČtelné stopy pod sebou – pokud jsou po celou dobu mČĜení dvČ svČtelné stopy ve vzájemné poloze podle obr. 3.8 a), tj. mezi stopami pod sebou je vzdálenost A o velikosti alespoĖ jednoho tmavého Ĝádku (stopy se nesmí dotknout a spojit v jednu), mĤže být použit algoritmus, který - 79 -
poþítá dvČ tČžištČ ve dvou horizontálních pruzích o šíĜkách m a n (m + n + 1 = poþet ĜádkĤ na snímek), pĜiþemž pĜi výpoþtu je uvažován doplĖkový pruh vždy s jasem pod prahovou hodnotou jasu TRESHOLD (þerná).
SvČtelné stopy vedle sebe – zde je poloha dvou stop obdobná (mezi nejkrajnČjšími body stop je vzdálenost B alespoĖ jednoho tmavého pixelu), viz obr. 3.8 b). Ovšem výpoþetní metoda je zcela odlišná, neboĢ v každém Ĝádku musí být testována pĜíslušnost výrazného pixelu ke správné stopČ, tzn. po následování svČtlého pixelu v první stopČ pixelem tmavým musí být na témže
Ĝádku zahrnut každý další svČtlý pixel k druhé stopČ a na konci Ĝádku musí pĜepnout výpoþty opČt nad první stopu.
SvČtelné stopy þásteþnČ vedle sebe – protože není v reálném obraze možné, aby na každém Ĝádku byl vždy zastoupen alespoĖ jeden výrazný pixel z každé stopy jako je tomu v pĜedchozím pĜípadČ, je nutné uvažovat pouze s þásteþným výskytem dvou svČtelných stop na nČkolika spoleþných Ĝádcích jako je tomu na obr. 3.8 c). Zde tedy musí být navíc správnČ urþeno, ke které svČtelné stopČ výrazný svČtelný bod pĜísluší, jestliže je v prĤbČhu jednoho Ĝádku ve skupinČ svČtlých bodĤ, mezi nimiž není žádný bod tmavý, který by indikoval výskyt druhé stopy, což je výpoþetnČ nároþné. Pokud by vzájemné polohy stop 1 a 2 byly v mČĜené scénČ takové, že stopy by byly od sebe vždy v horizontálním smČru vzdálené alespoĖ na jeden tmavý pixel, bylo by výhodnČjší otoþit obrazový senzor o 90° a výsledné polohy po transpozici souĜadnic urþovat zpĤsobem jako na obr. 3.8 a).
3.2.4 Nastavení obrazového senzoru, pĜenos informace o poloze objektu do PC a grafické vyobrazení v demonstraþní aplikaci Nastavení obrazového senzoru v režimu mČĜení polohy svČtelné stopy musí být takové, aby senzor poskytl co nejvČtší poþet snímkĤ za sekundu a mČĜení tak bylo rychlé. Tím se v zásadČ liší od nastavení pĜi pĜenosu obrazu do PC, kdy naopak musí být tok dat maximálnČ zpomalen, viz kapitola 3.1.2.2. Zvyšovat snímkovou frekvenci lze u snímaþĤ Micron tČmito zpĤsoby: •
snížením rozlišení pĜepnutím do tzv. skip módĤ,
•
minimalizací horizontálního a vertikálního zatemĖovacího intervalu,
•
zvýšením hodinové frekvence pro senzor MCLK až do 48 MHz.
Použitelné je prakticky ale jen snížení rozlišení, protože registry horizontálního/vertikálního zatemnČní jsou po resetu senzorĤ na minimálních hodnotách a zvýšení hodinové frekvence také není v zapojení snímaþe polohy myslitelné, jak již bylo též uvedeno v kapitole 3.1.2.2. Testované - 80 -
obrazové senzory mohou pracovat v tzv. skip módech, což znamená, že jsou vynechány urþité
Ĝádky a sloupce, takže je redukován poþet pixelĤ na jeden snímek. NapĜ. v row, column skip módu 2 jsou na datovou sbČrnici posílány pixely 0, 1, 4, 5, 8, 9, … v Ĝádcích se stejnými þísly. Horizontální i vertikální rozlišení klesne na polovinu, takže poþet aktivních pixelĤ jednoho snímku je þtvrtinový, tedy algoritmus vykoná výpoþet tČžištČ za pomČrnČ kratší dobu. ěádkové i sloupcové rozlišení lze libovolnČ kombinovat podle potĜebné pĜesnosti algoritmu v daném smČru (nižší pĜesnost urþení tČžištČ na úkor vyšší snímkové rychlosti je zde zákonitá). Aby bylo zrychlení Ĝádkové frekvence patrné, musí být pĜi column skip módu zároveĖ v odpovídajícím pomČru zkrácena doba integrace v registru Shutter Width. Aby bylo možné ovČĜit funkþnost snímaþe polohy, bylo nutné nČjakým zpĤsobem zobrazovat souĜadnice vypoþítaného jasového stĜedu svČtelné stopy. Nejjednodušší možnost pĜedstavovala obrazovka poþítaþe, do kterého byla s každým snímkem periodicky odesílána data s informací o souĜadnicích x a y. Tato operace pĜedstavovala odeslání osmi bajtĤ (XQVLJQHGLQW [ [\)
a jejich vyþtení na stranČ PC spolu s rychlým zobrazením. Výpis souĜadnic byl opakovanČ
provádČn na jednom Ĝádku konzolového okna, ovšem pro lepší pĜedstavu o poloze tČžištČ svČtelné stopy bylo vhodné doplnit aplikaci o jednoduchý grafický výstup, jehož podoba je na obr. 3.9.
Obr. 3.9 Grafické okno demonstraþní aplikace k znázornČní polohy tČžištČ svČtelné stopy ve snímku
Po spuštČní aplikace se otevĜe okno o rozmČrech odpovídajících aktuálnČ nastaveného rozlišení obrazového senzoru. Pokud snímaþ polohy detekuje tČžištČ svČtelné stopy a odesílá souĜadnice x > 0 a y > 0, je na tČchto souĜadnicích v grafickém oknČ zobrazena kruhová svČtelná stopa, která se pĜi vzájemné zmČnČ polohy svČtelné znaþky na mČĜeném objektu a obrazového senzoru v oknČ pohybuje. Aby byl pohyb plynulý a spojitý, bylo tĜeba využít (jako pĜi vykreslování obrazových dat) podpory grafické karty pomocí funkcí z knihovny standardu OpenGL. - 81 -
4 ZávČr Úkolem této kapitoly je pĜipomenutí cílĤ diplomové práce, uvedení úspČšnosti jejich splnČní, shrnutí dosažených výsledkĤ a novČ objevených skuteþností. ZávČr práce také obsahuje popis nČkterých zásadnČjších problémĤ, vysvČtlení jejich pĜíþin a možné zpĤsoby Ĝešení. Ve druhé þásti kapitoly je pojednání o možnostech budoucího využití snímaþe polohy nejen z hlediska pĤvodního urþení, tj. pro mČĜení polohy, ale i z hlediska dalších rozšiĜující funkcí, které zaĜízení v dĤsledku navržené koncepce umožĖuje.
4.1 Shrnutí dosažených výsledkĤ Cílem práce bylo navrhnout a realizovat snímaþ polohy s obrazovým senzorem CMOS a signálovým procesorem Blackfin BF–53x. Snímaþ polohy mČl být v minimální obvodové konfiguraci bez externí pamČti SDRAM pro ukládání obrazových dat a mČl mČĜit polohu sledovaného objektu ve snímané scénČ s minimálním zpoždČním, což je hlavní požadavek pro úþely regulace polohy. Do výsledné podoby se nakonec pĜes rĤzné menší i vČtší komplikace podaĜilo vyvinout zaĜízení, které výše uvedené požadavky splĖuje. Hotový snímaþ polohy se nachází na oboustrannČ osazené desce plošného spoje, která díky svým rozmČrĤm a propojovacímu rozhraní tvoĜí spolu se senzorovými deskami (které byly vyvinuty již dĜíve na katedĜe mČĜení) kompaktní mČĜicí zaĜízení, viz obr. 7.3. Mezi hlavní hardwarové rysy snímaþe polohy patĜí procesor BF–53x pro zpracování obrazových dat z CMOS senzoru, komunikace s PC pĜes High Speed USB Ĝadiþ FT2232H a pĜipojitelnost JTAG emulátoru procesoru na standardizovaný konektor. K dalším obvodovým rysĤm patĜí vyvedení procesorových rozhraní SPORT, UART a GPIO, která rozšiĜují aplikovatelnost zaĜízení. DĤležitou obvodovou souþástí je SPI programátor bootovací pamČti EEPROM procesoru, který je realizován také obvodem FT2232H. Ze softwarového hlediska byla uskuteþnČna algoritmizace metody hledání tČžištČ svČtelné stopy z obrazových dat s využitím malé vnitĜní SRAM pamČti procesoru a rychlého poskytování vypoþítaných výsledkĤ s každým snímkem. Dalším programátorským úspČchem byl pĜenos obrazu z jednoho snímku v plném rozlišení CMOS senzoru pĜes procesor do USB Ĝadiþe a následnČ do PC, opČt pouze s vnitĜní SRAM ve funkci vyrovnávací pamČti. PĜi této operaci bylo nutné vhodnČ koordinovat spolupráci PC s Ĝadiþem FT2232H, aby z nČj byla data bČhem celého pĜenosu bez prodlení vyþítána a nemohlo tak dojít k pĜepsání obrazových dat v SRAM, jelikož jejichž tok ze senzoru nebylo možné (ani žádoucí) po dobu jednoho snímku pozastavit. - 82 -
4.1.1 MČĜení polohy svČtelné stopy Hlavním požadavkem na snímaþ polohy bylo rychlé mČĜení tČžištČ svČtelné stopy, což se podaĜilo s výsledky uvedenými v tab. 4.1. Výpoþetní þasy byly namČĜeny logickým analyzátorem pĜi velikosti svČtelné stopy, jejíž pixelová plocha zabírala pĜibližnČ 1 % z plochy v pĜíslušném rozlišení snímku, tzn. že napĜ. z 1310720 pixelĤ v rozlišení 1280 × 1024 bylo cca 13000 pixelĤ s jasem vyšším než prahová úroveĖ, takže s tČmito body byly provádČny výpoþetní operace, viz kapitola 3.2.2. PĜi této velikosti stopy jsou doba výpoþetních operací jednoho Ĝádku kratší než jeho aktivní doba, což je základní požadavek implementovaného algoritmu. Lze tedy oþekávat, že od urþité velikosti svČtelné stopy nebude algoritmus fungovat správnČ, což by bylo snadno indikovatelné napĜ. vyvoláním pĜerušení od pĜenosu posledního Ĝádkového pixelu DMA kanálem. Zde je nutno poznamenat, že snímková rychlost senzoru je dána rychlostí hodinového signálu, jehož kmitoþet je v tomto pĜípadČ 16 MHz a je urþen kmitoþtem externího krystalu oscilátoru procesoru, viz kapitola 2.3.3.1. Tento kmitoþet lze zvýšit až na mezní hodnotu, jež je limitována nejslabším þlánkem ve dvojici procesor – senzor, tj. 40 MHz pro BF– 53x, 48 MHz pro MT9M001 a 26,6 MHz pro MT9V032.
Rozlišení snímku Výpoþet tČžištČ jednoho snímku [ms] Snímková rychlost [poþet snímkĤ/s] Výpoþetní operace nad jedním Ĝádkem [us] Aktivní doba jednoho Ĝádku [us]
1280 × 1024
640 × 512
320 × 256
160 × 128
100
29,7
9,9
5,3
10
33,7
101
188,7
70,5
35,3
17,7
8,9
80
40
20
10
Tab. 4.1 Výpoþet tČžištČ jedné svČtelné stopy se senzorem Micron MT9M001 v rĤzných rozlišeních
PĜípadná zmČna implementace algoritmu v jazyce C pĜílišné zrychlení výpoþetních operací nad jedním Ĝádkem nepĜináší, neboĢ bude vždy záležet na pĜekladaþi, jakým zpĤsobem provede optimalizaci a transformaci zdrojových kódĤ do assembleru. Tato oblast zatím nebyla u procesorĤ BF–53x podrobnČji prozkoumána, proto budou rychlé metody zpracování obrazu u tČchto procesorĤ v budoucnu orientovány právČ na jazyk assembler. PamČĢové nároky pro vykonání algoritmu nejsou velké, neboĢ ve vnitĜní SRAM je alokována oblast pro dva Ĝádky v plném rozlišení (což pro senzor MT9M001 þiní pouze 2,5 kB), takže i s uvážením potĜebného pamČĢového prostoru pro další promČnné je možné výše uvedenou metodu hledání tČžištČ jedné svČtelné stopy uskuteþnit i na procesoru BF–531. Další
- 83 -
metody zpracování obrazu je však v budoucnu výhodnČjší testovat na procesorech BF–533, které mají velkou vnitĜní pamČĢ, viz pĜehled v tab. 2.5.
4.1.2 PĜenos obrazu ze senzoru v plném rozlišení do poþítaþe PĜed samotným pĜenosem velkého objemu dat ze senzoru bylo nutné nejprve optimalizovat zapisovací algoritmus do USB Ĝadiþe FT2232H tak, aby mu byla pĜedávána data z pamČti maximální možnou rychlostí, která je garantována výrobcem, tj. 8 MB/s v režimu Async 245 FIFO. To se ukázalo být zpoþátku pomČrnČ obtížné, neboĢ nepĜíjemnou vlastností Ĝadiþe je skuteþnost, že pĜed každým zápisem do FIFO pamČti musí být testována na pinu TXE# její pĜipravenost, viz kapitola 2.2.3.4 a obr. 2.12. Toto testování totiž výraznČ zpomaluje celý zapisovací cyklus, takže muselo být provedeno nČkolik zmČn ve zdrojovém kódu, než se podaĜilo výše uvedené zapisovací rychlosti dosáhnout. ZároveĖ bylo nutné pĜi takto rychlém pĜenosu na stranČ PC zajistit, aby tok dat, který pĜicházel z procesoru do USB Ĝadiþe, byl neprodlenČ vyþítán a nedošlo k úplnému zaplnČní FIFO pamČti Ĝadiþe. V situaci, kdy je pĜenášen obraz jednoho snímku, totiž není možné pĜísun dat z obrazového senzoru pozastavit, takže by v pĜípadČ vČtší prodlevy vyþítání dat poþítaþem došlo k pĜepsání obsahu ve vyrovnávacích bufferech vnitĜní pamČti SRAM procesoru. Vyrovnávací pamČĢ byla vytvoĜena ve dvou pamČĢových sektorech SRAM, která funguje tak, že do jednoho sektoru probíhá zápis obrazových dat aktuálního Ĝádku, zatímco z druhého sektoru jsou data z pĜedchozího Ĝádku vyþítána a zapisována do USB Ĝadiþe. Každý pamČĢový sektor má tedy alokovanou velikost pouze jednoho Ĝádku v plném rozlišení, takže je tato operace vykonatelná i s procesorem BF–531, jak již bylo popsáno v pĜedchozí kapitole.
4.1.3 Návrh plošného spoje Velká þást práce spoþívala v návrhu plošného spoje, který musel být z dĤvodu omezených rozmČrĤ (60 × 60 mm) osazen oboustrannČ kombinací klasických a SMD souþástek. Pracný návrh se nakonec podaĜilo realizovat na dvouvrstvém spoji ve tĜídČ pĜesnosti 5, tj. s minimální tloušĢkou spoje 8 milĤ. Na vrchní stranČ spoje (TOP) se nachází procesor, USB Ĝadiþ a další souþástky, které svojí výškou pĜíliš nezasahují do prostoru senzorové desky, neboĢ mezi obČma deskami je po vzájemném sesazení mezera pouze 9 mm. Na spodní stranČ (BOTTOM) jsou osazeny zbývající integrované obvody, konektory pro pĜístup k procesorovým rozhraním, tlaþítka, konektor mini USB (typ B), konektor pro pĜipojení napájecího napČtí, filtraþní kondenzátory a integrované stabilizátory v pouzdrech TO-220 na okraji desky, které je možné v pĜípadČ potĜeby pĜišroubovat na chladiþ. Kompletní fotodokumentace osazené desky a výkresy spojĤ s osazovacími pĜedlohami se nacházejí v pĜílohách práce. - 84 -
4.2 Perspektiva a možnosti využití snímaþe polohy 4.2.1 Integrace zaĜízení do prostĜedí LabView a packetová komunikace mezi snímaþem polohy a PC V souþasné dobČ je na katedĜe mČĜení realizován projekt v prostĜedí LabView, který má za úkol sjednotit pĜístup k nejrĤznČjším systémĤm s obrazovými senzory, které již byly v minulosti v rámci nejrĤznČjších úloh a absolventských prací vyvinuty. Znamená to, že bude naprogramována knihovna standardních dotazĤ, které bude možné pomocí této PC aplikace na pĜíslušné komunikaþní rozhraní odesílat a bude oþekávána odpovČć ve formátu daného zaĜízení. Dotazy mohou být typu žádosti o obrazová data, test na šum použitého senzoru, odeslání souĜadnic tČžištČ svČtelné stopy, obraz s detekovanými hranami apod., podle možností konkrétního kamerového systému. ZároveĖ bude zmiĖovaná aplikace umožĖovat konfiguraci nejrĤznČjších parametrĤ pĜíslušného systému, pĜípadnČ parametrĤ samotného obrazového senzoru. Aby byl požadavek na integraci snímaþe polohy do výše uvedeného projektu splnitelný, musí hlavní Ĝídicí program procesoru obsahovat modul pro komunikaci s PC, ve kterém budou rozpoznány dotazy z PC aplikace a zároveĖ bude program procesoru schopný na tyto dotazy definovaným zpĤsobem odpovídat. Jelikož již byla v minulých letech na katedĜe mČĜení v rámci diplomové práce [23] naprogramována knihovna kvalitní packetové komunikace mezi procesorem BF–53x a PC, ukázalo se je pokraþování na tomto typu komunikace výhodné i u snímaþe polohy. A to z dĤvodu, že nČkteré moduly v laboratoĜi již packetovou komunikaci využívají, takže by ani pro snímaþ polohy nemuselo být v prostĜedí LabView implementováno další speciální komunikaþní rozhraní.
Obr. 4.1 Formát komunikaþního packetu 25
Packetová komunikace mezi procesorem a poþítaþem je založena na principu vzájemné výmČny datových packetĤ, viz podrobný popis v diplomové práci [23]. Formát jednoho packetu je uveden na obr. 4.1, pĜiþemž význam jednotlivých polí je následující: •
hlaviþka je tvoĜena posloupností þtyĜ bajtĤ jejichž výskyt ve vlastních datech je nejménČ pravdČpodobný a slouží k rozpoznání zaþátku packetu na stranČ pĜíjemce dat,
25
Upraveno z diplomové práce [23].
- 85 -
•
identifikátor dat (Data ID) je jeden bajt, který definuje význam dat v packetu,
•
velikost pĜenášených dat (Délka dat) jsou 4 bajty, ve kterých je uložena informace o poþtu bajtĤ uložených v datové oblasti,
•
vlastní data (Datová oblast) je posloupnost užiteþných dat o délce definované v pĜedchozím poli packetu.
4.2.2 Další aplikovatelnost zaĜízení v úlohách mČĜicí techniky KromČ dalšího vývoje zaĜízení zejména v oblasti implementace metod prĤbČžného zpracování obrazové informace do assembleru, nabízí deska snímaþe polohy využití jako vývojový kit procesorĤ BF–53x s tČmito vyvedenými rozhraními: •
SPORT – s pĜipojeným audiokodekem lze testovat nejrĤznČjší metody zpracování audio signálĤ, generování nízkofrekvenþních prĤbČhĤ,
•
UART – využití pro jednoduchou komunikaci mezi dalšími procesorovými obvody, hradlovými poli nebo pro výše uvedené pĜipojení k prĤmyslové sbČrnici RS-485,
•
PFx – 12 navzájem nezávislých vstupnČ/výstupních programovatelných flagĤ pro libovolné úþely v þíslicové a mikroprocesorové technice,
•
PPI – možnost pĜipojení k rychlému paralelnímu rozhraní o mezním vzorkovacím kmitoþtu fSCLK / 2 a šíĜce sbČrnice až 14 bitĤ. Tímto rozhraním lze tedy jednoduše realizovat logický, analyzátor, generátor prĤbČhĤ, þíslicový osciloskop atd.
•
TMR0 – pĜipojení k þasovaþi, kterým je možné generovat PWM signál, mČĜit krátké þasové intervaly apod.
Pro úþely ladČní a vývoje programĤ je deska zaĜízení opatĜena také rozhraním JTAG, které bylo otestováno s emulátorem ICE-100B od výrobce Analog Devices. I pĜi absenci emulátoru je možné snadné a rychlé programování bootovací EEPROM pamČti pomocí USB Ĝadiþe pĜímo z vývojového prostĜedí VisualDSP++, viz kapitola 2.2.3.5. Využití zaĜízení snímaþe polohy jako vývojového kitu dále podporují dvČ indikaþní LED a jedno testovací tlaþítko, což bývají v poþátcích práce s novým procesorem nejspolehlivČjší prvky k ovČĜení funkþnosti nahraného programu.
- 86 -
5 Seznam obrázkĤ a tabulek Obr. 1.1 Obr. 1.2 Obr. 1.3 Obr. 1.4 Obr. 1.5 Obr. 1.6 Obr. 1.7 Obr. 1.8 Obr. 2.1 Obr. 2.2 Obr. 2.3 Obr. 2.4 Obr. 2.5 Obr. 2.6 Obr. 2.7 Obr. 2.8 Obr. 2.9 Obr. 2.10 Obr. 2.11 Obr. 2.12 Obr. 2.13 Obr. 2.14 Obr. 2.15 Obr. 2.16 Obr. 2.17 Obr. 2.18 Obr. 2.19 Obr. 2.20 Obr. 2.21 Obr. 2.22 Obr. 2.23 Obr. 2.24 Obr. 2.25 Obr. 2.26 Obr. 2.27 Obr. 2.28 Obr. 3.1 Obr. 3.2 Obr. 3.3 Obr. 3.4 Obr. 3.5 Obr. 3.6 Obr. 3.7 Obr. 3.8
Schematické znázornČní úlohy snímaþe polohy v regulaþní smyþce...................... 9 Blokové schéma plošného obrazového senzoru CMOS (Micron MT9M001) ..... 11 PĜíklady svČtelných stop LED a vypoþítaná tČžištČ pĜi rĤznČ nastaveném objektivu................................................................................................................ 12 Princip Ĝádkového PSD senzoru a jeho náhradní schéma .................................... 13 Urþení polohy svČtelné stopy pomocí dvou Ĝádkových nebo jednoho plošného PSD senzoru .......................................................................................................... 14 Tické zpracování analogových signálĤ z PSD senzorĤ ......................................... 14 lokové schéma snímaþe polohy se signálovým procesorem a externí SDRAM .. 15 Senzorová síĢ ze snímaþĤ polohy S1 - Sn ............................................................. 16 Blokové schéma mČĜení polohy obrazovým senzorem ......................................... 18 Využití USB Ĝadiþe k programování EEPROM.................................................... 19 Propojení FT245R, pamČti EEPROM a BF–53x .................................................. 21 Propojení jednotek na SPI sbČrnici a þasové prĤbČhy signálĤ ............................ 22 Sériový odpor s parazitními kapacitami na signálové cestČ mezi USB Ĝadiþem a procesorem.......................................................................................................... 23 Signály na SPI sbČrnici pro vyþtení bloku dat z pamČti EEPROM 25LC256 ..... 27 Signály na SPI sbČrnici pro zápis jednoho bajtu do pamČti EEPROM 25LC256 ............................................................................................................... 28 Signály na SPI sbČrnici pro zápis celé 64 B stránky do pamČti EEPROM 25LC256 ............................................................................................................... 28 Propojení FT232R, pamČti EEPROM a BF–53x .................................................. 30 Propojení FT2232H, pamČti EEPROM a BF–53x ................................................ 34 Vývojový diagram programátoru EEPROM s FT2232H...................................... 36 PrĤbČhy signálĤ WR# a TXE# na rozhraní Async 245 FIFO ............................ 39 PrĤbČhy signálĤ RD# a RXF# na rozhraní Async 245 FIFO ............................. 39 Dialogové okno prostĜedí VisualDSP++ pro nastavení Post-build pĜíkazĤ .......... 41 Funkþní blokové schéma procesorĤ Blackfin ADSP BF–53x ............................. 43 ZnázornČní propojení procesoru BF–53x se signály senzorové desky ................. 44 SbČrnice I2C mezi procesorem a CMOS senzorem.............................................. 46 Konfigurace PPI rozhraní pro pĜenos obrazových dat z CMOS senzoru ............. 47 PrĤbČhy signálĤ snímkové a Ĝádkové synchronizace senzorĤ Micron ................. 48 Obvod pro generování hodinových signálĤ BF–53x ............................................ 50 PLL systém procesoru BF–53x ............................................................................. 51 Schéma zapojení resetovacího obvodu pro BF–53x a obrazový senzor ............... 52 PĜipojení 1 MB pamČti EEPROM M25P80 na sbČrnici SPI................................ 53 Funkþní bloková schémata budiþĤ RS–232/485 .................................................. 55 PĜipojení testovacího tlaþítka a indikaþních LED na GPIO linky......................... 56 PĜipojení synchronních zaĜízení A a B k sériovému portu SPORT0 .................. 57 Schéma zapojení JTAG konektoru........................................................................ 58 Schéma zapojení lineárního mČniþe pro napČtí 3,3 V s LM317T ......................... 59 Systém pro generování hodinových signálĤ SCLK a CCLK ............................... 62 PamČĢ SRAM ve funkci vyrovnávacího bufferu................................................... 64 Zapisovací signály u FT2232H v režimu Async 245 FIFO ................................. 66 Zapisovací signál WR# v prĤbČhu celého Ĝádku .................................................. 69 Vývojový diagram pro vyþtení obrazových dat z USB Ĝadiþe .............................. 70 Kompletní datový pĜenos na I2C sbČrnici ............................................................. 74 Algoritmus výpoþtu tČžištČ svČtelné stopy pĜi použití vnitĜní pamČti SRAM ...... 77 RĤzné možnosti vzájemné polohy dvou svČtelných stop v obraze ....................... 79 - 87 -
Grafické okno demonstraþní aplikace k znázornČní polohy tČžištČ svČtelné stopy ve snímku..................................................................................................... 81 Obr. 4.1 Formát komunikaþního packetu ........................................................................... 85 Obr. 7.1 Snímaþ polohy: osazená vrchní strana (TOP) ....................................................... 93 Obr. 7.2 Snímaþ polohy: osazená spodní strana (BOTTOM) ............................................. 93 Obr. 7.3 Snímaþ polohy a senzorová deska: pohled zepĜedu .............................................. 94 Obr. 7.4 Snímaþ polohy a senzorová deska: pohled zezadu................................................ 94 Obr. 7.5 Snímaþ polohy s pĜipojeným JTAG emulátorem ICE-100B................................. 95 Obr. 7.6 Poþátky vývoje snímaþe polohy na nepájivém kontaktním poli ........................... 95 Obr. 7.7 Výkres plošného spoje – pohled shora (TOP)....................................................... 96 Obr. 7.8 Osazovací výkres pro vrchní stranu spoje (TOP).................................................. 96 Obr. 7.9 Výkres plošného spoje – pohled zdola (BOTTOM) ............................................. 97 Obr. 7.10 Osazovací výkres pro spodní stranu spoje (BOTTOM)........................................ 97 Obr. 3.9
Tab. 2.1 Tab. 2.2 Tab. 2.3 Tab. 2.4 Tab. 2.5 Tab. 2.6 Tab. 2.7 Tab. 2.8 Tab. 2.9 Tab. 2.10 Tab. 3.1 Tab. 3.2 Tab. 4.1 Tab. 7.1
PĜehled nejpodstatnČjších parametrĤ dostupných USB ĜadiþĤ .............................. 20 VýbČr operace v režimu CPU FIFO Style ............................................................ 33 PĜehled a význam argumentĤ funkce SPI_WriteHiSpeedDevice ........................ 38 ýasy potĜebné k zápisu/vyþtení celé EEPROM 25LC256 .................................... 40 PĜehled velikostí pamČtí procesorĤ ADSP BF–53x .............................................. 44 Propojení konektoru senzorové desky s procesorem a celým obvodem ............... 45 Rozložení pinĤ konektoru J2–UART na plošném spoji......................................... 54 Propojení pinĤ na konektoru J4 s piny GPIO ........................................................ 56 Rozložení signálĤ SPORT0 na pinech konektoru J3 ............................................. 57 Rozložení a popis pinĤ na konektoru JTAG ........................................................ 58 Násobnost výstupního kmitoþtu VCO vĤþi kmitoþtu na vstupu PLL ................... 62 ýasování signálĤ pro zápis do FT2232H .............................................................. 66 Výpoþet tČžištČ jedné svČtelné stopy se senzorem Micron MT9M001 v rĤzných rozlišeních............................................................................................. 83 Soupiska souþástek pro snímaþ polohy ................................................................. 98
- 88 -
6 Seznam odborné literatury [1]
KISER, John. MOTION CAPTURE TECHNOLOGY: The Basics [online]. [cit. 13. 11. 2010]. Dostupný z WWW: http://www.c-motion.com/corpfiles/Mocap%20Basics%20for%20Science.pdf
[2]
ĆAĆO, Stanislav; KREIDL, Marcel. SENZORY A MċěICÍ OBVODY. 2. vydání. Praha : Vydavatelství ýVUT, 1996. 315 s. ISBN 80-01-02057-6.
[3]
PAVLIŠTA, Dan. DIPLOMOVÁ PRÁCE: 3D videosensor [online]. Praha ýVUT FEL, katedra Ĝídicí techniky, 2009. [cit. 13. 11. 2010]. Dostupný z WWW: http://support.dce.felk.cvut.cz/mediawiki/images/f/fa/Dp_2010_pavlista_dan.pdf
[4]
LAURENT, Robin; JEROME, Baron. CMOS IMAGE SENSORS: Technologies & Markets, 2010 Report [online]. [cit. 15. 11. 2010]. Dostupný z WWW: http://www.imicronews.com/upload/Rapports/Yole_CMOS_Image_Sensor_2010_Report_SAMPLE.pdf
[5]
MICRON TECHNOLOGY, Inc. KATALOGOVÝ LIST: MT9M001 – rev F [online]. Boise 2006. [cit. 15. 11. 2010]. Dostupný z WWW: http://pdf1.alldatasheet.com/datasheet-pdf/view/115168/MICRON/MT9M001.html
[6]
FISCHER, Jan. OPTOELEKTRONICKÉ SENZORY A VIDEOMETRIE. Praha : Vydavatelství ýVUT, 2002. 315 s. ISBN 80-01-02525-X.
[7]
PAVLÍýEK, Tomáš. DIPLOMOVÁ PRÁCE: Metody prĤbČžného zpracování obrazu a jejich implementace do signálového procesoru Blackfin ADSP-BF532 [online]. Praha
ýVUT FEL, katedra mČĜení, 2008. [cit. 15. 11. 2010]. Dostupný z WWW: http://measure.feld.cvut.cz/cs/system/files/files/cs/vyuka/zaverecne_prace/DP_2008_Pavlic ek_Tomas_locked.pdf [8]
FTDI CHIP, Ltd. KATALOGOVÝ LIST: FT232R – ver 2.07 [online]. Glasgow 2010. [cit. 22. 11. 2010]. Dostupný z WWW: http://ftdichip.com/Support/Documents/DataSheets/ICs/DS_FT232R.pdf
[9]
FTDI CHIP, Ltd. KATALOGOVÝ LIST: FT245R – ver 2.10 [online]. Glasgow 2010. [cit. 22. 11. 2010]. Dostupný z WWW: http://ftdichip.com/Support/Documents/DataSheets/ICs/DS_FT245R.pdf
[10] FTDI CHIP, Ltd. KATALOGOVÝ LIST: FT2232H – ver 2.09 [online]. Glasgow 2010. [cit. 22. 11. 2010]. Dostupný z WWW: http://ftdichip.com/Support/Documents/DataSheets/ICs/DS_FT2232H.pdf
- 89 -
[11] CYPRESS SEMICONDUCTOR CORPORATION. KATALOGOVÝ LIST: CY7C6801xxA - rev *S [online]. San Jose 2010. [cit. 22. 11. 2010]. Dostupný z WWW: http://www.cypress.com/?docID=24267 [12] ZIMA, JiĜí. BAKALÁěSKÁ PRÁCE: Rychlý pĜenos obrazu s využitím EZ–USB. [online]. Praha ýVUT FEL, katedra mČĜení, 2009. [cit. 22. 11. 2010]. Dostupný z WWW: http://measure.feld.cvut.cz/cs/system/files/files/cs/vyuka/zaverecne_prace/BP_2009_Zima_ Jiri_locked.pdf [13] FTDI CHIP, Ltd. APLIKAýNÍ POZNÁMKA AN_114: Interfacing FT2232H Hi–Speed Devices To SPI Bus – ver 1.0 [online]. Glasgow 2009. [cit. 25. 11. 2010]. Dostupný z WWW: http://www.ftdichip.com/Support/Documents/AppNotes/AN_114_FTDI_Hi_Speed_USB_ To_SPI_Example.pdf [14] FTDI CHIP, Ltd. APLIKAýNÍ POZNÁMKA AN232R–01: Bit Bang Modes for the FT232R and FT245R – ver 2.02 [online]. Glasgow 2010. [cit. 28. 11. 2010]. Dostupný z WWW: http://www.ftdichip.com/Support/Documents/AppNotes/AN_232R01_Bit_Bang_Mode_Available_For_FT232R_and_Ft245R.pdf [15] FTDI CHIP, Ltd. VÝVOJ APLIKAýNÍHO SOFTWARE: D2XX Programmer's Guide -- ver 1.01 [online]. Glasgow 2010. [cit. 28. 11. 2010]. Dostupný z WWW: http://www.ftdichip.com/Support/Documents/ProgramGuides/D2XX_Programmer%27s_G uide%28FT_000071%29.pdf [16] MICROCHIP TECHNOLOGY, Inc. KATALOGOVÝ LIST: 25AA256/25LC256 – rev E [online]. Arizona 2005. [cit. 28. 11. 2010]. Dostupný z WWW: http://ww1.microchip.com/downloads/en/devicedoc/21822e.pdf [17] FTDI CHIP, Ltd. APLIKAýNÍ POZNÁMKA AN_111: Programmers Guide for High Speed FTCSPI DLL -- ver 1.1 [online]. Glasgow 2009. [cit. 04. 12. 2010]. Dostupný z WWW: http://www.ftdichip.com/Support/Documents/AppNotes/AN_111_Programmers_Guide_for _High_Speed_FTCSPI_DLL.pdf [18] FTDI CHIP, Ltd. APLIKAýNÍ POZNÁMKA AN_114: Interfacing FT2232H Hi-Speed Devices To SPI Bus -- ver 1.0 [online]. Glasgow 2009. [cit. 04. 12. 2010]. Dostupný z WWW: http://www.ftdichip.com/Support/Documents/AppNotes/AN_114_FTDI_Hi_Speed_USB_ To_SPI_Example.pdf [19] STMICROELECTRONIC. KATALOGOVÝ LIST: M25P80 – rev 1.2, 2002 [online]. [cit. 04. 12. 2010]. Dostupný z WWW: http://www.datasheetcatalog.org/datasheets/228/227105_DS.pdf - 90 -
[20] FTDI CHIP, Ltd. APLIKAýNÍ POZNÁMKA AN232B–06: Debugging FT232BM / FT245BM Designs – ver 1.1 [online]. Glasgow 2004. [cit. 05. 12. 2010]. Dostupný z WWW: http://www.ftdichip.com/Support/Documents/AppNotes/AN232B-06_11.pdf [21] VEDRAL, Josef; FISCHER, Jan. ELEKTRONICKÉ OBVODY PRO MċěICÍ TECHNIKU. Praha : Vydavatelství ýVUT, 2004. 340 s. ISBN 80-01-02966-2. [22] ANALOG DEVICES, Inc. KATALOGOVÝ LIST: ADSP–BF531/ADSP–BF532/ADSP– BF533 – rev G [online]. Norwood MA 2010. [cit. 6. 12. 2010]. Dostupný z WWW: http://www.analog.com/static/imported-files/data_sheets/ADSP-BF531_BF532_BF533.pdf [23] PRIBULA, Ondrej. DIPLOMOVÁ PRÁCA: Vývojový modul pre spracovanie obrazu so signálovým procesorom ADSP-Blackfin. [online]. Praha ýVUT FEL, katedra mČĜení, 2007. [cit. 6. 12. 2010]. Dostupný z WWW: http://measure.feld.cvut.cz/cs/system/files/files/cs/vyuka/zaverecne_prace/DP_2007_Pribul a_Ondrej_locked.pdf [24] ANALOG DEVICES, Inc. KATALOGOVÝ LIST: ADSP–BF533 Blackfin Processor Hardware Reference – rev 3.4 [online]. Norwood MA 2009. [cit. 8. 12. 2010]. Dostupný z WWW: http://www.analog.com/static/imported-files/processor_manuals/bf533_hwr_Rev3.4.pdf [25] ANALOG DEVICES, Inc. KATALOGOVÝ LIST: ADM706x/708x – rev C [online]. Norwood MA 2008. [cit. 10. 12. 2010]. Dostupný z WWW: http://www.analog.com/static/importedfiles/data_sheets/ADM706P_706R_706S_706T_708R_708S_708T.pdf [26] ANALOG DEVICES, Inc. ENGINEER-TO-ENGINEER NOTE: EE240, ADSP-BF533 Blackfin Booting Process – rev 4 [online]. Norwood MA 2008. [cit. 11. 12. 2010]. Dostupný z WWW: http://www.analog.com/static/imported-files/application_notes/EE-240_Rev4.pdf [27] STMICROELECTRONIC. KATALOGOVÝ LIST: M25P32 – rev 4.0, 2004 [online]. [cit. 11. 12. 2010]. Dostupný z WWW: http://www.acinonyx.tk/wp-content/uploads/2009/02/m25p32.pdf3
[28] ANALOG DEVICES, Inc. KATALOGOVÝ LIST: ADM3202/ADM3222/ADM1385 – rev D [online]. Norwood MA 2006. [cit. 11. 12. 2010]. Dostupný z WWW: http://www.analog.com/static/imported-files/data_sheets/ADM3202_3222_1385.pdf [29] ANALOG DEVICES, Inc. KATALOGOVÝ LIST: ADM485 – rev F [online]. Norwood MA 2008. [cit. 11. 12. 2010]. Dostupný z WWW: http://www.analog.com/static/imported-files/data_sheets/ADM485.pdf - 91 -
[30] ANALOG DEVICES, Inc. UŽIVATELSKÁ PěÍRUýKA: ICE-100B Emulator – rev 1.0 [online]. Norwood MA 2009. [cit. 13. 12. 2010]. Dostupný z WWW: http://www.analog.com/static/imported-files/emulator_manuals/ICE-100B_rev.1.0.pdf [31] NXP SEMICONDUCTORS. SPECIFIKACE SBċRNICE: The I2C-bus specification – ver 2.1 [online]. Eindhoven 2000. [cit. 24. 12. 2010]. Dostupný z WWW: http://www.nxp.com/acrobat_download2/literature/9398/39340011.pdf
- 92 -
7 PĜílohy 7.1 PĜíloha A: Fotodokumentace
Obr. 7.1 Snímaþ polohy: osazená vrchní strana (TOP)
Obr. 7.2 Snímaþ polohy: osazená spodní strana (BOTTOM)
- 93 -
Obr. 7.3 Snímaþ polohy a senzorová deska: pohled zepĜedu
Obr. 7.4 Snímaþ polohy a senzorová deska: pohled zezadu
- 94 -
Obr. 7.5 Snímaþ polohy s pĜipojeným JTAG emulátorem ICE-100B
Obr. 7.6 Poþátky vývoje snímaþe polohy na nepájivém kontaktním poli
- 95 -
7.2 PĜíloha B: Výkresy DPS (60 × 60 mm) a osazovací pĜedlohy
Obr. 7.7 Výkres plošného spoje – pohled shora (TOP)
Obr. 7.8 Osazovací výkres pro vrchní stranu spoje (TOP)
- 96 -
Obr. 7.9 Výkres plošného spoje – pohled zdola (BOTTOM)
Obr. 7.10 Osazovací výkres pro spodní stranu spoje (BOTTOM)
- 97 -
7.3 PĜíloha C: Soupiska souþástek Reference
Hodnota
Reference
Hodnota
Reference
Hodnota
R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29 R30 R31 R32 R33 R34 R35 R36 R37 R38 R39 R40 R41 R42 R43 R44 R45 R46 R47 R48 R49 R50 R51 R52
4k7 10 k 10 k 470 470 470 470 470 470 12k 39 39 39 39 39 1k 39 39 39 10k 10k 470 470 10k 2k2 470 470 470 10k 120 100 1k5 1k5 10k 10k 4k7 10k 10k 10k 0R0 10k 10k 10k 100k 100k 750 180 10k 10k 10k 10k 1k2
R53 R54 R55 R56 R57 R58 R59 R60 R61 R62 R63 C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 C13 C14 C15 C16 C17 C18 C19 C20 C21 C22 C23 C24 C25 C26 C27 C28 C29 C30 C31 C32 C33 C34 C35 C36 C37 C38 C39 C40 C41
10k 4k7 47k 10k 0R0 680 10k 120 39 39 39 100n 10u 10u 100n 100n 10u 100n 100n 100n 100n 100n 100n 100n 100n 27p 27p 100n 220u 100n 1u 47u 22p 22p 100n 100n 10n 10n 10n 10n 10n 10n 10n 10n 10n 10n 10n 10n 10n 10n 1u 1u
C42 C43 C44 C45 C46 C47 C48 C49 C50 C51 C52 C53 C54 C55 C56 C57 C58 C59 C60 C61 C62 C63 U1 U2 U3 U4 U5 U6 U7 U8 T1 D1 D2 D3 D4 L1 L2 Q1 Q2 SW1 SW2 J1 J2 J3 J4 J5 J6 J7 J8
1u 1u 1u 1u 10u 1u 100n 100n 100n 47u 10n 10n 10n 10n 10n 10n 10n 10n 1u 1u 1u 1u ADSP-BF533 M25P80 FT2232HL 93LC46 LM317T 74LVC04/SO LM317T ADM708TAR BC807-40 LT8A42-43 LT8A22-43 1N4007 LT8A22-43 68nH 68nH 12MHz 16MHz P-B1720 P-B1720 USB B MINI S2Gxx S2Gxx S2Gxx S2Gxx ARK550/2EX S2Gxx S1Gxx
Tab. 7.1 Soupiska souþástek pro snímaþ polohy
- 98 -