ˇ ´ vysoke ´ uc ˇen´ı technicke ´ v Praze Cesk e ´ Fakulta elektrotechnicka ˇ´ıdic´ı techniky Katedra r
´ RSK ˇ ´ PRACE ´ BAKALA A Vyuˇ zit´ı programovateln´ eho pole pro ˇ r´ızen´ı bezkart´ aˇ cov´ ych motor˚ u
Praha, 2011
Vypracoval: Vladim´ır Burian Vedouc´ı pr´ace: Ing. Pavel P´ıˇsa, Ph.D.
i
Podˇ ekov´ an´ı Na tomto m´ıstˇe bych chtˇel pˇredevˇs´ım velmi podˇekovat m´emu vedouc´ımu bakal´aˇrsk´e pr´ace panu Ing. Pavlu P´ıˇsovi, Ph.D. za ochotu, cenn´e rady, vˇecn´e pˇripom´ınky a trpˇelivost v pr˚ ubˇehu jej´ıho ˇreˇsen´ı.
ii
Abstrakt Bakal´aˇrsk´a pr´ace se zab´ yv´a ˇr´ızen´ım bezkart´aˇcov´ ych motor˚ u pomoc´ı programovateln´ ych hradlov´ ych pol´ı. Nejvyˇsˇs´ı u ´roveˇ n ˇr´ızen´ı zajiˇst’uje syntetizovan´ y mikrokontrol´er pˇredevˇs´ım s knihovnou PXMC pro ˇr´ızen´ı motor˚ u, jeˇz byla vyvinuta ve firmˇe PiKRON. Komunikace s nadˇrazen´ ym syst´emem prob´ıh´a po standardn´ı s´eriov´e lince RS232 v jednoduch´em textov´em protokolu. Na nejniˇzˇs´ı u ´rovni samoˇcinnˇe prov´ad´ı komutaci k tomu navrˇzen´ y syntetizovan´ y hardware, jeˇz je ˇr´ızen nadˇrazen´ ym mikrokontrol´erem. Implementov´ana je komutace modifikovan´ ym sinusov´ ym sign´alem, ale n´avrh svou koncepc´ı umoˇzn ˇuje doplnˇen´ı proudov´ ymi regul´atory a momentov´ ym ˇr´ızen´ım. Kromˇe samotn´e implementace je v pr´aci tak´e obecnˇe rozebr´an princip funkce bezkart´aˇcov´eho motoru a moˇznosti jeho ˇr´ızen´ı. N´asleduje popis architektury hradlov´ ych pol´ı firmy Xilinx, jeˇz byli pˇri realizaci pouˇzity. Nechyb´ı ani ˇc´ast vˇenovan´a popisu v´ yvojov´ ych n´astroj˚ u, postupu v´ yvoje a jazyk˚ um k nˇemu urˇcen´ ym.
Abstract The bachelor thesis presents control of brush-less DC motors with use of field programmable gate arrays – FPGA. The highest level of control is handled by softcore MCU running PXMC motion control library developed in PiKRON. MCU communicates with master system through a standard serial line RS232 using simple text-based and human-readable protocol. At the bottom level there is synthesized hardware doing motor commutation and being controlled by MCU. Method of modified sine wave commutation is implemented, but the design is proposed to be simply extensible by current controllers and so torque control. Beside of implementation there is described general operation of BLDC motors and basic principles of their control. Description of Xiling FPGA, which was used to implement design, is following. Few sections are also intended for development tools, synthesis process and hardware description languages.
iii
Obsah ´ 1 Uvod
1
2 Bezkart´ aˇ cov´ e motory
3
2.1
Rozbor funkce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
2.2
Metody ˇr´ızen´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
2.2.1
Blokov´a komutace . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
2.2.2
Bezsenzorov´a komutace . . . . . . . . . . . . . . . . . . . . . . . .
9
2.2.3
Komutace sinusov´ ym sign´alem . . . . . . . . . . . . . . . . . . . .
10
2.2.4
Modifikovan´a sinusovka . . . . . . . . . . . . . . . . . . . . . . . .
10
2.2.5
Momentov´e ˇr´ızen´ı . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
3 FPGA Xilinx 3.1
3.2 3.3
3.4
3.5
14
Struktura architektury . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
3.1.1
Konfigurovateln´e logick´e bloky – CLB . . . . . . . . . . . . . . . .
14
3.1.2
Ostatn´ı bloky . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
3.1.3
Propojovac´ı s´ıtˇe . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
V´ yvojov´e n´astroje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
3.2.1
. . . . . . . . . . . . . . . . . . . . . . . . . .
18
Jazyk VHDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
3.3.1
Pouˇzit´ı resetu . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
3.3.2
Nedefinovan´e stavy . . . . . . . . . . . . . . . . . . . . . . . . . .
22
Pamˇeti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
3.4.1
Druhy pamˇet´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
3.4.2
Zp˚ usoby vytvoˇren´ı . . . . . . . . . . . . . . . . . . . . . . . . . .
24
3.4.3
N´astroj data2mem . . . . . . . . . . . . . . . . . . . . . . . . . .
25
Pˇrehled souˇca´stek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
25
Proces syntetizace
iv
4 Syntetizovan´ y mikrokontrol´ er 4.1
4.2
27
V´ ybˇer syntetizovan´eho mikrokontrol´eru . . . . . . . . . . . . . . . . . . .
28
4.1.1
Plasma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
28
4.1.2
OpenMSP430 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
29
Pouˇzit´ı mikrokontrol´eru openMSP430 . . . . . . . . . . . . . . . . . . . .
30
4.2.1
Datov´a a programov´a sbˇernice . . . . . . . . . . . . . . . . . . . .
30
4.2.2
Perifern´ı sbˇernice . . . . . . . . . . . . . . . . . . . . . . . . . . .
30
4.2.3
Sbˇernice Wishbone . . . . . . . . . . . . . . . . . . . . . . . . . .
32
5 Implementace hardwaru 5.1
5.2
5.3
5.4
33
Rozhran´ı mikrokontrol´eru a regulaˇcn´ı smyˇcky . . . . . . . . . . . . . . .
33
5.1.1
Moˇzn´e alternativy . . . . . . . . . . . . . . . . . . . . . . . . . . .
33
5.1.2
Zvolen´e ˇreˇsen´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
35
Implementace na nejvyˇsˇs´ı u ´rovni . . . . . . . . . . . . . . . . . . . . . . .
35
5.2.1
Entita mcc exec . . . . . . . . . . . . . . . . . . . . . . . . . . . .
37
5.2.2
Ostatn´ı entity . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
38
Regulaˇcn´ı smyˇcka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
39
5.3.1
Entita mcc master . . . . . . . . . . . . . . . . . . . . . . . . . .
40
5.3.2
Entita sequencer . . . . . . . . . . . . . . . . . . . . . . . . . . .
41
5.3.3
Ostatn´ı entity . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
41
Vlastnosti v´ ysledn´eho n´avrhu . . . . . . . . . . . . . . . . . . . . . . . .
42
6 Implementace Softwaru 6.1
44
Pˇreklad programu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
44
6.1.1
Knihovna PXMC . . . . . . . . . . . . . . . . . . . . . . . . . . .
45
6.1.2
Gener´ator komutaˇcn´ıch profil˚ u. . . . . . . . . . . . . . . . . . . .
46
7 Z´ avˇ er
47
A Pouˇ zit´ e softwarov´ e projekty
I
B Obsah pˇ riloˇ zen´ eho CD
II
v
Kapitola 1 ´ Uvod Elektrick´e pohony jsou nezbytnou souˇca´sti mnoha stroj˚ u, robot˚ u a dalˇs´ıch zaˇr´ızen´ı. Stejnˇe jako ostatn´ı komponenty i motory jsou ˇcasto peˇclivˇe vyb´ır´any podle druhu c´ılov´e aplikace, prostˇred´ı a povaze provozu a dalˇs´ıch krit´eri´ı. Mezi moˇzn´ ymi alternativami zauj´ımaj´ı bezkart´aˇcov´e motory pevn´e m´ısto pro mnoh´e sv´e v´ yjimeˇcn´e vlastnosti. Avˇsak mnoˇzstv´ı v´ yhod, kter´e n´am pˇrin´aˇs´ı, je vyv´aˇzeno nˇekter´ ymi nev´ yhodami. Stejnosmˇern´e bezkart´aˇcov´e motory spadaj´ı do skupiny tzv. elektronicky komutovan´ ych motor˚ u. A pr´avˇe nutnost a relativn´ı sloˇzitost zajiˇstˇen´ı komutace elektronicky je ˇcasto zmiˇ novanou nev´ yhodou. Nicm´enˇe i tato nev´ yhoda nemus´ı b´ yt ve v´ ysledku nev´ yhodou protoˇze n´am naopak dovoluje implementovat ˇr´ızen´ı dokonalejˇs´ı tam, kde je ho potˇreba, a d´ale t´ım vlastnosti pohonu oproti ostatn´ım moˇznostem vylepˇsit. Implementace elektronick´e komutace je pro bezkart´aˇcov´e motory kl´ıˇcov´a. Pokud m´a motor slouˇzit jako servopohon, pak vyˇzaduje pouˇzit´ı v´ ypoˇcetn´ı techniky a periodick´e a velmi ˇcast´e vykon´av´an´ı stejn´e posloupnosti akc´ı. Dnes je jejich ˇr´ızen´ı nejˇcastˇeji realizov´ano v jednoˇcipov´ ych mikropoˇc´ıtaˇc´ıch, kter´e maj´ı integrov´any periferie poskytuj´ıc´ı PWM v´ ystupy a v nˇekter´ ych pˇr´ıpadech i vstupy pro vyhodnocen´ı sign´al˚ u inkrement´aln´ıch rotaˇcn´ıch kod´er˚ u. Tedy vˇse potˇrebn´e pro rozumn´e polohov´e ˇr´ızen´ı bˇeˇzn´ ych bezkart´aˇcov´ ych motor˚ u. Bohuˇzel poˇcet dostupn´ ych integrovan´ ych perif´eri´ı je vˇetˇsinou postaˇcuj´ıc´ı k obsluze pouze jedin´eho motoru. Moˇznost´ı, jak rozˇs´ıˇrit poˇcet ˇr´ızen´ ych motor˚ u jedn´ım mikropoˇc´ıtaˇcem, je napˇr. pˇripojen´ı dodateˇcn´ ych extern´ıch periferi´ı. Jako jin´e, zaj´ımav´e ˇreˇsen´ı se jev´ı implementace tˇechto perif´eri´ı v programovateln´em hradlov´em poli, pˇriˇcemˇz by hradlov´e pole mohlo pˇrevz´ıt celou ˇca´st st´ale se opakuj´ıc´ıho procesu komutace i pro nˇekolik motor˚ u a zmenˇsit tak zat´ıˇzen´ı mikropoˇc´ıtaˇce, kter´ y by se pot´e mohl intenzivnˇeji vˇenovat ˇr´ızen´ı na vyˇsˇs´ıch u ´rovn´ıch, pl´anov´an´ı pohybu, komunikaci s nadˇrazen´ ymi syst´emy apod. Pr´avˇe touto alternativou se zab´ yv´a n´asleduj´ıc´ı pr´ace. 1
´ KAPITOLA 1. UVOD
2
V prvn´ı kapitole je rozebr´ana funkce bezkart´aˇcov´ ych motor˚ u a bˇeˇzn´e zp˚ usoby jejich ˇr´ızen´ı. V kapitole druh´e jsou pak rozebr´any funkce a moˇznosti hradlov´ ych pol´ı firmy Xilinx. Takt´eˇz jsou pˇredstaveny v´ yvojov´e n´astroje, postup syntetizace hardwaru, jazyky pro jeho popis a nˇekolik rad, kter´e je dobr´e pˇri n´avrhu zn´at. Posledn´ı dvˇe kapitoly se vˇenuj´ı implementaci hardwaru a softwaru. Popis implementace se v ˇz´adn´em pˇr´ıpadˇe nesnaˇz´ı b´ yt vyˇcerp´avaj´ıc´ı, ale mˇel by b´ yt dostateˇcn´ y k pochopen´ı fungovan´ı cel´eho projektu. D˚ uraz je kladen sp´ıˇse na vysvˇetlen´ı celkov´e koncepce, nast´ınˇen´ı moˇznost´ı, kter´e se pˇri implementaci nab´ız´ı, jejich porovn´an´ı a zd˚ uvodnˇen´ı volby.
Kapitola 2 Bezkart´ aˇ cov´ e motory Na obr´azku 2.1 m˚ uˇzeme vidˇet ˇrez stejnosmˇern´ ym bezkart´aˇcov´ ym motorem z katalogu firmy Maxon [9]. Minim´aln´ım, obecn´ ym z´akladem, kter´ y charakterizuje tuto tˇr´ıdu motor˚ u, je stator (tˇelo motoru) nesouc´ı statorov´e vinut´ı, jeˇz je pˇr´ımo ˇr´ızeno ˇr´ıdic´ı jednotkou, a rotor s permanentn´ım magnetem. Interakc´ı mezi vinut´ım a permanentn´ım magnetem vznik´a toˇciv´ y moment. (Nutno podotknout, ˇze ne vˇzdy je vnˇejˇs´ı ˇca´st´ı motoru stator. Existuj´ı i konstrukce, kde je vnˇejˇs´ı ˇc´ast tvoˇrena rotorem. Tyto se vyznaˇcuj´ı vˇetˇs´ım kroutic´ım momentem a vˇetˇs´ım momentem setrvaˇcnosti. Jsou tedy vhodnˇejˇs´ı do aplikac´ı, kde se vyˇzaduje sp´ıˇse stabiln´ı rychlost ot´aˇcen´ı, pˇr´ıpadnˇe kde je vhodn´ y jejich charakteristick´ y diskov´ y tvar.) Jak jiˇz bylo ˇreˇceno v u ´vodu, podstatou funkce je, ˇze procesy ve statorov´em vinut´ı m´a
ˇ bezkart´ Obr´ azek 2.1: Rez aˇcov´ ym motorem firmy. MAXON. 1 - samonosn´e vinut´ı statoru, 2 - permanentn´ı magnet rotoru, 3 - deska s Hallov´ ymi senzory, 4 - permanentn´ı magnety na rotoru sp´ınaj´ıc´ı Hallovy senzory
3
´ COV ˇ ´ MOTORY KAPITOLA 2. BEZKARTA E
4
plnˇe pod kontrolou ˇr´ıdic´ı jednotka, kter´a se mus´ı starat o tzv. elektronickou komutaci – ˇr´ızen´ı napˇet´ı na v´ yvodech vinut´ı za u ´ˇcelem vyvozen´ı toˇciv´eho momentu. Od tohoto faktu se odv´ıj´ı vˇetˇsina v´ yhod i nev´ yhod bezkart´aˇcov´ ych motor˚ u. Komutaci lze prov´adˇel r˚ uzn´ ymi zp˚ usoby, nˇekter´e z nich rozebereme v n´asleduj´ıc´ı ˇc´asti. D˚ uleˇzit´e je, ˇze za t´ımto u ´ˇcelem potˇrebujeme mˇeˇrit natoˇcen´ı rotoru. Proto b´ yvaj´ı motory vybaveny senzory. Jako z´akladn´ı senzory jsou nejˇcastˇeji pouˇzity Hallovy sondy integrovan´e pˇr´ımo v tˇele motoru. Ty sn´ımaj´ı bud’ magnetick´e pole hlavn´ıho magnetu rotoru, nebo magnetick´e pole pomocn´eho magnetu, jak m˚ uˇzeme vidˇet v uveden´em ˇrezu. Poˇcet tˇechto senzor˚ u je shodn´ y s poˇctem f´az´ı. Jejich geometrick´e uspoˇra´d´an´ı m˚ uˇze b´ yt r˚ uzn´e, vˇzdy n´am ale poskytuj´ı informaci o elektrick´e f´azi rotoru v mez´ıch rovn´ ych ˇctvrtinˇe rozestupu vinut´ı (za ide´aln´ıho pˇr´ıpadu). Pro 3-f´azov´ y motor s dvoup´olov´ ym rotorem, kter´ y m´a f´azov´e rozestupy statorov´ ych vinut´ı 120◦ , mˇeˇr´ı Hallovy sondy f´azi rotoru s pˇresnost´ı ±30◦ . Pokud nejsou Hallovy sondy pro danou aplikaci dostaˇcuj´ıc´ı, pˇrid´av´a se k motoru senzor s vˇetˇs´ım rozliˇsen´ım. Velmi ˇcasto je to optick´ y inkrement´aln´ı senzor, kter´ y bˇeˇznˇe poskytuje rozliˇsen´ı 0, 2◦ . Poskytuje n´am ale pouze informaci o relativn´ı zmˇenˇe polohy, nikoli pˇr´ımo absolutn´ı polohu jako Hallovy senzory. Nem˚ uˇze je tedy zcela nahradit, zpravidla proto oba dva vystupuj´ı v souˇcinnosti. Kromˇe tˇechto senzor˚ u se m˚ uˇzeme v t´eto funkci setkat i s m´enˇe ˇcast´ ymi senzory, jako jsou magnetick´e inkrement´aln´ı senzory ˇci dokonce resolvery. N´asleduje v´ yˇcet pozitivn´ıch vlastnost´ı tˇechto motor˚ u plynouc´ı z jejich konstrukce a moˇzn´eho zp˚ usobu ˇr´ızen´ı: • Prostorovˇe u ´sporn´e, velk´ y pomˇer v´ ykon/velikost. • Spolehliv´e, bez´ udrˇzbov´e – neobsahuj´ı mechanick´ y komut´ator, kter´ y podl´eh´a opotˇreben´ı a je nejslabˇs´ı ˇca´st´ı klasick´ ych stejnosmˇern´ ych motor˚ u. T´ım odpad´a i jiskˇren´ı a uvolˇ nov´an´ı ˇca´stic z komut´atoru, coˇz m˚ uˇze b´ yt v nˇekter´ ych pˇr´ıpadech neˇz´adouc´ı. • Vinut´ı je spojeno s tˇelem motoru a dobˇre se chlad´ı, i kdyˇz je motor zcela uzavˇren´ y. ˇ ızen´ım lze dos´ahnout mal´eho kol´ıs´an´ı krout´ıc´ıho momentu v pr˚ • R´ ubˇehu jedn´e ot´aˇcky. To m´a za n´asledek i malou hluˇcnost motoru, omezen´ı vyvol´avan´ ych vibrac´ı a celkovˇe kultivovanˇejˇs´ı chod. • Kroutic´ı moment je line´alnˇe z´avisl´ y na proudu. Motory MAXON maj´ı napˇr. samonosn´a vinut´ı bez ocelov´ ych koster. Minimalizuj´ı se t´ım nelinearity jinak zp˚ usoben´e p´olov´ ymi n´astavci, z´aroveˇ n maj´ı vinut´ı malou indukˇcnost. • Velk´ y rozbˇehov´ y moment. • Velk´a u ´ˇcinnost. To jsou d˚ uvody, proˇc m˚ uˇzeme vidˇet bezkart´aˇcov´e motory nejen na kritick´ ych m´ıstech
´ COV ˇ ´ MOTORY KAPITOLA 2. BEZKARTA E
5
v pr˚ umyslu, leteck´e a kosmick´e technice, nemocniˇcn´ıch aplikac´ıch apod.
2.1
Rozbor funkce
Funkci pro jednoduchost vysvˇetl´ıme na 3-f´azov´em bezkart´aˇcov´em motoru s 2-p´olov´ ym statorem. Sch´ema vnitˇrn´ıho uspoˇra´d´an´ı m˚ uˇzeme vidˇet na obr´azku 2.2. Proud vinut´ımi, respektive napˇet´ı na nich lze vyj´adˇrit jako vektor sloˇzen´ y z d´ılˇc´ıch vektor˚ u pˇr´ısluˇsn´ ych dan´ ym c´ıvk´am s nimiˇz sd´ılej´ı fyzickou orientaci. Na Obr´azku 2.3 jsou t´ımto zp˚ usobem zn´azornˇeny moˇzn´e pomˇery v motoru za ust´alen´eho stavu odpov´ıdac´ıho n´aˇcrtku 2.2. Vznik toˇciv´eho momentu lze popsat na z´akladˇe Amp´erova z´akonu magnetick´e s´ıly jako s´ılu p˚ usob´ıc´ı na vodiˇc prot´ekan´ y proudem v magnetick´em poli: M = kM · i · sin ϕi
(2.1)
Kde ϕi je f´azov´ y posuv mezi vektorem magnetick´a indukce B rotoru (kter´ y symbolizuje pˇredevˇs´ım jeho natoˇcen´ı) a vektorem proudu. Konstanta toˇciv´eho momentu kM (NmA−1 ) charakterizuje konstrukci motoru z elektromechanick´eho hlediska jako toˇciv´ y moment, jeˇz lze vyvolat jednotkou proudu. (Okamˇzit´ y toˇciv´ y moment v pr˚ ubˇehu jedn´e ot´aˇcky nemus´ı vˇzdy pˇresnˇe odpov´ıdat uveden´emu vztahu. Pˇr´ıˇcinou je deformace mg. pole rotoru p´olov´ ymi n´astavci statoru. Nˇekteˇr´ı v´ yrobci se ale snaˇz´ı ide´aln´ıho stavu dos´ahnout a daˇr´ı se jim to napˇr. pouˇzit´ım jiˇz zm´ınˇen´eho samonosn´eho vinut´ı, kter´e ˇz´adn´e p´olov´e n´astavce nem´a.) Pro n´as je v tuto chv´ıli d˚ uleˇzit´e, ˇze nejvˇetˇs´ıho toˇciv´eho momentu za dan´eho proudu dos´ahneme, pokud je vektor proudu otoˇcen´ y o 90◦ proti mg. poli rotoru. Jak z´avis´ı proud na budic´ım napˇet´ı m˚ uˇzeme vypoˇc´ıtat ze zjednoduˇsen´eho modelu 1
2' 1
1
2'
3'
S 3
3' 1' 2
1' (a) Prostorov´e uspoˇr´ ad´ an´ı
3
2'
3 2
3' 1'
2
(b) Zapojen´ı vinut´ı do hvˇezdy a troj´ uheln´ıku
Obr´ azek 2.2: Sch´ematick´e zn´ azornˇen´ı konstrukce 3-f´azov´eho bezkart´aˇcov´eho motoru s dvoup´olov´ ym rotorem.
´ COV ˇ ´ MOTORY KAPITOLA 2. BEZKARTA E
6
motoru tvoˇren´eho ide´aln´ım odporem a indukˇcnost´ı spolu s ide´aln´ım motorem, kter´ y pˇredstavuje zpˇetnˇe indukovan´e napˇet´ı. u + ui = Ri + Li0
(2.2)
Napˇet´ı indukovan´e v motoru ui odpov´ıd´a derivaci magnetick´eho toku vinut´ım B. Jestliˇze orientace vektoru magnetick´e indukce odpov´ıd´a vektoru ejωt , tak m˚ uˇzeme ps´at: dφ = −kM (ejωt )0 = −jωkM ejωt (2.3) dt Dosazen´ım do napˇet’ov´e rovnice (2.2) a zaps´an´ım vektor˚ u v exponenci´aln´ım tvaru ui = −
vych´az´ı:
uej(ωt+ϕu ) − jωkM ejωt = Riej(ωt+ϕi ) + L(iej(ωt+ϕi ) )0
(2.4a)
ur ejωt − jωkM ejωt = Rir ejωt + L(ir ejωt )0
(2.4b)
ur ejωt − jωkM ejωt = Rir ejωt + jωLir ejωt + Lir 0 ejωt
(2.4c)
ur − jωkM = Rir + jωLir + Lir 0
(2.4d)
V posledn´ı rovnici (2.4d) jiˇz je vztah, kter´ y popisuje dynamickou z´avislost proudu, napˇet´ı a ot´aˇcek, pˇriˇcemˇz napˇet´ı a proud jsou vyj´adˇreny jako vektory ur , ir relativn´ı k vektoru ejωt , kter´ y m´a shodnou orientaci jako B. Ust´alen´ y stav je potom pops´an rovnic´ı (2.5) jej´ıˇz grafickou interpretaci m˚ uˇzeme vidˇet na diagramu 2.3. ur − jωkM − Rir − jωLir = 0
(2.5)
Vid´ıme, ˇze v obecn´em pˇr´ıpadˇe nem´a vektor proudu s vektorem napˇet´ı stejnou orientaci, coˇz je zp˚ usobeno indukˇcnost´ı motoru. Pokud bychom stator budili napˇet´ım kolm´ ym k B, jak ukazuje diagram 2.3(a), tak pro f´azov´ y posuv proudu plat´ı: R (2.6) ωL Zkusme se pod´ıvat na konkr´etn´ı ˇc´ısla pro motor z nab´ıdky Maxon s nomin´aln´ımi ϕi = arctan
parametry: 40 W, 12 V, 5, 37 A a 27000 ot.min−1 , dvoup´olov´ y rotor. Katalog d´ale prozrazuje, ˇze L = 0, 0158 mH, R = 0, 204 Ω, kM = 0, 00375 NmA−1 a J = 239 · 10−9 kgm2 . Pro pˇr´ıpad buzen´ı kolm´ ym vektorem napˇet´ım bude za nomin´aln´ıch ot´aˇcek f´azov´ y posuv proudu n´asleduj´ıc´ı:
´ COV ˇ ´ MOTORY KAPITOLA 2. BEZKARTA E
ϕi = arctan
7
0, 204 = 77, 6◦ 27000/60 · 2π · 0, 0158 · 10−3
(2.7)
To znamen´a, ˇze vektor proudu je oproti ide´aln´ımu pˇr´ıpadu posunut o −12.4◦ . Coˇz m˚ uˇzeme interpretovat tak, ˇze se kroutic´ı moment sn´ıˇz´ı na 97.7% (sin 77.6◦ = 0, 977). To ale nen´ı nikterak dramatick´e ˇc´ıslo. D˚ uleˇzit´e je si uvˇedomit, ˇze nejvˇetˇs´ı u ´bytek napˇet´ı v obvodu tvoˇr´ı indukovan´e napˇet´ı. (A to je dobˇre, protoˇze to poukazuje na dobr´e vlastnosti motoru.) V naˇsem pˇr´ıpadˇe tvoˇr´ı cel´ ych kM ω = 10, 6 V. (Z tohoto hlediska je diagram 2.3 ponˇekud zav´adˇej´ıc´ı.) Nem´enˇe d˚ uleˇzit´e je, ˇze samozˇrejmˇe p˚ usob´ı proti budic´ımu napˇet´ı, ale pˇritom nemˇen´ı svou orientaci, st´ale je kolm´e k B. Probl´em tedy m˚ uˇze nastat, pokud budic´ı napˇet´ı kolm´e nen´ı. V takov´em pˇr´ıpadˇe je jeho re´aln´a sloˇzka ur (podle diagramu 2.3) kompenzov´ana pouze napˇet’ov´ ym u ´bytkem na RL prvc´ıch a v d˚ usledku m˚ uˇze velmi dramaticky zv´ yˇsit nechtˇenou re´alnou sloˇzku prot´ekaj´ıc´ıho proud, sn´ıˇzit u ´ˇcinnost atd. Tento jev m˚ uˇzeme pro n´aˇs pˇr´ıkladov´ y motor vidˇet na grafech 2.4. Vhodn´ ym zv´ yˇsen´ım f´azov´eho posuvu budic´ıho napˇet´ı (zvˇetˇsen´ım pˇredstihu) m˚ uˇzeme samozˇrejmˇe naopak u ´bytek na RL prvc´ıch minimalizovat a dos´ahnout kolm´eho vektoru proudu. (I u nˇekter´ ych kart´aˇcov´ y motor˚ u je moˇzn´e mechanicky seˇr´ıdit pˇredstih komut´atoru na optim´aln´ı v´ ysledek.) Ale to si vyˇzaduje pomˇernˇe pˇresn´a mˇeˇren´ı v konkr´etn´ı aplikaci. Bez nich je jistˇejˇs´ı udrˇzovat kolm´ y pouze vektor napˇet´ı. V uk´azkov´em pˇr´ıpadu by napˇr. staˇcil dodateˇcn´ y posun o pouh´ ych 0, 6◦ (viz. grafy 2.4). Im
Im ur
ur
ir
ir ϕi −Rir
−jωLir
ω
ω B
B Re
−jωkM (a) Buzen´ı proudem kolm´ ym k vektoru mg.
−Rir
−jωLir −jωkM
(b) Buzen´ı obecn´ ym proudem
indukce Obr´ azek 2.3: F´ azov´e diagramy proud˚ u a napˇet´ı v motoru za ust´alen´eho stavu.
Re
´ COV ˇ ´ MOTORY KAPITOLA 2. BEZKARTA E
2.2
8
Metody ˇ r´ızen´ı
V n´asleduj´ıc´ıch odstavc´ıch jsou uvedeny bˇeˇzn´e zp˚ usoby ˇr´ızen´ı komutace bezkart´aˇcov´ ych motor˚ u.
2.2.1
Blokov´ a komutace
Blokov´a komutace je pravdˇepodobnˇe nejjednoduˇsˇs´ı moˇzn´a realizace elektronick´e komutace v˚ ubec. Nedˇel´a nic jin´eho, neˇz ˇze zcela kop´ıruje funkci klasick´eho komut´atoru. Jedn´a se tak de facto o emulaci obyˇcejn´eho stejnosmˇern´eho motoru. K sn´ım´an´ı polohy rotoru slouˇz´ı v tomto reˇzimu Hallovy senzory. Jak mohou vypadat pr˚ ubˇehy vstup˚ u a v´ ystup˚ u vid´ıme na obr´azku 2.5, kter´ y koresponduje s obr´azkem 2.2. Jeden komutaˇcn´ı cyklus je rozdˇelen na 6 blok˚ u. V kaˇzd´em bloku je vˇzdy jedna f´aze sepnuta proti zemi, jedna f´aze je sepnuta proti nap´ajec´ımu napˇet´ı a zb´ yvaj´ıc´ı f´aze nen´ı sepnuta proti niˇcemu – jej´ı pˇr´ıpadn´ y proud teˇce pˇres ochrann´e diody a kles´a k nule, stejnˇe jako kdyˇz uhl´ıky mechanick´eho komut´atoru pˇremost´ı jeho sousedn´ı lamely. Jedna z aktivn´ıch f´az´ı (myˇsleno f´aze sepnut´a proti zemi nebo nap´ajec´ımu napˇet´ı) je v dan´em komutaˇcn´ım bloku nav´ıc m´ısto trval´eho sepnut´ı obvykle buzena PWM sign´alem, ˇc´ımˇz je motor regulov´an. Mezi pˇredn´ı v´ yhody toho ˇreˇsen´ı patˇr´ı jeho jednoduchost, ˇr´ıdic´ı obvod nen´ı nutn´e nikterak inicializovat, po zapnut´ı m˚ uˇze okamˇzitˇe plnohodnotnˇe pracovat, a to v cel´em rozsahu moˇzn´ ych ot´aˇcek. Nev´ yhodou je nedokonalost komutace. Protoˇze je komutaˇcn´ıch blok˚ u 6, je napˇet´ı udrˇzov´ano v pˇredstihu skokovˇe v rozmez´ı 90 ± 30◦ (za ide´aln´ıho stavu). Nav´ıc poloha Hallov´ ych senzor˚ u samozˇrejmˇe nen´ı naprosto pˇresn´a a jejich logika pracuje s hysterez´ı kv˚ uli potlaˇcen´ı ˇsumu, jejich v´ ystup je tedy m´ırnˇe opoˇzdˇen´ y. Proto ve v´ ysledku 180
100
8 6 4 2 80
85 90 95 Fáze napětí (°)
100
90
135 Účinnost (%)
Fáze proudu (°)
Velikost proudu (A)
10
90 45 0 80
80 70 60
85 90 95 Fáze napětí (°)
100
50 80
85 90 95 Fáze napětí (°)
100
Obr´ azek 2.4: Z´ avislosti proudu a u ´ˇcinnosti (bez zapoˇc´ıt´an´ı mechanick´ ych ztr´at) na f´azov´em posuvu budic´ıho napˇet´ı pˇri pln´ ych ot´ aˇck´ ach a poloviˇcn´ım toˇciv´em momentu vzhledem k nomin´aln´ım hodnot´ am.
´ COV ˇ ´ MOTORY KAPITOLA 2. BEZKARTA E
9
kles´a u ´ˇcinnost pohonu, toˇciv´ y moment je zvlnˇen´ y (ud´av´a se 14 %), vznikaj´ı vibrace atd.
2.2.2
Bezsenzorov´ a komutace
V principu se tak´e jedn´a o komutaci po bloc´ıch jako v pˇredchoz´ım pˇr´ıpadˇe, ale liˇs´ı se ve zp˚ usobu urˇcen´ı polohy rotoru. Bezsenzorovost´ı je v tomto v´ yznamu myˇsleno, ˇze motor s´am o sobˇe ˇza´dn´ y senzor neobsahuje. Avˇsak ˇr´ıdic´ı jednotka mus´ı mˇeˇrit napˇet´ı alespoˇ n na jednom vinut´ı. V komutaˇcn´ım bloku, kde toto vinut´ı nen´ı sepnuto, se sleduje okamˇzik, kdy v nˇem indukovan´e napˇet´ı projde nulou. Tato ud´alost znaˇc´ı, ˇze rotor byl pr´avˇe orientov´an shodnˇe s t´ımto vinut´ım. ˇ ızen´ı t´ımto zp˚ R´ usobem je komplikovanˇejˇs´ı. Motor mus´ım m´ıt urˇcit´e minim´aln´ı ot´aˇcky, aby bylo moˇzn´e spolehlivˇe mˇeˇrit pr˚ uchody indukovan´eho napˇet´ı nulou a t´ım p´adem i spolehlivˇe komutovat. Motor tedy za n´ızk´ ych ot´aˇcek stˇeˇz´ı pracuje a jeho rozbˇeh je probl´emov´ y. Rozhodnˇe tedy nen´ı vhodn´ y do polohovac´ıch a jin´ ych hodnotˇe dynamick´ ych aplikac´ı. Uplatnˇen´ı najde pˇredevˇs´ım tam, kde motor z nˇejak´eho d˚ uvodu Hallovy senzory nem´a, nebo je m´ıt ani nem˚ uˇze. Komutační fáze Natočení rotoru Hall senzor 1 Hall senzor 2 Hall senzor 3
Obr´ azek 2.5: Uk´ azka pr˚ ubˇeh˚ u sign´ al˚ u z Hallov´ ych senzor˚ u a symbolick´e zn´azornˇen´ı napˇet´ı na c´ıvk´ ach a ´ jednotliv´ ych f´ az´ıch. Uroveˇ n mezi + a − znaˇc´ı rozepnut´ı sp´ıc´ıch prvk˚ u.
´ COV ˇ ´ MOTORY KAPITOLA 2. BEZKARTA E
2.2.3
10
Komutace sinusov´ ym sign´ alem
Pˇri tomto zp˚ usobu komutace je napˇet´ı rozloˇzeno na vˇsechny f´aze tak, ˇze velikost celkov´eho vektoru napˇet´ı na motoru se nemˇen´ı (pokud to sami nepoˇzadujeme) a pˇredstih je konstantn´ı, zpravidla 90◦ plus pˇr´ıpadn´a korekce indukˇcnosti. Budic´ı napˇet´ı v ust´alen´em stavu maj´ı tvar sinusovek se shodn´ ymi amplitudami a stejn´ ymi f´azov´ ymi rozestupy – stejnˇe jako napˇr. 3-f´azov´e napˇet´ı v rozvodn´e s´ıti. Takto m˚ uˇzeme teoreticky optim´alnˇe vyuˇz´ıt moˇznosti motoru. Nutnost´ı je v tomto pˇr´ıpadˇe samozˇrejmˇe ponˇekud pˇresnˇejˇs´ı mˇeˇren´ı polohy rotoru neˇz v pˇr´ıpadˇe blokov´e komutace. V praxi je f´aze rotoru kvantov´ana napˇr. na 1000 hodnot za komutaˇcn´ı ot´aˇcku, coˇz je pomˇernˇe dostaˇcuj´ıc´ı. Pˇri pouˇzit´ı napˇr. 10-bitov´ ych PWM gener´ator˚ u coby budiˇc˚ u jsou budic´ı napˇet´ı kvantov´ana na 1024 u ´rovn´ı – tak´e dostaˇcuj´ıc´ı. Probl´em by mohl nastat s ˇcasov´ ym kvantov´an´ım. Bˇeˇzn´a je frekvence PWM sign´alu okolo 20 kHz. Pokud se vr´at´ıme k naˇsemu uk´azkov´emu motoru, tak za nomin´aln´ıch ot´aˇcek 27000 ot.min−1 vych´az´ı necel´ ych 49 komutaˇcn´ıch cykl˚ u na jednu komutaˇcn´ı periodu motoru, coˇz uˇz nen´ı tolik, ale pro funkci st´ale staˇc´ı. Situace ve skuteˇcnosti tedy nen´ı u ´plnˇe ide´aln´ı, ale velmi dobˇre se j´ı bl´ıˇz´ıme. T´ımto zp˚ usobem vyuˇzijeme vˇetˇsinu moˇznost´ı, kter´e bezkomut´atorov´e motory nab´ızej´ı, jako velk´ y rozbˇehov´ y moment, hladk´ y chod, velkou u ´ˇcinnost. Hlavn´ı nev´ yhodou je sloˇzitˇejˇs´ı (a draˇzˇs´ı) ˇr´ıdic´ı elektronika a nutnost pˇresn´eho sn´ım´an´ı polohy rotoru. Bˇeˇznˇe pouˇz´ıvan´ y IRC senzor je nav´ıc relativn´ı senzor, takˇze na zaˇca´tku je potˇreba ho spr´avnˇe zarovnat napˇr. podle zn´am´e polohy indexn´ı znaˇcky. Do t´e doby se vyuˇz´ıv´a blokov´a komutace. M´enˇe ˇcast´e ˇreˇsen´ı je pouˇzit´ı absolutn´ıho senzoru (napˇr. optick´eho, nebo resolveru), kter´e t´ımto probl´emem netrp´ı. T´ım se ale dost´av´ame do vyˇsˇs´ıch a znaˇcnˇe specializovan´ ych kategori´ı produkt˚ u.
2.2.4
Modifikovan´ a sinusovka
Jedn´a se o zp˚ usob realizace napˇet’ov´eho buzen´ı motoru, konkr´etnˇe buzen´ı sinusov´ ymi pr˚ ubˇehy, ale uveden´ y postup je pouˇziteln´ y obecnˇe. Pointa je v tom, ˇze poˇzadovan´e napˇet´ı na jednotliv´ ych f´az´ıch je nutno ch´apat jako napˇet´ı oproti stˇredu vinut´ı, tj. jako napˇet´ı na dan´ ych c´ıvk´ach. Stˇred vinut´ı pˇritom nemus´ı m´ıt nulov´ y, ani konstantn´ı potenci´al. Proto je moˇzn´e f´azi (pˇr´ıp. f´aze) s minim´aln´ım poˇzadovan´ ym napˇet´ım sepnout proti zemi u ´plnˇe a zbyl´e f´aze budit o to menˇs´ım napˇet´ım – vˇsechny napˇet´ı patˇriˇcnˇe posunout. Situaci zn´azorˇ nuj´ı grafy 2.6. Pˇrestoˇze na vinut´ıch jsou st´ale sinusov´a napˇet´ı, tak napˇet´ı na f´az´ıch pˇripom´ınaj´ı sinus jen velmi vzd´alenˇe – mluv´ıme o tzv. modifikovan´e sinusovce. Poˇcet sepnut´ı vˇsech tranzistor˚ u se tak o tˇretinu sn´ıˇz´ı a t´ım o necelou tˇretinu klesne
´ COV ˇ ´ MOTORY KAPITOLA 2. BEZKARTA E
2
11
2.5 Fáze 1 Fáze 2 Fáze 3 Minimum
1.5
Fáze 1 Fáze 2 Fáze 3
2
1 Úroveň (-)
Úroveň (-)
1.5 0.5 0
0.5
−0.5 −1
1
0
90
180 Komutační fáze (°)
270
360
0
0
(a) Obvykl´e 3-f´ azov´e napˇet´ı
90
180 Komutační fáze (°)
270
360
(b) Modifikovan´e sinusovky
Obr´ azek 2.6: N´ azorn´ a uk´ azka vzniku tzv. modifikovan´e sinusovky odeˇcten´ım minima.
i ztr´atov´ y v´ ykon na nich – k nejvˇetˇs´ım ztr´at´am u modern´ıch, polem ˇr´ızen´ ych tranzistor˚ u doch´az´ı pr´avˇe pˇri zmˇenˇe jejich stavu. Z´aroveˇ n m˚ uˇzeme dos´ahnout o 16% vˇetˇs´ı amplitudy √ napˇet´ı na vinut´ıch (2 3 = 1.155) bez zv´ yˇsen´ı nap´ajec´ıho napˇet´ı. Tento princip je ˇcasto vyuˇz´ıv´an kdykoliv pracujeme s v´ıcef´azov´ ym stˇr´ıdav´ ym napˇet´ım, napˇr. i ve frekvenˇcn´ıch mˇeniˇc´ıch.
2.2.5
Momentov´ eˇ r´ızen´ı
Pˇri buzen´ı napˇet´ım se vektor proudu nejenˇze opoˇzd’uje, ale nav´ıc je jeho velikost velmi z´avisl´a na ot´aˇck´ach, tedy i velikost toˇciv´eho momentu se s ot´aˇckami znaˇcnˇe mˇen´ı. A nejen s ot´aˇckami, ale napˇr. i s teplotou atd. V mnoh´ ych aplikac´ıch to pˇr´ıliˇs nevad´ı. V robotice je ale moˇznost pˇr´ımo ˇr´ıdit moment akˇcn´ıho ˇclenu velmi v´ yhodn´a. Lze tak upotˇrebit znalost dynamiky robota a manipulovat s n´ım mnohem pˇresnˇeji a citlivˇeji. Nav´ıc je napˇr. moˇzn´e v jednom smˇeru udrˇzovat konstantn´ı souˇradnici a ve smˇeru kolm´em p˚ usobit definovanou silou – nezbytnost nejen pˇri strojov´em obr´abˇen´ı. V praxi m˚ uˇze b´ yt robot vybaven pˇr´ımo senzorem krout´ıc´ıho momentu a ˇr´ıdit tak kroutic´ı moment zpˇetnovazebnˇe pˇres nˇej, pˇresto se st´ale jedn´a o velmi pˇr´ınosn´ y a vyuˇz´ıvan´ y n´astroj. Moˇzn´e ˇreˇsen´ı je naznaˇceno na blokov´em diagramu 2.7. Postup ˇr´ızen´ı je n´asleduj´ıc´ı: Vstupem α je u ´hlov´a poloha motoru napˇr. z kvadraturn´ıho ˇc´ıtaˇce IRC senzoru. N´asleduj´ıc´ı blok s operac´ı modulo naznaˇcuje v´ ypoˇcet komutaˇcn´ı f´aze v intervalu 0 aˇz 2π. Nemus´ı se nutnˇe jednat o u ´plnou implementaci operace modulo, staˇc´ı udrˇzovat offset vstupu oproti poˇzadovan´emu v´ ystupu a oˇsetˇrit pˇr´ıpady pˇreteˇcen´ı a podteˇcen´ı dan´eho intervalu. Funkce fn (α) d´ale rozloˇz´ı pomysln´ y jednotkov´ y vektor s dan´ ym smˇerem do tˇr´ı sloˇzek
´ COV ˇ ´ MOTORY KAPITOLA 2. BEZKARTA E
12
RAM α
mod
fn (α) i1
Iref ω
PID
u1
kM
Obr´ azek 2.7: Blokov´ y diagram moˇzn´eho momentov´eho regul´atoru.
odpov´ıdaj´ıc´ıch tˇrem f´az´ım. K tomu je ˇcasto vyuˇzita pˇredpoˇc´ıtan´a tabulka v pamˇeti. Vyn´asoben´ım tˇechto sloˇzek referenˇcn´ı hodnotou amplitudy proudu Iref (kter´a pˇr´ımo urˇcuje toˇciv´ y moment) z´ısk´ame referenˇcn´ı hodnotu proudu pro kaˇzdou z f´az´ı. N´asleduje klasick´e zapojen´ı PID regul´atoru, kter´e se snaˇz´ı referenˇcn´ı hodnotu udrˇzet. ˇ ıslicov´ V ust´alen´em stavu tedy sleduje sinusov´ y sign´al frekvenc´ı odpov´ıdaj´ıc´ı ot´aˇck´am. C´ y PID regul´ator m´a ale vzhledem k t´eto skuteˇcnosti pomˇernˇe malou ˇs´ıˇrku p´asma, kter´a se negativnˇe projev´ı pˇredevˇs´ım pˇri vyˇsˇs´ıch ot´aˇck´ach. Do ˇretˇezce je proto zaˇrazena pˇr´ım´a vazba z okamˇzit´ ych ot´aˇcek ω, kter´a kompenzuje nejvˇetˇs´ı napˇet’ov´ y u ´bytek na motoru −jωkM (viz. diagram 2.3) a regul´atoru t´ım pom´ah´a. Dalˇs´ı jednoduch´a moˇznost, jak jeˇstˇe v´ıce PID regul´atoru usnadnit pr´aci by bylo zaˇrazen´ı pˇr´ım´e vazby z referenˇcn´ıho proudu, kter´a by ˇc´asteˇcnˇe kompenzovala u ´bytek rovn´ y −Rir , jak je zn´azornˇeno v blokov´em diagramu 2.8. RAM α
mod
fn (α) i1
Iref
ω
PID
u1
R kM
Obr´ azek 2.8: Momentov´ y regul´ator doplnˇen´ y o dalˇs´ı pˇr´ımou vazbu.
Na PID regul´ator tak zb´ yv´a doregulovat nepˇresnosti pˇr´ım´e vazby, vliv indukˇcnosti
´ COV ˇ ´ MOTORY KAPITOLA 2. BEZKARTA E
13
motoru a dalˇs´ı odchylky, se kter´ ymi nen´ı poˇc´ıt´ano. A to uˇz by pro nˇej nemˇel b´ yt probl´em. T´ım sp´ıˇs pˇri menˇs´ıch ot´aˇck´ach, kde se momentov´e ˇr´ızen´ı pravdˇepodobnˇe v´ıce vyuˇzije. Nev´ yhody jsou zˇrejm´e – ˇr´ıdic´ı syst´em je pomˇernˇe sloˇzit´ y, mus´ı b´ yt relativnˇe rychl´ y a mus´ı nˇejak´ ym zp˚ usobem mˇeˇrit proud alespoˇ n ve dvou f´az´ıch (proud tˇret´ı f´az´ı je pˇredurˇcen). V´ yhody jiˇz byly jmenov´any – v mnoh´ ych pˇr´ıpadech se jedn´a o nenahraditeln´ y n´astroj.
Kapitola 3 FPGA Xilinx Programovateln´a hradlov´a pole, oznaˇcovan´a jako FPGA (Field Programmable Gate Array), byla na trh uvedena firmou Xilinx v polovinˇe 80. let. Jsou to obvody z tˇr´ıdy tzv. rekonfigurovateln´e logiky (hardwaru) – v jednom pouzdˇre je mnoho r˚ uzn´ ym logick´ ych blok˚ u, jejichˇz funkce m˚ uˇze b´ yt v omezen´e m´ıˇre konfigurov´ana stejnˇe jako jejich vz´ajemn´e propojen´ı. Prim´arn´ım c´ılem architektury FPGA jsou aplikace vyˇzaduj´ıc´ı rozs´ahl´e a velmi rychl´e logick´e obvody, kter´e obvykle prov´ad´ı v´ ypoˇcetnˇe n´aroˇcn´e algoritmy a s v´ yhodou vyuˇz´ıvaj´ı paraleln´ıho zpracov´an´ı dat. Mezi nˇe patˇr´ı pˇredevˇs´ım oblast vysokorychlostn´ıch komunikac´ı, s´ıt’ov´ ych zaˇr´ızen´ı, ˇsifrov´an´ı, zpracov´an´ı obraz˚ u a jin´ ych sign´al˚ u, vˇedeck´e aplikace a dalˇs´ı. Na trhu jsou dnes ale i cenovˇe dostupn´e varianty obvod˚ u urˇcen´e pro m´enˇe n´aroˇcn´e aplikace v automobilov´em pr˚ umyslu ˇci spotˇrebn´ı elektronice, jeˇz vyhovuj´ı i naˇsemu z´amˇeru. [8], [18]
3.1
Struktura architektury
V dalˇs´ım textu je podrobnˇeji popsan´a architektura obvod˚ u FPGA Xilinx. Obvod se skl´adaj´ı z propojovac´ı s´ıtˇe, logick´ ych (CLB) a vstupnˇe v´ ystupn´ıch blok˚ u, pˇr´ıpadnˇe dalˇs´ıch specializovan´ ych prvk˚ u RAM, n´asobiˇcek atd. Architektury FPGA obvod˚ u jin´ ych v´ yrobc˚ u jsou, co se t´ yˇce obecn´eho rozdˇelen´ı, podobn´e, ale pouˇzit´a terminologie a granularita jednotliv´ ych ˇca´st´ı a komponent se vˇetˇsinou liˇs´ı.
3.1.1
Konfigurovateln´ e logick´ e bloky – CLB
Nejvˇetˇs´ı ˇc´ast prostoru hradlov´eho pole vyplˇ nuj´ı konfigurovateln´e logick´e bloky – CLB (Configurable Logic Block), kter´e jsou z´akladem funkce hradlov´ ych pol´ı. Pr´avˇe jejich kon14
KAPITOLA 3. FPGA XILINX
15
IOBs
IOBs
DCM
Multiplier
Block RAM
DCM
IOBs
Block RAM / Multiplier
IOBs
CLBs DCM
CLB
IOBs
(a) Celkov´ y pohled
(b) Detail prav´eho horn´ıho rohu
Obr´ azek 3.1: Vnitˇrn´ı uspoˇr´ad´an´ı FPGA z tˇr´ıdy Spartan-3A
figurov´an´ım a vz´ajemn´ ym propojov´an´ım jsou vytv´aˇreny kombinaˇcn´ı a sekvenˇcn´ı obvody podle naˇseho n´avrhu. Detail jedn´e CLB je na obr´azku 3.2. Vid´ıme, ˇze se d´ale dˇel´ı na 4 Slice (volnˇe pˇreloˇzeno jako segment“), pˇriˇcemˇz se rozliˇsuj´ı lev´e a prav´e (funkˇcnost lev´ ych je ” rozˇs´ıˇrena). Zjednoduˇsen´e sch´ema obou typ˚ u je potom na obr´azku 3.3. Na t´eto u ´rovni se vyskytuj´ı nejmenˇs´ı konfigurovateln´e prvky. Jejich z´akladn´ı funkce budou vysvˇetleny n´asledovnˇe. Left-Hand SLICEM (Logic or Distributed RAM or Shift Register) CLB
COUT SLICE X1Y1
COUT
Switch Matrix
Right-Hand SLICEL (Logic Only)
SLICE X0Y1
SLICE X1Y0 CIN
Interconnect to Neighbors
SHIFTOUT SHIFTIN SLICE X0Y0
CIN
DS099-2_05_082104
Obr´ azek 3.2: N´ ahled na jeden konfigurovateln´ y logick´ y blok – CLB
T´emˇeˇr nejd˚ uleˇzitˇejˇs´ım prvkem je LUT4 (Look-Up Table 4-input), doslovnˇe pˇreloˇzeno jako 4-vstupov´a vyhled´avac´ı tabulka“. Umoˇzn ˇuje realizaci libovoln´e kombinaˇcn´ı logick´e ” funkce ˇctyˇr promˇenn´ ych (u souˇca´stek z vyˇsˇs´ı ˇrady nejsou v´ yjimkou v´ıcevstupov´e LUT). V principu se jedn´a o asynchronn´ı pamˇet’ pouze pro ˇcten´ı s velikost´ı 16 bit˚ u. Zde se liˇs´ı lev´ y a prav´ y typ Slice: v lev´em typu lze do t´eto pamˇeti i synchronnˇe zapisovat (pak se oznaˇcuje jako RAM16), nebo je moˇzn´e jej´ı obsah synchronnˇe posouvat jako v posuvn´em registru, nav´ıc ale z˚ ust´av´a moˇznost adresace jednotliv´ ych bit˚ u (pak se oznaˇcuje jako SRL16).
KAPITOLA 3. FPGA XILINX
SRL16 RAM16 LUT4 (G)
16
FiMUX Carry
FiMUX Register
LUT4 (G)
F5MUX SRL16 RAM16 LUT4 (F)
Carry
Carry
Register
F5MUX Register
LUT4 (F)
Arithmetic Logic
SLICEM
Carry
Register
Arithmetic Logic
SLICEL
DS312-2_13_020905
Obr´ azek 3.3: Schematick´e zn´ azornˇen´ı nejmenˇs´ıch konfigurovateln´ ych souˇc´ast´ı uvnitˇr Slice. Vpravo je obyˇcejn´ y typ, vlevo typ rozˇs´ıˇren´ y.
Dalˇs´ı kl´ıˇcovou souˇca´st´ı je klopn´ y obvod (Register). M˚ uˇze b´ yt ˇr´ızen bud’ hranou (klopn´ y obvod typu D), nebo u ´rovn´ı. Nav´ıc je vybaven vstupem povoluj´ıc´ı ˇr´ıdic´ı sign´al a rovnˇeˇz disponuje vstupy pro nahozen´ı/shozen´ı v´ ystupu, kter´e mohou b´ yt volitelnˇe synchronn´ı ˇci asynchronn´ı. Z diagramu je patrn´e, ˇze na kaˇzd´ y blok LUT pˇripad´a jeden klopn´ y obvod. Nen´ı tedy potˇreba s nimi pˇrehnanˇe ˇsetˇrit. To umoˇzn ˇuje vyhnout se mnoha´ urovˇ nov´ ym logick´ ym ˇretˇezc˚ um, kter´e by sv´ ym velk´ ym zpoˇzdˇen´ım omezovaly zbytek syst´em. M´ısto nich se pouˇz´ıv´a proudov´e zpracov´an´ı (pipeline) pracuj´ıc´ı na vyˇsˇs´ı taktovac´ı frekvenci a s vyˇsˇs´ı celkov´e propustnosti. Tyto dva bloky teoreticky postaˇcuj´ı k implementaci libovoln´eho kombinaˇcn´ıho i sekvenˇcn´ıho obvodu. Aby ale jejich implementace a vyuˇzit´ı prostoru FPGA byly efektivnˇejˇs´ı, obsahuj´ı Slice dalˇs´ı prvky. Pˇredevˇs´ım obvody pro rychl´ y pˇrenos pˇr´ıznaku pˇreteˇcen´ı (Carry), kter´e spojuj´ı vertik´alnˇe soused´ıc´ı Slice a umoˇzn ˇuj´ı obecnˇe zefektivnˇen´ı realizace nejen aritmetick´ ych operac´ı. D´ale se na nˇekolika u ´rovn´ıch vyskytuj´ı dedikovan´e multiplexery, kter´e pˇredevˇs´ım umoˇzn ˇuj´ı tvorbu rychlejˇs´ıch a prostorovˇe u ´spornˇejˇs´ıch multiplexer˚ u neˇz s pouˇzit´ım samostatn´ ych LUT. 1. Multiplexer 1 z 4 – 1 Slice (2 LUT) 2. Multiplexer 1 z 16 – 1 CLB (8 LUT) 3. Multiplexer 1 z 32 – 2 CLB (16 LUT) Jak vid´ıme, tak aˇz do ˇs´ıˇrky 32 bit˚ u se v multiplexeru neˇrad´ı LUT kask´adnˇe a vych´az´ı 1 LUT na 2 multiplexovan´e vstupy, coˇz je dobr´e. I tak ale zab´ıraj´ı pomˇernˇe dost zdroj˚ u a je Lepˇs´ı se velk´ ym multiplexer˚ um pˇri n´avrhu vyh´ ybat.
KAPITOLA 3. FPGA XILINX
3.1.2
17
Ostatn´ı bloky
Velmi d˚ uleˇzitou souˇca´st´ı jsou IOB (Input/Output Block), tedy vstupnˇe/v´ ystupn´ı bloky vyveden´e na piny pouzdra. Jsou plnˇe konfigurovateln´e, podporuj´ı mnoho standard˚ u (5 V logika jiˇz mezi nˇe bˇeˇznˇe nepatˇr´ı), mezi nimi i diferenci´aln´ı pˇrenos sign´al˚ u, maj´ı integrovan´e zakonˇcovac´ı rezistory (samozˇrejmˇe tak´e konfigurovateln´e) a rovnˇeˇz jimi lze jemnˇe korigovat ˇcasov´a zpoˇzdˇen´ı sign´al˚ u. Jelikoˇz v aplikac´ıch s hradlov´ ymi poli je vˇetˇsinou vyˇzadov´ano pomˇernˇe hodnˇe pamˇeti a mnoho operac´ı n´asoben´ı, coˇz jsou komponenty, kter´e by implementovan´e z LUT zabraly velkou ˇc´ast zdroj˚ u, nehledˇe na v´ yslednou rychlost, m˚ uˇzeme je v diagramu vidˇet jako zvl´aˇstn´ı souˇc´asti. U ˇrady Spartan-3 jsou dedikovan´e n´asobiˇcky v poˇctu jednotek aˇz des´ıtek. Jedn´a se o asynchronn´ı n´asobiˇcky s ˇs´ıˇrkou vstup˚ u 18 bit˚ u a v´ ystupem ˇs´ıˇrky 48 bit˚ u. V nˇekter´ ych pˇr´ıpadech mohou b´ yt pˇr´ımo vybaveny sˇc´ıtaˇckou, pˇr´ıpadnˇe dalˇs´ımi obvody pro snadn´a zpracov´an´ı sign´al˚ u. Pamˇetem bude vˇenov´ana cel´e ˇca´st, prozat´ım zmiˇ nme, ˇze celkov´a velikost pamˇet´ı se pohybuje od des´ıtek po stovky kB. Posledn´ı, co m˚ uˇzeme vidˇet jsou bloky DCM (Digital Clock Manager) slouˇz´ıc´ı pro pr´aci s hodinov´ ymi sign´aly, jejich n´asoben´ı, dˇelen´ı, f´azov´ y posuv apod. Vyskytuj´ı se v poˇctu jednotek.
3.1.3
Propojovac´ı s´ıtˇ e
Aˇz propojovac´ı s´ıtˇe ˇcin´ı hradlov´a pole t´ım, ˇc´ım jsou. Vhodnˇe um´ıstit a pospojovat CLB je pro n´avrhov´ y syst´em n´aroˇcn´ y optimalizaˇcn´ı u ´kol. Na jeho v´ ysledku samozˇrejmˇe z´aleˇz´ı koneˇcn´a rychlost obvodu. Nevhodn´ ym n´avrhem/popisem logick´eho obvodu, byt’ form´alnˇe spr´avn´ ym, tedy m˚ uˇzeme v´ ysledek pomˇernˇe dosti znehodnotit. Kromˇe propojovac´ıch s´ıt´ı pro obecn´e sign´aly, s r˚ uznou topologi´ı, dosahem i zpoˇzdˇen´ım, obsahuj´ı hradlov´a pole tak´e propojovac´ı s´ıtˇe glob´aln´ıho charakteru. Pˇredevˇs´ım se jedn´a o s´ıtˇe hodinov´eho sign´alu. Jejich poˇcet je velmi omezen´ y a kladou se na nˇe znaˇcn´e poˇzadavky – mus´ı rozv´est hodinov´ y sign´al ke vˇsem hradl˚ um s maxim´alnˇe stejn´ ym zpoˇzdˇen´ım, aby se pˇredeˇslo logick´ ym hazard˚ um. Pˇrestoˇze klopn´e obvody umoˇzn ˇuj´ı tak´e vstup hodinov´eho sign´alu z propojovac´ı s´ıtˇe pro obecn´e sign´aly, nen´ı dobr´e tuto moˇznost vyuˇz´ıvat. V n´avrhu by obecnˇe nemˇelo b´ yt v´ıce hodinov´ ych sign´al˚ u, neˇz je moˇzn´e propojit glob´aln´ı s´ıt´ı.
KAPITOLA 3. FPGA XILINX
3.2
18
V´ yvojov´ e n´ astroje
Z´akladem pro popis logick´ ych obvod˚ u jsou jazyky oznaˇcovan´e jako HDL (Hardware Description Language). K nejzn´amˇejˇs´ım a nejrozˇs´ıˇrenˇejˇs´ım patˇr´ı Verilog a VHDL, ve kter´em byla vyv´ıjena tato pr´ace a kter´emu bude vˇenov´ana samostatn´a ˇca´st. Oba popisuj´ı hardware na relativnˇe n´ızk´e u ´rovni. Existuj´ı ale i n´astroje a jazyky zamˇeˇren´e na vyˇsˇs´ı u ´roveˇ n abstrakce, napˇr. Simulink HDL Coder firmy MathWorks nebo jazyk Handel-C. Xilinx nab´ız´ı integrovan´e v´ yvojov´e prostˇred´ı ISE Design Suite. Z´akladn´ı verze WebPack je dostupn´a zdarma, nepodporuje bohuˇzel vˇsechny souˇca´stky, ale omezen´ı se t´ yk´a pouze vˇetˇs´ıch typ˚ u. Tato pr´ace byla vyv´ıjena na prototypov´e desce s obvodem Virtex-2, kter´ y se uˇz nevyr´ab´ı a nov´e n´astroje ho zpˇetnˇe nepodporuj´ı. Pro v´ yvoj muselo b´ yt proto pouˇzito prostˇred´ı verze 9.2. Poznamenejme, ˇze aktu´aln´ı je nyn´ı verze 13.1 (kvˇeten 2011). N´asleduj´ıc´ı tvrzen´ı uˇz tedy nemus´ı b´ yt aktu´aln´ı. Simul´ator ve verzi 9.2. zˇrejmˇe nepodporuje jazyk VHDL u ´plnˇe, protoˇze nebylo moˇzn´e pˇreloˇzit nˇekter´e testy. Byl proto pouˇzit open source simulaˇcn´ı n´astroj GHDL ve spojen´ı s GTKWave pro zobrazen´ı nasimulovan´ ych pr˚ ubˇeh˚ u. Rovnˇeˇz editaˇcn´ı schopnosti integrovan´eho v´ yvojov´eho prostˇred´ı nikterak nevynikaj´ı. K editaci je moˇzn´e pouˇz´ıt napˇr. editor GNU Emacs jeˇz nab´ız´ı mnoˇzstv´ım n´astroj˚ u, kter´e editaci usnadˇ nuj´ı. S pouˇzit´ım n´astroje GNU Make lze pot´e cel´ y proces v´ yvoje znaˇcnˇe zautomatizovat. (Postup s GNU Make byl pouˇzit i bˇehem t´eto pr´ace. Nutno ale podotknout ˇze vhodnˇejˇs´ım n´astrojem pro u ´ˇcely automatizace v´ yvoje je jazyk tcl.)
3.2.1
Proces syntetizace
N´asleduj´ıc´ı odstavce popisuj´ı syntetizaci hardwaru a posloupnost krok˚ u od zdrojov´ ych k´od˚ u jazyka HDL aˇz po konfiguraˇcn´ı soubor pro konkr´etn´ı souˇca´stku. Podrobnˇejˇs´ı informace lze nal´ezt v [16]. 1. Vˇsechny zdrojov´e soubory VHDL a Verilog se syntetizuj´ı n´astrojem xst. Syntetiz´ator tyto soubory analyzuje a snaˇz´ı se v nich rozpoznat z´apisy stavov´ ych automat˚ u, pamˇet´ı, registr˚ u, multiplexer˚ u, n´asobiˇcek, sˇc´ıtaˇcek a dalˇs´ıch ucelenˇejˇs´ıch, komplikovanˇejˇs´ıch komponent. N´asleduje optimalizace rozpoznan´ ych souˇca´st´ı (samozˇrejmˇe lze urˇcit krit´eria pro optimalizaci, jako jsou rychlost nebo velikost) a jejich pˇrevod do formy z´akladn´ıch primitiv dan´eho obvodu. V´ ystupem je soubor (pˇr´ıp. soubory) ve form´atu *.ngc, kter´ y obsahuje ne jen popis hardwaru (netlist), ale i dalˇs´ı dodateˇcn´e informace a omezen´ı, kter´e byla ve zdrojov´ ych souborech
KAPITOLA 3. FPGA XILINX
19
zaps´ana. V tomto kroku n´as n´astroj upozorn´ı na syntaktick´e chyby a pˇredevˇs´ım pod´a pomˇernˇe vyˇcerp´avaj´ıc´ı zpr´avu o vˇsech jeho kroc´ıch a komponent´ach, kter´e v jednotliv´ ych zdrojov´ ych souborech rozeznal. M˚ uˇzeme si tedy ovˇeˇrit, zda jsme naˇsi myˇslenku v jazyku HDL spr´avnˇe zapsali. Tak´e poskytuje souhrnn´e informace o poˇctech logick´ ych blok˚ u a pˇredbˇeˇzn´ y odhad latenc´ı a maxim´aln´ıch hodinov´ ych frekvenc´ıch. ˇ ast v´ C´ ypisu pro jednu z entity vypad´a napˇr. n´asledovnˇe: Synthesizing Unit <wave_table>. Related source file is "msp_motion/pwm/wave_table.vhd". Found 2048x10-bit single-port RAM <Mram_ram> for signal
. Found 10-bit register for signal . Found 1-bit register for signal <stb_delayed>. Summary: inferred 1 RAM(s). inferred 11 D-type flip-flop(s). Unit <wave_table> synthesized.
2. N´astrojem ngdbuild jsou soubory *.ngc, *.ucf a pˇr´ıp. dalˇs´ı pˇreloˇzeny do jednoho jedin´eho souboru *.ngd (Native Generic Database). Soubor *.ucf (User Constraints File) v pˇrekladu soubor s uˇzivatelsk´ ymi omezen´ımi“ poskytuje n´astroj˚ um in” formace typu: na jak´ y pin vyv´est jak´ y sign´al a v jak´em standardu, informace o ˇcasov´an´ı vstupn´ıch sign´al˚ u (pˇredevˇs´ım hodinov´ ych), do kter´ ych m´ıst se maj´ı namapovat nˇekter´e entity a mnoho dalˇs´ıch. 3. Pˇri mapov´an´ı, ke kter´emu pouˇzijeme n´astroj map, doch´az´ı k m´ırn´ ym u ´prav´am a pˇrevodu na konkr´etn´ı typy blok˚ u (nikoliv konkr´etn´ı m´ısto) v dan´em FPGA. V´ ystupem je *.ncd (Native Circuit Description). 4. N´asleduje krok rozloˇzen´ı a propojen´ı vˇsech souˇc´ast´ı naz´ yvan´ y Place&Route a prov´adˇen´ y n´astrojem par. V´ ystupem je takt´eˇz *.ncd soubor, ale obsahuj´ıc´ı kompletn´ı informace o vˇsech prvc´ıch vˇcetnˇe polohy. 5. Posledn´ım krokem je vytvoˇren´ı tzv. bitfile *.bit n´astrojem bitgen. Jedn´a se o bin´arn´ı soubor s daty urˇcen´ ymi pro pˇr´ımou konfiguraci FPGA pˇres rozhran´ı JTAG, nebo pro nahr´an´ı do konfiguraˇcn´ı pamˇeti, odkud si je m˚ uˇze FPGA po zapnut´ı pˇreˇc´ıst samo.
KAPITOLA 3. FPGA XILINX
3.3
20
Jazyk VHDL
Jazyk VHDL nab´ız´ı pomˇernˇe velk´e moˇznosti, daleko v´ıce, neˇz um´ı souˇcasn´e n´astroje syntetizovat. A pokud m´a b´ yt v´ ysledek nav´ıc efektivn´ı a u ´sporn´ y, je nutn´e se pˇri psan´ı jeˇstˇe v´ıce omezit. Moˇznosti jazyka tedy vyuˇzijeme pˇredevˇs´ım pˇri tvorbˇe test˚ u. Jazyk jako takov´ y zde nebude rozeb´ır´an. Pops´any jsou sp´ıˇse konstrukce, kter´ ym je vhodn´e se vyhnout, a drobn´e tipy, jeˇz je vhodn´e zn´at pˇri seznamov´an´ı se s obvody FPGA. Mnoˇzstv´ı pˇr´ıklad˚ u a dalˇs´ıch uˇziteˇcn´ ych informac´ı, ze kter´ ych bylo ˇcerp´ano, je nejen v literatuˇre [8] a [11], ale tak´e pˇr´ımo v manu´alu syntetizaˇcn´ıho n´astroje [17]. V mnoha technick´ ych zpr´av´ach (zaj´ımav´e a pro zaˇca´tek uˇziteˇcn´e jsou napˇr. [6], [4], [5] a [3]) je tak´e rozebr´ano, jak logick´e obvody implementovat co moˇzn´a nejefektivnˇeji a uˇsetˇrit si zbyteˇcn´e komplikace.
3.3.1
Pouˇ zit´ı resetu
V uˇcebnic´ıch jazyka VHDL jsou ˇcasto k vidˇen´ı uk´azky sekvenˇcn´ıch logick´ ych obvod˚ u s asynchronn´ım resetem (viz. v´ ypis 3.1), nejsp´ıˇse pouze jako uk´azka moˇzn´eho z´apisu. ˇ aˇr ale m˚ Cten´ uˇze lehce doj´ıt k n´azoru, ˇze to je spr´avn´ y postup, podpoˇren´ y myˇslenkou, ˇze se obvody nˇejak inicializovat mus´ı, a vytvoˇrit si tak ˇspatn´e n´avyky. Dalˇs´ım logick´ ym krokem je resety ze vˇsech komponent spojit a vyv´est na pouzdro obvodu. Tento postup je ale dosti ˇspatn´ y hned z nˇekolika d˚ uvod˚ u. V´ ypis 3.1: Nevhodn´ y popis sekvenˇcn´ıho logick´eho obvodu inicializovan´eho asynchronnˇe na hodnotu 1. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
entity f f port ( clk reset d q end f f ;
is : : : :
in in in out
std std std std
logic logic logic logic
; ; ; );
architecture B e h a v i o r a l of f f i s begin process ( c l k , r e s e t ) i s begin i f r e s e t = ’ 1 ’ then q <= ’ 1 ’ ; e l s i f c l k ’ e v e n t and c l k = ’ 1 ’ then q <= d ; end i f ; end process ; end B e h a v i o r a l ;
KAPITOLA 3. FPGA XILINX
21
Pouˇzit´ı asynchronn´ıho resetu by mˇelo nastat pouze v ojedinˇel´ ych pˇr´ıpadech a vˇzdy b´ yt podloˇzeno opr´avnˇen´ ymi d˚ uvody a zv´aˇzen´ım moˇzn´ ych dopad˚ u. Asynchronn´ı sign´al obecnˇe m˚ uˇze pˇrij´ıt v jak´ekoliv ˇca´sti periody hodinov´eho sign´alu a vznik hazardu je proto velmi pravdˇepodobn´ y. Pokud tedy potˇrebujeme reset, tak pouˇz´ıv´ame z´asadnˇe synchronn´ı. Pokud reset pˇrich´az´ı z vnˇejˇsku, tak mus´ıme nav´ıc pˇred jeho pouˇzit´ım zajisti u ´pravu tvaru na kvalitn´ı pulz minim´alnˇe se synchronizovanou sestupnou hranou. V ˇz´adn´em pˇr´ıpadˇe ale nen´ı nutn´e t´ımto zp˚ usobem vytv´aˇret s´ıt’ resetovac´ıho sign´alu, kter´ y by inicializoval vˇsechny entity. (Jedn´a se o velk´e pl´ ytv´ani zdroji, nav´ıc velmi ovlivˇ nuje a zhorˇsuje optimalizaci pˇri implementaci n´avrhu z hlediska ˇcasov´an´ı.) K tomuto u ´ˇcelu je vyhrazena zvl´aˇstn´ı glob´aln´ı resetovac´ı s´ıt’ (GSR - Global Set/Reset). FPGA je po konfiguraci v pˇresnˇe definovan´em stavu, tzn. i vˇsechny pamˇeti a klopn´e obvody jsou patˇriˇcnˇe inicializov´any. Pˇriveden´ım kladn´eho pulzu do s´ıtˇe GSR je znovu inicializov´an stav vˇsech klopn´ ych obvod˚ u, nikoliv pamˇet´ı. Lze tedy dokonce detekovat, ˇze k resetu doˇslo. Avˇsak s´ıt’ GSR je nutn´e budit z vnˇejˇsku obvodu. V n´avrhu je tato s´ıt’ reprezentov´ana portem primitivn´ı entity (u obvod˚ u tˇr´ıdy Virtex-2 to je napˇr. entita STARTUP VIRTEX2). Ve v´ ysledku tedy ˇcasto pouˇzit´ı dodateˇcn´eho resetu nen´ı nutn´e. Rozumn´ y n´avrh ukazuje v´ ypis 3.2. Reset je synchronn´ı, pro pˇr´ıpad, ˇze by snad mohl b´ yt nˇekdy pouˇzit. Pokud pouˇzit nebude, syntetiz´ator by ho mˇel pˇri optimalizaci odstranit. Poˇca´teˇcn´ı stav je definov´an uˇz pˇri deklaraci sign´alu, tzn. registr je inicializov´an na hodnotu ’1’ jeˇstˇe pˇred samotn´ ym spuˇstˇen´ım obvodu. Jako pˇr´ıklad uved’me, ˇze bˇehem n´avrhu t´eto pr´ace bylo t´ımto postupem redukce reset˚ u dosaˇzeno zmenˇsen´ı n´avrhu o 3.2 % LUT (z 2652 na 2566). V´ ypis 3.2: Spr´ avnˇejˇs´ı n´ avrh sekvenˇcn´ıho logick´eho obvodu. Inicializace prob´ıh´a uˇz pˇri konfiguraci FPGA a reset je synchronn´ı 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
entity f f port ( clk reset d q end f f ;
is : : : :
in in in out
std std std std
logic logic logic logic
; ; ; );
architecture B e h a v i o r a l of f f i s s i g n a l q i n n e r : s t d l o g i c := ’ 1 ’ ; begin q <= q i n n e r ; process ( c l k ) i s begin
KAPITOLA 3. FPGA XILINX
17 18 19 20 21 22 23 24 25 26
3.3.2
22
i f c l k ’ e v e n t and c l k = ’ 1 ’ then i f r e s e t = ’ 1 ’ then q i n n e r <= ’ 1 ’ ; else q i n n e r <= d ; end i f ; end i f ; end process ; end B e h a v i o r a l ;
Nedefinovan´ e stavy
Pˇri pr´aci bychom mˇeli m´ıt st´ale na pamˇeti, ˇze jazyk VHDL je syntetizaˇcn´ım n´astrojem interpretov´an doslovnˇe. Tj. co mu explicitnˇe nepˇrik´aˇzeme, tak neprovede. Probl´em nast´av´a, pokud napˇr. nepop´ıˇseme vˇsechny stavy vstup˚ u, kter´e mohou nastat. Pravdˇepodobnˇe n´as nepopsan´e stavy vstup˚ u nezaj´ımaj´ı a n´aˇs k´od je form´alnˇe spr´avnˇe. O tom, ˇze n´as nezaj´ımaj´ı ale mus´ıme informovat i syntetiz´ator. V opaˇcn´em pˇr´ıpadˇe opr´avnˇenˇe pˇredpokl´ad´a, ˇze se pˇri pˇrechodu do nepopsan´eho stavu vstup˚ u nesm´ı st´at nic. Tedy ˇze se po nˇem chce, aby zachoval st´avaj´ıc´ı hodnoty v´ ystup˚ u. V d˚ usledku dojde ke vzniku klopn´eho obvodu ˇr´ızen´eho u ´rovn´ı (Latch), coˇz nen´ı to, co poˇzadujeme. Porovnejme ˇcastou uk´azku ˇreˇsen´ı multiplexeru ve v´ ypisech 3.3 a 3.4. V pˇr´ıpadˇe, ˇze n´as hodnota jak´ehokoli moˇzn´eho sign´alu v jistou chv´ıli nezaj´ım´a, pˇriˇrad´ıme mu u ´roveˇ n ’X’, kter´a reprezentuje nezn´am´ y stav. T´ım poskytujeme syntetiz´atoru vˇetˇs´ı prostor pro optimalizace, obvod zmenˇs´ıme, zrychl´ıme a vyhneme se moˇzn´ ym probl´em˚ um V´ ypis 3.3: Multiplexer 1 ze 3. Pro vstup sel=”11”je v´ ystup nepopsan´ y a doch´az´ı tak k vytvoˇren´ı klopn´eho obvodu. (2 LUT + 1 registr) 1 2 3
q <= a when s e l = ” 00 ” e l s e b when s e l = ” 01 ” e l s e c when s e l = ” 10 ” ;
V´ ypis 3.4: Spr´ avnˇe popsan´ y multiplexer 1 ze 3. (1 LUT + 1 dedikovan´ y multiplexer) 1 2 3 4
q <= a when s e l = ” 00 ” e l s e b when s e l = ” 01 ” e l s e c when s e l = ” 10 ” e l s e ’X ’ ;
KAPITOLA 3. FPGA XILINX
3.4
23
Pamˇ eti
Pamˇeti jsou ˇcastou a d˚ uleˇzitou souˇc´ast´ı n´avrhu pro obvody FPGA. Existuje nˇekolik moˇznost´ı jak pamˇeti vytv´aˇret a inicializovat. V n´asleduj´ıc´ıch ˇca´stech nab´ızen´e moˇznosti rozebereme.
3.4.1
Druhy pamˇ et´ı
Z´akladn´ı rozdˇelen´ı pamˇet´ı dostupn´ ych v FPGA je na tzv. distribuovan´e a blokov´e RAM. Distribuovan´e pamˇeti jsou tvoˇreny z rozˇs´ıˇren´ ych LUT (oznaˇcovan´ ych jako RAM16, viz 3.3). Velikost z´akladn´ıho elementu je tedy 16 bit˚ u (1 x LUT4). Z´apis prob´ıh´a synchronnˇe, ˇcten´ı asynchronnˇe. Lze vytvoˇrit i dvou-portov´e elementy distribuovan´e RAM (pouˇzij´ı se dvˇe LUT4), pˇriˇcemˇz jeden z port˚ u potom um´ı pouze ˇc´ıst. Hlavn´ı v´ yhodou je, ˇze pamˇet’ov´e buˇ nky mohou b´ yt um´ıstˇeny t´emˇeˇr libovolnˇe, tud´ıˇz dobˇre integrov´any s ostatn´ı logikou. Spolu s asynchronn´ım ˇcten´ı se tak st´avaj´ı ide´aln´ım ˇreˇsen´ım pro mal´e, rychl´e pamˇeti, FIFO pamˇeti apod. Jejich poˇcet je nav´ıc pomˇernˇe velik´ y, jedn´a se o kaˇzdou druhou LUT. Blokov´e RAM jsou dedikov´e, plnohodnotn´e, dvou-portov´e pamˇeti (viz. obr´azek 3.1). Bˇeˇzn´a velikost jednoho bloku je 16 kb. V souˇctu mohou b´ yt v FPGA des´ıtky aˇz stovky kb. Pracuj´ı v plnˇe synchronn´ım reˇzimu (na rozd´ıl od distribuovan´ ych pamˇet´ı). Adresn´ı logika je konfigurovateln´a, je tedy moˇzn´e v urˇcit´ ych kroc´ıch mˇenit pomˇer mezi ˇs´ıˇrkou datov´e a adresov´e sbˇernice. Oba porty jsou shodn´e a mohou z´aroveˇ n zapisovat na shodn´e m´ısto v pamˇeti, pˇriˇcemˇz lze nastavit prioritu z´apisu pro jeden z nich. Je tak´e moˇzn´e jeden blok pouˇz´ıt jako dvˇe menˇs´ı jedno-portov´e RAM, nebo ho pouˇz´ıt jako v´ıce pamˇet´ı ROM bitov´ ym rozdˇelen´ım adresov´ ych a datov´ ych sbˇernic. Dalˇs´ı zaj´ımav´e pouˇzit´ı je jako komplexn´ı kombinaˇcn´ı obvod s registry na v´ ystupu nebo jako prostˇredek pro implementaci rozs´ahl´ ych stavov´ ych automat˚ u, coˇz za n´as m˚ uˇze udˇelat pˇr´ımo syntetiz´ator logiky (zde je ˇcten´aˇr odk´az´an na manu´al k atribut˚ um bram map a fsm style). Pamˇeti sloˇzen´e z blokov´ ych RAM mohou b´ yt inicializov´any v k´odu VHDL (tud´ıˇz pˇri syntetizaci), nebo jiˇz ve v´ ysledn´e bin´arn´ım konfiguraˇcn´ım souboru pomoc´ı n´astroje data2mem, coˇz je zvl´aˇstˇe v´ yhodn´e pˇri ˇcast´ ych zmˇen´ach dat, napˇr. pˇri pouˇzit´ı syntetizovan´ ych mikroprocesor˚ u.
KAPITOLA 3. FPGA XILINX
3.4.2
24
Zp˚ usoby vytvoˇ ren´ı
Behavior´ aln´ı popis Prvn´ı moˇznost´ı jak vytvoˇrit pamˇet’ je popsat funkci poˇzadovan´eho typu pamˇeti tzv. behavior´alnˇe pomoc´ı konstrukc´ı jazyka VHDL. Toto ˇreˇsen´ı je hardwarovˇe nez´avisl´e. Inicializaˇcn´ı data lze popsat obdobn´ ym zp˚ usobem, jako v pˇr´ıpadˇe 3.2, ale takt´eˇz lze k inicializaci vyuˇz´ıt pln´ ych moˇznost´ı jazyka VHDL a inicializovat data pomoc´ı funkce, kter´a do pamˇeti pˇredpoˇc´ıt´a nˇejak´e hodnoty podle funkˇcn´ıho pˇredpisu, nebo je pˇreˇcte ze souboru. Je ale prakticky nemoˇzn´e tyto inicializaˇcn´ı data zmˇenit bez nov´eho proveden´ı syntetizace. Syntetizaˇcn´ı n´astroj se obvykle s´am rozhodnˇe, zda pamˇet’ realizuje jako distribuovanou nebo blokovou. Jedn´ım z krit´eri´ı je velikost (napˇr. pro Virtex-2 je hranice 512 bit˚ u). Typ pamˇeti lze tak´e syntetizaˇcn´ımu prostˇredku vnutit pomoc´ı atribut˚ u ram style a rom style. Behavior´alnˇe lze samozˇrejmˇe popsat i pamˇeti, kter´e nelze realizovat ani jako distribuovan´e ani blokov´e. M˚ uˇze se tak lehce st´at, ˇze v´ ysledek bude velmi neefektivn´ı aˇz nerealizovateln´ y. Je proto dobr´e si ve v´ ypisu syntetizaˇcn´ıho n´astroje zkontrolovat, zda jsme k´odem skuteˇcnˇe popsali to, co poˇzadujeme. Instanciov´ an´ı blokov´ ych ram Dalˇs´ı moˇznost´ı je sloˇzi pamˇet’ pˇr´ımo z primitiv˚ u (entit) jednotliv´ ych blokov´ ych RAM podle naˇsich poˇzadavk˚ u na velikost a ˇs´ıˇrku slova Koneˇcn´e pamˇeti a pˇridat adresov´ y dekod´er. T´ımto zp˚ usobem m´ame plnou kontrolu nad n´avrhem a vˇsemi dostupn´ ymi parametry primitiv˚ u. Inicializace m˚ uˇze b´ yt provedena v jazyce VHDL pomoc´ı generick´ ych parametr˚ u pamˇet´ı. Zaj´ımavˇejˇs´ı moˇznost´ı je inicializace n´astrojem data2mem. Pouˇ zit´ı gener´ atoru Souˇc´ast´ı v´ yvojov´ ych n´astroj˚ u v z´akladn´ı verzi je i coregen – n´astroj umoˇzn ˇuj´ıc´ı jednoduch´e a rychl´e vytv´aˇren´ı komponent r˚ uzn´eho typu pouze na z´akladˇe specifikov´an´ı nˇekolika jejich poˇzadovan´ ych parametr˚ u. Mezi nab´ızen´e komponenty patˇr´ı i blokov´e a distribuovan´e pamˇeti. Jejich inicializaci lze prov´est ze souboru *.coe, coˇz je textov´ y form´at firmy Xilinx pro z´aznam koeficient˚ u digit´aln´ıch filtr˚ u, obecn´ ych dat apod. Pokud si jako typ pamˇeti vybereme blokovou, tak za n´as n´astroj udˇel´a to, co m˚ uˇzeme udˇelat ruˇcnˇe (viz. instance blokov´ ych ram), a udˇel´a to velmi dobˇre. M˚ uˇzeme si napˇr. zvolit optimalizaci na velikost. N´astroj v tomto pˇr´ıpadˇe poskl´ad´a pamˇet’ov´ y prostor z blokov´ ych ram r˚ uzn´ ych datov´ ych ˇs´ıˇrek tak, ˇze dojde k jejich maxim´aln´ımu vyuˇzit´ı a z´aroveˇ n minimalizov´an´ı ad-
KAPITOLA 3. FPGA XILINX
25
resov´eho dekod´eru. V opaˇcn´em pˇr´ıpadˇe vytvoˇr´ı pamˇet’ jako prostou matici blokov´ ych RAM. Funkce tohoto n´astroje bohuˇzel postr´ad´a dobrou dokumentaci a pˇredevˇs´ım neprodukuje soubory *.bmm (Block RAM Memory Map), ˇc´ımˇz je pro n´as v naˇsem pˇr´ıpadˇe jen tˇeˇzko pouˇziteln´a, jak n´asledovnˇe uvid´ıme.
3.4.3
N´ astroj data2mem
Tento n´astroj umoˇzn ˇuje zpˇetnˇe mˇenit v koneˇcn´em konfiguraˇcn´ım souboru pro FPGA (*.bit) inicializaˇcn´ı data blokov´ ych RAM. Je tedy velmi v´ yhodn´ ym pomocn´ıkem, pokud m´ame v pamˇeti napˇr. program pro procesor, kter´ y budeme ˇcasto mˇenit, jako v naˇsem pˇr´ıpadˇe. Jedn´ım z form´at˚ u inicializaˇcn´ıch dat, kter´e um´ı tento n´astroj pˇreˇc´ıst, jsou tak´e soubory *.elf – tedy soubory s bin´arn´ımi daty, jeˇz mohou b´ yt v´ ystupem softwarov´ ych kompil´ator˚ u. Aby n´astroj poznal, kter´e bity vstupn´ıho souboru odpov´ıdaj´ı kter´ ym bit˚ um v jak´e blokov´e RAM, mus´ıme mu poskytnout soubor *.bmm (Block RAM Memory Map), jeˇz vˇsechny tyto informace shrnuje. Protoˇze n´astroj coregen tyto soubory k pamˇetem negeneruje a nav´ıc blokov´e RAM pojmenov´av´a tˇeˇzko interpretovateln´ ymi n´azvy, nem˚ uˇze b´ yt pouˇzit. Je tedy nutn´e pamˇeti vytv´aˇret jinak a soubory *.bmm vytv´aˇret ruˇcnˇe. (Jejich generov´an´ı umoˇzn ˇuj´ı aˇz placen´e n´astroje.) K tomu m˚ uˇze pom˚ uˇze manu´al [2].
3.5
Pˇ rehled souˇ c´ astek
Z´aklad nab´ıdky firmy Xilinx tvoˇr´ı FPGA ˇrady Virtex-4 ,Virtex-5 a Virtex-6 pro nejn´aroˇcnˇejˇs´ı aplikace a ˇrady Spartan-3 (se vˇsemi jej´ımi verzemi) pro n´ızkon´akladov´e aˇz stˇrednˇe n´aroˇcn´e aplikace. D´ale ˇrada Spartan-6, kter´a je modernˇejˇs´ım a v´ ykonnˇejˇs´ım n´asledn´ıkem ˇrady Spartan-3 (na prvn´ı pohled jsou nejvˇetˇs´ı zmˇenou LUT s 6 vstupy). Dalˇs´ı tˇr´ıdy FPGA Virtex-7, Kintex-7 a Artix-7 jsou firmou Xilinx teprve pˇripravovan´e. Jejich uveden´ı na trh m˚ uˇze trvat pomˇernˇe dlouhou dobu. V souˇcasn´e dobˇe je pro naˇse u ´ˇcely pravdˇepodobnˇe nejv´ıce vhodn´a platforma Spartan3A ( A“ znaˇc´ı Advanced – vylepˇsen´a verze p˚ uvodn´ı ˇrady Spartan-3). V n´asleduj´ıc´ıch ” tabulce 3.1 m˚ uˇzeme vidˇet srovn´an´ı jej´ıch z´astupc˚ u. Jinou pˇripravovanou zaj´ımavost´ı v portfoliu firmy Xilinx jsou obvody Zynq-7000.[12] Tyto obvody jiˇz nejsou oznaˇcovan´e jako FPGA, ale jako EPP (Extensible Processing Platform). Z´aklad tvoˇr´ı dvouj´adrov´ y procesor ARM Cortex-A9 s koprocesorem poˇc´ıtaj´ıc´ım
KAPITOLA 3. FPGA XILINX
26
Tabulka 3.1: Pˇrehled obvod˚ u z tˇr´ıdy Starta-3A. Obvod
Poˇcet CLB
Poˇcet Slice
Distribuovan´e RAM
Blokov´e RAM
Dedikovan´e n´asobiˇcky
Poˇcet DCM
Uˇzivatelsk´e vstupy/v´ ystupy
XC3S50A XC3S200A XC3S400A XC3S700A XC3S1400A
176 448 896 1472 2816
704 1792 3584 5888 11264
11 kb 28 kb 56 kb 92 kb 176 kb
54 kb 288 kb 360 kb 360 kb 576 kb
3 16 20 20 32
2 4 4 8 8
144 248 311 372 502
v plovouc´ı ˇra´dov´e ˇc´arce a s dvojitou pˇresnost´ı. Hradlov´e pole je aˇz souˇc´ast podˇr´ızen´a tomuto procesoru a je plnˇe v jeho reˇzii. Pˇrestoˇze se jedn´a o velmi v´ ykonn´e ˇreˇsen´ı, cena by mˇela zaˇc´ınat na 15$ (ovˇsem pˇri velk´ ych odbˇerech). Mohlo by se tedy jednat o zaj´ımavou platformu i pro ˇr´ıdic´ı aplikace. Pro z´ajemce dodejme, ˇze zkuˇsebn´ı vzorky by mˇely b´ yt ˇsiroce dostupn´e v prvn´ı polovinˇe roku 2012.
Kapitola 4 Syntetizovan´ y mikrokontrol´ er Syntetizovan´ ymi mikrokontrol´ery se oznaˇcuj´ı mikrokontrol´ery realizovan´e pˇr´ımo v prostoru hradlov´eho pole stejnˇe jako ostatn´ı logick´e obvody. Mohou b´ yt distribuov´any napˇr. v podobˇe HDL k´odu, takˇze je moˇzn´e si implementaci takov´eho mikrokontrol´eru prohl´ednou (pˇr´ıpadnˇe i upravit), nebo v podobˇe uˇz kompilovan´eho souboru, tj. bez zdrojov´ ych soubor˚ u. V souˇcasnosti existuje pomˇernˇe velk´e mnoˇzstv´ı syntetizovan´ ych mikrokontrol´er˚ u, at’ uˇz komerˇcn´ıch, volnˇe ˇsiˇriteln´ y, s uzavˇren´ ym ˇci otevˇren´ ym k´odem. O v´ yhod´ach a nev´ yhod´ach obdobn´ ych ˇreˇsen´ı v oblasti softwaru se jiˇz v minulosti vedly a st´ale vedou dlouh´e diskuze. V pˇr´ıpadˇe syntetizovan´ ych mikrokontrol´er˚ u je situace m´ırnˇe odliˇsn´a t´ım, ˇze jsou komerˇcn´ı produkty ˇcasto v´az´any na hradlov´a pole jeho v´ yrobce (ˇcemuˇz se nelze pˇr´ıliˇs divit). Pˇr´ıpadn´ y pˇrechod na hradlov´a pole jin´eho v´ yrobce potom m˚ uˇze b´ yt pomˇernˇe n´akladn´ y a zdlouhav´ y, pˇr´ıpadnˇe aˇz nere´aln´ y Co se t´ yˇce v´ yhod a nev´ yhod syntetizovan´ ych mikrokontrol´er˚ u vzhledem ke klasick´ ym jednoˇcipov´ ym mikrokontrol´er˚ um, je situace pomˇernˇe sloˇzit´a. V s´eriov´e v´ yrobˇe spotˇrebn´ı elektroniky se se syntetizovan´ ymi mikropoˇc´ıtaˇci coby n´ahradou klasick´ ych jednoˇcipov´ ych mikrokontrol´er˚ u setk´ame pravdˇepodobnˇe velmi ojedinˇele. D˚ uvodem je pˇredevˇs´ım neekonomiˇcnost takov´eho ˇreˇsen´ı, protoˇze prostor v hradlov´em poli je vzhledem k cen´am dneˇsn´ıch mikrokontrol´er˚ u relativnˇe dosti drah´ y. Nav´ıc vˇetˇs´ı prostor v hradlov´em poli s sebou nese potˇrebu vˇetˇs´ı konfiguraˇcn´ı pamˇeti, kter´e jsou takt´eˇz pomˇernˇe drah´e. Mezi moˇzn´e v´ yhody patˇr´ı, ˇze je lze relativnˇe jednoduˇse doplnit tˇesnˇe v´azan´ ymi a komplexn´ımi periferiemi, coˇz m˚ uˇze v nˇekter´ ych pˇr´ıpadech implementaci zaˇr´ızen´ı velmi usnadnit a vlastnosti v´ ysledn´eho syst´emu vylepˇsit. Takt´eˇz pˇri v´ yvoji nemus´ıme ihned navrhovat vlastn´ı prototypovou desku s klasick´ ym mikrokontrol´erem a pˇridruˇzen´ ym hradlov´ ym polem. Z principu takt´eˇz nehroz´ı ukonˇcen´ı v´ yroby mikrokontrol´eru. 27
´ MIKROKONTROLER ´ KAPITOLA 4. SYNTETIZOVANY
28
Bˇeˇznˇejˇs´ı je se setkat v hradlov´em poli s mal´ ymi syntetizovan´ ymi mikrokontrol´ery jako s podp˚ urn´ ymi prvky. A m˚ uˇze jich zde b´ yt i nˇekolik. Pokud ale vyˇzadujeme plnohodnotn´ y mikropoˇc´ıtaˇc, jev´ı se dnes jako v´ yhodnˇejˇs´ı moˇznost dvou-ˇcipov´e ˇreˇsen´ı (pomineme-li nˇekter´e velice specifick´e aplikace), tj. oddˇelen´e hradlov´e pole a jednoˇcipov´ y mikropoˇc´ıtaˇc. Nab´ıdka jednoˇcipov´ ych mikropoˇc´ıtaˇc˚ u je dnes ˇsirok´a a ceny b´ yvaj´ı velmi pˇr´ızniv´e. Nav´ıc jiˇz ˇcasto obsahuj´ı rozhran´ı jako CAN, USB, Ethernet apod.
4.1
V´ ybˇ er syntetizovan´ eho mikrokontrol´ eru
Z d˚ uvod˚ u zm´ınˇen´ ych v pˇredchoz´ıch odstavc´ıch a pˇredevˇs´ım z d˚ uvodu dostupnosti byl syntetizovan´ y mikrokontrol´er vyb´ır´an z datab´aze projektu OpenCores. Na zkouˇsku byly zvoleny dva mikrokontrol´ery jakoˇzto z´astupci popul´arn´ıch syntetizovan´ ych mikrokontrol´er˚ u v t´eto komunitˇe: • OpenMSP430 (http://opencores.com/project,openmsp430) • Plasma - most MIPS ITM opcodes (http://opencores.com/project,plasma) Pro koneˇcnou implementaci byl vybr´an openMSP430. N´asleduje kr´atk´e zhodnocen´ı obou moˇznost´ı a od˚ uvodnˇen´ı v´ ybˇeru.
4.1.1
Plasma
Jedn´a se t´emˇeˇr o u ´plnou implementaci architektury MIPS I (implementov´any nejsou pouze instrukce pro nezarovnan´ y pˇr´ıstup k pamˇeti, kter´e byly v dobˇe implementace chr´anˇen´e patentem a v praxi pravdˇepodobnˇe nejsou pˇr´ıliˇs potˇrebn´e). N´asleduje v´ yˇcet kl´ıˇcov´ ych vlastnost´ı: ˇıˇrka slova 32 bit˚ • S´ u. • Von Neumannova architektura. • Hardwarov´a n´asobiˇcka/dˇeliˇcka. (cca 32 hodinov´ ych takt˚ u) • Hardwarov´a bitov´e posuvy. (pravdˇepodobnˇe 1 hodinov´ y takt) • Podporuje chr´anˇen´ y reˇzim. • Pouze jeden vstup pˇreruˇsen´ı. (v´ıce pˇreruˇsen´ı nutno ˇreˇsit softwarovˇe nebo ˇradiˇcem) • Moˇznost blokov´an´ı pˇr´ıstupu k pamˇeti. Vhodnˇejˇs´ı by tedy bylo oznaˇcen´ı mikropoˇc´ıtaˇc neˇz mikrokontrol´er. Kromˇe samotn´eho j´adra mikropoˇc´ıtaˇce projekt tak´e obsahuje Ethernetov´ y ˇradiˇc, jednotku UART, vyrovn´avac´ı
´ MIKROKONTROLER ´ KAPITOLA 4. SYNTETIZOVANY
29
pamˇet’ (cach) a ˇradiˇc pamˇet´ı DDR. Vˇsechny hardwarov´e ˇca´sti jsou pops´any v jazyku VHDL. D´ale projekt nab´ız´ı sv˚ uj vlastn´ı operaˇcn´ı syst´em re´aln´eho ˇcasu Plasma RTOS a implementaci webov´eho serveru. Dostupn´e jsou tak´e dalˇs´ı uk´azkov´e programy jako napˇr. test funkˇcnosti vˇsech instrukc´ı. Pro naˇse u ´ˇcely je toto ˇreˇsen´ı aˇz zbyteˇcnˇe pokroˇcil´e a n´aroˇcn´e na prostor v FPGA. V obvodu Virtex-2 si samotn´e j´adro vyˇza´d´a pˇribliˇznˇe 1500 jednotek Slice oproti pˇribliˇznˇe 1000 Slice pro j´adro openMSP430. Protoˇze je Plasma 32-bitov´a architektura, jsou nav´ıc vˇetˇs´ı i ostatn´ı ˇca´sti jako periferie, pamˇeti apod. Ze subjektivn´ıho pohledu tento projekt takt´eˇz nem´a tak kvalitn´ı dokumentaci a dostupnost informac´ı jako openMSP430. Nav´ıc je (opˇet subjektivnˇe), cel´ y projekt pˇr´ıliˇs prov´azan´ y s uk´azkovou aplikac´ı webov´eho serveru, pouˇzit´ ym v´ yvojov´ ym kitem a vlastn´ım ´ projektu a jeho reorganizace po softwarov´e i hardwarov´e operaˇcn´ım syst´em. Uprava str´ance pro naˇse u ´ˇcely by si vyˇza´daly pomˇernˇe dosti ˇcasu. Pˇresto byly urˇcit´e u ´pravy provedeny a mikropoˇc´ıtaˇc na pouˇzit´e v´ yvojov´e desce zprovoznˇen a pˇripraven pro pˇr´ıpadn´e budouc´ı nasazen´ı. Uk´azkov´ y projekt je souˇca´st´ı pˇriloˇzen´eho CD. Shrnut´ı nejd˚ uleˇzitˇejˇs´ıch informac´ı o t´eto architektuˇre potˇrebn´ ych k pˇr´ıpadn´emu dalˇs´ımu v´ yvoji m˚ uˇzeme naj´ıt napˇr. v [1].
4.1.2
OpenMSP430
OpenMSP je implementac´ı mikrokontrol´eru tˇr´ıdy MSP430 firmy Texas Instruments kompletnˇe napsanou v jazyce Verilog. Jeho z´akladn´ı vlastnosti jsou n´asleduj´ıc´ı: ˇıˇrka slova 16 bit˚ • S´ u. • Harvardsk´a architektura (oddˇelen´e sbˇernice pro program, data a periferie) • Hardwarov´a n´asobiˇcka s akumul´atorem (pouˇzita dedikovan´a n´asobiˇcka v FPGA) • 1 nemaskovan´e a 14 maskovan´ ych pˇreruˇsen´ı. Bohuˇzel projekt jako takov´ y obsahuje minimum periferi´ı. Jmenovitˇe TimerA, GPIO a jiˇz zm´ınˇenou n´asobiˇcku. Souˇca´st´ı projektu nen´ı ani hardwarov´a jednot UART. Naproti tomu je projekt velmi dobˇre dokumentov´an [7] a oproti mikropoˇc´ıtaˇci Plasma je v mnoh´ ych smˇerech tak´e u ´spornˇejˇs´ı. Tyto d˚ uvody a tak´e rozˇs´ıˇren´ı mikrokontrol´er˚ u msp430 vedly k jeho zvolen´ı. Na rozd´ıl od mikropoˇc´ıtaˇce Plasma takt´eˇz nab´ız´ı i rozhran´ı pro debugger.
´ MIKROKONTROLER ´ KAPITOLA 4. SYNTETIZOVANY
4.2
30
Pouˇ zit´ı mikrokontrol´ eru openMSP430
J´adro syntetizovan´eho mikrokontrol´eru je nutn´e pˇred pouˇzit´ım patˇriˇcnˇe vybavit okoln´ımi komponentami, coˇz popisuje n´asleduj´ıc´ı text. Aby nebylo nutn´e tento postup vˇzdy opakovat, nebo bezduˇse kop´ırovat, byl vytvoˇren modul openmsp430. Zde jsou pˇripraveny kompletn´ı konfigurace mikrokontrol´eru urˇcen´e k okamˇzit´emu pouˇzit´ı (vˇcetnˇe *.bmm souboru). Podrobnˇejˇs´ı informace najdeme uloˇzen´e pˇr´ımo v modulu na pˇriloˇzen´em CD.
4.2.1
Datov´ a a programov´ a sbˇ ernice
V prvn´ı ˇradˇe je nutn´e k mikropoˇc´ıtaˇci pˇripojit programovou a datovou pamˇet’. Moˇzn´e postupy byly rozebr´any v kapitole 3.4. Zvolen byl postup instanciov´an´ım blokov´ ych RAM. Za t´ımto u ´ˇcelem tak´e byla naps´ana generick´a entita ram generic, kter´a pole blokov´ ych RAM tvoˇr´ı automaticky stejnˇe jako pˇr´ısluˇsn´ y adresov´ y dekod´er a z´aroveˇ n RAM smysluplnˇe pojmenov´av´a, takˇze je moˇzn´e snadno napsat odpov´ıdaj´ıc´ı *.bmm soubor a n´aslednˇe vyuˇz´ıt n´astroj data2mem. Generick´a komponenta samozˇrejmˇe nen´ı nutn´a, ale pˇekn´ ym zp˚ usobem ilustruje moˇznosti jazyka VHDL. Bliˇzˇs´ı popis entity ram generic je souˇc´ast´ı jej´ıho zdrojov´eho k´odu. Pˇr´ıklad, jak ji pouˇz´ıt pˇrin´aˇs´ı pˇripraven´e moduly mikrokontrol´eru. Zp˚ usob pr´ace s n´astrojem data2mem je potom moˇzn´e naj´ıt v Makefile scriptu hlavn´ıho projektu. Pˇri pr´aci s pamˇetmi je d˚ uleˇzit´e vˇedˇet, ˇze mikrokontrol´er openMSP430 spol´eh´a na to, ˇze data v datov´e i programov´e sbˇernici se mˇen´ı pouze pˇri proveden´ı operace ˇcten´ı nebo z´apisu. Jinak mus´ı z˚ ustat nezmˇenˇeny. Nevˇedomost a nedodrˇzen´ı t´eto podm´ınky zp˚ usob´ı nespr´avn´e a tˇeˇzko odhaliteln´e chov´an´ı mikropoˇc´ıtaˇce. Pokud tedy na sbˇernici pˇripojujeme v´ıce pamˇet´ı, je nutn´e stav v´ ystupn´ıho multiplexeru mˇenit pouze pˇri ˇcten´ı nebo z´apisu. Moˇzn´e ˇreˇsen´ı ukazuje sch´ema 4.1. Zde je poˇzadovan´e funkcionality dosaˇzeno klopn´ ym obvodem typu D zapojen´ ym pˇred multiplexer.
4.2.2
Perifern´ı sbˇ ernice
Sbˇernice pro periferie je namapov´ana do stejn´eho logick´eho adresov´eho prostoru jako datov´a a programov´a sbˇernice, ale podstatnˇe se do nich liˇs´ı svou velikost´ı (m´a pevnou ˇ ı je totiˇz prov´adˇeno asynchronnˇe. To ˇs´ıˇrku 256 slov) a pˇredevˇs´ım zp˚ usobem ˇcten´ı. Cten´ znamen´a, ˇze se na sbˇernici mus´ı objevit validn´ı data ve stejn´em taktu, kdy se zmˇen´ı adresa, ne aˇz pˇri n´asleduj´ıc´ı hranˇe hodinov´eho sign´alu. Toto m˚ uˇze b´ yt pˇri implementaci periferi´ı v nˇekter´ ych pˇr´ıpadech pˇrek´aˇzkou. Ale z principu nic nebr´an´ı tomu, pˇripojit periferie na
´ MIKROKONTROLER ´ KAPITOLA 4. SYNTETIZOVANY
DMEM_ADDR
0..8
0..7
31
ADR
DMEM_DIN
DIN
DMEM_WE
WE
RAM
DOUT
RAM
DOUT
CE
0..7
ADR DIN WE CE
8
D
DMEM_CE
EN
DMEM_DOUT
Obr´ azek 4.1: Zp˚ usob pˇripojen´ı v´ıce pamˇet´ı na jednu sbˇernici (datovou, programovou) mikrokontrol´eru openMSP430.
datovou sbˇernici, kde prob´ıh´a ˇcten´ı synchronnˇe. Na obr´azku 4.2 m˚ uˇzeme vidˇet doporuˇcen´ y postup jak vytv´aˇret a pˇripojovat periferie na perifern´ı sbˇernici mikrokontrol´eru openMSP430. Hlavn´ı myˇslenkou je, ˇze kaˇzd´a periferie obsahuje u ´pln´ y adresov´ y dekod´er a ten urˇc´ı, zda je k n´ı pˇristupov´ano ˇci nikoliv. Pokud ano, poskytuje na v´ ystupu poˇzadovan´a data. Pokud k n´ı pˇristupov´ano nen´ı, tak udrˇzuje na v´ ystupu n´ızkou u ´roveˇ n. Logick´ y souˇcet v´ ystupn´ıch sign´al˚ u vˇsech periferi´ı pot´e sv´ ym zp˚ usobem nahrad´ı, jinak nutn´ y, multiplexer. periférie 1 PER_EN PER_ADDR PER_WE PER_DIN
PER_EN PER_ADDR PER_WE
PER_DOUT
PER_DIN
periférie 2 PER_EN PER_ADDR PER_WE
PER_DOUT
PER_DIN PER_DOUT
Obr´ azek 4.2: Doporuˇcovan´ y postup pˇripojen´ı perif´eri´ı na perifern´ı sbˇernici.
Na u ´rovni sbˇernice vypad´a toto ˇreˇsen´ı jednoduˇse, ovˇsem o to v´ıce u ´sil´ı vyˇzaduje implementace samotn´ ych komponent. Nav´ıc pˇr´ıpadn´a chyba v jedn´e komponentˇe m˚ uˇze v´est k nefunkˇcnosti vˇsech. Takt´eˇz je sloˇzitˇejˇs´ı sledovat, zda se pamˇet’ov´e prostory nˇekter´ ych komponent nepˇrekr´ yvaj´ı. Z tohoto d˚ uvodu byl pˇri realizaci sbˇernice pouˇzit jin´ y pˇr´ıstup inspirovan´ y sbˇernic´ı Wishbone, jak uvid´ıme v n´asleduj´ıc´ı ˇc´asti.
´ MIKROKONTROLER ´ KAPITOLA 4. SYNTETIZOVANY
4.2.3
32
Sbˇ ernice Wishbone
Sbˇernice Wishbone byla navrˇzena pro co nejvˇetˇs´ı univerz´alnost jak v pˇrenosu dat, tak propojen´ı uzl˚ u a lze na n´ı vystavˇet syst´emy od tˇech nejjednoduˇsˇs´ıch aˇz po velmi komplexn´ı ´ s v´ıce uzly typu master. Uplnou specifikaci si m˚ uˇzeme pˇreˇc´ıst v [10]. Zde se na funkci sbˇernice pod´ıv´ame pouze zbˇeˇznˇe. Propojen´ı dvou periferi´ı (uzly typu slave) je k vidˇen´ı na sch´ema 4.3. Prvn´ı odliˇsnost´ı oproti ˇreˇsen´ı doporuˇcovan´em v projektu openMSP430 je realizace adresov´eho dekod´eru. Perif´erie dek´oduje z adresy pouze tolik bit˚ u, kolik odpov´ıd´a fyzick´e velikosti jej´ıho adresov´eho prostoru. Sama o sobˇe nem´a informaci o tom, jak je nadˇrazen´ y syst´em velik´ y a na jak´e logick´e adrese se v nˇem skuteˇcnˇe nach´az´ı, coˇz je zajist´e v´ yhodou. O interpretov´an´ı ˇ ı cel´e adresy a adresov´an´ı konkr´etn´ıch periferi´ı se star´a adresov´ y dekod´er sbˇernice. Cin´ tak nastavov´an´ım v´ ystup˚ u SEL O (k´od 1 z n). Takt´eˇz multiplexuje v´ ystupy perif´eri´ı. Operace ˇcten´ı nebo z´apisu se inicializuje nastaven´ım sign´alu STB O na vysokou u ´roveˇ n. Mezi ˇcten´ım a z´apisem se rozhoduje u ´rovn´ı sign´alu WE O. Podle specifikace je operace dokonˇcena, aˇz kdyˇz ji zaˇr´ızen´ı typu slave potvrd´ı nastaven´ım sign´alu ACK O. periférie 1 0..1
ADR_I
DAT_O
DAT_I SEL_I
WE_O
WE_I
STB_O
DAT_O ACK_O
STB_I
DAT_I
periférie 2 0..2
ACK_
ADR_I DAT_I SEL_I WE_I
DAT_O ACK_O
STB_I ADR_O
0..15
0..15
adresový dekodér
Obr´ azek 4.3: Propojen´ı dvou komponent typu slave ve sbˇernici Wishbone.
R˚ uzn´e ˇca´sti tohoto konceptu byly pˇri n´avrhu hojnˇe uplatnˇeny, ale cel´a specifikace byla z d˚ uvodu jednoduchosti dodrˇzena m´alokdy. Vˇetˇsina navrˇzen´ ych periferi´ı tedy se sbˇernic´ı Wishbone kompatibiln´ıch nen´ı.
Kapitola 5 Implementace hardwaru Bˇehem t´eto pr´ace bylo v hardwaru implementov´ano ˇr´ızen´ı modifikovan´ ym sinusov´ ym sign´alem (viz. kapitola 2.2 ). Pˇriˇcemˇz syntetizovan´ y hardware byl navrhov´an s d˚ urazem na variabilitu, snadn´e a u ´sporn´e rozˇs´ıˇren´ı pro ˇr´ızen´ı v´ıce os, celkovou v´ yslednou velikost a pˇredevˇs´ım moˇznost ho relativnˇe jednoduˇse rozˇs´ıˇrit o momentov´e (proudov´e) ˇr´ızen´ı.
5.1
Rozhran´ı mikrokontrol´ eru a regulaˇ cn´ı smyˇ cky
Nutnost´ı je v prvn´ı ˇradˇe propojit mikrokontrol´er (at’ uˇz syntetizovan´ y nebo jak´ ykoliv jin´ y) s navrhovan´ ym hardwarov´ ym j´adrem pro obsluhu bezkart´aˇcov´ ych motor˚ u a jeho ˇr´ıdic´ımi registry. Od proveden´ı t´eto vazby se v´ yraznˇe odv´ıj´ı n´asledn´ y zp˚ usob implementace samotn´eho j´adra i jeho kl´ıˇcov´e vlastnosti.
5.1.1
Moˇ zn´ e alternativy
Nab´ız´ı se tˇri moˇznosti: implementovat registry v podobˇe samostatn´ ych klopn´ ych obvod˚ u, jako blokovou RAM nebo jako distribuovanou RAM. Samostatn´ e klopn´ e obvody ˇ sen´ı pomoc´ı samostatn´ Reˇ ych klopn´ ych obvod˚ u je pomˇernˇe pˇr´ımoˇcar´e. Umoˇzn ˇuje ze strany j´adra okamˇzit´ y pˇr´ıstup k hodnot´am vˇsech registr˚ u. Bylo by tedy moˇzn´e implementovat ˇr´ıdic´ı ˇretˇezec/ˇretˇezce paralelnˇe a s vyuˇzit´ım proudov´eho zpracov´an´ı. To ovˇsem v naˇsem pˇr´ıpadˇe nepˇrin´aˇs´ı ˇza´dnou v´ yhodu, protoˇze ˇr´ıdit bezkart´aˇcov´ y motor nevyˇzaduje tak velk´ y v´ ypoˇcetn´ı v´ ykon. Naopak by toto ˇreˇsen´ı bylo velmi n´aroˇcn´e na zdroje v hradlov´em poli, stejnˇe tak i n´asledn´e pˇripojen´ı registr˚ u do adresov´eho prostoru mikropoˇc´ıtaˇce. 33
KAPITOLA 5. IMPLEMENTACE HARDWARU
34
Pˇred kaˇzd´ ym jednotliv´ ym registrem, do kter´eho bychom chtˇeli m´ıt umoˇznˇen z mikrokontrol´eru z´apis souˇcasnˇe s j´adrem, by musel b´ yt multiplexer vyb´ıraj´ıc´ı 1 ze 2. A pˇredevˇs´ım bychom museli multiplexovat veˇsker´e registry pˇri ˇcten´ı. Pokud by jedna osa byla ovl´ad´ana 8 registry a osy byly celkem 4, tak bychom museli multiplexovat mezi 32 registry. Pokud by registry mˇely ˇs´ıˇrku 16 bit˚ u, tak bychom pouze k implementaci multiplexeru na stranˇe mikropoˇc´ıtaˇce potˇrebovali 16 · 16 = 256 jednotek LUT4 (viz. sekce 3.1.1), coˇz je pˇres 18 % velikosti nejmenˇs´ıho obvodu ˇrady Spartan-3A. A pokud by mˇel b´ yt jeden ˇr´ıdic´ı ˇretˇezec sd´ılen mezi v´ıce osami, musely by b´ yt obdobn´e multiplexery i na jeho stranˇe. Nav´ıc by mohly pˇrij´ıt komplikace pˇri syntetizaci takto prov´azan´eho hardwaru. Toto ˇreˇsen´ı pro n´as tedy nen´ı v´ yhodn´e. Distribuovan´ a RAM Dalˇs´ı moˇznost´ı by bylo pˇresunout registry do distribuovan´ ych RAM. Doˇslo by ke zmenˇsen´ı adresovac´ıch multiplexer˚ u, z´aroveˇ n by v omezen´e m´ıˇre mohlo fungovat proudov´e i paraleln´ı zpracov´an´ı, ale to je ale pro naˇse u ´ˇcely jen mal´ ym vylepˇsen´ım. Blokov´ a RAM Pro implementaci registr˚ u ˇr´ıdic´ı smyˇcky tedy byla pouˇzita posledn´ı varianta, kter´a pˇrin´aˇs´ı nejvˇetˇs´ı u ´sporu prostoru – um´ıstˇen´ı veˇsker´ ych registr˚ u do blokov´e RAM. (V´ yjimku tvoˇr´ı registry, kter´e nejsou pˇr´ımou souˇca´st´ı hardwarov´e smyˇcky, jako registry pro pˇr´ım´ y pˇr´ıstup ke kvadraturn´ımu ˇc´ıtaˇci nebo z´achytn´e registry zachyt´avaj´ıc´ı jeho hodnotu, ˇcas a dalˇs´ı u ´daje pˇri nˇejak´e ud´alosti. Ty z poˇzadavku okamˇzit´e odezvy na nˇejakou ud´alost b´ yt um´ıstˇeny v blokov´e RAM nemohou.) Protoˇze jsou blokov´e RAM dvou-portov´e, m˚ uˇzeme jeden port vyhradit pro mikropoˇc´ıtaˇc a druh´ y pro regulaˇcn´ı smyˇcku. Dokonce lze blokovou RAM nastavit tak, ˇze mikrokontrol´er m´a prioritu pˇri soubˇehu z´apis˚ u na stejnou fyzickou adresu (takto je v projektu sd´ılen´a RAM nastavena). St´ale ale mus´ıme m´ıt na pamˇeti, ˇze probl´em soubˇehu t´ımto obecnˇe nen´ı vyˇreˇsen, a mus´ıme mu pˇredch´azet, pokud by k nˇemu mohly nastat podm´ınky. Netradiˇ cn´ı implementace s blokov´ ymi RAM Dalˇs´ı alternativou je ponechat regulaˇcn´ı smyˇcce prioritn´ı pˇr´ıstup k obˇema port˚ um. To by zefektivnilo jej´ı implementaci, protoˇze by mˇela umoˇznˇeno pracovat se dvˇema slovy z´aroveˇ n. Jeden z port˚ u by pak musel b´ yt s mikrokontrol´erem sd´ılen. Protoˇze by regulaˇcn´ı
KAPITOLA 5. IMPLEMENTACE HARDWARU
35
smyˇcka mˇela pˇrednost, bylo by nutn´e realizovat operace ˇcten´ı a z´apisu mikrokontrol´erem jako blokovan´e, pˇr´ıpadnˇe by si mikrokontrol´er musel jin´ ym zp˚ usobem oˇsetˇrit pˇr´ıstup k pamˇeti. Coˇz pˇredevˇs´ım ze strany mikropoˇc´ıtaˇce n´avrh ˇcin´ı sloˇzitˇejˇs´ım. Zaj´ımavˇejˇs´ı modifikac´ı pˇredchoz´ı u ´vahy je pouˇzit´ı dvou blokov´ ych RAM – jedn´e pro mikropoˇc´ıtaˇc a jedn´e pro smyˇcku, kter´a by tak mohla m´ıt k dispozici oba porty. Jeden z nich by nebyl sd´ılen pˇr´ımo s mikrokontrol´erem, ale s jak´ ymsi dohl´ıˇzec´ım obvodem, jeˇz by patˇriˇcn´ ym zp˚ usobem obˇe pamˇeti periodicky vz´ajemnˇe zrcadlil a udrˇzoval v nich konzistentn´ı data. Jako pˇr´ıznaky aktu´alnˇejˇs´ıch dat by mohly slouˇzit napˇr. paritn´ı bity pˇr´ıtomn´e ve vˇetˇs´ıch blokov´ ych RAM. Toto ˇreˇsen´ı by se vyhlo blokovan´ ym operac´ım hlavn´ıho mikrokontrol´eru (m´ısto toho by byl blokov´an dohl´ıˇzec´ı obvod) a z´aroveˇ n by umoˇznilo u ´plnou kontrolu nad soubˇehem. Cenou za tyto v´ yhody je doba propagace registr˚ u mezi pamˇet’mi a d´ale potˇreba jeˇstˇe jedn´e blokov´e RAM a dohl´ıˇzec´ıho obvodu, coˇz by ale mˇelo b´ yt v porovn´an´ı s velikostmi ostatn´ıch komponent v syst´emu t´emˇeˇr zanedbateln´e.
5.1.2
Zvolen´ eˇ reˇ sen´ı
Posledn´ı dvˇe rozeb´ıran´e moˇznosti v ˇca´sti Netradiˇcn´ı implementace s blokov´ ymi RAM“ ” jsou sp´ıˇse zaj´ımav´ ym, moˇzn´ ym n´avrhem do budoucna, jeˇz by mohl pˇrin´est jist´e v´ yhody. Pˇri implementaci t´eto pr´ace byl ale pouˇzit pro zaˇca´tek jednoduˇsˇs´ı pˇr´ıstup, a sice pˇr´ıtomnost jedn´e pamˇeti a vyhrazen´ı samostatn´eho portu jak mikrokontrol´eru, tak regulaˇcn´ı smyˇcce. Pamˇet’ je rozdˇelena na pole blok˚ u velikosti 2n , aby bylo moˇzn´e jejich efektivn´ı adresov´an´ı, jak se pozdˇeji uk´aˇze. Kaˇzd´ y takov´ y blok uchov´av´a kompletn´ı registry pro jednu osu. Mapov´an´ı registr˚ u v r´amci jednoho bloku je uvedeno v tabulce 5.1. Poznamenejme, ˇze cel´a regulaˇcn´ı smyˇcka (entita mcc) pracuje se slovy ˇs´ıˇrky 16 bit˚ u, tedy i sd´ılen´a pamˇet’ m´a tuto ˇs´ıˇrku.
5.2
Implementace na nejvyˇ sˇ s´ı u ´ rovni
Implementaci na nejvyˇsˇs´ı u ´rovni (tzv. top-level n´avrh) m˚ uˇzeme vidˇet v diagramu 5.1 a je takov´a, ˇze regulaˇcn´ı smyˇcka realizovan´a entitou mcc je pouze jedna a postupnˇe obsluhuje vˇsechny osy/motory. Data vˇsech os jsou v pamˇeti sd´ılen´e s mikropoˇc´ıtaˇcem, kter´a je oznaˇcena jako shared mem . (V pˇr´ıpadˇe, ˇze by poˇzadovan´ y poˇcet os nemohl b´ yt obslouˇzen jednou smyˇckou, je samozˇrejmˇe moˇzn´e smyˇcku i sd´ılenou pamˇet’ zdvojit a prov´adˇet ˇr´ızen´ı paralelnˇe.) Regulaˇcn´ı smyˇcka mcc je postupnˇe spouˇstˇena pro vˇsechny osy nadˇrazenou entitou
KAPITOLA 5. IMPLEMENTACE HARDWARU
36
Tabulka 5.1: Mapa bloku ve sd´ılen´e pamˇeti. Kaˇzd´ y blok uchov´av´a veˇsker´e registry jedn´e osy. Vˇsimnˇeme si, ˇze cel´ y blok m´ a velikost 32 slov (tedy 25 ) a ˇze registry MCC Px a MCC PWMx (v budoucnu pˇr´ıpadnˇe i dalˇs´ı), kter´e se vyskytuj´ı pro kaˇzdou f´ azi, jsou zarovn´any do blok˚ u velikosti 4 slov (obecnˇe 2n ). D˚ uvodem je pozdˇejˇs´ı snadn´e adresov´ an´ı techto oblast´ı.
Offset N´azev
Popis
0x00
Pˇr´ıznaky povoluj´ıc´ı funkci jednotliv´ ych blok˚ u v re-
MCC EN
gulaˇcn´ı smyˇcce. 0x01
MCC IRC
Hodnota kvadraturn´ıho ˇc´ıtaˇce.
0x02
MCC IBASE
B´azov´ y registr, od kter´eho se odv´ıj´ı hodnota u ´hlu natoˇcen´ı (plat´ı: MCC ANGLE = MCC IRC − MCC IBASE).
0x03
MCC IPER
0x04
MCC ANGLE
Poˇcet IRC krok˚ u na jednu komutaˇcn´ı periodu. ´ Uhel natoˇcen´ı rotoru (myˇsleno vzhledem ke komutaci) v jednotk´ach IRC ˇcidla (plat´ı: 0 ≤ MCC ANGLE < ´hel znaˇc´ı smˇer kolm´ y ke smˇeru magMCC IPER). Tento u netick´e indukce rotoru.
0x05
MCC ACTION Akˇcn´ı z´asah, tj. velikost v´ ysledn´eho vektoru napˇet´ı (proudu). Uloˇzeno ve form´atu pevn´e desetinn´e ˇc´arky – 10 bit˚ u za ˇc´arkou.
0x06
MCC PWMMIN Nejmenˇs´ı hodnota PWM pro v´ ypoˇcet buzen´ı modifikovanou sinusovkou.
.. . 0x10
MCC P1
Velikost jednotkov´eho vektoru napˇet´ı prom´ıtnut´eho do smˇeru prvn´ı f´aze.
0x11
MCC PWM1
Akˇcn´ı z´asah pro prvn´ı f´azi, tj. hodnota vyn´asoben´a MCC ACTION pˇr´ımo urˇcen´a pro PWM gener´ator.
.. . 0x14
MCC P2
Obdobn´ y registr jako MCC P1, ale pro druhou f´azi
0x15 .. .
MCC PWM2
Obdobn´ y registr jako MCC PWM1, ale pro druhou f´azi
0x18
MCC P3
Obdobn´ y registr jako MCC P1, ale pro tˇret´ı f´azi
0x19 .. .
MCC PWM3
Obdobn´ y registr jako MCC PWM1, ale pro tˇret´ı f´azi
0x1F
KAPITOLA 5. IMPLEMENTACE HARDWARU
37
openMSP430_8_32_mul_dbus
shared_mem
RXD DMEM_BUS
TXD
motor_irq_gen
MCU PER_BUS
IRQ
IQR0
mcc
IRF_ADR_I5..m
EVENT
IRQ_ACC
IRQ_ACC0
mcc_exec
IRF_ACK_O
IRF_ACK_I
IRF_ADR_I0..4
IRF_ADR_O
IRF_DAT_O
IRF_DAT_I
ACK_O
MCC_ACK_I
IRF_DAT_I
IRF_DAT_O
STB_I
MCC_STB_O
IRF_STB_I
IRF_STB_O
MCC_AXIS_O
MCC_EXEC_I
IRF_WE_O
IRF_WE_I
RS232
PORT_A
wave_table
1
pwm_counter
ADR_I
LUT_ADR_O
DAT_O
LUT_DAT_I
COUNT
STB_I
LUT_STB_O
EVENT_OW
irc
qcounter A
pwm3
QCOUNT
PWM_DAT_O
B
IRC_DAT_I
Hall
QCOUNT
PWM_CNT
SEL
PWM_CYC
PWM1_STB_O
WE0
PWM0
PWM2_STB_O
WE1
PWM1
PWM3_STB_O
WE2
PWM2
pwm
qcounter_mcu16
DAT
PER_BUS
gpio IN1 IN2
PER_BUS
IN3
další osy
další osy
Obr´ azek 5.1: Uspoˇr´ ad´ an´ı komponent syntetizovan´eho hardwaru na nejvyˇsˇs´ı u ´rovni – tzv. top-level n´ avrh.
mcc exec. Vykon´av´an´ı t´eto sekvence pro vˇsechny osy je synchronizov´ano s PWM ˇc´ıtaˇcem pwm counter, kter´ y je spoleˇcn´ y pro cel´ y n´avrh. I blok irq generator je synchronizovan´ y s PWM ˇc´ıtaˇcem. Jednou za 22 period PWM sign´alu (tj. asi tis´ıckr´at za sekundu) vyvol´a v mikropoˇc´ıtaˇci pˇreruˇsen´ı a spust´ı tak vykon´an´ı nadˇrazen´e softwarov´e regulaˇcn´ı smyˇcky. Dalˇs´ı bloky jako samotn´e PWM gener´atory (pwm3), kvadraturn´ı ˇc´ıtaˇce (qcounter), obecn´e vstupy a v´ ystupy (gpio), z´achytn´e registry apod. mus´ı b´ yt pro kaˇzdou osu samostatn´e a nelze je jednoduˇse sd´ılet.
5.2.1
Entita mcc exec
Nyn´ı podrobnˇeji rozebereme, jak entita mcc exec ˇr´ıd´ı prov´adˇen´ı hardwarov´e regulaˇcn´ı smyˇcky mcc. Nejprve vˇzdy nastav´ı sign´alem MCC AXIS O nˇekolik horn´ıch bit˚ u adresy do
KAPITOLA 5. IMPLEMENTACE HARDWARU
38
sd´ılen´e pamˇeti na portu pˇr´ısluˇsej´ıc´ımu regulaˇcn´ı smyˇcce, ˇc´ımˇz pro ni adresuje datovou oblast patˇriˇcn´e osy. Stejn´ ym sign´alem takt´eˇz pˇrepne jedin´e dva multiplexery viditeln´e na digramu – jedn´ım je zvolen v´ ystup odpov´ıdaj´ıc´ıho kvadraturn´ıho ˇc´ıtaˇce a druh´ ym je adresov´ana pˇr´ısluˇsn´e skupina PWM gener´ator˚ u pomoc´ı k tomu urˇcen´ ych sign´al˚ u SEL. Komutaˇcn´ı tabulka je takt´eˇz pˇripojena zvenˇc´ı a v pˇr´ıpadˇe, ˇze ji vyˇzadujeme pro nˇekter´e osy odliˇsnou, lze pˇridat dalˇs´ı multiplexer a pˇrep´ınat i mezi komutaˇcn´ımi tabulkami. Tato moˇznost ale pravdˇepodobnˇe nebude ˇcast´a a nen´ı v digramu zn´azornˇena. Samotn´ y bˇeh regulaˇcn´ı smyˇcky je ˇr´ızen stylem dotaz a odpovˇed’, jako komponenty na sbˇernici Wishbone (viz. 4.2.3). Nadˇrazen´a entita mcc exec vyˇsle dotaz/ˇza´dost nastaven´ım sign´alu MCC STB O na vysokou u ´roveˇ n a ˇcek´a, aˇz pˇrijde odpovˇed’ o splnˇen´ı funkce v podobˇe vysok´e u ´rovnˇe na vstupu MCC ACK I. Pot´e postup opakuje pro dalˇs´ı osu. Synchronizace zaˇc´atku cel´eho cyklu je realizov´ana vstupem MCC EXEC I, kter´ y sleduje pˇreteˇcen´ı PWM ˇc´ıtaˇce.
5.2.2
Ostatn´ı entity
N´asleduje struˇcn´ y popis nˇekolika dalˇs´ıch komponent na t´eto u ´rovni n´avrhu: wave table Jedn´a se o pamˇet’ uchov´avaj´ıc´ı komutaˇcn´ı tabulku. V souˇcasnosti je form´at ˇc´ısel bez znam´enka a jejich rozsah je shodn´ y s rozsahem PWM gener´ator˚ u. Tabulka je inicializov´ana extern´ım souborem s daty. Vytvoˇrit ho lze pˇriloˇzen´ ym skriptem gen sin lut.m programu Matlab nebo upraven´ ym n´astrojem gen phase table z knihovny PXMC. qcounter Kvadraturn´ı ˇc´ıtaˇc vyhodnocuj´ıc´ı sign´aly z IRC senzor˚ u. Poskytuje 32-bitovou informaci o poloze. qcounter mcu16 Tato entita slouˇz´ı jako rozhran´ı mezi 32-bitov´ ym v´ ystupem kvadraturn´ıho ˇc´ıtaˇce a 16bitovou sbˇernic´ı mikrokontrol´eru. Pˇri ˇcten´ı doln´ıho slova ˇc´ıtaˇce je jeho horn´ı ˇca´st uloˇzena do registr˚ u, takˇze je moˇzn´e bezchybnˇe pˇreˇc´ıst cel´ ych 32 bit˚ u. Nen´ı nutn´e tuto entitu duplikovat pro kaˇzd´ y kvadraturn´ı ˇc´ıtaˇc, ale m˚ uˇze b´ yt pouˇzita jako pˇrizp˚ usobovac´ı rozhran´ı k cel´e skupinˇe 32-bitov´ ych komponent, ze kter´ ych se pouze ˇcte.
KAPITOLA 5. IMPLEMENTACE HARDWARU
39
pwm counter Toto je obecnˇe pouˇziteln´ y ˇc´ıtaˇc (realizovan´ y entitou counter), od kter´eho se odv´ıj´ı generov´an´ı vˇsech PWM a spouˇstˇen´ı softwarov´e i hardwarov´e regulaˇcn´ı smyˇcky. Pokud poˇzadujeme rozliˇsen´ı pˇripojen´ ych PWM gener´ator˚ u na pln´ ych n bit˚ u, mus´ı b´ yt nastaveno resetov´an´ı ˇc´ıtaˇce pˇri hodnotˇe 2n − 2. pwm3 Obsahuje tˇri d´ılˇc´ı PWM gener´atory. V´ ystup kaˇzd´eho gener´atoru je d´an komparac´ı uloˇzen´e poˇzadovan´e u ´rovnˇe a hodnoty extern´ıho ˇc´ıtaˇce. Komponenta obsahuje mezipamˇet’, takˇze novˇe zapsan´a hodnota se projev´ı aˇz n´asleduj´ıc´ı periodu PWM gener´atoru. gpio Jedn´a se o implementaci obecnˇe pouˇziteln´ ych vstup˚ u a v´ ystup˚ u. Form´alnˇe obsahuje ˇctyˇri registry: registr pro ˇcten´ı vstup˚ u, nastaven´ı v´ ystup˚ u a dva registry pro nahozen´ı/shozen´ı pouze nˇekter´ ych v´ ystup˚ u z´apisem odpov´ıdaj´ıc´ı bitov´e masky.
5.3
Regulaˇ cn´ı smyˇ cka
J´adro regulaˇcn´ı smyˇcky je implementov´ano v entitˇe mcc (Motion Control Chain), kter´a v´ıcem´enˇe pouze zapouzdˇruje dalˇs´ı entity, jeˇz se procesu regulace pˇr´ımo u ´ˇcastn´ı. Sch´ematick´e zn´azornˇen´ı jejich vztah˚ u je k vidˇen´ı na obr´azku 5.2. Kaˇzd´a z vnoˇren´ ych entit je koneˇcn´ ym stavov´ ym automatem, kter´ y je schopn´ y vykonat nad daty ve sd´ılen´e pamˇeti operaci jemu pˇr´ısluˇsej´ıc´ı. Vykon´av´an´ı jednotliv´ ych entit je ˇr´ızeno entitou mcc master obdobnˇe, jako je entitou mcc exec ˇr´ızeno vykon´av´an´ı regulaˇcn´ı smyˇcky mcc. Uveden´e ˇreˇsen´ı m´a v´ yhodu pˇredevˇs´ım v tom, ˇze entity jsou vz´ajemnˇe zcela izolovan´e. M˚ uˇzeme tedy probl´em dekomponovat na jednoduch´e kroky a kaˇzd´ y takov´ y krok implementovat samostatn´ ym stavov´ ym automatem a k nˇemu pˇr´ısluˇsej´ıc´ımi dalˇs´ımi komponentami, kter´e jsou potˇrebn´e, jako sˇc´ıtaˇcky, kompar´atory, bitov´e posuvy, n´asobiˇcky apod. Z tohoto d˚ uvodu bylo toto ˇreˇsen´ı zvoleno. Dalˇs´ı v´ yhodu pˇredstavuje, ˇze lze takto jednotliv´e komponenty snadno a oddˇelenˇe testovat nejen pomoc´ı simul´ator˚ u, ale tak´e pˇr´ımo v koneˇcn´e aplikaci pomoc´ı mikrokontrol´eru. Nev´ yhodami je, ˇze nˇekter´e ˇca´sti, jako pr´avˇe ony sˇc´ıtaˇcky, kompar´atory atd. jsou v podstatˇe duplicitn´ı z´aleˇzitost´ı a zbyteˇcnˇe zvyˇsuj´ı velikost v´ ysledn´eho hardwaru. Napˇr.
KAPITOLA 5. IMPLEMENTACE HARDWARU
40
ACK_O
mcc_master
STB_I
IRC_DAT_I
irc_dump
irc_base
pwm_min PWM_DAT_O
pwm_min_dump PWM1_STB_O
wave_table
PWM2_STB_O
vector_gen
PWM3_STB_O
sequencer multiplier
vector_scale
sequencer
ˇ arkovan´e ˇsipky znaˇc´ı pomyslnou cestu sign´ Obr´ azek 5.2: Vazby entit uvnitˇr regulaˇcn´ı smyˇcky mcc. C´ alu (dat) od vstupu na v´ ystup.
n´asobiˇcka – multiplier nen´ı souˇc´ast´ı d´ılˇc´ı entity pr´avˇe z d˚ uvodu pˇr´ıpadn´eho sd´ılen´ı s ostatn´ımi entitami. I kdyˇz dnes uˇz ani n´asobiˇcka nen´ı pˇr´ıliˇs velkou vz´acnost´ı, jak ukazuj´ı jej´ı poˇcty v tabulce 3.1. To ale neznamen´a, ˇze nem˚ uˇze b´ yt pˇr´ıpadnˇe vyuˇzita jinak a smysluplnˇeji. O mnoho vˇetˇs´ı nev´ yhodou je nutnost sd´ılet sbˇernici k extern´ı pamˇeti (s registry) se vˇsemi zapouzdˇren´ ymi entitami, kter´e se regulaˇcn´ı smyˇcky u ´ˇcastn´ı. Jak jiˇz bylo dˇr´ıve vysvˇetleno, tento pˇr´ıstup vede k pomˇernˇe velk´emu poˇctu multiplexer˚ u (pˇredevˇs´ım na ˇ sen´ım by bylo pouˇz´ıt centr´aln´ı, sd´ılenou datov´ ych a adresn´ıch vodiˇc´ıch) a nen´ı efektivn´ı. Reˇ aritmeticko-logickou jednotku (ALU), pˇres n´ıˇz by proch´azely vˇsechna data. Multiplexovat by se pot´e musely pouze jej´ı ˇr´ıdic´ı sign´aly.
5.3.1
Entita mcc master
´ celem entity mcc master je ˇr´ıdit spouˇstˇen´ı ostatn´ıch entit, kter´e uˇz pˇr´ımo vykon´avaj´ı Uˇ svou ˇca´st regulaˇcn´ıho ˇretˇezce (viz. obr´azek 5.2). Zp˚ usob pˇripojen´ı tˇechto entit k jednotce mcc master ilustruje obr´azek 5.3. Princi spouˇstˇen´ı blok˚ u pomoc´ı sign´al˚ u STB a ACK je obdobn´ y jako ten popsan´ y v kapitole 5.2.1. Rozˇs´ıˇren´ım je, ˇze lze vykon´av´an´ı jednotliv´ ych blok˚ u regulaˇcn´ı smyˇcky povolit/zak´azat nastaven´ım bit˚ u v registru MCC EN. M´ame tedy moˇznost bez nutnosti rekonfigurace m´ırnˇe mˇenit podobu regulaˇcn´ı smyˇcky. Napˇr. v pˇr´ıpadˇe potˇreby je moˇzn´e z mikrokontrol´eru pˇr´ımo ˇr´ıdit hodnoty v´ ystupn´ıho napˇet´ı na vˇsech f´az´ıch (a vyuˇz´ıt, ˇci nevyuˇz´ıt modifikovan´eho sp´ın´an´ı), nebo ˇr´ıdit aˇz velikost a u ´hel v´ ystupn´ıho vektoru apod. V praxi je
KAPITOLA 5. IMPLEMENTACE HARDWARU
41
nutnost´ı takto do regulaˇcn´ıho ˇretˇezce zasahovat minim´alnˇe pˇri inicializaci hardwaru. Mus´ıme ale poˇc´ıtat s t´ım, ˇze pokud zmˇenou v registru MCC EN zakazujeme vykon´av´an´ı nˇekter´eho bloku, zmˇena se projev´ı aˇz pˇri n´asleduj´ıc´ım regulaˇcn´ım cyklu. Ignorov´an´ı t´eto skuteˇcnosti a okamˇzit´a modifikace nˇekter´eho z dalˇs´ıch registr˚ u pravdˇepodobnˇe poˇ sen´ım tohoto probl´emu, vede k soubˇehu a regulaˇcn´ı smyˇcka upraven´a data pˇrep´ıˇse. Reˇ jeˇz by si vyˇza´dalo nejmenˇs´ı aktivitu na stranˇe softwaru, by bylo pouˇzit´ı dvou pamˇet´ı, jak bylo navrˇzeno v ˇca´sti 5.1.1. Pokud jsou ale modifikovan´e registry obnovovan´e periodicky s kaˇzd´ ym cyklem softwarov´e regulaˇcn´ı smyˇcky v mikrokontrol´eru, nemus´ı b´ yt tento probl´em pro funkˇcnost z´asadn´ı. modul regulační smyčky IRF_ACK_I IRF_DAT_I
IRF_ADR_O
IRF_ACK_I IRF_ADR_O IRF_DAT_I IRF_DAT_O
ACK_O
IRF_STB_O
STB_I
IRF_WE_O
IRF_DAT_O IRF_STB_O
mcc_master
IRF_WE_O
IRF_ACK_I
MCC_ACK_I(0)
IRF_ADR_O
MCC_STB_O(0)
IRF_DAT_I IRF_DAT_O
MCC_ACK_I(1)
IRF_STB_O
MCC_STB_O(1)
IRF_WE_O
ACK_O STB_I
ACK_O STB_I MCC_MUX_CODE MCC_MUX_EN
Obr´ azek 5.3: Princip propojen´ı entity mcc master a ostatn´ıch entit, jejichˇz vykon´av´an´ı ˇr´ıd´ı.
5.3.2
Entita sequencer
Entita slouˇz´ı k vykon´an´ı operace podˇr´ızen´e entity postupnˇe nad vˇsemi f´azemi motoru. Pokud se podˇr´ızen´a entita snaˇz´ı pˇristoupit k registr˚ um prvn´ı f´aze, je tento stav detekov´an a pˇr´ıstup pˇresmˇerov´an do adresov´eho prostoru pr´avˇe zpracov´avan´e f´aze. Aby byl tento postup efektivn´ı, jsou registry jednotliv´ ych f´az´ı zarovn´any do blok˚ u velikosti 2n .
5.3.3
Ostatn´ı entity
N´asleduje struˇcn´ y popis ˇcinnosti ostatn´ıch entit v regulaˇcn´ı smyˇcce.
KAPITOLA 5. IMPLEMENTACE HARDWARU
42
irc dump Uloˇz´ı spodn´ıch 16 bit˚ u hodnoty kvadraturn´ıho ˇc´ıtaˇce do registru MCC IRC. irc base Pokud je to nutn´e, pˇriˇcte nebo odeˇcte registr MCC IPER od MCC IBASE. A to tak, aby platilo, ˇze MCC ANGLE = MCC IRC − MCC IBASE leˇz´ı v intervalu 0 aˇz MCC IPER − 1 vˇcetnˇe. Do sd´ılen´e pamˇeti takt´eˇz uloˇz´ı aktualizovanou hodnotu MCC ANGLE. Pokud se registry MCC IRC a MCC IBASE liˇs´ı o v´ıce neˇz MCC IPER, dojde ke splnˇen´ı podm´ınky aˇz po nˇekolika pr˚ uchodech regulaˇcn´ı smyˇckou. vector gen Rozloˇz´ı jednotkov´ y vektor s argumentem MCC ANGLE do tˇr´ı f´az´ı (tj. registr˚ u MCC Px). Rozklad je prov´adˇen vyˇc´ıt´an´ım hodnot z komutaˇcn´ı tabulky wave table. vector scale Vyn´asob´ı hodnoty v registrech MCC Px velikost´ı akˇcn´ıho z´asahu (velikost´ı napˇet’ov´eho vektoru) MCC ACTION. V´ ysledek je uloˇzen do odpov´ıdaj´ıc´ıch registr˚ u MCC PWMx. Opakov´an´ı pro vˇsechny f´aze je doc´ıleno pouˇzit´ım entity sequencer. Akˇcn´ı z´asah MCC ACTION je v souˇcasnosti interpretov´an jako znam´enkov´ y typ s pevnou desetinnou ˇca´rkou na 10. m´ıstˇe. pwm min Vyhled´a v registrech MCC PWMx nejmenˇs´ı hodnotu PWM a uloˇz´ı ji do registru MCC PWMMIN. pwm min dump Nastavuje extern´ı PWM gener´atory na hodnoty MCC PWMx − MCC PWMMIN, ˇc´ımˇz je realizov´ano tzv. buzen´ı modifikovanou sinusovkou. Opakov´an´ı pro vˇsechny f´aze je doc´ıleno pouˇzit´ım entity sequencer.
5.4
Vlastnosti v´ ysledn´ eho n´ avrhu
Simulac´ı bylo zmˇeˇreno, ˇze vykon´an´ı cel´e hardwarov´e regulaˇcn´ı smyˇcky trv´a 78 hodinov´ ych takt˚ u. PWM sign´al je generov´an s frekvenc´ı 20 kHz a rozliˇsen´ım 10 bit˚ u. Na jeden cyklus
KAPITOLA 5. IMPLEMENTACE HARDWARU
43
hardwarov´e smyˇcky tedy pˇripad´a v´ıce jak 1000 hodinov´ ych takt˚ u. To znamen´a, ˇze by nemˇel b´ yt probl´em navrˇzen´ ym hardwarem ˇr´ıdit s bohatou rezervou i 10 os, coˇz je v praxi pro vˇetˇsinu aplikac´ı v´ıce neˇz dostaˇcuj´ıc´ı. Co se t´ yˇce velikosti v´ ysledn´eho obvodu, tak na obr´azku 5.4 m˚ uˇzeme hrubˇe porovnat, kolik prostoru kter´a ˇc´ast zab´ır´a. Orientaˇcn´ı ˇc´ısla v poˇctu jednotek LUT jsou n´asleduj´ıc´ı:
Obr´ azek 5.4: Pohled z n´ astroje floorplan na vyuˇzit´ı prostoru hradlov´eho pole. Obr´azky popoˇradˇe zleva znaˇc´ı: 1. modul syntetizovan´eho mikrokontrol´eru (openMSP430 8 32 mul dbus), 2. regulaˇcn´ı smyˇcka (mcc), 3. vˇsechno ostatn´ı, tj. pwm gener´atory, vstupy, kvadraturn´ı ˇc´ıtaˇc atd.
Nejv´ıce zab´ır´a syntetizovan´ y mikrokontrol´er (vˇcetnˇe pamˇet´ı a modulu UART) – 2163. Samotn´e j´adro mikrokontrol´eru o nˇeco m´enˇe – 1953. D´ale nejv´ıce zab´ır´a hardwarov´a regulaˇcn´ı smyˇcka mcc – 426. Vˇsechny ostatn´ı komponenty, tj. PWM gener´atory, kvadraturn´ı ˇc´ıtaˇc, vstupy, entita mcc exec a dalˇs´ı – pouze 162. Celkovˇe se jedn´a pˇribliˇznˇe o 1380 jednotek Slice. Cel´ y n´avrh by se tedy mˇel vej´ıt do hradlov´eho pole SC3S200A. Poznamenejme, ˇze multiplexery v mcc, kter´e propojuj´ı jednotliv´e moduly, obsazuj´ı 93 jednotek LUT, tj. pˇres 20 % celkov´e velikosti mcc. Zde by pomohla jiˇz zm´ınˇen´a implementace centr´aln´ı aritmeticko logick´e jednotky. Byl uˇcinˇen pokus o jej´ı implementaci (z´ajemci ji mohou naj´ıt v odpov´ıdaj´ıc´ım reposit´aˇri na pˇriloˇzen´em CD ve v´ yvojov´e vˇetvi central alu). Pˇrechodem modulu irc base na tuto centr´aln´ı ALU, kter´a um´ı prov´adˇet operace sˇc´ıt´an´ı, odˇc´ıt´an´ı a n´asoben´ı, se jeho velikost (vˇcetnˇe ALU) zmenˇsila ze 161 LUT na 109. Doˇslo ovˇsem tak´e k jist´emu zpomalen´ı, protoˇze napˇr. k porovn´av´an´ı je m´ısto dedikovan´eho kompar´atoru pouˇzito odˇc´ıt´an´ı apod. Pokud by na centr´aln´ı ALU pˇreˇsly i ostatn´ı moduly, mohla by b´ yt u ´spora prostoru markantn´ı.
Kapitola 6 Implementace Softwaru Mikrokontrol´ery MSP430 jsou pomˇernˇe rozˇs´ıˇren´e a existuj´ı pro nˇe dostupn´e n´astroje. Jedn´ım z nich je i pˇrekladaˇc mspgcc (port zn´am´eho pˇrekladaˇce GNU GCC), kter´ y byl pˇri v´ yvoji pouˇzit. V´ yhodou je velmi dobˇre zpracovan´ y manu´al [15]. Takt´eˇz je dobr´e m´ıt dispozici specifikaci architektury [14]. Za u ´ˇcelem ˇr´ızen´ı na u ´rovni mikrokontrol´eru bylo vyuˇzito knihovny PXMC pro ˇr´ızen´ı motor˚ u, frameworku Sysless a syst´emu pro automatick´ y pˇreklad softwaru OMK (Ocera Make System). Knihovna PXMC byla vyvinuta ve firmˇe PiKRON a d´ale poskytnuta katedˇre ˇr´ızen´ı pro jej´ı v´ yzkumn´e, studentsk´e a open-source projekty s nab´ıdkou na spolupr´aci na dalˇs´ım v´ yvoji. Vyˇcerp´avaj´ıc´ı popis t´eto knihovny m˚ uˇzeme nal´ezt v diplomov´e pr´aci [13]. Nebude zde uveden podrobn´ y postup zprovoznˇen´ı pˇrekladaˇce, doplnˇen´ı z´akladn´ıch knihoven pro pouˇzit´ y mikrokontrol´er a n´asledn´a portace knihovny PXMC. Omez´ıme se pouze na z´akladn´ı fakta a nˇekter´e, ne obecnˇe pˇr´ıliˇs zn´am´e, podrobnosti. Z´ajemci o tuto ˇca´st pr´ace naleznou jej´ı v´ ysledky na pˇriloˇzen´em CD, konkr´etnˇe v modulech: • Sysless (sysless/arch/msp430/ a sysless/board/msp430/) • PXMC (pxmc/libs4c/pxmc bsp/virtex2/) Dodejme, ˇze komunikace s nadˇrazen´ ym poˇc´ıtaˇcem prob´ıh´a po s´eriov´e lince RS232. K interpretaci pˇr´ıkaz˚ u slouˇz´ı knihovna cmdproc z frameworku Sysless.
6.1
Pˇ reklad programu
Jednou ze z´akladn´ıch nutnost´ı je pˇrekladaˇci sdˇelit, pro jakou verzi mikropoˇc´ıtaˇce m´a pˇrekl´adat. Dˇeje se tak klasicky pˇrep´ınaˇcem -mmcu (napˇr. -mmcu=msp430x423). Pˇri pˇrekladu 44
KAPITOLA 6. IMPLEMENTACE SOFTWARU
45
zvol´ıme verzi mikropoˇc´ıtaˇce, kter´ y nejl´epe odpov´ıd´a pouˇzit´e konfiguraci syntetizovan´eho mikropoˇc´ıtaˇce. Liˇs´ı se pˇredevˇs´ım pˇr´ıtomnost´ı hardwarov´e n´asobiˇcky a dalˇs´ı perif´eri´ı a velikost´ı pamˇet´ı. Snadno se ale m˚ uˇze st´at, ˇze naˇse konfigurace pamˇet´ı ˇza´dn´e vyr´abˇen´e verzi neodpov´ıd´a. V tom pˇr´ıpadˇe vybereme tu, kter´a ji jinak odpov´ıd´a nejl´epe, a mus´ıme pˇrikroˇcit k modifikaci tzv. linker skriptu (napˇr. msp430x423.x). Tento skript pod´av´a pˇrekladaˇci (linkeru) informaci o tom ,jak m´a b´ yt v´ ysledn´ y program sestaven. Obsahuje tedy i informace o velikostech pamˇet´ı apod. Velikosti datov´ ych oblast´ı uprav´ıme n´asleduj´ıc´ımi ˇra´dky ( text“ znaˇc´ı programovou ” pamˇet’, data“ pamˇet’ datovou): ” text
(rx)
: ORIGIN = 0x8000,
LENGTH = 0x7fe0 /* 32K */
data
(rwx)
: ORIGIN = 0x0200,
LENGTH = 0x2000 /*
8K */
D´ale je nutn´e upravit inicializaˇcn´ı hodnotu ukazatele na z´asobn´ık. Ta by mˇela u mikrokontrol´er˚ u MSP430 vˇzdy ukazovat na nejvyˇsˇs´ı m´ısto v datov´e pamˇeti. Klasick´ ym zp˚ usobem bychom poˇzadovan´e zmˇeny dos´ahly n´asleduj´ıc´ım ˇra´dkem: PROVIDE (__stack = 0x2200) ; ˇ sen´ım je pouˇz´ıt Je ovˇsem moˇzn´e velice snadno na tuto druhou u ´pravu zapomenout. Reˇ m´ısto toho n´asleduj´ıc´ı u ´pravu, kter´a poˇc´ıt´a inicializaˇcn´ı hodnotu ukazatele
stack au-
tomaticky: PROVIDE (__stack = ORIGIN(data) + LENGTH(data)) ; Moˇznost druh´eho ˇreˇsen´ı se objevuje aˇz v novˇejˇs´ıch verz´ıch pˇrekladaˇce a nen´ı k vidˇen´ı pˇr´ıliˇs ˇcasto, moˇzn´a z d˚ uvod˚ u zpˇetn´e kompatibility. Pokud ot´azku zpˇetn´e kompatibility nemus´ıme ˇreˇsit, m˚ uˇze n´am ulehˇcit pr´aci a ˇcas str´aven´ y hled´an´ım pˇr´ıpadn´e chyby.
6.1.1
Knihovna PXMC
Pˇri portov´an´ı knihovny PXMC je nutn´e pˇredevˇs´ım napsat funkce zajiˇst’uj´ıc´ı rozhran´ı s nov´ ym hardwarem. Obr´azek 6.1 ukazuje vnitˇrn´ı strukturu knihovny pˇri ˇr´ızen´ı jedn´e osy. Portov´an´ı se t´ yk´a pˇredevˇs´ım dvojitˇe or´amovan´ ych blok˚ u pro vstup a v´ ystup. Jejich podstatn´a ˇc´ast byla implementov´ana v hradlov´em poli. Zbyl´a ˇca´st tˇechto dvou funkc´ı tvoˇr´ı styˇcnou plochu mezi softwarem a hardwarem a ˇreˇs´ı ot´azky okolo inicializace, kdyˇz na zaˇca´tku pˇri spuˇstˇen´ı syst´emu nen´ı zn´ama pˇresn´a poloha rotoru podle IRC sn´ımaˇce. Po
KAPITOLA 6. IMPLEMENTACE SOFTWARU
46
probˇehnut´ı inicializace se vykon´avan´ y k´od v´ ystupn´ı funkce prakticky redukuje na pouh´ y z´apis akˇcn´ıho z´asahu do registru MCC ACTION navrˇzen´eho hardwaru – komutace jiˇz nemus´ı b´ yt ˇreˇsena softwarovˇe.
do_inp
ENG
do_gen
AS
IRC
ENR
AP
do_out MD MD2E errchk
RP RS
MA, MS EP, GEN_ST GEN_INFO
do_con ME
P D
PWM and commutation
ERC ENE
MOSFET driver +current limit
ENI
DC Motor
I
S1, S2 DBG
do_deb
PIRC, PTPER PTOFS, PTSHIFT PTVANG, PTINDX PTPTR1/2
Obr´ azek 6.1: Struktura ˇr´ızen´ı jedn´e osy v knihovnˇe PXMC. Dvojitˇe or´amovan´e bloky jsou z vˇetˇs´ı ˇc´ asti realizov´ any v navrˇzen´em hardwaru.
V mikrokontrol´eru bˇeˇz´ı pˇredevˇs´ım j´adro knihovny PXMC tvoˇren´e vlastn´ı regulaˇcn´ı smyˇckou a gener´atorem tras. Aby bylo moˇzn´e k navrˇzen´emu hardwaru pˇristupovat z jazyka C, byly naps´any hlaviˇckov´e soubory definuj´ıc´ı logick´e adresy registr˚ u hardwaru a poskytuj´ıc´ı makra, pˇr´ıpadnˇe funkce, pro komunikaci s n´ım. Jmenovitˇe se jedn´a o soubory gpio.h, mcc.h, quadcount.h pro stejnojmenn´e entity napsan´e v jazyku VHDL.
6.1.2
Gener´ ator komutaˇ cn´ıch profil˚ u
Dˇr´ıve byla komutace ˇreˇsena softwarovˇe pr´avˇe ve v´ ystupn´ı funkci. A tabulka s komutaˇcn´ım profilem byla uloˇzena v pamˇeti mikrokontrol´eru. Pro jej´ı snadn´e generov´an´ı je souˇca´st´ı knihovny PXMC n´astroj gen phase table, kter´ y vygeneruje tabulku v podobˇe k´odu jazyka C. Nyn´ı je tabulka pevnou souˇc´ast´ı hardwaru (viz. kapitola 5.2, entita wave table) a soubor s komutaˇcn´ım profilem se j´ı pˇred´av´a jako generick´ y parametr. Kaˇzd´ y bod profilu mus´ı b´ yt zaps´an na zvl´aˇstn´ım ˇr´adku a v bin´arn´ım form´atu (snadn´e zpracov´an´ı jazykem VHDL). O generov´an´ı tˇechto inicializaˇcn´ıch soubor˚ u byl p˚ uvodn´ı n´astroj rozˇs´ıˇren. Pro souˇcasnou implementaci hardwaru vyuˇzijeme zejm´ena spuˇstˇen´ı n´astroje s parametrem -f vhdl-bias, coˇz zp˚ usob´ı generov´an´ı ˇc´ısel jako typu bez znam´enka v rozsahu hodnot gener´atoru PWM (komutaˇcn´ı profil je posunut smˇerem nahoru o polovinu rozsahu). Pro budouc´ı pouˇzit´ı je pˇripraveno i generov´an´ı ˇc´ısel jako typu se znam´enkem – parametr -f vhdl-sig.
Kapitola 7 Z´ avˇ er Bˇehem pr´ace se podaˇrilo navrhnout funkˇcn´ı a pouˇzitelnou ˇr´ıdic´ı jednotku pro bezkart´aˇcov´e motory kompletnˇe implementovanou v hradlov´em poli. Komutace prob´ıh´a modifikovan´ ym ˇ ıdic´ı jednotka tedy vyuˇzije vˇetˇsiny moˇznost´ı, kter´e bezkart´aˇcov´e sinusov´ ym sign´alem. R´ motory nab´ızej´ı, jako je kvalitn´ı polohov´a regulace, hladk´ y chod a dalˇs´ı souvisej´ıc´ı v´ yhody. Pˇrestoˇze zaˇr´ızen´ı nebylo testov´ano na v´ıceos´em stroji, je pro provoz v´ıce os dobˇre pˇripraveno. Takt´eˇz vnitˇrn´ı uspoˇra´d´an´ı syntetizovan´eho hardwaru umoˇzn ˇuje postupn´e rozˇsiˇrov´an´ı a vylepˇsov´an´ı jeho funkˇcnosti. Nˇekter´e n´avrhy na budouc´ı zlepˇsen´ı byly v textu zm´ınˇeny. Pˇredevˇs´ım se ale jedn´a o implementaci proudov´ ych regul´ator˚ u a n´asledn´eho momentov´eho ˇr´ızen´ı, kter´e bude pravdˇepodobnˇe stˇredem pozornosti pˇri dalˇs´ım v´ yvoji.
47
Literatura [1] MIPS-6371 Processor Specification. 2002. URL: hhttp://6004.csail.mit.edu/6.371/handouts/mips6371.pdfi [2] Data2MEM User Guide. 2007. URL: hwww.xilinx.com/itp/xilinx10/books/docs/d2m/d2m.pdfi [3] Chapman, K.: Get your Priorities Right - Make your Design Up to 50% Smaller. Technick´ a Zpr´ava WP275, Xilinx, 2007. URL: hhttp://www.xilinx.com/support/documentation/white_papers/wp275.pdfi [4] Chapman, K.: Get Smart About Reset: Think Local, Not Global. Technick´a Zpr´ ava WP272, Xilinx, 2008. URL: hhttp://www.xilinx.com/support/documentation/white_papers/wp272.pdfi [5] Chapman, K.: Multiplexer Selection. Technick´a Zpr´ava WP274, Xilinx, 2008. URL: hhttp://www.xilinx.com/support/documentation/white_papers/wp274.pdfi [6] Chapman, K.: Saving Costs with the SRL16E. Technick´a Zpr´ava WP271, Xilinx, 2008. URL: hhttp://www.xilinx.com/support/documentation/white_papers/wp271.pdfi [7] Girard, O.: openMSP430 an MSP430 clone. 2010. URL: hhttp://opencores.org/usercontent,doc,1299010945i [8] Hwang, E. O.: Digital logic and microprocessor design with VHDL. Victoria: Thomson, 2006, ISBN 0534465935. [9] maxon motor: Program 2010/11. URL: hhttp://www.maxonmotor.ch/e-paper/i [10] OpenCores: WISHBONE System-on-Chip (SoC) Interconnection Architecture for Portable IP Cores. 2010. URL: hhttp://cdn.opencores.org/downloads/wbspec_b4.pdfi
48
LITERATURA
49
[11] Pedroni, V. A.: Digital electronics and design with VHDL. Amsterdam; Boston: Morgan Kaufmann, 2008, ISBN 978-0123742704. [12] Santarini, M.: Zynq-7000 EPP Sets Stage for New Era of Innovations. Xcell journal, , ˇc. 75, 2011. URL: hwww.xilinx.com/publications/archives/xcell/Xcell75.pdfi [13] Skup, K. R.: Motion Control for Mobile Robots. Diplomov´a pr´ace, CTU in Prague, 2007. URL:
hhttp://support.dce.felk.cvut.cz/mediawiki/images/8/83/Dp_2007_skup_
konrad.pdfi [14] Texas Instruments, Incorporated: MSP430x1xx Family User’s Guide (Rev. F). 2006. URL: hhttp://focus.ti.com/lit/ug/slau049f/slau049f.pdfi [15] Underwood, S.: A port of GNU tools to the Texas Instruments MSP430 microcontrollers. 2003. URL:
hhttp://sourceforge.net/projects/mspgcc/files/documentation/031127/
mspgcc-manual-20031127.pdf/downloadi [16] Xilinx: Development System Reference Guide. 2007. URL: hhttp://www.xilinx.com/itp/xilinx10/books/docs/dev/dev.pdfi [17] Xilinx: XST User Guide. 2008. URL: hwww.xilinx.com/itp/xilinx9/books/docs/xst/xst.pdfi [18] Xilinx: Spartan-3 FPGA Family. 2009. URL: hhttp://www.xilinx.com/support/documentation/data_sheets/ds099.pdfi
Pˇ r´ıloha A Pouˇ zit´ e softwarov´ e projekty K implementaci pr´ace byly pouˇzity n´asleduj´ıc´ı softwarov´e projekty: • Knihovna PXMC (PiKRON) ˇ • Framework Sysless (Agrosoft, DCE FEL CVUT a PiKRON) • OMK – Ocera Make System (Projekt OCERA) • Quadcount (Ing. Marek Peca) • Syntetizovan´ y mikrokontrol´er openMSP430 (opencores.com) • Syntetizovan´ y mikrokontrol´er Plasma (opencores.com)
I
Pˇ r´ıloha B Obsah pˇ riloˇ zen´ eho CD text/
– Text bakal´aˇrsk´e pr´ace.
modules/
– Reposit´aˇre komponent vznikl´ ych/upraven´ ych pˇri v´ yvoji.
projects/ – Reposit´aˇre p˚ uvodn´ıch projekt˚ u. finals/
– Koneˇcn´e projekty urˇcen´e pro kompilaci.
README
– Bliˇzˇs´ı popis obsahu CD.
II