Está en la página 1de 103

ELEKTRONSKI FAKULTET U NIU

SEMINARSKI RAD

ARM7 PROCESOR
Predmet: Mikroprocesorska sistemi

Profesor:

Studenti:

Prof.dr. Mile Stojev

Aleksandar Mladenovi 10017 Davor Dejkovi 9885 Bojan Pavlovi 10035 Milo Milenkovi 9989

Ni, oktobar 2006.

Mikroprocesorski sistemi

ARM7 procesor

SADRAJ

Uvod..........................................................................................................................4
1. Arhitektura ARM procesora .............................................................................5 1.1 Arhitekturalno naslee .....................................................................................5 1.2 Pogled programera na ARM model .................................................................5 1.3 Razvojni alati ARM .........................................................................................7 2. Organizacija i implementacija ARM ....................................................................9 2.1 Trostepeni komunikacioni kanal (pipeline) ...................................................10 2.2 Peto-stepeni ARM processor .......................................................................12 3. ARM jezgra procesora ......................................................................................14 3.1 ARM7TDMI .................................................................................................14 3.1.1 Hardverski interfejs ...................................................................................15 3.1.2 Kontrola takta ............................................................................................15 3.1.3 Memorijski interfejs ..................................................................................15 3.1.4 MMU interfejs ...........................................................................................17 3.1.5 Stanje .........................................................................................................17 3.1.6 Konfiguracija .............................................................................................17 3.1.7 Prekidi .......................................................................................................18 3.1.8 Inicijalizacija .............................................................................................18 3.1.9 Podrka za debug-ovanje ...........................................................................18 3.1.10 Interfejs za debug-ovanje ........................................................................19 3.1.11 Interfejs koprocesora ...............................................................................19 3.1.12 JTAG interfejs .........................................................................................19 3.1.13 TAP informacije ......................................................................................19 3.1.14 Boundary scan .........................................................................................19 3.1.15 ARM7TDMI u sintezi .............................................................................20 3.2 ARM8TDMI .................................................................................................21 3.3 ARM9TDMI .................................................................................................22 4. Skup instrukcija ARM .........................................................................................23 4.1 Tipovi podataka sa kojima ARM manipulie ...............................................23 5. Tipovi instrukcija procesora ARM ....................................................................23 5.1 Instrukcije za pribavljnje podataka i memorisanje ....................................23 5.1.1 Instrukcije za prenos podataka tipa jedna re ili neoznaeni bajt ..............23 5.1.2 Instrukcije za prenos podataka tipa polurei i oznaenih bajtova ..............26 5.1.3 Viestruke instrukcije za uitavanje i smetanje ........................................28 1

Mikroprocesorski sistemi

ARM7 procesor

5.2 Instrukcije za razmene sadraja memorije i registra .................................29 5.3 Instrukcije pristupa status registara ............................................................30 5.3.1 Instrukcije za prenos stanja statusnog registara u registre opte namene ..30 5.3.2 Instrukcije za prenosa registara opte namene u statusni registar ..............31 5.4 Instrukcije za obradu podataka ....................................................................33 5.4.1 Aritmetike operacije .................................................................................36 5.4.2 Logike operacije .......................................................................................37 5.4.3 Operacije premetanja sadraja registara ...................................................37 5.4.4 Operacije poreenja ....................................................................................37 5.4.5 Neposredni operandi ...................................................................................38 5.4.6 Pomereni registarski operandi ....................................................................38 5.5 Razliite aritmetike instrukcije ...................................................................39 5.5.1 Prebrojavanje poetnih nula (CLZ(Count Leading Zeros) ........................39 5.6 Instrukcije mnoenja .....................................................................................40 5.7 Instrukcije grananja .......................................................................................42 5.7.1 Grananje sa linkom (B, BL) .......................................................................42 5.7.2 Grananje sa linkom i razmenom (BX, BLX) ...............................................43 5.8 Instrukcije za generisanje softverkoih prekida.............................................45 5.8.1 Softverski prekid (SWI) .............................................................................45 5.8.2 Instrukcija prekidna taka (BKPT samo za v5T arhitekturu) ..................47 5.9 Instrukcije koprocesora .................................................................................47 5.9.1 Operacije podataka koprocesora .................................................................47 5.9.2 Prenos podataka koprocesoru .....................................................................48 5.9.3 Prenos registara koprocesora ......................................................................50 6. Hardver i Softver Proces kreiranja ...................................................................52 6.1 Verifikaciona Platforma ....................................................................................52 6.2 Programerski pogled na svet...........................................................................57 6.3 Hardverski pogled na svet ..............................................................................59 6.4 Softverski razvojni alati ..................................................................................59 6.4.1 Editor ...........................................................................................................59 6.4.2 Revizija izvornog koda ................................................................................59 6.4.3 Kompajler ....................................................................................................60 6.4.4 Debager ........................................................................................................60 6.4.5 Simulator .....................................................................................................60 6.4.6 Razvojna ploa ............................................................................................61 6.4.7 Integrisana razvojan sredina (IDE) ..............................................................61 6.5 Povezivanje softvera za debagiranje ..............................................................61 6.5.1 JTAG ...........................................................................................................62 6.5.2 STUB ...........................................................................................................62 6.5.3 Direktna konekcija .......................................................................................62 6.6 Tipovi softvera .................................................................................................63 6.6.1 Inicijalizacija sistema i HAL ......................................................................63 6.6.2 Dijagnostiki test program ..........................................................................63 6.6.3 Operativni sistem za rad u realnom vremenu (RTOS) ................................64 6.6.4 Pokretacki programi i aplikacioni softver ..................................................64 6.7 Proces razvoja softvera ...................................................................................64 6.8 Hardverska razvojna sredstva .......................................................................64 6.8.1 Editor ...........................................................................................................65 2

Mikroprocesorski sistemi

ARM7 procesor

6.8.2 Kontrola revizije izvornog koda ..................................................................65 6.8.3 Alati .............................................65 6.8.4 Pokrivenost koda .............................................66 6.8.5 Alati za debag-ovanje ..................................................66 6.8.6 Programski jezici za verifikaciju .........................67 6.8.7 Tvrdjenja ..............................67 6.8.8 Definisanje debag-ovanja ...............................................................67 6.8.9 Memorijski modeli ..................................................................68 6.8.10 Mikroprocesorski model.........................................69 6.8.11 Proces dizajniranja hardvera ......................................70 6.8.12 Pregled mikroprocesora......................................70 6.8.13 Interakcija hardvera i softvera............................71 7.Opis Starter Kit-a....................................................................................................73 7.1. Kratak uvod ...................................................................................................73 8. ARM starter kit ....................................................................................................74 8.1 Opti opis .........................................................................................................76 CPU .......................................................................................................................82 Kratkospajai .........................................................................................................83 Napajanje (USB plug) ...........................................................................................86 JTAG .....................................................................................................................87 LM386 NF pojaava ............................................................................................88 Pobuda LED dioda ................................................................................................89 Tasteri ....................................................................................................................91 Kolo za prilagoenje MAX563 .............................................................................91 9. Povezivanje sistema i kreiranje aplikacije .........................................................94 Zakljuak....................................................................................................................98 Dodatak A - Prikaz detaljne eme mikrokontrolera LPC 2138 ............................99 Literatura..................................................................................................................102

Mikroprocesorski sistemi

ARM7 procesor

Uvod

ARM procesor pripada RISC familiji procesora. RISC koncept potie iz 80-tih godina i programa istraivanja sa Univerziteta Stanford i Berkeley. ARM je razvijen na Kembridu u Acorn kompaniji iz Engleske u periodu od 1983. do 1985. Bio je to prvi RISC mikroprocesor koji je razvijen za komercijalnu namenu. Jedan od nedostataka RISC dizajna bio je taj da su programi koji su se izvravali na njima bili veliki. Ovo je posledica kompajlera koji su morali da generiu due sekvence od prostijih instrukcija da postignu iste rezultate kao CISC. Dananji raunari su prividno (interno) dvoadresni, a eksterno jednoadresni, jer asemblerske instrukcije imaju samo jedan memorijski argument, a ostalo su konstante i lokalni registri. Nijedan procesor nije posebno primenljiv bez odgovarajue podrke koju mu pruaju hardver i softver, kao i razvojni alati. ARM je opremljen alatom koji sadri: emulator za izvoenje skupa instrukcija za hardversko modeliranje i softversko testiranje, asembler, C i C++ kompajlere, linker i simboliki debuger. Za razumevanje hardversko/softverske ko-verifikacije neophodno je razumeti princip rada alata kao i proces koji se koristi za razvoj hardvera i softvera. Do skora, integracija softvera sa hardverom se izvodila u laboratorijiskom okruzenju konstrukcijom hardvera i pokretanjem softvera. Debagiranje se izvodilo opremom kao to su : in-circuit emulatori (ICE), logiki analizatori i osciloskopi. Debagiranje u kasnijoj fazi projektovanja, kada je pritisak na projektante zbog definisanog roka najvei, je naporan i stresan zadatak. Ko-verifikacijom menja se ovakav pristup jer se koristi virtuelni prototip hardvera koji se izvrava na softveru pre nego sto je prototip dostupan. Testiranje karakteristika gradivnih blokova sistema je danas jednostavno mogue korienjem development kit-ova. To su sistemi za razvoj projektovani po odreenom standardu. Oni su u stanju da ispitaju realne karakteristike odreenih komponenti, kao na primer mikrokontrolera. Dobar development kit sadri funkcionalni primer ureaja koji elimo projektovati i na kome moemo testirati kreirani kod, kao i odgovarajue integrisano razvojno okruenje (Integrated Development Environment - IDE). U sastavu ovakvog IDE okruenja se obicno nalazi editor, debugger, simulator, asembler i kompajler (u najveem broju sluajeva C kompajler). Development kit ima ugradjene gradivne blokove (periferije) kojima se moe pratiti uitavanje i izvravanje neke aplikacije. Ti gradivni blokovi su memorija, portovi za komunikaciju, delovi za hardversku konfiguraciju... Moraju postojati i kablovi i alati za povezivanje i download koda u procesor. U nastavku teksta bice objanjena arhitektura, struktura i mogunosti jednog starter kit-a kao i njegov skup komandi namenjenih za testiranje rada sistema zasnovanih na mikrokontroleru tipa LPC2138.

Mikroprocesorski sistemi

ARM7 procesor

1. Arhitektura ARM procesora

1.1 Arhitekturalno naslee


U vreme kada se pojavio ARM ip, jedino raspoloive RISC arhitekture su bile RISC I razvijen na Berkeley-u i MIPS na Stanfordu. ARM arhitektura je prihvatila brojne osobine RISC I dizajna, ali je brojne odbacila. One koje su se i dalje koristile su bile: Napuni - smesti arhitektura (load-store) 32-bitni fiksni format instrukcija Tro-adresni format instrukcija

Osobine koje je ARM odbacio, a bile su koriene na RISC I arhitekturi su: Rad sa registarskim prozorima Odloeno grananje Izvrenje svih instrukcija u jednom ciklusu

1.2 Pogled programera na ARM model


Skup instrukcija jednog procesora definie operacije koje programer koristi da promeni stanje sistema. Stanje ine vrednosti podataka koji se uvaju u vidljivim registrima procesora i u sistemskoj memoriji. Svaka instrukcija izvrava definisanu transformaciju procesora iz stanja koje je bilo pre instrukcije, u stanje po njenom okonanju. Promena stanja se odnosi samo na programsko vidljive, a ne nevidljive registre.To znai da su bitne samo vrednosti koje se uvaju u vidljivim registrima.

Programersko vidljivi registri ARM7 procesora prikazani su na slici 1. 5

Mikroprocesorski sistemi

ARM7 procesor

Slika 1. Registri ARM7 procesora

Statusni registar tekueg programa (CPSR) se koristi za uvanje statusnih markera. Ovi markeri se postavljaju nakon izvrenja aritmetiko-logikih operacija. Sadraj ovih bitova definie reim rada procesora,nain prihvatanja prekida i stanje nakon izvrenja operacija. Registri R0 do R12 su registri opte namene, R13 se koristi kao pokaziva magacina,R14 kao registar za povezivanje podprograma, a R15 kao programski broja. Memorija se vidi kao linearno polje bajtova numerisanih od nule pa sve do 2 32 - 1 . Procesor moe da manipulie sa podacima tipa bajt (8 bita), polurei (16 bitova) ili re(32 bita). Rei su uvek poravnjane na granici 4 bajta. ARM je arhitektura tipa Load - Store. To znai da sve aritmetiko-logike instrukcije manipuliu nad sadrajem registara, a jedine dve instrukcije pomou kojih se vri obraanje memoriji su operacije Load i Store. Pomou Load se dobavlja podatak iz memorije u registar, a pomou Store sadraj registra se smeta u memoriju. ARM procesor podrava i zatieni tj. supervizorski reim rada. Mehanizam zatite obezbeuje da se na nivou aplikacionih programa ne moe upravljati sistemskim resursima, a time naruiti integritet u radu sistema.

Mikroprocesorski sistemi

ARM7 procesor

Sve ARM instrukcije su 32-bitne. Najznaajnije osobine skupa instrukcija ARM procesora su sledee: uitaj-smesti arhitektura. 3-adresne instrukcije za obradu podataka. uslovno izvrenje svake od instrukcija. ukljuenje vrlo jakih viestrukih uitaj-smesti instrukcija registara mogunost da se izvedu opte operacije pomeranja kao i opte aritmetiko-logike operacije u jednoj instrukciji, koja se izvrava u jednom taktnom ciklusu. proirenje na otvoreni skup instrukcija preko skupa instrukcija koprocesora, to ukljuuje i dodavanje novih registara i tipova podataka programerskom modelu. 16-bitna predstava skupa instrukcija velike gustine u Thumb arhitekturi.

ARM upravlja U/I periferijama (disk kontrolerima, mrenim interfejsima...) kao memorijski mapiranim ureajima sa podrkom za prekide. Unutranji registri u ovim ureajima se javljaju kao lokacije koje se mogu adresirati unutar memorijske mape ARM-a. Registri mogu biti itani ili zapisivani pomou istih uitaj smesti instrukcija kao i bilo koja druga memorijska lokacija.

1.3 Razvojni alati ARM-a


Razvoj softvera za ARM je podran odgovarajuim izborom alata koje je razvila kompanija ARM Limited, ali postoji i mnogo drugih dostupnih alata nezavisnih od ove kompanije. Poto se ARM koristi kao embedded kontroler kod kojih ciljni hardver nije projektovan da predstavlja podlogu za razvoj softvera, ovi alati su namenjeni za razvoj drugih arhitektura kakve su platforme PC-a na kojima se izvravaju Windows programi ili radne stanice koje rade pod UNIX-om.Struktura razvojnog sredstva ARM je prikazana na slici2. C-ovi ili izvorni asemblerski fajlovi se kompajliraju ili asembliraju u ARM objektni format (.aof), koji se nakon toga povezuju u ARM-ov fajl format (aif.). Na osnovu formatovih fajlova kreiraju se tabele za otklanjanje greaka u programu uz pomo AMR-ovog simbolikog debuggera(ARMsd koji moe da napuni, izvri i debagira programe bilo na hardveru kakav je ARM Development Board ili koristei softversku emulaciju pomou ARMulatora) .

Mikroprocesorski sistemi

ARM7 procesor

C source

C libraries

asm source

C compiler .aof

assembler

linker

object libraries

.aif

debug

system model

ARMsd

ARMulator

development board

Slika 2 : Struktura ARM C kompajlera

ARM-ov C kompajler je kompatibilan sa ANSI standardom za C i podran je od strane odgovarajuih biblioteka standardnih funkcija. Kompajler koristi ARM standard za poziv procedure za sve spoljanje dostupne funkcije. Moe mu se narediti da generie asemblerski izvorni izlazni kod umesto ARM-ovog objektnog formata tako da kod moe biti ispitan, ili ak i optimizovan, pa zatim dat na asembliranje.Kompajleru se moe pridruiti i Thumb kod.

ARM asembler je pravi makro asembler koji proizvodi ARM objektni izlazni format koji se moe linkovati sa izlazom iz C kompajlera. Linker prihvata jedan ili vie objektnih fajlova i kombinuje ih u izvrivi program. On reava simbolika referenciranja izmeu objektnih fajlova i poziva objektne module iz biblioteka po potrebi programa. Moe asemblirati razliite komponente programa na vei broj razliitih naina, zavisno od toga da li se program izvrava u RAM ili ROM memoriji, da li je potrebno preklapanje ,itd.

Mikroprocesorski sistemi

ARM7 procesor

ARM simboliki debuger je ulazni interfejs koji pomae pri debugovanju programa koji se ili emuliraju (u ARMulatoru) ili izvravaju na nekom ciljnom sistemu. Primer takvog hardvera je razvojna ploa. Sistem mora podravati odgovarajue protokole za debugovanje bilo preko serijske linije za prenos podataka ili preko JTAG test interfejsa. ARMulator (ARM emulator) je programski paket koji modelira ponaanje razliitih jezgra ARM procesora na softverski nain na nekom drugom raunaru. Moe raditi za razliitim nivoima preciznosti: modeliranje sa preciznim instrukcijama daje tano ponaanje stanja sistema bez obraanja panje na precizne karakteristike tajminga kod procesora. modeliranje sa preciznim ciklusom izvrenja daje tano ponaanje procesora na bazi ciklus-po-ciklus, i time dozvoljava da se ustanovi taan broj taktnih ciklusa koji je potreban programu. modeliranje sa preciznim tajmingom predstavlja predaju signala sa korektnim vremenom u okviru ciklusa pruajui mogunost da se vodi rauna o logikim kanjenjima .

2. Organizacija i implementacija ARM-a

Organizacija jezgra ARM procesora ARM6 i ARM7 se jako malo promenila u odnosu na prve 3-mikronske procesore u tehnologiji razvijene u Acorn-u izmeu 1983. i 1985. Tro-stepeni protoni sistem (pipeline) koji su ovi procesori koristili je postepeno usavravan, a tehnologija CMOS procesa je znatno smanjila veliinu ipova, pa su se performanse ovih jezgara drastino poveale. Osnovni principi operacija su ostali uglavnom isti. Od 1995. se pojavilo jo par novih ARM jezgara koja su imala daleko bolje performanse zbog uvoenja peto-stepene protone obrade kao i zasebnih memorija za instrukcije i podatke obino u formi razdvojenih ke memorija meusobno povezanih preko jedinstvene memorije za instrukcije i podatke.

Mikroprocesorski sistemi

ARM7 procesor

2.1 Tro-stepena protona ARM organizacija

Osnovne komponente ARM-a su: Registarska banka-koristi se za uvanje stanja procesora. Banka ima dva porta za itanje i jedan port za upis. Portovi se mogu koristiti za pristup bilo kom registru. Postoji i dodatni port za itanje i port za upis kojima se pristupa registru R15, programskom brojau. Dodatni port za upis u r15 omoguava njegovo auriranje nakon to se pribavljena instrukcija adrese inkrementira, dok port za itanje obezbeuje da se nastavi sa fazom pribavljanja nakon to je adresa izdata. Barrel pomera- moe da pomera ili rotira bilo koji operant proizvoljan broj bit pozicija. Aritmetiko-logika jedinica (ALU) - obavlja aritmetike i logike funkcije iz repertoara skupa naredbi. Adresni registar i inkrementer- selektuje i uva sve memorijske adrese i generie sekvencijalne adrese kada je to potrebno. Registri podataka- uvaju podatke koji se prenose ili dobavljaju iz memorije. Dekoder instrukcija i upravljaka logika.

10

Mikroprocesorski sistemi

ARM7 procesor

Organizacija ARM koju ine 3 protona stepena prikazana je na slici 3.

Slika 3 : Trostepena protona obrada ARM procesori do verzije ARM7 koriste tro-stepenu protonu obradu kod koje se identifikuju sledei stepeni: Fetch (pribavljanje)-instrukcija se pribavlja iz memorije i smeta u instrukcioni protoni system Decode (dekodiranje)- vri se dekodiranje instrukcije a upravljaki signali staze podataka se pripremaju za naredni ciklus Execute (izvrenje)- instrukcija se izvrava od strane staze podataka, itaju se sadraji registarske banke, pomera se operant,rezultat koji generie ALU se upisuje u odredini registar. U datom trenutku, mogue je da se izvravaju 3 instrukcije, od kojih se svaka nalazi razliitom stepenu. Kada procesor izvodi jednostavne instrukcije za obradu podataka, protoni sistem (pipeline) omoguava da se po jedna instrukcija izvri u 11

Mikroprocesorski sistemi

ARM7 procesor

svakom taktnom ciklusu. Jednoj instrukciji je potrebno tri taktna ciklusa da bi se izvrila, tako da ona ima kanjenje od tri ciklusa. Stvarni propusni opseg je ipak jedna instrukcija po ciklusu.

2.2 Peto-stepeni ARM processor


Arm procesori se realizuju i kao petostepeno protoni. Kod ovih procesora postoje sledei stepeni: Fetch Decode Execute Buffer/data- pristupa se memoriji za podatke kada se to zahteva od strane instrukcije. Inae ALU rezultat se baferuje i prosleuje se i sledeem stepenu taktnog ciklusa. Write-back- rezultati generisani od strane instrukcije upisuju se u registarsko polje ukljuujui i podatke koji se dobavljaju iz memorije. Ovakav petostepeni protoni sistem korien je od strane velikog broja RISC procesora i predstavlja klasino reenje za ovakav tip procesora.

12

Mikroprocesorski sistemi

ARM7 procesor

Na slici 4 prikazana je struktura peto-stepenog ARM procesora.

Slika 4. Struktura petostepenog jezgra ARM-a

13

Mikroprocesorski sistemi

ARM7 procesor

3. ARM jezgra procesora


Postoji vei broj ARM jezgara koji se meusobno razlikuju po broju protonih stepeni, mogunosti procesiranja,skupu instrukcija, itd. U daljem tekstu bie dat kratak pregled mogunosti ovih procesora.

3.1 ARM7TDMI
ARM7TDMI ima jezgra sa naslabijim performansama. Koristi se kod velikog broja aplikacijaa a tipina je ona koja se koristi za mobilni digitalni telefon. Organizacija procesora ARM7TDMI je prikazana na slici 5. Jezgro procesora ini ARM integer jezgro koje koristi 3 protona stepena i sledeim proirenjima: primenjuje i izvrava ARM arhitekturu verzije 4T sa podrkom koja podrava 64-bitne rezultate mnoenja, operacija Load i Store tipa polure i jedan bajt, kao i skup instrukcija Thumb. Sadri EMbeddedICE modul koji podrava otklanjanje greaka u programu kod ambedet sistema Kod otklanjanja greaka u hardveru pristup procesoru se ostvaruje preko JTAG porta za pristup, pri emu je JTAG logika sastavni deo procesora.

Slika 5. Organizacija procesora ARMI7TDMI 14

Mikroprocesorski sistemi

ARM7 procesor

3.1.1 Hardverski interfejs


Jako veliki broj signala moe dovesti do pogrenog zakljuka jer se njima pretpostavlja sloeno ponaanje koje se nadovezuje na sutinsku jednostavnost bazinog ARM interfejsa. Meu signalima interfejsa dominiraju signali sa magistrala podataka i adresa, tako da e jednostavni memorijski interfejs koristiti ove signale kao i par kontrolnih signala. Ostali signali su namenjeni nekim drugim funkcijama poput debug-ovanja na ipu, JTAG boundary scan-u, i nekim drugim. Na slici 6 su signali interfejsa prikazani u grupama po funkcijama, i uloga svake grupe je opisana ispod sa odgovarajuim informacijama o pojedinanim signalima.

3.1.2 Kontrola takta


Sve promene stanja unutar procesora se kontroliu memorijskim taktom, mclk. Iako se ovim taktom moe upravljati eksterno i time nainiti da procesor eka na pristup, jednostavnije je imati samostalan takt i koristiti signal wait za preskakanje taktnih ciklusa. Poto je unutranji takt ustvari logika AND funkcija signala mclk i wait , to znai da se signal wait moe menjati samo kada je nivo mclk nizak. eclk takt predstavlja takt koji koristi jezgro procesora, tako da normalno oslikava ponaanje mclk nakon to se uvede signal wait , ali takoe i oslikava ponaanje debug takta kada se radi u debug nainu rada.

3.1.3 Memorijski interfejs


Memorijski interfejs obuhvata 32-bitnu adresu (A(31:0)), dvosmernu magistralu podataka (D(31:0)), posebne magistrale za prijem i slanje podataka (Dout(31:0)) i (Din(31:0)), kao i deset kontrolnih signala.
mreq predstavlja ciklus procesora u kome se zahteva pristup memoriji seq znai da e memorijska adresa biti dosledna (ili ak i ista) onoj koja je koriena u prethodnom ciklusu lock oznaava da bi procesor trebalo da zadri pristup magistrali kako bi se osigurala tanost faza itanja i upisa SWAP instrukcije. r / w oznaava ciklus itanja ili upisivanja koje izvrava procesor mas(1:0) kodira duinu memorijskog pristupa, i oznaava da li se radi o pristupu duine bajta, polurei ili rei. bl(3:0) su eksterno kontrolisane dozvole za svaki od etiri bajta na magistrali ulaznih podataka. One olakavaju memorisanje podataka manjih od 32 bita.

15

Mikroprocesorski sistemi

ARM7 procesor

Signali ARM7TDMI hardverskog interfejsa su prikazani na slici 6.

Slika 6: Signali ARM7TDMI hardverskog interfejsa

Signali koji oznaavaju tip memorijskog ciklusa, mreq i seq se rano izdaju kako bi se kontrolnoj logici memorije dalo to je mogue vie vremena da odlui kako 16

Mikroprocesorski sistemi

ARM7 procesor

da postupi sa pristupom memoriji. Kada sekvencijalni ciklus sledi nesekvencijalni, nova adresa e biti ona adresa iz nesekvencijalnog ciklusa uveana za jednu re (etiri bajta). U sluaju da sekvencijalni ciklus sledi unutranji ciklus ili transfer ciklus registra koprocesora, adresa iz prethodnog ciklusa se nee menjati. U tipinoj organizaciji memorije se moe koristiti sluaj inkrementiranja adresa zajedno sa informacijom o prethodnoj adresi kako bi se memorija pripremila za brzi sekvencijalni pristup, a tamo gde adresa ostaje nepromenjena ovo se moe koristiti za poetak potpunog memorijskog pristupa u ciklusu (zato to nijedan drugi ciklus ne koristi memoriju).

3.1.4 MMU interfejs


Interfejs signali ka MMU daju informacije koje se koriste za kontrolu pristupa odreenim oblastima memorije. Signal trans ukazuje da li se procesor nalazi u korisnikom ( trans =0) ili u povlaenom ( trans =1) nainu rada, tako da se nekim oblastima memorije ne moe pristupiti. Takoe se mogu koristiti drugaije tabele prevoenja za korisniki kod i kod supervizora (mada se to retko ini). Tamo gde su potrebne detaljnije informacije o nainu rada, mod e (4:0) oslikava (invertovano) poslednjih pet bitova CPSR iako se upravljanje memorijom na ovom nivou retko koristi. Detaljnije informacije o nainu rada se verovatno najvie koriste pri debugovanju. Kada pristup nije dozvoljen to se predstavlja signalom na abort ulazu. Tajming abort signala je takav da on mora biti validan na kraju ciklusa zajedno sa podacima. Obustavljen pristup memoriji uzrokuje da procesor uzme prethodno pripremljene podatke (prefetch) ili da obustavi proces, zavisno od vrednosti opc tokom pristupa. MMU takoe moe koristiti opc signal kada se eli pristupiti samo izvrnim oblastima memorije. Ovakav metod se ne koristi previe u ARM sistemima.

3.1.5 Stanje
Tbit izlaz daje informaciju okruenju o tome da li procesor trenutno izvrava ARM ili Thumb instrukcije.

3.1.6 Konfiguracija
bigend menja red bitova izmeu Little- i Big-endian. Ovaj ulaz konfigurie nain na koji procesor radi i ne oekuje se od njega da se dinamiki menja, iako se po potrebi moe menjati tokom faze takta 2.

17

Mikroprocesorski sistemi

ARM7 procesor

3.1.7 Prekidi
Dva ulaza za prekide mogu biti asinhrona u odnosu na takt procesora jer prolaze kroz leeve za sinhronizaciju pre ulaska u kontrolnu logiku procesora. Brzi zahtev za prekid fiq ima vei prioritet od normalnog zahteva za prekid irq . Ulaz isync omoguava premoavanje sinhronizacije prekida u sluaju da okruenje daje ulaze koji su ve sinhronizovani sa mclk, to uklanja sinhronizaciono kanjenje usled prekida.

3.1.8 Inicijalizacija
reset startuje procesor iz poznatog stanja kada izvavanje poinje sa adrese 00000000 16 . ARM7TDMI jezgro signalizira kada je u ciklusu zapisivanja pomou signala enout . Tamo gde je eksterna magistrala podataka dvosmerna, enout se koristi za omoguavanje pristupa signalu dout(31:0) na magistralu. Ponekad je poeljno odloiti operaciju zapisivanja kako bi drugi ureaji mogli koristiti magistralu. Signal za omoguavanje korienja magistrale podataka dbe se moe koristit za osiguranje da e enout ostati neaktivan pod takvim okolnostima. Jezgro se mora stopirati (korienjem wait ili produavanjem takta) sve dok maagistrala ne postane dostupna. dbe ima spoljanji tajming koji zahteva eksterna logika. Ostali signali za kontrolu magistrala su enin , enouti , abe, ale, tbe, busen, highz, busdis, i ecapclk i izvode razliite operacije.

3.1.9 Podrka za debug-ovanje


ARM7TDMI primenjuje ARM arhitekturu za debug-ovanje opisanu ranije. Ugraeni ICE modul sadri take prekida registre za posmatranje stanja koji omoguavaju kodu da se zaustavi kako bi se izvrilo debug-ovanje. Ove registre kontrolie JTAG test port korienjem lanca za skeniranje. Kada se doe do take prekida ili pregleda stanja, procesor se zaustavlja i prelazi u stanje debug-ovanja. U tom stanju se mogu ispitivati vrednosti registra procesora. Vrednosti registara e biti prosleene na magistralu podataka odakle mogu biti uzorkovane i ponovo pomerene. Pristup grupama registara zahteva takve instrukcije koje e dovesti do promene naina

18

Mikroprocesorski sistemi

ARM7 procesor

rada. Inspekcija stanja sistema se obavlja tako to ARM pristupa memorijskim lokacijama velikom brzinom i zatim se vraa u stanje debug-ovanja.

3.1.10 Interfejs za debug-ovanje


Interfejs za debug-ovanje poveava funkcionalnost koju daje integrisana ugraena ICE makro elija tako to dozvoljava da se spoljanji hardver povee zbog debug-ovanja (putem dbgen), i dozvoljava asinhroni zahtev za debug-ovanjem (preko dbgrq) ili zahtev sinhronizovan sa instrukcijom (breakpt). Spoljanji hardver se obavetava o debug stanju procesora putem dgback signala. Interni signal za debugovanje se vodi na dbrqi. Spoljanji dogaaji mogu doprineti okidanju taaka osmatranja stanja preko extern0 i extern1. Kada je predajni bafer za komunikaciju prazan, to se signalizira putem commtx, dok se prazan prijemni bafer signalizira preko commrx. Procesor pomou exec signalizira da li se instrukcija koja se trenutno nalazi u fazi izvrenja izvrava ili ne. Instrukcija se ne izvri ako ne zadovolji uslov stanja koda.

3.1.11 Interfejs koprocesora


cpi , cpa i cpb signali interfejsa koprocesora su ve opisani ranije. Dodatni

signal koji daje koprocesor je opc koji pokazuje da li e se u memorijskom pristupu pribaviti instrukcija ili podatak. Ovo se moe koristiti za praenje izvrenja ARM instrukcije. Kada ne postoji potreba za povezivanjem koprocesora, cpa i cpb bi trebalo da budu na visokom logikom nivou. To e dovesti do toga da sve instrukcije koprocesora dou u nedefinisano stanje.

3.1.12 JTAG interfejs


JTAG kontrolni signali se povezuju na test kontroler preko svojih pinova.

3.1.13 TAP informacije


Ovi signali se koriste za dodavanje novih lanaca za skeniranje na JTAG sistem, uz signale za boundary scan. tapsm(3:0) pokazuje stanje TAP kontrolera; ir(3:0) daje sadraj registra TAP instrukcija; screg(3:0) je adresa sken registra koji je TAP kontroler trenutno odabrao, 19

Mikroprocesorski sistemi

ARM7 procesor

tclk i tclk2 formiraju nepreklapajui par taktova za kontrolu lanaca za skeniranje, dok tdoen pokazuje kada se serijski podaci izdaju preko tdo.

3.1.14 Boundary scan


ARM7TDMI elija sadri potpun JTAG TAP kontroler za dodatnu ugraenu ICE funkcionalnost jre je ovaj TAP kontroler u stanju da podri bilo koje olakice prilikom skeniranja kojima se pristupa preko JTAG porta. Signali drivesb, ecapclkbs, icapclkbs, highz , pclkbs, rstclkbs, sdinbs, sdoutbs, shclkbs i shclk2bs u interfejsu su zato mogui kako bi se dozvolile dodatne putanje za skeniranje koje e se dodati sistemu.

3.1.15 ARM7TDMI u sintezi


Standardno ARM7TDMI jezgro procesora je hard makroelija, to znai da se isporuuje kao deo fizikog lejauta prilagoeno odgovarajuoj tehnologiji procesa. ARM7TDMI-S je sintetiua verzija ARM7TDMI, koja se isporuuje kao moduo vieg jezikog nivoa koja se moe sintetizovati korienjem odgovarajue biblioteke elija u nekoj tehnologiji. Zato je lake povezati ovakav modul na novu tehnologiju procesa, nego hard makroeliju. Proces sinteze podrava brojne opcije u varijacijama u funkcionalnosti jezgra procesora. Ovo ukljuuje: izostavljanje ugraene ICE elije; zamenu kompletnog 64-bitnog mnoaa jednostavnijim i manjim mnoaem koji podrava samo ARM instrukcije mnoenja koje daju 32bitni rezultat. Bilo koja od ovih opcija e za rezultat dati manju sintetisanu makroeliju koja ima smanjenu funkcionalnost. Kompletna verzija je 50% vea i manje efikasna po pitanju snage od hard makroelije. ARM7TDMI jezgro izdaje novu adresu im je to mogue kako bi se maksimalno povealo vreme za obradu informacija. To vreme za obradu koriste jedinica za upravljanje memorijom ili memorijski kontroler. U jednostavnijim sistemima gde je adresna magistrala povezana direktno na ROM ili SRAM je potrebno zadrati staru adresu do kraja taktnog ciklusa. Jezgro uvodi kontrolisano le kolo kojim se moe zapamtiti adresa ako je to potrebno ili ako se zahteva eksternom logikom. Jezgro ARM7TDMI procesora je nalo razne primene u sistemima sa jednostavnom konfiguracijom memorije. To znai da se puno koristi u sistemima koji poseduju par kilobajta jednostavnog RAM-a na ipu. Tipian primer takvog sistema je mobilni telefon. Tu se objedinjuju moderni hardver za obradu digitalnih signala i odgovarajua memorija. Zato je ARM7TDMI postao najkorieniji procesor za funkcije kontrole i korisnikog interfejsa. 20

Mikroprocesorski sistemi

ARM7 procesor

Uz odgovarajue tehnologije procesa su dobijene jako velike efikasnosti snage pomou ARM7TDMI jezgara. Jedan primer koji koristi 0.25 mm -sku tehnologiju i napon napajanja od 0.9V moe imati 12.000 MIPS/W.

3.2 ARM8TDMI
ARM8 jezgro je nastalo u kompaniji ARM Limited u periodu izmeu 1993. i 1996. kako bi ispunilo zahteve za ARM jezgrom koje e imati bolje performanse od onih koje je postizalo dotadanje ARM7 jezgro. Danas su ga nasledila ARM9 i ARM10 jezgra ali je njegov dizajn izazvao veliko interesovanje. Performanse procesora su poboljane na sledee naine: Poveavanjem taktne frekvencije. Ovo zahteva pojednostavljenje logike u svakom protonom stepenu (pipelinu) to povlai poveanje broja protonih stepena Smanjenjem CPI taktnih ciklusa po instrukciji. Ovo zahteva smanjenje broja komunikacionih kanala koje zauzimaju instrukcije, ili smanjenje zavisnosti meu instrukcijama tako da one ne izazivaju zastoje u komunikacionim kanalima. Najbolja je kombinacija oba metoda.

Na slici 7 je data organizacija ARM8 procesora:

Slika 7: Organizacija procesora ARM8 21

Mikroprocesorski sistemi

ARM7 procesor

ARM8 procesor se sastoji iz jedinice za pribavljanje instrukcija i integer staze podataka. Jedinica za pribavljanje je zaduena za pribavljanje instrukcija iz memorije i njihovo baferovanje u unapred zadati redosled. Taj redosled mora omoguiti maksimalno korienje propusnog opsega memorije. Zatim se integer jedinici prosleuje po jedna instrukcija u svakom taktu zajedno sa vrednou programskog brojaa za datu instrukciju. Jedinica za pribavljanje je takoe zaduena za predikciju grananja, i koristi statiko predvianje kod odreivanja smera grananja (za grananja unazad se predviaju da e se desiti, dok se grananja unapred predviaju kao nee se desiti).

AMR processor koristi petostepenu protonu obradu pri emu jedinica za unapred pribavljanje instrukcija odgovara prvom stepenu protone obrade dok se integer jedinici pridruuju ostala 4 stepena. Organizacija ARM 8 procesora je prikazana na slici 7, a ine je sledei stepeni: 1. Instruction prefetech - unapred pribavljanje instrukcije 2. Instruction decode and register read dekodiranje instrukcije i itanje stanja registra 3. Execute (shift and ALU) izvrenje (pomeranje i ALU operacija) 4. Data memory access pristup memoriji za podatke 5. Write-back results upis rezultata

3.3 ARM9TDMI
ARM9TDMI jezgro poseduje funkcionalnost ARM7TDMI jezgra ali sa znaajno poboljanim performansama. Poput ARM7TDMI jezgra (na suprot od ARM8 jezgra) ovo novo jezgro podrava Thumb skup instrukcija i EmbeddedICE modul za podrku debugovanja na samom ipu. Poboljanja u performansama su ostvarena nakon prihvatanja petostepenog protonog sistema (pipelina) ime se obezbedilo poveanje pobudne taktne frekvencije kao i korienje posebnih memorijskih portova za pristup instrukcijama i podacima ime se znaajno poboljao CPI. ARM9TDMI jezgro ima odvojene portove za instrukcije i podatke. U osnovi je mogue povezati ove portove na jedinstvenu memoriju, ali je posledica toga smanjenje performansi tako da se povezivanje ne izvodi. ARM9TDMI se pravi za vee radne frekvencije u poreenju sa ARM7TDMI jezgrom, tako da sve aplikacije koje koriste ARM9TDMI jezgro imaju sloenije i bre memorijske podsisteme. Maksimalna brzina takta koju ARM jezgro moe podrati je odreena najsporijom logikom putanjom u bilo kojem od komunikacionih kanala. ARM procesori se primenjuju u : Industrijskoj kontroli,medicinskim sistemima kontroli pristupa,komunikacionim skretnicama,ugradjenim modemima i u primenama opte namene. 22

Mikroprocesorski sistemi

ARM7 procesor

4. Skup instrukcija ARM


4.1 Tipovi podataka sa kojima ARM manipulie Tipovi podataka: ARM procesori podravaju est tipova podataka: 8-bitne oznaene i neoznaene bajtove. 16-bitne oznaene i neoznaene polurei; poreane na granice od dva bajta. 32-bitne oznaene i neoznaene rei; poreane na granice 4 bajta. (Neki stariji ARM procesori ne podravaju polurei kao i oznaene bajtove). ARM instrukcije su 32-bitne rei i tako moraju biti poreane. Thumb instrukcije su duine polurei i moraju biti poreane na granice 2 bajta.

5. Tipovi instrukcija procesora ARM Procesor ARM podrava sledee tipove instrukcija:

Instrukcije za pribavljnje podataka i memorisanje Instrukcije za razmene sadraja memorije i registra


Instrukcije pristupa status registara Instrukcije za obradu podataka Razliite aritmetike instrukcije Instrukcije mnoenja Instrukcije grananja

Instrukcije za generisanje softverkoih prekida


Instrukcije koprocesora

U nastavku ovog teksta bie dat pregled sintakse svake od instrukcija kao i odgovarajui primer u cilju pojanjenja efekta izvrenja instrukcije.

5.1 Instrukcije za pribavljnje podataka i memorisanje 5.1.1 Instrukcije za prenos podataka tipa jedna re ili neoznaeni bajt Ove instrukcije su najfleksibilniji nain za prenos (premetanje) bajtova ili rei podataka izmeu registara ARM i memorije. Premetanje velikih blokova podataka je obino bolje izvesti korienjem viestrukih instrukcija za prenos registara, dok

23

Mikroprocesorski sistemi

ARM7 procesor

najnoviji ARM procesori takoe podravaju instrukcije za premetanje polurei i oznaenih bajtova. Nain kodiranja je prikazan na slici 1.
31 28 27 26 25 24 23 22 21 20 19 16 15 12 11 0

cond

01

Rn

Rd

offset izvorini/odredini registar bazni registar uitavanje/smetanje write-back (auto-index) neoznaen bajt/re gore/dole pre-/post-index

25 7 6

11

12-bit immediate

25 7 6

11

7 6

1 konstanta duine pomeraja tip pomeranja ofset registar

#shift

Sh

Rm

Slika 1. Binarno kodiranje instrukcije za transfer podataka od jedne rei ili neoznaenog bajta

Asemblerski format: Pre-indeksirani format instrukcije:


LDR | STR{<cond>} {B} Rd, [Rn, <offset>] {!}

Post-indeksirani oblik:
LDR | STR{<cond>} {B} {T} Rd, [Rn], <offset>

Korisna pc relativna forma adresiranja je oblika: 24

Mikroprocesorski sistemi

ARM7 procesor

LDR | STR{<cond>} {B} Rd, LABEL

LDR je registar uitavanja, STR je registar smetanja, opcioni B bira prenos neoznaenog bajta, inicijalno je re. <offset> moe biti #+/- <12-bitna vrednost> ili +/- Rm (, shift) gde specifikator pomeraja je indentian za instrikcije koje specificiraju podatke, izuzev to nisu dostupne vrednosti pomeraja navedene u registru. ! bira ponovno zapisivanje. T fleg bira korisniki progled memorije. Opis. Ove instrukcije formiraju adresu pristupa na taj nain to baznom registru (Rn) dodaju (U=1) ili oduzimaju (U=0) neoznaenu neposrednu vrednost ili (po mogunosti skaliran) registarski ofset. Izraunata bazna adresa se koristi za punjenje (L=1) ili smetanje (L=0) neoznaenog bajta (B=1) ili rei (B=0) u registar ili iz registra (Rd), iz ili u memoriju. Kada se bajt uita u registar on se nulama proiruje do duine od 32 bita. Kada se bajt smeta u memoriju, osam bitova najmanje teine registra se smetaju na adresiranoj lokaciji. Pre-indeksirani adresni nain rada (P=1) koristi izraunatu adresu kod operacija punjenje ili memorisanje, a zatim kada se zahteva ponovni upisi (W=1), aurira bazni registar na izraunatu vrednost. Post-indeksirani (P=0) adresni nain rada koristi nemodifikovani bazni registar radi preenosa, a zatim aurira bazni registar da izrauna adresu u zavisno od stanja W bit. Postavljanje W=1 uzrokuje da procesor zahteva pristup memoriji u korisnikom reimu rada, to omoguava operativnom sistemu da prihvati korisniki pogledu kao i metode prevoenja i zatite. Primeri:
LDR LDR LDR STR LDRB LDRB STRB LDR STRB LDR LDR STRB LDR STR LDR r1, [r0] r8, [r3, #4] r12, [r13, #-4] r2, [r1, #0x100] r5, [r9] r3, [r8, #3] r4, [r10, #0x200] r11, [r1, r2] r10, [r7, -r4] r11, [r3, r5, LSL #2] r1, [r0, #4] ! r7, [r6, #-1] ! r3, [r9], #4 r2, [r5], #8 r0, [r1], r2 ; uitaj r1 iz adrese u r0 ; uitaj r8 iz adrese u r3 + 4 ; uitaj r12 iz r13 - 4 ; smesti r2 na adresu u r1 + 0x100 ; uitaj bajt u r5 iz r9 ; uitaj bajt u r3 iz r8 + 3 ; smesti bajt iz r4 u r10 + 0x200 ; uitaj r11 iz adrese u r1 + r2 ; smesti bajt iz r10 na adresu u r7 - r4 ; uitaj r11 iz r3 + (r5 x 4) ; uitaj r1 iz r0 + 4, zatim r0= r0 + 4 ; smesti bajt iz r7 u r6 - 1, zatim r6= r6 - 1 ; uitaj r3 iz r9, zatim r9= r9 + 4 ; smesti r2 u r5, zatim r5= r5 + 8 ; uitaj r0 iz r1, zatim r1= r1 + r2

25

Mikroprocesorski sistemi

ARM7 procesor

5.1.2 Instrukcije za prenos podataka tipa polurei i oznaenih bajtova Raniji ARM procesori nisu podravali ovakve instrukcije. Adresni naini rada dostupni kod ovih instrukcija su podskup instrukcija koji monipuliu su oznaenim bajtovima ili reima. Nain kodiranja je prikazan na slici 2.
31 28 27 25 24 23 22 21 20 19 16 15 12 11 8 7 6 5 4 3 0

cond

000

Rn

Rd

offsetH

1 S

offsetL

izvorini/odredini registar bazni registar uitavanje/smetanje write-back (auto-index) gore/dole pre-/post-index


25 7 6 11 8 3 0

0
25 7 6

Imm[7:4]

Imm[7:4]

11

0 ofset registar

Imm[7:4]

Imm[7:4]

Slika 2. Binarno kodiranje instrukcije za transfer podataka polurei i oznaenih bajtova

Asemblerski formati: Pre-indeksiran oblik:


LDR | STR{<cond>}H |SH |SB Rd, [Rn, <offset>] {!}

Post-indeksiran oblik:
LDR | STR{<cond>}H |SH |SB Rd, [Rn, <offset>]

26

Mikroprocesorski sistemi

ARM7 procesor

gde je <offset> #+/-<8-bit immediate>, ili +/-Rm, a H SH SB bira tip podataka. U suprotnom je format asemblera isti kao i za prenos rei i neoznaenih bajtova.

Opis. Ove instrukcije su veoma sline instrukcijama koje manipuliu sa neoznaenim bajtovima ili reima, ali u ovom sluaju neposredni ofset je limitiran na osam bitova, a skalirani registarski ofset nije dostupan. U tabeli 1. je prikazan nain kodiranja tipova podataka, definisanjem stanja bita S i H. S 1 0 1 H 0 1 1 tip podataka oznaen bajt neoznaena polu-re oznaena polu-re

Tabela 1. kodiranje tipa podataka

Poto ne postoji razlika izmeu memorisanja oznaenih i neoznaenih podataka, jedini bitni oblici ovog formata instrukcija su: LOAD oznaenog bajta, oznaene polurei ili neoznaene polurei. STORE polurei. Neoznaena vrednost se proiruje nulama do duine od 32 bita kada se obavlja operacija LOAD. Oznaena vrednost se proiruje do 32 bita korienjem principa proirenje znaka.

Primeri:
LDRH LDRH LDRH STRH LDRSH LDRH LDRSH LDRSB LDRH STRH r1, [r0] r8, [r3, #2] r12, [r13, #-6] r2, [r1, #0x80] r5, [r9] r11, [r1, r2] r1, [r0, #2] ! r7, [r6, #-1] ! r3, [r9], #2 r2, [r5], #8 ; uitaj polure u r1 iz r0 ; uitaj polure u r8 iz r3 + 2 ; uitaj polure u r12 iz r13 - 6 ; smesti polure iz r2 u r1 + 0x80 ; uitaj oznaenu polure u r5 iz r9 ; uitaj polure u r11 iz adrese u r1 + r2 ; uitaj oznaenu polure r1 iz r0 + 2, ; zatim r0= r0 +2 ; uitaj oznaen bajt u r7 iz r6 - 1, ; zatim r6= r6 -1 ; uitaj polure u r3 iz r9, zatim r9= r9 +2 ; uitaj polure iz r2 u r5, zatim r5= r5 +8

27

Mikroprocesorski sistemi

ARM7 procesor

Lista instrukcija: LDR LDRB LDRBT LDRH LDRSB LDRSH LDRT STR STRB STRBT STRH STRT Load Word Load Byte Load Byte with User Mode Privilege Load Unsigned Halfword Load Signed Byte Load Signed Halfword Load Word with User Mode Privilege Store Word Store Byte Store Byte with User Mode Privilege Store Halfword Store Word with User Mode Privilege

5.1.3 Viestruke instrukcije za uitavanje i smetanje Ove ARM instrukcije omoguavaju da se bilo koji podskup (ili svi) od 16 registara koji su vidljivi u tekuem reimu rada mogu smestiti u memoriju ili proitati iz nje. Jedan oblik ove instrukcije omoguava operativnom sistemu da napuni ili memorie register korisnikog naina rada kao id a zapamti i obnovi stanje korisnikig procesa, a takoe da omogui CPSR registru da obnovi stanje koje se uva u SPSR, a deo je povratne informacije programa za obradu izuzetaka. Ove instrukcije se koriste za ulazak i povratak iz procedura radi smetanja i obnavljanja stanja radnih registara. Nain kodiranja je prikazan na slici 3.
31 28 27 25 24 23 22 21 20 19 16 15 0

cond

100

Rn

register list

bazni registar uitavanje/smetanje write-back (auto-index) vrati PSR i forsiraj korisniki bit gore/dole pre-/post-index

Slika 3. Binarno kodiranje viestruke instrukcije za uitavanje i smetanje

28

Mikroprocesorski sistemi

ARM7 procesor

Asemblerski format: Uobiajeni oblik instrukcije je:


LDM | STM{<cond>}<add mode> Rn{!}, <registers>

gde <add mode> navodi jedan od adresnih naina rada. Bitovi u instrukciji odgovaraju mehanikom pogledu opisanom u navedenoj tabeli, gde inkrementiranje odgovara U=1, a prefiks pre odgovara vrednosti P=1. ! navodi auto-indeksiranje (W=1), dok su <registri> lista registara i opsega registara u zagradama, npr. {r0, r3-r7, pc}. U ne-korisnikom nainu rada CPSR se moe obnoviti pomou:
LDM{<cond>}<add mode> Rn{!}, <registers + pc>^

Lista registara mora sadrati PC. Korisniki registri se mogu sauvati ili obnoviti pomou :
LDM | STM{<cond>}<add mode> Rn, <registers - pc>^

Primeri: Da bi se sauvlo stanje tri radna registra i povratne adrese nakon ulaska u subrutinu potrebno je izvriti instrikciju:
STMFD r13!, {r0 - r2, r14}

Ovo pretpostavlja da je r13 inicijalizovan za korienje kao pokaziva magacina. Da bi obnovili stanje radnih registara i obavili povratak koristi se instrukcija:
LDMFD r13!, {r0 - r2, pc}

5.2 Instrukcije za razmene sadraja memorije i registra Ove instrukcije kombinuju uitavanje i smetanje rei ili neoznae-nog bajta u jednoj instrukciji. Obino se dva prenosa kombinuju u jednu memorijsku operaciju koja se ne moe razdvojiti spoljanjim memorijskim pristupom (npr. pomou DMA od kontrolera).Tako se instrukcija moe koristiti kao osnova mehanizam semafora kako bi se obezbedila uzajamna iskljuivost u pristupu strukturama podaka koji su deljivi izmeu veeg broja procesa, procesora ili procesora i DMA kontrolera. Nain kodiranja je prikazan na slici 4.

29

Mikroprocesorski sistemi

ARM7 procesor

31

28 27

23 22

21

20

19

16 15

12 11

4 3

cond

00010

00

Rn

Rd

00001001 destination register base register unsigned byte/word

Rm

source register

Slika 4. Binarno kodiranje memorije zamene i instrukcije registra

Asemblerski format:
SWP{<cond>} {B} Rd, Rm, [Rn]

Opis. Ova Instrukcija puni re (B=0) ili neoznaeni bajt (B=1) u Rd sa memorijske lokacije koju adresira registar Rn, i smeta isti tip podataka iz registra Rm u istu memorijsku lokaciju. Rd i Rm mogu biti isti registar (ali moraju biti razliiti od Rn), i u tom sluaju se razmenjuju vrednosti registara i memorije. ARM izvrava posebno operaciju itanja memorije, a zatim cikluse memorijskog zapisiva-nja, ali aktivira lok signal kako bi ukazala da e momorijski system biti zauzet u toku trajanja dva ciklusa po magisrali. Primeri:
SWP SWPB SWP r12, r10, [r9] r3, r4, [r8] r1, r1, [r8] ; uitaj r12 iz adrese r9 i ; smesti r10 na adresu r9 ; uitaj bajt u r3 iz adrese r8 i ; smesti bajt iz r4 na adresu r8 ; zameni vrednosti u r1 i adresu u r2

5.3 Instrukcije pristupa status registara 5.3.1 Instrukcije za prenos stanja statusnog registara u registre opte namene U sluaju da je potrebno sauvati ili modifikovati sadraj CPSR ili SPSR registra tekueg naina rada, njihovi sadraji moraju se prvo preneti u registar opte namene, zatim da se modifikuju selektovani i na kraju da se povratna vrednost smesti u statusni registar. Ove instrukcije obavljaju prvi korak u zadatoj sekvenci. Nain kodiranja je prikazan na slici 5. 30

Mikroprocesorski sistemi

ARM7 procesor

31

28 27

23

22 21

16 15

12 11

cond

00010

001111

Rd

000000000000 odredini registar SPSR/CPSR

Slika 5. Binarno kodiranje instrukcije prenosa status registara u registre opte namene

Asemblerski format:
MRS{<cond>} Rd, CPSR|SPSR

gde je Rd odredini registar CPSR - Current Program Status Register SPSR - Saved Program Status Register Opis. CPSR (R=0) ili tekui nain rada SPSR (R=1) se kopira u odredini registar (Rd). Kopiraju se svih 32 bita. Primeri:
MRS MRS r0, r3, CPSR SPSR ; prebaci CPSR u r0 ; prebaci SPSR u r3

5.3.2 Instrukcije za prenosa registara opte namene u statusni registar U sluaju da je potrebno zapamtii ili modifikovati sadraj CPSR ili SPSR tekieg naina rada, njihovi sadraji se prvo moraju preneti u registar opte namene, zatim da se odabrani bitovi modifikuju, a onda se povratna vrednost smeta u statusni registar. Ove instrukcije obavljaju poslednji korak u zadatoj sekvenci. Nain kodiranja je prikazan na slici 6.

31

Mikroprocesorski sistemi

ARM7 procesor

31

28 27 26

25

24

23 22

21 20 19

16 15

12 11

cond

00

10

10

field

1111 maska polja SPSR/CPSR

operands

25 7 6

11

0 konstanta poravnanja
25 7 6 11

#rot

8-bit immediate

4 3

0 registar operanda

00000000

Rm

Slika 6. Binarno kodiranje instrukcije prenosa registara opte namene u status registar

Opis. Operand, koji moe biti registar (Rm) ili rotirana 8-bitna neposredna vrednost specificirana na isi nain kao i neposredni oblik operanda dva u instrukcijama za procesiranje podataka se kopira u maskirano polje CPSR (R=0) ili u tekui reim rada SPSR (R=1). Maskirano polje uprvlja auriranjem etvoro-bajtnog polja unutar PSR registra. Bit 16 u instrukciji odreuje da li se PSR(7:0) aurira, bit 17 kontrolie PSR(15:8), bit 18 kontrolie PSR(23:16), dok bit 19 kontrolie PSR(31:24). Asemblerski format:
MSR{<cond>} CPSR_f|SPSR_f, #<32-bit immediate> MSR{<cond>} CPSR_<field>|SPSR_<field>, Rm

gde je <field> jedno od: c kontrolno polje PSR[7:0]. x polje proirenja PSR[15:8] (ne koristi se kod trenutnih ARM) s polje statusa PSR[23:16] (ne koristi se kod trenutnih ARM) f polje flegova PSR[31:24]

32

Mikroprocesorski sistemi

ARM7 procesor

Primer: Za postavljanje N, Z, C, i V flegova:


MSR CPSR_f, #&f0000000 ; postavi sve flegove

Za postavljanje C flega, i ouvanje N, Z i V:


MRS ORR MSR r0, CPSR r0, r0, #&20000000 CPSR_f, r0 ; prebaci CPSR u r0 ; postavi bit 29 od r0 ; prebaci natrag u CPSR

Za promenu iz supervizor naina rada u IRQ nain (za inicijalizaciju IRQ pokazivaa steka):
MRS BIC ORR MSR r0, CPSR r0, r0, #&1f r0, r0, #&12 CPSR_c, r0 ; prebaci CPSR u r0 ; obrii dno, 5 bita ; postavi bitove na IRQ mod ; prebaci natrag u CPSR

5.4 Instrukcije za obradu podataka Instrukcije procesora ARM koje se koriste za obradu podataka omoguavaju programeru da izvodi aritmetike i logike operacije nad podacima u registrima. Ovim instrukcijama su tipino potrebna dva operanda i one generiu jedinstven rezultat. Karakteristina operacija je dodavanje dve vrednosti kako bi se dobio jedinstven rezultat koji je jednak njihovoj sumi. Neka od pravila koja se primenjuju na ARM instrukcije za obradu podataka su sledea: svi operandi su 32-bitni, uvaju se u registrima ili su specificirani kao neposredne konstante u okviru same instrukcije. rezultat (ako postoji) je 32-bitni i smeta se u registar (ovde postoji izuzetak: duge instrukcije mnoenja daju 64-bitni rezultat). svaki od registarskih operanada i kao i registar u kome se uvaju rezultati nezavisno se specificiraju u instrukciji. To znai da ARM koristi troadresni format za ove instrukcije. ARM-ove instrukcije za obradu podataka se koriste za modifikaciju vrednosti u registrima. Operacije koje se podravaju su aritmetike i logike. One se izvravaju nad 32-bitnim podacima. Jedan od operanada se moe pomeriti ili rotirati na putu ka ALU-u ime se omoguava istovremeno izvrenje operacija ADD i SHIFT. Nain kodiranja ovih instrukcija prikazan je na slici 1.(ovaj format ne vai za instrukciju MUL). Nain kodiranja je prikazan na slici 7.

33

Mikroprocesorski sistemi

ARM7 procesor

31

28 27 26 25

24

21 20

19

16 15

12 11

cond

00

opcode

Rn

Rd

operand 2

odredini registar registar prvog operanda postavljanje uslovnog koda aritmetika/logika funkcija
25 7 6 11 8 7 0

1 konstanta poravnanja

#rot

8-bit immediate

11

7 6

#shift
25 7 6

Sh

Rm

konstanta duine pomeraja tip pomeranja registar drugog operanda


11 8 7 6 5 4 3 0

Rs registarska duina pomeraja

Sh

Rm

Slika 7. Binarno kodiranje instrukcije za obradu podataka

ARM instrukcije za obradu podataka koriste troadresni format, to znai da se dva izvorna operanda i odredini registar specificiraju nezavisno. Jedan izvorni operand je uvek registar, drugi moe biti registar, pomereni registar ili neposredna vrednost. Pomeraj koji se odnosi na drugi operand, u sluaju da je on registar, moe biti logiki ili aritmetiki pomeraj ili operacija rotiranja, a moe biti iznos specificiran bilo kao neposredna vrednost ili preko sadraja etvrtog registra. Kada se instrukcijom ne zahteva dostupnost svim operandima (npr. MOV ignorie Rn, dok CMP ignorie Rd) neiskorieno registarsko polje se treba postaviti na vrednost 0. Asembler to radi automatski. U tabeli 2. su date instrukcije za obradu podataka.

34

Mikroprocesorski sistemi

ARM7 procesor

Opcode [24:21] 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111

Mnemonic AND EOR SUB RSB ADD ADC SBC RSC TST TEQ CMP CMN ORR MOV BIC MVN

Meaning Logical bit-wise AND Logical bit-wise exclusive OR Subtract Reverse subtract Add Add with carry Subtract with carry Reverse subtract with carry Test Test equivalence Compare Compare negated Logical bit-wise OR Move Bit clear Move negated Tabela 2.

Effect Rd :=Rn AND Op2 Rd :=Rn EOR Op2 Rd :=Rn - Op2 Rd :=Op2 - Rn Rd :=Rn + Op2 Rd := Rn + Op2 + C Rd :=Rn - Op2 + C - 1 Rd :=Op2 - Rn + C - 1 Scc on Rn AND Op2 Scc on Rn EOR Op2 Scc on Rn - Op2 Scc on Rn + op2 Rd :=Rn OR Op2 Rd :=Op2 Rd :=Rn AND NOT Op2 Rd :=NOT Op2

ARM istrukcije za obradu podataka

Kada je S-bit (bit 20) postavljen tada se izvrenjem ovih instrukcija postavljaju markeri uslova (flegovi) CPU-a. Kada je S=0, i kada Rd nije r15, markeri uslova ostaju nepromenjeni. Znaenje markera je sledee: N fleg se postavlja ako je rezultat negativan; u suprotno se brie. Z fleg se postavlja ako je rezultat nula, u suprotnom se brie. C fleg se postavlja kada postoji prenos na izlazu ALJ i javlja se kada se izvrava aritmetika operacija (ADD, ADC, SUB, SBC, RSB, RSC, CMP, CMN) ili kada postoji prenos na izlazu pomeraa. Ako se pomeraj ne zahteva sadraj C se ne menja. V fleg ostaje nepromenjen kod izvrenja ne-aritmetikih operacija. Postavlja se kod izvrenje aritmetikh operacija ako postoji premaaj sa bit pozicije 30 na bit poziciju 31, inae se brie. Postavljenje ovog markera je od znaaja samo kod izvrenja aritmetikih operacija koje manipuliu sa vrednostima u prezentaciji komplementa dvojke. Asemblerski format: Opti format asemblerskih instrukcija iz ove grupe je sledeeg oblika:
<op>{<cond>} {s} Rd, Rn, #<32-bit immediate> <op>{<cond>} {s} Rd, Rn, Rm, {<shift>}

Kod monadikih operacija kakve su MOV, MVN izostavlja se Rn tako da je format sledeeg oblika:
<opcode1>{<cond>} {s} Rd, <shifter operand> <opcode1> := MOV | MVN

35

Mikroprocesorski sistemi

ARM7 procesor

Kod instrukcija uporeivanja kakve su CMP, CMN, TST, TEQ postavljaju se samo flegovi, ne specificira se registar Rd pa je format sledeeg oblika: <opcode2>{<cond>} Rn, <shifter operand> <opcode2> := CMP | CMN | TST | TEQ Kod tro-operandskih instrukcija format je oblika: <opcode3>{<cond>} {s} Rd, Rn <shifter operand> <opcode3> := ADD | SUB | RSB | ADC | SBC | RSC | AND | BIC | EOR | ORR

U konkretnom sluaju <shift> specificira tip pomeranja (LSL, LSR, ASL, ASR, ROR, RRX). U svim sluajevima sem u RRX veliina pomeraja moe biti ili 5-bitna ili specificirana sadrajem registra Rs. Rn se odnosi na prvi izvorni registarski operand, a Rd na odredini registarski operand. Opis. Tipina ARM instrukcija za obradu podataka je na asemblerskom jeziku je oblika:
ADD r0, r1, r2 ; r0 :=r1 + r2

Nakon taka-zarez sledi komentar. Ovaj primer pribavlja vrednosti dva registra (r1 i r2), sabira ih, a rezultat smeta u trei registar (r0). Vrednosti u izvornim registrima su 32-bitne i mogu biti neoznaene celobrojne vrednosti ili oznaene celobrojne vrednosti komplementa dvojke. Sabiranje moe dovesti do prenosa, ili do internog premaaja. Primetimo da se pri pisanju asemblerskog izvornog koda mora obratiti posebna panja na pravilan redosled zapisivanja operanada. To znai: prvo registar u koji se smeta rezultat, zatim prvi operand i tek onda drugi operand (iako se za komutativne operacije moe zameniti redosled prvog i drugog operanda ako su oba registri). Kada se izvri ova instrukcija jedina promena stanja sistema je vrednost odredinog registra r0 (i opciono N, Z, C i V flegovi u registar CPSR). 5.4.1 Aritmetike operacije Ove instrukcije izvode binarne aritmetike operacije (dodavanje oduzimanje, ili inverzno oduzimanje tj. oduzimanje sa izmenjenim redosledom operanada) nad dva 32-bitna operanda. Operandi mogu biti neoznaene ili oznaene celobrojne vrednosti u dvojinom komplermentu. Ulazni prenos kada se koristi predstavlja tekuu vrednost C bita registra CPSR.
ADD ADC SUB SBC RSB RSC r0, r0, r0, r0, r0, r0, r1, r1, r1, r1, r1, r1, r2 r2 r2 r2 r2 r2 ; r0 := r1 + r2 ; r0 := r1 + r2 + C ; r0 := r1 - r2 ; r0 := r1 - r2 + C - 1 ; r0 := r2 - r1 ; r0 := r2 - r1 +C - 1

36

Mikroprocesorski sistemi

ARM7 procesor

ADD prdstavlja sabiranje, ADC je sabiranje sa prenosom, SUB je oduzimanje, SBC je oduzimanje sa pozamljivanjem, RSB je oduzimanje sa inverznim redosledom a RSC oduzimanje sa inverznim redosledom i pozamljivanjem. 5.4.2 Logike operacije Ove instrukcije izvode navedene logike operacije Bulove algebre za svaki par bitova ulaznih operanada, tako da je u prvm sluaju r0(i):=r1(i) AND r2(i) od 0 do 31, ukljuujui i 31, i gde je r0(i) i-ti bit r0.
AND ORR EOR BIC r0, r0, r0, r0, r1, r1, r1, r1, r2 r2 r2 r2 ; r0 := r1 and r2 ; r0 := r1 or r2 ; r0 := r1 xor r2 ; r0 := r1 and not r2

Mnemonici AND, ORR, EOR se odnose na logike operacije I, ILI, iskljuivo ILI. Mnemonik BIC se odnosi na brisanje bita gde svaka 1 u drugom operandu brie odgovarajui bit u prvom operandu. 5.4.3 Operacije premetanja sadraja registara Ove instrukcije ignoriu prvi operand koji se izostavlja iz formata asemblerskog jezika, i kopiraju drugi operand u krajnje odredite.
MOV MVN r0, r0, r2 r2 ; r0 := r2 ; r0 := not r2

MVN mnemonik znai kopiranje koplementarne vrednosti u odredini registar. 5.4.4 Operacije poreenja Ove instrukcije ne generiu rezultat (koji je zbog toga izostavljen iz formata asemblerskog jezika) ve samo postavljaju flegove (N, Z, C i V) registra CPSR.
CMP CMN TST TEQ r1, r1, r1, r1, r2 r2 r2 r2 ; postavi cc na r1 - r2 ; postavi cc na r1 + r2 ; postavi cc na r1 and r2 ; postavi cc na r1 xor r2

Mnemonici oznaavaju poreenje (CMP), poreenje sa negacijom (CMN), testiranje sadraja bita (TST) i test nejednakost (TEQ).

37

Mikroprocesorski sistemi

ARM7 procesor

5.4.5 Neposredni operandi Ako umesto sabiranja sadraja dva registra elimo da saberemo neku konstantu sa sadrajem registra tada e drugi operand biti neposredna vrednost koje se definie kao konstanta kojoj prethodi znak #:
ADD AND r3, r8, r3, r7, #1 #&ff ; r3 := r3 + 1 ; r8 := r7[7:0]

Prvi primer ilustruje da iako se koristi troadresni format izvornni i odredini operandi ne moraju da budu isti. Drugi primer pokazuje da se neposredna vrednost moe specificurati u heksa-decimalnom obliku (osnove 16) tako to se navede znak & ispred #.

5.4.6 Pomereni registarski operandi

ADD

r3,

r2,

r1,

LSL #3

; r3 := r2 + 8 x r1

Naglasimo da je ovo jedinstvena ARM instrukcija, koja se izvrava u jednom taktnom ciklusu. Veina procesora u svom repertoaru poseduje operaciju pomeranja kao zasebnu instrukciju, ali ih ARM kombinuje sa optim operacijama ALJ u jedinstvenu instrukciju. LSL oznaava logiko pomeranje u levo za navedeni broj bitova to je u datom primeru tri. Moe se navesti bilo koji broj od 0 do 31 iako se korienje 0 poistoveuje sa izostavljanjem pomeraja. # oznaava ternutnu vrednost. Dostupne operacije pomeranja su: LSL: logiko pomeranje u levo za zadati broj od 0 do 31 mesta; slobodni bitovi najmanje teine na kraju rei se dopunjavaju nulama. LSR: logiko pomeranje udesno; slobodni bitovi najvee teine na poetku rei se dopunjavaju nulama. ASL: aritmetiko pomeranje u levo, sionim za LSL. ASR: aritmetiko pomeranje u desno za 0 do 32 mesta; popunjavaju se prazna mesta na delu rei koja ima najveu teinu nulama ako je izvorni operand pozitivan, ili jedinicama ako je izvorni operand bio negativan. ROR: rotiranje desno za 0 do 32 mesta. Bitovi koji se nalaze na delu najmanje teine u rei i koji otpadaju sa kraja se koriste kako bi se popunila prazna mesta na delu rei koja ima najveu teinu. RRX: rotiranje u desno sa proirenjem za jedno mesto; upranjeni bit (bit 31) se popunjava starom vrednou C flega i operand se pomera jedno mesto udesno. Odgovarajuom primenom uslovnih kodova se koristi 33-bitno rotiranje operanda i C flega. Takoe je mogue koristiti vrednost registra kako bi se naveo broj bitova za koji bi trebalo pomeriti drugi operand: ADD r5, r5, r3, LSL r2 ; r5 := r5 + r3 x 2 r 2 38

Mikroprocesorski sistemi

ARM7 procesor

5.5 Razliite aritmetike instrukcije 5.5.1. Prebrojavanje poetnih nula (CLZ(Count Leading Zeros) arhitektura samo za v5T) Korisna je za ponovnu normalizaciju brojeva i mnogo je efikasnija nego samo korienje nekih drugih ARM instrukcija. Nain kodiranja je prikazan na slici 8.

31

28 27

16 15

12 11

4 3

cond

000101100000

Rd

00000001

Rm

odredini registar

izvorni registar

Slika8. Binarno enkodiranje instrukcije brojanja poetnih nula

Asemblerski format:
CLZ{<cond>} Rd, Rm Rd oznaava odredini registar, a Rm izvorni registar

Opis. Instrukcija postavlja Rd na broj nula na mestima najvee teine u odnosu na mesto bita najvee teine koji ima vrednost 1 u Rm. Ako je Rm jednak nuli Rd e biti postavljen na vrednost 32. Primer:
MOV CLZ r0, r1, #&100 r0 ; r1 := 23

39

Mikroprocesorski sistemi

ARM7 procesor

5.6 Instrukcije mnoenja ARM instrukcije mnoenja daju proizvod u vidu dva 32-bitna binarna broja koja se uvaju u registrima. Mnoenje dve 32-bitne celobrojne vrednosti dobija se 64-bitni rezultat, kod koga se 32 bita manje teine smetaju u odredini registar rezultata dok se ostali zanemaruju. Neki oblici instrukcije, dostupni samo na nekim verzijama procesora, smetaju kompletan rezultat u dva nezavisno navedena registra; ostali oblici smetaju samo 32 bita najmanje vrednosti u jedan registar. Nain kodiranja je prikazan na slici 9.

31

28 27

24 23

21 20 19

16 15

12 11

cond

0000

mul

Rd/RdHi

Rn/RdLo

Rs

1001

Rm

Slika 9. Binarno kodiranje instrukcije mnoenja

Asemblerski format: Instrukcije koje daju 32 bita najmanje vrednosti u proizvodu su:
MUL{<cond>} {s} Rd, Rm, Rs MLA{<cond>} {s} Rd, Rm, Rs, Rn

Naredne instrukcije daju kompletan 64-bitni rezultat:


<mul>{<cond>} {s} RdHi, RdLo, Rm, Rs

gde je <mu1> jedan od tipova 64-bitnog mnoenja (UMULL, UMLAL, SMULL, SMLAL). U tabeli 3. su prikazane instrukcije mnoenja.

Opcode [23:21] 000 001 100 101 110 111

Mnemonic MUL MLA UMULL UMLAL SMULL SMLAL

Meaning Multiply (32-bit result) Multiply-accumulate (32-bit result) Unsigned multiply long Unsigned multiply-accumulate long Signed multiply long Signed multoply-accumulated long

Effect Rd :=(Rm*Rs) [31:0] Rd :=(Rm*Rs+Rn) [31:0] RdHi:RdLo :=Rm*Rs RdHi:RdLo +=Rm*Rs RdHi:RdLo :=Rm*Rs RdHi:RdLo +=Rm*Rs

Tabela 3. Instrukcije mnoenja

40

Mikroprocesorski sistemi

ARM7 procesor

Opis. RdHi:RdLo je 64-bitni broj formiran nadovezivanjem RdHi (32 bita najvee vrednosti) i RdLo (32 bita najmanje vrednosti). (31:0) vri odabir samo 32 bita najmanje vrednosti rezultata. Jednostavno dodeljivanje vrednosti se oznaava sa := Nagomilavanje (dodavanje desne strane levoj) se oznaava sa += S bit kontrolie postavljanje markera uslova uz ostale instrukcije za obradu podataka. U sluaju da je ovaj bit postavljen u nekoj instrukciji: N fleg je postavljen na vrednost bita 31 iz Rd za varijante koje daju 32bitni rezultat, ili na bit 31 RdHi za dugake forme. Z fleg se postavlja ako su Rd ili RdHi i RdLo nule. C fleg se postavlja na nebitnu vrednost. V fleg se ne menja. Veoma vana instrukcija koja se koristi kod digitalnog procesiranja signala je: mnoenje sa akumulacijom. U jednom konkretnom primeru ona je sledeeg oblika:
MLA r4, r3, r2, r1 ; r4 := (r3 x r2 +r1)

Mnoenje konstantom se moe obaviti tako to se konstanta uita u registar a zatim se iskoristi jedna od pomenutih instrukcija, ali je efikasnije koristiti kratke nizove instrukcija za obradu podataka koje koriste operacije pomeranja i sabiranje ili oduzimanje. Na primer, za mnoenje r0 sa 35 se koristi sledea sekvenca:
ADD RSB r0, r0, r0, r0, r0, r0, LSL LSL #2 #3 ; r0 := 5 x r0 ; r0 := 7 x r0 (=35 x r0)

Postoje neke vane razlike u odnosu na ostale aritmetike instrukcije: drugi izvorini operand neposredne vrednosti se ne podrava. Odredini registar treba biti razliit od prvog izvorinog. ako je postavljen S bit tada e se V fleg postavljati (kao i kod logike instrukcije) dok e vrednost C flega biti beznaajna. Primeri:
MUL MULS MLA SMULL UMULL UMLAL r4, r4, r7, r4, r2, r2, r8, r8, r1 r1 r9, r3 r2, r3 ; r4 dobija vrednost r2 pomnoena sa r1 ; r4 := r2 x r1, postavi N I Z flegove ; r4 := r8 x r9 + r3 ; r4 := bitovi 0 do 31 od r2 x r3 ; r8 := bitovi 32 do 63 od r2 x r3 ; r8, r6 := r0 x r1 ; r8, r5 := r0 x r1 + r8, r5

r6, r8, r0, r1 r5, r8, r0, r1

41

Mikroprocesorski sistemi

ARM7 procesor

5.7 Instrukcije grananja 5.7.1 Grananje sa linkom (B, BL) Instrukcije grananja i grananja sa linkom su standardni naini za promenu toka izvreenja sekvenci instrukcija. ARM standardno izvrava instrukcije sa sekvencijalnim redosledom adresa u memoriji, a koristi uslovno izvrenje sa grananjem tamo gde je to potrebno. Standardne instrukcije iz ove grupe su Branch i Branch sa linkom. Nain kodiranja ovih instrikcije je prikazan na slici. Nain kodiranja je prikazan na slici 10.

31

28 27

25

24

23

cond

101

24-bit signed word offset

Slika 10. Binarno kodiranje granjanja i grananje sa linkom

Format asemblera:
B{L} {<cond>} <target address>

L specificira grananje i granjanje sa link varijantom. Ako L ne postoji generie se grananje bez linka. <cond> bi trebalo da bude jedna od mnemonika navedena u tabeli ARM uslovnih kodova, a ako se ovo polje izostavi podrazumeva se AL. <target address> je obio labela u asemblerskom kodu; asembler e generisati ofset. Opis. Instrukcije Brandh i Branch with Link uzrokuju da procesor pone sa izvravanjem instrukcija sa adrese koja je se dobija izraunavanjem sledeim izraunavanjem: 24-bitni offset specificiran instrukcijom znakovno se proiruje, pomerajui ga dva mesta ulevo kako bi se dobio offset rei, a zatim se sabira sa sadrajem programskog brojaa koji sadri adresu instrukcije grananja plus 8 bajtova. Opseg instrukcija grananja je +/- 32 MB. Branch with Link kod koje je postavljen bit 24(bit L), takoe kopira adresu instrukcijesledei grananje na koje ukazuje link (r14) tekueg procesorsog reima rada. Ovo se obino koristi za poziv podprograma, gde se povratna adresa uva u link registru. Oba oblika instrukcije se mogu izvravati uslovno ili bezuslovno.

42

Mikroprocesorski sistemi

ARM7 procesor

Primeri: Bezuslovni skok:


B LABEL . . . . LABEL ; bezuslovni skok . . ; . . ovde

Izvravanje petlje 10 puta:


MOV r0, #10 . . SUBS r0, #1 BNE LOOP . . ; inicijalizacija brojaa petlje ; smanjenje countersetting CCs ; ako je broja <> 0 ponoviti petlju . . ; . . u suprotnom ispustiti kroz

LOOP

Poziv subrutini:
. . BL . . . . . . MOV PC, r14 SUB ; grananje i veza do subrutine SUB ; povratak ovde ; taka ulaza subrutine ; povratak

SUB

Uslovni poziv subrutini:


. . CMP BLLT BLGE ; ako je r0 < 5 ; pozovi SUB1 ; u suprotnom pozovi SUB2

r0, #5 SUB1 SUB2

5.7.2 Grananje sa linkom i razmenom (BX, BLX) Ove instrukcije su dostupne kod ARM ipova koji podravaju 16-bitni Thumb skup instrukcija, i jedan su od mehanizama za prebacivanje procesora u reim rada u kada bi izvravao thumb instrukcije ili za povratak na ARM ili Thumb rutine. Sline Thumb instrukcije uzrokuju da se procesor vrati u 32-bitni ARM reim Nain kodiranja je prikazan na slici 11. (1)BX| BLX Rm
31 28 27 6 5 4 3 0

cond

0001001011111111111100

Rm

43

Mikroprocesorski sistemi

ARM7 procesor

(2) BLX label


31 28 27 25 24 23 0

1111

101

24-bit signed word offset

Slika 11. Binarno kodiranje granjanja (sa opcionim linkom) i instrukcijom razmene

Format asemblera:
1: 2: B{L}X{<cond>} Rm BLX <target address>

<target address> je obino labela u asemlerskom kodu. Asembler generie ofset (koji e biti razlika izmeu adrese rei mete i adrese instrukcije grananja plus 8) i postavlja H bit ako je potrebno. Opis. U prvom formatu je ciljna adresa grananja cpecificirana u registru Rm. Bit(0) u Rm se kopira u T bit CPSR dok se bitovi (31:1) premetaju u PC: Ako je Rm(0) jednak 1, procesor prelazi u izvrenje Thumb reim rada i poinje sa izvrenjem adrese specificiran sa adresom u Rm poevi od granice polu-rei. Ako je Rm(0) jednak 0, procesor nastavlja sa izvrenjem ARM instrukcija i poinje sa izvrenjem adrese specificiran sa adresom u Rm poevi od granice rei. Kod drugog formata je ciljna adresa grananja i adresa koja se dobija izraunavanjem proirenjem znaka 24-bitnog ofseta cpecificiran instrukcijom. Zatim se vri odreeno pomeranje u levo i dodaje vrednost PC koji sadri adresu BX instrukcije plus osam bajtova. H bit (bit 24) se takoe dodaje bitu 1 rezultujue adrese, to omoguava adresiranje neparne polurei u sluaju kada ciljna instrukcija pripada Thumb instrukcijama. Opseg instrukcija grananja je +/- 32 MB. Oba formata instrukcije Branch sa Linkom, koja imaju postavljen L bit (bit 5) u prvom formatu, takoe kopira adresu instrukcije koja sledi nakon instrukcije grananja u link registar (r14) tekueg programskog reima rada. Ova instrukcija se standardno za pamenje povratne adrese pri pozivu Thumb podprogram. Ako se koristi BX kao mehanizam povratka iz podprograma, stanje registra semoe zapamtiti zajedno sa povratnom adresom tako da se isti mehanizam moe koristiti od strane ARM-ovog ili Thum-ovog pozivnog programa kada se izvrava ARM ili Thumb podprogram. Instrukcije formata (1) se mogu izvravati uslovno ili bezuslovno, dok se instrukcije formata (2) izvravaju bezuslovno.

44

Mikroprocesorski sistemi

ARM7 procesor

Primeri: Bezuslovni skok:


BX r0 ; grananje na adresu u r0, ; unesi Thumb stanje ako je r0[0] =1

Poziv thumb subrutini:


CODE32 . . BLX .. CODE16 . . BX ; ARM kod prati TSUB ; pozovil Thumb subrutinu ; start Thumb koda ; Thumb subrutina ; vrati se u ARM kod

TSUB

r14

Lista Instrukcija: B. BL BLX BX


Branch, and Branch with Link Branch with Link and Exchange Branch and Exchange

5.8 Instrukcije za generisanje softverkoih prekida 5.8.1 Softverski prekid (SWI) Instrukcija softverskog prekida se koristi za poziv operativnog sistema i esto se naziva poziv supervizoru. Ona postavlja procesor u supervizorski reim rada i zapoinje izvrenje instrukcija sa adrese 0x08. Nain kodiranja je prikazan na slici 12.
31 28 27 24 23 0

cond

1111

24-bit (interpreted) immediate Slika 12. Binarno kodiranje softverskg prekida

45

Mikroprocesorski sistemi

ARM7 procesor

Format asemblera:
SWI{<cond>} <24-bit immediate>

Opis. 24-bitno polje u kome se uva neposredna vrednost ne utie na rad instrukcije ali se moe interpretirati od strane sistemskog koda. Ako se ispuni uslov instrukcija uzrokuje da se ue u supervizorski reim rada. Akcije koje preduzima procesor su: 1. pamti se adresa instrukcije nakon SWI u r14_svc. 2. pamti se CPSR u SPSR_svc. 3. ulazi se u supervizorski reim rada, brane se IRQ-ovi, ali ne i FIQ-ove na taj nain to se postavljaju CPSR(4:0) na 10011 i CPSR(7) na 1. 4. postavlja PC na hex vrednost 08 i zapoinjanje izvrenja instrukcija koja se nalazi na tom mestu. Za povratak instrukciji nakon SWI sistemska rutina mora ne samo kopirati r14_svc u PC, ve takoe mora da obnovi stanje CPSR iz SPSR_svc.

Primeri: Za prikazivanje karaktera A :


MOV SWI r0, #A SWI_WriteC ; prebaci A u r0 . . ; . . tampaj

Subrutina za prikaz tekstualnog niza nakon poziva:


. . BL STROUT ; izlaz za sledeu poruku = Hello World , &0a, &0d, 0 . . ; vrati se ovde . . LDRB r0, [r14], #1 ; ubaci znak CMP r0, #0 ; proveri krajnji marker SWINE SWI_WriteC ; ako nije kraj, tampaj . . BNE STROUT ; . . i petlja ADD r14, #3 ; poravnjaj do susedne rei BIC r14, #3 MOV pc, r14 ; povratak

STROUT

Okonanje izvrenja korisnikog programa i povratak glavnom programu:


SWI SWI_Exit ; vrati se na monitor

46

Mikroprocesorski sistemi

ARM7 procesor

5.8.2 Instrukcija prekidna taka (BKPT samo za v5T arhitekturu) Instrukcije prekidne take se koriste za debagiranje softvera; one uzrokuju da procesor prekine sa normalnim izvrenjem instrukcija i pree na izvrenje odgovarajuu proceduru za debagiranja. Nain kodiranja je prikazan na slici 13.
31 28 27 20 19 16 15 12 11 8 7 4 3 0

1110

00010010

xxxx

xxxx

xxxx

0111

xxxx

Slika 13. Binarno kodiranje instrukcije take prekida

Asemblerski format:
BRK

Opis. Ova instrukcija uzrokuje da procesor prekine sa radom kada je hardverska jedinica za debagiranje odgovarajue konfigurisana. Primeri:
BRK ; !

5.9 Instrukcije koprocesora 5.9.1 Operacije podataka koprocesora Ove instrukcije se koriste za kontrolu internih operacija nad podacima u koprocesorskim registrima. Standardni formati odgovaraju tipovima troadresih maina ali su druge interpretacije svih polja u koprocesorskoj instrukciji mogue. Nain kodiranja je prikazan na slici 14.

31

28 27

24

23

20 19

16 15

12 11

8 7

cond

1110

Cop1

CRn

CRd

CP#

Cop2

CRm

Slika 14. Binarno kodiranje instrukcije koprocesorske oeracije podataka

47

Mikroprocesorski sistemi

ARM7 procesor

Asemblerski format.
CDP{<cond>} <CP#>, <Cop1>, CRd, CRn, CRm{, <Cop2>}

Opis. ARM korist ovu instrukciju za rad sa bilo kojim koprocesorom. Ako se ona prihvata od strane bilo koji koprocesor ARM produava sa izvreenjen naredne instrukcije, a ko se ne prihvata ARM generie nedefinisani izuzetak tipa trap(koji se moe koristiti za softversku implementaciju bilo koje koprocesorske instrukcije). U naormalnoj situaciji koprocesor se identifikuje CP# na taj nain to prihvata ovu instrukciju i obavlj operaciju definisanui od starne polja Cop1 i Cop2, korienjem CRn i CRm kao izvorne operanade dok rezultat smeta u CRd. Primeri:
CDP p5, 2, c12, c10, c3, 4 ; koprocesor 5 operacija podataka ; opkod 1 = 2, opkod 2 = 4 ; odredini registar je 12 ; izvorni registri su 10 i 3

5.9.2 Prenos podataka koprocesoru Instrukcije za prenos podataka koprocesora su sline instrukcija koje prenose neposredni offset kod podataka tip re i instrukcije koje se koriste za prenos neoznaenih bajtova. Ofset je sada ogranien na 8 bitova, ane na 12 bitova. Nain kodiranja je prikazan na slici 15.
31 28 27 25 24 23 22 21 20 19 16 15 12 11 8 7 0

cond

101

Rn

CRd

CP#

8-bit offset

izvorni/odredini registar bazni registar uitavanje/smetanje write-back (auto-index)


veliina podatka(zavisi od koprocesora) gore/dole pre-/post-index

Slika 15. Binarno kodiranje instrukcije prenosa podataka koprocesor

48

Mikroprocesorski sistemi

ARM7 procesor

Asemblerski format: Prethodno-indeksirani oblik:


LDC | STC{<cond>} {L} <CP#>, CRd, [Rn, <offset>] {!}

Naknadno-indeksirani oblik:
LDC | STC{<cond>} {L} <CP#>, CRd, [Rn], <offset>

U oba sluaja LDC odabira uitavanje iz memorije u registar koproce-sora, STC bira smetanje iz registra koprocesora u memoriju. L fleg, ako je prisutan, bira dugaak tip podataka (N=1) Opis. Instrukcije se koriste id strane bilo kojih koprocesora koji su povezani na system. ako je nijedan ne prihvati ovu instrukciju ARM izvrava instrukcioni trep pri emu softerskim putem emulira rad koprocesora. Kada je prisutan, koprocesor sa koprocesorskim brojem CP# prihvati e ovu instrukciju. Izraunavanje adrese se obavlja u okviru ARM, korienjem baznog registra ARM (Rn) i 8-bitni neposredni ofseta koji se skalira na offset tipa re njegovim pomeranjem u levo za poziciju dva bita. Adresni nain rada i auto-indeksiranje se kontroliu na isti nain kao i instrukcije koje vre prenos neoznaenog bajta ili rei. Na ovaj nain se definie prva adresa prenosa dok se prenos narednih rei obavlja inkrementiranjem adrese. Primeri:
LDC p6, CR1, [r4] ; uitaj iz memorije u koprocesor 6 ; ARM registar 4 sadri adresu ; uitaj u CP regisar 1 ; uitaj iz memorije u koprocesor 6 ; ARM registar r2 + 4 je adresa ; uitaj u CP registar 4 ; smesti iz koprocesora 8 u memoriju ; ARM registar r2 + 4 je adresa ; posle transfera r2= r2 +4 ; smesti od CP registar 8 ; smesti iz koprocesora 8 u memoriju ; ARM registar r2 uva adresu ; posle transfera r2= r2 - 16 ; smesti od CP registar 9

LDC

p6, CR4, [r2, #4]

STC

p8, CR8, [r2, #4] !

STC

p8, CR9, [r2], #-16

49

Mikroprocesorski sistemi

ARM7 procesor

5.9.3 Prenos registara koprocesora Ove instrukcije omoguavaju da se celobrojne vrednosti generisane od strane koprocesora prenese direktno u ARM registar, ili u ARM-ov marker registar. Nain kodiranja je prikazan na slici 16.

31

28 27

24

23

21

20

19

16 15

12 11

cond

1110

Cop1

CRn

Rd

CP#

Cop2

CRm

uitati iz koprocesora/smestiti u koprocesor

Slika 16. Binarno enkodiranje instrukcije prenosa registra koprocesora

Tipine primene su sledee: FP-ova FIX operacija koja postavlja integer vrednost u ARM registar. FP kompariranje koje vraa rezultat operacije kompariranja u ARM-ov marker registar ime se kasnije odreuje tok izvreenja programa. FLOAT operacija koja pribavlja celobrojnu vrednost iz ARM-og registra, predaje je koprocesorui, gde se konvertuje u FP broj i smeta u koprocesorki registar.

Asemblerski format: Prenos iz ARM registra u koprocesor:


MRC{<cond>} <CP#>, <Cop1>, Rd, CRn, CRm{, <Cop2>}

Prenos u koprocesor iz ARM registra:


MCR{<cond>} <CP#>, <Cop1>, Rd, CRn, CRm{, <Cop2>}

Opis. Ovu insrukciju koristi bilo koji processor pevezan na system; obino e koprocesor sa koprocesorskim brojem CP# prihvatiti ovu instrukciju. Ako koprocesor nije prisutan ARM definie nedifinisani instrukcioni trap. Ako koprocesor prihvati Load od instrukcije koprocesora, on e obaviti operaciju definisanu od strane Cop1 i Cop2 nad izvornim operandima CRn i CRm i smestiti 32-bitni celobrojni rezultat od ARM u registar Rd. Ako koprocesor prihvati Store koprocesorke instrukcije, onda e prihvatiti 32bitnu celobrojnu vrednost od ARM-ovog registra Rd i uraditi neto sa njom. 50

Mikroprocesorski sistemi

ARM7 procesor

Ako je PC naveden kao odredini registar Rd kod insttrrukcije Load iz koprocesorske instrukcije, 4 MS bita 32-bitne celobrojne vrednosti generisane od strane koprocesora se smetaju u N, Z, C i V flegove registra CPSR.

Primeri:
MRC p15, 5, r4, c0, c2, 3 ; koprocesor 15 prebacuje u ARM registar ; opkod 1= 5, opkod 2= 3 ; ARM odredini registar= r4 ; koprocesorski izvorni registri su 7 i 12 ; ARM registar prebacuje u koprocesor 14 ; opkod 1= 1, opkod 2= 6 ; ARM izvorni registar= r7 ; koprocesorki odredini registri su 7 i 12

MCR p14, 1, r7, c7, c12, 6

51

Mikroprocesorski sistemi

ARM7 procesor

6. Hardver i Softver
Proces kreiranja

Za razumevanje hardversko/softverske ko-verifikacije neophodno je razumeti princip rada alata kao i proces koji se koristi za razvoj hardvera i softvera. Do skora, integracija softvera sa hardverom se izvodila u laboratorijiskom okruzenju konstrukcijom hardvera i pokretanjem softvera. Debagiranje se izvodilo sledeom opremom: in-circuit emulatorima (ICE), logikim analizatorima i osciloskopima. Debagiranje u kasnijoj fazi projektovanja, , kada je pritisak na projektante zbog definisanog roka najvei, je naporan i stresan zadatak. Ko-verifikacijom menja se ovakav pristup jer se koristi virtuelni prototip hardvera koji se izvrsava na softveru pre nego sto je prototip dostupan.

Tri komponente SoC verifikacije


Pre nego to preemo na detaljan opis izrade hardvera i softvera i prouimo njihovu povezanost, vredno je sagledati tri komponente SoC verifikacije. Da bi kreirali koherentnu metodologiju za hardversku i softversku verifikaciju, ininjeri moraju razumeti specifine alate u svakoj oblasti kao i njihovu meusobnu povezanost. Ove tri komponente su: 1. Verifikaciona platforma 2. Hardverski verifikacioni alati i tehnike 3. Softverski alati i tehnike za debagiranje

6.1 Verifikaciona Platforma


Verifikacija platforme je metod koji se koristi za opis hardverskog dizajna.Njena alternativna imena su izvrna maina ili virtuelni prototip.Proces projektovanja hardvera cini u opis hardvera na jedan od dva jezika za opis hardvera (HDLs), Verilog ili VHDL. Ovi na ovim jezicima mogu izvrsavati na bilo kojoj platformi (PC masina,radna stanica itd...) etri posebne metode se mogu identifikovati i koristii za rad hardvera: Logika simulacija Ubrzana simulacija Emulacija Hardverski prototip

52

Mikroprocesorski sistemi

ARM7 procesor

Svaka motoda koja opisuje rad hardvera koristi posebne tehnike za debagiranje,pri cemu svaka ima svoje prednosti i nedostatke. Metode se rangiraju u odnosu na najsporije metoda izvrsenja, koje se karakterisu sa najvecom fleksibilnoscu i najboljim debagiranjem, pa do najbrih,koje karakterise najmanja fleksibilnost i najsporije debagiranje.U daljem tekstu dacemo definicije koje se koriste za opis ovih platformi i nain na koji one rade. Jezik za opis hardvera (HDL) se odnosi na namenske jezike projektovane za opis hardvera. Dva jezika koja se danas koriste su Verilog HDL i VHDL. Ovi jezici se koriste da bi opisali rad ipa ili ploe isto kao to softverski program opisuje rad mikroprocesora ili ugraenog sistema. HDL-ovi sadre kljune rei, sintaksu i semantiku modela hardverskog kola. Softverski alati mogu koristiti ove modele za simuliranje ponaanja hardvera i za sintezu HDL modela u strukturni prikaz koji se moe koristiti za realizaciju hardvera. HDL-ovi se koriste za specifikaciju implementacije ASIC i FPGA kola. Takoe se koriste za modeliranje memorije i drugih digitalnih kola. U odnosu na prvobitne verzij,oba jezika nastavljaju da se razvijaju.Kod Veriloga je standad IEEE 1364 a kod VHDL-a je IEEE 1076. S obzirom da se delovi ipa ili sistema najcesce projektuju od strane razliitih grupa ili kompanija, prirodno je da se koristi kombinacija oba jezika kada se opisuju slozena resenja. Situacija kada se koriste oba jezika se naizva mesoviiti-jeziki projekat, a simulatori koji mogu simulirati Verilog i VHDL u istoj simulacionoj platformi se nazivaju meovito-jeziki simulatori. Veina logikih simulatora danas su meovitojeziki koji su pored toga sposobni da se izvrsavaju na dodatnim jezicima , kao to je SystemC. Softverski simulatori predstavljaju dogadjajno-inicirani logicki simulatori.Oni se izvrsavaju na radnim stanicama i koriste VHDL ili Verilog kao simulacioni jezik za opis dizajna i testbench-eva. Najei tip digitalnog simulatora je dogadjajno iniciran simulator.Kada se vrednost signala menja, parametri vreme, signal i nova vrednost signala se zajednicki nazivaju dogadjaj.Dogadjaj se planira za izvrsenje kada se on smesti u red cekanja dogadjaja ili u listi dogadjaja.Kada dodje trenutak,logicka vrednost signala se menja.Promena utice na ostale signale koji prihvataju ovaj signal kao ulazni.Svi signali nakojima se ima uticaj moraju se evaluirati zato sto uzrokuje unosenje veceg broja dogadjaja u listi dogadjaja. Simulator vodi racuna o tekucem vremenu, tekucem vremenskom markeru i lista dogadjaja u kojoj se cuvaju naredni dogadjaji. Za svaki signal,logicki simulator cuva trag logickog stanja kao i amplitude pobunog generatora(izvora signala). Logiki simulator se najee koristi za simuliciju ponaanja hardverskih dizajna. Logiki simulatori mogu da se realizuju u jedan od sledecih nacina.To su simulatori koji koriste interpreterski kod i simulatori koji koriste kompajlirani kod. Simulator interpreterskog koda koristi HDL model kao podatke, a kompajlira izvrivi model kao deo strukture simulatora, a nakon toga izvrava taj model. Ovakav tip simulatora ima krace vreme kompajliranja, ali duze vreme izvrenja u poreenju sa simulatorom koji koristi kompajlirani kod. Primer simulatora koji koristi interpretirani kod je Verilog-XL. 53

Mikroprocesorski sistemi

ARM7 procesor

Simulator koji koristi kompajlirani kod konvertuje HDL model u neku formu (obino C) a zatim koristi zasebni kompajler za kreiranje izvrivog binarnog koda.U ovom slucaju imamo due vreme kompajliranja, ali i krae vreme izvrenja u poreenju sa simulatorom koji radi sa interpretirskim kodom. Najveci broj simulatora se kategorizira kao native-code kompajlirani iz razloga sto oni premoscavaju medju prezentaciju(kakva je C) i konvertuju HDL u direktno izvrsivi kod. Simulatori ovakvog tipa imaju najkrae vreme izvrenja. To su hibridni simulatori koji se mogu konfigurisati da rade u interpreterskom ili kompajliranim rezimu rada, zavisno od elje korisnika. Ubrzana simulacija se odnosi na proces mapiranja odredjenog dela dizajna koji se moze sintetizopvati na hardversku platformu koja je specificno projektovana sa ciljem da se poveju performance tako sto se evaluacija vrsi HDL konstrukcijama koje se paralelno izvrsavaju.Verilog i VHDL su po definiciji paralelni programski jezici s obzirom da oni opisuju hardver koji obavlja veliki broj konkurentnih operacija.Ovakav paralelizam ini ove jezike razliitim u odnosu na sekvencijalne programske jezike. Ubrzana simulacija se bazira na paralelizmu. S obzirom da se logiki simulatori izvrsavaju na radnoj stanicami, paralelne konstrukcije se realizuju u CPU-ove skupove instrukcija radnih stanica. Proteklih godina veci broj projektanata je pokuao da koristi vieprocesorske sisteme ili sistenme zasnovane na vecem broji radnih stanica kako bi iskoristio paraleleizam Veriloga I VHDL-a, sa manjim uspehom.Ubrzana simulacija koja koristi hardver projektovan po porudzbini a ne processor opste namene je daleko bolja za obavljanjae brze simulacije.Kod ubrzane simulacicje postoje dve komponente koje odredjuju ukupno vreme simulacije; Deo simulacije koji se moze preslikati u hardver izrazen po porudzbini i ostali delovi simulacijue koji se ne mogu preslikati u hardver. Ovi delovi se mogu izvrsavati od strabne softverskog simulatora I kordinisano raditi sa hardverskom platformom radi razmene podataka. Ubrzana simulacija obezbedjuje bolje performance jer ne vodi racuna o simulacionim dogadjajima inicirane od strane logickog simulatora a vrsi njjihovu procenu koriscenjem hardvera za paralelno procesiranje. Eliminisanjem simulacionim dogadjajima povecavarju se performance. Krajnje performanse su odreene procentom simulacije koji se izvrava na logikom simulatoru I deo koji se izvsava na akceleratoru (koje je nula). Na primer, ako 50% simulacionih dogaaja se eliminise iz logikog simulatora i njihovo vreme je nula i proceniti za neko, tada se ukupno vreme simulacije skracuje za pola.

54

Mikroprocesorski sistemi

ARM7 procesor

Sema sa ubrzanom simulacijom je prikazana na slici 2-1.

slika 2-1

Cilj ubrzavanja je poveanje performansi. Krajnje performanse su zasnovane na brzini akceleracione platforme i procentu simulacije koji se moe izvravati u oviru akceleracionog hardvera. U jednoj tipinoj situaciji ubrzanja se neki odreeni deo simulacije odvija u radnoj stanici. Odnos procenta simulacije u radnoj stanici nasuprot procenta dizajna u sistemu za ubrzanje (akceleratoru) odreuje krajnje performanse. Emulacija se odnosi na proces mapiranja itavog dizajna na hardversku platformu projektovanu u cilju poveanja performansi sistema. Ne postoji stalna veza izmeu emulatora i radne stanice tokom izvrenja programa, a emulator ne prihvata ulaz od radne stanice.Nepostojanje veze sa radnom obezbedjuje hardverskoj platformi da radi punom brzinom i da ne postoji ekanje za bilo kakvom komunikacijom. Postoje tri standardne tehnike koje se koriste za ubrzanu simulaciju i emulaciju. Jedna koristi polja specificno projektovanih procesora za izvrenje programa, a ostale dve koriste FPGA kola za postizanje paralelizma. Postoji mnogo razliitih definicija o tome ta zapravo termin emulacija znai, i u kojoj je vezi sa ubrzanom simulacijom. Definosacemo emulaciju na osnovu sledecih karakteristika: Ne postoji testbench koji se izvrsava na radnoj stanici Emulator je master a radna stanica je slave. Taktni impulse se generisu od strane emulatora, a ne od radne stanice Karakteristike ubrzane simulaciju su sledece: Postoji neki testbench koji se izvrava na radnoj stanici (poeljno je to manje, zbog boljih performansi) Radna stanica je sada master a emulator ili akcelerator je slave Taktni impulse se generisu od strane testbench-a koji se izvrava na radnoj stanici 55

Mikroprocesorski sistemi

ARM7 procesor

In-circuit se odnosi na korienje spoljanjeg hardvera spregnutog sa emulatorom u svrhu obezbedjenja realisticnijeg okruenja dizajna koji se simulira. Ovaj hardver je obino u formi tampanih kola koje se nekad nazivaju ciljne ploce ili ciljni sistem,dok se test oprema povezuje na emulator. Mogua je i emulacija bez ciljne sistema koja se odnosi na izvrsenje bez testbench ulaza iz radne stanice,ali takodje bez ciljnog sistema.Kod simulacije bez ciljnog sistema svo generisanje pobudnih signala (testbench-eva) se vrsi na osnovi sintetizovanih oblika i izvrsavaju se na emulatoru.Kod ovog postupka ubvek postoje nedefinisanosti,imajuci u vidu da tekuci proizvodi obavljaju kako ubrzanu simulaciju tako i emulaciju a komutacija izmedju ova dva rezima rada se obavalj iniciranjem komande.Tako na primer kada smo u emulacionom rezimu rada korisnik moze da pritisne dirku Ctrl+c kako bi stopirao emulator tako da zbog toga mora da postoji povratna veza sa random stanicom. Neki od emulatora takodje obezbedjuju testhbench-ove koji se mogu sintetizovati ikoriste komande stampanja kakva je s display u Verilog-u sa ciljem da se stampaju poruke na radnoj stanici koje se koriste kod procesa debagiranja;sto ukazuje na potrebu slabe sprege na radnoj stanici.

Dijagrami koji prikazuju emulaciju koja ne korist ciljni sistem i in-circuit emulaciju su prikazani na slikama 2-3 i 2-4.

slika 2-3

56

Mikroprocesorski sistemi

ARM7 procesor

slika 2-4 Hardverski prototip se izvodi kao hardver po porudzbini ili hardver koji se moze visestruko koristiti za realizaciju hardverske reprezentacije sistema. Prototip predstavlja reprezentaciju krajnjeg sistema a prednost mu jet a sto se moze lakse konstruisati, a samim tim i pre dostupan od konacnog proizvoda. To se postie pravljenjem kompromisa u zahtevima za krajnji proizvod, kako u performansama tako i u nacinu pakovanja.Standardni kompromis kod realizacije prototipa je uteda vremena koja se dobija zamenom ASIC kola sa programabilnom logikom. Ovo omoguava da dizajn bude dostupan ranije, ali u jednom izvodjenju koje radi sporije i znatno je gabaritnije.

6.2 Programerski pogled na svet


Softverski inenjer celo resenje vidi preko programskog modela . Programsaki model se koristi da obezbedi podrsku u odredjenim operacijama modela koji su hierarhijski visi od njega a pri tome zahteva implementacije svih arhitekturnih nivoa koji se nalaze ispod njega. Praktino, programski model mikroprocesora sastoji se od kljunih osobina CPU-a potrebne za apstrakciju procesora u cilju razvoja softvera. Kao primer programskog modela, uzet je u obzir ARM9E-S CPU iz familije ARM-a. Na osnovu tehnickog uputstva moze se zakljuciti da ARM9E-S implementira instrukcije procesora ARMv5TE koje sadrze kako skup 32 bitnih tako i skup 16 bitnih ARM-ovih instriukcija.Detalji skupa instrukcija su vazan deo programskog modela.Takodje u osnovi programskog modela se daju detalji koji se odnose na rezim rada CPU-a,formata memorije,tipova podataka,registarkog skupa opste namene,statusnih registara, i prekida izuzetaka.Svi ovi detalji mikroprocesora su vazni softverskim inzenjerima. 57

Mikroprocesorski sistemi

ARM7 procesor

Osim mikroprocesora, softverski inenjeri interesoje memorijska mapa embedded sistema.Kod 32-bitnog adresnog prostora, postoji fizika memorija od 4 GB-a koja moe biti prihvaena.Embedded sistemi koriste samo podskup ovog fizikog adresnog prostora, a memorijska mapa definise gde su razliiti tipovi memorije i drugi hardversko upravljacki registri locirani. Memorijska mapa takoe odreuje ta se deava ukoliko ako se pristupa adresama koje ne pripadaju fizickom prostoru. Slika 2-5 prikazuje primer memorijske mape.

Slika 2-5. Standardni tip memorije kod embedded sistema su ROM u kome se cuva inicijalni softver koji se izvrsava na CPU, fle memorija, DRAM, SDRAM ili DDR memorija, brza SRAM i deo memojrije u kojima se preslikava periferija. Periferije mogu biti bilo koji namenski hardver koji se softverski programira.To mogu biti UART transmiter,tajmer,JPEG koder/dekoder,itd. Kombinacija mikroprocesorsko programskog modela,memorijske mape i hardverko upravljacki registri predstavljaju softverko inzenjerski pogled na embedded sistem.

58

Mikroprocesorski sistemi

ARM7 procesor

6.3 Hardverski pogled na svet


Hardverski ininjeri imaju drugaiji pogled na embedded sisteme.Ukazali smo kako su interne operacije mikroprocesora vazne za softverske inzinjere.Unutranji rad CPU-a je manje vaan za hardverske ininjere, a sprezanje sa magistralom je ono to njih interesuje. Da bi hardverski dizajn ispravno funkcionisao, logika povezana na mikroprocesor mora da ispunjava sva pravila magistralnog protokola. Ukoliko su ova pravila rada protokola ispotovana, nije vano ono to softver radi.Za hardverske ininjer, mikroprocesor nije nita drugo nego generator transakcione magistrale. Svi mikroprocesori koriste isti tip protokola za upis i citanje u memoriju. Na nivou hardver ininjeringa, na mikroprocesor se gleda kao na seriju pii-brii memorijeCitanja i upisi se koriste za pribavljanje instrukcija, pristup periferijama, obavljanja DMA penosa i drugih aktivnosti, ali u sustini oni nisu nista drugo nego niz operacija citanja i upis na magistrali.

6.4 Softverski razvojni alati


6.4.1 Editor Editor u realnosti ne predstavlja neko softversko razvojno sredstvo, ali najveci broj programera trosi vreme koristeci usluge editora (unos programa) u odnosu na druge programe.Iskustvo pokazuje da programeri zele da raspolazu sa zaista dobrim editorima jer od njihove koncepcije u najvecoj meri zavisi produktivnos. 6.4.2 Revizija izvornog koda Nakon izrade odredjenog softvera sledeci korak je da se ucini pokusaj da se isti namerno ne osteti.Kontrolna revizija je sredstvopomocu koga se u inkrementalnim koracima zapisuju promenekoje se izvode u toku razvoja softvera.Koristeci reviziju moguce je pomocu funkcije undo ispraviti izmene koje mogu da uzrokuju probleme a takodje i da se uvedu ogranicenja koja se odnose na modifikaciju pojedinih fajlova kao i identifikaciju onoga ko je izvrsio promenu. Ovo je veoma korisno u toku razvoja softvera kada postoji veci broj programera koji rade na razlicitim lokacijama. Postoje mnogo takvih sistema kontrolne revizije od besplatnih do skupih. Concurent version system(CVS) je de fakto u dananjem svetu.On se izvrsava na vecem broju platforme i obezbeuje klijent/server rezim rada za korisnike na proizvoljnim lokacijama. Moda nije najbolji, ali je najpoznatiji.

59

Mikroprocesorski sistemi

ARM7 procesor

6.4.3 Kompajler Kompajler je alatka za prevoenje visih programskih jezika (C/C++) i asemblerskih fajlova fajla u program koji se moze izvrsavati. Ovaj format se zove mainski jezik i uva se u fajlu koji se zove izvrni fajl. Embedded sistemi obicno koriste cross kompajler.Cross kompajler se izvrsava na racunaru koji ima razliciti tip procesora od onog koji se koristi u embedded sistemu.Ovo znaci da izvrsivi fajl koji se generise od strane kompajlera ne moze izvrsiti na masini koja ga je kreirala nego se on mora preneti na embedded sistem kada treba da se izvrsi. 6.4.4 Debugger Naalost, svi programi ne rade korektno iz prvog puta ili slobodnije receno 100% od svih programa ne radi korektno. ak i da program izgleda kao da radi korektno, nemogue je testirati ga u svakoj situaciji i uslovima, pa tako ne moe da se dokae da uvek radi ispravno. Debugger pomae softver ininjerima da pronadju greake tako da se kod mogao ispravno da radi u vei broj situacija u kojima se nalazi. Debuger dozvoljava softverskim projektantima da pregledaju sekvencu koda, procesore registra i memoriju, i da registruju sta se desilo. Standardne debugger funkcije obuhvataju: Registrovanje promene stanja registra Registrovanje promene stanja memorije Prikaz funkcija za prikaz magacina (backtrace) Postavljanje prekidnih tacaka Postavljanje taaka posmatranja (analizira se stanje podatka) Korak po korak funkcija inicirana C iskazom ili asemblerskom instrukcijom Iniciranje prekida u toku rada procesora

6.4.5 Simulator Simulator modelira interni rad procesora. Procesorski simulatori su esto isporucuju sa softverskim razvojnim alatima koji se koriste za kompajliranje softvera. Alternativno ime za ovaj tip simulatora je simulator skupa instrukcija (ISS). Tipicna aplikacija simulatora omogucava programeru da testira izlaz kompajlera bez da raspolaze CPU-om. Kada se razvije neki procesor, kompajlirani programi moraju biti verifikovvani kako bi mogli da se izvrsavaju na implementirani procesor.ISS se takodje koristi od strane projektanata mikroprocesora za unakrsnu proveru CPU-ovog dizajna procesora u odnosu na model. Korienje simulatora je dobar nain za verifikovanje i otklanjanje neispravnosti mikoprocesora.

60

Mikroprocesorski sistemi

ARM7 procesor

Softverski ininjeri takoe koriste simulator za testiranje koda pre nekgo sto je dostupan CPU ili ploca procesora. U ranijoj fazi projektovanje vrlo je lako izvrsavati inicijalni boot kod na simulatoru sa ciljem da se osiguramo da je CPU dobro postavljen i da dobro radi. 6.4.6 Razvojna ploa Razvojna ploa sadri procesor(CPU), memoriju i periferije, i mogucnosti da se pune i debagiraju proogrami. Razvojna ploa je u sustini standard za softverske inenjere. Kada neki projekat pocinje ili se uvede novi procesor,softverski inenjeri nabavljaju razvojnu plou i pocinju sa pisanjem izvrsenja programa sa ciljem da utvrde da li je kompajlirani kod korektan i sve greske u programu ispravljene.Proizvoai mikroprocesora isporucuju ove ploe koje se koriste za evaluaciju CPU-a a osnovna njihova prednost je ta sto je CPU realan,to je pravi da izvrsava stvarne programe i provere su verodostojne. 6.4.7 Integrisana razvojna okruzenja (IDE) IDE kombinuje sve neophodne funkcije i alate koji su potrebni softverskim projektantima u jedinstveni, integrisani proizvod sadri editor,pretrazivac izvornog koda,fajl navigator, fajl editor i kreator projekta. Idea se sastoji u tomeda ako se nauci samo jedno sredstvo u znacajnoj meri se olaksava projektovanje i lakse je razumeti princip rada.

6.5 Povezivanje softvera za debagiranje


Softverski debageri povezuje embedded sisteme na razlicite nacine. I pored toga sto su koncepti debagiranja identicni za sve metode povezivanja korisno je da se zna osnovni mehanizam koji debaer koristi za komunikaciju sa mikroprocesorom i memorijom.Oni funkcioniu tako to alju komande embedded sistemu koji izvrsava operacije CPU-ovim registrima i cita memoriju. Dve najvaznije funkcije su itanje CPU-ovih registara i citanje memmorije.Pomocu ove informacije debager moe da odredi stnje u kome se sistem nalazi. Skoro sve debager komande trae citanje memorije; tipicni primeri su prikazivanje promenljivih i prikaz disambliranih softver instrukcija. Druge debager funkcije se odnose na upis u registar ili izdavanje komande za pocetak i zavrsetak izvrsenja programa. Za razliku od debagera, program na PC-u ili radnoj stanici, debager embedded sistema se moze izvrsavati na drugoj maini a ne na embedded procesu. Ovaj koncept se esto naziva remote debugging. Ciljani procesor moda nee da radi ispravno niti da ima tastaturu i monitor.

61

Mikroprocesorski sistemi

ARM7 procesor

6.5.1 JTAG Jedan od standardnih debagera koji se koristi za povezivanje sa CPU-m je JTAG-a. JTAG je poznat kao standard IEEE 1149.1 , nazvan boundary scan, a koristi se za testiranje kola na stampanim plocama.On koristi petozilni kabel preko koga prima serisjke podatke i komande od stane uredjaja koji implementira JTAG standard. Kod mikroprocesora se koristi JTAG protokol koji nije namenjen za testiranje veza na stampanoj ploci,nego za slanje i predaju infrmacija od embedded ssistema. JTAG debager veze omogucavaju spregu izmedju masine koja izvrsava debager program preko konektora na embedded sistem koji implementira zeljene JTAG signale. Posto serijske JTAG sekvence mogu biti jako dugacke,jedan mali blok se koristi za konverziju komande u serijske signale.Da bi se implementirao JTAG debagiranje, mikroprocesor treba da sadri specijano implementiran hardver. 6.5.2 Stab Kod procesore koji nemaju izvedenu hardversku podrsku za debagiranje ,softerski debager mora da komunicira sa embedded sistemom koristeci stub-a. Stub je specijalni program koga korisnik pridodaje embedded softveru za iskljucivu potrebu komuniciranja sa debagerom. Stub softver komunicira sa debagerom uz pomoc komunikacionog kanala kakav je serijski port(RS232) ili Ethernet konekcija. Stub izvrsava dibagerske zahteve kao sto su citanje registara i memorija i predaje rezultate debageru preko komunikacionog kanala. On takoe koristi usluzne rutine kako bi zaustavio rad procesora kakav je slucaj kada korisnik koristi opciju CTRL+Tab. Stab je na neki nacin specijalan kod koji se ne postoji u konacnoj verziji embedded sistema ali je veoma fleksibilno okruzenjeza razvoj softvera.

6.5.3 Direktna konekcija Kada se koristi ISStada nema potrebe bilo za JTAG konekcijom ili stab-om izmeu softver debagera i embedded sistema. Posto je ISS softverski model, debager moe sa lakoom da pristupi svim traenim informacijama izdavanjem funkcijskih poziva ISS-u.Direktan konekcija je najbolja veza izmedju debagera i embedded sistema. Svi zahtevi debarega se mogu trenutno ispuniti bez da se udje uspecijalni rezim rada za debagiranje.Na ovaj nacin se dobija najtacnija i najrealisticnija slika o tome kako embedded sistem radi.

62

Mikroprocesorski sistemi

ARM7 procesor

6.6 Tipovi softvera


Pet razliitih tipova embedded softvera se mogu identikovati.Obim softvera(broj linija) i se povecava po sledecem redosledu: Softver za inicajilizaciju sistema i nivo za apstrakciju hardvera (HAL) hardversko-dijagnostiki test program Operativni sistem za rad u realom vremenu (RTOS) Pokretacki programi RTOS-a Aplikacioni softver

6.6.1 Inicijalizacija sistema i HAL Prvi softverski zadatak se sastoji u kreiranju i testiranju softvera za inicijalizaciju mikroprocesorskog sistema. Ovaj programse odnosi na konfigurisanje radnih reima CPU-a i periferija (ukljucujuci konfiguraciju kesa,programiranje MMUa,konfigurisanje kontrolera prekida,postavljanje tajmera i inicijalizacijaDRAM-a.) Abstrakcija na hardverskom nivou je sledei nivo softvera koji se koristi sa kodom za inicijalizaciju radi ostvarivanja korektne sprege sa visim nivoima softvera sa ciljem da hardver korektno funkcionise nakon inicijalizacije sistema. 6.6.2 Dijagnostiki test program Nakon sto je obavljena inicijalizacija i HAL procedura, sledeca faza u razvoju softvera se sastoji u razvoju detaljnijih programskih celina koje se odnose na rad hardvera..Obicno su ove celine imale formu hardvera testbencha. Dok su testbenchevi neophodni za stimulaciju eksternih interfejsa kakvi su mreni protokoli,softver se u ovom slucaju koristi kao testbench za magistralu CPU-a Poinje se sa memorijskim podsistemom,zatim se testiraju prekidi, a onda se prelazi na testiranje drugih IP blokova kao to su tajmeri, DMA kontrolori, video kontrolori, MPEG dekoderi i drugog specijalnog hardvera. Veina ovih testova nije sastavni deo konacnog proizvoda, ali je veoma vezan kod realizacije korektnog hardverskog dizajna. Kreiranje programa ovog tipa omogucava softverskim inzinjerima da dobro razumeju kako hardver radi i koje su njegove specificnosti.Dijagnostike se mogu takodje koristiti kada se pojavi neki kvar.

63

Mikroprocesorski sistemi

ARM7 procesor

6.6.3 Operativni sistem za rad u realnom vremenu (RTOS) Prva pretpostavka softverskog inenjera je da hardver korektno radi . Ovo je tano ukoliko je dijagnostika procedura korektno prosla.Inicijalno se zatim RTOS puni u hardversku platformu. U toku faze instaliranja softvera moguce je izostaviti instalaciju specificnih pokretackih programa , ali ne i jezgro RTOS-a.

6.6.4 Pokretacki programi i aplikacioni softver Nakon sto je platforma kompletirana, drajverski uredjaji i aplikacioni softver mogu da se testiraju.NA aplikacionom nivou za hardver se podrazumeva da radi korektno, pa se zadatak sastoji u tome sto je programiranje slicno kao i programiranju na PC-u.Ako aplikacija ne radi dobro,sa sigurnoscu se moe rei da problem u softveru , a ne u hardveru. Aplikacije obino zele da ostvare spregu sa realnim mrenim saobraajem,da se sve aktivnosti vide na ekranu, i da se u sto vecoj meri radi sa pokazivaem ili miem. Tokom razvoja aplikacije, greke u hardveru ili softveru su na niem nivou pa je zadatak softverskog inenjera da se fokusira na aplikaciju.

6.7 Proces razvoja softvera


Pisanje embedded softvera je razlicito od pisanja programa za radne stanice ili PC masinu. Programski aspekti koji nisu vani za radnu stanicu odjednom postaju vani prilikom rada sa ogranienim okruzenjem kakva je ona tipicna za embedded sisteme.Na primer, posmatramo ogranicenje memorije.Izgled memorije je vazan,isto se odnosi i na obim memorije, kao i gde ce korektni podaci smestiti u memoriji Ovaj pristup je razlicit od pristupa masini koja radi pod modernim operativnim sistemom sa velikim iznosom virtualne memorije.

6.8 Hardverska razvojna sredstva


Postoje dve osnovne klase alata koji se koriste od strane hardverski inenjera. Postoje oni alati koji se bave implementacijom dizajna i oni koji se bave verifikacijom dizajna. Implementacija je proces opisivanja dizajna i transformisanja opisa dizajna u neophodne formate za izradu ipova ili ploa. Verifikacija je proces u kome se osiguravamo da dizajn radi, da ne nece otkazati, i da ce raditi u skladu sa specifikacijom.U nasem interesu je da sagledamo process verifikacije. Najstandardnija platforma je Verilog i VHDL simulator koji se izvrsavaju na PC-maini ili radnoj stanici.Druge platforme pored simulatora i ubrzanog simulatora su in-circuit emulacije.Pored toga postoje i spocijalni hardverski jezici za verifikaciju koji su projektovani sa ciljem da poboljsaju efikasnost i kvalitete verifikacije. 64

Mikroprocesorski sistemi

ARM7 procesor

6.8.1 Editor Kao i softverski inenjeri,najveci broj hardverskih inenjera upoznaje se sa opisom dizajna i testbench-eva koristeci tekst editor.Kada se govori o hardverskim inenjerima, tehnike editovanja su mnogo jednostavnije od onih koje koriste softverski inenjeri. 6.8.2 Kontrola revizije izvornog koda Od samog poetka je razvoj softvera podrazumevao upravljanje velikim brojem tekstualnih fajlova koje kreiraju mnogi inenjeri, i koji se kompajliraju u jedan ili vie izvrnih programa. Sa pojavom Verilog i VHDL nacina projektovanja hardverski inenjeri sreu se sa istim tipom okruenja i moraju koristiti alate za kontrolu revizije kako bi upravljali projektima. Jedna oblast u kojoj se kontrola revizije moe razlikovati izmeu hardvera i softvera je koliina podataka generisana i smetena u projektima hardverskog dizajna. Kompajlirani softverski projekti sadre mnogo objektnih fajlova i odreen broj izvrnih fajlova. Medju verzije binarnim fajlovima se ne izvode tako esto jer se ak i jako veliki projekat moe obnoviti za par sati. Hardverski projekti se razlikuju tako to im je esto potrebno nekoliko dana za kreiranje odgovarajuih binarnih fajlova i baza podataka da bi se prelo sa HDL izvornog koda u layout ipa ili ploice. Ovaj proces ukljuuje mnoge razliite alate i medju fajlove. To sve dovodi do mnogo vie podataka i nosi veu odgovornost za memorisanjem ovih podataka korienjem alata za kontrolu revizije. Za ove aplikacije je bitno da se pronae alat koji je u mogunosti da upravlja velikom koliinom binarnih podataka na efikasan nacin. 6.8.3 Alati Lint alati obezbedjuju jednostavnu analizu koda radi nalazenja standardnih greaka. Alati to ine tako to iitavaju izvorni kod.Koreni Lint-a datiraju od ranijih dana karakteristicni za koriscenje programsko jezika C, kao sredstvo za nalaenje greaka pre njegovog izvrsenja.Standardna Lint provera ukljucuje proveru neiskorienih deklaracija, nalazenje nekonzistentnih tipova,koriscenje promenjljive predefinicije,kod koji postoji ali se ne izvrsava, ignorisanje povratnih vrednosti, izvrni putevi bez povratka,beskonana petlja i nedosledni case iskazi. Pomenuti koncept analize je proiren na Verilog i VHDL. HDL alati omogucavaju sintaksne provere i provere stila kodiranja za potrebe simulacije i sinteze. Alati takoe mogu detektovati istovremenu pojavu vise ivica impulasa koja dovode do hazarda i analiziraju osobine konacnih automata.. Na ovaj nain moemo detaljno ispitati kod pre kompajliranja i procesa simulacije. Cilj ove vrste alata je postizanje koda veeg kvaliteta i pronalaenje greaka mnogo ranije analiziranjem dizajna. Sve se to odvija pre simulacije.

65

Mikroprocesorski sistemi

ARM7 procesor

6.8.4 Pokrivenost koda Pokrivenost koda je jo jedna tehnika pozajmljena od softverskog ininjerstva. Pokrivenost meri veliinu koda koji se koristi tokom izvoenja testova. Na osnovu rezultata pokrivenosti se mogu razviti dodatni testovi za poveanje pokrivenosti. Indirektno e znaiti da poveanje pokrivenosti znai poveanje kvaliteta proizvoda. Za HDL dizajn postoje tri razliite veliine pokrivenosti koje se mere. To su pokrivenost iskaza, pokrivenost grananja i FSM pokrivenost. Pokrivenost iskaza se drugaije naziva i linijska pokrivenost. Ona meri koliko je iskaza bilo izvreno. Iskaz je najosnovniji tip mere pokrivenosti koji identifikuje neizvrene linije koda. Za te linije ili treba razviti test, ili taj deo koda moe biti uklonjen. Pokrivenost grananja identifikuje uslove koji su bili zadovoljeni u iskazima prilikom grananja. Ti iskazi mogu biti tipa if-then-elsei iI case. Ovaj tip pokrivenosti prua vie detalja od jednostavne pokrivenosti iskaza i moe identifikovati oblasti koje nisu obuhvacene tokom testiranja. FSM pokrivenost identifikuje ponaanje dizajna tako to identifikuje skup iskaza kao konani automat i analizira skup FSM prelaza koji tada nastaju. Tako se obezbeuje da se testira kompletno ponaanje. Pokrivenost koda je dobar pristup za proveru i testiranje HDL koda, ali ne garantuje da je testirani dizajn korektan. ak iako se nekorektan dizajn temeljno testira, to ne moe pomoi na kraju jer pokrivenost daje mere pri implementaciji i nije povezana sa specifikacijom dizajna. 6.8.5 Alati za debug-ovanje Za razliku od nekih prethodnih alata, koje su hardverski inenjeri prihvatili od softverskih inenjera, debug-ovanje hardvera je mnogo drugaije od debug-ovanja softvera. Hardverski inenjeri prvenstveno rade u batch okruzenju. Bilo da se radi na velikim simulatorima uz pomo puno raunara, ili na jedinstvenom modulu i simulaciji na lokalnoj radnoj stanici, debug-ovanje se esto odvija tehnikama za naknadno procesiranje.To znaci da je korak izvrsenja simulacije i hvatanja rezulltata izdvojen iz koraka interpretacije i koraka koji se odnosi na interpretaciju debugging problema. Uobiajen alat za debug-ovanje hardvera je osciloskop. Hardverski inenjeri rade posmatrajui vrednosti signala tokom perioda vremena simulacije.Dananji alati za posmatranje talasnih oblika pamte podatke u kompresovanom obliku zbog maksimalnih performansi i minimalne veliine fajlova. IEEE Verilog standard koristi format za fajlove u koje su smeteni talsani oblici, poznat kao VCD. Ovakav format teksta je dobar za male simulacije sa malim koliinama podataka koje treba upamtiti, ali postaje veliki za velike simulatore. Za takve simulacije moraju biti korieni odgovarajui formati sa nekim stepenom kompresije.

66

Mikroprocesorski sistemi

ARM7 procesor

6.8.6 Programski jezici za verifikaciju Sa poveanjem sloenosti dizajna je postalo teko koristiti programske jezike za simulaciju koji bi adekvatno verifikovali dizajn. Zato su predloeni novi programski jezici i razvijeni samo za potrebe verifikacije. Iako ih sada postoji mnogo, jedan od najpoznatijih jezika je danas poznat kao IEEE 1674 standard. Poboljanje verifikacije HDL dizajna podrazumeva dodatne osobine u odnosu na one koje pruaju dananji najkorieniji programski jezici: Verilog, VHDL ili C. Neki od korisnih aspekata jezika za verifikaciju su: Lakoa ponovnog korienja kodova za viestruke testove Ogranienja za generisanje testova Ugraena funkcionalna podrka Tipovi podataka koji omoguavaju visok nivo funkcionalnosti i dobar interfejs sa HDL dizajnom 6.8.7 Tvrenja Popularnost korienja tvrenja za specifikaciju namene dizajna i osobine dizajna jako brzo raste. Tvrenja su vrlo jak alat za meusobnu proveru dizajna i pretpostavljenog ponaanja. Takoe bitni za verifikaciju i sistemske inenjere jer mogu formalno navesti ponaanje sistema i proveriti da li se sistem ponaa u skladu sa specifikacijom. Tvrenja pruaju zajedniki format viestrukim alatima. Tvrenja olakavajudebug-ovanje i smanjuju vreme simulacije Tvrenja verifikuju interfejse izmeu blokova Tvrenja su dobra veba RTL kodiranja

6.8.8 Definisanje debug-ovanja Ono to mnogi inenjeri nazivaju debug-ovanje je ustvari kombinacija dve zasebne aktivnosti: detekcije i debug-ovanja. Detekcija je proces odreivanja postojanja problema u dizajnu ili testu. Mnogi projekti koriste simulaciju kao osnovni nain za detekciju problema. Nedavno su alati za formalnu verifikaciju poeli da budu korieni za odreivanje problema u dizajnu. Prilikom simulacije postoji mnogo naina za prikazivanje postojanja problema. Dva najea naina su pomou $display iskaza, i poreenje vrednosti u memoriji sa oekivanim rezultatima. Nedostatak $display iskaza moe znaiti i problem sa rezultatom testa. Tvrenja su bolji nain za detekciju greaka. Za poveanje efikasnosti detekcije problema, inenjeri primenjuju vie raunara i simulatora, ili koriste druge naine za poveanje performansi. Ti naini mogu biti ubrzanje simulacije ili emulacija. Kao dodatak jednostavnim nainima sa dodavanjem hardvera i poveanjem performansi, inenjeri mogu razviti dodatne pametnije testove koji e otkriti probleme bre, ili ranije. Primeri podrazumevaju testove usmerene ka razvijanju dizajna koji ciljaju posebnu oblast, ili korienje povratnih informacija od strane koda. 67

Mikroprocesorski sistemi

ARM7 procesor

Kada se problem otkrije on mora biti debug-ovan. Debug-ovanje je proces pronalaenja korena uzroka problema i promene dizajna ili testa kako bi se problem reio. Debug-ovanje je mehaniki proces u poreenju sa detekcijom, jer je potreban inenjer koji e provesti odreeno vreme kako bi pronaao ta je ispravno a ta nije. Odreivanje pravilnog ponaanja zahteva dobro poznavanje dizajna i njegovog rada. Vei broj brih raunara ne mogu pomoi pri procesu debug-ovanja. Alati mogu pomoi prilikom unapreenja procesa tako to olakavaju razumevanje dizajna, i tako to pruaju bolji pregled rezultata simulacije. Osnovni nain debug-ovanja je posmatranje talasnih oblika. Koristei informacije detekcije, inenjeri moraju pregledati logike signale u razliitim vremenskim trenucima tokom procesa simulacije. Zatim moraju pronai ta ne radi ispravno. Ovaj proces tipino zahteva puno radnih sati za odreivanje pravilnog rada dizajna. Gomilanje nepotrebnih talasnih oblika moe takoe drastino smanjiti performanse simulacije i kao rezultat dati velike fajlove. Inenjeri zato moraju izdvojiti vreme pre simulacije za odreivanje perioda u kojima e biti generisani fajlovi koji pamte talasne oblike. Takoe moraju biti odreeni i delovi dizajna za koje e talasni oblici biti upameni. U verifikaciji ugraenih sistema postoje dve bitne oblasti koje moraju biti dobro shvaene, i koje e biti razmotrene u naredom delu teksta: memorijski modeli i mikroprocesorski modeli. 6.8.9 Memorijski modeli Memorijski modeli za diskretne memorijske komponente kao i memorije koje su ugraene u ipove se koriste u logikim simulacijama. Softver mora biti preveden iz binarnih formata (kao to je ELF) u neki koji e biti pogodan za uitavanje u memorijske modele. Postoji mnogo razliitih vrsta memorijskih modela koji se kreu od onih sa Verilog-a i VHDL-a, pa sve do C jezika. Oni koriste C interfejs logikog simulatora za komunikaciju sa HDL-om. Primer jednog jednostavnog memorijskog modela :
// Simple read-only memory module ROM(A, OE, D); input [13:0] A; // Address input OE; // Output enable output [7:0] D; // Data output reg [7:0] D; reg [7:0] Mem [0:(16 * 1024)]; // memory array // Read from memory always @(OE or A) begin if (OE) D = Mem[A]; else D = 8'bz;

end endmodule

68

Mikroprocesorski sistemi

ARM7 procesor

IEEE VCD format koji se koristi za smetanje podataka talasnih oblika upravlja sadrajem memorija. Za bolje razumevanje aktivnosti memorije mora biti izvreno posebno manipulisanje. Jedna alternativa je korienje odgovarajueg formata za fajlove u koje se smeta talasni oblik. Taj format mora biti u stanju da prima i smeta istoriju stanja memorije. Veina hardverskih alata za debug-ovanje koji su u sastavu logikih simulatora, kao i oni nezavisni alati za debug-ovanje omoguavaju ovakve pogodnosti. Alati pruaju GUI funkcije za prikaz sadraja memorije onako kako je snimljen u fajlovima koji sadre talasne oblike. Druga alternativa je korienje memorijskih modela koji su zapisani na C jeziku i koji poseduju API za itanje i zapisivanje sadraja memorije. Ovo omoguava da grafiki alati pregledaju istoriju memorije interaktivno tokom simulacije, kao i nakon simulacije. Takoe se omoguava izmena memorije tokom simulacije korienjem GUI. 6.8.10 Mikroprocesorski modeli Jo jedan alat koji koriste hardverski inenjeri je mikroprocesorski model. Dva osnovna modela koja se koriste za hardverski dizajn su model funkcionalne magistrale BFM i potpuni funkcionalni model FFM. FFM model logike simulacije je neophodan za System-on-chip dizajne. Nemogue je (ili bar rizino i nepraktino) napraviti ASIC koji e sadrati mikroprocesor bez potpune simulacije ipa. Za korienje FFM modela je neophodan odgovarajui softver. Softver mora biti kompajliran na ciljnom sistemu i uitan u memoriju logikog simulatora. Procesor e tada poeti sa pribavljanjem i izvravanjem instrukcija i tako verifikovati dizajn sistema. FFM modeli dolaze sa najrazliitijim formatima. Najbri se piu u C programskom jeziku i koriste jednostavne konstrukcije za komunikaciju sa logikim simulatorom. Nekada se moe desiti da se opisi na gejtovskom ili RTL nivou mikroprocesora koriste kao FFM modeli. To se moe koristiti kao stvarna baza podataka dizajna koja e biti iskoriena za kasniju proizvodnju ureaja. U oblasti visokih performansi sistema-na-ipu, FFM model nije obino dostupan za mikroprocesore dobrih performansi, poput PowerPC ili MIPS procesora. Da bi zadovoljili ovakve potrebe, hardverski inenjeri su se obratili BFM i hardverskom modelu za verifikaciju. BFM model je manje sloen od FFM modela. On samo implementira deo interfejsa magistrale jednog mikroprocesora. Delatnosti na magistrali, poput itanja i zapisivanja memorije, pribavljanja instrukcija i prekida se simuliraju na nivou zadataka (task-ova). Testbench se koristi za generisanje sekvence moguih akcija koje procesor moe izvesti. BFM model kojim upravlja testbench moe ali ne mora oslikati sekvencu akcija koja nastaje kada se softver ugraenog sistema pusti u rad na ciljnom sistemu, ali je mnogo laki za rad hardverskim inenjerima. BFM modeli su obino zapisani na C jeziku korienjem C interfejsa logikog simulatora, ili u Verilog-u ili VHDL-u. Skori napredak u protokolima magistrala mikroprocesora ine BFM teim za zapisivanje.

69

Mikroprocesorski sistemi

ARM7 procesor

Jo jedna tehnika koja se koristi za simulaciju je hardverski model. Koristi se tehnologija koja postoji preko 15 godina. Hardverski model koristi stvarni ureaj koji je smeten u postolje koje je povezano sa logikim simulatorom. Ureaj tada slui kao sopstveni model. Hardverski modeli mogu biti korieni za skoro svaki digitalni ureaj za koji je potreban simulacioni model. Ureaji poput mikroprocesora, digitalnih signal-procesora, ipova za interfejs magistrala, mreni procesori i sistemski kontroleri su samo neki od uobiajenih. Hardverski modeli se obino razvijaju za one ureaje za koje bi softverski model bio previe sloen za pisanje, i tamo gde je neophodna potpuna funkcionalnost.

6.8.11 Proces dizajniranja hardvera Proces dizajniranja hardvera se sastoji od odluivanja o arhitekturi i ponaanju dizajna, koji se nastavlja implementacijom pomou Verilog-a ili VHDL-a na RTL nivou. Sledei korak je voenje RTL koda kroz skup koraka za proizvodnju ipova i ploica. Skup koraka koji se mora prei od RTL-a do ipova je jako dobro definisan. Aktivnosti na nivou arhitekture su mnogo manje definisane i mnogo se vie meusobno razlikuju . Sa stanovita verifikacije, proces mora prvo verifikovati svaki RTL blok onako kako se proizvede. Zatim se blokovi akumuliraju u podsisteme i sisteme koji se takoe verifikuju celim putem, sve do take kada se itav dizajn verifikuje. Kljuno pitanje u SoC dizajnu je kada potroiti vreme na hardversku i softversku integraciju. Neki projekti zagovaraju da se ovakva integracija obavi jako rano, u fazi arhitekture, kako bi se osigurali da nee biti pitanja o performansama kasnije. U ovoj ranoj fazi se moe koristiti i apstraktni model dizajna kako bi se omoguio nain rada softvera sa visokim perforamansama. Neki drugi projekti zagovaraju odlaganje integracije sve dok ne bude spreman RTL kod dizajna i dok svi blokovi ne budu verifikovani zajedno, kao i da svi glavni podsistemi rade. 6.8.12 Pregled mikrkoprocesora Kao to smo videli ranije, softverski i hardverski inenjeri imaju razliite poglede na mikroprocesor. Poeljno je razloiti funkcije mikroprocesora na dva dela: interne operacije i eksterni interfejs. Interne funkcije sadre: Skup instrukcija. Ovo podrazumeva format instrukcija koje procesor moe izvravati. Instrukcije mogu biti kodirane na mnogo naina. Za RISC procesore su instrukcije fiksne duine od 32 ili 16 bitova. Registri. Kombinacije registara opte namene, status registara, i programsog brojaa.

70

Mikroprocesorski sistemi

ARM7 procesor

Ke. Posebna vrsta memorije u koju se smetaju najee korieni podaci. Hardver se brine o tome koje podatke treba smestiti u ke memoriju, kao i o stanju kea. Sistem vodova (pipeline). Razliite etape procesiranja instrukcija kako bi se omoguilo poveanje performansi. Ugraeni RISC procesori koriste tri ili pet stepeni vodova. Jedinica za upravljanje memorijom (MMU). MMU prua prevoenje adresa neophodno za implementiranje virtualne memorije. Koristi je operativni sistem da bi pruio zatitu sistema od strane nekih programa ili neizvrenih zadataka.

Izvan mikroprocesora postoje instrulcije itanja i zapisivanja, kao i memorijska mapa koja definie kojoj memoriji ili registru e se pristupiti. Eksterni interfejs mikroprocesora je glavna briga hardverskih inenjera. Interfejs se sadri od skupa signala koji prate odreeni definisani protokol.

Ovakav eksterni interfejs sadri: Interfejs memorijske magistrale. Pravila za korienje magistrale, itanje i zapisivanje podataka sa magistrale. Na ovaj nain procesor dobija i alje signale. Interfejs magistrala procesora. Nekada se koristi posebni interfejs za komunikaciju sa hardverskim funkcijama koje zahtevaju posebnu pa`nju po pitanju performansi. Prekidi. Skup signala koji se koristi da bi saoptio mikroprocesoru da je potreban servis. Tipino je postojanje viestrukih izvora prekida koji imaju razliite nivoe prioriteta. 6.8.13 Interakcija hardvera i softvera Da bi se izvrila priprema za tehnike verifikacije hardvera i softvera potrebno je razmotriti metode debug-ovanja koje koriste inenjeri. Karakteristike debug-ovanja softvera Potpuno interaktivno Moe se izvoditi u laboratoriji sa ploicom koja radi na frekvenciji od min 25 MHz. Koristi se printif() iskaz za praenje izvrenja promenljivih Softver za izvravanje sa debug-erom na izvornom nivou Korienje taaka prekida za prekid izvrenja i proveru memorije (promenljivih i struktura podataka), steka i sadraja registara Iterativno podizanje sistema i podeavanje taaka prekida sve dok se ne pronau greke. 71

Mikroprocesorski sistemi

ARM7 procesor

Karakteristike debug-ovanja hardvera Izvravanje logike simulacije na brzinama 10100 Hz Iskazi za tampanje poruka (ili nedostatak ovakvih poruka) za otkrivanje greaka Korienje memorisanih talasnih oblika za pronalaenje vrednosti signala i greaka

Lista karakteristika prikazuje izazov verifikacije dizajna i sa strane softvera i strane hardvera. Primarna interakcija hardvera i softvera nastaje na granicama magistrala mikroprocesora i u sadrajima programabilnih registara i memorije. Memorija je verovatno najvanije mesto susretanja hardvera i softvera, a ipak je pogreno shvaeno. Na primer, hardverski inenjeri su navikli da uitavaju podatke u memoriju u simulacioni model na startu simulacije korienjem odreenih komandi. U trenutku kada simulacija pone i reset se obavi, podaci u memoriji su spremni za itanje ili zapisivanje. Softverski inenjeri imaju drugaiji pristup. Najuobiajeniji nain pisanja test programa za ugraeni sistem je njegovo kompajliranje u fajl izvrnog formata, poput ELF. Zatim se moe otii u laboratoriju, ukljuiti ploica sa mikroprocesorom i povezati softverski debug-er preko JTAG interfejsa. JTAG kabl povezuje ploicu i paralelni port PC-ja. Debug-er se koristi za download ELF fajla u memoriju na ploici, i zatim se moe poeti sa radom programa. JTAG veza koristi mikroprocesor za izvravanje dugakih nizova upisivanja u memoriju preko magistrale procesora, kako bi upisala podatke u memoriju, umesto da uita podatke pre poetka rada kao u sluaju simulacije.

72

Mikroprocesorski sistemi

ARM7 procesor

7. Opis Starter Kit-a


7.1. Kratak uvod
Sve vea proizvodnja novog hardvera donosi veliki broj neispitanih komponenata koje su lako dostupne svim korisnicima. Njihove karakteristike jesu definisane od strane proizvoaa, ali ih je poeljno testirati za neke odreene radne uslove. Prva aktivnost koja se odnosi na testiranje predstavlja raunar i odgovarajui operativni sistem. Da bi se ovaj zadatak obavio, moraju se posedovati odgovarajuci softverski alati za kreiranje dizajna raunara (eme i izgleda layout-a kola), kao i softverski alati za pisanje kodova i smetanje u projektovani ureaj. Testiranje karakteristika gradivnih blokova sistema je danas jednostavno mogue korienjem development kit-ova. To su sistemi za razvoj projektovani po odreenom standardu. Oni su u stanju da ispitaju realne karakteristike odreenih komponenti, kao na primer mikrokontrolera. Dobar development kit sadri funkcionalni primer ureaja koji elimo projektovati i na kome moemo testirati kreirani kod, kao i odgovarajue integrisano razvojno okruenje (Integrated Development Environment - IDE). U sastavu ovakvog IDE okruenja se obicno nalazi editor, debugger, simulator, asembler i kompajler (u najveem broju sluajeva C kompajler). Development kit ima ugradjene gradivne blokove (periferije) kojima se moe pratiti uitavanje i izvravanje neke aplikacije. Ti gradivni blokovi su memorija, portovi za komunikaciju, delovi za hardversku konfiguraciju... Moraju postojati i kablovi i alati za povezivanje i download koda u procesor. Sastavni deo dokumentacije je i elektrina ema razvojnog okruzenja. Mogunosti development kit-ova obicno su ograniene, ali su zadovoljavajuce za poetna testiranja veeg broja gradivnih blokova. Cena development kit-ova se kree tipino do 300 $, mada je za neke procesore daleko vea. Ulaganje u kupovinu development kit-ova je zaista isplativo zbog koliine vremena i novca koji se na ovaj nain tedi u fazi razvoja sistema. Slian sistem za ispitivanje i razvoj mikroracunarskih sistema se naziva starter kit. Ovaj uredjaj takoe poseduje skup komponenata koji je neophodan za ispitivanje rada mikrokontrolera i izvravanje nekih aplikacija na mikrokontroleru, ali je velika razlika to je specifino realizovan za testiranje jednog tipa kola. Proizvoai starter kit-ova jasno naglaavaju za koji tip mikrokontrolera je namenjen njihov proizvod. To znaci da ne postoji mogunost ispitivanja nekih drugih tipova mikrokontrolera. Univerzalnost koju smo videli kod development kit-ova u ovakvom sluaju ne postoji. U nastavku teksta bice objasnjena struktura i mogucnosti jednog starter kit-a, proizvod firme Hitex koji je namenjen za testiranje rada sistema zasnovanih na mikrokontroleru tipa LPC2138.

73

Mikroprocesorski sistemi

ARM7 procesor

8. ARM starter kit


Na slici 1 je prikazan izgled starter kit-a, koji je namenjen za testiranje sistema zasnovanih na Phillips LPC2000 cipu iz familije ARM procesora. Starter kit slui za razvoj ARM koda i debug-ovanje programa koje se obavlja uz pomoc posebnog hardverskog modula nazvanog Tantino. Ovaj starter kit poseduje sve sastavne delove koji su potrebni za izvravanje odreenih aplikacija. Najvaniji delovi su: o JTAG debugger za ARM7-9 o razvojna ploa o Quick start vodi za rad o CD sa instalacijom programa firme Hitex za ARM o kablovi za napajanje i povezivanje JTAG-a

Slika 1: Izgled starter kit-a za ARM

Kljuni deo je svakako JTAG (Joint Test Action Group). To je unverzalni debugger razvijen za 8- 16- i 32-bitne mikrokontrolere. Procesori tipa ARM7-9, locirani na ploi za razvoj i testiranje, standardno se povezuju preko 20-pinskog JTAG konektora. Komunikacija JTAG-a sa PC-mainom (Personal Computer) se ostvaruje preko komunikacione veze USB 2.0. Download-ovanje programa se vri brzinom od 100 kB/s. JTAG debugger i HiTop korisniki program komuniciraju preko posebnog interfejs programa nazvanog DAS server lociranog u JTAG Tantino interfejsu. Pomou JTAG hardvera je, pored debug-ovanja programa, mogue obaviti i programiranje fle memorije nekog mikrokontrolera.

74

Mikroprocesorski sistemi

ARM7 procesor

Povezivanje razvojnog sistema sa PC-mainom se ostvaruje kao sto je prikazano na slici 2:

Slika 2: Nain povezivanja razvojnog sistema Kao to se vidi sa slike 2, povezivanje se ostvaruje pomou: 1. USB kabla: koristi se za povezivanje JTAG debugger-a sa PC-mainom 2. 20-pinskog kabla koji povezuje JTAG konektor lociran na razvojnoj ploi sa Tantino interfejsom 3. USB porta lociranog na razvojnoj ploici MCB2130 sa PC mainom preko USB kabla. Preko ove veze razvojna ploica dobija napajanje. Ostali tehniki detalji koji se odnose na razvojnu plocu MCB2130 su prikazani u Tabeli 1: PARAMETAR Napon napajanja Struja napajanja Frekvencija kristala CPU Periferali OPIS 5 V (preko USB magistrale) tipino 65 mA, maksimalno 120 mA 12 MHz (max 60 MHz) Phillips LPC21xx 2 x RS232 interfejs (COM0 i COM1) 1 x JTAG interfejs 1 x analogni izlaz (povezan na zvunik standardno) 1 x analogni ulaz (povezan na potenciometar standardno) 1 x ETM interfejs (opciono)

Tabela 1: Tehnike karakteristike razvojne ploice MCB2130

75

Mikroprocesorski sistemi

ARM7 procesor

8.1 Opti opis


Starter kit koji je analiziran u ovom radu je zasnovan na mikrokontrolerima LPC2131/2132/2138. Ovi 32/16-bitni mikrokontroleri su deo familije ARM7 procesora. Kljune karakteristike starter kit-a su sledee: 1. Moguce je obavljati emulaciju u realnom vremenu. 2. Sistem ima mogunost praenja stanja signala na paralelnim ulazima. 3. U zavisnosti od ugradjenog tipa mikrokontrolera, brza flash memorija moze biti kapaciteta 32, 64 ili 512 kB. 4. Memorijski bafer za razmenu podataka sa drugim uredjajima je obima 128 bitova. 5. Procesor je u stanju da izvrsava kako 32-bitne kodove, tako i 16-bitne. 6. Kod aplikacija koje imaju kritian obim koda koristi se alternativni 16bitni Thumb nain rada procesora. Kod ovakvih reenja se obim koda smanjuje za vise od 30%, a gubici u performansama su minimalni. Na slici 3 je izgled IC pakovanja mikrokontrolera. Prikazano pakovanje se odnosi na ipove iz serije LPC2134 / 2136 / 2138.

Slika 3: IC pakovanje mikrokontrolera 76

Mikroprocesorski sistemi

ARM7 procesor

U Tabeli 2 je prikazan detaljan opis pinova ovog mikrokontrolera:

Tabela 2: Opis pinova mikrokontrolera

77

Mikroprocesorski sistemi

ARM7 procesor

Tabela 2: Opis pinova mikrokontrolera

78

Mikroprocesorski sistemi

ARM7 procesor

Tabela 2: Opis pinova mikrokontrolera

79

Mikroprocesorski sistemi

ARM7 procesor

Tabela 2: Opis pinova mikrokontrolera

Na ulaze kola, za koje vaze napomene od [1] do [6], mogue je dovesti napone max amplitude 5V. Ovi pinovi su definisani kao digitalni U/I pinovi. Pinovi markirani simbolom [7] koriste se kao digitalni ulazi, a pinovi markirani simbolom [8] su analogni ulazi / izlazi.

80

Mikroprocesorski sistemi

ARM7 procesor

Slika 4 prikazuje fiziki izgled ploice MCB 2130 u tampanoj formi, i raspored osnovnih gradivnih blokova. Za komunikaciju se koriste: komunikacioni portovi COM1 i COM2 i JTAG konektor. Za indikaciju se koriste LED diode, za reset sistema taster RESET. Prihvatanje zahteva za prekid se ostvaruje preko tastera INT, a za napajanje se koristi USB konektor.

Slika 4: Fiziki izgled razvojne ploice Ostali sastavni delovi razvojne ploice su: a) kristalni oscillator; b) CPU LPC2138; c) pobudni drajverski stepen za LED diode; d) potenciometar kojim se kontrolie rad ugraenog zvunika (slika 4).

Blok-ema sistema koja se odnosi na razvojnu ploicu je prikazana na slici 5. Vie detalja se moe nai u dodatku A.

81

Mikroprocesorski sistemi

ARM7 procesor

Slika 5: Blok ema sistema

CPU Integrisano kolo LPC2138 (slika 3) je proizvod firme Phillips . Ovaj mikrokontroler poseduje 64-pina. Baziran je na procesoru ARM7. Kao sto se vidi sa slike 6, LPC2138 poseduje dva dvosmerna U / I porta. Port P0 je 32-bitni a P1 16bitni. Dodatno postoje dva pina za prikljuenje oscilatora (12 MHz), jedan za reset, jedan za dovod frekvencije od 32.768 MHz, i dvanaest za napajanje (slika 6). CPU upravlja radom svih komponenata ugradjenih na razvojnoj plocici sa slike 4. Signali koje generie CPU se direktno vode na prikazane pinove.

Napajanje (12 pinova) P0 (32 pina)

CPU

LPC 2138
P1 (16 pinova)

Reset pin

Oscilator (2 pina)

RTC pin

Slika 6: Blok ema CPU

82

Mikroprocesorski sistemi

ARM7 procesor

Kratkospajai njihovo postavljanje definie konfiguraciju razvojne ploice. Ukupno postoje dvanaest (oznaeni sa J1-J13) i imaju sledee funkcije: o J1 ISP (In System Programming): Dozvola rada programiranjesistema. Kada se J1 postavi, mogue je generisati signal na P1.14 (EINT1) preko RTS linije porta COM0. Kada je RTS aktivan na P0.14 se dovodi nizak nivo signala, to se koristi za ulazak u ISP nain rada (slika 7).

Slika 7: Poloaj kratkospajaa J1, J7 i J10 o J2 AV: Analogni napon za AIN0. Kratkospaja J2 povezuje potenciometar POT1 na analogni ulaz procesora AVIN (slika 8). Potenciometar upravlja radom zvunika koji se nalazi na razvojnoj ploici.

Slika 8: Poloaj kratkospajaa J2 83

Mikroprocesorski sistemi

ARM7 procesor

o J3 3.3V: Napon napajanja za CPU. Ovim kratkospajaem se povezuje napajanje od 3.3V na CPU (slika 9).

Slika 9: Poloaj kratkospajaa J3, J4, J5 i J11 o J4 VBAT: Napon napajanja baterije za CPU. Povezuje napon napajanja baterije VBAT od 3.3V na CPU (slika 9). o J5 V3A: Analogni referentni napon za CPU. Povezuje napajanje od 3.3V na referentni analogni ulaz procesora (slika 9). o J6 LED: Omoguava LED drajver. Kada je kratkospaja J6 postavljen, LED drajver (kolo IC6) upravlja radom dioda povezanih na pinove Port1.16 Port1.23 (slika 10).

Slika 10: Kratkospaja J6 84

Mikroprocesorski sistemi

ARM7 procesor

o J7 INT1: Omoguen taster INT1. Kada je J7 postavljen, taster INT1 se povezuje na U/I pin procesora P0.14 (EINT1 ulaz). Signal prekida se generie nakon pritiskanja tastera. Signal prekida je niskog logikog nivoa (slika 7). o J8 ETM: Omoguen ugraeni modul za praenje. Kada je J8 postavljen, omoguen je ETM (Embedded Trace Module) - modul praenja signala na paralelnim ulazima. U ovom sluaju se LED diode na pinovima Port1.16 Port1.23 ne mogu koristiti jer se ovi pinovi koriste i za ETM signale (slika 11).

Slika 11: Kratkospaja J8 o J9 JTAG: Omoguen JTAG interfejs. Pomou ovog kratkospajaa se povezuje hardverska komponenta JTAG, pomou koje se moe izvoditi debug-ovanje i ISP programiranje flash memorije (In System Programming) (slika 12).

Slika 12: Kratkospaja J9 85

Mikroprocesorski sistemi

ARM7 procesor

o J10 RST: Omoguen reset putem COM0 porta. Kada je J10 postavljen, mogue je generisati Reset signal procesora preko DTR (Data Terminal Ready) signala na portu COM0. Reset se generie kada je DTR signal aktivan (slika 7). o J11 VREF: Referentni napon A/D konvertora. Povezuje 3.3 V napona napajanja VREF sa CPU (slika 9). o J13 AOUT: D/A izlaz za zvunik. Pri postavljenom kratkospajau J13, AOUT analogni izlaz procesora je povezan na NF pojaava (slika 13).

Slika 13: Poloaj kratkospajaa J13

Napajanje (USB plug) - izvodi se preko USB kabla povezanog na PC-mainu. MCB2130 razvojna ploica se napaja naponom u rasponu od 5 do 9 V, ali regulator napajanja IC3 (kolo LD1117S33) smanjuje taj napon i generie pomenuta 3.3 V jednosmernog napona. Blok dijagram ovog kola je dat na slici 14:

Slika 14: Regulator napajanja, kolo LD1117S33 Delovi kola oznaeni brojevima 1 - 4 predstavljaju: 1. naponski generator 2. strujni generator 3. termika kompenzacija 4. termika zatita 86

Mikroprocesorski sistemi

ARM7 procesor

Tabela 3: Elektrine karakteristike kola regulatora napajanja

JTAG interfejs konektor predstavlja deo razvojnog sistema koji slui za komunikaciju sa PC-mainom. Na JTAG se preko 20-pinskog konektora povezuje Tantino ureaj koji slui za debug-ovanje programa i programiranje flash memorije na ipu. Pomou JTAG-a se mogu programirati i ureaji koji se ne nalaze na ipu. Na slici 12 je prikazan izgled JTAG konektora. Napomene koje se javljaju u Tabeli 4 imaju sledee znaenje: *) prefiks n oznaava nizak nivo signala na odreenom pinu. **) smer I oznaava ulaz u mikrokontroler, to znai izlaz iz JTAG-a; smer O obeleava izlaz iz mikrokontrolera i ulaz za JTAG.

87

Mikroprocesorski sistemi

ARM7 procesor

Tabela 4: Signali na pinovima JTAG konektora Svi signali ulaza i izlaza JTAG-a su kompatibilni za razliite napone. U/I naponi koje koristi JTAG hardver su definisani naponom koji se javlja na konektoru VTref. Nivo izlaznog signala iz JTAG-a nee prei 3.6V. Preporuuje se da se u svaku izlaznu liniju mikrokontrolera ubaci redni otpornik od 100 oma.

LM386 NF pojaava. Na razvojnoj ploici MCB2130 se nalazi zvunik koji je povezan na analogni izlaz D/A konvertora. Analogni izlazni signal AOUT se pojaava pomou LM386 NF pojaavaa snage, zasnovanog na operacionom pojaavau. Pojaava je u detaljnoj emi u dodatku A predstavljen kao kolo IC4. Gejn NF pojaavaa je standardno podeen na vrednost 20, ali se dodavanjem spoljanjih otpornika izmeu pinova 1 i 8 moe poveati u opsegu do ak 200. Blok ema pojaavaa LM386 je prikazana na slici 15, a karakteristike u Tabeli 5.

88

Mikroprocesorski sistemi

ARM7 procesor

Slika 15: Blok ema kola LM386 pojaavaa analognog izlaznog signala

Tabela 5: Tehnike karakteristike pojaavaa LM386

Pobuda LED dioda. POWER dioda indicira da li je napajanje povezano na razvojnu ploicu. Postoje i diode koje su povezane na osam Port1 pinova P1.16 P1.23. One se mogu se koristiti za indikaciju statusa programa prilikom testiranja aplikacija. Na ploici se nalazi i kolo za upravljanje radom LED dioda, tzv. LED drajver, koji je na detaljnoj emi predstavljen kolom IC6 (74LVC244). LED drajver predstavlja pobudni stepen za diode. Njegova blok ema e biti predstavljena na slici 16. U Tabeli 6 su navedeni opisi pinova za kolo 74LVC244. Visok nivo na pinovima dozvole OE postavlja izlaze ovog kola u stanje visoke impedanse, jer je njihov aktivni nivo nizak.

89

Mikroprocesorski sistemi

ARM7 procesor

Slika 16: Pobudni stepen za diode

Tabela 6: Opis pinova za kolo 74LVC244

Na slici 17 je prikazana logika ema ulaznih i izlaznih pinova pobudnog stepena dioda.

Slika 17: Logika ema kola 74LVC244 Tehnike karakteristike kola 74LVC244 koje slui za pobudu dioda su prikazane u Tabeli 7:

Tabela 7: Tehnike karakteristike kola 74LVC244 90

Mikroprocesorski sistemi

ARM7 procesor

Slika 18 prikazuje nain povezivanja kola 74LVC244 i CPU.

Slika 18: Povezivanje kola za pobudu LED dioda

Tasteri. Na ploici MCB2130 postoje dva tastera: o RESET taster koji je povezan na reset ulaz mikrokontrolera, o INT1 taster koji je povezan na NMI (Non Masked Interrupt) signal za prekid rada mikrokontrolera.

Kolo za prilagoenje MAX563. Na ovoj ploici postoje dva serijska porta: COM0 i COM1. MCB2130 podrava serijski UART (Universal Asynchronous Receiver Transmitter). Procesor koristi MAX232 kolo za konverziju logikih signala na naponske nivoe RS232 serijskog prikljuka. UART se moe koristiti za download nekih alata, poput alata za programiranje flash memorije. Preko COM0 porta je mogue programirati aplikacije, dok je preko COM1 porta mogue praenje izvrenja aplikacija. Praenje se izvodi putem serijskog interfejsa raunara. Oba serijska porta su povezana na mikrokontroler preko kola koje na detaljnoj emi nosi oznaku IC2. To je MAX563 ip koji poseduje dva ulazna i dva izlazna kontakta. Slui za prilagoenje napona i ima izgled kao na slici 19:

91

Mikroprocesorski sistemi

ARM7 procesor

Slika 19: Izgled kola MAX563 Tabela 8 prikazuje opis pinova za kolo MAX563:

Tabela 8: Opis pinova kola MAX563

92

Mikroprocesorski sistemi

ARM7 procesor

Serijski portovi (COM) su konfigurisani kao standardni 3-ini interfejsi. DB9 konektor je tako povezan da alje handshake signale nazad u PC-mainu. Na slici 20 su prikazani detalji serijskog porta:

Slika 20: Izgled standardnog DB9 konektora Pinovi koji postoje na ovakvom serijskom portu imaju sledea znaenja: o o o o CTS (Clear To Send) slobodan za prenos RTS (Request To Send) zahtev za prenos GND (Ground) signal mase DSR i DCD (Data Set Ready; Data Carrier Detected) su povezani u petlju (skup podataka spreman; otkriven nosa podataka) o DTR (Data Terminal Ready) - spreman za prijem podataka o RxD i TxD (Receive Data; Transmit Data) povezani na MAX 232 ip (slue za prijem i prenos podataka)

93

Mikroprocesorski sistemi

ARM7 procesor

9. Povezivanje sistema i kreiranje aplikacije


U sluaju da HiTop korisniki program startujemo po prvi put, neophodno je proveriti povezanost sistema. To se izvodi odabirom komande System iz menija, a zatim i odgovarajue naredbe Connect. Po izvrenju ovih komandi na starter kit je povezan sa PC mainom.

Kreiranje nove aplikacije. Odabirom komande Project > New poinjemo sa definisanjem novog projekta. Prvi korak je da projektu dodelimo ime i lokaciju na kojoj e biti smeten.

Naredni korak podrazumeva odabir alata koji e biti korien za odreenu aplikaciju. Za ovaj primer biramo odgovarajui alat u vidu Tantino for ARM 7-9.

Iz niza mikrokontrolera treba zatim odabrati odgovarajueg proizvoaa i tip mikrokontrolera, kao i njegovu konfiguraciju. Za na sluaj su to ARM, LPC2138, i red bajtova Little Endian. 94

Mikroprocesorski sistemi

ARM7 procesor

Poto se komunikacija sa PC-mainom vri preko odgovarajueg USB porta, u narednom koraku biramo USB nain komunikacije i unosimo etvorocifreni serijski broj Tantino ureaja, koji se nalazi na zadnjoj strani.

U sluaju da aktuelna verzija HiTop korisnikog programa nije registrovana, pojavie se prozor koji nas obavetava o tome ali je mogue nastaviti rad odabirom opcije I want to continue evaluation.

95

Mikroprocesorski sistemi

ARM7 procesor

Startup script nije potrebno unositi ve se moe prei na sledei korak. Prilikom podeavanja opcija vezanih za novi projekat, prvo treba odabrati kompajler kojim e se izvravati program. Za na sluaj je to GNU C compiler for ARM.

Kada smo obavili sve prethodne zadatke, u dijalogu Tool settings vrimo podeavanja kompajlera, asemblera i linkera potrebnih za na primer. Startup script to automatski obavlja sam, tako da ova podeavanja moemo samo proveriti.

Zatim se u polje Applications unosi primer koji elimo da uitamo odabirom ve postojeeg fajla (koristi se opcija Insert).

96

Mikroprocesorski sistemi

ARM7 procesor

to se tie drugih podeavanja, vano je pomenuti sledee: clock opcija treba da ima podeen Intel-Hex format, kao to je prikazano u narednom koraku:

97

Mikroprocesorski sistemi

ARM7 procesor

Zakljuak
U ovom radu smo razmotrili sve osobine ARM7 procesora. Na poetku smo dali pregled ahritekture ARM procesora, kao i njegovo odgovarajue ahritekturalno naslee. Naveli smo tipove organizacije i imlementacije ARM procesora i prikazali njegovu pipeline strukturu. Zatim smo naveli pregled dosadanjih ARM jezgara procesora i objasnili neke njihove osobine. Jasno je da nijedan procesor nije posebno primenljiv bez odgovarajue podrke u vidu hardvera i softvera. Zato smo u drugom delu panju posvetili skupu instrukcija ARM procesora. Takoe smo naveli tipove podataka kojima ARM moe da manipulie, kao i tipove instrukcija koje se mogu izvravati na njemu. Instrukcije su podeljene u odgovarajue grupe i data su njihova blia objanjenja kao i primeri. Naredni deo prikazuje proces kreiranja hardvera i softvera. Da bi se razumela hardversko/softverska ko-verifikacija neophodno je razumeti princip rada alata, kao i proces koji se koristi za razvoj hardvera i softvera. Zbog toga su navedene potrebne verifikacione platforme, tipovi softvera i softverskih razvojnih alata, kao i hardverska razvojna sredstva. Shvatanje interakcije softvera i hardvera omoguilo je prelazak na zavrnu fazu rada, to jest prelazak na praktinu primenu iskustava steenih do tada. Poslednji deo ovog rada odnosi se na upoznavanje razliitih development kitova, ali posebno starter kit-a kompanije Hitex. Zadatak je bio da se daju blia objanjenja svih sastavnih delova jednog tipinog starter kit-a, i da se objasni funkcija pojedinih sastavnih delova razvojnog sistema. Naveli smo detaljne opise kola koja se nalaze na razvojnoj ploici i njihovu namenu. Opisani su i tipovi signala koji se mogu nai na pinovima ovih kola. Rad zavravamo objanjenjem naina povezivanja razvojne ploice na PCmainu, objanjenjem odgovarajuih podeavanja, kao i navoenjem naina za kreiranje nove aplikacije.

98

Mikroprocesorski sistemi

ARM7 procesor

Dodatak A
Prikaz detaljne eme mikrokontrolera LPC 2138

99

Mikroprocesorski sistemi

ARM7 procesor

100

Mikroprocesorski sistemi

ARM7 procesor

101

Mikroprocesorski sistemi

ARM7 procesor

Literatura:
Hitex Development Tools: The Insider's Guide to the Philips ARM7-based Microcontrolers, Trevor Martin Philips Semiconductors: LPC2131 / LPC 2132 / 2138 Preliminary release, November 2004. User Manual,

Jason R. Andrews: Co-Verification of Hardware and Software for ARM SoC design, 2005. ARM Limited: ARM Architecture Reference Manual, 1996. 2000. Philips Electronics: Single-chip 16/32-bit microcontrollers; o 32/64/128/256/512 kB ISP/IAP Flash with 10-bit ADC and DAC Preliminary Data Sheet, 2005. Steve Furber: ARM System-on-chip Architecture, Second Edition, New York, 2001. Hitex Developmnet Tools: Hitex Starter Kit for ARM with MCB2130 o Evaluation Board, 2005. John Catsoulis: Designing Embedded Hardware, O'Reilly Media, 2005. Hitex Developmnet Tools: Solutions & Tool Chain for ARM, 2004. Hitex Developmnet Tools: MCB2130 Evaluation Board / User's Guide, 2005.

102

También podría gustarte