Sunteți pe pagina 1din 9

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR

LABORATOR nr. 3
Introducere n limbajul de programare VHDL. Prezentarea sistemului de dezvoltare Cyclone III Starter Kit. Mediul de programare Quartus II.

1. Scopul laboratorului
n acest laborator se vor prezenta elementele fundamentale legate de limbajul de descriere hardware VHDL: scurt istoric, definiii, avantaje i dezavantaje, principalele caracteristici.

2. Consideraii teoretice
2.1. VHDL scurt istoric
La ora actual exist dou limbaje foarte importante de descriere a hardware-ului, care au fiecare susintorii lor aprigi; unul dintre ele se numete VHDL iar cellalt Verilog. VHDL este prescurtarea a dou prescurtri: Vhsic HDL, unde VHSIC nseamn ``Very High Speed Integrated Circuits''. Verilog vine de la ``VERifying LOGic'', dar limbajul este folosit nu numai pentru a simula i verifica circuite logice (cum a fost conceput iniial, i dup cum arat numele su), ci i pentru a le proiecta i implementa (sintez hardware hardware synthesis). Cele dou limbaje sunt relativ similare ca putere de expresie, dar incompatibile ntre ele. Sunt de asemenea destul de diferite de celelalte limbaje obinuite de programare: n limbajele HDL programatorul exprim un circuit ca o colecie de sub-circuite care opereaz n paralel (paralelismul este explicit n program). Variabilele sunt semnale electrice, iar operaiile descriu unitile funcionale. Nu exist funcii recursive, structuri de date complicate sau manipulare dinamic a memoriei (malloc/new/free). VHDL nu este un limbaj de programare ci un limbaj de descriere a sistemelor electronice hardware pornind de la structura lor modular i de la interconexiunile dintre acestea. El a fost definit i integrat n rndul instrumentelor de CAD (Computer-Aided Design) din domeniul electronicii, pentru a introduce o metodologie riguroas de proiectare n ciclul de dezvoltare al sistemelor hardware. VHDL a devenit un limbaj industrial standardizat, utilizat pentru descrierea hardware de la nivelul abstract pn la nivelul concret. VHDL a fost rapid asimilat ca un mediu universal de comunicaie n proiectare. Toi productorii de staii de lucru i de software CAE (Computer-Aided Engineering) i standardizeaz produsele pentru a avea intrri i ieiri standard VHDL. Aceste produse includ software pentru simulare, sintez i trasare de cablaj imprimat. Limbajul provine din programul VHSIC (Very High Speed Integrated Circuit) iniiat de Departamentul Aprrii din Statele Unite ale Amercii n 1980. n faa importantei creteri a complexitii sistemelor electronice i mai ales a costurilor de ntreinere rezultante, s-a fcut simit nevoia apariiei unui limbaj modern i standardizat.

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR Efortul de standardizare a fost ealonat ntre anii 1983 i 1987 sub egida DOD (Departamentul Aprrii al S.U.A). De atunci, VHDL este supervizat de grupul american VASG (VHDL Analysis and Standardisation Group), care face la rndul lui parte din IEEE.

2.2. Ce este un limbaj de descriere hardware?


VHDL este un limbaj de descriere hardware: el permite descrierea funcionrii componentelor unui sistem hardware, precum i a relaiilor dintre aceste componente i a legturilor lor cu exteriorul. Exist o strns similitudine ntre proiectarea hardware i proiectarea software. Tot ceea ce ine de metoda de specificare, de organizare a software-ului, de algoritmic, poate fi transpus direct la nivel hardware. Acest lucru este posibil deoarece VHDL conine toate elementele de descriere algoritmic proprii limbajelor de programare. De aceea este adeseori considerat drept un limbaj informatic sau chiar drept un limbaj de informaticieni. Este, prin urmare, preferabil ca programatorul nceptor n VHDL s posede cunotine minime ntr-un limbaj de programare structurat de nivel nalt, pe lng cunotine de proiectare a sistemelor numerice. Spre deosebire de un limbaj de programare, un limbaj de descriere hardware nu vizeaz o executare, chiar dac are un simulator asociat. Un limbaj de descriere hardware poate servi la: Demonstraii formale (oare circuitul face ntr-adevr transformanta Fourier?); Sintez (n acest caz, limbajul are rolul de a furniza intrri unui instrument inteligent pentru realizarea rapid a prototipului hardware); Elaborarea de specificaii; Elaborarea de documentaii. Un limbaj de descriere hardware propune adeseori mai multe niveluri de descriere. O descriere VHDL poate fi: Structural; Comportamental; De tip flux de date; O combinaie a acestor trei tipuri de baz. Nivelul cel mai uor de neles este cel structural. O descriere pur structural const n a descrie modelul prin structura sa, adic printr-un ansamblu de elemente interconectate. De aici se pot deduce imediat dou proprieti eseniale: O asemenea descriere nu ia n calcul timpul; O asemenea descriere nu poate constitui o frunz (element terminal n ierarhia de descriere) n momentul simulrii. O frunz va fi n mod necesar descris n stil comportamental sau flux de date. Descrierea de nivel comportamental urmrete s descrie funcionarea (comportamental) unui model fr a se preocupa de o eventual mprire n blocuri, mai apropiat de nivelul implementrii fizice. Descrierea capt adeseori forma unui algoritm de genul celor utilizai n limbajele de programare clasice. Acest nivel de descriere, dei este prezent n frunzele ierarhiei se poate adresa i proiectanilor care doresc s modeleze un sistem la un nivel nalt de abstractizare. Aici poate interveni i timpul. A modela sistemul n stil comportamental nseamn a fi preocupat de funcionalitatea modelului descris, ceea ce face ca adeseori s se foloseasc termenul de descriere funcional n loc de descriere comportamental. O descriere de tip flux de date, care nu este dect o form prescurtat a unei descrieri comportamentale, exprim fluxurile datelor care ies din model n funcie de intrrile primite, fr a se preocupa de structura acestuia. 2

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR Obiectivul unui limbaj de progamare l constituie descrierea unei execuii a unui program, n vreme ce un limbaj precum VHDL are ca obiectiv descrierea structurii hardware a unui sistem. Partea de hardware are o structur fix a crei stare logic evolueaz n decursul timpului. Aceast evoluie face parte din descrierea VHDL a sistemului. Se poate spune c un program VHDL are o structur fix i o execuie evolutiv. Deosebirea esenial const n faptul c programul este secvenial, n vreme ce descrierea hardware este concurent. Aceasta este o problem de interpretare a codului: este posibil s se dea o descriere hardware cu ajutorul unui limbaj de programare modificnd semantica limbajului. O deosebire major ntre un limbaj de programare i un limbaj de descriere pur structural este separarea elementelor lor constructive de baz: sub-programul n cazul limbajului algoritmic, i componenta n cazul limbajului de descriere. Sub-programul este apelat la un anumit moment dat, i ndeplinete misiunea, apoi este oarecum uitat. Componenta exist n sine, cci o descriere hardware la nivel structural este n afara timpului. Componentele unui sistem exist n mod static i funcioneaz n mod concurent. De fapt, timpul nu intervine dect n partea flux de date (sau comportamental ) a unui asemenea limbaj, care permite scrierea unei instruciuni de genul: lui A i se atribuie valoarea 0, apoi, dup 10 ns, valoarea 1, apoi dup nc 5 ns valoarea 0 etc.

2.3. Avantaje i dezavantaje ale VHDL


Principalul inconvenient al VHDL este complexitatea sa. Ea nu trebuie deloc neglijat ndeosebi datorit faptului c limbajul se adreseaz proiectanilor de sisteme electronice care nu au n mod necesar cunotine foarte temeinice de programare. n schimb, VHDL este un standard IEEE recunoscut de ctre toi productorii de instrumente CAD. Deocamdat, nu se pune problema apariiei vreunui alt limbaj de descriere hardware care s nlocuiasc VHDL. n plus, DOD din S.U.A susine n continuare standardul VHDL i solicit, de exemplu, descrierea n VHDL a fiecrui circuit integrat comandat. VHDL ofer, printre altele: O bun tratare a concurenei; O definiie foarte solid a noiunii de timp, care permite o descriere precis i sintetic a evoluiei temporale a sistemului descris, ceea ce constituie nsi baza descrierii unui sistem hardware, graie unei semantici specifice introduse n limbaj; Posibilitatea combinrii stilurilor de descriere: structural, comportamental i flux de date; Posibilitatea definirii unor funcii de rezoluie (de gestiune a conflictelor ) evoluate. Ciclul de proiectare al unui sistem hardware se mparte, la modul tradiional, n trei faze: 1. faza de proiectare propriu-zis (un fel de analiz funcional a problemei); 2. faza de realizare (codificare); 3. faza de depanare. Cu ct o eroare este depistat mai rapid n ciclul de proiectare, cu att mai ieftin este corectarea sa. Aadar, toate limbajele moderne (printre care i VHDL) se strduiesc, prin intermediul verificrilor efectuate, s detecteze ct mai multe erori nc de la compilare. Prin urmare, utilizarea VHDL are o influen foarte puternic asupra ciclului de proiectare al produsului. Un alt aspect remarcabil al VHDL este dat de proiectarea modular i ierarhizat pe care o induce acest limbaj. Ea le permite responsabililor s schimbe specificaiile sau 3

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR realizarea unei componente a produsului foarte trziu n cadrul ciclului de proiectare fr a genera o adevrat catastrof (cum era cazul pn la apariia acestui gen de limbaj).

2.4. Caracteristici generale


2.4.1. Organizarea n biblioteci
VHDL este un limbaj modular. Stilul de lucru const n scrierea unor uniti mici, ierarhizate. Anumite pri ale acestor descrieri pot fi compilate separat. Ele sunt suficiente pentru a fi nelese: acestea sunt uniti de proiectare. De fiecare dat cnd o unitate de proiectare VHDL este considerat corect de ctre compilatorul VHDL, ea este automat plasat ntr-o aa-numit bibliotec de lucru generat de mediul VHDL. Proiectantul lucreaz n biblioteca proprie, fcnd referin, dac este nevoie, la biblioteca comun a proiectului sau la alte biblioteci aparinnd colegilor si, care conin utilitare sau modele generale. Acestea sunt, pentru el, biblioteci de resurse. Toate verficrile de coeren relative la biblioteci sunt asumate de ctre compilatorul VHDL: este rolul su de bibliotecar. Aceste biblioteci nu conin dect uniti de proiectare. Un fiier coninnd cod surs VHDL, odat analizat i compilat, nu mai exist pentru proiectant; numai unitile de proiectare rezultate sunt plasate n biblioteci. n VHDL, compilm fiiere i utilizm (referim) uniti de proiectare.

2.4.2. ncapsularea n uniti de proiectare


O descriere hardware este constituit dintr-un ansamblu de modele i de algoritmi utilizai pentru acele modele. Un model poate fi vzut ca avnd dou pri: partea extern, care arat conexiunile sale cu lumea exterioar; partea intern, care descrie realizarea sa sub form de interconexiuni ale altor modele mai simple sau pur i simplu sub form de algoritmi. Un model VHDL este o pereche entitate / arhitectur, partea sau vederea sa extern fiind numit entitate, iar vederea sa intern arhitectur. Fiecare dintre aceste dou pri este o unitate de proiectare i aceste uniti alctuiesc bibliotecile VHDL. O bibliotec poate conine, de exemplu, o sut de uniti de proiectare. Separarea entitii de arhitectur apare pentru a permite modificarea uoar a funcionrii interne fr a mai fi necesar redefinirea viziunii externe a modelului, lucru permis de compliarea separat. n plus, aceeai vedere extern poate avea mai multe vederi interne asociate, acestea din urm depinznd adeseori de gradul de finee dorit pentru descrierea funcionrii modelului. Algoritmii utilizai frecvent pot fi separai, obinndu-se astfel sub-programe care sunt adeseori grupate n pachete. Aceste pachete (packages) sunt supuse aceleai mpriri ca i modelele: vederea lor extern, adic perspectiva tuturor posibilitilor pe care le ofer, este decuplat de vederea intern care conine algoritmica ce realizeaz toate aceste funcionaliti. n VHDL, vederea extern se numete specificaia pachetului, pe cnd vederea intern se numete corpul pachetului. Pachetele nu se limiteaz doar la a exporta sub-programe, ci pot oferi i alte obiecte, cum ar fi semnale globale, tipuri i componente. Pentru a nu bloca relaia instan / model, modul de asociere al componentelor i modelelor va forma o unitate de proiectare de sine stttoare, care va fi i ea stocat ntr-o bibliotec. Aceast unitate va efectua corespondena dintre instan i model. Ea este o 4

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR configuraie VHDL, ultima categorie de unitate de proiectare care poate fi gsit ntr-o bibliotec VHDL.

2.4.3. Separarea n domeniul concurent i domeniul secvenial


Un sistem hardware este n mod natural concurent. Nu trebuie ns tras concluzia pripit c descrierile secveniale ar fi inutile: de exemplu, un protocol de citire din memorie se exprim cel mai firesc n mod secvenial: poziionm semnalul X, apoi semnalul Y, ateptm un interval de timp t etc. n VHDL, domeniile concurent i secvenial vor coabita. Proiectantul va avea posibilitatea de a exprima fiecare parte a descrierii sale n domeniul care i se pare cel mai adecvat. Fiecare dintre aceste domenii are setul su de instruciuni.

2.4.4. Clasificarea dup tipuri


Toate limbajele de programare moderne utilizeaz tipizarea obiectelor manipulate i ofer posibilitatea crerii de noi tipuri. Astfel se obine o cretere a puterii verificrilor i o limitare a propagrii erorilor. Fiecare obiect va fi clasificat ntr-un tip menit s defineasc valorile pe care le poate lua i cele care-i sunt interzise, operaiile permise i cele interzise. Orice obiect are n mod obligatoriu un tip pe care nu i-l schimb niciodat. Exist patru familii de tipuri: tipurile scalare (ntregi, flotani, tipuri fizice i tipuri enumerate); tipurile compuse (tablouri i articole); tipurile acces sau pointerii; tipurile fiier.

2.4.5. Clasele de obiecte


n VHDL exist trei clase de obiecte: constantele, variabilele i semnalele. Constantele au o valoare fix definit o dat pentru totdeauna, cel mai trziu dup o faz de iniializare numit elaborare. Variabilele au o valoare modificabil prin atribuire. Constantele i variabilele sunt obiecte ce pot fi ntlnite i n limbajele de programare. Semnalele sunt specifice limbajelor de descriere hardware. Ele modeleaz informaia care tranziteaz prin fire, magistrale sau la modul general ntre componentele hardware.

2.4.6. Reguli de scriere n VHDL


Comentariile ncep cu dou liniue -- i se continu pn la sfritul liniei. Dac e necesar continuarea comentariului pe linia urmtoare, este din nou necesar s apar cele dou liniue: A <= B and C; -- n VHDL simbolul <= efectueaz o -- atribuire: A ia valoarea operaiei (B and C)

VHDL nu face deosebirea dintre literele mari i mici: SALUT este identic cu salut sau SaluT.

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR VHDL manipuleaz o mare diversitate de obiecte: semnale, pachete, procese etc., desemnate prin numele lor. Regulile de denumire sunt aceleai pentru toate aceste obiecte: numele lor este alctuit dintr-o serie de caractere alfanumerice (cele 26 de litere ale alfabetului), numerice (cele 10 cifre zecimale) sau din caracterul _. Sunt excluse caracterele ASCII speciale; primul caracter trebuie s fie o liter; caracterul _ nu are voie s se afle la sfritul unui nume, nici s apar de dou ori consecutiv; numele nu are voie s fie un cuvnt VHDL rezervat; lungimea oricrui nume nu poate depi o linie. Aceast toleran permite atribuirea de nume explicite, preferate de obicei n locul abrevierilor. Caracterul _ este adeseori utilizat ca separator pentru numele compuse. n VHDL exist cuvinte cheie ce nu pot fi utilizate ca identificatori: abs all assert body component downto entity function guarded inertial library map next of others postponed pure reject rol signal sra to units wait xnor acces and attribute buffer configuration else exit generate if inout linkage mod nor on out procedure range rem ror shared srl transport until when xor after architecture begin bus constant elsif file generic impure is literal nand not open package process record report select sla subtype type use while alias array block case disconnect end for group in label loop new null or port proctected register return severity sll then unaffected variable with

Literalii sunt valori explicite atribuite diferitelor obiecte: constante, variabile, atribute etc. Notaia lor difer n funcie de tipul obiectelor crora li se aplic: numere ntregi zecimale: este cazul cel mai simplu, folosindu-se notaia zecimal obinuit, fr simboluri suplimentare. De exemplu, 22 sau 1971. Exist posibilitatea includerii caracterului _ pentru ameliorarea lizibilitii, fr nicio alt consecin: 1_999_234 este identic cu 1999234. Caractere: se scriu ntre apostrofuri simple: A, %, f, (spaiu). Caracterele acceptate sunt cele din setul ASCII. Atenie, literele mari i cele mici sunt diferite atunci cnd este vorba despre valori literale: D nu este identic cu d. iruri de caractere: se scriu ntre ghilimele. Iat cteva exemple: salut, Salut (aceste dou valori literale sunt diferite), 1001, E*. Un ir de caractere se poate 6

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR obine prin concatenarea mai multor iruri cu ajutorul operatorului &: Totul & este & minunat este echivalent cu Totul este minunat. Aceast posibilitate permite ndeosebi utilizarea mai multor linii pentru definirea unui ir, de exemplu: Totul & este & minunat; Operaia de concatenare n sine nu adaug niciun spaiu va trebui deci urmrit cu atenie prezena spaiilor n irurile care urmeaz s fie concatenate. Biii: se utilizeaz notaia caracterelor. Biii pot avea ca valori numai 0 i 1. Tipul STD_LOGIC utilizeaz n plus valorile U, X, H, L, W, Z i -. Vectori de bii: utilizeaz notaia irurilor de caractere, constituite din simbolurile 0 i 1: de exemplu, 10011010. Sistemul de numeraie implicit este cel binar, dar este posibil utilizarea notaiei octale sau hexazecimale prin prefixarea irului: O127, X01AC. Spaiile nu sunt semnificative, cu excepia apariiei lor n valorile literale i n cazurile de separarea a identificatorilor. Ele nu sunt necesare ntre identificatori i simboluri. Urmtoarele dou linii sunt corecte i echivalente: A <= B and C; A<= B and C ;

O instruciune se poate ntinde pe mai multe linii, att timp ct sfritul de linie nu este plasat n mijlocul unui identificator, al unui simbol de operator sau al unui literal. A <= B when C = 0 else D; Se poate scrie i: A <= B when C = 0 else D; Sfritul unei instruciuni este semnalat de prezena caracterului ;.

2.4.7. Structura unei descrieri n VHDL


Orice descriere VHDL se descompune n mod ierarhic, la fel cum un program se descompune n sub-programe. Se pornete, la nivelul rdcinii, cu sistemul complet vzut ca o cutie neagr, cu intrrile i ieirile sale. Aceast cutie neagr este descompus n componente interconectate, care sunt la rndul lor vzute ca nite cutii negre. Se ajunge la un arbore care poate fi definit n stil ascendent (bottom-up) sau descendent (top-down), asemntor descompunerii ierarhice a unui program n funcii. Frunzele acestei ierarhii corespund componentelor elementare descrise n manier algoritmic secvenial. Modul de descriere a acestor componente elementare depine de nivelul de abstractizare al descrierii (specificare, proiectare, realizare). Criteriile dup care se decide oprirea descompunerii ierarhice sunt legate de complexitatea componentelor terminale i de conectivitatea acestor componente ntre ele. Oprirea descompunerii ierarhice corespunde obinerii unui nivel de complexitate suficient de redus, care s permit trecerea de la o descriere algoritmic a funcionalitii componentelor de la nivelul cel mai de jos, care poate fi ea nsi descompus n mod ierarhic n manier software, sub form de apeluri imbricate de sub-programe. Coninutul unei componente descrie ieirile n funcie de intrrile i de strile sale interne. 7

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR Limita descompunerii ierarhice poate depinde de numrul de intrri i de ieiri ale componentelor terminale, precum i de dimensiunea i de complexitatea codului fiecrei componente. Acest criteriu se reduce aadar la izolarea corect a funcionalitilor, astfel nct acestea s fie pe ct posibil independente unele fa de celelalte. Un alt criteriu de descompunere local l poate constitui separarea ntre partea de control i cea de prelucrare a datelor, numit i cale de date (data path). Felul n care se va face n cele din urm descompunerea depinde la modul esenial de experiena proiectantului i de familiarizarea sa cu problema de rezolvat.

3. Kitul de dezvoltare Altera Cyclone III Starter Kit


Kitul de dezvoltare Cyclone III de la Altera este realizat n jurul circuitului FPGA cu consum redus Cyclone III EP3C25, circuit ncapsulat n formatul FBGA (FineLine BGA) cu 324 de pini. Ca i caracteristici principale, putem aminti existena pe plac a 32 MB de memorie DDR SDRAM, 16 MB de memorie FLASH paralel pentru memorarea i configurarea dispozitivelor implementate, 1MB de memorie de mare vitez SSRAM, patru butoane i patru LED-uri programabile de ctre utilizator i un conector de expandare HSMC (High Speed Mezzanine Card). Avantajele principale ale kitului de dezvoltare Cyclone III se refer la uurina dezvoltrii de proiecte FPGA cu ajutorul exemplelor i demonstraiilor, configurare i comunicare direct prin intermediul circuitului on-board USB-Blaster i a interfeei JTAG, consum redus de energie, configurare activ a memoriei FLASH paralel i proiectare modular simpl.

Fig. 1. Sistemul de dezvoltare Altera Cyclone III Starter Kit Circuitul FPGA Altera Cyclone III EP3C25F324 conine urmtoarele elemente: 25K de elemente logice (LE), 66 blocuri de memorie M9K (0,6 Mbit), 16 blocuri de multiplicare de 18x18, 4 PLL-uri i 214 pini de I/O. Sistemul de management al ceasului are un oscilator de 50 MHz, din care 8

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR se obin, cu ajutorul PLL-urilor, ceasul pentru memoria DDR, pentru memoria SSRAM i pentru memoria FLASH. Conectorul HSMC asigur tensiuni de 12V i 3,3V pentru plcile de extensie i ofer pn la 84 pini de I/O pentru comunicaii. Pentru interfaa cu utilizatorul, sistemul de dezvoltare ofer 4 LED-uri programabile de ctre utilizator, 2 LED-uri specifice plcii, buton pentru reset, buton pentru reconfigurare i 4 butoane de uz general.

Fig. 2. Schema bloc a sistemului de dezvoltare Cyclone III

4. Desfurarea lucrrii
3.1. Se va descrca de pe internet mediul de dezvoltare Quartus II i se va instala pe calculatoare, apoi se va lansa n execuie. 3.2. Se va urmri tutorialul mediului de dezvoltare Quartus II. 3.3. Se va consulta documentaia on-line referitoare la utilizarea editorului, a simulatorului i a compilatorului de fiiere VHDL. 3.4. Se va consulta on-line documentaia sistemului de dezvoltare cu FPGA Altera Cyclone III Starter Kit.