Sunteți pe pagina 1din 3

ASC2 – Lucrări de laborator 1/3 Lucrarea nr.

Porturi de intrare/ieșire
(partea întâi)

1. Scopul lucrării

Obiectivul acestei lucrări este să faciliteze înțelegerea modului în care comunică procesorul
cu perifericele (comutatoarele și LED-urile de pe placa Altera DE1).

2. Mersul lucrării

În general, orice sistem de calcul poate fi comandat și poate oferi rezultate cu ajutorul
perifericelor la care este conectat. Sistemul le poate accesa prin intermediul unor porturi. Porturile
reprezintă o zonă de 4 cuvinte de câte 32 biți din spațiul de adrese al procesorului. Nu e necesar ca
toate cele 4 cuvinte să fie utilizate; depinde de tipul perifericului și de facilitățile pe care trebuie să
le aibă (comunicare bidirecțională, generare de întreruperi, mascare a unor biți etc). În documentația
furnizată de Altera, în documentul DE1_Media_Computer.pdf, acest aspect se detaliază în
capitolul 2.3, Figura 2. Documentul precizat este disponibil online la adresa următoare:
ftp://ftp.altera.com/up/pub/Altera_Material/9.1/Computer_Systems/DE1/DE1_Media_Computer.pdf

Pentru această lucrare, se vor utiliza comutatoarele ( SW) și LED-urile (LEDG, respectiv
LEDR). Placa Altera DE1 dispune de 10 comutatoare, 8 LED-uri verzi și 10 LED-uri roșii. Fiecare
dintre cele trei porturi asociate acestora ocupă câte o locație în spațiul adreselor procesorului.

2.1 Crearea proiectului și elaborarea sistemului

În primul rând, trebuie creat un nou proiect în Quartus II Web Edition (detalii în Anexa A).

După crearea proiectului se construiește sistemul (după modelul din Anexa C). În acest caz,
sistemul trebuie să cuprindă:
 un procesor NIOS II (varianta economică Nios II/e)
 un modul de memorie (se va alege un modul de 4 KB de memorie on-chip de tip RAM)
 un port de intrare (PIO) de 10 biți (corespunzător comutatoarelor SW)
 un port de ieșire (PIO) de 8 biți (corespunzător LED-urilor verzi LEDG)
 un port de ieșire (PIO) de 10 biți (corespunzător LED-urilor roșii LEDR)

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.
De data aceasta, e important să fie notate adresele alocate celor trei porturi, întrucât
ele trebuie accesate din programul care va fi executat.

Daniel FILIPAȘ 1/3 dfilipas@uoradea.ro


ASC2 – Lucrări de laborator 2/3 Lucrarea nr. 2

2.2 Compilarea și încărcarea unui program

Altera Monitor Program permite și compilarea programelor scrise în limbajul C.


În această lucrare de laborator se prezintă un program (scris în C) prin care se va realiza
conexiunea dintre cele trei porturi. Codul sursă arată astfel:

volatile int *comutatoare = (int *) 0x00003000; // adresa alocată comutatoarelor


volatile int *LED_verzi = (int *) 0x00003010; // adresa alocată LED-urilor verzi
volatile int *LED_rosii = (int *) 0x00003020; // adresa alocată LED-urilor roșii

void main (void)


{
while(1)
{
*LED_rosii = *comutatoare; // se aprind LED-urile roșii corespunzătoare
*LED_verzi = 7; // pe LED-urile verzi se afișează 111
}
}

Prin acest program, cu ajutorul comutatoarelor se comandă aprinderea sau stingerea LED-
urilor roșii (fiecare comutator acționează LED-ul de deasupra lui), iar pe LED-urile verzi se
afișează constant valoarea 7 (în binar 111).
Tipul variabilelor e precedat de directiva volatile pentru a-i preciza compilatorului că
valorile asociate variabilelor se pot modifica în orice moment și, astfel, să nu optimizeze codul
obiect.

Codul de mai sus trebuie să fie salvat într-un fișier cu extensia .c ș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ă Altera Monitor Program.

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

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

a. Să se verifice funcționarea programului de mai sus. Ce se întâmplă dacă dispare while(1)?

b. Să se modifice programul în așa fel încât să se aprindă LED-urile verzi de pe poziții pare.

c. Să se completeze programul în așa fel încât pe LED-urile verzi să apară suma dintre
numărul 10 și numărul introdus cu ajutorul comutatoarelor.

d. Să se modifice programul de la punctul precedent astfel încât pe LED-urile verzi să fie


afișate automat, în mod crescător, valorile de la 0 la 255 (cu o frecvență de aproximativ un număr
pe secundă).

Daniel FILIPAȘ 2/3 dfilipas@uoradea.ro


ASC2 – Lucrări de laborator 3/3 Lucrarea nr. 2

Bibliografie:

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

ftp://ftp.altera.com/up/pub/Altera_Material/9.1/Computer_Systems/DE1/DE1_Media_Computer.pd
f

Daniel FILIPAȘ 3/3 dfilipas@uoradea.ro