YOU ARE DOWNLOADING DOCUMENT

Please tick the box to continue:

Transcript

ELEKTRONSKI FAKULTET U NIU

SEMINARSKI RAD

ARM7 PROCESORPredmet: 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..........................................................................................................................41. 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

3

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.

4

Mikroprocesorski sistemi

ARM7 procesor

1. Arhitektura ARM procesora

1.1 Arhitekturalno nasleeU 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 modelSkup 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.

6

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-aRazvoj 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) .

7

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.

8

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.

9

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 processorArm 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 procesoraPostoji 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 ARM7TDMIARM7TDMI 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 interfejsJako 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 taktaSve 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 interfejsMemorijski 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 interfejsInterfejs 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 StanjeTbit izlaz daje informaciju okruenju o tome da li procesor trenutno izvrava ARM ili Thumb instrukcije.

3.1.6 Konfiguracijabigend 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 PrekidiDva 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 Inicijalizacijareset 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-ovanjeARM7TDMI 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-ovanjeInterfejs 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 koprocesoracpi , 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 interfejsJTAG kontrolni signali se povezuju na test kontroler preko svojih pinova.

3.1.13 TAP informacijeOvi 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 scanARM7TDMI 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 sinteziStandardno 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 ARM8TDMIARM8 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 ARM9TDMIARM9TDMI 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 ARM4.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 registraInstrukcije pristupa status registara Instrukcije za obradu podataka Razliite aritmetike instrukcije Instrukcije mnoenja Instrukcije grananja

Instrukcije za generisanje softverkoih prekidaInstrukcije 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

#

P

U

B

W

L

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

0

0

12-bit immediate

25 7 6

11

7 6

5

4

3

0

1 konstanta duine pomeraja tip pomeranja ofset registar

#shift

Sh

0

Rm

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

Asemblerski format: Pre-indeksirani format instrukcije:LDR | STR{} {B} Rd, [Rn, ] {!}

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

Korisna pc relativna forma adresiranja je oblika: 24

Mikroprocesorski sistemi

ARM7 procesor

LDR | STR{} {B} Rd, LABEL

LDR je registar uitavanja, STR je registar smetanja, opcioni B bira prenos neoznaenog bajta, inicijalno je re. moe biti #+/- 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

P

U

#

W

L

Rn

Rd

offsetH

1 S

H

1

offsetL

izvorini/odredini registar bazni registar uitavanje/smetanje write-back (auto-index) gore/dole pre-/post-index25 7 6 11 8 3 0

025 7 6

Imm[7:4]

Imm[7:4]

11

8

3

0

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{}H |SH |SB Rd, [Rn, ] {!}

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

26

Mikroprocesorski sistemi

ARM7 procesor

gde je #+/-, 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

P

U

S

W

L

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{} Rn{!},

gde 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 lista registara i opsega registara u zagradama, npr. {r0, r3-r7, pc}. U ne-korisnikom nainu rada CPSR se moe obnoviti pomou:LDM{} Rn{!}, ^

Lista registara mora sadrati PC. Korisniki registri se mogu sauvati ili obnoviti pomou :LDM | STM{} Rn, ^

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

0

cond

00010

B

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{} {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

0

cond

00010

R

001111

Rd

000000000000 odredini registar SPSR/CPSR

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

Asemblerski format:MRS{} 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

0

cond

00

#

10

R

10

field

1111 maska polja SPSR/CPSR

operands

25 7 6

11

8

7

0

0 konstanta poravnanja25 7 6 11

#rot

8-bit immediate

4 3

0

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{} CPSR_f|SPSR_f, # MSR{} CPSR_|SPSR_, Rm

gde je 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

0

cond

00

#

opcode

S

Rn

Rd

operand 2

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

1 konstanta poravnanja

#rot

8-bit immediate

11

7 6

5

4

3

0

#shift25 7 6

Sh

0

Rm

konstanta duine pomeraja tip pomeranja registar drugog operanda11 8 7 6 5 4 3 0

0

Rs registarska duina pomeraja

0

Sh

1

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:{} {s} Rd, Rn, # {} {s} Rd, Rn, Rm, {}

Kod monadikih operacija kakve su MOV, MVN izostavlja se Rn tako da je format sledeeg oblika:{} {s} Rd, := 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: {} Rn, := CMP | CMN | TST | TEQ Kod tro-operandskih instrukcija format je oblika: {} {s} Rd, Rn := ADD | SUB | RSB | ADC | SBC | RSC | AND | BIC | EOR | ORR

U konkretnom sluaju 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

0

cond

000101100000

Rd

00000001

Rm

odredini registar

izvorni registar

Slika8. Binarno enkodiranje instrukcije brojanja poetnih nula

Asemblerski format:CLZ{} 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

8

7

4

3

0

cond

0000

mul

S

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{} {s} Rd, Rm, Rs MLA{} {s} Rd, Rm, Rs, Rn

Naredne instrukcije daju kompletan 64-bitni rezultat:{} {s} RdHi, RdLo, Rm, Rs

gde je 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

0

cond

101

L

24-bit signed word offset

Slika 10. Binarno kodiranje granjanja i grananje sa linkom

Format asemblera:B{L} {}

L specificira grananje i granjanje sa link varijantom. Ako L ne postoji generie se grananje bez linka. bi trebalo da bude jedna od mnemonika navedena u tabeli ARM uslovnih kodova, a ako se ovo polje izostavi podrazumeva se AL. 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 Rm31 28 27 6 5 4 3 0

cond

0001001011111111111100

L

1

Rm

43

Mikroprocesorski sistemi

ARM7 procesor

(2) BLX label31 28 27 25 24 23 0

1111

101

H

24-bit signed word offset

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

Format asemblera:1: 2: B{L}X{} Rm BLX

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 BXBranch, 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{}

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

5

4

3

0

cond

1110

Cop1

CRn

CRd

CP#

Cop2

0

CRm

Slika 14. Binarno kodiranje instrukcije koprocesorske oeracije podataka

47

Mikroprocesorski sistemi

ARM7 procesor

Asemblerski format.CDP{} , , CRd, CRn, CRm{, }

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

P

U

N

W

L

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{} {L} , CRd, [Rn, ] {!}

Naknadno-indeksirani oblik:LDC | STC{} {L} , CRd, [Rn],

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

8

7

5

4

3

0

cond

1110

Cop1

L

CRn

Rd

CP#

Cop2

1

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{} , , Rd, CRn, CRm{, }

Prenos u koprocesor iz ARM registra:MCR{} , , Rd, CRn, CRm{, }

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 SoftverProces 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 verifikacijePre 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 PlatformaVerifikacija 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 Verilo