Sunteți pe pagina 1din 4

ASC 2 – Lucrări de laborator 1/4 Lucrarea nr.

Un sistem de calcul bazat pe procesorul Nios II

1. Scopul lucrării

Această lucrare are ca obiectiv înțelegerea de către studenți a modului în care se construiește
și funcționează un sistem de calcul bazat pe microprocesor. Lucrarea prezintă modul de elaborare a
unui astfel de sistem (folosind aplicația Quartus II Web Edition furnizată de Altera și disponibilă
pe www.altera.com) și execuția unui program scris în limbajul de asamblare al procesorului NIOS II.

2. Mersul lucrării

Într-un sistem de calcul bazat pe microprocesor, programele sunt stocate în memoria


operativă a sistemului, iar execuția lor presupune câteva etape:
 aducerea (extragerea) intrucțiunilor din memorie în procesor;
 decodificarea instrucțiunilor;
 execuția propriu-zisă.

Pentru a putea exemplifica modul în care se execută instrucțiunile unui program, e necesară
elaborarea unui astfel de sistem. Aplicația Quartus II Web Edition oferă posibilitatea de a crea un
sistem de calcul adaptat cerințelor utilizatorului. În această lucrare se vor evidenția pașii care
trebuie să fie urmați pentru construirea sistemului și pentru încărcarea, respectiv execuția unui
program.

2.1 Crearea proiectului și elaborarea sistemului

Orice sistem creat în Quartus II Web Edition trebuie să fie inclus într-un proiect.
Etapele care trebuie parcurse pentru crearea proiectului sunt prezentate în Anexa A.

După crearea proiectului urmează elaborarea sistemului.


Pentru început, se stabilește structura sistemului care trebuie să fie elaborat.
Pentru acest caz, e nevoie de:
 un procesor NIOS II (pentru acest exemplu e suficientă varianta economică Nios II/e)
 un modul de memorie (se va alege un modul de 16 KB de memorie on-chip de tip RAM)
Crearea sistemului se va realiza cu unealta SOPC Builder, accesibilă din meniul Tools.
Etapele care trebuie parcurse pentru construirea sistemului sunt prezentate în Anexa C.

După creare, instanțiere și compilare, sistemul trebuie descărcat pe placa Altera DE1.
Etapele care trebuie parcurse pentru acest lucru sunt prezentate în Anexa D.

Daniel FILIPAȘ 1/4 dfilipas@uoradea.ro


ASC 2 – Lucrări de laborator 2/4 Lucrarea nr. 1

2.2 Compilarea și încărcarea unui program

După ce sistemul a fost descărcat pe placă, se poate trece la elaborarea programului. Pentru
acest exemplu, se dorește testarea unui program care determină numărul maxim de biți de „1”
consecutivi dintr-o secvență binară dată. Programul, scris în limbajul de asamblare al procesorului
NIOS II, este următorul:

.include "nios_macros.s"

.text
.equ NR_INITIAL, 0x90abcdef /* În binar: 1001 0000 1010 1011 1100 1101 1110 1111 */

.global _start
_start:

movia r7, NR_INITIAL /* Copiază în reg. r7 numărul dat ca parametru */


mov r4, r7

CONTOR_BITI:
mov r2, r0 /* Inițializează variabila contor cu 0 */

SECVENTA_ITERATIVA: /* Repetă secvența până când nu mai există cifre de „1” */


beq r4, r0, REZULTAT
srli r5, r4, 1 /* Calculează numărul de „1” prin deplasare la dreapta
a numărului dat ca parametru */
and r4, r4, r5 /* Operația ȘI logic între valoarea de dinainte de deplasare
(r4) și cea de după deplasarea la dreapta (r5) */
addi r2, r2, 1 /* Incrementează variabila contor */
br SECVENTA_ITERATIVA

REZULTAT:
mov r16, r2 /* Înscrie rezultatul în registrul r16 */

SFARSIT:
br SFARSIT /* Așteaptă într-o secvență iterativă (teoretic infinită) */
.end

Acest cod trebuie să fie salvat într-un fișier cu extensia .s și reprezintă sursa care va fi
compilată, încărcată în memoria RAM a sistemului de pe placa DE1 și apoi executată.

Pentru a putea lansa în execuție un program, e necesar ca acesta să fie inclus, la rândul lui,
într-un proiect. Pentru crearea proiectului se utilizează o altă unealtă, Altera Monitor Program.

Etapele care trebuie parcurse pentru acest lucru sunt prezentate în Anexa MP.

2.3 Execuția programului

După încărcarea programului pe placă, fereastra arată ca în figura următoare:

Daniel FILIPAȘ 2/4 dfilipas@uoradea.ro


ASC 2 – Lucrări de laborator 3/4 Lucrarea nr. 1

Se observă codul (fereastra Dissasembly) și starea registrelor procesorului (Registers).

După lansarea în execuție a programului dat, rezultatul va fi următorul:

În registrul r16 se observă rezultatul: secvența dată ca parametru are maxim 4 biți de „1”
consecutivi.

Daniel FILIPAȘ 3/4 dfilipas@uoradea.ro


ASC 2 – Lucrări de laborator 4/4 Lucrarea nr. 1

2.4 Aplicații în cadrul ședinței de laborator

a. Să se execute programul în regim „pas cu pas” și să se observe starea registrelor.

b. Să se modifice programul în așa fel încât, la sfârșit, rezultatul din registrul r16 să fie 10.

c. Să se modifice programul în așa fel încât să determine numărul maxim de cifre binare
alternative (de forma „101010”) din valoarea dată ca parametru. (Indiciu: ce se obține prin
deplasarea cu o poziție la stânga/dreapta și apoi SAU EXCLUSIV cu valoarea dată ca parametru?).

d. Să se scrie un program în limbajul C care să realizeze cerințele de mai sus.

Bibliografie:

http://www.altera.com/education/univ/materials/comp_org/labs/unv-labs.html

Daniel FILIPAȘ 4/4 dfilipas@uoradea.ro