nios ii processor reference handbookes.elfak.ni.ac.rs/papers/vbalovic - nios ii.pdfi predgovor u...

124
Nios II procesor Nios II razvojni sistem 101 Innovation Drive San Jose, CA 95134 www.altera.com Preveo i priredio .doc i .pdf verziju priručnika, student: Balović Vladimir br.indeksa: 9854

Upload: others

Post on 14-Jan-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Nios II procesor Nios II razvojni sistem

101 Innovation Drive San Jose, CA 95134 www.altera.com

Preveo i priredio .doc i .pdf verziju priručnika,

student: Balović Vladimir br.indeksa: 9854

Page 2: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

I

Predgovor

U ovom  radu su obrađene dve  tematske celine vezane za Nios®II sistem, koji je proizvod korporacije Altera®: 

Nios®II procesor  Nios®II razvojni sistem. 

 Osnovna  ideja  je bila da  se  čitalac upozna  sa konceptom 

izgradnje “embeded” sistema na  jednom FPGA  čipu. Ovo  je širok pojam,  koji  obuhvata  analizu  sistema,  kako  po  pitanju hardverskih,  tako  i  softverskih  zadataka.  Pošto  je  naš  zadatak vezan  za  reprogramabilne  čipove  i  to  ne  samo  po  pitanju aplikativnog  programa  koji  se  na  njima  izvršavaju,  već  i  po pitanju  hardverske  strukture  samog  procesorskog  sistema, logično  je  bilo  da  se  u  prvom  delu  ovog  rada  upoznamo  sa “srcem” jednog Nios® II sistema, tj. njegovim procesorom. 

 Hardverska  struktura  jednog  procesorskog  sistema 

realizovanog na FPGA čipu nije “fiksirana na silicijumu”, kao što je  to  slučaj  kod  tradicionalnih  mikrokontrolera.  Ovo  znači,  da smo u mogućnosti da u zavisnosti od potreba naše aplikacije, njoj i prilagodimo hardversku osnovu na kojoj će se  izvršavati. Time ćemo učiniti niz prednosti u odnosu na klasične mikrokontrolere, pre svega po pitanju performansi, veličine i naravno, cene ciljnog sistema.  U  nastavku  ćemo  se  pozabaviti  opisom  arhitekture Nios®  II  jezgra,  kao  i  elementima  bitnim  za  programiranje: registrima  i memorijom.  Takođe  ćemo  se  na  kraju  prvog  dela upoznati  i  sa  formatima  naredbi    Nios®  II  procesora,  a  na raspolaganju  će  biti  i  tabelarno  priložen  skup  svih  naredbi  sa kratkim opisom svake od njih. 

 U drugom delu rada, upoznaćemo Vas sa sistemom

Altera® Nios®II. Biće prikazano kako se koristi softver Quartus®II za kreiranje i realizaciju Vašeg prvog projekta. Analiziraćemo prvo sistemske zahteve naše aplikacije, a onda uz pomoć alata SOPC Builder i generisati odgovarajuću strukturu koju ćemo kasnije prebaciti na naš FPGA čip. Takođe, biće reči i o razvoju softvera upotrebom paketa Nios II IDE, kao i o pokretanju programa na ciljnom hardveru i njegovom izvršavanju na ISS – simulatoru.

Page 3: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

II

Sadržaj

Predgovor .................................................................................................................... I

Sadržaj ........................................................................................................................ II

Kako kontaktirati Alteru............................................................................................VI

Tipografske oznake u tekstu ....................................................................................VI

1. Osnovni podaci o Nios II procesoru ..................................................................... 3

Početak rada sa Nios II procesorom................................................................ 4 Prilagodljivost Nios II sistema .......................................................................... 5 Konfigurabilnost koncepta “mekog-jezgra” .................................................... 6 Fleksibilni skup periferija i mape adresiranja .................................................. 6

Standardne periferije....................................................................................... 7 Periferije formirane od strane korisnika........................................................... 7

Instrukcije definisane od strane korisnika....................................................... 7 Automatski sistem generisanja Nios II istema ................................................ 8

2. Arhitektura procesora............................................................................................ 9

Implementacija procesora ............................................................................... 10 File - registar..................................................................................................... 11 Aritmetičko-logička jedinica............................................................................ 11 Neugrađene instrukcije.................................................................................... 12 Custom - instrukcije......................................................................................... 12 Kontroler izuzetaka .......................................................................................... 12 Kontroler prekida ............................................................................................. 12 Instruction i Data bas....................................................................................... 14

Pristup memoriji i periferijama....................................................................... 14 Instruction Master port .................................................................................. 15 Data Master port ........................................................................................... 16 Deljiva memorija za instrukcije i podatke ...................................................... 16

Keš memorija.................................................................................................... 16 Opcije konfigurisanja keš memorije .............................................................. 17 Efekti upotrebe keš memorije ....................................................................... 17 Metode zaobilaska keša ............................................................................... 18

Tightly Coupled memorije ............................................................................... 18 Pristupanje Tightly Coupled memoriji ......................................................... 18 Efekti korišćenja Tightly Coupled memorije ................................................ 19

Označavanje adrese......................................................................................... 19 JTAG namensko povezivanje.......................................................................... 20 Prebacivanje i izvršavanje programa ............................................................. 21

Page 4: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

III

Softverske tačke prekida ................................................................................. 21 Hardverske tačke prekida................................................................................ 21 Hardversko okidanje ........................................................................................ 21

Utvrđeno okidanje ......................................................................................... 23 Okidanje na opseg vrednosti ........................................................................ 23

3. Način programiranja ............................................................................................ 24

Registri opšte namene..................................................................................... 24 status (ctl0) ................................................................................................... 26 estatus (ctl1) ................................................................................................. 26 bstatus (ctl2) ................................................................................................. 27 ienable (ctl3) ................................................................................................. 27 ipending (ctl4) ............................................................................................... 27 cpuid (ctl5) .................................................................................................... 27

Zaštićeni mod ................................................................................................... 28 Korisnički mod ................................................................................................. 29

Implementacija procesora i podrška korisničkom modu................................ 29 Debag-mod ....................................................................................................... 30 Promena režima rada ....................................................................................... 30 Tipovi izuzetaka................................................................................................ 32

Hardverski prekid .......................................................................................... 32 Softverska zamka ......................................................................................... 34 Izvedene instrukcije ...................................................................................... 34 Ostali izuzeci................................................................................................. 34

Određivanje uzroka izuzetka ........................................................................... 35 Ugnježdeni izuzeci ........................................................................................... 36 Povratak od izuzetka........................................................................................ 36

Povratak adrese............................................................................................ 36 Povratak sa prekida ......................................................................................... 38 Upotreba registra ............................................................................................. 38 Adresni načini rada .......................................................................................... 39 Keš memorija.................................................................................................... 39 Instrukcije za transfer podataka ..................................................................... 42 Aritmetičke i logičke instrukcije ..................................................................... 43 Move instrukcije ............................................................................................... 44 Instrukcije za poređenje .................................................................................. 45 Instrukcije za pomeranje i rotiranje ................................................................ 46 Instrukcije za upravljanje tokom uzvršenja programa ..................................... 47

Instrukcije uslovnog grananja ....................................................................... 47 Ostale instrukcije za kontrolu toka izvršavanja programa ................................ 48

Custom - instrukcije......................................................................................... 49 Instrukcija nop................................................................................................. 49 Potencijalne neugrađene instrukcije .............................................................. 49

Page 5: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

IV

4. Tipovi Nios® II jezgra ........................................................................................... 50

Podržane familije FPGA čipova ...................................................................... 52 Pregled mogućnosti jezgra Nios II/e............................................................... 52 Fajl registar....................................................................................................... 53 Aritmetičko-logička jedinica............................................................................ 53 Pristup memoriji ............................................................................................... 53 Faze izvršavanja instrukcije ............................................................................ 53 Performanse instrukcija .................................................................................. 53 Upravljanje izuzecima ...................................................................................... 54 JTAG modul za debagovanje .......................................................................... 55 Nepodržane osobine ........................................................................................ 55

5. Skup instrukcija.................................................................................................... 56

I-Type format naredbe...................................................................................... 56 R-Type format naredbe .................................................................................... 57 J-Type format naredbe..................................................................................... 58 Tabelarni pregled instrukcija .......................................................................... 61

1. Početak rada sa Nios II sistemom....................................................................... 71

Naš projekat...................................................................................................... 71 Softverski i hardverski zahtevi........................................................................ 72 Princip otvorenog jezgra ................................................................................. 74

2. Razvojni tok Nios II sistema ................................................................................ 75

Analiza sistemskih zahteva ............................................................................. 76 Definisanje i generisanje sistema pomoću SOPC Builder alata .................. 77 Quartus II zadaci prilikom razvoja hardvera .................................................. 78 Nios II IDE radovi na razvoju softvera ............................................................ 78 Izvršavanje i debagovanje softvera na ploči.................................................. 80 Varijacije razvojnog toka ................................................................................. 80

Prepravke softvera i hardvera ....................................................................... 80 Iterativno kreiranje Nios II sistema ................................................................ 80 Verifikovanje sistema uz pomoć alata........................................................... 81 Hardware Simulation Tools........................................................................ 81

3. Izrada primer - projekta........................................................................................ 82

Instaliranje projektnih fajlova.......................................................................... 82 Analiza sistemskih zahteva ............................................................................. 83 Pokretanje Quartus II programa i otvaranje “Tutorial Example Design Project”.......... 84 Kreiranje nove SOPC Builder System strukture............................................ 85 Definisanje sistema u SOPC Builder-u........................................................... 86

Određivanje ciljnog FPGA i podešavanja vezana za Clock..................................... 87 Dodavanje on-chip memorije ....................................................................... 87 Dodavanje Nios II procesorskog jezgra ....................................................... 89

Page 6: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

V

Dodavanje JTAG UART komponente (univerzalni asinhroni primo-predajni kontroler)....................................................................................................... 91 Dodavanje tajmera........................................................................................ 92 Dodavanje System ID Pheripheral opcije ................................................... 94 Dodavanje PIO bloka ................................................................................... 95 Dodela baznih adresa i utvrđivanje prioriteta prekida ................................... 96 Generisanje SOPC Builder sistema............................................................. 98

Integrisanje SOPC Builder System-a u Quartus II projekat .......................... 99 Uvođenje SOPC Builder System modula u Quartus II Project .................. 99 Dodeljivanje pinova FPGA čipu .................................................................. 101 Kompajliranje Quartus II Project-a i verifikacija vremena .......................... 104

Prebacivanje hardverskog dizajna na ciljni FPGA ...................................... 105 Razvoj softvera korišćenjem paketa Nios II IDE .......................................... 106

Kreiranje novog Nios II C/C++ aplikacionog projekta ................................. 106 Kompajliranje projekta ................................................................................ 108

Pokretanje programa ..................................................................................... 110 Pokretanje programa na ciljnom hardveru .................................................. 110 Izvršavanje programa na ISS - simulatoru .................................................. 111

Završna reč ..................................................................................................... 113 Literatura......................................................................................................... 114 Biografija......................................................................................................... 115

Page 7: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

VI

Kako kontaktirati Alteru

Za najnovije informacije o proizvodima Altera® pogledajte relevantne linkove u sledećoj tabeli.

Napomena:

(1) Za sve informacije možete takođe da kontaktirate i svog lokalnog prodavca. Tipografske oznake u tekstu

Sledeće tabele objašnjavaju upotrebljene tipografske oznake u daljem tekstu.

Kontakt (1) Metod kontakta Adresa

Tehnička podrška vebsajt www.altera.com/support

vebsajt www.altera.com/training Tehnički trening

Email [email protected]

Literatura vebsajt www.altera.com/literature Altera kontakt za nabavku literature Email [email protected]

Email [email protected] Vantehnička podrška (Licenciranje softvera) Email [email protected]

Tip teksta Označava

Bold tip sa velikim početnim slovima

Ime komande, imena prozora kod programa, opcije kod podešavanja. Primer: komada Save As.

bold tip Eksterne parametre za podešavanje, imena direktorijuma, imena projekata, imena disk-drive uređaja, imena fajlova, ekstenzija fajlova, imena usluznih programa i termini engleskog jezika. Primer: fMAX, \qdesigns direktorijum, d: uređaj, chiptrip.gdf fajl.

Italic tip sa velikim početnim slovima

Naslove sekcija u okviru određene lekcije, termini engleskog jezika. Primer: naslov sekcije Dodavanje Nios II procesorskog jezgra.

Italic tip Interne parametre za podešavanje i promenljive. Primer: tPIA, n + 1. Imena promenljivih između uglastih zagrada. Primer: <file name>, <project name>.pof.

Početna velika slova Znaci tastera na tastaturi i sva lična imena. Primer: Delete key, the Options meni, itd.

Page 8: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

VII

Vizuelna oznaka Značenje Courier font Ovim fontom su napisana imena signala i portova. Primer: data1, tdi,

input,itd. Sve što treba da se unese tačno onako kako je naznačeno, takođe je napisano ovim fontom. Na primer: c:\qdesigns\tutorial\chiptrip.gdf.

1., 2., 3., … a., b., c., …

Nabrajanja koja predstavljaju sukcesivne korake u postupku koji nam se nalaže da uradimo ( koraci u nekoj proceduri).

Označava stavke prilikom nabrajanja, kao i zadatke koje treba uraditi, ali kada je njihov redosled izvršavanja nebitan.

Označava proceduru koja se sastoji od isključivo jednog koraka.

Ruka označava informacije koje zahtevaju posebnu pažnju.

Znak upotorenja govori o posebnim elementima pažnje kojih se treba pridržavati kako ne bi došlo do uništenja proizvoda ili radne okoline.

The feet direct you to more information on a particular topic.

Page 9: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Prvi deo:

Nios II procesor

Page 10: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

2

Nios II procesor

Cilj ovog rada je upoznavanje sa Nios® II procesorom. U nastavku ćemo razmatrati sledeće teme:

Osnovni podaci o procesoru Arhitektura procesora Način programiranja Tipovi Nios® II jezgra  Skup instrukcija   

Page 11: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

3

1. Osnovni podaci o Nios II procesoru

U uvodnom delu ćemo najpre predstaviti familiju Nios® II embedded procesora. Ovo izlaganje će biti od pomoći kako inženjerima koji projektuju hardver, tako i onima koji su zaduženi za razvoj softvera i to tako, što će ukazati na sličnosti i na razlike između Nios II procesora i tradicionalnih embedded procesora. Nios II je procesor opšte namene, RISC tipa, a odlikuju ga sledeće stvari:

32-bitni skup instrukcija, tok podataka i adresni prostor 32 registra opšte namene 32 spoljna izvora prekida Instrukciju 32 × 32 koja množi i deli proizvodeći 32-bitni

trzultat Namenske instrukcije za rad sa 64-bitnim i 128-bitnim

proizvodima množenja. Instrukcija barrel shifter Pristup raznovrstnim on-chip periferijama i povezivanje sa

off-chip memorijama i periferijama Okruženje za razvoj softvera bazirano na GNU C/C++

alatu i Eclipse IDE Sastav seta instrukcija ( ISA - Instruction Set Architecture )

kompatibilan za sve Nios II procesorske sisteme Performanse iznad 150 DMIPS-a

Nios II procesor je identičan mikrokontroleru ili “kompjuteru na čipu”, koji u svom sastavu ima CPU, razne periferalije i memoriju i to sve na jednom čipu. Termin “Nios II processor system” se odnosi na Nios II procesorsko jezgro, skup on-chip periferalija, on-chip memoriju i interfejse ka off-chip memoriji, koji se svi skupa nalaze na jednom Altera® čipu. Kao i određene familije mikrokontrolera, svi Nios II procesorski sistemi koriste konzistentan skup instrukcija i način programiranja.

Page 12: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Osnovni podaci o procesoru Nios II procesor

4

Početak rada sa Nios II procesorom Početak rada sa Nios II procesorom je sličan radu sa bilo kojom drugom familijom mikrokontrolera. Najjednostavniji način za početak rada je pribavljanje Alterinog razvojnog kita, koji u sebi uključuje već gotovu razvojnu ploču i sve potrebne softverske alate potrebne za pisanje programa za Vaš Nios II. Nios II softversko razvojno okruženje ćemo nadalje nazivati skraćeno IDE ( Software Development Environment ). Nios II IDE je bazirano na GNU C/C++ kompajleru i Eclipse IDE, što predstavlja već poznato i prihvaćeno okruženje za razvoj softvera. Korišćenjem Nios II IDE paketa, projektanti mogu odmah da počnu sa razvojem i simuliranjem Nios II softverskih aplikacija. Takođe, upotrebom Alterinog razvojnog sistema, projektant može da svoj izrađeni prototip pokrene i testira na samoj ploči, pre neko što se upusti u izgradnju svoje hardverske platforme. Slika 1–1 prikazuje primer realizovanog sistema u okviru Altera Nios II razvojnog sistema.

Slika 1–1. Primer sistema realizovanog sa Nios II procesorom JTAG connection to software debugger

Page 13: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Osnovni podaci o procesoru Nios II procesor

5

Prilagodljivost Nios II sistema Alterini FPGA čipovi pružaju fleksibilnost kada je u pitanju dodavanje novih mogućnosti i povećanje performansi procesorskog sistema. Suprotno ovome, sve nepotrebne procesorske funkcije i periferalije mogu biti izbačene, kako bi se time pojednostavio dizajn, smanjio finalni uređaj ili snizila njegova cena. Sa obzirom na činjenicu da su pinovi i logički resursi kod Altera uređaja programabilni, mnoga prilagođavanja Vašeg dizajna su moguća, a mi ćemo u nastavku navesti samo neka od njih:

Pinovi na čipu mogu da se reorganizuju u cilju dobijanja jednostavnije finalne ploče. Na primer, adresni i pinovi za prenos podataka jedne eksterne SDRAM memorije mogu da se pomere na bilo koju stranu čipa kako bi se skratile veze na ploči.

Dodatni pinovi i logički resursi na čipu mogu da se koriste

za funkcije koje nisu vezane direktno za procesor. Navodimo da Nios II procesorski sitem konzumira samo 5% od ukupne površine velikog Alterinog FPGA čipa, ostavljajući ostatak resursa na čipu dostupan za implementaciju dodatnih funkcija.

Dodatni pinovi i logika na čipu mogu da se upotrebe i za implementaciju dodatnih periferija za Nios II procesorski sistem. Altera nudi biblioteke periferija koje se mogu jednostavno povezati u Nios II procesorski sistem.

U praksi, većina FPGA dizajna sadrži neku dodatnu logiku u kombinaciji sa Nios II procesorskim sistemom. Dodatna ligika nema uticaja na naše shvatanje funkcionisanja i sagledavanja osobina Nios II procesora u sistemu.

Page 14: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Osnovni podaci o procesoru Nios II procesor

6

Konfigurabilnost koncepta “mekog-jezgra”

U ovom delu ćemo predstaviti koncepte koji su jedinstveni i razlikuju se od onih koje srećemo kod diskretnih mikrokontrolra. U većini slučajeva, ovi koncepti se odnose na fleksibilnost prilikom hardverskog dizajniranja, a koja se ogleda u mogućnosti finog podešavanja sistema i njegovog implementiranja. Dizajneri softvera, generalno nisu dužni da brinu o detaljima hardverske implementacije i mogu da pišu programe bez poznavanja prirode Nios II procesorskog jezgra.

Nios II procesor je konfigurabilan procesor mekog-jezgra, nasuprot fiksnim, off-the-shelf mikrokontrolerima. U ovom kontekstu, konfigurabilan znači da poseduje mogućnost nadogradnje ili redukovanja baznog sistema kako bi zadovoljio željene performanse ili se uklopio u željenu cenu. “Soft-core” znači da se procesorsko jezgro nudi u “soft” proizvođačkoj formi ( struktura nije fiksirana na silicijumu ) i može se naći na bilo kom FPGA čipu iz Alterine familije. Drugim rečima, Altera ne prodaje “Nios II čipove”; Altera samo prodaje prazne FPGA čipove. Na korisniku je da konfiguriše Nios II procesor i periferije prema svojim potrebama, a onda i isprogramira sistem na nekom FPGA čipu.

Konfigurabilnost ne znači da projektant mora da kreira novu konfiguraciju Nios II procesora pri svakom novom projektu. Altera nudi već gotove Nios II sisteme koje projektanti mogu da koriste takve kakvi su. Ako ova ponuđena rešenja ispunjavaju Vaše sistemske zahteve, onda nema potrebe da konfigurišete sistem u budućnosti. Pored toga, projektanti softvera mogu da koriste Nios II simulator skupa naredbi kako bi započeli sa razvojem i debagovanjem Nios II aplikacija i pre nego što finalna hardverska konfiguracija bude determinisana.

Fleksibilni skup periferija i mape adresiranja Fleksibilni skup periferija je jedna od najuočljivijih razlika između Nios II procesorskih sistema i fiksnih mikrokontrolera. Zbog soft-core prirode Nios II procesora, projektanti mogu lako da izgrade Nios II procesorski sistem sa tačnim skupom periferija potrebnih za datu aplikaciju. Posledica fleksibilnih periferija je fleksibilna adresna mapa. Softverskim konstrukcijama je omogućen pristup memoriji i periferijama, nezavisno od adresne lokacije. Zbog toga, fleksibilni skup periferija i mape adresiranja, namaju uticaja na razvoj aplikacije.

Page 15: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Osnovni podaci o procesoru Nios II procesor

7

Periferije se mogu podeliti na dve široke klase: standarsne periferije i periferije formirane od strane korisnika.

Standardne periferije Altera pruža skup periferija rasprostranjenih i kod mikrokontrolera, kao što su tajmeri, serijski komunikacioni interfejs, I/O opšte namene, SDRAM kontroleri i ostali memorijski interfejsi. Lista dostupnih periferija se neprestano povećava od strane Altere.

Periferije formirane od strane korisnika Projektanti mogu takođe, da kreiraju i svoje vlastite periferije i integrišu ih u Nios II procesorski sistem. Za kritične sisteme po pitanju performansi, koji troše većinu ciklusa procesora na izvršavanje specifičnog dela koda, osnovna tehnika zasnovana na posebnim, prilagođenim periferijama, omogućava implementiranje nekih funkcija direktno hardverom. Ovakav pristup nidi dvostruku dobit: implementacija hardvera je brža od implementacije softvera; procesor je slobodan da obavlja ostale funkcije, dok paralelno sa njim, naša periferija obavlja operacije nad podacima. Instrukcije definisane od strane korisnika (Custom instructions) Kao što sami možete da formirane sopstvene periferije, tako je moguće proširiti i skup instrukcija i to onim definisanim od strane korisnika. Soft-core priroda Nios II procesora omogućava projektantima da integrišu svoju logiku unutar aritmetičko-logičke-jedinice (ALU). Slično kao i ugrađene Nios II instrukcije i logičke instrukcije definisane od strane korisnika mogu da uzmu vrednosti iz najviše dva izvorna registra i opciono upišu rezultat u neki odredišni registar.

Korišćenjem custom-instrukcija, projektant može da iskoristi hardver na optimalan način i tako ispuni ciljeve vezane za performanse sistema. Pošto je procesor implementiran na reprogramabilnom FPGA čipu, inženjeri koji rade na razvoju hardvera i oni koji su zaduženi za razvoj softvera, mogu da rade paralelno na razvoju sistema, svako u svojoj oblasti, a da pri tom vrše testiranje i optimiziranje svakog od isprojektovanih modula testirajući ih direktno na realnom hardveru.

Page 16: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Osnovni podaci o procesoru Nios II procesor

8

Iz perspektive softvera, custom‐instrukcije izgledaju kao makroi ili C funkcije, tako da programerima nije potrebno da znaju njihovu građu kako bi ih koristili.  

Automatski sistem generisanja Nios II istema Poznati  Alterin  dizajnerski  alat  SOPC  Builder  design  tool, potpuno automatizuje proces konfigurisanja procesora i njegovih željnih osobina, generišući hardverski dizajn koji će biti direktno implementiran  na  jedan  FPGA  čip.  Ovaj  alat  omogućava projektantima  hardvera  da  konfigurišu  svoj Nios  II  procesorski sistem  sa  velikim  brojem periferija  i memorijskim  interfejsima  . Kompletan  procesorski  sistem  može  da  se  kreira  bez  ikakvog poznavanja  jezika  za  opis  hardvera  (  HDL  ‐  Hardware Description  Language  ).    SOPC  Builder  može  takođe  i  da importuje  fajlove  dizajniranja  u  HDL‐u,  predstavljajući  time jednostavan  mehanizam  integrisanja  custom‐logike  u  Nios  II procesorski sistem.   Posle uspešnog generisanja sistema, dati dizajn može da se prenese na ploču, tačnije na blanko FPGA čip, zatim prebaci i napisani softver i sistem može da otpočne sa radom. Kada se hardverski dizajn jednom prebaci na ploču, arhitektura sistema, tj. procesora je fiksna. Napisani softver se na ovakvoj strukturi izvršava na isti način kao i kod “tradicionalnih”, nekonfigurabilnih procesora.

Page 17: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

9

2. Arhitektura procesora

U  ovom  poglavlju  je  opisana  hardverska  struktura  Nios®  II procesora,  uključujući  tu  i  diskusiju  o  svim  funkcionalnim elementima  Nios  II  arhitekture  i  osnovama  hardverske implementacije.   Nios  II  arhitektura  je  predstavljena  kao  arhitektura  skupa instrukcija  (  ISA  ‐    instruction  set  architecture  ).  Jezgro Nios  II procesora je tako dizajnirano da uključuje Nios II set instrukcija i podržava  funkcionalne  jedinice  opisane  nadalje  u  ovom dokumentu. Procesorsko  jezgro ne uključuje bilo kakve periferije niti  logiku  za  povezivanje  sa  spoljnim  svetom.  Ono  uključuje jedino elemente potrebne za  implementaciju Nios  II arhitekture. Na slici  2–1 je prikazan blok dijagram jezgra Nios II procesora.   

Slika 2–1. Nios II Processor Core – blok dijagram

Page 18: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Arhitektura procesora Nios II procesor

10

Nios II arhitektura sadrži sledeće, korisniku dostupne jedinice:

file-registar aritmetičko logičku jedinicu (ALU) interfejs za custom-instrukcionu logiku kontroler izuzetaka ( exception controller ) kontroler prekida ( interrupt controller ) magistralu instrukcija magistralu podataka memorije za instrukcije i podatke ( instruction cache i data

cache memorije respektivno ) Tightly coupled - memorije za instrukcije i podatke JTAG modula

U nastavku izlaganja biće prodiskutovani detalji hardverske implementacije, koji se odnose na svaki od gore pomenutih blokova. Funkcionalni blokovi Nios II arhitekture formiraju osnovu za Nios II set instrukcija.

Implementacija procesora

Nios II implementacija predstavlja skup dizajnerskih izbora ugrađen u Nios II procesorsko jezgro. Sve implementacije počivaju na setu instrukcija definisanom u priručniku “Nios II Processor Reference Handbook”. Svaka implementacija je namenjena da ispunjava specifične ciljeve. Ovo svojstvo dopušta Nios II arhitekturi da se prilagodi potrebama različitih aplikacija.

Implementacije generalno variraju prema jednom od tri zahteva kojima se obično teži: što bolje performanse; što niža cena gotovog proizvoda; što bolja iskorišćenost sistema. Slede primeri za svaki od ovih zahteva:

što bolje performanse — na primer, da bi poboljšali sistema, projektanti mogu da povećaju ili smanje veličinu keš memorije. Veća keš memorija povećava brzinu izvršavanja velikih programa, dok manji keš očuvava on-chip memorijske resurse.

što niža cena gotovog proizvoda — da bi smanjili cenu, projektanti ponekad pribegavaju ukidanju pojedinih blokova, kao na primer JTAG modula. Ovakav potez očuvava on-chip ligiku i memorijske resurse, ali sa druge strane isključuje mogućnost debagovanja softvera.

Page 19: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Arhitektura procesora Nios II procesor

11

što bolja iskorišćenost sistema — na primer, kod kontrolnih aplikacija, koje retko izvršavaju kompleksne aritmetičke operacije, projektant može da odluči da instrukciju deljenja emulira softverski. Uklanjanjem hardvera za operaciju deljenja, oslobađamo on-chip resurse, ali zato povećavamo vreme izvršavanja ove operacije.

File - registar

Nios II arhitektura podržava file-registre, sastavljene od trideset dva 32-bitna registra opšte namene i šest 32-bitnih kontrolnih registara. Arhitektura podržava “supervizor” mod i mod korisnika, čime je omogućena zaštita sistemskog koda u kontrolnim registrima od “lutajućih” aplikacija. Nios II arhitektura dopušta i naknadno dodavanje registara sa pokretnim zarezom. Aritmetičko-logička jedinica

Nios  II aritmetičko‐logička  jedinica  (ALU) radi sa podacima koji se nalaze u  registrima opšte namene. ALU  radi  tako  što pribavi jedan  ili  dva  podatka  iz  registara,  obavi  zadatu  operaciju  nad njima i vrati rezultat opet u registar.U tabeli 2‐1 su date operacije koje ALU može da izvrši nad podacima.   

Tabela 2–1. Operacije podržane od strane Nios II aritmetičko-logičke jedinice

Kategorija Detalji Aritmetičke operacije 

ALU podržava sabiranje, oduzimanje, množenje i deljenje označenih i neoznačenih operanada. 

Relacioni odnosi 

Alu podržava relaciju jednakosti i nejednakosti, relacije manje ili jednako i veće ili jednako i to nad označenim i neoznačenim operandima ( , , ,= ≠ ≤ ≥ ). 

Logičke operacije  Podržane su sledeće logičke operacije: AND, OR, NOR i  XOR  

Šiftovanje i rotiranje 

ALU podržava operacije šiftovanja i rotiranja i može da šiftuje/rotira podatke u rasponu od 0 – 31 bit‐pozicije po  instrukciji. Takođe  je podržano  i aritmetičko pomeranje u desno i logičko pomeranje levo/desno, kao i rotiranje levo/desno.  

Page 20: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Arhitektura procesora Nios II procesor

12

Neugrađene instrukcije

Neka  jezgra  Nios  II  procesora  ne  omoghućavaju  hardversko izvođenje  operacija  množenja  i  deljenja.  Sledeće  instrukcije  su jedine  operacije  koje  procesorsko  jezgro  može  da  emulira softverski:  mul,  muli,  mulxss,  mulxsu,  mulxuu,  div,  divu.  U ovom  slučaju  one  su  poznate  pod  umenom  “neugrađene” instrukcije. Sve druge instrukcije su ugrađene, ili kako se još kaže, implementirane u hardveru.  Procesor  generiše  prekid  svaki  put  kada  se  pojavi  neugrađena instrukcija, a kontroler izuzetaka poziva rutinu koja emulira datu operaciju  softverski.  Zbog  toga,  neugrađene  instrukcije  nemaju uticaja na programerov pogled prema procesoru.   Custom - instrukcije

Nios II arhitektura podržava dodavanje novih instrukcija, definisanih od strane korisnika. Nios II ALU je direktno povezana sa blokom custom instruction logic ( pogledati ponovo sliku 2-1 ), dozvoljavajući projektantima da implementiraju u hardveru svoje operacije, na koje će se kasnije pozivati i koristiti ih baš kao i prirodne, već ugrađene instrukcije.

Kontroler izuzetaka

Nios II arhitektura poseduje jednostavan, neusmeren kontroler izuzetaka koji upravlja svim tipovima odstupanja. Sva odstupanja, ili izuzeća, uključujući tu i hardverske interapte ili prekide, primoravaju procesor da svoje izvršenje prebaci na jedinstvenu novu adresu, adresu izuzetka (exception address). Kontroler izuzetaka, određuje razloge prekida sa ove adrese i upućuje dalje izvršavanje na odgovarajuću prekidnu rutinu. Kontroler prekida

Nios  II  arhitektura  podržava  trideset  dva  eksterna  hardverska prekida. Procesorsko  jezgro  raspolaže  sa 32  IRQ – ulaza  (IRQ – interrupt request),  irq0 do  irq31, kojima  je obezbeđen  jedinstven ulaz za svaki  izvor prekida. Prioritet zahteva za prekidom (IRQ) se definiše softverski. 

Kontroleri izuzetaka i kontroleri prekida

Page 21: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Arhitektura procesora Nios II procesor

13

Arhitektura  takođe podržava  i ugnježdene  interapte.  Softverom možemo da dozvolimo ili zabranimo bilo koji izvor interapta i to individualno preko  ienable kontrolnog registra, koji sadrži  jedan interrupt‐enable  bit  za  svaki  od  IRQ  ulaza.  Softverom  možemo globalno da dozvolimo  ili zabranimo prekide koristeći PIE bit u status kontrolnom registru. Hardverski prekid je generisan akol i samo ako su ispunjena sledeća tri uslova: 

PIE bit status registra ima vrednost 1 jedan od IRQ ulaza, irqn, zahteva prekid odgovarajući bit n, ienable registra ima vrednost 1

U ovom odeljku su pojašnjeni detalji hardverske implementacije Nios II memorije i organizacije I/O uređaja. Fleksibilna priroda Nios II memorije i I/O organizacije je možda i najuočljivija razlika između Nios II procesorskih sistema i tradicionalnih mikrokontrolera. Zbog toga što je Nios II procesorski sistem konfigurabilan, memorija i periferije variraju od sistema do sistema. Da bi sebi obezbedilo pristup memoriji i I/O uređajima, Nios II jezgro sadrži neku, ili čak sve od sledećih nabrojanih stavki:

Instruction master port - Avalon master port koji je povezan sa memorijom instrukcija preko Avalon prekidačke strukture

Instruction cache – brza keš memorija za instrukcije unutar Nios II jezgra

Data master port – Avalon master port za povezivanje memorije podataka i periferija preko Avalon prekidačke strukture

Data cache – brza keš memorija podataka unutar Nios II jezgra

Tightly coupled instruction or data memory port – interfejs za povezivanje sa brzim memorijama koje su van Nios II jezgra

Nios II arhitektura skriva detalje hardvera od programera, tako da oni mogu da razvijaju Nios II aplikacije bez spoznaje hardverske implementacije. Detalji koji utiču na programiranje su diskutovani u trećem poglavlju ovog rada.

Organizacija memorije i I/O uređaja

Page 22: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Arhitektura procesora Nios II procesor

14

Slika 2–2. Nios II organizacija memorije i I/O uređaja

Instruction i Data bas

Nios II arhitektura poseduje poseban bas za instrukcije i poseban za podatke, klasifikujući to kao “Harvard arhitekturu”. Obadva basa su implementirana kao Avalon master portovi koji odgovaraju Avalon™ specifikaciji interfejsa. Data master port je povezan sa obadve memorije i periferijskim komponentama, dok je instruction master port povezan samo sa memorijskim komponentama.

Potražite priručnik Avalon Interface Specification za sve dodatne informacije o Avalon interfejsu. Pristup memoriji i periferijama

Nios II arhitektura predviđa memorijski mapiran pristup I/O uređajima. I memorija podataka i periferije su mapirane u adresnom prostoru data master-porta.

Page 23: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Arhitektura procesora Nios II procesor

15

Nios II arhitektura koristi Little endian memorijski zapis. Little endian je način zapisa podataka u memoriji, tako da je na višoj adresi i viši bajt mamorijske reči, ili kažemo da su bajtovi veće težine na višim adresama. Primer: Neka je dat podatak 0xABCD. On se zapisuje u memoriji na način koji  je prikazan na sledećoj slici, pri čemu  je adresa 100 početna adresa podatka u memoriji.  

Nios II arhitektura ne specificira ništa što je u vezi postojanja memorije i periferija; veličina, tip i povezivanje memorije i periferija su sistemski zavisni. Tipično, Nios II procesorski sistem sadrži skup brzih on-chip memorija i sporih off-chip memorija. Periferijski uređaji se tipično nalaze na čipu, mada takođe postoje i interfejsi ka off-chip periferijama.

Instruction Master port

Nios II bas za instrukcije je implementiran kao 32-bitni Avalon master port. Instruction master port ima jednostavnu funkciju: donosi instrukcije koje će procesor izvršiti. On ne vrši nikakve operacije upisivanja. Instruction master port spada u grupu Avalonovih master portova sa protočnom strukturom. Upotrebom protočne strukture povećava se ukupna frekvencija sistema fMAX. Instruction master port pribavlja uvek 32 bita podataka. On se oslanja na Avalonovu prekidačku strukturu i izraženu dinamiku basa. always retrieves 32 bits of data. Pomoću dinamički dimenzionisanog basa, svaka instrukcija se prenosi kao cela instrukciona reč, bez obzira na “širinu” ciljne memorije. Stoga, programi ne moraju da budu upoznati sa “širinom” memorije u Nios II procesorskom sistemu. Nios II arhitektura poseduje on-chip keš memoriju uz pomoć koje povećava brzinu pristupanja instrukcijama, kada se one nalaze na sporijim memorijama. Pogledajte naslov “Keš memorije” koji sledi nešto kasnije. Takođe su na raspolaganju i tzv. tightly coupled memorije, koje garntuju izizetno malo kašnjenje prilikom pristupa kada su u pitanju on-chip memorije smeštene van procesorskog jezgra. Pogledajte naslov “Tightly Coupled memorije” koji je obrađen nešto kasnije.

Page 24: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Arhitektura procesora Nios II procesor

16

Data Master port Nios II bas podataka je implementiran kao 32-bitni Avalon master port. Data master port obavlja dve funkcije:

Čita podatke iz memorije ili sa periferija kada procesor izvršava load instrukciju

Upisuje podatke u memoriju ili na periferne uređaje kada procesor izvršava instrukciju store

Byte-enable signali master porta određuju koja će od četiri bajt-putanje da bude upisana za vreme store operacije. Data master port ne podržava protočni transfer podataka, jer nije moguće naslutiti adrese podataka ili nastaviti sa izvršavanjem ako podaci nisu već pribavljeni.

Deljiva memorija za instrukcije i podatke

Često instruction i data master portovi dele istu memoriju u kojoj se nalaze zajedno i instrukcije i podaci. Dok procesorsko jezgro ima odvojen bas za podatke i bas za instrukcije, ukupan Nios II procesorski sistem može da se predstavi kao sistem koji poseduje jedinstven, deljivi bas instrukcija/podataka, prema spoljnem svetu. Spoljni izgled Nios II procesorskog sistema zavisi od memorije i periferija u sisitemu i Avalonove prekidačke strukture. Keš memorija

Nios II arhitektura poseduje keš memorije i za instruction master port (instruction cache) i za data master port (data cache). Keš memorija se nalazi na čipu i to kao sastavni deo Nios II procesorskog jezgra. Upotrebom ove strukture povećavamo brzinu pristupa memoriji celog Nios II procesorskog sistema, koji u svom sastavu koristi i sporu off-chip memoriju, kakva je na primer SDRAM memorija namenjena za smeštanje programa i podataka. Instrukcioni i data keš su uvek dostupni u toku rada, ali postoje softverske metode kojima se može zaobići data keš. Upravljanje kešom kao i njegova povezanost su dirigovane od strane softvera. Skup instrukcija Nios II procesora poseduje i instrukcije koje su zadužene za keš-menadžment.

Page 25: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Arhitektura procesora Nios II procesor

17

Opcije konfigurisanja keš memorije Upotreba keš memorije je opciona. Potreba za visokim memorijskim performansama je određena samom aplikacijom, tj. funkcijom koju će naš sistem da obavlja. Mnogim aplikacijama je dovoljno najmanje moguće procesorsko jezgro i mogu da učine usupak performansama zarad veličine. Nios II procesorsko jezgro može da sadrži jednu, obadve, ili nijednu keš memoriju. processor core may include one, both, or neither of the cache memories. Pored toga, kod jezgara koja sadrže data i/ili instrukcioni keš, veličina ovih memorija je podesiva od strane korisnika. Uključivanje keš memorije nema uticaja na funkcionalnost programa, ali utiče itekako na brzinu kojom procesor pribavlja instrukcije i čita/upisuje podatke.

Efekti upotrebe keš memorije Efikasnost keš memorije u podizanju performansi sitema je bazirana na sledećim premisama:

regularna memorija se nalazi van čipa i vreme pristupa joj je daleko duže u poređenju sa on-chip memorijom

najveća kritična petlja instrukcija je manja nego kod instrukcionog keša

najveći blok kritičnih podataka je manji nego kod data keša Optimalna konfiguracija keša je, kao što smo već napomenuli, određena konkretnom aplikacijom, mada projektanti mogu da donesu odluku da formiraju konfiguraciju koja će biti efikasna za širok spektar primena. Na primer, ako Nios II procesorski sistem uključuje samo brze, on-chip memorije, ne mora da znači da će instrukciona i data keš memorija poboljšati performansesistema sama po sebi. Takođe, ako je kritična petlja programa 2Kbajta, a veličina instrukcionog keša sa druge strane 1Kbajt, instrukcioni keš neće povećati brzinu izvršavanja programa. Zapravo, performanse će se verovatno i pogoršati.

Ako neka aplikacija zahteva da određeni podaci, ili određeni deo koda, budu stalno dostupni u keš memoriji, tightly coupled memorija može predstavljati mnogo bolji izbor. Pogledajte u nastavku temu “Tightly Coupled memorije”, radi detaljnijeg uvida u svojstva ovog tipa on-chip memorije.

Page 26: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Arhitektura procesora Nios II procesor

18

Metode zaobilaska keša Nios II arhitektura poseduje instrukcije kao što su ldio i stio kojima se može zaobići data keš i upotrebiti Avalon data transfer radi specificiranja neke druge adrese. Dodatne, tzv. cache bypass metode, se mogu primeniti u zavisnosti od implementacije procesorskog jezgra. Neka Nios II procesorska jezgra podržavaju mehanizam nazvan bit-31 cache bypass, koji  im služi da zaobiđu keš,  a  koji  funkcioniše  u  zavisnosti  od  vrednosti  bita  najveće težine u specifikaciji adrese. Tightly Coupled memorije

Tightly coupled memorije pružaju nizak nivo kašnjenja kada im pristupamo i pogodne su za sve aplikacije kod kojih je vreme izvršavanja kritično. U poređenju sa keš memorijama, tightly coupled memorije donose sledeće prednosti:

performanse su slične kao i kod keš memorija softver može osigurati da kritični delovi koda, ili podaci

budu smešteni baš u ovom tipu memorije u realnom vremenu nema suvišnog zadržavanja, koje se

javlja prilikom učitavanja, poništavanja ili oslobađanja memorije

Fizički gledano, tightly coupled memorijski port je zaseban master port Nios II procesorskog jezgra, koji je istovetan instrukcionom ili data master portu. Nios II jezgro može da sadrži jednu, nekoliko, ili nijednu tightly coupled memoriju. Nios II arhitektura podržava upotrebu tightly coupled memorija za pristup kako instrukcijama, tako i podacima. Svaki tightly coupled memorijski port je direktno povezan sa tašno jednom memorijom, koja ima garantovano nisko i fiksno vreme kašnjenja. Memorije su, topološki gledano, eksterne u odnosu na samo jezgro Nios II procesora, ali se snajčešće nalaze na samom čipu, te ih još uvek možemo klasifikovati i kao on-chip memorije.

Pristupanje Tightly Coupled memoriji Tightly coupled memorije zauzimaju normalni adresni prostor, isto kao i ostali memorijski uređaji povezani preko Avalon prekidačke strukture.

Page 27: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Arhitektura procesora Nios II procesor

19

Program pristupa tightly coupled memoriji koristeći se regularnim, load i store instrukcijama. Sa tačke gledišta softvera, ne postoji nikakva razlika u pristupu tightly coupled memoriji u poređenju sa bilo kojom drugom memorijom.

Efekti korišćenja Tightly Coupled memorije Sistem kože da koristi tightly coupled memorije da bi postigao performanse po pitanju pristupa specifičnim sekcijama koda ili podataka. Na primer, aplikacije sa očekivanim čestim interaptima, mogu da podele kod za upravlanje izuzecima u tightly coupled memoriji, kako bi minimizirali kašnjenje prilikom prekida. Slično, procesorski zahtevne aplikacije u kojima postoji digitalno procesiranje signala (DSP - digital signal processing), mogu da koriste tightly coupled memorije za privremeno smeštanje podataka kako bi ostvarile što je moguće brži pristup.

Ako su potrebe aplikacije za memorijom takve, da se ne mogu u potpunosti zadovoljiti onim što nam je na rapolaganju na samom čipu, onda postoji mogućnost da upotrebimo tightly coupled memorije isključivo za kod ili podatke. Veće aplikacije moraju selektivno da odaberu šta će da smeste u tightly coupled memoriju, kako bi maksimizirali odnos cena/performanse sistema.

Označavanje adrese Postoje tri adrese , koje su sastavni deo CPU-a (CPU - centralna procesorska jedinica), a koje zaslužuju da ih ovde pomenemo:

reset address exception address break handler address

Programeri pristupaju memorijama i perifernim uređajima koristei makroe. Zbog toga, flrksibilno označavanje adresa ne utiče na dizajnere aplikacija. Nios II arhitektura raspolaže sa JTAG modulom za debagovanje, što pruža onima koji rade na razvoju aplikacija, da na samom čipu, preko udaljenog PC računara, kontrolišu stanja procesora. Softverski alati za debagovanje bazirani na PC-u, komunicaraju preko JTAG ovog modula i pružaju olakšice kao što su:

JTAG modul za debagovanje

Page 28: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Arhitektura procesora Nios II procesor

20

smeštanje (prebacivanje) programa u memoriju startovanje i prekidanje izvršavanja postavljanje tačaka prekida i nadgledanja analiziranje registara i memorije prikupljanje podataka koji su rezultat trenutnih

izvršavanja Na strani procesora, modul za debagovanje je povezan sa signalima koji su unutar procesorskog jezgra. Svi resursi sistema vidljivi procesoru u supervizor režimu rada, dostupni su i ovom modulu.

Modul za debagovanje vrši kontrolu nad procesorom šaljući mu hardverski signal prekida, ili izvršavanjem instrukcije prekida, njenim predhodnim upisivanjem u programsku memoriju. U oba ova slučaja, procesor prebacuje controlu na rutinu koja se nalazi na adresi prekida.

Meka procesorska jezgra (soft-core jezgra) kakvo je i Nios II jezgro, nude jedinstvene mogućnosti kada je debagovanje u pitanju, naprednije nego kod tradicionalnih, fiksnih procesora. Soft-core priroda Nios II procesora pruža projektantima mogućnost, da uz pomoć modula za debagovanje, prečišćavaju sistem od grešaka i usavršavaju ga u toku razvijanja, uključujući sve mogućnosti koje on predviđa, a da ga kasnije potpuno uklone i time sačuvaju, odnosno povećaju logičke resurse na čipu. Kod verzije sistema koja je spremna za masovnu proizvodnju, JTAG modul za debagovanje, može bilo funkcionalno, bilo i fizički da se odstrani iz sistema.

U nastavku su opisane hardverske sposobnosti Nios II JTAG modula za debagovanje. Upotreba svih hardverskih mogućnosti zavisi od firmvera, koji se definiše uz pomoć softverskog Nios II IDE, a kojim se uspostavljaju veze sa ciljnim procesorom i kontroliše proces debagovanja.

JTAG namensko povezivanje JTAG namensko povezivanje se odnosi na mogućnost povezivanja CPU-a preko standardnih JTAG pinova na Alterinom FPGA čipu. Ovakav vid povezivanja pruža osnovne mogućnosti pokretanja i prekidanja izvršenja procesora, kao i pregled i editovanje sadržaja redistara i memorije.

Page 29: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Arhitektura procesora Nios II procesor

21

Prebacivanje i izvršavanje programa Prebacivanje programa se odnosi na potrebu da prenesemo izvršni kod programa i podatke u memoriju procesora preko JTAG konekcije. Nakon uspešnog prebacivanja programa u memoriju, JTAG modul za debagovanje može da napusti “debag-mod” i preusmeri svoju aktivnost na pokretanje izvršnog koda.

Softverske tačke prekida

Softverskim tačkama prekida je moguće podesiti prekide u instrukcijama koje se nalaze u RAM memoriji. Softverskim mehanizmom za generisanje tačaka prekida, upisujemo prekidne instrukcije u izvršni kod koji se nalazi u RAM-u. Kada procesor naiđe na prekidnu instrukciju, kontrola se direktno prebacuje na JTAG modul za debagovanje. Hardverske tačke prekida

Hardverske  tačke  prekida  pružaju  mogućnost  postavljanja prekida  nad  instrukcijama  koje  se  nalaze  na  postojanim memorijama,  kakva  je  na  primer  fleš  memorija.  Mehanizam hardverskog  prekida  neprekidno  prati  procesor  i  njegovu trenutnu adresu instrukcije. Ako se adresa instrukcije poklapa sa adresom hardverskog prekida, onda JTAG modul za debagovanje preuzima kontrolu od procesora.   Hardverske prekide je moguće implementirati zahvaljujući mogućnosti hardverskog okidanja koju poseduje JTAG modul za debagovanje.

Hardversko okidanje

Hardversko okidanje, koje aktivira akciju debagovanja, je bazirano na uslovima koji vladaju na magistrali (kako instrukcija tako i podataka), u toku izvršavanja programa u realnom vremenu. Okidanja mogu da učine mnogo više od zaustavljanja procesorskog izvršavanja. Na primer, okidanje može da se upotrebi za pribavljanje podataka koji predstavljaju trenutne vrednosti procesorske obrade.

Page 30: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Arhitektura procesora Nios II procesor

22

U tabeli 2–2 je dat spisak svih uslova koji mogu izazvati okidanje. Uslovi za hardversko okidanje su bazirani na instrukcionoj ili magistrali (basu) podataka.

Tabela 2–2. Uslovi okidanja

Uslov Bas (1) Opis

Specific address D, I Okidanje kada bas pristupa specificiranoj adresi  

Specific data value D

Okidanje kada se specificirana vrednost podatka pojavi na magistrali.  

Read cycle D Okidanja kada je na magistrali ciklus čitanja  

Write cycle D Okidanje kada je na magistrali u toku ciklus upisivanja.  

Armed D, I Okidanje jedino posle nekog utvrđenog okidnog događaja.  

Range D Okidanje na opseg adresnih vrednosti, vrednosti podataka, ili na 

obadva.  

Napomena: (1) “I” označava instrukcionu magistralu, “D” označava magistralu podataka.

Kada se uslov za okidanje  javi u  toku procesorskog  izvršavanja, JTAG modul pokreće akciju, kao što  je zaustavljanje izvršenja, ili početak uzorkovanja  (trace capture). Tabela 2–3 sa sledeće strane, prikazuje  akcije  okidanja  koje  podržava  Nios  II  JTAG  debag modul.  

Page 31: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Arhitektura procesora Nios II procesor

23

Utvrđeno okidanje

JTAG debag modul poseduje mogućnost okidanja sa dva nivoa, koju nazivamo utvrđeno okidanje. Utvrđeno okidanje dopušta JTAG debag modulu da reaguje na događaj B, ali jedino ako se već desio događaj A. U ovom primeru, događaj A dovodi do akcije okidanja, koja omogućava okidanje za događaj B.

Tabela 2–3. Akcije okidanja

Akcija Opis Break Zaustavlja izvršavanje i prebacuje kontrolu na JTAG debag modul.  External trigger Zahtevanje okidnog  izlaznog  signala. Ovakav okidni  izlaz može da 

se koristi, na primer, za okidanje eksternog logičkog analizatora.  

Trace on Uključivanje prikupljenih tragova.  Trace off Isključivanje prikupljenih tragova.  Trace sample (1) Čuvanje jednog uzorka magistrale za kopiranje bafera.  Arm Dozvola utvrđenog okidanja.  

Napomena: (1) Jedino stanje na magistrali podataka može da pokrene ovu akciju.

Okidanje na opseg vrednosti

JTAG debag modul može da okida i na opseg podataka ili opseg vrednosti adresa na magistrali podataka. Ovaj mehanizam koristi zajedno dva hardverska okidanja kako bi postigao potrebne uslove, koji se aktiviraju na skup vrednosti iz specificiranog opsega.

Page 32: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

24

3. Način programiranja

U ovom poglavlju je opisan način programiranja Nios® II procesora, čime su zaokružena njegova svojstva na asemblerskom nivou. Detaljno su objašnjene sledeće celine koje navodimo, a koje su predmet posebnog interesovanja jednog programera:

Registri opšte namene Kontrolni registri Supervizor režim rada u odnosu na privilegije korisničkog

moda Hardverski potpomognuto debagovanje Procesiranje izuzetaka Hardverski prekidi Neizvedene instrukcije Keš memorija Reset stanje procesora Kategorije instrukcija Dodate instrukcije

Ovde nisu obrađeni softverski alati za razvoj programa na visokom nivou. Pogledajte priručnik “Nios II Software Developer’s Handbook” za sve dodatne informacije vezane za razvoj softvera.

Registri opšte namene

Nios  II  arhitektura  raspolaže  sa  trideset  dva  32‐bitna  registra opšte namene i to su registri r0 do r31. Pogledajte tabelu 3–1 na sledećoj  strani.  Neki  registri  imaju  imena  koja  asembler prepoznaje.  Zero‐registar (r0) uvek  vraća  vrednost  0,  tako  da upisivanje  nula  nema  efekta. Ra registar (r31) čuva i vraća adresu koja se koristi za poziv procedure i implicitno mu se pristupa preko call i ret instrukcija. C i C++ kompajleri koriste opšte prihvaćenu proceduru poziva, dodeljujući posebno značenje registrima r1 do r23 i r26 do r28. Pristupanje određenim registrima, kao što su recimo et(r24), bt(r25) i ba (r30), je ograničeno određenom modom izvršavanja.

Uvod

Page 33: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Način programiranja Nios II procesor

25

Tabela 3–1. Nios II fajl registri

Registri opšte namene

Registar Ime Funkcija Registar Ime Funkcija r0 zero 0x00000000 r16 r1 at Assembler Temporary r17 r2 Return Value r18 r3 Return Value r19 r4 Register Arguments r20 r5 Register Arguments r21 r6 Register Arguments r22 r7 Register Arguments r23 r8 Caller-Saved Register r24 et Exception Temporary (1) r9 Caller-Saved Register r25 bt Breakpoint Temporary (2) r10 Caller-Saved Register r26 gp Global Pointer r11 Caller-Saved Register r27 sp Stack Pointer r12 Caller-Saved Register r28 fp Frame Pointer

r13 Caller-Saved Register r29 ea Exception Return Address (1)

r14 Caller-Saved Register r30 ba Breakpoint Return Address (2)

r15 Caller-Saved Register r31 ra Return Address Napomena u vezi tabele 3–1: (1) Ovaj registar nije dostupan u korisničkom modu (user mode). (2) Ovaj registar nije dostupan u korisničkom i supervizor modu (supervisor mode). Njega

isključivo koristi JTAG debag modul.

Ugrađeno je šest 32-bitnih kontrolnih registara i to ctl0 do ctl5. Svi kontrolni registri imaju imena koja asembler prepoznaje. Kontrolnim registrima se pristupa drugačije nego registrima opšte namene. Postoje posebne instrukcije, rdctl i wrctl, koje predstavljaju jedini način za čitanje i upisivanje u ove registre. Kontrolnim registrima može da se pristpa isključivo u “supervizor modu”; oni nisu dostupni u “korisničkom modu”. Detalji vezani za kontrolne registre su prikazani u tabeli 3–2. Za detalje u vezi odnosa između kontrolnih registara i procesiranja izizetaka, pogledajte sliku 3–2, koja je na strani 33.

Kontrolni registri

Page 34: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Način programiranja Nios II procesor

26

status (ctl0) Vrednost u status registru određuje stanje u kome se Nios II procesor nalazi. Svi statusni bitovi se brišu nakon resetovanja procesora. Pogledajte stavku “Reset stanje procesora” u nastavku. Definisana su dva posebna bita: PIE i U, što je prikazano u tabeli 3-3.

Tabela 3–3. Bitovi status registra

Bit Opis PIE bit PIE je procesorov interrupt‐enable bit. Kada je PIE bit jednak 0, spoljni 

prekidi su ignorisani. Kada je PIE bit jednak 1,  eksterni prekidi se mogu opslužiti, u zavisnosti od vrednosti ienable registra.  

U bit U bit označava mod u kome se procesor nalazi. 1 označava “korisnički mod”; 0 označava “supervizor mod”.  

estatus (ctl1)

Registar estatus čuva zapamćenu kopiju status registra za vreme procesiranja izuzetka. Definisana su nova dva bita: EPIE i EU. Ovi bitovi imaju iste vrednosti kao i bitovi PIE i U, koji su već opisani u tabeli 3–3.

Kontroler izuzetaka može da zatraži uvid u stanje estatus registra, kako bi utvrdio stanje procesora pre pojave izuzetka. Kada je opslužen prekid, eret instrukcija navodi procesor da iskopira vrednost estatus registra natrag u status registar, vraćajući mu time vrednost koju je imao pre pojave izuzetka. Pogledati temu “Procesiranje izuzetaka” u nastavku.

Tabela 3–2. Kontrolni registri i bitovi

Registar Ime 31…2 1 0

ctl0 status Reserved U PIE

ctl1 estatus Reserved EU EPIE

ctl2 bstatus Reserved BU BPIE

ctl3 ienable Interrupt-enable bits ctl4 ipending Pending-interrupt bits ctl5 cpuid Unique processor identifier

Page 35: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Način programiranja Nios II procesor

27

bstatus (ctl2)

Registar bstatus čuva zapamćenu kopiju status registra za vreme procesiranja debagovanja. Za ovu namenu su definisana još dva bita: BPIE i BU. Ovo su zapamćene vrednosti bitova PIE i U, koji su već definisani ranije. Kada nastane prekid, vrednost status registra  se  kopira  u bstatus registar. Koristeći bstatus registar, vrednost status registra može da se vrati na vrednost koju je on imao pre nastanka prekida. Pogledajte naslov “Mod debagovanja” koji je nešto kasnije opisan.  

ienable (ctl3) Registar ienable kontroliše obradu eksternih hardverskih prekida. Svaki bit ovog registra odgovara jednom od ulaza za interapte, irq0 do irq31. Bitska vrednost 1 označava da je odgovarajući prekid prisutan, dok vrednost nula ukazuje da je on zabranjen.

Pogledajte naslov “Obrada izuzetaka” koji se nalazi na strani 31.

ipending (ctl4)

Vrednost ipending registra ukazuje koji su interapti u iščekivanju. Vrednost 1 n-tog bita, označava da je odgovarajući irqn ulaz prihvaćen i da je odgovarajući prekid prisutan u ienable registru. cpuid (ctl5)

Registar cpuid čuva u sebi statičnu vrednost koja jednoznačno identifikuje procesor u multi-procesorskim sistemima. register holds a static value that uniquely identifies the processor in a multi-processor system. Vrednost cpuid registra je određena u toku generisanja sistema. value is determined at system generation time. Upisivanje u cpuid registar nema nikakvog efekta.

Page 36: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Način programiranja Nios II procesor

28

Pogledajte naslov “Obrada izuzetaka” koji se nalazi na strani 31.

Nios II procesor ima tri moda rada:

zaštićeni mod korisnički mod (user mod) mod debagovanja (debug mode)

Sledeće sekcije definišu modove i prelaze između modova. The following sections define the modes and the transitions between modes. Ova diskusija uvodi razliku između sistemskog koda i aplikacionog koda:

Sistemski kod (System code) sadrži rutine koje izvršavaju funkcije na sistemskom nivou, kao što je operativni sistem na primer (OS). Sistemski kod je generalno dostupan kao deo run-time biblioteke ili jezgra operativnog sistema. Sistemski kod se tipično izvršava u supervizor režimu.

Aplikacioni kod (Application code) sadrži rutine koje rade na vrhu servisa koje pruža sistemski kod. Aplikacioni kod generalno pišu programeri stvarajući korisničke aplikacije, odnosno programe.

Zaštićeni mod U zašzićenom modu, sve definisane funkcije procesora su dostupne i neograničene. Generalno, sistemski kod se izvršava u zaštićenom modu. Međutim, jednostavniji programi, koji ne koriste operativni sistem, mogu da ostanu u zaštićenom modu neograničeno dugo, a aplikacioni kod će se bez problema i u ovom režimu izvršavati.

Registri opšte namene bt(r25) i ba(r30) nisu dostupni u zaštićenom modu. Programi nisu sprečeni od čuvanja vrednosti u ovim registrima, pa ako to rade, vrednosti bi mogle da budu promenjene od strane debag-moda. Registar bstatus (ctl2) je takođe neraspoloživ u zaštićenom modu. Kada je procesor u zaštićenom modu, U bit ima vrednost 0. Procesor ulazi u zaštićenom režim neposredno nakon resetovanja sistema.

Režimi ili modovi rada

Page 37: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Način programiranja Nios II procesor

29

Korisnički mod

Korisnički mod pruža  ograničen  skup moguućnosti  supervizor‐moda.  User mode provides a restricted subset of supervisor-mode functionality. On obezbeđuje veću pouzdanost za supervizorske višestruke zadatke operativnog sistema. Sistemski kod može da izabere prelazak u korisnički mod, pre nego što prepusti kontrolu aplikacionom kodu. Neke procesorske mogućnosti nisu dostupne u korisničkom modu, zbog čega će pokušaj da im se pristupi, generisati izuzetak. Ni kontrolni registri, kao što smo već pomenuli, nisu dostupni u korisničkom modu. The control registers are not available in user mode. Pored njih, nisu dostupni ni sledeći registri opšte namene: et(r24), bt(r25), ea(r29), i ba(r30). Izvršavanje programa u korisničkom modu nije uskraćeno za čuvanje vrednosti u ovim registrimaPrograms executing in user mode are not prevented from storing values in these registers, ali ako oni to čine, vrednosti mogu biti promenjene od strane prekidnih rutina u supervizor modu ili od strane debag-moda. Kada je procesor u korisničkom modu, upotreba bilo koje od sledećih instrukcija će prouzrokovati izuzetak:

rdctl wrctl bret eret initd initi

Kada je procesor u korisničkom modu, vrednost U bita je 1.   Implementacija procesora i podrška korisničkom modu Neke implementacije Nios II procesora ne podržavaju korisnički mod. Kod takvih jezgra, svi kodovi se izvršavaju u sepervizor modu i vrednost U bita je uvek 0. Zbog toga, aplikacioni kod nikada nećemo napisati tako da zavisi od partikularne vrednosti U bita, kako bi programi mogli uvek korektno da se izvršavaju. Aplikacioni kod se podjednako uspešno izvršava i u korisničkom i u supervizor režimu rada.

Page 38: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Način programiranja Nios II procesor

30

Debag-mod

Debag-mod se koristi od strane softverskih alata za debagovanje da bi se definisale tačke prekida (breakpoints) i tačke nadgledanja (watch-points). U ovom modu se nikada ne izvršavaju sistemski niti aplikacioni kod. Procesor ulazi u debag-mod jedino nakon break instrukcije, ili posle forsiranja prekida preko hardvera, uz pomoć JTAG modula. U debag-modu su sve funkcije procesora dostupne i neograničene softverskim alatima za debagovanje. U ovom modu, vrednost U bita je 0. Za sve dodatne informacije u vezi ove teme, pogledajte naslov “Obrada prekida” na strani 37. Promena režima rada Dijagram sa slike 3–1 prikazuje prelaze između korisničkog, zaštićenog i debag-režima ili moda rada.

Slika 3–1. Prelasci između radnih modova

Nakon reseta, procesor otpočinje sa radom u zaštićenom modu. Program se može prebaciti iz supervizor moda u korisnički mod upotrebom instrukcije eret (exception return). Ova instrukcija kopira vrednost estatus registra (ctl1) u status registar (ctl0), a zatim prebacuje kontrolu na adresu u ea registru (r29). Da bi smo odmah nakon reseta ušli u korisnički mod, sistemski kod mora da namenski postavi sadržaj registara estatus i ea i izvrši eret instrukciju.

Page 39: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Način programiranja Nios II procesor

31

Procesor ostaje u korisničkom modu sve dok se ne pojavi neki izuzetak, od čijeg će trenutka nastanka procesor ponovo ući u zaštićeni mod. Svi izuzeci postavljaju vrednost U bita na 0 i pamte sadržaj status registra u registar estatus. Uzevši da prekidne rutine ne modifikuju estatus registar, upotreba instrukcije eret za povratak od izuzetka, će nas vratiti u mod u kome smo bili pre njegove pojave. Procesor ulazi u debag-mod jedino ako je tamo usmeren od strane softverskog alata za debagovanje. Sistemski i aplikacioni kod nemaju kontrolu nad procesorom kada se on nalazi u ovom modu. Procesor se uvek vraća u svoje pređašnje stanje kada napušta debag-mod. Za više informacija pogledajte temu “Obrada izuzetaka” koja je sledi. Izuzetak predstavlja promenu kontrole normalnog toka izvršavanja programa, prouzrokovanu pojavom događaja koji zahteva neodloživu pažnju, bio on interni ili eksterni. Obrada, ili procesiranje izuzetaka je postupak opsluživanja nekog izuzetka, a nakon toga i vraćanja u stanje izvršavanja u kome je procesor bio pre njegove pojave (pre-exception state).

Izuzetak uzrokuje da procesor automatski izvrši sledeće korake:

1. Kopira sadržaj status registra (ctl0) u estatus

registar (ctl1), pamteći pritom svoj pre-exception status 2. Obriše U bit status registra, prevodeći procesor u

supervizor mod 3. Obriše PIE bit of status registra, onemogućavajući time

eksterne procesorske prekide 4. Upiše adresu instrukcije nakon izuzetka u ea registar

(r29)

5. Prebci izvršavanje na adresu exception handler-a (exception handler - upravljač izuzeća) koji utvrđuje uzroke prekida

Adresa exception handler-a je postavljena u toku generisanja sistema. U toku rada, ova adresa je fiksna i ne može se promeniti od strane softvera. Programeri joj ne mogu direktno pristupiti i zato mogu pisati programe bez ikakvih informacija o njoj.

Obrada izuzetaka

Page 40: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Način programiranja Nios II procesor

32

Exception handler je rutina koja utvrđuje uzroke svakog izuzetka, a onda upućuje na određenu exception-rutinu koja odgovara prekidu.

Tipovi izuzetaka

Nios II izuzeci spadaju u jednu od sledećih kategorija:

hardverski prekid softverska zamka izvedena instrukcija ostalo

U sledećim sekcijama je detaljno opisan svaki od navedenih tipova izuzetaka. Hardverski prekid

Neki eksterni izvor, kao što je na primer neki periferni uređaj, može da zatraži hardverski interapt, pojavljujući se sa zahtevom na nekom od 32 procesorova ulaza koji su namenjeni zahtevima za prekid, irq0 do irq31. Hardverski prekid je generisan, ako i samo ako je svaki od sledeća tri uslova ispunjen:

PIE bit u status registru (ctl0) ima vrednost 1 neki interrupt-request ulaz, irqn, je prihvaćen odgovarajući n –ti bit u ienable registru (ctl3) je 1.

Prilikom hardverskog prekida, PIE bit se setuje na vrednost 0, onemogućavajući buduće prekide. Vrednost ipending registra (ctl4) ukazuje na to koji je prekidni zahtev (IRQ) u toku. Slika 3–2 na strani 33, prikazuje odnos između registara ipending, ienable, PIE bita i generisanja nekog interapta.

Page 41: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Način programiranja Nios II procesor

33

Slika 3–2. Odnos između registara ipending, ienable, PIE bita i hardverskog prekida

Programska exception-rutina određuje koji od tekućih prekida ima najveći priotitet za obradom, a zatim prebacije kontrolu na odgovarajuću prekidnu servisnu rutinu (ISR-interrupt service routine). ISR mora da spreči prekid da bude dalje vidljiv (bilo njegovim uklanjanjem sa izvora ili maskiranjem koristeći ienable registar) pre povratka i/ili pre ponovne dozvole PIE-bita. ISR mora takođe i da sačuva vrednosti registara estatus (ctl1) i ea (r29) pre ponovne dozvole PIE-bita. Prekidi mogu da se ponovo aktiviraju upisivanjem vrednosti 1 za PIE-bit i da se na taj način dozvoli trenutnom ISR-u da bude isprekidan. Obično exception-rutine uređuju sadržaj ienable registra tako da IRQ-ovi sa jednakim ili nižim prioritetom budu blokirani pre nego što im se oslobađanjem resursa ponovo ne ukaže mogućnost da deluju.

Page 42: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Način programiranja Nios II procesor

34

Pogledajte naslov “Ugnježdeni izuzeci” na strani 36.

Softverska zamka

Kada program izda instrukciju trap, generiše se izuzetak koji nazivamo “softverska zamka”. Programi obično izdaju ovakvu instrukciju kada su im potrebne usluge operativnog sistema. Exception handler operativnog sistema određuje uzroke “zamke” i celishodno na nju odgovara.

Izvedene instrukcije

Kada procesor dobije validnu instrukciju, koja pritom nije implementirana u hardveru, generiše se izuzetak “neugrađene instrukcije”. Exception handler utvrđuje koja je instrukcija generisala izuzetak. Ako instrukcija nije implementirana hardverski, dalje upravljanje prelazi na exception-rutinu koja emulira datu operaciju softverski. Pogledajte naslov “Potencijalne neugrađene instrukcije” na strani *.

Napominjemo da pojam “izvedena instrukcija” (“unimplemented instruction”) ne znači i “nevažeća instrukcija”. Ponašanje procesora prema nedefinisanoj, nevažećoj instrukciji, zavisi od tipa Nios II jezgra. Kod većine implementacija Nios II jezgra, izvršavanje nevažeće instrukcije proizvodi nedefinisan rezultat.

Ostali izuzeci

U predhodnom tekstu smo opisali sve tipove izuzetaka koji su bili definisani od strane Nios II arhitekture u trenutku njenog objavljivanja. Međutim, neke implementacije procesora mogu da generišu izuzetke koji ne spadaju niti u jednu od ranije već pomenutih kategorija. Na primer, buduće implementacije mogu da ponude modul za upravljanje memorijom (MMU-memory management unit) koji generiše pristup nasilnim izuzetkom. Zbog toga robustni exception handler treba da pruži siguran odgovor (kao što je izdavanje upozorenja) u slučaju da ne može tačno da odredi uzrok izuzetka.

Page 43: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Način programiranja Nios II procesor

35

Određivanje uzroka izuzetka

Upravljač izuzecima - exception handler, mora da utvrdi uzrok svakog izuzetka, a zatim prebaci dalje upravljanje na odgovarajuću prekidnu rutinu. Slika 3–3 prikazuje kako teče proces kojim se ispituje izvor izuzetka.

Slika 3–3. Proces utvrđivanja uzroka izuzetka

Ako EPIE bit estatus registra (ctl1) ima vrednost 1 i vrednost ipending registra (ctl4) je različita od nule, izuzetak je prouzrokovan od strane eksternog hardverskog prekida. U suprotnom, izuzetak je mogao da nastane kao posledica “softverske zamke” ili neke izvedene instrukcije. Da bi smo raspoznali da li je u pitanju “softverska zamka” ili izvedena instrukcija, pročitaćemo instrukciju na adresi ea–4. Ako se na toj adresi nalazi instrukcija trap, izuzetak je tipa “softverska zamka”. Ako je instrukcija na adresi ea-4 neka od instrukcija

Page 44: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Način programiranja Nios II procesor

36

koja se može implementirati softverski, izuzetak je prouzrokovan “izvedenom instrukcijom”. Pogledati naslov “Potencijalne izvedene instrukcije” na strani 46. Ako nijedan od pomenutih uslova nije ispunjen, izuzetak je nepoznatog tipa.

Ugnježdeni izuzeci Prekidne rutine moraju da povedu posebnu pažnju pre:

dodele trap instrukcije dodele izvedene instrukcije ponovne dozvole hardverskog prekida

Pre preuzimanja bilo koje od ovih akcija, prekidne rutine moraju da sačuvaju vrednosti estatus (ctl1) i ea (r29) registara, kako bi ih oni mogli povratiti na pravi način prilikom završetka rada sa rutinom.

Povratak od izuzetka Instrukcija eret se koristi za nastavljanje izvršenja programa sa adrese na kojoj je bio pre pojave izuzetka. nstruction is used to resume execution from the pre-exception address. Osim registra et (r24), svaki od registara koji su bili modifikovani za vreme procesiranja izuzetka, mora da bude obnovljen od prekidne rutine pre napuštanja procesiranja izuzetka. Kada izvršava eret instrukciju, procesor:

1. kopira sadržaj registra estatus(ctl1) u registar status(ctl0)

2. prebacuje izvršenje programa na adresu koja je u ea

registru (r29). Povratak adrese Povratak adrese iziskuje izvesnu pažnju kada je u pitanju vraćanje sa izvršetka prekidne rutine. Nakon što se izuzetak pojavi, ea sadrži adresu instrukcije koja bi sledila u trenutku kada je izuzetak generisan.

Pri povratku sa izuzetka tipa “softverska zamka” ili “izvedena instrukcija”, izvršavanje programa mora da se nastavi od

Page 45: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Način programiranja Nios II procesor

37

naredne instrukcije, u odnosu na onu koja je bila u toku kada je program preusmeren na izvršavanje prekidne rutine. Zbog ovoga, ea registar mora da sadrži korektnu adresu povratka.

Sa druge strane, izuzeci hardverskog prekida moraju da povrate izvršavanje od instrukcije koja ih je prekinula. U tom slučaju, “upravljač izuzecima” mora da oduzme 4 od sadržaja ea registra, kako bi ukazao na prekinutu instrukciju.

 

Prekid  je  promena  upravljanja  normalnog  programskog  toka izvršavanja,  izazvana  break  instrukcijom,  ili  od  strane  JTAG debag  modula.  Softverski  alati  za  debagovanje  mogu  da preuzmu  kontrolu  nad Nios  II  procesorom  preko  JTAG  debag modula.  Isključivo  alati  za  debagovanje  upravljaju  procesorom kada  se on nalazi u debag‐modu; aplikacioni  i  sistemski kod  se nikada ne izvršavaju u ovom modu.   Obrada prekida  je način   na koji softverski alati za debagovanje implementiraju  dijagnostičke metode,  kao  što  su  tačke  prekida (breakpoints)  i  tačke nadgledanja  (watchpoints). Obrada prekida  je slična obradi  izuzetaka, ali  je mehanizam prekida nezavistan od tretiranja  izuzetka.  Prekid  se,  naime,  može  javiti  i  za  vreme obrade  izuzetka,  dozvoljavajući  alatu  za  debagovanje,  da prepravlja odluke “upravitelja izuzecima”  (exception handler).   Procesor ulazi u stanje obrade prekida pod sledećim okolnostima:

procesor dobija break instrukciju JTAG debag modul prihvata hardverski prekid

Prekid dovodi do toga, da procesor preduzme automatski sledeće korake:

1. sačuva sadržaj status registra (ctl0) u registar bstatus (ctl2)

2. postavi vrednost U bita u status registru na 0, vršeći

time prebacivanje u supervizor-režim rada

3. postavi i vrednost PIE bita status registra na 0, onemogućavajući time buduće eksterne prekide

4. upiše adresu instrukcije koja sledi prekid u ba registar

(r30)

Obrada prekida

Page 46: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Način programiranja Nios II procesor

38

5. prebaci izvršavanje na adresu break handler-a. Ova adresa je

specificirana još u toku gnerisanja sistema. Povratak sa prekida Nakon čina obrade prekida, alat za debagovanje napušta upravljanje procesorom, izvršavajući bret instrukciju. Ovom instrukcijom se vraća sadržaj status registra kao i dalje izvršavanje programa sa adrese sačuvane u registru ba.

Upotreba registra Upravljač prekidima (break handler) može da koristi registar bt (r25) za pomoć čuvanja dodatnih registara. Osim ovog registra i svi ostali registri će se sigurno vratiti u svoje stanje pre prekida, nakon povratka sa obrade prekidne rutine.

Nios II adrese su 32-bitne, dozvoljavajući time pristup adresnom prostoru do 4 gigabajta! Međutim, mnoge implamentacije Nios II jezgra imaju redukovan broj bitova za adresiranje memorije i to najčešće 31 ili manje. Periferije, meorije za podatke i programske meorije su smeštene u isti adresni prostor. Opseg lokacija, odnosno segment, za periferije i pomenute namenske memorije je definisan prilikom generisanja sistema. Čitanje ili upisivanje na adresu koja nije određena kao “memorijska” ili “periferijska”, proizvešće nedefinisan rezultat. Procesorova magistrala za podatke je takođe širine 32 bita. Instrukcije su dostupne za čitanje i pisanje kao bajt podataka, polureč (16 bitova-half word), ili reč (32 bita - word). Nios II arhitektura koristi Little endian memorijski zapis, što je već ranije naglašeno i objašnjeno. Da se podsetimo, za podatke koji su smešteni u memoriji, a “širi” su od 8 bitova, bitovi veće težine se nalaze na višim adresama.

Pristup memoriji i periferijama

Page 47: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Način programiranja Nios II procesor

39

Adresni načini rada Nios II arhitektura podržava sledeće načine adresiranja memorije:

registarsko adresiranje (register addressing) relativno adresiranje (displacement addressing) neposredno adresiranje (immediate addressing) registarsko indirektno adresiranje (register indirect

addressing) apsolutno adresiranje (Absolute addressing)

Kod registarskog adresiranja, svi operandi su u registrima i rezultat se smešta nazad, ponovo u registar. Kod relativnog adresiranja, adresa se proračunava kao suma registra (ofset-adresa) i označene, 16-bitne neposredne vrednosti. Termin neposredno adresiranje ukazuje da podatak neposredno sledi opkod instrukcije u memoriji. Neposredni podatak predstavlja konstantnu vrednost, dok podatak koji se prenosi iz registra predstavlja promenljivu. Registarsko indirektno adresiranje ogovara relativnom adresiranju, s’ tim što je pomeranje konstantno i iznosi 0. Apsolutno adresiranje ograničenog opsega je ostvarljivo korišćenjem relativnog adresiranja sa registrom r0, čija je vrednost uvek 0x00.

Keš memorija

Nios II arhitektura i njoj pripadajući set instrukcija, su prilagođeni postojanju keš memorija za instrukcije i podatke. Upravljanje kešom je implementirano softverski, korišćenjem cache management-instrukcija. Ove instrukcije obezbeđuju inicijalizovanje keša, osvežavanje keša kada god je to potrebno, kao i zaobilaženje data-keša radi ispravnog pristupa memoriji, odnosno segmentu periferija.

Neka jezgra Nios II procesora podržavaju mehanizam nazvan bit-31 cache bypass za izbegavanje keša, oslanjajući se na vrednost bita najveće težine u adresi. Adresni prostor takve implementacije je 2 gigabajta.

Kod napisan za procesorsko jezgro sa keš memorijom, će se korektno ponašati i na procesoru koji ne poseduje keš. Obrnuto ne važi. Zbog toga, da bi program korektno radio na svim implementacijama Nios II jezgra, mora da se ponaša kao da

Page 48: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Način programiranja Nios II procesor

40

instrukcioni i data-keš postoji. U sistemima u kojima keš memorije ne postoje, cache management-instrukcije nemaju dejstva. Izvesna pažnja je potrebna da bi se obezbedila koherencija keša nakon reseta procesora. Pogledajte u nastavku temu “Reset stanje procesora” za upoznavanje više detalja. U vezi podataka oko arhitekture keša i hijerarhije memorije, pogledajte ponovo poglavlje 2 ovog rada, “Arhitektura procesora”.

Nakon reseta, Nios II procesor izvodi sledeće akcije:

1. postavlja vrednosti status registra na 0x0

2. postavlja adresu reset-rutine (reset address)

3. počinje izvršavanje od reset adrese. Postavljanje vrednosti status registra (ctl0) u 0, ima efekta na stavljanje procesora u supervizor-mod i zabrane hardverskih prekida.

Posle reseta, sadržaj keš memorije je neodređen. Da bi smo osigurali koherenciju keš memorije nakon reseta, reset-rutina mora odmah da inicijalizuje instrukcioni keš. Dalje, svaka reset-rutina ili bilo koja druga naredna rutina, trebalo bi da pristupi inicijalizaciji data-keša. Reset stanje je nedefinisano za sve ostale sistemske komponente, uključujući tu, ali ne u potpunosti, sledeće stavke:

registre opšte namene, izuzev registra zero (r0), čija je vrednost permanentno nula

kontrolne registre, izuzev registra status (ctl0) koji se resetuje u 0x0

memoriju za instrukcije i podatke keš memoriju, osim instruction-cache linije koja pripada

reset adresi periferije; odnosi se na odgovarajuće periferne strane sa

podacima ili specifikacije za uslove reseta dodatu instrukcionu logiku; odnosi se na specifikaciju

dodate instrukcije za uslove reseta.

Reset stanje procesora

Page 49: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Način programiranja Nios II procesor

41

Nios II arhitektura je load-store arhitektura. Load i store instrukcije upravljaju svim kretanjem podataka između registara, memorije i periferija. Memorije i periferije dele isti adresni prostor. Na narednim slikama je simbolično predstavljen tok izvršenja instrukcije sabiranja Add, na principima load-store arhitekture. Definisane su, kao što smo već i najavili, posebne funkcije za pristup memoriji: load i store. Tok izvršenja koji sledi, a koji respektivno prate i priložene slike, izgleda na sledeći način:

prvo se učitava prvi operand iz memorije i prebacuje u registar

zatim učitavamo iz memorije i smeštamo u registar drugi operand

izvršavamo operaciju nad registrima (vidimo da su i operandi i lokacija rezultata eksplicitni)

rezultat se zatim upisuje u registar, a odatle izričito treba da bude zapamćen nazad u memoriji.

Load-store arhitektura

Page 50: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Način programiranja Nios II procesor

42

Ovaj deo uvodi instrukcije Nios II procesora, kategorizujući ih prema tipu operacije koju izvode.

Instrukcije za transfer podataka

U tabeli 3–4 su opisane sledeće instrukcije: ldw, stw, ldwio, i stwio. Instrukcije za transfer podataka koje podržavaju transfer bajt‐podatka i polureči su opisane u tabeli 3–5. 

Tabela 3–4. Instrukcije za transfer podataka (ldw, stw, ldwio i stwio)

Instrukcija Opis

ldw stw Instrukcija  ldw/stw  učitava/upisuje  32‐bitnu  podatkovnu  reč  iz/u 

memoriju.  Efektivna  adresa  je  suma  sadržaja  registra  i  neposredno označene  vrednosti  sadržane u  instrukciji. Transfer u memoriju može da bude  “keširan”  ili  “baferovan” da bi  se povećale performanse programa. Transfer  podataka  za  I/O  periferije  treba  da  koristi  instrukcije  ldwio  i stwio. 

ldwio stwio Instrukcije ldwio i stwio učitavaju  i upisuju  32‐bitne podatkovne  reči 

iz/u  periferije  (periferne  memorijske  uređaje)  i  to  bez  keširanja  i baferovanja. 

Tabela 3–5. Instrukcije za transfer podataka

Instrukcija Opis ldb ldbu stb ldh ldhu sth

Instrukcije ldb, ldbu, ldh i ldhu služe za učitavanje bajta ili polureči iz memorije u registar. Instrukcije ldb i ldh znakovima produžuju vrednost do 32 bita, a ldbu i ldhu nulama produžavaju vrednost do dužine od 32 bita.  stb  i  sth  čuvaju  bajt‐podatke  i  vrednosti  dužine  polureči, respektivno.  Pristup memoriji može  da  bude  preko  keša  ili  bafera,  što povećava  performanse  sistema.  Transfer  podataka  sa  I/O  periferijama koristi  “io”  sufiks  u  predhodnim  instrukcijama  i  opisan  je  u  sledećem redu. 

ldbio ldbuio stbio ldhio ldhuio sthio

Ove  instrukcije vrše operacije  load/store  i  to sa podacima dužine bajta  ili polureči, a odnose se na periferije, kada nema keširanja i baferovanja. 

Kategorije instrukcija

Page 51: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Način programiranja Nios II procesor

43

Aritmetičke i logičke instrukcije

Logičke instrukcije omogućavaju izvođenje logičkih operacija and, or, xor i nor. Aritmetičke instrukcije omogućavaju vršenje sabiranja, oduzimanja, množenja i deljenja, tebela 3-6.

Tabela 3–6. Aritmetičke i logičke instrukcije

Instrukcija Opis and or xor nor

Ovo  su  standardne  logičke operacije nad podacima dužine 32 bita.   Ove instrukcije  izumaju  vrednosti  iz  dva  registra,  a  rezultat  upisuju  u  treći registar. 

andi ori xori Ove instrukcije nazivamo “neposrednim” verzijama instrukcija and, or, i 

xor. 16‐bitna neposredna vrednost se dopunjava nulama do dužine od 32 bita,  a  zatim  kombinuje  sa  registarskom  vrednošću  kako  bi  se  formirao rezultat. 

andhi orhi xorhi Kod ove varijante instrukcija and, or i xor, 16‐bitna neposredna vrednost 

se pomera logički ulevo za 16 bitova, kako bi se formirao 32‐bitni operand. Nule su pomerene  zdesna. 

add sub mul div divu

Ovo  su  instrukcije  koje  služe  za  obavljanje  standardnih  aritmetičkih operacija  nad  32‐bitnim  operandima.  Za  izvođenje  operacije  se  uzimaju dva registra kao ulazi, a rezultat se pamti u trećem registru. 

addi subi muli

Ove instrukcije nazivamo “neposrednim” verzijama instrukcija add, sub i mul. Instrukcijska reč uključuje 16‐bitnu označenu vrednost. 

mulxss mulxuu Ove  instrukcije  omogućavaju  pristup  gornjim  bitovima,  od  operacije 

množenja  32x32. Odabraćemo  odgovarajuću  instrukciju  u  zavisnosti  od toga da  li operandi  treba da budu  tretirani kao označene  ili neoznačene vrednosti. 

mulxsu Ova  instrukcija  se  koristi  za  računanje  128‐bitnog  rezultata  prilikom množenja 64x64. 

Page 52: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Način programiranja Nios II procesor

44

Move instrukcije

Ove instrukcije omogućavaju izvođenje operacije “pomeranja”, kojom se kopira sadržaj jednog registra, ili dela registra, u neki drugi registar. Pogledajte tabelu 3-7.

Tabela 3–7. Move instrukcije

Instrukcija Opis mov movhi movi movui movia

Instrukcija mov kopira vrednost  jednog registra u drugi registar. movi pomera  16‐bitnu,  neposrednu  vrednost  u  registar  i  znakovno  je dopunjuje do vrednosti od 32 bita. Instrukcije movui i movhi pomeraju 16‐bitnu neposrednu vrednost u gornji ili donji 16‐bitni segment registra, ubacujući nule na preostalim bit‐pozicijama. Upotreba instrukcije movia je za učitavanje registra sa neke adrese.

Page 53: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Način programiranja Nios II procesor

45

Instrukcije za poređenje Nios II arhitektura podržava brojne instrukcije za poređenje. Sve one porede dva registra, ili registar i neposrednu vrednost i upisuju u zavisnosti od reziltata, ili 1 (ako je odnos tačan), ili 0. Ove instrukcije odgovaraju operatorima poređenja, odnosno relacionim operatorima, koji su podržani i u C programskom jeiku. Pogledajte tabelu 3–8.

Tabela 3–8. Instrukcije za poređenje

Instrukcija Opis

cmpeq ==  

cmpne !=  

cmpge signed >=  

cmpgeu unsigned >=  

cmpgt signed >  

cmpgtu unsigned >  

cmple unsigned <= 

cmpleu unsigned <= 

cmplt signed < 

cmpltu unsigned < 

cmpeqi cmpnei cmpgei cmpgeui cmpgti cmpgtui cmplei cmpleui cmplti cmpltui

Ove instrukcije su “neposredne” verzije operacija poređenja. One porede vrednost  registra  i  16‐bitnu  neposrednu  vrednost. Označene  operacije znakovno  dopunjuju  neposrednu  vrednost  do  32  bita.  Neoznačene operacije popunjavaju više bitove sa nulama. 

Page 54: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Način programiranja Nios II procesor

46

Instrukcije za pomeranje i rotiranje   Izvođenje  operacija  pomeranja  i  rotiranja  je  omogućeno upotrebom  instrukcija koje su navedene u  tabeli 3‐9. Broj bitova koji  želimo da pomeramo  ili  rotiramo, može da  se  specificira u registru, ili kao neposredna vrednost.  

Tabela 3–9. Instrukcije za pomeranje i rotiranje

Instrukcija Opis rol ror roli Instrukcije  rol i roli omogućavaju  rotiranje  bitova  ulevo.  Instrukcija

roli koristi  neposrednu  vrednost  za  specificiranje  broja  bitova  koji  se rotiraju.  Instrukcija ror omogućava  rotiranje bitova u desno. Ne postoji “neposredna” varijanta ove onstrukcije, jer se umesto toga može upotrebiti instrukcija roli, koja će izvršiti ekvivalentnu operaciju. 

sll slli sra srl srai srli

Ove instrukcije implementiraju <<and >> operatore C programskog jezika. Instrukcije sll, slli, srl i srli, omogućavaju operacije levog i desnog logičkog  pomeranja  bita,  ubacivanjem  nula.  Instrukcije  sra  i  srai omogućavaju aritmetičko pomeranje bita u desno. Instrukcije slli, srli i srai, koriste neposrednu vrednost za specificiranje broja bitova koji se pomeraju. 

Page 55: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Način programiranja Nios II procesor

47

Instrukcije za upravljanje tokom uzvršenja programa

Nios II arhitektura podržava instrukcije bezuslovnog skoka i instrukcije poziva potprograma, koje su navedene u tabeli 3–10.

Tabela 3–10. Instrukcije za upravljanje tokom izvršenja programa

Instrukcija Opis call

Ova  instrukcija  poziva  potprogram  koristeći  neposrednu  vrednost  kao apsolutnu adresu potprograma i čuva povratnu adresu u registru ra. 

callr

Ova  instrukcija  poziva  potprogram  sa  apsolutne  adrese  sadržane  u registru i čuva povratnu adresu u registru ra. 

ret

Instrukcija ret  se koristi za povratak  iz potprograma koji  je predhodno pozvan instrukcijama call ili callr. ret učitava i izvršava instrukciju određenu adresom u registru ra. 

jmp Instrukcija jmp uslovljava skok na apsolutnu adresu sadržanu u registru. jmp  se  koristi  za  implementiranje  prekidnih  naredbi  C  programskog jezika. 

br Grananje  koje  se  odnosi  na  trenutnu  instrukciju. Označena  neposredna vrednost daje ofset adresu sledeće instrukcije koju treba izvršiti. 

Instrukcije uslovnog grananja

Instrukcije uslovnog grananja porede vrednosti registara direktno i dovode do grananja ako odnos u kome stoji njihov sadržaj zadovoljava postavljeni uslov. Pogledajte tabelu 3–11 na sledećoj strani. Uslovno grananje podržava podjednako i odnose poređenja programskog jezika C:

== and != < and <= (signed and unsigned) < and >= (signed and unsigned). 

Page 56: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Način programiranja Nios II procesor

48

Ostale instrukcije za kontrolu toka izvršavanja programa

U tabeli 3–12 su pobrojane i ukratko opisane i ostale instrukcije koje upravljaju tokom izvršavanja programa.

Tabela 3–12. Ostale instrukcije za kontrolu toka izvršavanja programa

Instrukcija Opis trap eret Instrukcije trap i eret služe za generisanje i povratak sa izuzetaka. One 

su  slične paru call/ret,  ali  se umesto na potprograme, one odnose na izuzetke. trap  čuva  sadržaj status  registra u estatus  registar, pamti adresu  povratka  u  ea  registar,  a  onda  prebacuje  izvršavanje  na “upravljača prekidima”. eret vrši povratak sa obrade izuzetka, vraćajući sadržaj  status  registru  iz  estatus  registra  u  kome  je  bio  sačuvan  i izvršavajući instrukciju na koju ukazuje adresa u ea registru. 

break bret Instrukcije  break i  bret  služe  za  generisanje,  odnosno  povratak  sa 

prekida. Ove instrukcije se koriste isključivo od strane softverskih alata za debagovanje, dok ih programeri nikada ne koriste u aplikacionom kodu. 

rdctl wrctl Ove instrukcije služe za čitanje i upisivanje u kontrolne registre. 

flushd flushi initd initi

Ove  instrukcije  se  koriste  za  upravljanje  instrukcionim  i  data‐keš memorijama. 

sync Ovom  instrukcijom obezbeđujemo, da se sve predhodno zadate operacije okončaju,  pre  nego  što  se  dopusti  izvršenje  naredne  operacije  čitanja  ili upisa. 

Tabela 3–11. Instrukcije uslovnog grananja

Instrukcija Opis bge bgeu bgt bgtu ble bleu blt bltu beq bne

Ove  instrukcije  ostvaruju  grananje  na  osnovu  poređenja  vrednosti  dva registra  i  ispitivanja  istinitosti  iskaza  kojim  smo  definisali  njihov međusobni relacioni odnos. Pogledajte naslov ”Instrukcije za poređenje” na strani 45, radi podsećanja na ugrađene relacije u Nios II jezgro. 

Page 57: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Način programiranja Nios II procesor

49

Custom - instrukcije

Custom-instrukcije su instrukcije definisane od strane korisnika, a kojima je omogućen pristup na niskom nivou custom instruction-logici. Ugrađivanje custom-instrukcija se vrši prilikom generisanja sistema i instrukcije implementirane na ovaj način su upotrebljive samo u okviru datog dizajna, tj. zavisne su od sistema. Više informacija, pronaćićete u poglavlju 2, na strani 7. Instrukcija nop Nios II asembler poseduje instrukciju nop, koja je ustvari, nepostojanje operacije. Drugim rečima, njome se ne izvršava nikakva operacija! Potencijalne neugrađene instrukcije Neka Nios II procesorska jezgra ne podržavaju sve instrukcije hardverski. U takvom slučaju, procesor generiše izuzetak, nakon što mu je dodeljena neugrađena instrukcija (unimplemented instruction). Jedino sledeće instrukcije mogu da generišu izuzetak tipa neugrađene instrukcije:

mul muli mulxss mulxsu mulxuu div divu

Sve ostale instrukcije nisu u mogućnosti da izazovu izuzetak ovakvog tipa. Kod prekidnih rutina moramo da budemo na oprezu ako koristimo ovakve instrukcije, jer one mogu umeđuvremenu generisati novi izuzetak, pre nego što je predhodni pravilno opslužen.

Page 58: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

50

4. Tipovi Nios® II jezgra

U ovom poglavlju  ćemo predstaviti  sve moguće  implementacije Nios® II procesorskog jezgra, dostupne do trenutka objavljivanja ovog dokumenta. U tabeli 4-1, su uporedno pobrojane sve karakteristične osobine sledećih jezgara:

“Nios II/f Core” “Nios II/s Core” “Nios II/e Core”

Sva jezgra podržavaju skup instrukcija Nios II arhitekture, koji je definisan i opisan u narednom poglavlju. Dalje ćemo se ograničiti na  detaljnije  opisivanje  Nioa  II/e  jezgra,  koje  je  i  najmanje  i najjednostavnije, ali ujedno i najrasprostranjenije,  jer zadovoljava većinu  poptreba  kod  manje  zahtevnih  aplikacija.  Za  one zahtevnije projektante, priložene  uporedne karakteristike u tabeli će pomoći prilikom donošenja odluke o pravilnom izboru jezgra, koje  će  zadovoljiti,  kako  njihove  lične,  tako  i  afinitete  same aplikacije.  

Tabela 4–1. Nios II jezgra (prvi od dva dela)

Jezgro Osobine

Nios II/e Nios II/s Nios II/f

Cilj najmanja

moguća veličina jezgra

mala veličina jezgra

najkraće vreme izvršavanja

DMIPS/MHz (1) 0.15 0.74 1.16 Max. DMIPS (2) 31 127 218

Performanse

Max. fMAX (2) 200 MHz 165 MHz 185 MHz Površina < 700 LEs; < 350

ALMs < 1400 LEs; < 700

ALMs < 1800 LEs; <900

ALMs Protočnost 1 Stage 5 Stages 6 Stages Eksterni adresni prostor 2 Gbytes 2 GBytes 2 GBytes

Cache – 512 bytes to 64 kbytes

512 bytes to 64 kbytes

Pipelined Memory Access – Da Da

Branch Prediction – Statičko Dinamičko

Bas instrukcija

Tightly Coupled Memory – Opcija Opcija

Altera Corporation 5–1 May 2007, Device Support

Uvod

Page 59: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Tipovi Nios® II jezgra Nios II procesor

51

Tabela 4–1. Nios II jezgra (drugi deo)

Jezgro Osobine

Nios II/e Nios II/s Nios II/f Cache – – 512 bytes to 64

Kbytes Pipelined Memory Access – – –

Cache Bypass Methods – –

I/O instructions; bit-31 cache

bypass

Data-bas

Tightly Coupled Memory – – Opciono

Hardware Multiply – 3-Cycle (3) 1-Cycle (3) Hardware Divide – Opciono Opciono

ALU

Shifter 1 Cycle-per-bit 3-Cycle Shift (3) 1-Cycle Barrel

Shifter (3) JTAG interface, run control, software breakpoints

Opciono Opciono Opciono

Hardware Breakpoints – Opciono Opciono

JTAG debag modul

Off-Chip Trace Buffer – Opciono Opciono

Exception Types Software trap, unimplemented

instruction, hardware interrupt

Software trap, unimplemented

instruction, hardware interrupt

Software trap, unimplemented

instruction, hardware interrupt

Kontroler izuzetaka

Integrated Interrupt Controller Da Da Da

Podrška korisničkom modu Ne; Permanentno u

zaštićenom načinu rada

Ne; Permanentno u

zaštićenom načinu rada

Ne; Permanentno u

zaštićenom načinu rada

Podrška korisničkih instrukcija Da Da Da Napomena u vezi tabele 4–1: (1) DMIPS performanse za Nios II/s i Nios II/f jezgra zavise od opcije hardverskog

množenja. (2) Koristeći najbržu hardversku opciji množenja i čip Stratix II FPGA u najbržem modu rada. (3) Performanse množenja i pomeranja, zavise od toga koja je opcija množenja upotrebljena.

Ako se umesto hardverskog množenja koristi množenje emulirano softverom, onda je i za operaciju “šiftovanja” potreban jedan ciklus po bitu.

Page 60: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Tipovi Nios® II jezgra Nios II procesor

52

Podržane familije FPGA čipova Sva Nios II jezgra, podržavaju sledeće familije Alterinih FPGA čipova:

Stratix® Stratix II CycloneTM Cyclone II

Nios II/e jezgro spada u klasu “ekonomičnih” jezgra, dizajniranih na princupu najmanje moguće veličine. Altera je dizajnirala Nios II/e jezgro sa jednim jedinim ciljem: redukovati upotrebu resursa što je moguće više, ali i dalje zadržati potpunu kompatibilnost sa setom instrukcija Nios II arhitekture. Hardverski resursi su sačuvani, na uštrb performansi. Nios II/e jezgro je otprilike za polovinu manje od jezgra Nios II/s, ali su mu srazmerno tome i performanse lošije. Rezultujuće jezgro je optimalno za aplikacije osetljive po pitanju cene, a i sve one koje zahtevaju prostu kontrolnu logiku. Pregled mogućnosti jezgra Nios II/e Nios II/e jezgro:

izvršava u najboljem slučaju jednu instrukciju za 6 taktova može da pristupa eksternom adresnom prostoru veličine 2

Gbajta podržava dodavanje korisničkih instrukcija podržava JTAG modul za debagovanje ne pruža hardversku podršku za potencijalne neugrađene

instrukcije nema ni data-keš ni instrukcioni keš.

Sledeća diskusija ističe opšte elemente implementacije Nios II/e jezgra. Ona ne zalazi u detalje implementacije na niskom nivou, koji nemaju nekog posebnog uticaja na projektante, prilikom dizajniranja hardvera i softvera.

Jezgro Nios II/e

Page 61: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Tipovi Nios® II jezgra Nios II procesor

53

Fajl registar

U toku generisanja sistema, kontrolnom registru cpuid (clt5) se dodeljuje vrednost koja je jedinstvena za svaki procesor u sistemu.

Aritmetičko-logička jedinica Nios II/e jezgro ne pruža mogućnost hardverske podrške za potencijalne neugrađene instrukcije. Sve neugrađene instrukcije se moraju emulirati softverski. Nios II/e jezgro koristi posebno šift-kolo za izvođenje operacija pomeranja i rotiranja. Ova namenska struktura izvodi šiftovanje i rotiranje jednog bita po ciklusu.

Pristup memoriji

Nios II/e jezgro ne poseduje ni data-keš ni instrukcioni keš. Pristup memoriji i periferijama se obavlja uz pomoć Avalon-transfera. Ovo jezgro može da adresira do 2 Gbajta spoljne memorije i ne podržava mehanizam obilaska keša “bit-31 data cache bypass”. Ali ipak, bit najveće težine u adresama je ignorisan, kako bi se sačuvala konzistencija sa implementacijama onih Nios II jezgara, koja podržavaju ovaj metod.

Faze izvršavanja instrukcije Pozabavićemo se sada protočnim ponašanjem, odnosno procenom vremena izvršavanja instrukcija. Mnogi programeri aplikacija nikada nisu imali potrebu da analiziraju performanse pojedinačnih instrukcija i živeće i dalje veoma srećnim životom, bez ikakve potrebe da se zamaraju tabelom koja sledi u nastavku priče.

Performanse instrukcija

Nios II/e jezgro obavlja jednu instrukciju u vremenu i procesor čeka da se ta instrukcija kompletira, pre nego što pribavi i izvrši sledeću instrukciju. Baš zbog toga što se svaka instrukcija kompletira pre nego što se sledeća izvrši, predviđanje grananja nije neophodno. Maksimum performansi je 6 ciklusa za jednu

Page 62: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Tipovi Nios® II jezgra Nios II procesor

54

instrukciju. Da bi ostvario 6 ciklusa, Avalonov instrukcioni master-port mora da pribavi instrukciju u jednom taktu. Poseban deo Avalonovog master-porta direktno produžava vreme izvršavanja instrukcije. Performanse po pitanju brzine izvršavanja, odnosno potrebnog broja taktova, za sve instrukcije, prikazane su u tabeli 5–2.

Tabela 5–2. Performanse izvršavanja instrukcija za Nios II/e jezgro

Instrukcija Taktovi

Uobičajene ALU instrukcije (add, cmplt,…) 6

branch, jmp, ret, call, callr 6

trap, break, eret, bret, flushp, wrctl, rdctl,…

6

load word 6 + trajanje Avalon transfera pri čitanju

load halfword 9 + trajanje Avalon transfera pri čitanju

load byte 10 + trajanje Avalon transfera pri čitanju

store 6 + trajanje Avalon transfera pri upisivanju

Shift, rotate 7 to 38

Sve ostale instrukcije 6

Korisničke instrukcije 6

Multi-ciklusne korisničke instrukcije ≥6

Upravljanje izuzecima Nios II/e jezgro podržava sledeće tipove izuzetaka:

hardverske prekide softverske zamke neugrađene instrukcije

Page 63: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Tipovi Nios® II jezgra Nios II procesor

55

JTAG modul za debagovanje Nios II/e jezgro podržava JTAG modul za debagovanje, pružajući time JTAG interfejs softverskim alatima za debagovanje. Međutim, nije omogućeno umetanje hardverskih tačaka prekida.

Nepodržane osobine Nios II/e jezgro ne podržava “korisnički režim rada” (user mode), koji je ranije predstavljen. Ova činjenica nema uticaja na aplikacioni kod. Međutim, može uticati na deo sistemskog koda koji se odnosi na korisnički režim. Nios II/e jezgro ne može da upravlja izvršenjem instrukcija koje imaju nedefinisan opkod. Ako procesor izvršava neku instrukcijsku reč, u kojoj figuriše nepravilno definisan opkod instrukcije, njegovo dalje ponašanje se ne može predvideti.

Page 64: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

56

5. Skup instrukcija

U ovom poglavlju će biti opisani formati Nios® II instrukcijskih reči, a biće informativno dat i skup svih naredbi Nios II arhitekture. Neke od karakterističnih instrukcija će biti i kratko prokomentarisane. Format Nios II naredbi, ili instrukcijskih reči, može pripadati jednoj od sledećih kategorija: I-type, R-type i J-type. I-Type format naredbe

Ovaj tip formata naredbe, karakteriše to što poseduje neposrednu vrednost, ugrađenu u instrukcijsku reč. I-type instrukcijske reči sadrže:

6-bitno polje za opkod "OP" dva 5-bitna registarska polja "A" i "B" 16-bitno polje za neposredni podatak "IMM16"

U većini slučajeva, polja A i IMM16 određuju izvorne operande, a polje B određuje odredišni registar. IMM16 se smatra označenim, osim u slučaju logičkih operacija i neoznačenih poređenja. I-type instrukcije uključuju aritmetičke i logičke operacije kao što su addi i andi; operacije grananja; load i store operacije; operacije za upravljanje keš memorijom. Format I-type instrukcije izgleda ovako:

Format naredbi

Page 65: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Skup instrukcija Nios II procesor

57

R-Type format naredbe

Karakteristika koja određuje R-type format instrukcijske reči, je da su svi argumenti i rezultati specificirani kao registri. R-type instrukcije sadrže:

6-bitno polje za opkod "OP" tri 5-bitna registarska polja "A", "B" i "C" 11-bitno polje za prošireni opkod "OPX"

U većini slučajeva, polja A i B određuju izvorne operande, dok polje C određuje odredišni registar. Neke R-Type instrukcije ugrađuju malu neposrednu vrednost na mesto najmanje težine u polju OPX. R-type instrukcije uključuju aritmetičke i logičke operacije, kao što su add i nor; operacije poređenja, kao što su cmpeq i cmplt; custom - instrukcije; ostale operacije kojima su potrebni samo registarski operandi. Format R-type instrukcije izgleda ovako:

Page 66: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Skup instrukcija Nios II procesor

58

J-Type format naredbe

J-type instrukcija sadrži:

6-bitno polje za opkod 26-bitno polje za neposrednu vrednost podatka

Jedina J-type instrukcija je call. Format J-type instrukcije je sledećeg izgleda:

Page 67: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Skup instrukcija Nios II procesor

59

OP polje u Nios II instrukcijskoj reči sadrži kod date instrukcije. U tabeli 5-1 i tabeli 5-2, su navedeni kodovi i njima pripadajuće instrukcije.

Tabela 5–1. Opkodovi instrukcija

OP Instrukcija OP Instrukcija OP Instrukcija OP Instrukcija

0x00 call 0x10 cmplti 0x20 cmpeqi 0x30 cmpltui

0x01 0x11 0x21 0x31

0x02 0x12 0x22 0x32 custom

0x03 ldbu 0x13 0x23 ldbuio 0x33 initd

0x04 addi 0x14 ori 0x24 muli 0x34 orhi

0x05 stb 0x15 stw 0x25 stbio 0x35 stwio

0x06 br 0x16 blt 0x26 beq 0x36 bltu

0x07 ldb 0x17 ldw 0x27 ldbio 0x37 ldwio

0x08 cmpgei 0x18 cmpnei 0x28 cmpgeui 0x38

0x09 0x19 0x29 0x39

0x0A 0x1A 0x2A 0x3A R-Type

0x0B ldhu 0x1B 0x2B ldhuio 0x3B flushd

0x0C andi 0x1C xori 0x2C andhi 0x3C xorhi

0x0D sth 0x1D 0x2D sthio 0x3D

0x0E bge 0x1E bne 0x2E bgeu 0x3E

0x0F ldh 0x1F 0x2F ldhio

0x3F

Opkodovi instrukcija

Page 68: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Skup instrukcija Nios II procesor

60

Tabela 5–2. OPX enkodiranje za R-Type instrukcije

OPX Instrukcija OPX Instrukcija OPX Instrukcija OPX Instrukcija

0x00 0x10 cmplt 0x20 cmpeq 0x30 cmpltu

0x01 eret 0x11 0x21 0x31 add

0x02 roli 0x12 slli 0x22 0x32

0x03 rol 0x13 sll 0x23 0x33

0x04 flushp 0x14 0x24 divu 0x34 break

0x05 ret 0x15 0x25 div 0x35

0x06 nor 0x16 or 0x26 rdctl 0x36 sync

0x07 mulxuu 0x17 mulxsu 0x27 mul 0x37

0x08 cmpge 0x18 cmpne 0x28 cmpgeu 0x38

0x09 bret 0x19 0x29 initi 0x39 sub

0x0A 0x1A srli 0x2A 0x3A srai

0x0B ror 0x1B srl 0x2B 0x3B sra

0x0C flushi 0x1C nextpc 0x2C 0x3C

0x0D jmp 0x1D callr 0x2D trap 0x3D

0x0E and 0x1E xor 0x2E wrctl 0x3E

0x0F 0x1F mulxss 0x2F 0x3F

Page 69: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Skup instrukcija Nios II procesor

61

Tabelarni pregled instrukcija

Aritmetičke i logičke instrukcije – prvi deo

add Rdest, Rsrc1, Rsrc2 signed (with overflow) and unsigned (with carry) addition

addi Rdest, Rsrc1, IMM16 signed (with overflow) and unsigned (with carry) addition immediate

and Rdest, Rsrc1, Rsrc2 AND

andhi Rdest, Rsrc1, IMM16 AND immediate into high halfword

andi Rdest, Rsrc1, IMM16 AND immediate

div Rdest, Rsrc1, Rsrc2 signed divide

divu Rdest, Rsrc1, Rsrc2 unsigned divide

mul Rdest, Rsrc1, Rsrc2 multiply, store the 32 low-order bits of the product to Rdest

muli Rdest, Rsrc1, IMM16 multiply immediate, sign-extend the 16-bit immediate value to 32 bits, store the 32 low-order bits of the product to Rdest

mulxss Rdest, Rsrc1, Rsrc2

signed multiply, store the 32 high-order bits of the product to Rdest

mulxsu Rdest, Rsrc1, Rsrc2

treat Rsrc1 as a signed integer and Rsrc2 as an unsigned interger, store the 32 high-order bits of the product to Rdest

mulxuu Rdest, Rsrc1, Rsrc2

unsigned multiply, store the 32 high-order bits of the product to Rdest

nor Rdest, Rsrc1, Rsrc2 bitwise logical nor or Rdest, Rsrc1, Rsrc2 bitwise logical or

orhi Rdest, Rsrc1, IMM16 calculate the bitwise logical OR of Rsrc1 and

(IMM16:0x0000) and store the result in Rdest ori Rdest, Rsrc1, IMM16 calculate the bitwise logical OR of Rsrc1 and

(0x0000:IMM16) and store the result in Rdest rol Rdest, Rsrc1, Rsrc2 rotate Rsrc1 left by the number of bits specified in

Rsrc24..0

, the bits that shift out of the register rotate into the least-significant bit positions

roli Rdest, Rsrc1, IMM5 rotate Rsrc1 left by the number of bits specified in IMM5

ror Rdest, Rsrc1, Rsrc2 rotate Rsrc1 right by the number of bits specified in Rsrc2

4..0, the bits that shift out of the register rotate

into the most-significant bit positions

Page 70: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Skup instrukcija Nios II procesor

62

Aritmetičke i logičke instrukcije – drugi deo

sll Rdest, Rsrc1, Rsrc2 shift Rsrc1 left by the number of bits specified in Rsrc2

4..0 (inserting zeros)

slli Rdest, Rsrc1, IMM5 shift Rsrc1 left by the number of bits specified in IMM5 (inserting zeros)

sra Rdest, Rsrc1, Rsrc2 shift Rsrc1 right by the number of bits specified in Rsrc2

4..0 (duplicating the sign bit)

srai Rdest, Rsrc1, IMM5 shift Rsrc1 right by the number of bits specified in

IMM5 (duplicating the sign bit)

srl Rdest, Rsrc1, Rsrc2 shift Rsrc1 right by the number of bits specified in Rsrc2

4..0 (inserting zeros)

srli Rdest, Rsrc1, IMM5 shift Rsrc1 right by the number of bits specified in

IMM5 (inserting zeros)

sub Rdest, Rsrc1, Rsrc2 signed (with overflow) and unsigned (with carry) subtraction

subi Rdest, Rsrc1, IMM16 signed (with overflow) and unsigned (with carry) subtraction immediate

xor Rdest, Rsrc1, Rsrc2 calculate the bitwise logical exclusive XOR of Rsrc1 and Rsrc2

xorhi Rdest, Rsrc1, IMM16 calculate the bitwise logical exclusive XOR of Rsrc1 and (IMM16:0x0000)

xori Rdest, Rsrc1, IMM16 calculate the bitwise logical exclusive XOR of Rsrc1 and (0x0000:IMM16)

Page 71: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Skup instrukcija Nios II procesor

63

Instrukcije za vršenje poređenja – prvi deo

cmpeq Rdest, Rsrc1, Rsrc2 compare equal, Rdest = 1 if Rsrc1 == Rsrc2; otherwise Rdest = 0

cmpeqi Rdest, Rsrc1, IMM16 sign-extend the 16-bit immediate value IMM16 to 32 bits and compare it to the value of Rsrc1, if equal, Rdest = 1; otherwise Rdest = 0

cmpge Rdest, Rsrc1, Rsrc2 signed compare, if Rsrc1 >= Rsrc2, Rdest = 1; otherwise Rdest = 0

cmpgei Rdest, Rsrc1, IMM16 sign-extend the 16-bit immediate value IMM16 to 32 bits and compare it to the value of Rsrc1, if Rsrc1 >= IMM16, Rdest = 1; otherwise Rdest = 0

cmpgeu Rdest, Rsrc1, Rsrc2 unsigned compare, if Rsrc1 >= Rsrc2, Rdest = 1; otherwise Rdest = 0

cmpgeui Rdest, Rsrc1, IMM16 zero-extend the 16-bit immediate value IMM16 to 32 bits and compare it to the value of Rsrc1, if Rsrc1 >= IMM16, Rdest = 1; otherwise Rdest = 0

cmpgt Rdest, Rsrc1, Rsrc2 signed compare, if Rsrc1 > Rsrc2, Rdest = 1; otherwise Rdest = 0

cmpgti Rdest, Rsrc1, IMMED sign-extend the 16-bit immediate value IMMED to 32 bits and compare it to the value of Rsrc1, if Rsrc1 > IMMED, Rdest = 1; otherwise Rdest = 0

cmpgtu Rdest, Rsrc1, Rsrc2 unsigned compare, if Rsrc1 > Rsrc2, Rdest = 1; otherwise Rdest = 0

cmpgtui Rdest, Rsrc1, IMMED zero-extend the 16-bit immediate value IMMED to 32 bits and compare it to the value of Rsrc1, if Rsrc1 > IMMED, Rdest = 1; otherwise Rdest = 0

cmple Rdest, Rsrc1, Rsrc2 signed compare, if Rsrc1 <= Rsrc2, Rdest = 1; otherwise Rdest = 0

cmplei Rdest, Rsrc1, IMMED sign-extend the 16-bit immediate value IMMED to 32 bits and compare it to the value of Rsrc1, if Rsrc1 <= IMMED, Rdest = 1; otherwise Rdest = 0

cmpleu Rdest, Rsrc1, Rsrc2 unsigned compare, if Rsrc1 <= Rsrc2, Rdest = 1; otherwise Rdest = 0

cmpleui Rdest, Rsrc1, IMMED zero-extend the 16-bit immediate value IMMED to 32 bits and compare it to the value of Rsrc1, if Rsrc1 <= IMMED, Rdest = 1; otherwise Rdest = 0

Page 72: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Skup instrukcija Nios II procesor

64

Instrukcije za vršenje poređenja – drugi deo

cmplti Rdest, Rsrc1, IMM16

sign-extend the 16-bit immediate value IMMED to 32 bits and compare it to the value of Rsrc1, if Rsrc1 < IMM16, Rdest = 1; otherwise Rdest = 0

cmpltu Rdest, Rsrc1, Rsrc2

unsigned compare, if Rsrc1 < Rsrc2, Rdest = 1; otherwise Rdest = 0

cmpltui Rdest, Rsrc1, IMM16

zero-extend the 16-bit immediate value IMMED to 32 bits and compare it to the value of Rsrc1, if Rsrc1 < IMM16, Rdest = 1; otherwise Rdest = 0

cmpne Rdest, Rsrc1, Rsrc2 compare not equal, Rdest = 1 if Rsrc1 == Rsrc2; otherwise Rdest = 0

cmpnei Rdest, Rsrc1, IMM16

sign-extend the 16-bit immediate value IMM16 to 32 bits and compare it to the value of Rsrc1, if not equal, Rdest = 1; otherwise Rdest = 0

Page 73: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Skup instrukcija Nios II procesor

65

Branch i Jump instrukcije

beq Rsrc1, Rsrc2, label branch if equal

bge Rsrc1, Rsrc2, label signed branch if Rsrc1 greater than or equal to Rsrc2

bgeu Rsrc1, Rsrc2, label unsigned branch if Rsrc1 greater than or equal to Rsrc2

bgt Rsrc1, Rsrc2, label signed branch if Rsrc1 greater than Rsrc2

bgtu Rsrc1, Rsrc2, label unsigned branch if Rsrc1 greater than Rsrc2

ble Rsrc1, Rsrc2, label signed branch if Rsrc1 less than or equal to Rsrc2

bleu Rsrc1, Rsrc2, label unsigned branch if Rsrc1 less than or equal to Rsrc2

blt Rsrc1, Rsrc2, label signed branch if Rsrc1 less than Rsrc2

bltu Rsrc1, Rsrc2, label unsigned branch if Rsrc1 less than Rsrc2

bne Rssrc1, Rsrc2, label branch if not equal

br label unconditional branch

break debugging breakpoint

bret breakpoint return

call label call subroutine

callr Rsrc1 call subroutine in register, the value in Rsrc1 is the address of the next instruction

eret exception return

jump Rsrc1 transfer execution to the address contained in Rsrc1

ret return from subroutine

Page 74: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Skup instrukcija Nios II procesor

66

Instrukcije za učitavanje

Load byte from memory or I/O peripheral ldb/ldbio Rdest, byte_offset(Rsrc1)

compute the effective byte address specified by the sum of Rsrc1 and byte_offset, load the byte into Rdest and sigh-extend the 8-bit value to 32 bits

ldbu/ldbuio Rdest, byte_offset(Rsrc1)

compute the effective byte address specified by the sum of Rsrc1 and byte_offset, load the byte into Rdest and zero-extend the 8-bit value to 32 bits

Load half word from memory or I/O peripheral ldh/ldhio Rdest, byte_offset(Rsrc1)

compute the effective byte address specified by the sum of Rsrc1 and byte_offset, load the half word into Rdest and sign-extend the 16-bit value to 32 bits

ldhu/ldhuio Rdest, byte_offset(Rsrc1)

compute the effective byte address specified by the sum of Rsrc1 and byte_offset, load the half word into Rdest and zero-extend the 16-bit value to 32 bits

Load word from memory or I/O peripheral ldw/ldwio Rdest, byte_offset(Rsrc1)

compute the effective byte address specified by the sum of Rsrc1 and byte_offset, load the word into Rdest

Page 75: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Skup instrukcija Nios II procesor

67

Instrukcije za upisivanje

Store byte to memory or I/O peripheral stb/stbio Rsrc1, byte_offset(Rsrc2)

compute the effective byte address specified by the sum of Rsrc1 and byte_offset, store the low byte to the memory byte specified by the effective address

Store half word from memory or I/O peripheral sth/sthio Rdest, byte_offset(Rsrc1)

compute the effective byte address specified by the sum of Rsrc1 and byte_offset, store the low halfword to the memory location specified by the effective address

Store word from memory or I/O peripheral stw/stwio Rdest, byte_offset(Rsrc1)

compute the effective byte address specified by the sum of Rsrc1 and byte_offset, store the word to the memory location specified by the effective address

Page 76: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Skup instrukcija Nios II procesor

68

Instrukcije za prenos podataka

mov Rdest, Rsrc1 move register to register

movhi Rdest, IMMED move immediate into high halfword, and clear the lower halfword of Rdest to 0x0000

movi Rdest, IMMED move signed immedtiate into word

movia Rdest, label move immediate address into word

movui Rdest, IMMED move unsigned immediate into word, and zero-extend the immediate value IMMED to 32 bits

Ostale instrukcije

nextpc Rdest store the address of the next instruction to Rdest

nop no operation

rdctl Rdest, ctlN read from control register

wrctl ctlN, Rsrc1 write to control register

Page 77: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

69

Drugi deo:

Nios II razvojni sistem

Page 78: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

70

Nios II razvojni sistem

U ovom uvodnom delu, upoznaćemo Vas kako je tekao sistemski razvoj Nios II procesora. Ovaj priručnik je dobra polazna tačka za sve one koji se prvi put susreću sa Nios II procesorom ili uopšte sa konceptom izgradnje “embeded” sistema na FPGA čipu. U ovom vodiču ćemo kreirati Nios II hardver, a takođe i softver koji će se izvršavati na Nios II sistemu. Izgradnja “embeded” sistema na FPGA čipu je širok pojam, koji obuhvata potrebnu analizu sisitema kako po pitanju hardverskuh, tako i softverskih zadataka. Uputstvo koje je pred vama, vodi Vas kroz svaku od ovih osnovnih tema, sa posebnim osvrtom na korake dizajniranja hardvera. Tamo gde je potrebno, vodič će Vas uputiti ka naprednijim dokumentima, u kojima ćete pronaći više detalja.

Ako ste zainteresovani samo za razvoj softvera za Nios II

procesor, pogledajte članak Software Development Tutorial koji je dostupan u okviru Nios II IDE help podrške.

Page 79: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

71

1. Početak rada sa Nios II sistemom

Naš projekat

Kada budete proučili ovo uputstvo, razumećete kako teče razvoj jednog Nios II sistema i bićete u mogućnosti da kreirate svoj osnovni, namenski Nios II sistem.

Projekat koji ćete izraditi u ovom vodiču kao primer,

predstavlja mali Nios II sistem za kontrolu aplikacija, koji poseduje karakter displej, ulazno/izlazne portove i LE diode za indikaciju. Nios II sistem će takođe moći da komunicira sa host kompjuterom koji će pritom moći da kontroliše logiku unutar FPGA čipa.

Nios II sistem iz našeg primera se sastoji iz sledećeg:

Nios II procesorskog jezgra  memorije na čipu  tajmera  JTAG  UART‐a    (  univerzalnog  asinhronog  primom‐predajnika ) 

PIO bloka koji je 8‐bitni paralelni drajver za LE‐diode i  System ID bloka koji služi za identifikaciju komponenti 

Slika 1–1 sa sledeće strane  je blok dijagram koji prikazuje odnos između  host  kompjutera,  ciljne  ploče,  FPGA  čipa  i  Nios  II sistema. 

Page 80: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Početak rada sa Nios II sistemom Nios II razvojni sistem

72

Slika 1–1. Blok šema našeg projekta

Kao što vidimo na slici 1–1, ostala logika može da postoji u okviru FPGA čipa ali sa strane, tj. uz bok Nios II sistema. Nios II sistem može da interaguje sa ostalom logikom na čipu (On-chip RAM) u zavisnosti od potreba celog sistema. Zbog jednostavnosti, naš primer koji obrađujemo u ovom vodiču, neće uključivati ostalu logiku na FPGA čipu, odnosno neće imati blok koji je na gornjoj slici označen kao Other Logic.

Softverski i hardverski zahtevi

Za ovu priliku, potrebno je da posedujete sledeći softver:

Softver Altera Quartus II verzija 7.1 ili novija – može biti instaliran i na Windows i na Linux platformi koje zadovoljavaju minimalne zahteve prema Quartus II alatu.

Nios II Embedded Design Suite verzija 7.1 ili novija

Fajlove napisane za ovaj projekat – posetite Nios II stranicu sa literaturom čiji je link: www.altera.com/literature/lit-nio2.jsp.

Page 81: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Početak rada sa Nios II sistemom Nios II razvojni sistem

73

Vi možete da realizujete projekat iz primera i ako imate razvojnu ploču i ako je ne posedujete. Ovaj vodič Vam dozvoljava da napravite izbor između sledećih opcija: Bez ploče – Ako nemate razvojnu ploču, Vi i dalje možete da

koristite ovaj vodič, ali nećete moći da se uverite da projekat radi na hardverskom nivou. Umesto toga, Vi ćete moći da izvršite simulaciju rada softvera na Nios II instruction set simulatoru (ISS).

Sa Nios Razvojnom pločom – Ako imate Altera Nios II

razvojni sistem, koristićete ploču koja je uključena u ovaj kit. U tom slučaju, Vi ćete takođe morati da imate i izvor jednosmernog napajanja i kabl koji je predviđen za dati kit, kao što je recimo USB-Blaster™ kabl. Sledeći Altera razvojni sistemi su podržani:

• Nios II Development Kit, Stratix® II Edition • Nios II Development Kit, Stratix Edition • Nios II Development Kit, Stratix Professional Edition • Nios II Development Kit, Cyclone™ II Edition • Nios II Development Kit, Cyclone Edition

Za sve dodatne informacije u vezi Nios II razvojnih

sistema, posetite www.altera.com/ devkits.

Neka druga prigodna ploča – Vi možete da koristite ovaj vodič i sa bilo kojom drugom pločom kojam ispunjava sledeće zahteve:

• Ploča mora da poseduje Altera FPGA čip. • FPGA čip mora ispunjavati specifične zahteve, u zavisnosti od

familije kojoj pripada:

• Stratix III ili Stratix II • Stratix EP1S10 device ili veći • Cyclone III ili Cyclone II device • Cyclone EP1C12 device ili veći

• Jedan oscilator mora da obezbedi konstantan takt na jednom pinu FPGA čipa. Maksimalna frekvencija je ograničena maksimalnom brzinom FPGA čipa. Frekvencija od 50 MHz ili manja će raditi na većini ploča, dok je znak pitanja za veće frekvencije.

• Ploča mora da sadrži 10 – opinski priključak namenjen JTAG

konektoru preko koga se vrši komunikacija sa Nios II sistemon.

Page 82: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Početak rada sa Nios II sistemom Nios II razvojni sistem

74

• FPGA I/O pinovi mogu da se opciono povežu sa 8 (ili manje) LE-dioda, koje će služiti za vizuelnu indikaciju aktivnosti procesora.

• Moraćete takođe da imate i odgovarajući Altera USB kabl, revizije B ili kasnije. Neodgovarajući kabl može da dovede do grešaka u komunikaciji kada sa njim povežete Nios II procesor. Prepravljeni kablovi imaju jasno uočljivu oznaku revizije. Sa ranijim kablovima to nije slučaj.

Princip otvorenog jezgra

Vi možete da izvršite sve korake iz ovog vodiča, čak i na

hardveru, a da Vam za to licenca nije potrebna. Sa Alterinom opcijom “otvorenog jezgra” Vi možete da izvršite sledeće akcije:

Simulirate ponašanje Nios II procesora u okviru vašeg sistema Verifikujete funkcionalnost Vašeg projekta, odnosno lako

procenite njegovu veličinu i brzinu. U kratkom vremenskom roku generišete programske

sekvence uz pomoć kojih će Nios II procesor isvršavati željene akcije

Programirate uređaj i izvršite proveru rada na samom hardveru.

Vi ćete jedino morati da otkupite licencu za Nios II

procesor kada budete u potpunosti uvereni u njegovu funkcionalnost i performanse i budete želeli da svoj projekat pustite u proizvodnju.

Page 83: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

75

2. Razvojni tok Nios II sistema

U  ovom  odeljku  videćemo  kako  izgleda  kompletan razvojni tok projektovanja Nios II sistema, kao i izrada prototipa na razvojnoj ploči. Slika 1–2 prikazuje iz kojih se sve koraka ovaj tok sastoji. 

Slika 1–2. Razvojni tok Nios II sistema

Page 84: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Razvojni tok Nios II sistema Nios II razvojni sistem

76

Razvojni tok jednog Nios II sistema se zapravo sastoji od tri razvojne faze: faze razvoja hardvera, faze razvoja softvera i faze razvoja celokupnog sistema koja uključuje i hardver i softver . Kod jednostavnijih Nios II sistema, jedna osoba može sama da odradi sve faze. Međutim, kod složenih sistema, postoje posebni dizajneri hardvera, a posebni softvera i svako od njih je odgovoran za različite korake. Faza razvoja sistema, kao što smo rekli, uključuje i hardver i softver koji međusobno neprestano interaguju. U tom slučaju, odvojeni timovi za projektovanje kako hardvera, tako i softvera, moraju tačno da znaju koje informacije i koji fajlovi predstavljaju presek ove interakcije, odnosno od značaja su za oba tima.

U ovom vodiču pažnja je usmerena prvrnstveno na razvoj

hardvera i pruža samo mali uvod u razvoj softvera. Za upoznavanje sa procesom softverskog razvoja u budućnosti, Altera preporučuje da pročitate štivo Software Development Tutorial dostupno u Nios II IDE help-u, posle savladavanja ovog uputstva.

Software Development Tutorial i kompletne IDE reference su

uključene u Nios II IDE help sistem. Da bi ste otvorili Nios II IDE help sistem, kliknite na Help Contents stavku u Help meniju. Da bi ste videli dalja uputstva, odaberite Nios II IDE Help u Contents panelu, i onda kliknite na Tutorials.

Analiza sistemskih zahteva

Razvojni tok počinje sa tzv. predizajnerskim aktivnostima koje uključuju analiziranje zahteva aplikacije, kao što su: Kakve računarske performanse su potrebne za datu

aplikaciju? Koliki je propusni opseg ili protok potreban? Koji tip interfejsa je neophodan? Da li aplikacija zahteva ugnježden softver?

Na osnovu odgovora na ova pitanja, Vi možete da

specificirate konkretne sistemske potrebe, kao što su:

Kakvo nam je jezgro Nios II procesora potrebno: manje ili brže?

Koliko nam je dodatnih komponenti potrebno? Koje su to komponente? Koliko od svake vrste?

Koju vrstu sistema za rad u realnom vremenu upotrebiti (RTOS - real-time operating system) ako je uopšte potrebno?

Page 85: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Razvojni tok Nios II sistema Nios II razvojni sistem

77

Gde hardverskim ubrzanjem možemo dramatično da poboljšamo performanse sistema? Na primer:

• Možemo li dodavanjem DMA komponenti eliminisati

izgubljeno vreme procesora pri kopiranju podataka? • Da li bi smo pogodnom instrukcijom mogli da

zamenimo kritičnu petlju DSP algoritma? • Može li Nios II C-to-Hardware (C2H) Acceleration

Compiler da poboljša performanse?

Odgovore na ovakva pitanja, donose zajednički i hardverski i softverski tim.

Definisanje i generisanje sistema pomoću SOPC Builder alata

Posle analize hardverskih zahteva sistema, koristimo SOPC Builder alat koji je uključen Alterin razvojni program Quartus II. Upotrebom SOPC Builder-a možemo da specificiramo Nios II procesorsko jezgro, memoriju i ostale komponente koje naš sistem zahteva. SOPC Builder automatski generiše logiku za povezivanje komponenti u hardverski sistem.

Možemo da odaberemo željeni objekat iz ponuđene liste standardnih procesorskih jezgara i komponenti koje su već ubačene u Nios II Embedded Design Suite. Takođe i sami možete da dodate svoj hardver da bi ste time povećali performanse sistema, kao i da dodate nove logičke instrukcije Nios II jezgru da bi ste ubrzali sam procesor. Ovaj vodič se bavi standardnim procesorima i jezgrima tako da ne pokriva princip dodavanja nove logike sistemu. Primarni produkti SOPC Builder alata su sledeći: SOPC Builder System File (.ptf) – Ovaj fajl čuva hardverski

sadržaj SOPC Builder sistema. Nios II IDE alat zahteva ovakav sistemski fajl da bi mogao da kompajlira napisan program.

HDL fajlovi – fajlovi jezika za opis hardvera (HDL -

Hardware description language ). Rezultat su dizajniranja hardvera uz pomoć SOPC Builder alata. Softver Quartus II koristi HDL fajlove da bi preveo celokupan FPGA dizajn u objektni SRAM fajl (.sof – SRAM Object File).

Page 86: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Razvojni tok Nios II sistema Nios II razvojni sistem

78

Quartus II zadaci prilikom razvoja hardvera

Pošto ste napravili Nios II sistem koristeći SOPC Builder, Vi ste ga automatski integrisali u krajnji Quartus II projekat. Korišćenjem programa Quartus II, Vi ćete izvršiti sve zadatke potrebne za kreiranje finalnog hardverskog dizajna na jednoj FPGA strukturi.

Kao što je prikazano na slici 1–1, većina FPGA dizajna

uključuje ligiku koja je van Nios II sistema. U mogućnosti ste da integrišete svoje lične hardverske module u FPGA dizajn, ili da integrišete druge, već napravljene module, koji podležu pravu intelektualne svojine (intellectual property (IP) design modules), a dostupni su od strane Altere ili IP provajdera trećih lica. Ovaj vodič ne upućuje na načine dodavanja logike izvan Nios II sistema.

Koristeći program Quartus II, Vi takođe možete razmestiti

pinove za ulazno/izlazne signale, specificirati vremenske zahteve i uključiti druga dizajnerska ograničenja. Konačno, kompajliranjem Quartus II projekta nastaće SRAM Object File koji će konfigurisati FPGA strukturu.

SRAM objektni fajl ćemo preneti na FPGA koji je na

razvojnoj ploči, koristeći Alterin kabl za prenos, kao što je na primer on USB-Blaster. Posle konfigurisanja, FPGA radi po specifikaciji hardverskog dizajna, koji je u ovom slučaju Nios II procesorski sistem.

Za sva buduća pitanja oko korišćenja Quartus II

programa, pogledajte Quartus II Tutorial u okviru Quartus II sistema za pomoć. Može se naći u priručnicima Introduction to the Quartus II Software i Quartus II Handbook, koji su pak dostupni na adresi: www.altera.com/literature/lit-qts.jsp.

Nios II IDE radovi na razvoju softvera

Upotrebom alata Nios II IDE, ispunićete sve softverske zadatke prema Vašem Nios II procesorskom sistemu. Pošto ste generisali sistem sa SOPC Builder-om, Vi možete početi sa pisanjem C/C++ koda za aplikacije i to neposredno sa alatom Nios II IDE. Altera pruža izdvajanje hardverskog sloja (HAL-hardware abstraction layer) što Vam omogućava da pišete programe za Nios II brzo i nezavisno od hardverskih detalja na niskom nivou. Pored Vašeg aplikacionog koda, Vi možete da sastavite i ponovo upotrebite gotove biblioteke u Vaš Nios II IDE projekat.

Page 87: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Razvojni tok Nios II sistema Nios II razvojni sistem

79

Ako nemate potrebnu ploču, za softverski razvoj možete da pokrenete i debagujete Vaš kod uz pomoć Nios II instruction set simulatora (ISS). ISS simulura rad procesora, memorije i stdin/stdout/stderr nizova, što Vam omogućava da verifikujete programski tok i ispravnost algoritma. Ukoliko imate potrebnu ploču sa konfigurisanim Altera FPGA čipom na opisani Nios II sistem, možete da prebacite svoj softver na ploču pomoću Altera prenosnog kabla, kao što je USB-Blaster.

Za kreiranje nove Nios II C/C++ aplikacije, alat Nios II IDE zahteva SOPC Builder System File. Biće Vam takođe potreban SRAM Object File za konfigurisanje FPGA pre nego što pokrenete i debagujete napisanu aplikaciju na hardver.

IDE može da proizvede nekoliko tipova fajlova na svom izlazu koje su date u nastavku. Da napomenemo, da ne zahtevaju svi projekti baš svaki od ovih fajlova.

system.h fajl – definiše simbole za integrisanje hardvera u sistem. IDE automatski kreira ovaj fajl kada kreiramo novi projekat.

Executable and Linkable Format File (.elf) – format izvršnih i fajlova za linkovanje koji su rezultat kompajliranja C/C++ aplikacije, čiji se sadržaj prenosi direktno na Nios II procesor.

Memory initialization files (.hex) – fajlovi za inicijalizaciju memorije – neke on-chip memorije mogu doći sa unapred definisanim memorijskim sadržajem. IDE generiše inicijalizacione fajlove upravo za ove memorije da bi ostvario inicijalizaciju njihovog sadržaja.

Flash programming data – IDE uključuje i flas-programator koji Vam omogućava da upišete svoj program u flash-memoriju. Flash-programator automatski dodaje odgovarajući boot code koji omogućava Vašem programu da se butuje direktno sa flash-memorije. Flash-programer možete takođe koristiti i za upisivanje proizvoljnog sadrzaja na flash-memoriju. Ovaj vodič je prvenstveno posvećen prebacivanju izvršnog

fajla i fajla za linkovanje direktno na Nios II sistem.

Za detalje oko razvoja softvera za Nios II procesor, pogledajte Nios II Software Developer's Handbook i Nios II IDE help podršku.

Page 88: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Razvojni tok Nios II sistema Nios II razvojni sistem

80

Izvršavanje i debagovanje softvera na ploči

Alat Nios II IDE poseduje sve što Vam je potrebno za prebacivanje softvera na ciljnu ploču i izvršavanje i debagovanje programa na samom hardveru. IDE debager vam pruža mogućnost da izvršavate instrukciju po instrukciju na procesoru, tj. da se krećete korak po korak kroz napisan kod, da podešavate tačke prekida i analizirate stanje promenljivih tokom izvršavanja programa.

Za sve nedoumice oko izvršavanja i debagovanja Nios II programa, pogledajte Software Development Tutorial dostupan u okviru Nios II IDE help podrške.

Varijacije razvojnog toka

Razvojni tok nije striktno linearan. Ovaj odeljak opisuje osnovne varijacije.

Prepravke softvera i hardvera Posle testiranja softvera na ciljnoj ploči možete uvideti da

Vaš Nios II sistem zahteva bolje performanse. U tom slučaju, moraćete da se vratite na korake dizajniranja softvera kako bi ste izvršili poboljšanje algoritma. Druga opcija je da se vratite na korake dizajniranja hardvera i uvedete dodatnu logiku za ubrzanje hardvera. Ako sistem treba da izvršava višestruke, međusobno isključive zadatke, Vi bi mogli čak i da donesete odluku o upotrebi dva ili više Nios II procesora, koji će međusobno podeliti radne zadatke i time uvećati performanse u odnosu na individualan rad.

Iterativno kreiranje Nios II sistema

Osnovno pravilo kod izgradnje kompleksnog Nios II sistema je početi prvo sa jednostavnijim sistemom, koji ćete onda iterativo nadograđivati. Nakon svake iteracije možete proveriti da li sistem pruža očekivane rezultate. Možete da rešite da verifikujete osnovne komponente sistema, kao što su procesor, memorija i komunikacioni kanali, pre nego što dodate nove složenije komponente. Kada razvijate sopstvene komponente ili sopstvene instrukcije, prvo integrišite svoju logiku u minimalan sistem da bi ste proverili da li ispunjava očekivane rezultate. Kasnije ćete lako da integrišete sopstvenu “ispravnu” logiku u kompleksniji sistem.

Page 89: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Razvojni tok Nios II sistema Nios II razvojni sistem

81

Nios II Embedded Design Suite podrška – pruža nekoliko radnih Nios II referentnih projekata, koji Vam mogu poslužiti kao polazna tačka u vašim projektima. Posle instalacije Nios II Embedded Design Suite, pogledajte direktorijum <Nios II EDS install path>/examples/verilog ili direktorijum <Nios II EDS install path>/examples/vhdl.

Verifikovanje sistema uz pomoć alata Hardware Simulation Tools

U mogućnosti smo i da izvršimo hardversku simulaciju

izvršavanja softvera na Nios II sistemu, koristeći alat kao što je ModelSim RTL simulator. Hardverska simulacija je korisna u nekim slučajevima, uključujući sledeće:

Za proveru ispravnog radnog cikljusa Nios II sistema, pre nego što on postane dostupan kao gotov uređaj.

Za verifikaciju funkcionalnosti samostalno kreiranih komponenti i instrukcija pre isprobavanja na hardveru. Korak simulacije hardvera nije prikazan na Slici 1–2. Ako

budete kreirali vaš Nios II sistem pomoću standardnih komponenti koje su dostupne pri Nios II Embedded Design Suite podršci, najlakši način za proveru funkcionalnosti je prebacivanje hardverskog i softverskog dizajna direktno na razvojnu ploču.

Za detalje kako se izvodi simulacija hardvera za Nios II

sistem, pogledajte AN351: Simulating Nios II Embedded Processor Designs.

Page 90: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

82

3. Izrada primer - projekta Ovaj deo vodiča kroz razvojni tok Nios II sistema će Vam

pomoći da kreirate projekat koji smo kao konkretan primer osmislili za ovu priliku. Izvešćemo sledeće neophodne korake:

1. Instaliranje projektnih fajlova

2. Analiziranje sistemskih zahteva

3. Pokretanje Quartus II programa i otvaranje “Tutorial

Example Design Project” – primer projekta

4. Kreiranje novog SOPC Builder sistema

5. Definisanje sistema u SOPC Builder-u

6. Integrisanje SOPC Builder sistema u Quartus II projekat

7. Prebacivanje hardverskog dizajna na ciljni FPGA

8. Razvoj softvera korišćenjem Nios II IDE alata

9. Izvršavanje programa

Instaliranje projektnih fajlova

Pre nego što nastavite, moraćete da instalirate programe Quartus II i Nios II Embedded Design Suite. Moraćete takođe da skinete sa Alterinog veb sajta tutorial design fajlove. Ovi gotovi fajlovi se koriste kao polazna tačka u Quartus II projektu. Možete ih naći na sledećem linku:

www.altera.com/literature/lit-nio2.jsp.

Uradite sledeće korake da bi ste podesili dizajnersko okruzenje:

1. Pronađite pomenute design fajlove na veb sajtu Altere.

Napominjemo da su u .zip obliku! Različita grupa design-fajlova postoji za svaku Altera Nios razvojnu ploču!

2. Prebacite design-fajlove na neki od sledećih načina:

a) Ako imate Nios razvojnu ploču, skinite fajlove koji su za nju predviđeni.

b) Ako imate neku drugu srodnu ploču, skinite fajlove za koje smatrate da su najpribližniji vašoj ploči. Na primer, ako je vaša ploča StratixII, preuzmite StratixII design files (NiosII_stratixII_2s60_es.zip).

Page 91: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Izrada primer - projekta Nios II razvojni sistem

83

c) Ako nemate nikakvu ploču, možete da koristite bilo koji od design-fajlova.

3. Raspakujte sadržaj zip fajla u neki direktorijum na vašem

kompjuteru. Nemojte koristiti razmake u imenu direktorijuma.

Sve što budemo radili u nastavku ovog vodiča odnosiće se na direktorijum <Design Files Directory>.

Analiza sistemskih zahteva

U ovom ovde delu biće opisano koji su to sistemski zahtevi koje naš primer-projekat treba da ostvari. Ciljevi našeg projekta su sledeći:

Demonstracija jednostavnog Nios II procesorskog sistema koji će moći da se upotrebi za kontrolu aplikacija.

Izgradnja praktičnog, realno ostvarljivog sistema. Demonstriranje najosnovnijih i efektivnih tehnika za izgradnju

praktičnog, sopstvenog Nios II sistema. Izgradnja Nios II sistema koji će raditi na bilo kojoj ploči sa

Altera FPGA čipom. Celokupan sistem mora da koristi jedino resurse na čipu, tj. potrebno je bude potpuno funkcionalan bez oslanjanja na razvojnu ploču.

Projekat bi trebalo da očuva princip on-chip logike i memorijskih resursa, kako bi mogao bez problema da bude ugrađen u širok spektar FPGA čipova.

Ovi zahtevi vode ka donošenju sledećih odluka:

Nios II sistem koristi jedino sledeće ulaze i izlaze:

• jedan ulaz za clock , na koji se može dovesti bilo koja konstantna frekvencija

• osam opcionih izlaza za kontrolu LE-dioda na ploči

U našem projektu učestvuju sledeće komponente:

• Nios II/s jezgro sa 2 Kbajta instrukcionog keša • 20 Kbajta on-chip memorije • tajmer • JTAG UART • osam izlaza-isključivo paralelni I/O (PIO) pinovi • System ID component

Za kompletne informacije o ovim i drugim komponentama, pogledajte: Quartus II Handbook Volume 5: Embedded Peripherals.

Page 92: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Izrada primer - projekta Nios II razvojni sistem

84

Pokretanje Quartus II programa i otvaranje “Tutorial Example Design Project”

Za počezak, otvorite Quartus II projekat kao tutorial example design. Ovaj Quartus II projekat služi kao jednostavna polazna tačka za razvoj Nios II sistema. Quartus II projekat sadrži sva podešavanja i sve design-fajlove potrebne za kreiranje SRAM Object File-a.

Za otvaranje Quartus II projekta, i uradite sledeće korake:

1. Pokrenite program Quartus II.

Na Windows platformama kliknite na dugme Start, postavite pokazivač miša najpre na Programs, pa Altera, pa Quartus II <version>, i onda kliknite na Quartus II <version>. Kod Linux platforme, ukucajte quartus u polje command-prompt-a, stavljajući za putanju pretraživanja, direktorijum programa Quartus II.

2. U padajućem meniju File, odaberite Open Project. Budite pažljivi da na pomešate Open sa Open Project. Pojaviće se Open Project dijalog boks.

3. Pronađite <Design Files Directory>. 4. Selektujte nios2_quartus2_project.qpf fajl i kliknite Open.

Ovime smo otvorili naš projekat. 5. Ako Vam se u programu automatski ne prikaže Block

Diagram File (.bdf) nios2_quartus2_project.bdf (pogledajte ime prozora na Slici 1–3), uradite sledeće:

a. U File meniju kliknite Open. Otvoriće se Open dijalog

boks. b. Pronađite <Design Files Directory>. c. Selektujte nios2_quartus2_project.bdf i kliknite Open.

Slika 1–3 prikazuje blok dijagram fajl nios2_quartus2_project.bdf.

Block Diagram File se sastoji od ulaznog porta za clock  i 

osam  izlaznih  pinova  za  pogon  LE‐dioda  na  ploči. U  nastavku ćemo  kreirati  novi  SOPC  Builder  system,  koji  će  konačno uspostaviti vezu između ovih pinova. 

Page 93: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Izrada primer - projekta Nios II razvojni sistem

85

Slika 1–3. Primer Design Block Diagram fajla

Kreiranje nove SOPC Builder System strukture

Mi koristimo SOPC Builder alat da bi smo generisali Nios II procesorski sistem, ubacivali željene komponente i konfigurisali njihove međusobne veze. Uradite sledeće korake da bi ste kreirali novu SOPC Builder system strukturu:

U padajućem meniju Tools, programa Quartus II, kliknite na SOPC Builder. SOPC Builder se pokreće i pojavljuje se prozor Create New System.

Unesite first_nios2_system za ime sistema.

Odaberite neki od Verilog ili VHDL jezika za opis hardvera.

Možete da prihvatite i difoltna podepšavanja, a kasnije kada generišete sistem, SOPC Builder će napraviti izlazni design-fajl u jeziku koji tada budete selektovali.

Cliknite na OK. Dobićete SOPC Builder grafičko koruženje.

Slika 1–4 na sledećoj strani prikazuje kako izgleda grafički

korisnički interfejs SOPC Builder-a u njegovom inicijalnom stanju.

Page 94: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Izrada primer - projekta Nios II razvojni sistem

86

Slika 1–4. SOPC Builder grafički korisnički interfejs u inicijalnom stanju

Definisanje sistema u SOPC Builder-u

SOPC Builder koristimo da bi smo definisali hardverske karakteristike Nios II sistema i to koje će Nios II jezgro biti upotrebljeno i koje će sve komponente biti uključene u sistem. SOPC Builder ne definiše softversko ponašanje, kao na primer gde su u memoriji smeštene instrukcije ili gde se šalju stderr nizovi karaktera.

U ovom delu, mi ćemo izvesti sledeće korake:

Odabrati ciljni FPGA i podesiti Clock.

Dodati Nios II jezgro, on-chip memoriju i ostale

komponente.

Specificirati bazne adrese i prioritete među zahtevima prekida (request IRQ priorities).

Generisati SOPC Builder sistem.

Proces dizajniranja u okviru SOPC Builder-a ne bi moralo

da bude linearan. Koraci dizajniranja u ovom vodiču su predstavljeni u čisto pravolinijskom poretku i to zbog toga da bi novi korisnici lakše razumeli celu proceduru. Međutim, Vi ćete kasnije biti u mogućnosti da prema svojim potrebama i po sopstvenom rasporedu vršite sva projektovanja u okviru SOPC Builder-a.

Page 95: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Izrada primer - projekta Nios II razvojni sistem

87

Određivanje ciljnog FPGA i podešavanja vezana za Clock

Sekcije za podešavanja, kao što su Target i Clock Settings

iz System Contents taba, određuju odnose između SOPC Builder okruženja i ostalih uređaja u sistemu. Izvešćemo sledeća podešavanja:

• U polju Device Family odaberite željeni Altera FPGA.

• Dvostrukim klikom na polje u kome je clk, dobićete

mogućnost da podesite frekvenciju u MHz. Unesite vrednost za frekvenciju kao što je prikazano u Tabeli 1–1, i pritisnite Enter. Po difoltu, ime ulaznog clock-a je označeno sa clk. Frekvencija koju ste postavili za clk mora da odgovara oscilatoru koji taktuje FPGA.

Tabela 1–1. Frekvencija Clock-a za željenu ploču

Željena ploča Frekvencija

Nios Development Board (sve verzije) ili ako radite bez ploče 50 Mhz

Proizvoljna ploča Ista kao i frekvencija oscilatora na ploči

Sada možemo da počnemo sa dodavanjem hardverskih

komponenti SOPC Builder sistemu. Kako budete dodavali svaku novu komponentu, moraćete celishodno da je konfigurišete, kako bi odgovarala specifikacijama celog projekta.

Dodavanje on-chip memorije

Procesorski sistemi zahtevaju minimum jednu memoriju za podatke i instrukcije. U našem primeru, koristićemo jednu memoriju, veličine 20Kbajta, koja će biti zajednička i za instrukcije i za podatke. Da bi smo ubacili memoriju, uradićemo korake koji slede:

U listi dostupnih komponenti (leva strana prozora u System

Contents tabu), proširite sa plusićem stavku Memories and Memory Controllers, pa onda i stavku On-Chip i na kraju kliknite na On-Chip Memory (RAM or ROM).

Page 96: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Izrada primer - projekta Nios II razvojni sistem

88

Kliknite na Add. Pojaviće se prozor The On-Chip Memory (RAM or ROM) vizarda.

U Block Type listi, selektujte M4K. U polju Total memory size, unesite 20 i odaberite Kbytes,

kako bi postavili veličinu naše memorije na željenih 20 Kbajta (pogledajte Sliku 1–5).

Ne menjajte ni jedno od ostalih difoltnih podešavanja.

Figure 1–5. On-Chip Memory MegaWizard

Kliknite Finish. Vratite se u SOPC Builder System Contents tab i sada će se on-chip memorija sa imenom onchip_mem nalaziti u listi dostupnih komponenti.

Za kasnije informacije o on-chip memoriji, možete da

kliknete na dugme Documentation u okviru On-Chip Memory (RAM or ROM) vizarda.

Page 97: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Izrada primer - projekta Nios II razvojni sistem

89

Dodavanje Nios II procesorskog jezgra

U ovom delu, dodaćemo Nios II jezgro i konfigurisati ga

da koristi 2 Kbajta on-chip keš memorije za instrukcije. Iz čisto edukativnih razloga, primer iz ovog vodiča koristi “standardno” Nios II jezgro, koje obezbeđuje balans između performansi i iskorišćenosti resursa.

Potrebno je uraditi sledeće stvari:

U listi raspoloživih komponenti, odaberite Nios II Processor. Kliknite na Add. Pojaviće se Nios II Processor MegaWizard,

prikazujući stranu Nios II Core. Izvršite sledeća podešavanja (pogledajte Sliku 1–6):

Nios II Core: Nios II/s Hardware Multiply: None Hardware Divide: Off Reset Vector: Memory: onchip_mem Offset: 0x0 Exception Vector: Memory: onchip_mem Offset: 0x20

Figure 1–6. Nios II MegaWizard – Nios II Core Page

4. Kliknite na karticu Caches and Memory Interfaces.

Page 98: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Izrada primer - projekta Nios II razvojni sistem

90

5. Izvršite sledeća podešavanja (pogledajte Sliku 1–7): Instruction Cache: 2 Kbytes Enable Bursts: Off Include tightly coupled instruction master port(s): Off

Figure 1–7. Nios II MegaWizard – Caches and Memory Interfaces page

Nemojte menjati ništa od podešavanja u karticama Advanced Features, JTAG Debug Module, ili Custom Instructions.

Kliknite Finish. Vratite se u SOPC Builder System Contents

tab i primetićete da se Nios II jezgro pod imenom cpu, sada nalazi na listi dostupnih komponenata.

Za sve detalje oko konfigurisanja Nios II jezgra,

pogledajte poglavlje Instantiating the Nios II Processor in SOPC, priručnika Builder Nios II Processor Reference Handbook.

SOPC Builder automatski povezuje instrukcije i podatke

master porta Nios II jezgra, na slave port memorije (videti Sliku 1–8). Kada pravite vaš sistem, uvek proverite da li automatsko povezivanje SOPC Builder-a, odgovara vašim sistemskim zahtevima.

Page 99: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Izrada primer - projekta Nios II razvojni sistem

91

Za sve buduće detalje oko povezivanja memorije u Nios II sistemu, pogledajte poglavlje Building Memory Subsystems Using SOPC Builder priručnika Quartus II Handbook Volume 4: SOPC Builder.

Slika 1–8. System Contents tab sa Nios II jezgrom i on-chip memorijom

Dodavanje JTAG UART komponente (univerzalni asinhroni primo-predajni kontroler)

JTAG UART omogućava prikladan način komunikacije i razmene podataka sa Nios II procesorom, preko USB-Blaster prenosnog kabla. Ovu komponentu ćemo dodati na sledeći način:

• U listi raspoloživih komponenti, proširite stavku Interface

Protocols, pa zatim i stavku Serial, a onda kliknite na JTAG UART.

• Kliknite Add. Pojaviće se prozor JTAG UART MegaWizard.

• Ne menjajte ništa od difoltnih podešavanja  (pogledajte Sliku 

1–9 na sledećoj strani).  

4. Kliknite Finish. Vratite se u SOPC Builder System Contents tab i primetite da se sada u listi komponenti pojavila i stavka JTAG UART, pod imenom jtag_uart.

  SOPC Builder automatski povezuje master port za

podatke na Nios II jezgru sa JTAG UART slave portom. (Master port za instrukcije nije povezan na JTAG UART, jer on nije memorijska komponenta i ne može da šalje instrukcije Nios II procesoru.) Kada budete gradili vaš sistem, uvek obratite pažnju, da li je automatsko povezivanje od strane SOPC Builder-a, odgovarajuće vašim sistemskim potrebama.

Page 100: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Izrada primer - projekta Nios II razvojni sistem

92

Za sve buduće informacije o JTAG UART komponenti, pogledajte poglavlje JTAG UART Core iz priručnika Quartus II Handbook Volume 5: Embedded Peripherals.

Slika 1–9. JTAG UART MegaWizard

Dodavanje tajmera

Mnogi sistemi za kontrolu imaju u svom sastavu tajmersku komponentu koja im omogućava precizna vremenska izračunavanja. Da bi imao periodičan sistemski takt, Nios II HAL zahteva tajmer.

Odradićemo  sledeće  korake  da  bi  smo  dodali  tajmer  u 

našem sistemu:  

U listi raspoloživih komponenti, proširite stavku Peripherals, pa zatim i Microcontroller Peripherals, a onda kliknite na Interval Timer.

2. Kliknite Add. Pojaviće se prozor Interval Timer MegaWizard. 3. U listi Presets, odaberite Full-featured. Nemojte menjati ništa od ostalih difoltnih podešavanja

(pogledajte Sliku 1–10 na sledećoj strani).

Page 101: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Izrada primer - projekta Nios II razvojni sistem

93

Slika 1–10. Izgled prozora Interval Timer vizarda

Kliknite Finish. Vratite se u SOPC Builder System Contents tab i videćete da se sada u listi dostupnih komponenti pojaila i komponenta tajmer pod imenom timer.

Kliknite desnim tasterom miša na timer, a zatim na

Rename.

Unesite novo ime sys_clk_timer i pritisnite Enter.  

Dobra  je  praksa  da  date  imena  hardverskim komponentama  koja  se  lako  pamte.  Nios  II  programi  koriste upravo  simbolička  imena  za  označavanje  svojih  hardverskih komponenti.  Zbog  ove  činjenice,  adekvatan  izbor  imena komponenti,  može  učiniti  rad  sa  Nios  II  programima jednostavnijim i razumljivijim.   

Za  sve buduće  informacije vezane  za  tajmere, pogledajte poglavlje Timer Core  , priručnika Quartus  II Handbook Volume  5: Embedded Peripherals.  

Page 102: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Izrada primer - projekta Nios II razvojni sistem

94

Dodavanje System ID Pheripheral opcije

System ID Peripheral opcija, predstavlja zaštitu protiv

slučajnog prebacivanja kompajliranog softvera na drugi tip Nios II sistema. Ako sistem poseduje ID peripheral, Nios II IDE će vas sprečiti da prebacite programe predviđene za drugi, različiti sistem.

Da bi smo uključili i ovu opciju u naš sistem, potrebno je da uradimo sledeće:

U listi raspoloživih komponenti, proširite stavku

Peripherals, pa zatim i Debug and Performance, a onda kliknite na System ID Peripheral.

Kliknite na dugme Add.... Pojaviće se prozor System ID

Peripheral. Kao što možete videti na Slici 1–11, System ID Peripheral opcija ne sadrži nikakve opcije za podešavanja od strane korisnika.

Slika 1–11. Izgled prozora System ID Peripheral

Kliknite Finish. Ako se sada budete vratili u SOPC Builder System Contents tab, pronaćićete na listi dostupnih komponenata i upravo pridodatu stavku System ID peripheral i to označenu imenom sysid.

Za sve druge informacije vezane za System ID peripheral opciju, pogledajte  poglavlje  System  ID  Core  u  priručniku  Quartus  II Handbook Volume 5: Embedded Peripherals.  

Page 103: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Izrada primer - projekta Nios II razvojni sistem

95

Dodavanje PIO bloka

PIO blok sa svojim signalima (programabilni ulazno-

izlazni signali) predstavljaju jednostavan način da Nios II procesorski sitem prima stimuluse iz spoljnjeg sveta i prosleđuje odgovarajuće signale ka svojim izlazima. Kompleksne aplikacije za kontrolu nekih procesa, mogu da sadrže i stotine PIO signala nad kojima Nios II procesor vrši monitoring. Naš primer koristi osam PIO signala kojima kontroliše rad LE-dioda na ploči.

Uradite sledeće korake da bi smo priključili našem sistemu

i PIO blok. Uradićete ove korake čak i ako vaša ploča ne sadrži LE-diode.

U listi raspoloživih komponenata proširite stavku

Peripherals, a zatim i Microcontroller Peripherals, a onda kliknite na PIO (Parallel I/O).

Kliknite Add. Pojaviće se prozor PIO (Parallel I/O)

MegaWizard.

Nemojte menjati difoltna podešavanja. Kao što možete videti na Slici 1–12, po difoltu je širina izlaznog porta postavljena na 8-bitova, što se tačno poklapa sa potrebama našeg primer-projekta.

Slika 1–12. Izgled prozora PIO vizarda

Page 104: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Izrada primer - projekta Nios II razvojni sistem

96

Kliknite Finish. Ako se sada vratite u SOPC Builder System Contents tab, videćete da se u listi dostupnih komponrnti nalazi i stavka PIO i to pod imenom pio.

Kliknite desnim tasterom miša na pio, a zatim na Rename.

Unesite za ime led_pio i pritisnite Enter.

U Nios II programima se vrši ovakvo imenovanje upravo

ubačene komponente. Moraćete da upotrebite bač ovo ime, jer u protivnom, programi napisani za ovaj vodič, neće funkcionisati u narednim koracima.

Za sve dodatne informacije vezane za PIO blok, pogledajte

poglavlje PIO Core , priručnika Quartus II Handbook Volume 5: Embedded Peripherals.

Dodela baznih adresa i utvrđivanje prioriteta prekida

Na ovom mestu ćemo dodati sve potrebne hardverske

komponente našem sistemu. Prvo moramo odrediti kako komponente unutar sistema međusobno interaguju. U ovom odeljku, mi ćemo dodeliti baznu adresu svakoj slave komponenti i dodeliti prioritet zahtevima za prekid (IRQ-interrupt request) i to za JTAG UART i tajmer.

SOPC Builder poseduje komandu Auto-Assign Base

Addresses, kojom se lako komponentama dodeljuju adrese. Kod mnogih sistema, uključujući tu i naš primer-projekat, ovo je potpuno adekvatno rešenje. Međutim, vi možete da podesite bazne adrese na način koji vama odgovara.For many systems, including this example design, Auto-Assign Base Addresses is adequate. However, you can adjust the base addresses to suit your needs. U nastavku su date neke smernice za dodelu baznih adresa:

Jezgro Nios II procesora može da adresira 31-bitni adresni

raspon. Vaše bazne adrese moraju da se nađu između 0x00000000 i 0x7FFFFFFF.

Nios II programi koriste simboličke konstante da bi ukazali na adresu. use symbolic constants to refer to addresses. Nemojte da brinete oko izbora vrednosti adrese, već uzmite neju koja se lako pamti.

Page 105: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Izrada primer - projekta Nios II razvojni sistem

97

Adrese komponenti čije se vrednosti razlikuju na poziciji samo jednog bita, poboljšavaju efikasnost hardvera. Nemojte težiti sabijanju svih baznih adresa u što manji adresni opseg, jer to može dovesti do lošijeg iskorišćenja hardvera.

SOPC Builder neće pokušavati da poređa zasebne memorijske komponente u blizak memorijski raspon. Na primer, ako vi želite da vam on-chip RAM i off-chip RAM budu tretirane kao jedinstven memorijski opseg, moraćete eksplicitni da im dodelite bazne adrese.

SOPC Builder nam stavlja na raspolaganje i komandu

Auto-Assign IRQs, koja povezuje IRQ signale sa ciljem da se dobije ispravan odziv hardvera.

Nios II HAL tretira niske IRQ vrednosti kao veći prioritet.

Komponenta tajmer mora da ima najveći IRQ prioritet, kako bi se sačuvala tačnost sistemskog takta.

Da bi smo dodelili odgovarajuće bazne adrese i pravilno

rasporedili prioritete IRQ signala, uradimo sledeće:

• U padajućem meniju System, kliknite na Auto-Assign Base Addresses da bi Builder automatski dodelio funkcionalne bazne adrese svim komponentama u sistemu. Base i End vrednosti u tabeli aktivnih komponenti se mogu i dalje promeniti u odnosu na vrednosti koje je postavio SOPC Builder.

• Kliknite na IRQ vrednost jtag_uart komponente da bi ste je

selektovali.

• Unesite vrednost 16 i pritisnite Enter da potvrdite novu IRQ vrednost.

Slika 1–13. Izgled System Contents taba kompletnog sistema

Page 106: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Izrada primer - projekta Nios II razvojni sistem

98

Generisanje SOPC Builder sistema

Napokon smo spremni da generišemo naš SOPC Builder

sistem. Uradimo sledeće:

• Otvorimo System Generation tab. • Isključimo dugme Simulation. Create simulator project files.,

što će nam uštedeti vreme jer ovo uputstvo ne pokriva opis hardverske simulacije.

• Kliknimo  na Generate.  Ovime  započinje  proces  generisanja 

sistema.  Ovaj  proces  će  potrajati  nekoliko minuta.  Kada  se završi, u System Generation tabu će se pojaviti poruka ʺInfo: System generation was successful.ʺ (pogledajte Sliku 1–14).  

  Kliknimo na Exit da bi smo se vratili u program Quartus II.

Čestitamo! Upravo ste završili sa kreiranjem Nios II procesorskog sistema. Sada ste spremni da integrišete ovaj sistem u Quartus II projekat hardvera i počnete sa korišćenjem alata Nios II IDE za razvoj softvera.

Slika 1–14. Izgled poruke o uspešnom generisanju sistema

Page 107: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Izrada primer - projekta Nios II razvojni sistem

99

Za više detalja u vezi generisanja sistema uz pomoć alata SOPC Builder, pogledajte priručnik Quartus  II Handbook Volume 4: SOPC Builder. Za detalje oko hardverske simulacije jednog Nios II  sistema,  pogledajte  priručnik  AN351:  Simulating  Nios  II Embedded Processor Designs.  

Integrisanje SOPC Builder System-a u Quartus II projekat

U ovom delu ćemo izvođenjem predstavljenih koraka kompletirati naš hardverski dizajn:

Ubacićemo naš SOPC Builder system modul u Quartus II

project. Dodelićemo pinove FPGA čipu. Kompajliraćemo Quartus II project. Verifikovaćemo vremena.

Ako ne posedujete razvojnu ploču, možete da preskočite

ovaj odeljak i odete direktno na naslov “Razvoj softvera korišćenjem Nios II IDE paketa”, koji se nalazi na strani 34. Čitanjem ćete se opet bolje upoznati sa tokom hardverskog dizajna. Međutim, koraci koji budu ovde obrađeni, nemaju uticaja na dalje razumevanje ovog uputstva.

Za sve detaljnije informacije u vezi korišćenja programa

Quartus II, pogledajte Quartus II Tutorial u okviru help podrške samog programa, kao i tekstove Introduction to the Quartus II Software i Quartus II Handbook, dostupne na adresi www.altera.com/literature/lit-qts.jsp.

Uvođenje SOPC Builder System modula u Quartus II Project

Dizajnirani entitet koji predstavlja izlaz SOPC Builder-a,

nazivamo sistemski modul. Da se podsetimo da naš primer-projekat koristi Block Diagram File metod projektovanja od samog početka.

Kako ćemo da ubacimo sistemski modul, zavisi od početne

dizajnerske metode opšteg Quartus II projekta. Na primer, ako smo se mi na početku projektovanja opredelili za korišćenje Verilog VHDL opisa, moraćemo sada da ubacimo first_nios2_system definisan fajlom first_nios2_system.v.

Page 108: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Izrada primer - projekta Nios II razvojni sistem

100

Da bi ste preveli sistemski modul u Block Diagram File, potrebno je da uradite sledeće:

1.   Kliknite  dvostrukim  klikom  na  prazan  prostor  između 

ulaznih i izlaznih pinova. Pojaviće se prozor Symbol.  

2.   Pod  stavkom Libraries otvorite Project.  

3. Kliknite na first_nios2_system. U Symbol prozoru će se pojaviti komponenta sa imenom first_nios2_system.

4. Kliknite OK. Vratite se u Block Diagram File schematic.

5. Postavite komponentu tako da se njeni ulazi na levoj

strani, poklope sa vezama Block Diagram File-a.

6. Kliknite levim tasterom miša da bi ste otpustili komponentu u polje.

7. Ako vaša ciljna ploča ima LE-diode koje je potrebno da

Nios II sistem pogoni, uradite sledeće korake da bi ste povezali LEDG[7..0] izlazne pinove sa komponentom first_nios2_system.

Kliknite i privučite LEDG[7..0], da bi ste ga povezali sa

portom out_port_from_the_led_pio[7..0], komponente first_nios2_system.

Slika 1–15 prikazuje kompletnu šemu povezivanja komponenti, koja ujedno predstavlja i potreban fajl tipa .bdf

Slika 1–15. Kompletirana šema Board Design File-a

Ako ste vi nabavili ploču bez LE-dioda, moraćete da obrišete LEDG[7..0] pinove. Da bi ste ih obrisali, uradite sledeće:

Kliknite negde na površinu LEDG[7..0] simbola da bi ste ga selektovali.

Pritisnite taster Delete.

Da bi ste sačuvali Block Diagram File, kliknite na opciju Save u padajućem meniju File. 

Page 109: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Izrada primer - projekta Nios II razvojni sistem

101

Dodeljivanje pinova FPGA čipu

Ako raspolažete sa pločom koja nije iz Nios familije

proizvoda, moraćete da definišete odgovarajući razmeštaj pinova za FPGA, kako bi on odgovarao priključcima na vašoj ploči.

Ako posedujete Nios razvojnu ploču, preskočite ovaj deo i

idite odmah na naslov “Kompajliranje Quartus II Project-a i verifikacija vremena” na strani 38. Formirani fajlovi Quartus II project-a već sadrže odgovarajuća podešavanja za Nios razvojnu ploču.

Da bi ste kompletirali neophodan posao, vezan za ovaj

odeljak, morali bi da znate raspored pinova na svojoj ploči. Takođe je poželjno da znate i ostale podatke o upotrebi ploče, a koji su izvan dometa obrade ovog dokumenta. Predlažemo da vam pri ruci bude dokumentacija vaše ploče.

Da bi ste prilagodili uređaj, uradite sledeće korake:

U meniju Assignments, kliknite na Device.

Otvoriće se prozor Settings. U listi Family, odaberite FPGA familiju koja

odgovara vašoj ploči.

Potvrdite sa No ako vam se pojavi pitanje: "Device family selection has changed. Do you want to remove all location assignments?"

Pod stavkom Target Device selektujte Specific

device selected in 'Available devices' list.

Pod stavkom Available devices odaberite tačan naziv uređaja koji odgovara vašoj ploči.

Odgovorite sa No ako vam se pojavi prozor sa

pitanjem: "Altera recommends removing all location assignments when changing the device. Do you want to remove all location assignments?"

Kliknite OK da prihvatite podešavanja uređaja.

Slika 1–16 sa sledeće strane, prikazuje izgled Settings

prozora i odabir uređaja Cyclone.

Page 110: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Izrada primer - projekta Nios II razvojni sistem

102

Slika 1–16. Dodela uređaja u Quartus II Settings dijalog boksu

Da bi smo definisali razmeštaj pinova za FPGA, uradićemo sledeće korake:

U meniju Assignments, kliknite na opciju Pins. Otvoriće se

Quartus II Pin Planner. Sam program Quartus II project ima mnogo već postavljenih podešavanja namenjenih Nios razvojnim pločama, koja ćete Vi morati da preinačite kako bi odgovarala vašoj ploči.

U koloni Node Name, označite PLD_CLOCKINPUT[1]. Sada

je potrebno da proširite kategoriju PLD_CLOCKINPUT[1..1] kako bi vam bila vidljiva stavka PLD_CLOCKINPUT[1].

U koloni PLD_CLOCKINPUT[1], kliknite dvaput na ćeliju

Location polja. Pojaviće vam se lista rasporeda raspoloživih pinova.

Selektujte odgovarajući FPGA pin koji je povezan sa

oscilatorom na ploči (Slika 1–17 sa sledeće strane). Ako ste povezali pinove za LE-diode u BDF-šematiku,

ponovite korake od 2 do 4 kako bi ste port LEDG[7..0] pravilno dodelili odgovarajućim pinovima i to za svaku diodu posebno: LEDG[0], LEDG[1], LEDG[2], LEDG[3], LEDG[4], LEDG[5], LEDG[6], LEDG[7].

U File menuju kliknite na komandu Save, kako bi ste sačuvali

nova podešavanja. Zatvorite Pin Planner.

Page 111: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Izrada primer - projekta Nios II razvojni sistem

103

U zavisnosti od ploče, možda ćete imati i još dodatnih podešavanja kako bi vaš projekat korektno funkcionisao. Vi možete i da oštetite ploču, ako se ne budete pridržavali njenih specifikacija. Konsultujte se sa proizvođačem kako bi ste postavili sledeće radne uslove koji neće oštetiti ploču:

Nakon uključenja, svi neiskorišćeni I/O pinovi FPGA čipa

ulaze u stanje visoke impedanse. I/O pinovi su konfigurisani za napon od 3.3 V, po

standardu LVTTL I/O. Ploča mora imati izvor napajanja od 3.3 V, a ovaj napon mora biti i na pinu VCCIO FPGA čipa.

Na svakom pinu porta za LE-diode LEDG[7..0], napon pobude je jednak naponu napajanja, odnosno takođe iznosi 3.3 V.

Slika 1–17. Dodeljivanje pinova uz pomoć alata Quartus II Pin Planner

Za sve buduće nedoumice oko načina dodeljivanja pinova u  okviru programa Quartus  II, pogledajte  referencu: Quartus  II Handbook Volume 2: Design Implementation and Optimization.

Page 112: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Izrada primer - projekta Nios II razvojni sistem

104

Kompajliranje Quartus II Project-a i verifikacija vremena

Tek  smo  na  ovom mestu  spremni  da  kompajliramo  naš 

Quartus  II  projekat  i  proverimo  da  li  on  ispunjava  očekivane vremenske  zahteve.  Isprojektovani  hardver  moramo  da iskompajliramo  kako  bi  smo dobili  objektni  fajl  (SRAM Object File)  koji  jedino  možemo  da  prenesemo  na  ploču.  Nakon izvršenog  kompajliranja, potrebno  je da  analiziramo  vremenske performanse FPGA dizajna i uverimo se da li se on  isto ponaša i na hardveru. Preduzećemo sledeće korake: 

• U meniju Processing, kliknemo na opciju Start Compilation. • Pojaviće se prozor Quartus II Status utility. Proces

kompajliranja će potrajati nekoliko minuta. Kada se završi, trebalo bi da vam se pojavi poruka: "Full compilation was successful."

• Kliknite OK. Program Quartus II će prikazati prozor u kome

je sadržan izveštaj o procesu kompajliranja. • Proširite kategoriju Timing Analyzer u izveštaju

kompajliranja. • Kliknite na Summary. • Proverite frekvenciju prikazanu u polju Actual Time, koja

pripada stavki PLD_CLOCKINPUT[1]. Ovo je maksimalna frekvencija (FMAX) kojom ovaj FPGA dizajn može da radi.

Ako je očitana frekvencija u polju Actual Time i to za pin

PLD_CLOCKINPUT[1], manja od frekvencije oscilatora na ploči, ovaj projekat neće raditi na hardveru, tj. na ploči. Moraćete da izvršite podešavanja dok ne dobijete optimalan takt, ili da redukujete frekvenciju oscilatora koji taktuje FPGA na samoj ploči.

Čestitamo! Upravo ste završili integrisanje Nios II sistema u okviru Quartus II projekta. Sada ste u mogućnosti da prebacite formirani objektni fajl (SRAM Object File) na ciljnu ploču.

Za sve buduće informacije na temu ispunjenja vremenskih 

zahteva  u  okviru  programa  Quartus  II,  pogledajte  priručnik Quartus II Handbook Volume 1: Design and Synthesis.

Page 113: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Izrada primer - projekta Nios II razvojni sistem

105

Prebacivanje hardverskog dizajna na ciljni FPGA

Sada je konačno došao red i da prebacimo SRAM objektni fajl na ploču. Uradićemo zato sledeće stvari:

1. Povezaćemo ploču sa kompjuterom uz pomoć već

pominjanog kabla za prenos i dovesti joj napajanje. 2. U padajućem meniju Tools programa Quartus II,

kliknite na stavku Programmer. Otvoriće se prozor koji će automatski prikazati odgovarajući konfiguracioni fajl (nios2_quartus2_project.sof).

3. Kliknite na dugme Hardware Setup koje se nalazi u

gornjem levom uglu, da bi ste pronašli željeni kabl. Otvoriće se Hardware Setup dijalog boks.

4. Odaberite odgovarajući kabl za prenos iz liste

Currently selected hardware. Ako se željeni kabl ne nalazi na ovoj listi, moraćete da instalirate drajvere koji idu uz vaš kabl.

5. Kliknite na Close.

6. Čekirajte Program/Configure za fajl

nios2_quartus2_project.sof (videti Sliku 1–18).

7. Kliknite na dugme Start. Pokazivač progresije napreduje prema 100% kako program Quartus II konfiguriše FPGA čip.

Slika 1–18. Izgled prozora programatora programa Quartus II

Nakon  ovog  postupka,  Nios  II  sistem  je  konfigurisan  i “udahnut”  na  FPGA  čip,  ali  još  uvek  nema  nijedan  program  u memoriji koji bi izvršavao.  

Page 114: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Izrada primer - projekta Nios II razvojni sistem

106

Razvoj softvera korišćenjem paketa Nios II IDE

U ovom odeljku ćemo započeti sa radom u Nios II integrisanom razvojnom okruženju (IDE - Integrated Development Environment) i kompajlirati jednostavan program napisan na C programskom jeziku. Prikazaćemo samo najosnovnije korake razvoja softvera da bi smo demonstrirali rad hardverskog sistema koji smo formirali u predhodnom odeljku.

Za kompletno uputstvo o korišćenju paketa Nios II IDE

za razvoj softvera, pogledajte vodič Software Development Tutorial koji se nalazi u okviru IDE Help podrške.

Sada je na nama da odradimo sledeće:

Kreiramo novi Nios II C/C++ projekat koji će predstavljati našu aplikaciju (Strana 1–35).

Kompajliramo softverski dizajn (Strana 1–36).

Da bi smo mogli uspešno da odradimo opisane korake, moramo da imamo sistemski fajl (SOPC Builder System File) koji je već kreiran u odeljku “Definisanje sistema u SOPC Builder-u” na strani 21.

Kreiranje novog Nios II C/C++ aplikacionog projekta

Kao što i sam naslov kaže, formiraćemo novi Nios II C/C++ aplikacioni projekat.Application Project. Uradimo sledeće korake: 1. Pokrenimo alat Nios II IDE. Na Windows platformama,

kliknite na Start, stanite pokazivačem miša na Programs, pa na Altera, pa na Nios II EDS <version> i onda kliknite na Nios II IDE <version>. Na Linux platformama, pokrenite izvršni fajl <Nios II EDS install path>/bin/nios2-ide.

2. Ako se bude pojavio prozor Workspace Launcher, kliknite na

OK da bi ste potvrdili difoltno podešen radni prostor. 3. Ako već niste u Nios II C/C++ perspektivi, odaberite Open

Perspective u Window padajućem meniju, a onda kliknite na Nios II C/C++, ili kliknite na Other pa onda kliknite Nios II C/C++, što je zapravo isto.

Page 115: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Izrada primer - projekta Nios II razvojni sistem

107

4. U padajućem meniju File, odaberite stavku New, a zatim kliknite na Nios II C/C++ Application da bi ste otvorili vizard New Project.

5. Kliknite na dugme Browse u okviru naslova Select Target

Hardware. Otvara se prozor Select Target Hardware. 6. Pronađite direktorijum <Design Files Directory>. 7. Selektujte fajl first_nios2_system.ptf. 8. Kliknite na Open. Vratićete se u New Project vizard, a polja

SOPC Builder System i CPU će sada biti popunjena. 9. Selektujte Count Binary u listi Select Project Template. U

polje Name će se automatski upisati count_binary_0 (pogledajte Sliku 1–19).

10. Kliknite na Finish.

Slika 1–19. Nios II IDE vizard novog projekta

Page 116: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Izrada primer - projekta Nios II razvojni sistem

108

Nios II IDE će kreirati i prikazati novoformirane stavke u polju za pregled projekata Nios II C/ C++ Projects koje se nalazi na levoj strani radne površine i to:

count_binary_0 - Vaš C/C++ aplikacioni projekat count_binary_0_syslib – Paket podrške za ploču koji

uključuje detalje u vezi Nios II hardvera altera.components – Povezuje izvorni kod kod svih

komponenti Altere i koristi se tokom procesa debagovanja

Kompajliranje projekta

Sada ćemo da iskompajliramo novoformirani projekat da bi smo dobili sliku o izvršnom softveru. Moraćemo prvo da izvršimo izvesna podešavanja kako bi smo minimizirali veličinu potrebnog prostora koju će softver zauzimati u memoriji, jer naš Nios II hardverski sistem sadrži samo 20 Kbajta memorijskog prostora.

Uradimo sledeće:

Desnim klikom aktivirajte stavku count_binary_0 i kliknite System Library Properties. Otvoriće se prozor Properties i to za odabranu stavku count_binary_0_syslib.

Sada kliknite na stavku System Library koja se nalazi na levoj

strani prozora. Strana System Library sadrži sva podešavanja koja se odnose na to kako softver interaguje sa osnovnim hardverom. Zbog toga, u podešavanjima koja su nam ovde dostupna, figurišu imena komponenti koja smo dodelili kada smo kreirali Nios II hardverski sistem u odeljku “Definisanje sistema u SOPC Builder-u” na strani 21.

Izvršite sledeće promene postavljenih podešavanja, kako bi ste

redukovali veličinu izvršnog fajla (videti Sliku 1–20). Čekirajte opciju Program never exits. Isključite opciju Support C++. Isključite opciju Clean exit (flush buffers). Isključite opciju Small C library. Za više detalja u vezi stavke System Library, pogledajte

priručnik: Nios II Software Developer's Handbook.

Page 117: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Izrada primer - projekta Nios II razvojni sistem

109

Kliknite na OK da bi ste zatvorili prozor Properties i vratili se u IDE radni prostor.

Kliknite desnim tasterom miša ma projekat count_binary_0 u

polju za pregled projekata Nios II C/C++ Projects, zatim kliknite na Build Project.

Pojaviće se prozor Build Project i IDE će otpočeti sa

kompajliranjem projekta. Kada se kompajliranje završi, pojaviće se poruka: "Build completed".

Slika 1–20. Podešavanja vezana za stavku System Library

Page 118: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Izrada primer - projekta Nios II razvojni sistem

110

Pokretanje programa

U ovoj sekciji ćemo pokrenuti program kako bi videli izvršavanje kompajliranog koda. Program možete pokrenuti tako što ćete to učiniti direktno na ploči, ili uz pomoć Nios II ISS – simulatora (ISS - Instruction Set Simulator).

Starije verzije count_binary.h zahtevaju manje modifikacije

kako bi sačuvale kod od zavisnosti u odnosu na novije uređaje. Uverite se da 18. linija koda izgleda baš ovako:

# define LCD_PRINTF(lcd, args...) /* Do Nothing */ Pokretanje programa na ciljnom hardveru

U ovoj sekciji ćemo prebaciti naš program na ciljni hardver

i pokrenuti ga.

Ako ne posedujete razvojnu ploču, idite pravo na naslov “Run the Program on the ISS” koji se nalazi na strani 46.on page 1–40. Da bi ste nastavili dalje, morali bi ste da kompletirate korake iz sekcije “Prebacivanje hardverskog dizajna na ciljni FPGA”, koja se nalazi na strani 40.

Za prebacivanje izvršnog programa na ciljnu ploču,

uradićemo sledeće korake:

1. Kliknite desnim tasterom miša na projekat count_binary_0, odaberite opciju Run As iz ponuđenog menija, i kliknite na Nios II Hardware. Alat IDE će prebaciti program u FPGA na ciljnoj ploči i počeće njegovo izvršavanje.

Ako vam se pojavi prozor sa upozorenjem da je

potrebno da IDE odradi indeksiranje projekta altera.components pre nego što možete da nastavite sa daljim radom, sačekajte nekoliko sekundi dok on to i ne obavi. Izvorni kod se inače indeksira u cilju debagovanja.

Kada  je  ciljni  hardver  počeo  sa  izvršavanjem  programa,  u okviru  konzole  za  parćenje  pojaviće  se  karakteri  koji  su  na izlazima  (pogledati  Sliku  1–21 na  sledećoj  strani). Ako  ste u delu  “Integrisanje  SOPC  Builder  System‐a  u  Quartus  II projekat”, na strani 34, dodali LE‐diode všem Nios II sistemu, onda  će one sada blinkati po  rasporedu brojanja u binarnom brojnom sistemu.  

Page 119: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Izrada primer - projekta Nios II razvojni sistem

111

Kliknite na stavku Terminate (crveni kvadrat) koja se nalazi u gornjem desnom uglu strane konzole za praćenje, da bi ste prekinuli izvršavanje sesije. Kada kliknete na Terminate, alat IDE vas isključuje sa ciljnog hardvera i oslobađate Nios II procesor od daljeg izvršavanja programa.

Slika 1–21. Izgled strane u kojoj pratimo stanja na izlazima Nios II hardvera

Možete i da izvršite izmene programa count_binary.c u alatu IDE i ponovite predhodna dva koraka, kako bi ste se uverili da su vaše promene vidljive i u izvršavanju na samoj ploči.

Za  više  informacija  u  vezi  izvršavanja  i  debagovanja 

programa  na  ciljnom  hardveru,  pogledajte  uputstvo  Software Development  Tutorial  koje  je  dostupno  u  okviru  Help  sistema podrške alata Nios II IDE.

Izvršavanje programa na ISS - simulatoru

U ovoj sekciji ćemo pokrenuti program count_binary_0 na

Nios II ISS - simulatoru. Da bi smo ovo uradili, preduzećemo sledeće korake:

Kliknite desnim tasterom miša na projekat

count_binary_0, odaberite opciju Run As, a zatim kliknite na Nios II Instruction Set Simulator.

Ako vam se pojavi prozor sa upozorenjem da je

potrebno da IDE odradi indeksiranje projekta altera.components pre nego što možete da nastavite sa daljim radom, sačekajte nekoliko sekundi dok on to i ne obavi.

Kada ISS – simulator otpočne sa izvršavanjem programa,

u konzoli za praćenje izvršavanja će se pojaviti

Page 120: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

Izrada primer - projekta Nios II razvojni sistem

112

karakteri koji predstavljaju stanja izlaza programa, (pogledajte Sliku 1–22). Promena stanja izlaza se odigrava veoma sporo, zato što postoji kašnjenje usled petlji u kodu.

Kliknite na dugme Terminate (crveni kvadrat) iz tulbara, koje

se nalazi u gornjem desnom uglu prozora, kako bi ste prekinuli izvršavanje programa na ISS – simulatoru.

Slika 1–22. Izgled strane u kojoj pratimo stanja na izlazima ISS - simulatora

Možete da izvršite promenu u programu count_binary.c i to uz pomoć alata IDE i ponovite predhodna dva koraka, kako bi ste se uverili da se uneta promena ispoljava na ISS – simulatoru.

Za  više  informacija  u  vezi  izvršavanja  i  debagovanja programa  na  ciljnom  hardveru,  pogledajte  uputstvo  Software Development  Tutorial  koje  je  dostupno  u  okviru  Help  sistema podrške alata Nios II IDE.

Page 121: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

113

Završna reč

Čestitamo! Upravo ste kompletirali izgradnju Nios II hardverskog sistema i pokrenuli izvršavanje programa na njemu. Kroz ovaj vodič, Vi ste se upoznali sa sledećim koracima u razvoju Nios II sistema:

Analiza sistemskih zahteva Definisanje i generisanje Nios II sistemskog hardvera u alatu

SOPC Builder Integrisanje SOPC Builder – sistema u Quartus II projekat Kompajliranje Quartus II projekta i verifikovanje vremena Kreiranje novog projekta u alatu Nios II IDE Kompajliranje projekta Izvršavanje programa na ISS – simulatoru i na ciljnom

hardveru Da bi ste uspešno napravili i sledeće korake u

usavršavanju znanja vezanog za Nios II procesor, na raspolaganju Vam je sledeća literatura:

Nios II Software Developer's Handbook – priručnik u kome ćete naći

sve vezano za razvoj softvera za Nios II procesor. Software Development Tutorial – vodič dostupan u okviru help

podrške programskog alata Nios II IDE. Ovaj vodič će Vas do detalja naučiti kako da razvijete, pokrenete i debagujete novo napisani Nios II C/C++ program.

Nios II IDE Help System – Help podrška alata IDE pruža kompletne informacije o njegovim osobinama. Da bi ste otvorili help sistem, kliknite na Help Contents u help meniju, a onda i na stavku Nios II IDE Help u panelu Contents.

Nios II Processor Reference Handbook – Ovaj priručnik daje kompletne informacije o hardverskoj strukturi Nios II procesora.

Quartus II Handbook Volume 4: SOPC Builder – Ovaj članak daje sva uputstva u vezi korišćenja alata SOPC Builder, uključujući teme kao što su izgradnja memorijskih subsistema i kreiranje proizvoljnih komponenti.

Quartus II Handbook Volume 5: Embedded Peripherals – ovaj priručnik sadrži detalje o dostupnim gotovim komponentama koje su besplatno uključene kao deo podrške Nios II Embedded Design Suite.

Za kompletnu listu svih raspoloživih dokumenata za Nios

II procesor, posetite stranicu sa literaturom na adresi: www.altera.com/literature/lit-nio2.jsp.

Page 122: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

114

Literatura

ALTERA, Nios II Processor Reference Handbook, San Jose, 2007 ALTERA, Nios II Software Developer’s Handbook, San Jose, 2007 ALTERA, Quartus® II Development Software Handbook, San Jose, 2007 SYNPLICITY, FPGA Solutions, INC. Sunnyvale, USA, 2004 CHRIS ADLER, PRODUCT MARKETING ENGINEER, AND JAN

TAI,TECHNICAL MARKETING ENGINEER, Nios II: An Extremely Versatile Processor, Sunnyvale, USA, 2004

WOLF W., Modern VLSI design, Prentice Hall, New Jersey, 1998 M. K. STOJČEV, B. D. PETROVIĆ, Arhitektura i programiranje

mikroračunarskih sistema zasnovanih na familiji procesora 80x86, Niš, 1999

Page 123: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

115

Biografija

Vladimir  Balović 

Hajduk  Stanka  8/59 18 000  Niš 

Telefon:  + 381 (18) 4232 964                 + 381 (64) 19 625 19 

e‐mail:  vbalovic@ gmail.com 

 LIČNI PODACI: OBRAZOVANJE: RADNO ISKUSTVO: RELEVANTNI SEMINARI: RAD NA RAČUNARU: JEZICI: OSTALE VEŠTINE: LIČNE OSOBINE:   

 Rođen u Skoplju ( Republika Makedonija ) 21. marta 1980. godine. Državljanstvo Srpsko. Gimnazija, prirodno-matematički smer, stečeno 1999. godine u Prokuplju. Apsolvent na Elektronskom fakultetu u Nišu na smeru Elektronika. U sopstvenoj režiji, na poslovima hobi elektronike, elektroinstalacija, održavanja računara. Uspešni učesnik i takmičar na strani fakulteta na VI simpozijumu industrijske elektronike “INDEL-2006” u Banja Luci, sa realizovanim projektom kontrole temperature tecnosti putem GSM-GPRS modema. Član tima na Međunarodnom kompjuterskom takmičenju studenata “Hard & Soft” održanog u Suceavi ( Rumunija ) 2006. godine sa najoriginalnije fizički realizovanim portabilnim sistemom za praćenje respiracije i pulsa kod čoveka. Microsoft Windows okruženje, Microsoft Office, CorelDRAW, Eagle, Protel, OrCad, VHDL. Srpski, Engleski, Ruski, Makedonski. Poznavanje diskretnih elektronskih komponenti kao i vesto snalazenje sa njihovim datasheet-ovima, iskustvo u fizičkoj realizaciji elektronskih uređaja i sklopova, znanje iz oblasti izrade stampanih ploča, rada na protobordu, osciloskopu i lemljenju. Odlično vladanje matematikom i fizikom i sposobnost prepoznavanja električnih problema i svođenja pod njihove zakonitosti. Pošten, uporan, vredan, precizan, ambiciozan. Spreman bez kompromisa na sve izazove i zrtve u oblasti elektronike.  

 

Page 124: Nios II Processor Reference Handbookes.elfak.ni.ac.rs/Papers/VBalovic - Nios II.pdfI Predgovor U ovom radu su obrađene dve tematske celine vezane za Nios®II sistem, koji je proizvod

116