Sunteți pe pagina 1din 80

UNIVERSITATEA TEHNIC din CLUJ-NAPOCA FACULTATEA de AUTOMATIC i CALCULATOARE CATEDRA de CALCULATOARE

Metode de descriere a sistemelor numerice


Referat de doctorat

Conductor tiinific, Prof. Dr. Ing. PUSZTAI Kalman

Doctorand, .l. ing. BARUCH Zoltan

Metode de descriere a sistemelor numerice

Cuprins

1. Introducere 1.1. Necesitatea descrierilor de nivel nalt 1.2. Nivele i domenii de descriere 2. Modele hardware 2.1. Introducere 2.2. Clasificarea modelelor 2.3. Modele orientate pe stare 2.3.1. Automate cu stri finite 2.3.2. Reele Petri 2.3.3. Automate cu stri finite ierarhice i concurente 2.4. Modele orientate pe activitate 2.4.1. Grafuri ale fluxului de date 2.4.2. Grafuri ale fluxului de control 2.5. Modele orientate pe structur 2.5.1. Diagrame de conexiune a componentelor 2.5.2. Structuri de inciden 2.5.3. Reele logice 2.6. Modele eterogene 2.6.1. Grafuri ale fluxului de control i de date 2.6.2. Diagrame de structur 2.6.3. Automate cu stri ale programului 2.6.4. Modelul firelor de ateptare 3. Limbaje de descriere hardware 3.1. Introducere 3.2. Tipuri de limbaje de descriere hardware 3.2.1. Limbaje de descriere structurale 3.2.2. Limbaje de descriere funcionale

3 3 4 9 9 11 12 12 14 16 17 17 19 19 19 21 22 24 24 26 27 29 30 30 32 32 34

Metode de descriere a sistemelor numerice 3.3. Caracteristici ale limbajelor de descriere hardware 3.3.1. Caracteristici specifice limbajelor de programare 3.3.1.1. Tipuri de date 3.3.1.2. Operatori i instruciuni de asignare 3.3.1.3. Construcii de control 3.3.1.4. Ordinea de execuie 3.3.2. Caracteristici specifice unitilor hardware 3.3.2.1. Definirea interfeelor 3.3.2.2. Declaraii structurale 3.3.2.3. Operatori la nivelul RT i logic 3.3.2.4. Asincronismul 3.3.2.5. Ierarhia 3.3.2.6. Comunicaia ntre procese 3.3.2.7. Restricii 3.3.2.8. Alocarea de ctre utilizator 3.4. Formate ale limbajelor de descriere hardware 3.4.1. Limbaje textuale 3.4.2. Limbaje grafice 3.4.3. Limbaje tabelare 3.4.4. Limbaje bazate pe diagrame de timp 3.5. Exemple de limbaje de descriere 3.5.1. VHDL 3.5.2. HardwareC 3.5.3. CSP 3.5.4. Verilog 3.5.5. Statecharts 3.5.6. Silage 3.5.7. SpecCharts 3.6. Relaia dintre limbaj i arhitectur 4. Concluzii Bibliografie 37 37 37 37 37 38 39 39 39 39 40 41 43 44 45 45 46 46 46 48 48 48 56 57 59 59 61 62 67 74 77

Metode de descriere a sistemelor numerice

1. Introducere
1.1. Necesitatea descrierilor de nivel nalt
Dezvoltarea tehnologic rapid din ultimii ani a permis proiectarea i fabricaia sistemelor digitale din ce n ce mai complexe. Acest lucru nu a fost posibil fr progresul n domeniul metodologiilor de proiectare i al sistemelor de proiectare automat care asist proiectantul n vederea aplicrii acestor metodologii. n timp ce primele sisteme de proiectare asistat au fost realizate pentru verificarea proiectrii (simularea logic i verificarea amplasrii i rutrii), apoi i pentru amplasarea i rutarea automat (pe baza unei liste de conexiuni a blocurilor funcionale i a unei biblioteci de celule predefinite), n ultimii ani se poate observa o dezvoltare rapid a sistemelor de proiectare asistat, care permit specificarea sau descrierea unui sistem la diferite nivele de abstractizare n domeniul funcional i implementarea automat a proiectului pornind de la aceast descriere. Prin verificarea automat a proiectelor i realizarea automat a proiectrii fizice s-a obinut o reducere semnificativ a efortului de proiectare. Utilizarea mediilor de proiectare pentru specificarea sistemelor prin scheme electrice, aplicarea simulrii pentru verificarea descrierilor la nivelul porilor logice, plasarea i rutarea automat pe baza listelor de conexiuni au determinat reducerea efortului de proiectare cu aproximativ 50%. O reducere suplimentar s-a obinut prin posibilitatea proiectrii ierarhice i prin existena generatoarelor de module, de exemplu a generatoarelor pentru reelele logice programabile. Urmtoarea etap important a constat din introducerea tehnicilor de sintez i optimizare la nivel logic, care permit, de exemplu, translatarea automat a tabelelor de adevr n reele minimizate de pori logice. O alt reducere semnificativ a efortului i a duratei de proiectare se poate obine prin utilizarea unor metode i sisteme de sintez care transform o descriere de nivel nalt sau chiar o specificaie ntr-o implementare adecvat. Pe msur ce complexitatea sistemelor numerice crete, apare necesitatea unor sisteme pentru proiectarea automat la nivele de abstractizare mai nalte. Abstractizarea de nivel mai nalt va determina o reducere suplimentar a costului de proiectare. Pentru reducerea duratei de proiectare sunt necesare implementri care sunt corecte pentru prima dat, eliminndu-se ciclurile de modificri i reproiectri. Sunt necesare tehnici de sintez care permit realizarea corectitudinii prin construcie, i chiar dac proiectantul trebuie s ia parte la procesul de proiectare, nivelul mai nalt de abstractizare va predispune la mai puine erori dect n cazul existenei unor detalii de nivel mai redus. Pentru aceast abordare, sistemele CAD trebuie s permit verificarea att a funcionrii ct i a regulilor de proiectare. Un alt concept care permite reducerea ciclului de proiectare este cel al primei specificaii, care are ca scop reducerea numrului de iteraii pentru specificarea unui produs la una

Metode de descriere a sistemelor numerice

singur. Metodologia de specificaie cu o singur iteraie necesit modelarea cu acuratee a procesului de proiectare i estimarea corect a unor indicatori de calitate, de exemplu cei de performan i cost. Pe lng reducerea duratei ciclului de proiectare, abstractizarea de nivel nalt i automatizarea unei pri sau a ntregului proces de proiectare are i alte avantaje. Astfel, este posibil explorarea mai complet a diferitelor metode de proiectare, deoarece proiectele pot fi generate i evaluate ntr-un timp redus. De asemenea, dac algoritmii de sintez sunt performani, sistemele de proiectare automat pot depi proiectanii de nivel mediu n ceea ce privete generarea proiectelor de calitate. Totui, verificarea corectitudinii acestor algoritmi, i a sistemelor CAD n general, nu este o sarcin uoar. Sistemele CAD nu pot asigura nc o calitate comparabil cu cea a proiectantului uman pentru ntregul proces de proiectare. Impedimentele principale sunt complexitatea proiectelor, care necesit o cutare eficient n spaiul de proiectare, i un model detaliat, care necesit algoritmi sofisticai capabili s satisfac obiective i restricii multiple. Din controversa asupra soluiilor la cele dou probleme au rezultat dou concepii diferite. Adepii primeia consider c ierarhia proiectelor este realizat de jos n sus, din componente elementare ca tranzistoare i pori. Astfel, sunt necesare sisteme CAD care rein diferite aspecte ale proiectului i le verific n principal prin simulare. Adepii celei de-a doua concepii consider c o metodologie 'top-down', n care proiectanii descriu proiectul, iar sistemele CAD adaug structura electric i fizic detaliat, este mai potrivit pentru proiectarea viitoare a sistemelor complexe. A doua metod se concentreaz asupra definiiei limbajelor de descriere, a modelelor proiectelor, a algoritmilor de sintez i a mediilor de proiectare pentru sinteza interactiv, n care intuiia proiectanilor poate reduce substanial cutarea n spaiul de proiectare. Ambele concepii pot fi corecte n anumite momente ale evoluiei tehnologice. De exemplu, poate fi avantajoas proiectarea manual a unei celule de memorie care este multiplicat de milioane de ori. Totui, n acest moment al dezvoltrii tehnologice, chiar sinteza care nu este optim devine mai eficient din punct de vedere al costului dect proiectarea manual.

1.2. Nivele i domenii de descriere


Pentru definirea diferitelor nivele de descriere a sistemelor numerice, diagrama Y, introdus pentru prima dat de Gajski i Kuhn, este cea mai des utilizat. Ideea de baz este c fiecare element al unui sistem numeric poate fi descris n cadrul a trei domenii diferite. Acestea sunt: domeniul funcional, domeniul structural i domeniul fizic/geometric. n domeniul funcional, se specific funcionarea (propus) a sistemului, n mod ideal fr nici o referire la modul n care aceast funcionare este asigurat prin implementare. Sistemul este descris ca avnd un set specificat de intrri i ieiri, i un set de funcii care descriu relaia n timp dintre ieiri i intrri. O descriere funcional mai cuprinde o descriere a interfeei i o descriere a restriciilor impuse asupra sistemului. Descrierea interfeei specific porturile de I/E i protocoalele sau relaiile n timp ntre semnalele acestor porturi. Restriciile specific relaiile tehnologice care trebuie s fie respectate pentru ca sistemul proiectat s poat fi verificat, testat, fabricat i ntreinut.

Metode de descriere a sistemelor numerice

n domeniul structural, sistemul este considerat ca o ierarhie de elemente funcionale interconectate, innd cont de restricii ca timpi de ntrziere, spaiu ocupat sau cost. O reprezentare structural specific implementarea sistemului, i chiar dac funcionalitatea acestuia poate fi dedus din componentele interconectate, reprezentarea structural nu descrie funcionalitatea n mod explicit. Uneori, o reprezentare structural, ca de exemplu o schem logic, poate servi ca o descriere funcional. Pe de alt parte, anumite descrieri funcionale, ca expresiile booleene, pot sugera o implementare, ca de exemplu o structur sub forma unor sume de produse. n domeniul fizic, se detaliaz implementarea sistemului, specificnd caracteristicile fizice ale componentelor descrise n reprezentarea structural. De exemplu, o reprezentare fizic poate indica dimensiunile i poziia fiecrei componente, ca i caracteristicile fizice ale conexiunilor ntre acestea. Astfel, n timp ce reprezentarea structural specific conexiunile ntre elementele sistemului, reprezentarea fizic descrie relaiile spaiale dintre aceste elemente interconectate, i alte caracteristici ca puterea consumat, cldura disipat, poziia pinilor de intrare i de ieire. Aceste domenii sunt reprezentate prin cele trei axe sub forma literei Y (Figura 1). n cadrul fiecrui domeniu, elementele pot fi descrise la diferite nivele de abstractizare. Aceste nivele sunt reprezentate ca puncte de-a lungul axelor, cu nivelele mai nalte (mai abstracte) aflate la periferia diagramei, i nivelele mai joase aflate n apropierea centrului acesteia.

Figura 1. Domenii i nivele de descriere.

Nivelul cel mai puin abstract n cadrul ierarhiei este nivelul circuitelor. Elementele structurale care aparin acestui nivel sunt tranzistoare, condensatoare, rezistene. n domeniul funcional, tranzistorul este descris prin ecuaii difereniale care specific dependenele ntre

Metode de descriere a sistemelor numerice

tensiunile aplicate la terminalele sale i curenii care rezult la aceste terminale. n domeniul structural, tranzistorul este utilizat pentru a construi elemente funcionale mai complexe, de exemplu pori logice. O poart logic este descris prin interconexiunile ntre tranzistoare; tranzistorul este considerat ca un set de terminale, conexiunile sale interne fiind exprimate prin simbolul tranzistorului. n domeniul fizic/geometric, tranzistorul este reprezentat ca o celul, printr-un set de poligoane sau dreptunghiuri care specific regiunile din cadrul circuitului integrat crora trebuie s li se aplice procesele specifice n timpul fabricaiei (difuzie, metalizare etc.) pentru a se obine funcionarea descris n cadrul domeniului funcional. Urmtorul nivel de abstractizare este nivelul logic, cel al ecuaiilor booleene i al diagramelor de stare, n care nivelele de tensiuni sunt abstractizate cu valorile logice "1" i "0". Elementele structurale de la acest nivel sunt porile i bistabilele, iar cele fizice sunt reprezentate de celule i subcelule standard. Urmtorul nivel este cel al operaiilor asupra seturilor de valori logice care sunt grupate n cuvinte, fiind interpretate ca valori numerice asupra crora se aplic operaii aritmetice i logice. Componentele principale ale acestui nivel sunt unitile aritmetice i de memorare realizate cu pori i bistabile, ca de exemplu sumatoare, circuite de multiplicare, comparatoare, numrtoare, registre, buffere de date. Deoarece activitile din cadrul sistemului sunt descrise, la acest nivel de abstractizare, cel mai adesea prin transferul valorilor ntre registre, acest nivel se numete cel al transferurilor ntre registre (nivel RT), fiind numit i nivel microarhitectural. Pentru descriere se mai pot utiliza diagrame, automate cu stri finite sau tabele de stare. Pentru a descrie funcionarea unui subsistem sau sistem, deci pentru a descrie modul n care sistemul prelucreaz valorile de intrare aplicate la porturile de intrare pentru a obine valorile de ieire cerute, operaiile sunt grupate n algoritmi, de unde denumirea de nivel algoritmic. Elementele de baz de la acest nivel sunt procesoarele, memoriile, controlerele, interfeele i circuitele integrate specifice aplicaiilor (ASIC). n multe cazuri, un sistem complex este compus din subsisteme. Fiecare subsistem poate fi descris printr-un proces secvenial (dei implementarea poate utiliza paralelismul); aceste procese se execut concurent, utiliznd diferite metode de comunicare pentru interaciunea dintre ele. Acest nivel de abstractizare se numete nivel sistem. La acest nivel elementele structurale cu care se opereaz sunt unitile centrale de prelucrare, sistemele de memorie i magistralele. Sistemele se pot descrie la nivel funcional utiliznd diferite metode, printr-un limbaj natural, un limbaj de descriere hardware sau limbaj de programare. Elementele de proiectare care se utilizeaz n diferitele nivele de abstractizare sunt indicate n Tabelul 1. Pn acum n cadrul domeniului funcional s-au considerat numai diferitele nivele de abstractizare care se refer la date. Exist nivele de abstractizare similare care se refer la timp i la operaiile de control. Timpul este considerat ca fiind continuu la nivelul circuit, discret (sub forma ciclurilor de ceas) de la nivelul logic la cel algoritmic, la nivelul sistem utilizndu-se modele mai abstracte ale timpului, de exemplu cicluri de operaii. La nivelul circuit nu exist noiunea controlului. La nivelul logic controlul exist, dar nu este distins n mod clar fa de alte activiti din cadrul circuitului. La nivelul transferurilor ntre registre exist stri abstracte de control; pentru fiecare stare de control se specific condiia care trebuie testat, transferurile ntre registre care trebuie executate i urmtoarea stare de control n care se trece. La nivelul algoritmic exist structuri de control, de exemplu bucle,

Metode de descriere a sistemelor numerice

ramificaii, apeluri de proceduri. n final, la nivelul sistem controlul ia forma sincronizrii i comunicrii ntre procese.
Nivel Sistem Reprezentare funcional Specificaii de sistem Procese Limbaje de descriere Algoritmi Seturi de instruciuni Descrieri RT Automate cu stri finite Ecuaii booleene Diagrame de stare Ecuaii difereniale Diagrame curenttensiune Reprezentare structural Uniti centrale Sisteme de memorie Magistrale Procesoare Controlere Subsisteme UAL Registre Multiplexoare Pori Bistabile Tranzistoare Condensatoare Rezistene Reprezentare fizic Module multicip Plci de circuite imprimate Blocuri Cipuri Macro-celule Scheme de amplasare Celule standard Subcelule Module Poligoane Contacte Trasee

Algoritmic

Transferuri ntre registre (RT) Logic

Circuit

Tabelul 1. Nivele de abstractizare i tipuri de reprezentare.

Diagrama Y poate fi utilizat i pentru definirea sau descrierea diferitelor etape de proiectare. Acestea pot fi exprimate ca tranziii ntre punctele de pe axele diagramei, fiind reprezentate grafic ca arce direcionate. De exemplu, tranziia de la punctul care reprezint un subsistem de pe axa domeniului structural la punctul reprezentnd un modul sau cip de pe axa domeniului fizic corespunde etapei de plasare i rutare a macro-celulelor, n care, pe baza unei liste de conexiuni a blocurilor funcionale, se realizeaz amplasarea macro-celulelor i interconectarea dintre acestea. Reconstruirea unei reele de tranzistoare (domeniul structural) din poligoanele corespunztoare domeniului fizic se realizeaz cu un program de extragere. Recunoaterea dispozitivelor i extragerea parametrilor corespunde unei tranziii de la domeniul structural la cel funcional. Pe baza acestor tranziii, se pot defini termenii de generare, extragere, sintez i analiz (Figura 2). Tranziia de la domeniul structural la cel fizic se numete generare, iar tranziia invers se numete extragere. Tranziia de la domeniul funcional la cel structural se numete sintez, iar tranziia invers se numete analiz. Pentru deplasarea de-a lungul unei anumite axe a diagramei Y se utilizeaz urmtoarele definiii. O etap reprezentat de un arc direcionat spre centrul diagramei se numete rafinare, iar o etap reprezentat de un arc direcionat invers se numete abstractizare. Un arc care reprezint o bucl simbolizeaz o transformare n cadrul unui domeniu sau nivel, numit optimizare. n cadrul optimizrii, funcionalitatea de baz rmne nemodificat, dar calitatea proiectului, exprimat printr-o funcie obiectiv (care ine cont de performane, spaiu ocupat, putere consumat etc.), este mbuntit. n cele mai multe cazuri etapele de proiectare genereaz dou tipuri de rezultate. Funcionarea unui sistem specificat la un anumit nivel de abstractizare este transformat ntr-o descriere structural la acelai nivel. Aceasta reprezint componenta etapei de proiectare n privina sintezei. Descrierea structural generat astfel se refer la obiecte abstracte descrise

Metode de descriere a sistemelor numerice

Figura 2. Tranziii n cadrul diagramei Y.

n urmtorul nivel de abstractizare. Pentru aceste obiecte de nivel inferior funcionarea este fie definit, fie implicit. Aceasta reprezint componenta etapei de proiectare n privina rafinrii. Descrierile funcionale ale obiectelor de nivel inferior reprezint punctul de plecare pentru urmtoarea etap de sintez. De cele mai multe ori, descrierile sistemelor conin att elemente funcionale ct i structurale. De aceea, definiia etapelor de proiectare ca tranziii n cadrul diagramei Y poate deveni dificil. Exist definiii bazate pe observaia c fiecare etap n cadrul procesului de proiectare adaug anumite informaii la descrierea global a sistemului.

Metode de descriere a sistemelor numerice

2. Modele hardware
2.1. Introducere
Proiectarea unui sistem este procesul de implementare a unei specificaii de funcionare a acestuia utiliznd un set de componente fizice. Prima etap n proiectarea unui sistem o reprezint deci specificarea funcionrii dorite. Pentru aceast specificare se pot utiliza diferite modele conceptuale. Un model al unui circuit sau sistem este o abstractizare a acestuia, deci o reprezentare care pune n eviden caracteristicile sale relevante, fr detaliile asociate. Modelele sunt utilizate pentru specificarea circuitelor sau sistemelor, pentru efectuarea raionamentelor asupra proprietilor acestora sau pentru transferul informaiilor ntre proiectani sau ntre acetia i sistemele de proiectare asistat de calculator. Modelele informale, de exemplu descrierile textuale ale principiilor de funcionare ale unui sistem ntr-un limbaj natural, au o aplicabilitate limitat atunci cnd sunt utilizate sistemele CAD. n plus, aceste descrieri informale ale circuitelor sau sistemelor complexe pot fi surse de ambiguiti, deoarece adesea este imposibil s se testeze completitudinea i consistena lor. n schimb, modelele formale au o sintax i semantic bine definit, de aceea acestea asigur un mijloc de a exprima informaiile despre un sistem ntr-un mod care poate fi interpretat neambiguu. Astfel se pot realiza sisteme automate pentru citirea, procesarea i scrierea unor asemenea modele. Pentru a fi util, un model trebuie s posede anumite caliti. n primul rnd, modelul nu trebuie s conin ambiguiti. De asemenea, trebuie s fie complet, pentru a putea descrie ntregul sistem. n plus, modelul trebuie s fie inteligibil pentru proiectani, i s poat fi modificat cu uurin. n fine, un model trebuie s fie suficient de natural pentru a uura nelegerea sistemului de ctre proiectani. Un model este un sistem formal constnd din obiecte i reguli de compoziie. Scopul unui model este de a furniza o viziune abstract asupra sistemului. n Figura 3 se exemplific dou modele diferite ale unui controler pentru un ascensor, pentru care se prezint i descrierea n limbaj natural. n Figura 3(b) controlerul este reprezentat ca un set de instruciuni, iar n Figura 3(c) este reprezentat ca o main de stare. Fiecare din aceste modele reprezint un set de obiecte i interaciunile dintre ele. Modelul mainii de stare, de exemplu, const dintr-un set de stri i tranziii dintre aceste stri. Modelul algoritmic const dintr-un set de instruciuni. Avantajul de a avea la dispoziie aceste modele diferite este c ele permit reprezentarea diferitelor vederi asupra unui sistem, punndu-se n eviden diferitele sale caracteristici. De exemplu, modelul mainii de stare este adecvat pentru a reprezenta comportarea n timp a unui sistem, deoarece permite expri-

Metode de descriere a sistemelor numerice

10

Figura 3. Modele conceptuale ale unui controler pentru ascensor: (a) descriere n limbaj natural; (b) model algoritmic; (c) main de stare.

marea explicit a strilor i a tranziiilor ntre stri determinate de evenimente externe sau interne. Modelul algoritmic, pe de alt parte, nu are stri explicite. Deoarece acest model poate specifica relaiile dintre intrri i ieiri n funcie de o secven de instruciuni, este adecvat pentru a reprezenta vederea procedural asupra sistemului. Proiectanii aleg diferite modele n diferite faze ale procesului de proiectare, pentru a pune n eviden acele aspecte ale sistemului care sunt de interes la momentul respectiv. De asemenea, sunt necesare modele diferite i pentru domenii diferite de aplicaii. De exemplu, sistemele n timp real i sistemele pentru baze de date sunt modelate n mod diferit, deoarece primele se concentreaz asupra comportrii n timp, iar cele din urm se concentreaz asupra organizrii datelor. Dup ce proiectantul a ales un model corespunztor pentru a specifica funcionarea unui sistem, poate descrie n detaliu funcionarea acestuia. Procesul de proiectare nu este ns complet, deoarece un asemenea model nu descrie exact modul n care sistemul trebuie realizat. Urmtoarea etap este deci transformarea modelului ntr-o arhitectur, care definete implementarea modelului prin specificarea numrului i a tipului componentelor, ca i a interconexiunilor dintre ele. n Figura 4 se indic dou arhitecturi diferite care se pot utiliza pentru implementarea modelului mainii de stare a controlerului pentru ascensor care a fost prezentat anterior. Arhitectura din Figura 4(a) este o implementare la nivelul registrelor, care utilizeaz un registru de stare pentru a pstra starea curent i o logic combinaional pentru a implementa tranziiile dintre stri i valorile semnalelor de ieire. n Figura 4(b) se indic o implementare la nivel de sistem, n care maina de stare este implementat prin software, utiliznd o variabil dintr-un program pentru a reprezenta starea curent i instruciuni ale programului pentru a calcula tranziiile strilor i valorile semnalelor de ieire. Anumite arhitecturi sunt mai eficiente pentru implementarea anumitor modele. n plus, tehnologia de proiectare i de fabricaie au o mare influen n alegerea unei arhitecturi.

Metode de descriere a sistemelor numerice De aceea, proiectanii trebuie s ia n considerare mai multe alternative diferite de implementare n cadrul procesului de proiectare. Anumite arhitecturi sunt mai eficiente pentru implementarea anumitor modele. n plus, tehnologia de proiectare i de fabricaie au o mare influen n alegerea unei arhitecturi. De aceea, proiectanii trebuie s ia n considerare mai multe alternative diferite de implementare n cadrul procesului de proiectare.

11

Un circuit sau sistem poate fi modelat n moduri diferite n funcie de nivelul de abstractizare dorit (de exemplu, funcional, structural, fizic) i de metodele de modelare utilizate (de exemplu, limbaje, diagrame, modele abstracte). n ultimii ani, a crescut tendina de a utiliza limFigura 4. Arhitecturi utilizate pentru: (a) baje de descriere hardware pentru specificarea implementarea la nivelul registrelor; (b) circuitelor. Concizia acestor modele determin implementarea la nivel de sistem. ca ele s fie preferabile fa de diagramele logice, de stare i cele pentru fluxul de date i de control, chiar dac unele modele bazate pe diagrame sunt mai puternice pentru vizualizarea funciilor circuitelor. Modelele abstracte sunt modele matematice bazate pe grafuri i algebra boolean. La nivel de sistem, funcionarea poate fi abstractizat printr-un set de operaii i dependenele dintre ele. n domeniul funcional, un circuit secvenial este abstractizat printr-o main cu stri finite, care se reduce la o funcie boolean n cazul combinaional. n domeniul structural, abstractizarea se realizeaz sub forma unor interconexiuni ntre pori logice, blocuri logice sau subsisteme. Modelele abstracte sunt suficient de puternice pentru a reine caracteristicile eseniale descrise de modelele bazate pe limbaje i diagrame. n acelai timp, ele sunt suficient de simple pentru ca proprietile transformrilor efectuate asupra circuitelor s poat fi demonstrate.

2.2. Clasificarea modelelor


n general, modelele utilizate n cadrul sistemelor de proiectare asistat de calculator se ncadreaz n cinci categorii: modele orientate pe stare modele orientate pe activitate modele orientate pe structur modele orientate pe date modele eterogene Un model orientat pe stare, ca de exemplu un automat cu stri finite, reprezint sistemul ca un set de stri i un set de tranziii ntre acestea, care sunt activate de evenimente externe. Un asemenea model este cel mai potrivit pentru sistemele de control, cum sunt sistemele n timp real, la care comportarea n timp este aspectul cel mai important al proiectului.

Metode de descriere a sistemelor numerice

12

Un model orientat pe activitate, ca de exemplu un graf al fluxului de date, descrie sistemul ca un set de activiti legate prin dependene de date sau de execuie. Acest model este aplicabil mai ales pentru sistemele transformaionale, cum sunt sistemele de prelucrare a semnalelor numerice, la care datele trec printr-un set de transformri cu o rat fix. Utiliznd un model orientat pe structur, cum este o schem bloc, se pot descrie modulele fizice ale sistemului i interconexiunile dintre ele. Spre deosebire de modelele orientate pe stare i cele orientate pe activitate, care reflect n principal funcionarea sistemului, un model orientat pe structur se concentreaz n principal asupra structurii fizice a acestuia. Un model orientat pe date se va utiliza atunci cnd este necesar s se reprezinte sistemul ca o colecie de date ntre care exist relaii bazate pe atributele acestora, pe proprietatea de membru al unei clase etc. Acest tip de model este adecvat pentru sisteme informaionale, ca bazele de date, unde funcia sistemului este mai puin important dect organizarea datelor. n fine, proiectanii pot utiliza un model eterogen, care integreaz mai multe caracteristici ale modelelor anterioare, n cazul unui sistem complex.

2.3. Modele orientate pe stare


2.3.1. Automate cu stri finite
Automatul cu stri finite (ASF) este modelul cel mai utilizat pentru descrierea sistemelor de control, comportarea temporal a acestor sisteme fiind reprezentat sub forma strilor i a tranziiilor dintre stri. Un model ASF const dintr-un set de stri, un set de tranziii ntre stri, i un set de aciuni asociate cu aceste stri sau tranziii. Poate fi descris prin cvintuplul:
< S , I , O, f : S I S , h: S I O >

unde S = {s1, s2, ... , sl} este un set de stri, I = {i1, i2, ... , im} este un set de intrri, iar O = {o1, o2, ... , on} este un set de ieiri; f este funcia strii urmtoare, iar h este funcia de ieire. Fiecare ASF are o stare iniial i un set de stri finale. n Figura 5 se prezint un ASF care modeleaz un controler pentru ascensor ntr-o cldire cu trei etaje. n acest model, setul de intrri I = {r1, r2, r3} reprezint etajul cerut. De exemplu, r2 nseamn c este cerut etajul 2. Setul de ieiri O = {d1, d2, n, u1, u2} reprezint direcia n care trebuie s se deplaseze i numrul de etaje cu care trebuie s se deplaseze ascensorul. De exemplu, d2 nseamn c ascensorul trebuie s se deplaseze n jos cu 2 etaje, u2 nseamn c trebuie s se deplaseze n sus cu 2 etaje, iar n nseamn c ascensorul trebuie s rmn inactiv. Din figur se observ c Figura 5. Modelul ASF al controlerului pentru ascensor. dac etajul curent este 2 (deci dac starea curent este S2), i este cerut etajul 1, ieirea va fi d1.

Metode de descriere a sistemelor numerice

13

Exist dou tipuri de modele ASF des utilizate: bazate pe tranziii (Mealy) i bazate pe stri (Moore), care difer n principal prin definiia funciei de ieire h. ntr-un model ASF bazat pe tranziii, valorile ieirilor depind de stri i de intrri ( h: S I O) ; ntr-un model ASF bazat pe stri, valorile ieirilor depind numai de stri ( h: S O) . n Figura 5 s-a utilizat modelul bazat pe tranziii pentru modelarea controlerului pentru ascensor. Modelul bazat pe stri pentru acelai controler este prezentat n Figura 6, n care se indic n fiecare stare valoarea ieirii. Modelul ASF bazat pe stri poate necesita un numr mai mare de stri dect modelul bazat pe tranziii. Aceasta deoarece la modelul bazat pe tranziii pot exista arce multiple care indic la o singur stare, fiecare arc avnd o valoare diferit a ieirii; la modelul bazat pe stri fiecare valoare diferit de ieire necesit o stare proprie (Figura 6).

Figura 6. Modelul ASF bazat pe stri al controlerului pentru ascensor.

n cazurile n care un model ASF trebuie s reprezinte numere ntregi sau flotante, dac fiecare valoare posibil a numerelor necesit cte o stare, modelul va necesita un numr foarte mare de stri. De exemplu, un ntreg de 16 bii poate reprezenta 216 sau 65536 stri. Exist o cale simpl de a reduce numrul de stri, fiind posibil extensia unui model ASF cu variabile ntregi sau flotante. Introducerea unei variabile de 16 bii, de exemplu, va reduce numrul de stri cu 65536. Acest tip de model ASF extins se numete model ASF cu cale de date (ASFD), fiind specificat n continuare. Se definete un set de variabile de memorare VAR, un set de expresii
EXP = { f(x, y, z, ... ) | x, y, z, ... VAR } ,

i un set de asignri
A = { X e | X VAR, e EXP } .

n plus, se definete un set de expresii de stare sub forma unor relaii logice ntre dou expresii din setul EXP:
ST = { Rel(a,b) | a,b EXP}.

Metode de descriere a sistemelor numerice Pe baza acestor definiii, un model ASFD poate fi definit prin cvintuplul: <S, I ST, O A, f, h>

14

unde setul valorilor de intrare a fost extins pentru a include expresii de stare, setul valorilor de ieire a fost extins pentru a include asignri, iar funciile f i h sunt definite ca aplicaii
S (I ! ST) S

i respectiv
S (I ! ST) (O ! A).

Figura 7. Modelul ASFD al controlerului pentru ascensor.

Utiliznd acest model, controlerul pentru ascensor poate fi modelat cu o singur stare (Figura 7). Aceast reducere a numrului de stri este posibil deoarece s-a introdus variabila etaj_curent pentru a memora valoarea etajului curent, eliminnd necesitatea alocrii unei stri pe etaj. n general, modelul ASF este adecvat pentru modelarea sistemelor la care partea de control este predominant, n timp ce modelul ASFD poate fi adecvat att pentru sistemele la care este predominant partea de control, ct i pentru cele la care este predominant partea de prelucrare. Totui, niciunul din cele dou modele nu este adecvat pentru sistemele complexe, deoarece ele nu permit reprezentarea explicit a concurenei i a ierarhiei. Fr posibilitatea reprezentrii explicite a concurenei, un sistem complex va avea un numr foarte mare de stri. Considerm, de exemplu, un sistem care const din dou subsisteme concurente, fiecare cu 100 de stri posibile. Dac se ncearc reprezentarea acestui sistem cu un singur model ASF sau ASFD, trebuie s se reprezinte toate strile posibile ale sistemului, deci 100 x 100 = 10.000 de stri. n acelai timp, lipsa ierarhiei va determina o cretere a numrului de arce. De exemplu, dac exist 100 de stri, fiecare necesitnd un arc pentru tranziia la o anumit stare pentru o anumit valoare de intrare, vor fi necesare 100 de arce, spre deosebire de singurul arc necesitat de un model care poate grupa n mod ierarhic cele 100 de stri ntr-o singur stare. Aceste modele au dezavantajul c odat ce se ajunge la mai multe sute de stri sau arce, ele ajung neinteligibile pentru proiectani.

2.3.2. Reele Petri


Modelul reelelor Petri este un alt tip de model orientat pe stri, definit pentru modelarea sistemelor cu taskuri concurente n interaciune. Modelul const dintr-un set de locaii, un set de tranziii i un set de marcaje. Marcajele aparin locaiilor i circul prin reeaua Petri, fiind produse i consumate ori de cte ori o tranziie este activat. O reea Petri se poate defini prin cvintuplul: < L, T, I, O, u >

Metode de descriere a sistemelor numerice

15

unde L = {l1, l2, ... , lm} este un set de locaii, T = {t1, t2, ... , tn} este un set de tranziii, L i T fiind disjuncte. Funcia de intrare I : T L+ definete toate locaiile care furnizeaz intrri unei tranziii, iar funcia de ieire O : T L+ definete toate locaiile de ieire pentru fiecare tranziie. Funcia de marcaj u : L N definete numrul de marcaje din fiecare locaie.

Figura 8. Exemplu de reea Petri.

n Figura 8 se exemplific o reprezentare grafic i una textual pentru o reea Petri. n aceast reea exist cinci locaii (reprezentate prin cercuri) i patru tranziii (reprezentate prin bare verticale). Locaiile l2, l3 i l5 furnizeaz intrri pentru tranziia t2, iar l3 i l5 sunt locaiile de ieire pentru t2. Funcia de marcaj u asigneaz un marcaj locaiilor l1, l2 i l5, i dou marcaje locaiei l3, ceea ce se indic prin u(l1, l2, l3, l4, l5) = (1, 1, 2, 0, 1). O tranziie se poate activa numai dac ea este validat, deci dac fiecare din locaiile sale de intrare are cel puin un marcaj. O tranziie este activat atunci cnd s-au eliminat toate marcajele de validare din locaiile sale de intrare, i s-a plasat un marcaj n fiecare locaie de ieire. n Figura 8, de exemplu, dup activarea tranziiei t2 funcia de marcaj u se modific n (1, 0, 2, 0, 1). Reelele Petri sunt utile deoarece pot modela o varietate de caracteristici ale sistemelor. Figura 9(a), de exemplu, prezint modelarea secvenierii, la care tranziia t1 se activeaz dup tranziia t2. n Figura 9(b) se observ modelarea ramificaiei, la care sunt validate dou tranziii, dar se poate activa numai una dintre ele. n Figura 9(c) se prezint modelarea sincronizrii, la care o tranziie se poate activa numai dup ce ambele locaii de intrare au marcaje. Figura 9(d) prezint modelarea conflictului la resurse, dou tranziii concurnd pentru acelai marcaj, aflat n locaia din centru. n Figura 9(e) se poate observa modelarea concurenei, dou tranziii, t2 i t3, putnd fi activate simultan. Mai precis, Figura 9(e) modeleaz dou procese concurente, un productor i un consumator; marcajul aflat n locaia din centru este produs de t2 i este consumat de t3. Modelele cu reele Petri se pot utiliza pentru a testa i a valida anumite proprieti utile ale sistemelor, ca sigurana i viabilitatea. Sigurana, de exemplu, este proprietatea reelelor Petri care garanteaz c numrul marcajelor din reea nu va crete n mod nelimitat. Viabilitatea, pe de alt parte, este proprietatea reelelor Petri care garanteaz o operare fr interblocare, asigurnd existena a cel puin unei tranziii care se poate activa.

Metode de descriere a sistemelor numerice

16

Figura 9. Reele Petri reprezentnd: (a) secvenierea; (b) ramificaia; (c) sincronizarea; (d) conflictul la resurse; (e) concurena.

Dei reelele Petri au numeroase avantaje pentru modelarea i analiza sistemelor concurente, au i limitri care sunt similare cu cele ale modelului ASF: ele pot deveni neinteligibile la creterea complexitii sistemelor.

2.3.3. Automate cu stri finite ierarhice i concurente


Modelul ASF ierarhic i concurent reprezint o extensie a modelului ASF, care permite reprezentarea ierarhiei i a concurenei, eliminnd creterea exagerat a numrului de stri i de arce care apare la descrierea sistemelor ierarhice i concurente cu modelul ASF. Ca i modelul ASF, acest model const dintr-un set de stri i un set de tranziii. Spre deosebire de modelul ASF, n acest caz fiecare stare poate fi descompus ntr-un set de substri, modelndu-se astfel ierarhia. Fiecare stare poate fi descompus de asemenea n substri concurente, care se execut n paralel i comunic ntre ele prin variabile globale. Tranziiile n cadrul acestui model pot fi structurate sau nestructurate. Tranziiile structurate sunt permise numai ntre dou stri cu acelai nivel ierarhic, n timp ce tranziiile nestructurate pot apare ntre dou stri oarecare, indiferent de relaiile ierarhice dintre acestea. Un limbaj care este adaptat n mod deosebit acestui model este Statecharts, deoarece permite ierarhia, concurena i comunicaia ntre strile concurente. Statecharts utilizeaz tranziii nestructurate i un mecanism de comunicaie prin care evenimentele emise de oricare stare pot fi detectate de toate celelalte stri. Limbajul Statecharts este un limbaj grafic. Se utilizeaz dreptunghiuri rotunjite pentru a reprezenta strile la oricare nivel, i ncapsularea pentru a exprima o relaie ierarhic ntre aceste stri. Liniile punctate dintre stri reprezint concurena, iar sgeile indic tranziiile dintre stri, fiecare sgeat fiind etichetat cu un eveniment i, opional, cu o condiie i/sau aciune ntre paranteze.

Metode de descriere a sistemelor numerice

17

Figura 10. Statecharts: stri ierarhice i concurente.

n Figura 10 se prezint un exemplu de sistem reprezentat n limbajul Statecharts. Starea Y este descompus n dou stri concurente, A i D; prima const din dou substri B i C, iar a doua cuprinde substrile E, F i G. Conform limbajului, dac apare evenimentul b n timpul strii C, are loc transferul n starea B. Pe de alt parte, dac apare evenimentul a n timpul strii B, are loc transferul n starea C, dar numai dac este ndeplinit condiia P n momentul apariiei evenimentului. n timpul transferului din starea B n starea C, se va executa aciunea c, care este asociat cu aceast tranziie. Modelul automatelor cu stri finite ierarhice i concurente este adecvat pentru reprezentarea sistemelor de control complexe. Problema este c acest model, ca i toate modelele orientate pe stare, se concentreaz exclusiv asupra modelrii controlului, i deci poate asocia numai aciuni foarte simple, ca asignrile, cu tranziiile sau strile sale. Ca urmare, acest model nu este adecvat pentru modelarea anumitor caracteristici ale sistemelor complexe, care necesit structuri de date complexe sau execuia unor aciuni complexe n fiecare stare.

2.4. Modele orientate pe activitate


2.4.1. Grafuri ale fluxului de date
Modelele orientate pe stare sunt utilizate mai ales pentru sistemele reactive, la care starea sistemului se modific ca rspuns la anumite evenimente externe. Spre deosebire de acestea, grafurile fluxului de date (GFD) se utilizeaz n principal pentru sistemele transformaionale, la care ieirile sunt determinate de un set de calcule efectuate asupra intrrilor sistemului. Aceste grafuri constau dintr-un set de activiti (transformri) conectate printr-un set de arce care reprezint fluxul de date. Mai precis, un model GFD const dintr-un set de noduri i un set de arce. Exist mai multe tipuri de noduri ntr-un graf al fluxului de date. Primul tip cuprinde nodurile de intrare (numite i noduri surs) i nodurile de ieire (noduri destinaie), care reprezint intrrile sau ieirile datelor. Al doilea tip cuprinde nodurile de activitate (nodurile de proces), care repre-

Metode de descriere a sistemelor numerice

18

zint activitile care transform sau gestioneaz datele. Asemenea activiti pot fi descrise printr-un program, o procedur, o funcie, o instruciune sau o operaie aritmetic. Ultimul tip de noduri este cel de memorare, care reprezint diferite forme de memorare a datelor, ca nregistrrile dintr-o baz de date, fiierele dintr-un sistem de operare, sau variabilele dintr-o memorie sau registru. Aceste noduri sunt interconectate prin arce direcionate care sunt etichetate cu datele care sunt transmise ntre cele dou noduri. Acest model permite reprezentarea ierarhiei, deoarece fiecare nod de activitate poate fi reprezentat printr-un alt graf.

Figura 11. Diagram a fluxului de date: (a) la nivel de activitate; (b) la nivel de operaie.

Reprezentarea grafic a unui model GFD utilizeaz n general dreptunghiuri pentru nodurile de intrare i cele de ieire, cercuri pentru nodurile de activitate, i dreptunghiuri deschise pentru nodurile de memorare. Fluxul datelor este reprezentat prin arce, etichetate cu datele asociate. n exemplul din Figura 11, sistemul const din dou activiti, A1 i A2, ultima fiind descompus n activitile A2.1, A2.2 i A2.3. n acest sistem, data X se transfer de la intrare la A1, iar data V se calculeaz de A1 i se memoreaz n Fiier. Data V' va fi preluat apoi din Fiier i se va utiliza ca intrare pentru A2, mpreun cu data Y care a fost generat de A1. Datele Z i W reprezint ieirile generate de A2. Un model al fluxului de date este util deoarece poate fi utilizat n diferite domenii de aplicaii, sau n diferite faze de proiectare ale aceluiai domeniu, asociind diferite obiecte cu nodurile i muchiile grafului. De exemplu, n domeniul procesrii digitale a semnalelor, nodurile pot reprezenta variabile i operaii aritmetice, n timp ce arcele grafului pot indica de-

Metode de descriere a sistemelor numerice

19

pendene ale datelor, ca n Figura 11(b). n acest exemplu, operaia '+' este dependent de datele X i Y, iar operaia '*' este dependent de data Z i de ieirea operaiei '+'. Un model GFD nu descrie nici o secveniere impus, dincolo de dependenele datelor existente n cadrul diferitelor activiti. De asemenea, modelul nu conine nici o informaie referitoare la implementare. Din aceste motive, acest model este utilizat de multe ori n timpul fazei de specificaie a sistemelor. Deoarece modelul GFD permite descompunerea ierarhic, se poate utiliza i pentru specificarea sistemelor transformaionale complexe.

2.4.2. Grafuri ale fluxului de control


Aceste grafuri sunt n multe privine similare cu grafurile fluxului de date, dar arcele sunt utilizate pentru a reprezenta secvenierea sau fluxul de control. Grafurile fluxului de control sunt asemntoare i cu automatele cu stri finite cu ci de date, n sensul c ambele pun accentul pe aspectul de control al sistemului, dar difer de acestea prin mecanismele care activeaz tranziiile. n cazul ASF cu ci de date, tranziiile sunt activate prin apariia unor evenimente externe, n timp ce n cazul grafurilor fluxului de control tranziiile sunt activate ori de cte ori o anumit activitate este terminat. n principiu, un graf al fluxului de control const dintr-un set de noduri i un set de arce. Exist mai multe tipuri de noduri, primul tip fiind acela al nodurilor de nceput i de sfrit, care indic punctele de nceput i de sfrit ale grafului. Al doilea tip este cel al nodurilor de calcul, care se utilizeaz pentru a defini transformri asupra datelor. Al treilea tip este cel al nodurilor de decizie, care se utilizeaz pentru controlul ramificaiilor. Diferitele tipuri de noduri sunt interconectate prin arce direcionate, care indic ordinea n care trebuie executate operaiile specificate de noduri. Graful fluxului de control este util atunci cnd un sistem trebuie considerat ca un set de activiti secveniale, supervizate de un flux de control. Acest model este potrivit pentru sisteme cu taskuri care nu depind de evenimente externe. De asemenea, poate fi utilizat pentru a impune o ordine specific de execuie a activitilor ntr-un graf al fluxului de date, atunci cnd este necesar s se modifice dependena natural a datelor. Deoarece aceast ordine impus de proiectant poate sugera o anumit implementare a sistemului, graful fluxului de control se utilizeaz n acest mod numai dac implementarea sistemului este bine neleas.

2.5. Modele orientate pe structur


2.5.1. Diagrame de conexiune a componentelor
Diagramele de conexiune a componentelor (DCC) reprezint o clas de modele orientate pe structur care se utilizeaz pentru a descrie structura fizic a unui sistem, i nu funcionarea acestuia. Spre deosebire de grafurile fluxului de date sau de control, care reprezint un set de activiti ale sistemului conectate prin dependene de date sau de control, diagramele de conexiune a componentelor reprezint un set de componente ale sistemului i interconexiunile acestora. O diagram de conexiune a componentelor const dintr-un set de noduri i un set de conexiuni dintre acestea. Nodurile reprezint diferite componente, care sunt definite ca obiecte structurale cu un set de intrri i ieiri, ca pori logice, uniti aritmetice i logice, proce-

Metode de descriere a sistemelor numerice

20

soare sau chiar subsisteme. Conexiunile dintre componente pot fi reprezentate de fire sau magistrale.

Figura 12. Modelare orientat pe structur: (a) schem bloc a sistemului; (b) schem la nivelul RT; (c) schem la nivel de pori.

Deoarece acest model permite asocierea diferitelor obiecte cu nodurile i conexiunile dintre acestea, DCC poate fi inclus n diferite modele de reprezentare. n Figura 12, de exemplu, o diagram de conexiune este instaniat cu trei nivele diferite de abstractizare, rezultnd o schem bloc a sistemului, o schem la nivel de registre i o schem la nivel de pori. n schema bloc, componentele sunt definite ca module la nivel de sistem, ca procesoare, memorii, sau circuite ASIC. Conexiunile dintre aceste componente sunt specificate numai parial, deoarece aceast diagram nu cuprinde informaii detaliate de conexiune, ca dimensiunea magistralei sau semnalele de control. n schema la nivel de registre, componentele reprezint uniti la nivelul transferurilor ntre registre, ca uniti aritmetice i logice, registre, multiplexoare sau magistrale, iar conexiunile definesc modul n care datele vor fi transferate ntre aceste elemente aritmetice i cele de memorie. n cadrul acestei scheme, de obicei semnalele de control nu sunt specificate. Schema la nivel de pori utilizeaz pori logice ca i componente, iar conexiunile dintre aceste componente reprezint conexiuni fizice. Conexiunile de date i de control sunt specificate complet. Deoarece modelul DCC este adecvat pentru a reprezenta structura sistemului, este utilizat adesea n fazele finale ale procesului de proiectare, cnd proiectantul trebuie s specifice implementarea sistemului.

Metode de descriere a sistemelor numerice

21

2.5.2. Structuri de inciden


O structur de inciden const dintr-un set de module, un set de conexiuni i o relaie de inciden ntre module i conexiuni. Un model simplu pentru reprezentarea structurii este hipergraful, unde nodurile corespund modulelor i arcele corespund conexiunilor. Relaia de inciden este reprezentat printr-o matrice de inciden. O alt posibilitate de a specifica o structur este de a reprezenta fiecare modul prin terminalele sale, numite pini (sau porturi), i de a descrie relaia de inciden dintre conexiuni i pini. De multe ori matricea de inciden este rar, i descrierea se poate realiza mai eficient prin liste de conexiuni. O list de conexiuni specific toate conexiunile unui modul dat (list orientat pe module), sau toate modulele unei conexiuni date (list orientat pe conexiuni).

Figura 13. Exemplu de structur de inciden: (a) module, conexiuni i pini; (b) graf bipartit.

Considernd exemplul din Figura 13(a), exist trei module, trei conexiuni i apte pini. Matricea de inciden modul-conexiune este: 1 1 1 1 1 0 0 1 1 Graful bipartit este prezentat n Figura 13(b). Lista de conexiuni orientat pe module este: m1: n1, n2, n3 m2: n1, n2 m3: n2, n3 Structurile de inciden pot fi ierarhice. Un modul terminal este o primitiv cu un set de pini. Un modul non-terminal const dintr-un set de module, reprezentnd submodulele acestuia, un set de conexiuni i o structur de inciden care stabilete o relaie ntre conexiuni i pinii modulului i cei ai submodulelor.

Metode de descriere a sistemelor numerice Considernd exemplul precedent, presupunem c structura este ierarhic i modulul m2 are submodule. n Figura 14 se prezint detaliile modulului m2, care const din submodulele m21 i m22, conexiunile n21 i n22, i pinii interni p21, p22, p23, p24 i p25.

22

2.5.3. Reele logice


O reea logic generalizat este o structur n care fiecare modul terminal este asociat cu o funcie logic. Se consider n continuare dou restricii ale acestui model: reeaua logic combinaional i reeaua logic secvenial.
Figura 14. Exemplu de structur ierarhic: detaliile modulului m2.

O reea logic combinaional, numit i reea logic sau reea boolean, este o structur ierarhic n care: Fiecare modul terminal este asociat cu o funcie logic combinaional cu mai multe intrri i o singur ieire, reprezentnd o funcie local. Pinii sunt partiionai n dou clase, numite intrri i ieiri. Pinii care nu aparin submodulelor sunt de asemenea partiionai n dou clase, numite intrri primare i ieiri primare. Fiecare conexiune are un terminal distinct, numit terminal surs, i o orientare de la terminalul surs la celelalte terminale. Sursa unei conexiuni poate fi o intrare primar sau o ieire primar a unui modul de la nivel inferior. (n particular, aceasta poate corespunde cu ieirea unei funcii locale.) Relaia indus de conexiuni asupra modulelor este cea de ordine parial. Reelele logice sunt reprezentate de obicei prin grafuri. Un graf al reelei logice, Gn(V,E), este un graf direcionat, al crui set de noduri V se afl n coresponden direct cu intrrile primare, funciile locale i ieirile primare. Setul de arce direcionate E reprezint descompunerea conexiunilor cu terminale multiple n conexiuni cu dou terminale. De notat c graful este aciclic prin definiie, deoarece conexiunile induc o ordine parial asupra modulelor. n Figura 15(a) se prezint un exemplu de reea logic, iar n Figura 15(b) se prezint graful corespunztor. Graful are trei noduri de intrare, va, vb i vc, dou noduri de ieire, vx i vy, i dou noduri interne, vp i vq, corespunztoare funciilor logice. n cele mai multe cazuri, reelele logice sunt utilizate pentru a reprezenta funcii logice cu intrri/ieiri multiple ntr-un mod structurat. Reelele logice au o funcie logic combinaional unic de intrare/ieire, care se poate obine prin combinarea funciilor locale pentru a exprima ieirile primare n funcie de intrrile primare. De multe ori funciile de intrare/ieire nu pot fi reprezentate n forme standard, ca sumele de produse, din cauza complexitii lor. Acesta este un motiv pentru a se utiliza modelul reelelor logice. De notat c acest model nu constituie o reprezentare unic a unei funcii combinaionale.

Metode de descriere a sistemelor numerice Modelul reelelor logice sincrone este o generalizare a modelului reelelor logice combinaionale, pentru a permite descrierea circuitelor secveniale sincrone. n cazul acestui model, modulele terminale pot implementa funcii logice combinaionale cu intrri multiple i o singur ieire sau elemente de ntrziere sincrone. Conexiunile nu trebuie s induc o relaie de ordine parial asupra modulelor. Totui, subsetul conexiunilor a cror surs nu este un element de ntrziere trebuie s induc o relaie de ordine parial asupra modulelor, pentru a modela cerina ca ntr-un circuit sincron s nu existe bucle combinaionale directe.

23

n timp ce funcionarea circuitelor logice combinaionale poate fi descris prin funcii logice, funcionarea circuitelor sec- Figura 15. Exemplu de reea logic: (a) module, intrri i ieiri; (b) graful reelei logice. veniale poate fi descris prin secvene de intrri i ieiri, care corespund cu secvenele pe care modelele automatelor cu stri finite le pot accepta i genera. Secvenele sunt notate prin variabile crora li se ataeaz momente de timp. De exemplu, x(n) indic variabila x la momentul de timp n. Este convenabil s existe o notaie prescurtat pentru variabile, fr o dependen explicit de timp, indicnd o ntrziere sincron printr-un offset fa de un moment de timp de referin. Aceasta se reprezint prin adugarea simbolului @, urmat de valoarea offsetului, la variabila respectiv. Astfel, x@k = x(n-k) i x = x@0. Ecuaiile care utilizeaz notaia prescurtat sunt normalizate astfel nct se presupune c partea stng are un offset egal cu zero, deci ecuaia x(n+1) = y(n) este translatat prin x = y@1. O reea logic sincron poate fi definit prin: Un set de noduri V partiionat n trei subseturi numite intrri primare VI, ieiri primare VO i noduri interne VG. Fiecare nod este asociat unei variabile. Un set de funcii combinaionale booleene scalare asociate cu nodurile interne. Variabilelor fiecrei funcii locale li se adaug momente de timp, i aceste variabile sunt asociate cu intrrile primare sau alte noduri interne. Un set de asignri ale ieirilor primare la nodurile interne, care indic variabilele care sunt observabile din afara reelei. n cadrul unei reele logice sincrone registrele se reprezint implicit, prin ponderi pozitive asignate conexiunilor (i arcelor din graful corespunztor). Se presupune c reelele de inerconexiune sunt divizate n seturi de conexiuni ntre dou terminale. De observat c o funcie local poate depinde de valoarea unei variabile la momente diferite de timp. n acest caz modelul necesit arce multiple ntre nodurile respective, fiecare avnd o pondere corespunztoare. Deci, o reea sincron este modelat printr-un multi-graf, notat cu Gsn(V,E,P). Un exemplu de circuit sincron i modelul corespunztor sunt prezentate n Figura 16(a), respectiv 16(b).

Metode de descriere a sistemelor numerice

24

Figura 16. Exemplu de reea logic sincron: (a) circuit sincron; (b) graful reelei logice.

Ca i n cazul reelelor combinaionale, este posibil o reprezentare alternativ prin ecuaii logice, n care apar variabile cu o dependen explicit de timp. Considernd reeaua din Figura 16(a), aceasta poate fi descris prin urmtorul set de ecuaii: a(n) = i(n) i(n-1) b(n) = i(n-1) i(n-2) c(n) = a(n) b(n) d(n) = c(n) + d (n-1) e(n) = d(n) e(n-1) + d (n) b v(n) = c(n) s(n) = e(n-1) sau, sub forma prescurtat: a = i i@1 b = i@1 i@2 c=ab d = c + d @1 e = d e@1 + d b v=c s = e@1

(n)

2.6. Modele eterogene


2.6.1. Grafuri ale fluxului de control i de date
Un graf al fluxului de control i de date (GFCD) este un model eterogen conceput pentru a combina avantajele grafurilor fluxului de control i ale grafurilor fluxului de date.

Metode de descriere a sistemelor numerice

25

Un model GFCD conine grafuri ale fluxului de date i un graf al fluxului de control, care indic secvenierea grafurilor fluxului de date. Astfel, modelul GFCD poate indica explicit att dependena datelor, ct i secvena de control a unui sistem ntr-o singur reprezentare.

Figura 17. Graf al fluxului de control i de date: (a) secven de program; (b) GFCD.

n Figura 17(b) se prezint o reprezentare sub forma modelului GFCD a secvenei de program din Figura 17(a). Construciile de control, cum este instruciunea case, sunt reprezentate prin nodurile grafului fluxului de control, iar grupurile instruciunilor de asignare sunt reprezentate prin grafuri ale fluxului de date. Cele dou tipuri de grafuri sunt conectate prin linii ntrerupte, care indic activitile din grafurile fluxului de date asociate cu diferitele noduri ale grafului fluxului de control. Un model GFCD nu este ns limitat la reprezentarea construciilor de control i a instruciunilor de asignare din limbajele de programare. Poate fi utilizat de asemenea pentru a reprezenta activitile complexe i aciunile de control din cadrul unui sistem, fiind utilizat n mod frecvent la proiectarea sistemelor n timp real. ntr-un asemenea sistem, graful fluxului de control poate rspunde la evenimentele interne i externe, i poate controla execuia activitilor din graful fluxului de date prin aciuni de control, ca validarea unei activiti sau invalidarea acesteia.

Metode de descriere a sistemelor numerice

26

Figura 18. Exemplu de model GFCD la nivel de activitate.

n Figura 18 se prezint un exemplu de model GFCD la nivel de activitate. Conform acestei reprezentri, dac graful fluxului de control se afl n starea S0 i apare evenimentul start, activitile A1 i A2 vor fi validate i sistemul va trece n starea S1. Dac graful se afl n starea S1 i apare evenimentul W=10, activitatea A1 va fi invalidat, activitatea A3 va fi validat, i sistemul va trece n starea S2. n sfrit, dac sistemul se afl n starea S2 i apare evenimentul stop, activitile A2 i A3 vor fi invalidate i sistemul va reveni n starea S0. W, X, Y i Z reprezint fluxul datelor ntre diferitele activiti specificate n graful fluxului de date. Avantajul principal al modelului GFCD este c se corecteaz incapacitatea unui graf al fluxului de date de a reprezenta controlul unui sistem, ca i incapacitatea unui graf al fluxului de control de a reprezenta dependena datelor. n consecin, modelul este mai complet i este adecvat pentru diferite domenii de proiectare, ca sistemele n timp real sau sinteza funcional a circuitelor ASIC.

2.6.2. Diagrame de structur


Modelul diagramelor de structur, dezvoltat de Yourdon i Constantine, este un alt model eterogen, elaborat pentru a specifica datele, activitile i controlul execuiei activitilor din cadrul unui sistem ntr-o singur reprezentare. Diagrama de structur este util pentru proiectanii care lucreaz cu programe. n principiu, diagrama de structur const dintr-un set de noduri, care reprezint activiti, i un set de arce, care reprezint apelurile de proceduri sau funcii ntr-un limbaj de programare. Datele transferate ntre activiti sunt indicate pe arcele dintre noduri. Controlul execuiei activitilor este descris printr-un set de structuri de control, ca ramificaia, iteraia i apelul de procedur. Grafic, toate activitile din sistem sunt reprezentate prin dreptunghiuri, iar datele transferate ntre aceste activiti sunt reprezentate prin sgei etichetate. Apelurile de proceduri sunt reprezentate prin arce, o construcie de ramificaie se reprezint printr-un romb, iar o construcie iterativ printr-o bucl. n Figura 19 se prezint un exemplu de diagram de structur. n ceea ce privete secvenierea activitilor, modulul Main apeleaz nti modulul Get pentru a obine datele A i B. Modulul Get va apela la rndul su modulele Get_A i Get_B. Modulul Main va

Metode de descriere a sistemelor numerice

27

Figura 19. Exemplu de diagram de structur.

transfera apoi datele A i B modulului Transform, care va apela fie modulul Transf_A pentru a transforma data A n A', fie modulul Transf_B pentru a transforma data B n B', n funcie de valorile anumitor condiii. Dup obinerea datelor A' i B' de la modulul Transform, modulul Main va transmite aceste date modulului Calcul, care va apela dou module iterative, Bucla1 i Bucla2. La terminarea acestor module, modulul Calcul va returna datele C i D modulului Main, care va transmite apoi data C modulului Out_C. Ca i n cazul modelului GFDC, diagrama de structur poate reprezenta att informaiile de control ct i datele. Trebuie menionat c diagrama de structur nu specific n mod complet secvenierea execuiei. De exemplu, nu se cunoate ordinea n care sunt apelate modulele Get_A i Get_B; ordinea de execuie a acestor module este determinat de dependena datelor. Pe de alt parte, modelul diagramei de structur nu furnizeaz construcii care pot reprezenta un control pentru ramificaii, iteraii i apeluri de proceduri. Deoarece diagramele de structur pot specifica ordinea de execuie ntr-o anumit msur, ele se utilizeaz n principal n etapele preliminare ale proiectrii programelor secveniale.

2.6.3. Automate cu stri ale programului


Un automat cu stri ale programului (ASP) este un alt model eterogen care combin modelul automatelor cu stri finite ierarhice i concurente cu modelul limbajelor de programare. Acest model const dintr-o ierarhie de stri ale programului, n care fiecare stare reprezint un mod de prelucrare distinct. n orice moment, va fi activ numai un subset de stri ale programului, cele care efectueaz prelucrri. n cadrul ierarhiei sale, modelul va consta din stri ale programului de dou tipuri: compuse i terminale. O stare compus poate fi descompus n substri concurente sau secveniale ale programului. Dac sunt concurente, toate substrile vor fi active ori de cte ori starea programului este activ, iar dac sunt secveniale, substrile vor fi active numai una cte una, dac starea programului este activ. O stare a programului descompus secvenial conine un set de arce de tranziie, care reprezint secvenierea ntre substrile programului. Exist dou tipuri de arce de tranziie. Primul este arcul de tranziie la terminare (TT), care va fi traversat numai atunci cnd substarea surs i-a terminat prelucrrile i condiia asociat arcului devine adevrat. Al doilea este arcul de tranziie imediat (TI), care va fi traversat imediat ori de cte ori condiia

Metode de descriere a sistemelor numerice

28

asociat arcului devine adevrat, indiferent dac substarea surs i-a terminat sau nu prelucrrile. O stare terminal se afl n partea inferioar a ierarhiei i prelucrrile sale sunt descrise prin instruciuni ale unui limbaj de programare. Dac se utilizeaz automatul cu stri ale programului ca model, sistemul ca entitate va fi reprezentat grafic ca un dreptunghi, iar strile programului din cadrul entitii vor fi reprezentate ca dreptunghiuri cu coluri rotunjite. O relaie concurent ntre substrile programului este indicat printr-o linie punctat ntre ele. Tranziiile sunt reprezentate prin arce direcionate. Starea iniial este indicat printr-un triunghi, iar terminarea diferitelor stri este indicat printr-un arc de tranziie spre punctul final, reprezentat printr-un mic ptrat n cadrul strii. Arcele TT sunt cele care ncep de la un ptrat din interiorul substrii surs, n timp ce arcele TI ncep de la perimetrul substrii surs.

Figura 20. Exemplu de model ASP.

n Figura 20 se prezint un exemplu de model ASP, constnd dintr-o stare rdcin Y, care cuprinde dou substri concurente A i D. Starea A conine dou substri secveniale, B i C. Strile B, C i D sunt stri terminale, dei n figur se indic numai programul pentru starea D. Arcele etichetate cu e1 i e3 sunt arce TT, iar arcul etichetat cu e2 este un arc TI. Configuraia arcelor indic faptul c atunci cnd starea B se termin i condiia e1 este adevrat, controlul se transfer n starea C. Dac ns condiia e2 este adevrat n starea C, controlul se transfer n starea B indiferent dac prelucrrile efectuate de starea C se termin sau nu. Deoarece automatele cu stri ale programului pot reprezenta strile, datele i activitile unui sistem ntr-un singur model, ele sunt mai potrivite pentru modelarea sistemelor care au date i activiti complexe asociate cu fiecare stare, dect modelele ASF ierarhice i concurente. Un model ASP poate de asemenea elimina limitarea principal a limbajelor de programare, deoarece poate modela strile n mod explicit. Acest model permite specificarea unui sistem utiliznd descompunerea ierarhic a strilor, pn cnd devine convenabil utili-

Metode de descriere a sistemelor numerice

29

zarea construciilor limbajelor de programare. Modelul limbajelor de programare i modelul automatelor cu stri finite ierarhice i concurente reprezint dou extreme ale modelului ASP. Un program poate fi considerat ca un model ASP cu o singur stare terminal coninnd construcii ale limbajului. Un model ASF ierarhic i concurent poate fi considerat ca un model ASP n care strile terminale nu conin construcii ale unui limbaj de programare.

2.6.4. Modelul firelor de ateptare


Acest model este diferit de modelele descrise anterior, n sensul c acestea se utilizeaz mai ales pentru proiectarea sistemelor, n timp ce modelul firelor de ateptare este utilizat pentru analizarea unui sistem, de exemplu atunci cnd trebuie s se gseasc posibiliti de mbuntire a performanelor sistemului. Caracteristica modelului firelor de ateptare este c reprezint un sistem ca o reea de fire de ateptare i servere. Cererile sunt memorate n firele de ateptare n timp ce se ateapt prelucrarea lor de ctre servere. Importana acestui model este c asigur o baz pentru tipul de analize matematice necesare adesea pentru a soluiona problemele dintr-un sistem. De exemplu, dac se cunosc anumite caracteristici ale sistemului, ca numrul de servere, tipul firelor de ateptare, intervalul dintre dou cereri consecutive, i timpul de servire necesar pentru o cerere, modelul firelor de ateptare permite obinerea unor informaii suplimentare despre gradul de utilizare al serverelor, numrul mediu de cereri n ateptare, rata de transfer. Proiectanii pot utiliza aceste informaii pentru a localiza strangulrile din sistem. Diferitele modele pot necesita tipuri diferite de analize matematice. Anumite modele, ca cel cu un singur server i un singur fir de ateptare, necesit tehnici relativ simple, n timp ce altele necesit tehnici mai sofisticate, iar unele sunt aproape imposibil de analizat cantitativ. Ca un exemplu, se analizeaz modelul cu un singur server i un singur fir de ateptare. Pentru a putea efectua analizele matematice n vederea determinrii comportrii sistemului, trebuie s se cunoasc mai muli parametri ai modelului. De exemplu, trebuie s se cunoasc timpul dintre dou cereri succesive, i timpul necesar pentru deservirea fiecrei cereri. Este posibil s se modeleze aceti timpi ca variabile aleatoare cu distribuii bine definite, ca n cazul n care se presupune c aceti timpi sunt distribuii exponenial. ntr-un asemenea caz, dac timpul mediu ntre dou cereri este i timpul mediu de deservire este , atunci un fir de ateptare stabil poate fi obinut dac > , deoarece astfel se previne existena unui numr prea mare de cereri n ateptare. Dac ns , firul de ateptare va fi instabil, putnd rezulta timpi de ateptare infinii.

Metode de descriere a sistemelor numerice

30

3. Limbaje de descriere hardware


3.1. Introducere
Metodologiile de proiectare actuale pentru sistemele hardware utilizeaz specificarea proiectelor prin scheme electrice i apoi simularea acestora. Specificaia iniial este realizat de obicei n limbaj natural, fiind completat cu diagrame de stare, diagrame de timp i scheme bloc. n acest proces, specificaia iniial este rafinat de ctre proiectant, care adaug noi informaii pn cnd se obine un proiect complet la nivelul transferurilor ntre registre. n timpul acestui proces de rafinare, proiectantul nu pstreaz ntotdeauna specificaia iniial sau o descriere consistent corelat cu specificaia iniial. Din cauza lipsei unei descrieri formale, i a lipsei documentaiei n timpul procesului de proiectare, modificarea proiectului, ca i utilizarea sistemelor de sintez, simulare i verificare n cadrul acestui proces, sunt dificile. n ultimii ani, exist o tendin de a se utiliza limbajele de descriere hardware pentru specificarea proiectelor, modelele bazate pe aceste limbaje fiind preferate fa de diagramele de stare, grafurile fluxului de date i de control, dei unele modele bazate pe diagrame sunt mai puternice n ceea ce privete vizualizarea funciilor unui sistem. Exist mai multe avantaje ale utilizrii limbajelor de descriere ca limbaje de specificaie executabil, pentru descrierea sistemului la nivel conceptual. n primul rnd, descrierea executabil se poate utiliza pentru simulare, ceea ce permite proiectantului verificarea corectitudinii funcionrii propuse a sistemului. n cazul abordrii tradiionale, care ncepe cu o specificaie n limbaj natural, o asemenea verificare nu este posibil pn la obinerea unei descrieri a sistemului care permite simularea (de obicei o schem la nivel de pori logice). Al doilea avantaj este c specificaia poate servi ca intrare pentru sistemele de sintez automat, care se pot utiliza pentru obinerea unei implementri a sistemului, reducndu-se timpul de proiectare n mod semnificativ. n al treilea rnd, o asemenea specificaie se poate utiliza pentru documentarea sistemului, constituind o descriere neambigu a funcionrii acestuia. De asemenea, aceasta poate constitui un mediu de schimb al informaiilor ntre diferii utilizatori i ntre acetia i diferite sisteme de proiectare. n sfrit, pe msur ce proiectele devin din ce n ce mai complexe, limbajele de descriere pot asigura creterea nivelului de abstractizare pentru a se face fa acestei complexiti. Chiar dac unele limbaje de descriere s-au dezvoltat din anumite limbaje de programare, ca de exemplu AHPL, care se bazeaz pe limbajul APL, i VHDL, care provine din limbajul ADA, natura specific a circuitelor hardware determin ca aceste limbaje s fie diferite de limbajele de programare utilizate n mod curent. Astfel, semantica unei funcii specificate ntr-un limbaj de descriere implic un proiect hardware care urmeaz a fi implementat, spre

Metode de descriere a sistemelor numerice

31

deosebire de o funcie care se execut pe un sistem existent. De asemenea, aceste limbaje au construcii suplimentare pentru a se adapta la facilitile speciale ale circuitelor. Obiectivele multiple ale limbajelor de descriere hardware nu pot fi ndeplinite de limbajele de programare utilizate pentru specificaiile hardware. Limbajele de programare standard au fost utilizate pentru modelarea funcional a procesoarelor, modelare care poate fi validat prin compilarea i execuia modelelor. Totui, asemenea modele nu pot fi utilizate pentru sintez, din cauza lipsei facilitilor speciale necesare pentru aceste limbaje. Unele limbaje de programare au fost extinse n vederea utilizrii lor pentru simulare i sintez. Astfel, din limbajul C s-au dezvoltat noi limbaje de descriere hardware, ca ESIM i HardwareC. Pentru a se aprecia diferena dintre cele dou tipuri de limbaje, se vor compara n continuare cele mai importante caracteristici ale obiectelor descrise de limbajele hardware i software. n primul rnd, circuitele hardware pot executa operaii cu un grad nalt de concuren. Din contr, programele sunt executate n mod obinuit pe sisteme cu un singur procesor i deci operaiile sunt secveniale. Din acest punct de vedere, limbajele de descriere hardware sunt mai apropiate de limbajele de programare pentru calculatoarele paralele. n al doilea rnd, specificaiile circuitelor hardware necesit anumite informaii structurale. De exemplu, interfaa unui circuit cu exteriorul necesit definirea porturilor de intrare/ieire i a formatului datelor transmise prin aceste porturi. Din acest motiv, limbajele de descriere trebuie s permit att descrieri funcionale, ct i structurale. n al treilea rnd, sincronizarea operaiilor este foarte important n cazul circuitelor. Pe de alt parte, sincronizarea operaiilor din cadrul programelor este de importan mai redus, cu excepia aplicaiilor n timp real. Primele limbaje de descriere hardware erau utilizate pentru descrieri la nivelul porilor logice, deoarece proiectele erau specificate i implementate la acest nivel. Pe msur ce nivelul de abstractizare al proiectelor devenea mai nalt, a crescut i nivelul de abstractizare al limbajelor de descriere, rezultnd o proliferare a limbajelor de descriere de nivel nalt, ceea ce a creat dificulti n privina portabilitii descrierilor. Asemenea probleme au condus la eforturi de standardizare a limbajelor pentru proiectarea sistemelor digitale (Conlan, VHDL, UDL/I), cu scopul de a dezvolta un limbaj comun care se poate utiliza pentru modelare, simulare i documentare. Standardizarea limbajelor este dificil, deoarece acestea trebuie utilizate pentru proiectarea diferitelor tipuri de aplicaii, pentru diferite aspecte ale proiectrii (de exemplu, simulare i sintez), i pentru diferite arhitecturi. De aceea se impun cerine diferite pentru aceste limbaje. De exemplu, o aplicaie n domeniul prelucrrii semnalelor digitale este reprezentat cel mai eficient sub forma grafurilor semnalelor, n timp ce o interfa cu o magistral este descris cel mai frecvent sub forma diagramelor de timp; o descriere pentru simulare necesit existena noiunii timpului de simulare, n timp ce o descriere pentru sintez trebuie s conin construcii care pot fi implementate prin sintez; un proiect bazat pe automate cu stri finite necesit ca limbajul s conin noiunea de stare, n timp ce o descriere de sistem necesit construcii pentru exprimarea ierarhiei i a protocoalelor de comunicaie. Din aceste motive, proiectanii necesit diferite tipuri de descrieri, sub form tabelar, grafic sau textual, n funcie de tipul aplicaiei proiectate i de arhitectura care se va utiliza pentru implementare. Deoarece diferitele modele conceptuale au caracteristici diferite, un

Metode de descriere a sistemelor numerice

32

anumit limbaj utilizat pentru specificaie este sau nu adecvat pentru modelul respectiv dup cum permite exprimarea, prin construciile limbajului, a tuturor caracteristicilor sau a unui numr redus de caracteristici ale modelului. Pentru ca un limbaj s poat fi utilizat n mod eficient, trebuie s existe o corelaie ntre caracteristicile modelului conceptual i construciile limbajului.

3.2. Tipuri de limbaje de descriere hardware


Limbajele de descriere hardware, ca i limbajele de programare, pot fi clasificate n limbaje procedurale i declarative (neprocedurale). Limbajele de descriere procedurale specific o aciune dorit sub forma unui algoritm, prin descrierea unei secvene de operaii efectuate de componentele unei uniti. O descriere procedural identific fluxul informaiilor prin diferitele elemente i natura algoritmic a proiectului. Aceast descriere este utilizat atunci cnd proiectantul este interesat de funcionarea sistemului i mai puin de structura exact a acestuia. Descrierea nu este, totui, pur funcional, utilizndu-se elemente hardware pentru specificarea fluxului informaiilor. Limbajele de descriere hardware au fost dezvoltate adesea mpreun cu simulatoarele, iar acestea au influenat anumite opiuni n proiectarea limbajelor. Viteza de execuie este o cerin major pentru simulatoare. n cazul utilizrii simulatoarelor procedurale, timpul de simulare este considerabil mai mic fa de cazul n care se utilizeaz simulatoare neprocedurale, aceasta deoarece simularea procedural presupune c un element este activ numai atunci cnd este menionat n descriere. La alte momente de timp, nu este activ nici o operaie a acestui element. Limbajele de descriere declarative (neprocedurale) specific funcionarea fiecrui element hardware i interconexiunile dintre elemente. O descriere declarativ nu include conceptul fluxului de date, comunicaia dintre elemente fiind considerat ca un transfer de valori prin conexiunile dintre acestea. Dac se cunosc informaiile despre componente i compoziia structural a sistemului, acest sistem poate fi reprezentat n mod neprocedural. Avantajul este c descrierea este simpl i concis. n cazul utilizrii simulatoarelor neprocedurale, toate elementele se presupun active simultan n fiecare moment. Astfel se mbuntete fidelitatea simulrii, dar timpul de simulare este mai ridicat. Pe lng clasificarea de mai sus, limbajele de descriere mai pot fi clasificate n limbaje cu semantic imperativ i limbaje cu semantic aplicativ. O clasificare a limbajelor pe aceast baz este dificil, deoarece adesea limbajele au caracteristici semantice din ambele categorii. Cele mai multe limbaje sunt procedurale cu o semantic imperativ. Limbajele de descriere se clasific i n funcie de nivelul de descriere pentru care se utilizeaz (funcional, structural, fizic). De exemplu, limbajele utilizate pentru descrierea la nivelul fizic sunt caracterizate prin faptul c dispun de primitive geometrice i permit operaii cu aceste primitive. Cele mai multe limbaje permit att descrieri structurale, ct i funcionale, deoarece specificarea circuitelor necesit de multe ori ambele tipuri de descrieri.

3.2.1. Limbaje de descriere structurale


Modelele create cu limbajele de descriere structurale descriu interconexiunile dintre componentele sistemului. Caracteristicile de baz ale limbajelor structurale le plaseaz n cla-

Metode de descriere a sistemelor numerice

33

sa celor declarative, dei unele limbaje structurale au i caracteristici procedurale. Variabilele utilizate n cadrul limbajelor corespund porturilor componentelor. Exemplul 3.2.1. Se consider un circuit semisumator. Circuitul va fi descris n limbajul VHDL, utiliznd facilitatea de modelare structural a acestuia. n limbajul VHDL, toate proiectele sunt compuse din entiti, acestea reprezentnd blocurile de baz ale proiectelor. O declaraie a unei entiti, indicat prin cuvntul cheie ENTITY, descrie interfaa cu exteriorul, specificnd porturile i tipul acestora. Toate entitile care pot fi simulate au o descriere a arhitecturii, care specific funcionarea entitii. O entitate poate avea mai multe arhitecturi; de exemplu, una din arhitecturi poate conine o descriere structural, i alta o descriere funcional. Arhitectura nu se refer la nivelul arhitectural al abstractizrii.
ENTITY semi_sumator IS PORT (a, b: IN BIT; sum, carry: OUT BIT); END semi_sumator; ARCHITECTURE struct OF semi_sumator IS COMPONENT and2 port (x, y: IN BIT; o: OUT BIT); END COMPONENT; COMPONENT xor2 port (x, y: IN BIT; o: OUT BIT); END COMPONENT; BEGIN u1: and2 PORT MAP (a, b, carry); u2: xor2 PORT MAP (a, b, sum); END struct;

Modelul conine dou declaraii ale altor modele, and2 i xor2, i dou instanieri ale acestor modele, u1 i u2. Informaiile suplimentare despre cele dou componente and2 i xor2 se afl ntr-o bibliotec de componente standard. Pentru a realiza modele compacte ale circuitelor, se utilizeaz alte tipuri de variabile numite metavariabile. Un exemplu de metavariabil este un index al unui tablou. Metavariabilele nu reprezint entiti hardware i sunt eliminate din model n primele etape ale compilrii. Exemplul 3.2.2. n fragmentul urmtor se modeleaz n limbajul VHDL un tablou de 32 inversoare ntre dou magistrale. Se declar componenta inversor, tabloul de inversoare fiind creat prin construcia GENERATE n care se utilizeaz metavariabila i.
ARCHITECTURE structural OF tablou_inv IS COMPONENT inversor port (i1: IN BIT; o1: OUT BIT); END COMPONENT; BEGIN u: FOR i IN 1 TO 32 GENERATE inv: inversor PORT MAP (input(i), output(i)); END GENERATE; END structural;

Metode de descriere a sistemelor numerice

34

3.2.2. Limbaje de descriere funcionale


Circuitele logice combinaionale pot fi descrise funcional printr-un set de porturi (intrri/ieiri) i un set de ecuaii. Limbajele declarative sunt cele mai potrivite pentru circuitele combinaionale, acestea fiind considerate ca o interconexiune de operatori, fiecare operator evalund o funcie logic. Aceste modele difer de modelele structurale prin faptul c nu exist o coresponden unu la unu ntre expresii i porile logice, deoarece nu exist ntotdeauna o singur poart pentru implementarea unor expresii. Pentru descrierea circuitelor combinaionale se pot utiliza i limbajele procedurale. Cele mai multe limbaje de descriere procedurale permit asignri multiple la variabile. n aceste cazuri este necesar o interpretare neambigu a acestor asignri multiple. Se utilizeaz funcii de decizie, care returneaz valoarea unui semnal dac semnalul are mai multe drivere. Exist diferite mecanisme de decizie; de exemplu, ultima asignare le poate anula pe cele anterioare. Funciile de decizie pot fi incluse n limbaj, sau pot fi definite de utilizator. n limbajul VHDL, de exemplu, utilizatorul poate defini orice tip de funcie de decizie (SAU cablat, I cablat, valoare medie etc.). Exemplul 3.2.3. Se consider din nou circuitul semisumator, care va fi descris n limbajul VHDL, utiliznd facilitatea de modelare funcional a acestuia.
ARCHITECTURE functional OF semi_sumator IS BEGIN carry <= (a AND b); sum <= (a XOR b); END functional;

Operatorii AND i XOR sunt predefinii. Toate asignrile din cadrul arhitecturii sunt executate n mod concurent. Se consider n continuare modelarea circuitelor logice secveniale. Modelarea circuitelor combinaionale prin metode declarative poate fi extins i la circuitele secveniale. Aceste circuite pot fi descrise printr-un set de asignri ale unor expresii la variabile. Argumentele expresiilor sunt variabile cu ntrzieri sincrone. Exemplul 3.2.4. n limbajul Silage, ntrzierile variabilelor sunt notate prin caracterul @, urmat de o specificare a temporizrii care poate fi general. n particular, limbajul se poate utiliza pentru reprezentarea circuitelor sincrone, prin indicarea ntrzierilor sincrone ca specificaii de temporizare. Un filtru simplu, prezentat n Figura 21, poate fi descris prin expresiile urmtoare:
Figura 21. Filtru recursiv.

Metode de descriere a sistemelor numerice


FUNCTION filtru (a1, a2, b1, b2, x: num) y: num = /* valoarea returnata */ BEGIN y = interm + a2 * interm@1 + b2 * interm@2; interm = x + a1 * interm@1 + b1 * interm@2; END

35

Circuitele secveniale pot fi modelate i cu limbaje procedurale. Astfel, automatele cu stri finite pot fi descrise prin modele procedurale la care informaia de stare este pstrat ntr-o variabil. Operaiile automatului pot fi descrise printr-o iteraie (sincronizat cu ceasul), cu ramificaii la fragmentele corespunztoare strii prezente. Exemplul 3.2.5. Se prezint n continuare descrierea n limbajul VHDL a unui automat care recunoate dou sau mai multe valori de 1 consecutive dintr-un ir de date de intrare.
ARCHITECTURE functional OF recun_11 IS TYPE tip_stare IS (stare_zero, stare_unu); SIGNAL stare: tip_stare := stare_zero; BEGIN PROCESS BEGIN WAIT UNTIL (clock'EVENT AND clock = '1'); IF (in = '1') THEN CASE stare IS WHEN stare_zero => stare <= stare_unu; out <= '0'; WHEN stare_unu => out <= '1'; END CASE; ELSE stare <= stare_zero; out <= '0'; END IF; END PROCESS; END functional;

n acest model, semnalul stare este de tip enumerat i pstreaz starea automatului. Declaraia PROCESS indic o zon a arhitecturii unde toate instruciunile sunt secveniale. procesul este executat de fiecare dat cnd semnalul clock are o tranziie de la 0 la 1. Instruciunea WAIT realizeaz sincronizarea modelului cu semnalul clock. Limbajele de descriere funcionale permit un anumit grad de libertate n interpretarea execuiei n timp a operaiilor. Sistemele de sintez i de optimizare utilizeaz aceast posibilitate pentru a obine implementri optime. Pe de alt parte, rezultatele obinute la simularea modelelor funcionale iniiale pot diferi de cele obinute la simularea modelelor structurale pentru care s-a realizat sinteza, deoarece modelele iniiale ignor posibilitile de optimizare. Din acest motiv, este important s se asigure mijloace de reprezentare a comportrii n timp a acelor implementri care sunt compatibile cu modelul funcional original. Au fost dezvoltate tehnici de sintez pentru diferite limbaje i sisteme de proiectare care s asigure o interpretare a comportrii n timp. Aceste tehnici in cont de construciile limbajului care se pot utiliza pentru sintez, ignornd construciile specifice pentru simulare. Considernd automatul din exemplul 3.2.5., o tehnic de sintez poate sincroniza operaiile

Metode de descriere a sistemelor numerice

36

din circuitul implementat cu instruciunea wait a modelului. Deoarece modelul are o singur instruciune wait, toate operaiile se vor executa ntr-un ciclu de ceas. Exemplul 3.2.6. Se consider un fragment al unui model care descrie un set de instruciuni dintr-un calculator.
... ri <= fetch(pc); CASE ri IS WHEN add => a <= ra + rb; WHEN and => a <= ra AND rb; WHEN or => a <= ra OR rb; WHEN xor => a <= ra XOR rb; END CASE; pc <= pc + 1; ...

Funcia fetch returneaz valoarea registrului de instruciuni ri. Exist trei operaii care se execut serial: ncrcarea registrului de instruciuni ri, setarea registrului acumulator a cu rezultatul operaiilor executate ntre registrele ra i rb, i incrementarea contorului de program pc. O analiz a dependenei datelor arat c incrementarea contorului de program se poate executa n paralel cu una din celelalte operaii. Presupunem c pentru sintez se adaug o instruciune wait naintea primei operaii. Se poate presupune atunci c cele trei operaii sunt sincronizate cu ceasul i a doua operaie urmeaz dup prima, din cauza dependenei datelor. Deosebirea fa de exemplul automatului este posibilitatea ca cele trei operaii s nu fie terminate ntr-un singur ciclu de ceas. Durata operaiilor poate fi necunoscut pn la executarea sintezei. Presupunnd c n varianta implementat fiecare operaie necesit un ciclu de ceas, la suprapunerea operaiilor acestea se vor executa n dou cicluri de ceas. Pe de alt parte, un simulator va executa cele trei operaii ntr-un singur ciclu de ceas. Pentru a se evita diferenele ntre execuia n timp a simulrii funcionale i a implementrii, se pot aduga instruciuni wait suplimentare, de exemplu ca n fragmentul urmtor.
... WAIT UNTIL (clock'EVENT AND clock = '1'); ri <= fetch(pc); WAIT UNTIL (clock'EVENT AND clock = '1'); CASE ri IS WHEN add => a <= ra + rb; WHEN and => a <= ra AND rb; WHEN or => a <= ra OR rb; WHEN xor => a <= ra XOR rb; END CASE; pc <= pc + 1; ...

Metode de descriere a sistemelor numerice

37

3.3. Caracteristici ale limbajelor de descriere hardware


3.3.1. Caracteristici specifice limbajelor de programare
Limbajele de descriere hardware s-au dezvoltat n cele mai multe cazuri din limbajele de programare; n consecin, cele mai multe limbaje de descriere prezint caracteristici specifice limbajelor imperative, ca mecanisme de abstractizare a datelor, operatori funcionali pentru transformarea datelor, instruciuni de asignare pentru modificarea valorilor variabilelor, construcii de control, i construcii pentru specificarea ordinii de execuie a operaiilor. 3.3.1.1. Tipuri de date Specificarea tipului datelor dintr-un sistem reprezint definirea formatului (de ex., a numrului de bii), a tipului (de ex., boolean, ntreg, n virgul mobil), i a reprezentrii (de ex., cu semn sau fr semn, n complement fa de 2) tuturor variabilelor dintr-o descriere funcional. Prin aceast specificare se asigur descrieri concise i inteligibile, i se permite detectarea erorilor semantice de ctre compilator, de exemplu la asignarea unei valori de 16 bii la un registru de 8 bii. Verificarea strict a tipului datelor permite efectuarea unor teste de consisten n timpul procesului de proiectare, dar ncarc n acelai timp compilatorul limbajului cu sarcina efecturii a mai multor teste. n cazul minimal, variabilele vor fi caracterizate prin dimensiunea lor n bii, sistemul de proiectare presupunnd un tip implicit (de ex., un vector de bii) i o reprezentare implicit a datelor (de ex., n complement fa de 2). 3.3.1.2. Operatori i instruciuni de asignare Transformarea datelor n cadrul descrierii unui proiect este efectuat de diferite tipuri de operatori ai limbajului. Acetia pot fi clasificai n operatori aritmetici, booleeni, logici, de acces la tablouri i de asignare. Cele mai multe limbaje de descriere hardware au un numr suficient de operatori predefinii. Anumite limbaje permit redefinirea semanticii unor operatori existeni. Construcia de baz a limbajelor pentru specificarea transformrii datelor este instruciunea de asignare. 3.3.1.3. Construcii de control Pentru specificarea funcionrii n timp a unei descrieri este necesar descrierea secvenierii instruciunilor de asignare. Se utilizeaz construcii de control ca if-then-else, case i loop pentru a specifica execuia condiional i repetitiv. n exemplul urmtor (Figura 22), descrierea ciclului de citire, decodificare i execuie a instruciunilor unui procesor simplu n limbajul ISPS utilizeaz construciile de control repeat pentru buclare, decode i if pentru execuia condiional. Prima instruciune din bucla repeat ncarc instruciunea curent n registrul RI. Instruciunea decode selecteaz aciunea care trebuia executat n funcie de valoarea cmpului f (primii trei bii din RI).

Metode de descriere a sistemelor numerice

38

Mark1 := begin M[0:8191]<0:31>, RI<0:15>, f = RI<0:2>, s<0:12> = RI<3:15>, A<0:31>, CicluInstr(main) := begin repeat RI = M[PC]<0:15> next decode f => begin #0 := PC = M[s] #1 := PC = PC + M[s] #2 := A = A - M[s] #3 := M[s] = A #4,#5 := A = A + M[s] #6 := if A<0 => PC = PC + 1 #7 := stop() end next PC = PC + 1 end end end Figura 22. Descrierea procesorului Mark1 n limbajul ISPS.

3.3.1.4. Ordinea de execuie n cadrul unui sistem, ordinea de execuie a diferitelor operaii poate fi specificat implicit, fiind cea implicit a limbajului de descriere utilizat, sau explicit, prin construcii specifice ale limbajului. n exemplul anterior, toate instruciunile scrise n limbajul ISPS sunt executate n paralel, cu excepia cazului n care se utilizeaz construcii de control sau cuvntul cheie next, care foreaz execuia secvenial a instruciunilor consecutive.

Figura 23. Ordinea de execuie n limbajul VHDL: (a) secvenial; (b) paralel.

Ordinea secvenial n cadrul limbajelor de descriere poate fi specificat implicit, prin dependena datelor, sau explicit, prin construcii de control. De exemplu, n Figura 23(a) se prezint un proces descris n limbajul VHDL, n care instruciunile de asignare sunt executate secvenial. Prima instruciune asigneaz semnalului A valoarea semnalului B. Urmtoarea in-

Metode de descriere a sistemelor numerice

39

struciune asigneaz semnalului B noua valoare a semnalului A. La sfritul procesului P1, ambele semnale A i B vor avea vechea valoare a semnalului B. Paralelismul este o caracteristic universal a unitilor hardware, necesitnd semantici implicite ale limbajelor i construcii explicite pentru exprimarea acestuia. De exemplu, n limbajul VHDL, toate instruciunile de asignare din cadrul unui bloc sunt executate n paralel. n Figura 23(b), partea dreapt a fiecrei instruciuni de asignare este evaluat n paralel (utiliznd vechile valori ale semnalelor), nainte de a asigna rezultatul semnalului din partea stng. Deoarece blocul are o expresie de validare, evaluarea semnalelor precedate de cuvntul cheie GUARDED se efectueaz atunci cnd expresia de validare este adevrat. Ca urmare, dup frontul cresctor al semnalului de ceas valorile semnalelor A i B vor fi interschimbate. De notat c i n cazul construciilor secveniale ale limbajului, ca cea din Figura 23(a), paralelismul este implicit ntre operaiile care nu au dependene de control sau de date.

3.3.2. Caracteristici specifice unitilor hardware


Construciile limbajelor de programare standard permit abstractizri funcionale, dar nu permit exprimarea proprietilor specifice unitilor hardware n descrierea proiectelor. Pentru aceasta sunt necesare construcii suplimentare pentru definirea interfeelor, specificarea parial a structurii proiectelor, specificarea operatorilor la nivelul transferurilor ntre registre i la nivelul logic, a asincronismului, a ierarhiei, a comunicaiei ntre procese, a restriciilor de proiectare i a alocrii de ctre utilizator. 3.3.2.1. Definirea interfeelor Deoarece proiectul descris trebuie s obin intrri din exterior i s furnizeze rezultatele prelucrrilor ca ieiri, trebuie definite porturile sale de intrare i de ieire. Definirea porturilor se refer la dimensiune (de ex., numrul de bii), mod (de ex., intrare, ieire sau intrare/ieire) i caracteristici hardware (de ex., dac portul este bufferat sau cu trei stri). n Figura 24 se prezint o specificaie n limbajul DSL a unui circuit de exponeniere, n care declaraiile din seciunea INTERFACE specific porturile i atributele lor. 3.3.2.2. Declaraii structurale Declaraiile structurale permit specificarea registrelor, acumulatoarelor, numrtoarelor i a altor structuri hardware care se vor utiliza ca variabile n cadrul limbajului de descriere. Aceste declaraii sunt utile atunci cnd este necesar o anumit structur parial, proiectat n prealabil, i trebuie utilizate n mod explicit pentru specificarea funcionrii proiectului. De exemplu, procesoarele au n mod normal registrele arhitecturale (ca numrtoarele de program sau registrele generale) fixate naintea descrierii funcionrii procesorului; aceste registre arhitecturale sunt declarate ca structuri fizice i pot fi utilizate ca variabile n cadrul descrierii funcionale. 3.3.2.3. Operatori la nivelul RT i logic n plus fa de operatorii aritmetici i booleeni ai unui limbaj de programare, este necesar existena unor primitive corespunztoare unitilor hardware la nivelul transferurilor ntre registre (RT) i la nivelul logic. Exemple de operatori pentru nivelul RT sunt cei de in-

Metode de descriere a sistemelor numerice

40

crementare i decrementare pentru variabile. Ca exemple de operatori logici la nivel de bit se amintesc cei pentru deplasare, rotire i operaii logice, i operatorii pentru extragerea i concatenarea irurilor de bii.

Figura 24. Specificaia unui circuit de exponeniere n limbajul DSL.

3.3.2.4. Asincronismul Funcionarea la nivelul RT este exprimat sub forma transferurilor ntre registre pentru fiecare ciclu de ceas. Totui, la nivelul RT circuitele prezint i caracteristici asincrone, sub forma semnalelor de setare, resetare i de ntrerupere. Pentru exprimarea caracteristicilor asincrone se pot utiliza construcii speciale ale limbajelor de descriere. O alt posibilitate este de a se grupa toate operaiile asincrone ntr-o descriere separat, cu semantica indicnd faptul c operaiile asincrone sunt prioritare fa de cele sincrone. n limbajul DSL se utilizeaz a doua alternativ: seciunea indicat prin cuvntul cheie APPLICATIVE descrie o funcionare asincron, iar cea indicat prin IMPERATIVE descrie o funcionare sincron. n exemplul anterior n care se descrie un circuit de exponeniere, semnalul enable din partea aplicativ determin n mod asincron dac trebuie s nceap calculul din partea imperativ calc, n mod sincron. O form mai general a asincronismului apare n cazul proceselor comunicante care se execut sub controlul unor ceasuri diferite. n asemenea cazuri, evenimentele asincrone de la interfaa unui proces pot ntrerupe operaiile sincrone. Aceste tranziii se pot utiliza pentru a

Metode de descriere a sistemelor numerice

41

defini automate cu stri finite asincrone, la care trecerea ntr-o nou stare se realizeaz sub aciunea unui semnal de intrare, i nu a unui semnal de ceas. Exemple de limbaje cu asemenea faciliti sunt Statecharts, WAVES, SpecCharts i BIF.

Figura 25. Ierarhia funcional n limbajul SpecCharts.

n Figura 25 se prezint un sistem de calcul simplu descris n limbajul SpecCharts. Sistemul trece n mod asincron din starea ACTIV n starea RESET la frontul cresctor al semnalului RESET_IN, indiferent de substarea n care se afla n cadrul strii ACTIV (FETCH, DECOD, sau EXEC). 3.3.2.5. Ierarhia Pe msur ce proiectele devin mai complexe, se utilizeaz descrieri ierarhice. ntr-un limbaj de descriere hardware ierarhia poate avea mai multe forme: procedural, structural, funcional i de proiectare. Pentru asigurarea ierarhiei procedurale, construciile limbajelor de programare standard utilizeaz funcii i proceduri. Aceast ierarhie procedural permite descompunerea unui sistem ntr-un mod structurat i permite o reprezentare concis. n anumite limbaje de descriere hardware, o anumit funcie poate fi nglobat ntr-o structur, i poate fi utilizat ulterior

Metode de descriere a sistemelor numerice

42

n cadrul ierarhiei structurale. n Figura 24 se observ modul n care se realizeaz aceasta n limbajul DSL, utiliznd construcia PERFORMED FUNCTION. Ierarhia structural specific interconectarea proceselor comunicante prin semnale globale i porturi ale proceselor. Considernd un sistem care la nivelul RT const dintr-un set de registre i o unitate aritmetic i logic, o list de conexiuni ierarhic pentru acest sistem va descrie interconexiunile componentelor la nivelul superior, fiecare component (de ex., UAL) fiind descompus ntr-o list de conexiuni structural ntre porile logice componente. Descrierile structurale n limbajul VHDL, de exemplu, permit acest tip de ierarhie. Pentru sisteme mai complexe, aceste abstractizri ierarhice funcionale i structurale nu mai sunt suficiente. Acest lucru este adevrat n special pentru sistemele bazate pe stri, la care modificrile unor semnale de intrare pot determina tranziii imediate la diferite secvene care descriu funcionarea. n asemenea cazuri, se utilizeaz ierarhia funcional pentru a exprima n mod concis funciile complexe.

Figura 26. Ierarhia de proiectare n limbajul VHDL.

n Figura 25 se prezint un exemplu de ierarhie funcional pentru un sistem de calcul descris n limbajul SpecCharts. Linia ntrerupt din figur indic faptul c sistemul de calcul SISTEM este compus din dou procese concurente, procesorul UCP i generatorul de ceas GEN_CLK. UCP const din dou stri principale: RESET, care este starea iniial implicit a UCP, i ACTIV, n care procesorul este operaional. Starea ACTIV este compus din trei substri FETCH, DECOD i EXEC, care descriu funcionarea detaliat a procesorului. Ierarhia funcional din acest exemplu permite descompunerea unei stri n substri i procese concurente, i permite de asemenea descrierea asincronismului global printr-o notaie care

Metode de descriere a sistemelor numerice

43

utilizeaz evenimentele. De exemplu, evenimentul rising(RESET_IN) foreaz procesul UCP n starea RESET, indiferent de substarea din cadrul strii ACTIV n care se afl. Ierarhia de proiectare specific modul n care este compus ntregul sistem din componente, procese comunicante etc. n Figura 26 se indic ierarhia de proiectare reprezentat de o configuraie din limbajul VHDL. Fiecare entitate de proiectare este descompus ierarhic n blocuri, care pot fi funcionale sau structurale 3.3.2.6. Comunicaia ntre procese La un nivel de abstractizare mai nalt, procesoarele din cadrul unei arhitecturi sunt reprezentate prin procese. n cadrul limbajelor de descriere hardware sunt necesare mecanisme care permit specificarea comunicaiei ntre procesele care interacioneaz. Pentru sisteme n ntregime sincrone, aceast comunicaie poate fi nglobat n descrierea funcional a proceselor. n asemenea cazuri, utilizatorul poate descrie n mod explicit comunicaia utiliznd construciile standard ale limbajului respectiv, pentru a fora operaiile de citire i scriere n cadrul ciclurilor de ceas corecte.

Figura 27. Sincronizarea ntre procese n limbajul HardwareC: (a) prin transmiterea parametrilor; (b) prin transmiterea mesajelor.

Dac procesele care comunic ntre ele nu sunt sincrone, sunt necesare protocoale specifice pentru a obine sincronizarea ntre acestea. Exist dou metode principale pentru realizarea acestei sincronizri: prin medii partajate i prin transmitere de mesaje. Sincronizarea prin medii partajate este realizat utiliznd conexiuni sau memorii partajate care sunt accesibile simultan de procesele comunicante. n limbajul HardwareC, de exemplu, sincronizarea prin medii partajate este realizat prin transmiterea parametrilor utiliznd porturi interconectate ale proceselor. n Figura 27(a) se arat modul n care data

Metode de descriere a sistemelor numerice

44

scris n portul b al procesului P1 este accesibil de procesul P2 prin portul y. Similar, data scris de procesul P2 n portul x poate fi citit la portul a al procesului P1. Transmiterea mesajelor n cadrul limbajelor de descriere este realizat prin utilizarea primitivelor pentru descrierea sincronizrii ntre proceselor comunicante. n Figura 27(b) se arat modul n care poate fi descris n limbajul HardwareC sincronizarea prin transmiterea mesajelor. Canalele a i b specific mediul de comunicaie ntre procesele P1 i P2. Primitivele de sincronizare send i receive ale limbajului HardwareC sunt utilizate pentru cele dou canale pentru a specifica transferul datelor ntre procese. Primitiva receive(a,buf) din procesul P1 determin ca procesul P1 s atepte pn cnd procesul P2 transmite data prin canalul a cu primitiva send(a,mes). Un protocol de tip cerere-confirmare poate fi exprimat ntr-un limbaj de descriere prin construcii similare cu aceste primitive. 3.3.2.7. Restricii Restriciile din cadrul proiectrii ghideaz sinteza proiectului spre realizri fezabile din punct de vedere al performanelor, costului, testabilitii, fiabilitii i a unor limitri fizice. Restriciile de proiectare pot fi specificate separat fa de descrierile funcionale sau pot fi intercalate cu acestea n cadrul limbajului. Restriciile fizice (de ex., numrul de pini, tehnologia sau tensiunile) sunt specificate de obicei separat fa de descrierile funcionale, fie n cadrul declaraiilor, fie ntr-un fiier separat. De exemplu, n Figura 24 care prezint descrierea circuitului de exponeniere se arat modul n care seciunea de declaraii a limbajului DSL permite specificarea diferitelor tipuri de restricii fizice, ca puterea consumat, tensiunea de alimentare, tehnologia sau spaiul ocupat. Restriciile de temporizare sunt adesea critice pentru obinerea funcionrii corecte, ca i pentru specificarea cerinelor de performan ale proiectelor. Aceste restricii pot fi specificate n cadrul descrierii interfeelor, sau pot fi intercalate cu descrierile funcionale. n ambele cazuri, restriciile de temporizare sunt specificate de obicei ca ntrzieri. n cadrul sistemelor sincrone, ntrzierile sunt specificate n mod normal relativ la ceasul sistemului, ca multipli ai ciclurilor de ceas. n cadrul descrierii aceluiai circuit de exponeniere, se prezint modul n care sunt specificate n limbajul DSL restriciile asupra performanelor: n procedura imperativ calc, bucla do trebuie s se execute n cadrul a trei cicluri de ceas. La descrierea comunicaiei ntre procese, este necesar s se specifice ntrzieri relative la evenimente specifice. Aceste ntrzieri reprezint valori absolute de timp necesare pentru implementarea corect a protocolului de comunicaie. De exemplu, ntr-un protocol simplu al ciclului de citire pentru o plac de memorie, trebuie s se stabileasc mai nti valoarea adresei i s se activeze semnalul de citire al memoriei, iar apoi s se efectueze o cerere ntrziat de acces la magistrala de date, dndu-se timp memoriei pentru a reaciona la cererea de citire nainte de a prelua controlul asupra magistralei de date. n Figura 29 se prezint un exemplu al acestui protocol de citire descris n limbajul BIF. n starea 1, semnalul BusReq este activat cu 175 ns dup evenimentul Falling(MemReq) care a determinat trecerea n aceast stare, deci dup stabilirea adresei Adr i a semnalului MR. ntrzierile cu valori absolute pot fi utilizate i pentru a specifica restricii asupra performanelor, ntrzieri ale cilor de date i valori de timeout. Limbajele de simulare ca VHDL permit specificarea ntrzierilor absolute utiliznd dou tipuri de ntrzieri: ineriale i de transport. O ntrziere inerial reprezint ineria unei componente, i necesit ca semnalul de intrare s dureze o perioad specificat de timp naintea activrii ieirii (de ex., timpii de seta-

Metode de descriere a sistemelor numerice

45

re i de meninere pentru un bistabil). O ntrziere de transport reprezint ntrzierea unei conexiuni; n acest caz, o modificare a intrrii este propagat ntotdeauna la ieire. 3.3.2.8. Alocarea de ctre utilizator Sinteza de nivel nalt reprezint un proces de alocare i de atribuire a entitilor funcionale abstracte structurilor de la nivelul transferurilor ntre registre. Chiar dac acest proces poate fi efectuat complet automat, proiectanii experimentai pot oferi soluii de cretere a calitii structurilor implementate, prin detectarea unor seciuni critice i mbuntirea acestora. Limbajul de descriere utilizat trebuie s permit specificarea unor asemenea informaii pentru unele soluii pariale sub forma alocrilor i a asignrilor de ctre utilizator. Alocrile pot fi specificate ca structuri RT n declaraiile limbajelor. Pot fi specificate patru tipuri de asignri ale utilizatorului, pentru stri, registre, uniti funcionale i conexiuni. Acestea pot fi definite att n cadrul declaraiilor ct i n cadrul descrierilor funcionale. Asignarea strilor atribuie o operaie din descrierea funcional unei stri a structurii implementate; operaia poate fi apoi notat cu starea respectiv. Anumite limbaje de descriere hardware sunt bazate pe stare (de ex., BIF); asignarea strilor este realizat automat prin descrierea unei operaii n starea corespunztoare. Asignarea registrelor, a unitilor funcionale i a conexiunilor atribuie variabile, operaii i instruciuni de asignare registrelor, unitilor funcionale, respectiv conexiunilor. Aceste asignri pot fi descrise prin adnotarea variabilelor, a operaiilor limbajului i a instruciunilor de asignare prin componentele i conexiunile alocate, utiliznd construcii speciale ale limbajelor. De exemplu, limbajele BIF i ISPS utilizeaz paranteze n cadrul descrierilor pentru a indica asignarea componentelor. Limbajele HardwareC i MIMOLA permit de asemenea alocarea i asignarea de ctre utilizator.

3.4. Formate ale limbajelor de descriere hardware


Modul n care un proiect este modelat i descris are un efect direct asupra implementrii sale finale din punct de vedere al costului i al performanelor. O modelare necorespunztoare va determina o implementare de calitate sczut, indiferent de sistemul de proiectare utilizat. De asemenea, erorile conceptuale care nu sunt detectate n primele faze ale ciclului de proiectare pot conduce la eforturi costisitoare pentru a le detecta pe msur ce proiectarea avanseaz. Pentru a asista modelarea i descrierea proiectelor, sunt necesare diferite formate ale limbajelor de descriere care sunt convenabile pentru diferii utilizatori i diferite aplicaii. La nivelele inferioare ale procesului de proiectare, descrierile grafice au fost preponderente pentru un timp ndelungat. Limbajele de descriere funcionale au de obicei o form textual, deoarece aceste limbaje s-au dezvoltat din limbajele de programare. Totui, chiar i pentru descrierile de nivel mai nalt o combinaie a formelor de descriere este mai eficient pentru specificarea proiectelor. De exemplu, interfeele i protocoalele sunt descrise ntr-un mod mai natural prin diagrame de timp; automatele cu un numr relativ redus de stri sunt descrise n mod concis prin diagrame de stare sub form tabelar sau grafic; descrierile pur funcionale sunt exprimate cel mai convenabil ntr-un format textual. n continuare se trec n revist formatele textuale, grafice, tabelare i cele bazate pe diagrame de timp ale limbajelor de descriere hardware.

Metode de descriere a sistemelor numerice

46

3.4.1. Limbaje textuale


Cele mai multe limbaje de descriere au preluat sintaxa i o parte a semanticii de la limbajele de programare de nivel nalt ca Pascal, ADA sau C. Limbajele textuale pot exprima n mod succint descrierile funcionale care conin instruciuni de asignare mpreun cu transformri complexe ale datelor (de ex., operatori aritmetici i logici). Aplicaiile cu o mare cantitate de calcule sunt descrise cel mai eficient prin utilizarea instruciunilor textuale de asignare. Ca exemple de limbaje textuale de descriere hardware se amintesc ISPS, Silage, VHDL, HardwareC i MIMOLA. Limbajele bazate pe logica matematic formal, ca de exemplu HOL, sunt exprimate de asemenea sub form textual.

3.4.2. Limbaje grafice


Descrierile funcionale pot fi exprimate eficient i sub form grafic. n particular, ordinea de execuie a operaiilor, paralelismul i fluxul de control sunt nelese cu uurin dac se utilizeaz un format grafic. O organigram funcional este un asemenea exemplu, n care fluxul de control este exprimat sub form grafic, iar operaiile sunt descrise utiliznd instruciuni textuale de asignare. n cazul n care complexitatea sistemului este relativ redus, limbajele bazate pe organigrame sunt utile pentru descrierea acestuia. Notaia ASM i EXEL sunt dou exemple de asemenea limbaje. Sistemele mai complexe pot fi descrise n mod ierarhic. Limbajele Statecharts i SpecCharts pun la dispoziie un formalism concis pentru asemenea sisteme. n Figura 25 se indic un exemplu de descriere grafic a unui procesor simplu utiliznd limbajul SpecCharts. Descrierile bazate pe reele Petri sunt de asemenea utilizate pentru descrierea grafic a proiectelor hardware; un exemplu este limbajul GDL.

3.4.3. Limbaje tabelare


Descrierile tabelare reprezint o notaie concis pentru specificaiile funcionale ale modelelor bazate pe stri, n special pentru automatele cu stri finite cu cale de date, unde partea bazat pe stri a modelului poate fi exprimat n mod clar sub forma unei tabele de stri, iar operaiile cii de date pot fi exprimate sub form textual, fiind adugate prilor corespunztoare ale tabelului de stri. Un exemplu este limbajul BIF (Behavioral Intermediate Form). n acest limbaj, secvenierea strilor este descris ntr-un format tabelar, dar operaiile din fiecare stare sunt descrise utiliznd expresii textuale. Figura 28 prezint schema bloc a unui sistem compus dintr-o unitate central de prelucrare (UCP), un controler de magistral i o plac de memorie. Placa de memorie este compus dintr-un controler de memorie i o memorie ROM. n cadrul plcii de memorie, comunicaia ntre controlerul de memorie i memoria ROM se realizeaz utiliznd un semnal de adres Adr, un semnal MR care valideaz memoria ROM, i o magistral intern de date Data. La nivelul sistem, se utilizeaz mai multe semnale i magistrale pentru a realiza un protocol de tip handshake: ABus reprezint liniile de adres ale magistralei externe, DBus este magistrala de date, DataRdy indic prezena datelor valide pe magistrala de date a memoriei ROM, iar BusReq este un semnal de protocol pentru magistrala de date. Toate semnalele de protocol sunt active la nivel cobort.

Metode de descriere a sistemelor numerice

47

Figura 28. Schema-bloc a unui sistem format din UCP i o plac de memorie.

Figura 29 prezint un protocol simplu pentru un ciclu de citire al memoriei utiliznd o descriere tabelar bazat pe stri n limbajul BIF. Ciclul de citire este iniiat n starea 1, cnd semnalul MemReq ajunge la valoarea 0 i identificatorul plcii de memorie (Id_Placa) coincide cu biii de adresare (16..18) ai magistralei de adrese ABus. n acest moment, memoria este validat, registrul intern de adres este ncrcat cu valoarea de pe magistrala de adrese, i placa de memorie preia controlul asupra magistralei de date DBus prin setarea semnalului BusReq la zero. Evenimentul Falling(BusAck) determin o tranziie n starea 2, n care placa de memorie transmite data adresat Data pe magistrala DBus. Protocolul este completat n starea 3, n care placa de memorie este dezactivat.
Stare prezent 0 ABus (18..16) == Id_Placa Cond. Val Aciuni DBus = X; DataRdy = 1; BusReq = 1; MR = 0; Adr = ABus; BusReq (delay 175 ns) = 0; BusReq = 1; DBus = Data; DataRdy = 0; MR = 1; Adr = X; Stare urmt. 1 Eveniment

Falling (MemReq)

T F T T

2 1 3 0

Falling (BusAck) Falling (MemReq) Rising (MemReq) Rising (BusAck)

2 3

Figura 29. Ciclul de citire pentru placa de memorie, descris n limbajul BIF.

Metode de descriere a sistemelor numerice

48

3.4.4. Limbaje bazate pe diagrame de timp


Protocolul pentru citirea memoriei descris n seciunea precedent poate fi exprimat i sub forma diagramelor de timp. Aceste diagrame sunt utilizate n mod frecvent pentru descrierea interfeelor, a protocoalelor i a restriciilor de timp asociate. Diagramele de timp pot reprezenta n mod grafic modificrile semnalelor (evenimente ca rising sau falling), pot indica secvenierea evenimentelor, i pot pune n eviden relaiile temporale ntre evenimente. Au fost dezvoltate mai multe limbaje bazate pe editoare ale diagramelor de timp, de exemplu Waves i XWAVE.

3.5. Exemple de limbaje de descriere


3.5.1. VHDL
Limbajul VHDL (VHSIC Hardware Description Language) se bazeaz pe limbajul de programare ADA. Dezvoltarea limbajului VHDL a fost iniiat de ctre Departamentul Aprrii al S.U.A., cu intenia de a crea un limbaj standard pentru proiectul VHSIC (Very High Speed Integrated Circuit). Scopul acestui proiect a fost de a produce urmtoarea generaie de circuite integrate. n procesul dezvoltrii circuitelor integrate complexe proiectanii au constatat c sistemele de proiectare pe care le aveau la dispoziie nu erau corespunztoare, fiind bazate pe proiectarea la nivelul porilor logice. A aprut necesitatea unei noi metode de descriere, fiind propus un nou limbaj de descriere, VHDL. Scopul noului limbaj propus era n primul rnd de a descrie circuitele complexe care erau proiectate. n al doilea rnd, se dorea un limbaj standard care s permit distribuirea proiectelor ntre toi participanii la proiectul VHSIC ntr-un format standard. n anul 1986 limbajul a fost propus pentru standardizare n cadrul IEEE, iar dup o serie de revizuiri i modificri a fost adoptat ca standardul IEEE 1076-1987. Entitate i arhitectur Principala abstractizare n limbajul VHDL este entitatea de proiectare, care se utilizeaz pentru identificarea i reprezentarea unei singure pri a unui proiect, care execut o funcie specific i are intrri i ieiri bine definite. Un model VHDL const din cel puin o entitate de proiectare, care este separat ntr-o declaraie de entitate i cel puin o arhitectur. Declaraia de entitate conine descrierea interfeei modelului cu exteriorul, descrierea atributelor, i alte descrieri comune tuturor arhitecturilor entitii. O entitate poate avea mai multe arhitecturi. O arhitectur reprezint o implementare posibil a modelului. Pot exista diferite implementri care rezult din diferite variante de proiectare sau din diferite nivele de abstractizare n cadrul procesului de proiectare. Limbajul VHDL este un limbaj de descriere multi-nivel, i permite diferite tipuri de descrieri ale unui model hardware: funcionale, structurale i de tipul fluxului de date, fiind posibil utilizarea unei combinaii a acestor descrieri n cadrul unui model. Descrierea funcional reprezint o descriere algoritmic a funcionrii sistemului hardware. O descriere structural conine o list a unor blocuri interconectate, fiecare bloc reprezentnd un subsistem. Al treilea tip de descriere se utilizeaz pentru reprezentarea fluxului datelor din

Metode de descriere a sistemelor numerice

49

cadrul sistemului. Un exemplu tipic este o descriere a transferurilor ntre registre, unde datele sunt transferate ntre registre i obiecte complexe similare. Pentru ilustrarea diferitelor tipuri de descrieri, se prezint ca exemplu un numrtor modulo 10. Declaraia de entitate este identic n toate cazurile, fiind urmat de definirea arhitecturii specifice tipului de descriere respectiv. Se prezint n Figura 30 descrierea funcional.
ENTITY Numarator_E IS PORT (clk: IN BIT; cont: OUT INTEGER); END Numarator_E; ARCHITECTURE Numarator_func OF Numarator_E IS BEGIN PROCESS VARIABLE numvar: INTEGER := 0; BEGIN cont <= numvar; WAIT UNTIL (clk = '1') AND NOT(clk'STABLE); IF (numvar = 9) THEN numvar := 0; ELSE numvar : = numvar + 1; END IF; END PROCESS; END Numarator_func; Figura 30. Descrierea funcional a unui numrtor modulo 10 n limbajul VHDL.

Definiia entitii specific porturile de intare i de ieire. Numrtorul este descris ca avnd dou porturi externe: clk, de tipul BIT, i cont, de tipul INTEGER. BIT este un tip enumerat predefinit ('0', '1'). Definiia arhitecturii const, n general, dintr-o parte declarativ i o parte care conine instruciuni. Partea declarativ este vid n acest exemplu. Corpul arhitecturii conine o instruciune PROCESS, care este construcia limbajului prevzut pentru descrierea funcionrii unei componente hardware sau chiar a unui sistem. Aceast construcie poate conine i o parte declarativ. Descrierea structural a numrtorului corespunde unei liste de conexiuni ntre componentele acestuia. n partea declarativ a arhitecturii, se definesc componentele utilizate (Reg_E, Sum_E i Cmp_E), i porturile formale ale acestora. Componentele sunt instaniate apoi n corpul arhitecturii (RegistruNum, Sumator i Comparator). Interconexiunile dintre componente sunt specificate prin asocierea porturilor acestora, utiliznd clauza PORT MAP. De exemplu, semnalul num_out este asociat cu porturile formale o i a ale componentelor RegistruNum i respectiv Sumator, specificnd astfel c ieirea componentei RegistruNum este conectat la una din intrrile componentei Sumator (Figura 31).

Metode de descriere a sistemelor numerice


ENTITY Numarator_E IS PORT (clk: IN BIT; cont: OUT INTEGER); END Numarator_E; ARCHITECTURE Numarator_struct OF Numarator_E IS COMPONENT Reg_E PORT (d: IN INTEGER; clk: BIT; o: OUT INTEGER; clear: IN BIT); END COMPONENT; COMPONENT Sum_E PORT (a, b: IN INTEGER; o: OUT INTEGER); END COMPONENT; COMPONENT Cmp_E PORT (i0, i1: IN INTEGER; o: OUT INTEGER); END COMPONENT; SIGNAL SIGNAL SIGNAL SIGNAL unu: INTEGER := 1; noua: INTEGER := 9; num_in, num_out, sum_out: INTEGER; clear: BIT;

50

BEGIN RegistruNum: Reg_E PORT MAP (num_in, clk, num_out, clear); Sumator: Sum_E PORT MAP (num_out, unu, sum_out); Comparator: Cmp_E PORT MAP (noua, num_in, clear); cont <= num_out; END Numarator_struct; Figura 31. Descrierea structural a unui numrtor modulo 10 n limbajul VHDL.

Arhitectura de tipul fluxului de date conine o declaraie local a semnalului nums i o construcie BLOCK (Figura 32).Execuia tuturor instruciunilor din cadrul acestei construcii este iniiat n paralel. Instruciunile de asignare a valorilor la semnale se bazeaz pe ecuaiile booleene corespunztoare. O asemenea instruciune se execut n dou etape. Expresia din partea dreapt a ecuaiei este evaluat dup fiecare modificare a valorii unei variabile sau semnal, i valoarea rezultat va fi asignat semnalului dup ntrzierea specificat. Orice modificare a valorii expresiei n acest interval de timp nu are (n general) nici un efect asupra unei asignri anterioare. Excepia apare dac ntrzierea ultimei asignri este mai mic sau egal cu cea a precedentei asignri i asignarea valorii precedente nu a fost nc executat. Cele trei dimensiuni ale timpului n limbajul VHDL sunt reprezentate sub forma a trei axe din Figura 33. Modelul de simulare este cel al unui simulator bazat pe evenimente, astfel c axa timpului real reflect avansul timpului sub forma evenimentelor discrete.

Metode de descriere a sistemelor numerice


ENTITY Numarator_E IS PORT (clk: IN BIT; cont: OUT INTEGER); END Numarator_E; ARCHITECTURE Numarator_data OF Numarator_E IS SIGNAL nums: INTEGER := 0; BEGIN BLOCK ((clk = '1') AND NOT(clk'STABLE)) BEGIN nums <= GUARDED 0 WHEN (nums = 9) ELSE nums + 1; END BLOCK; cont <= nums; END Numarator_data; Figura 32. Descrierea de tipul fluxului de date a unui numrtor modulo 10 n limbajul VHDL.

51

ntrzierile delta de pe axa a doua a timpului asigur tratarea cazurilor n care instruciunile de asignare au ntrzieri zero. Fiecare asignare a unei valori la un semnal este mprit ntr-o activitate de iniiere i o activitate de execuie. Execuia are loc cel puin cu o ntrziere delta dup iniiere. Ambiguitile determinate de asignrile multiple la un semnal trebuie soluionate prin definirea unei funcii de decizie de ctre utilizator. Se prezint n continuare un exemplu n care apar instruciuni de asignare cu ntrzieri zero.
BEGIN semnal_a <= semnal_b; semnal_b <= semnal_a; END ----bloc n care toate instruciunile sunt iniiate n mod concurent asignare cu ntrziere zero asignare cu ntrziere zero

Figura 33. Cele trei dimensiuni ale timpului n limbajul VHDL.

Dac execuia blocului este iniiat la momentul t0, ambele instruciuni de asignare sunt executate. Semantica limbajului VHDL cere ca evaluarea ambelor expresii din partea dreapt a instruciunilor i asignarea valorilor s aib loc n cadrul ciclului de simulare t0+ . Ca rezultat, valorile celor dou semnale vor fi interschimbate. Acest mecanism asigur ca

Metode de descriere a sistemelor numerice

52

execuia unui program VHDL s fie independent de implementrile particulare ale simulatoarelor. n general, ntrzierile delta sunt utilizate pentru a ordona anumite evenimente n timpul simulrii, n particular a celor cu ntrzieri zero. Dac aceste evenimente nu sunt ordonate n mod corespunztor, rezultatele pot fi diferite ntre diferite execuii. Limbajul VHDL face distincia ntre ntrzierile ineriale i cele de transport. Primul tip de ntrziere este implicit i ine cont de ineria circuitelor, astfel c modificarea unui semnal de ieire necesit ca semnalele de intrare corespunztoare s fie meninute un anumit timp. Al doilea tip, indicat prin cuvntul cheie transport, este utilizat pentru a descrie modificarea semnalelor fr a ine cont de inerie.

Figura 34. Modelul timpului n limbajul VHDL.

A treia ax a timpului (Figura 34) reflect execuia instruciunilor n cadrul proceselor. De exemplu, un proces descrie un algoritm fr a specifica ntrzieri; asignarea unor valori variabilelor, de exemplu, nu consum timp. ntr-un model VHDL, nu exist variabile globale. n caz contrar, ar trebui specificat modul n care se execut asignrile multiple la o variabil n acelai timp, pentru a evita execuia dependent de simulator a unui program VHDL. Configuraii Configuraiile se utilizeaz pentru a descrie entitile de proiectare care formeaz un model hardware complet. O configuraie specific arhitectura utilizat pentru modelarea unei entiti la fiecare nivel de proiectare i asociaz instanieri de componente entitilor. n Figura 35 se prezint o declaraie a unei configuraii pentru entitatea Numarator_E descris anterior.

Metode de descriere a sistemelor numerice


LIBRARY work; CONFIGURATION Config_Numarator OF Numarator_E IS USE work.ALL; FOR Numarator_struct FOR RegistruNum: Reg_E USE ENTITY reg_2; END FOR; FOR Sumator: Sum_E USE ENTITY sum_2; END FOR; FOR Comparator: Cmp_E USE ENTITY cmp_12; END FOR; END FOR; END Config_Numarator; Figura 35. Exemplu de configuraie n limbajul VHDL.

53

Configuraia declarat specific faptul c pentru entitatea Numarator_E se utilizeaz arhitectura Numarator_struct, iar pentru instanierile componentelor numrtorului se utilizeaz entitile reg_2, sum_2, respectiv cmp_12 din biblioteca work. Conexiunile porturilor pentru instanierile componentelor nu sunt specificate. Avantajul configuraiilor este c nu este necesar recompilarea ntregului proiect dac se dorete utilizarea unei alte arhitecturi pentru o entitate sau o alt entitate pentru o component, fiind suficient s se recompileze noua configuraie. Subprograme i pachete Subprogramele constau din proceduri i funcii, fiind similare cu procedurile i funciile din limbajele ADA sau Pascal. O procedur poate returna mai multe argumente, i poate avea parametri de intrare, de ieire sau de intrare/ieire. O funcie returneaz o singur valoare, toi parametrii acesteia fiind parametri de intrare. Exist proceduri i funcii concurente, care se afl n afara unei declaraii de proces sau a unui alt subprogram, sau proceduri i funcii secveniale, care exist ntotdeauna n cadrul unei declaraii de proces sau a unui alt subprogram. Pachetele sunt utilizate n acelai mod ca n limbajul ADA. Scopul principal al unui pachet este de a grupa elemente care pot fi partajate ntre mai multe uniti de proiectare. Declararea unei date n cadrul unui pachet permite ca data s fie utilizat de alte entiti. Un pachet const din dou pri: o seciune de declaraii i corpul pachetului. Seciunea de declaraii definete interfaa pachetului, n acelai mod n care entitatea definete interfaa modelului. Aceast seciune poate conine declaraii pentru subprograme, tipuri, constante, semnale globale, componente, atribute, clauza use. Corpul pachetului definete subprogramele care sunt declarate n seciunea de declaraii i specific valorile constantelor a cror nume i tip a fost declarat n aceeai seciune. De asemenea, corpul pachetului mai poate conine i declaraii care vor fi locale, ca declaraii de subprograme, tipuri, constante, clauza use.

Metode de descriere a sistemelor numerice


PACKAGE valori_globale IS CONSTANT t_cresc: TIME := 10 ns; CONSTANT t_descresc: TIME := 15 ns; TYPE bit_7 IS ('0', '1', 'X', 'L', 'H', 'Y', 'Z'); TYPE bit_7vect IS ARRAY (NATURAL RANGE <>) OF bit_7; FUNCTION bit_val (val: bit_7) RETURN BIT; FUNCTION bit_7val (val: BIT) RETURN bit_7; FUNCTION decizie (surse: bit_7vect) RETURN bit_7; END valori_globale; ... PACKAGE BODY valori_globale IS FUNCTION bit_val (val: bit_7) RETURN BIT IS CONSTANT biti: bit_7vect := "0100000"; BEGIN RETURN biti (bit_7'POS(val)); END; ... END valori_globale; Figura 36. Exemplu de declaraie PACKAGE n limbajul VHDL.

54

Pachetul valori_globale din Figura 36 conine definiii de constante care pot fi utilizate pentru specificarea unor ntrzieri, i definirea unei logici cu 7 valori. Tipuri Limbajul VHDL dispune de urmtoarele categorii de tipuri: ntregi, reale, enumerate, fizice (de ex., curent, tensiune, timp), tablouri, nregistrri, pointeri (tipuri de acces), fiiere. Unele din aceste tipuri sunt predefinite, existnd i posibilitatea definirii tipurilor de ctre utilizatori. Prin declaraii de subtipuri se pot defini subseturi ale unor tipuri. n mod obinuit, declararea subtipurilor se utilizeaz pentru a aduga restricii la tipurile existente. n Figura 37 se prezint exemple cu definiii de tipuri. n limbajul VHDL, ierarhia structural este asigurat prin utilizarea blocurilor i a declaraiilor de instaniere a componentelor. Limbajul asigur dou nivele de ierarhie funcional. La nivelul superior, specificaia poate fi descompus ntr-un set de procese care se execut concurent, asigurnd astfel i concurena la nivel de taskuri. Al doilea nivel const din descompunerea secvenial a proceselor n proceduri. Prin instruciunile de asignare pentru semnale, se realizeaz concurena la nivelul instruciunilor. Comunicaia ntre procese poate fi realizat printr-un model cu memorie partajat, care utilizeaz semnale a cror valoare este asignat de un proces i care pot fi utilizate de alte procese. Sincronizarea poate fi asigurat prin dou metode. Prima const din asocierea unei liste de semnale unui proces. Astfel se asigur ca la apariia unui eveniment asupra oricrui semnal din list, procesul va ncepe s se execute. De exemplu, considerm un proces P, definit astfel:

Metode de descriere a sistemelor numerice


TYPE logic IS ('X', '0', '1', 'Z'); TYPE unsigned IS ARRAY (NATURAL RANGE <>) OF logic; TYPE time IS RANGE implementation_defined UNITS fs; ps = 1000 fs; ns = 1000 ps; us = 1000 ns; ms = 1000 us; sec = 1000 ms; min = 60 sec; hr = 60 min; END UNITS; TYPE sub_real IS -100.0 TO +100.0; TYPE coord IS RECORD x: INTEGER; y: INTEGER; END RECORD; SUBTYPE val_num IS INTEGER RANGE 0 TO 15; Figura 37. Declaraii de tipuri n limbajul VHDL. P: PROCESS (start, x) BEGIN ... END PROCESS;

55

Conform acestei definiii, procesul P va fi suspendat pn cnd se modific valoarea unuia din semnalele start sau x, ceea ce permite sincronizarea execuiei procesului P cu alte procese care conin semnalele start sau x. A doua metod de sincronizare utilizeaz o instruciune wait, ceea ce va suspenda procesul pn cnd se detecteaz apariia unui eveniment asupra unuia din semnalele specificate, sau apariia unei condiii specificate. De exemplu, urmtoarea instruciune wait va determina execuia procesului numai dac apare un eveniment asupra semnalelor x sau y, sau dac start = 1:
WAIT ON x, y UNTIL (start = '1');

Specificarea temporizrii n limbajul VHDL este limitat la specificarea temporizrilor funcionale, ca de exemplu la utilizarea clauzei after:
q <= i0 AFTER 20 ns;

n mod similar, se poate utiliza o clauz de tip timeout, pentru a specifica timpul maxim de ateptare printr-o instruciune wait, de exemplu:
WAIT ON start FOR 100 ns;

Specificarea celui de-al doilea tip de caracteristici de temporizare, cel al restriciilor de temporizare, nu este posibil n mod direct n limbajul VHDL, dei asemenea restricii pot fi specificate indirect prin utilizarea atributelor. Limbajul VHDL nu permite exprimarea unor caracteristici ale sistemelor numerice. De exemplu, nu exist construcii pentru terminarea unui proces ca rspuns la apariia unei excepii. Excepiile pot fi reprezentate doar parial, prin utilizarea expresiilor de validare

Metode de descriere a sistemelor numerice

56

asociate cu blocurile sau cu instruciunile de asignare. Astfel, o expresie de validare care este asociat cu un bloc va controla instruciunile de asignare la semnale din cadrul blocului. De asemenea, limbajul nu permite exprimarea tranziiilor ntre stri. Exprimarea unei ierarhii funcionale complete, n care concurena poate fi specificat la orice nivel al ierarhiei, nu este posibil n cadrul limbajului.

3.5.2. HardwareC
HardwareC este un limbaj de descriere hardware orientat pe sintez. Dei se bazeaz pe limbajul de programare C, are construcii i semantici suplimentare pentru descrierea unitilor hardware. Semantica declarativ a limbajului permite definirea modulelor structurale i a interconexiunilor dintre acestea, iar semantica procedural a acesteia permite specificarea funcionrii n timp. n limbajul HardwareC, la nivelul superior specificaia unui sistem const dintr-un bloc, care este apoi descompus ntr-o interconexiune de blocuri structurale i procese concurente care comunic ntre ele. Blocurile corespund interconexiunilor structurale a unor entiti de proiectare, aceste blocuri i interconexiunile dintre ele specificnd o ierarhie structural. Concurena la nivelul taskurilor se specific prin intermediul proceselor, fiecare dintre acestea specificnd un algoritm ca un set de operaii secveniale, care pot fi descrise prin utilizarea unui subset al construciilor de programare ale limbajului C. Poate fi specificat i concurena la nivelul instruciunilor, n mod explicit, utiliznd instruciunea paralel compus. De exemplu:
< x = b + c; y = p - q; >

Aceast construcie specific execuia simultan a calculelor asociate cu asignrile la variabilele x i y. Comunicaia ntre procese poate fi specificat utiliznd fie modelul cu memorie partajat, fie modelul cu transmitere de mesaje. Transmiterea prin porturi, de exemplu, va presupune existena unui mediu partajat, ca o memorie sau liniile de interconexiune. Porturile se definesc n cadrul proceselor comunicante, i se utilizeaz instruciuni explicite pentru citirea i scrierea acestor porturi. Protocolul care descrie comunicaia se poate specifica n cadrul descrierii procesului, ca de exemplu, n Figura 38(a), unde procesul main transmite valoarea n procesului factorial prin portul p_n, i recepioneaz rezultatul prin portul p_r. Transmiterea mesajelor utilizeaz construcii explicite pentru transferul datelor i sincronizare, prin declararea unor canale de comunicaie ntre procesele sau blocurile comunicante. Prin utilizarea acestor construcii, proiectantul trebuie s specifice numai datele care trebuie transferate prin canale, sinteza protocolului de comunicaie i a circuitului corespunztor fiind realizat automat de ctre sistemele de sintez. n Figura 38(b), de exemplu, procesul main utilizeaz canalul c1 pentru transmiterea valorii n, i recepioneaz rezultatul prin canalul c2. Pentru sincronizarea a dou procese, se poate utiliza comunicaia prin transmiterea mesajelor. Limbajul HardwareC dispune de o construcie msgwait, care detecteaz mesajele n curs de transmisie care sunt n ateptare. Prin utilizarea acestei construcii, un proces poate

Metode de descriere a sistemelor numerice

57

fi pus n ateptare pn la recepionarea unui semnal, sub forma unui mesaj de un singur bit, de la un alt proces.

Figura 38. Comunicaia ntre procese n limbajul HardwareC: (a) transmiterea prin porturi; (b) transmiterea prin canale.

Limbajul HardwareC permite specificarea descrierilor parametrizate, numite abloane, pentru diferite modele (blocuri, procese, proceduri i funcii). Aceste abloane pot fi instaniate prin specificarea unor valori ntregi ca parametri formali, i se pot utiliza pentru descrierea unor componente de bibliotec, ca sumatoare sau circuite de nmulire, parametrii formali reprezentnd numrul de bii, numrul de intrri, etc. Proiectantul poate particulariza un ablon ca un mijloc de a specifica informaii de legtur care pot fi utilizate de sistemele de sintez. De exemplu, o anumit operaie de adunare poate fi asociat cu o instaniere specific a unui sumator, permind specificarea de ctre proiectant a partajrii resurselor la nivelul descrierii proiectului. n limbajul HardwareC se pot specifica restricii de temporizare ntre dou instruciuni, prin asocierea marcajelor sau etichetelor cu fiecare instruciune, utiliznd apoi marcajele pentru specificarea restriciilor. n plus, pot fi specificate restricii ale resurselor, indicnd numrul de instanieri ale unui model dat care se vor putea utiliza pentru sintez. Limbajul nu permite ns specificarea descrierilor de tipul fluxului de date, a tranziiilor ntre stri i a excepiilor.

3.5.3. CSP
Limbajul CSP (Communicating Sequential Processes) a fost propus de C.A.R. Hoare pentru a elimina limitrile limbajelor de programare tradiionale n cazul programelor executate pe calculatoarele multiprocesor. CSP permite specificarea unui program ca un set

Metode de descriere a sistemelor numerice

58

de procese concurente, utiliznd construcii care simplific specificarea comunicaiei i a sincronizrii ntre aceste procese. Pe lng utilizarea sa ca limbaj de programare, CSP este utilizat i pentru descrierea sistemelor hardware. Un program CSP const dintr-o list de comenzi. Prin utilizarea comenzii parallel, un proces poate genera subprocese la orice nivel al ierarhiei, asigurnd astfel ierarhia funcional. Toate procesele din cadrul comenzii parallel vor fi executate n mod concurent, comanda fiind terminat numai dac toate procesele sale au fost terminate. n plus, fiecare proces este la rndul su o list de comenzi, i fiecare comand poate conine propriile comenzi paralele. n limbajul CSP, fiecare proces poate fi descris prin utilizarea construciilor de programare. Subrutinele sunt implementate ca i corutine, ceea ce nseamn c o subrutin este implementat ca un proces care se execut n mod concurent cu procesul apelant. Se pot simula subrutine recursive prin utilizarea unui tablou de procese, fiecare element reprezentnd un nivel de recursivitate. Construciile de control sunt implementate prin utilizarea comenzii guarded, care conine o list de expresii de validare sau condiii, i o list de comenzi care vor fi executate numai dac toate condiiile din list sunt evaluate ca adevrate. Pentru a specifica execuia unei singure comenzi dintr-o list, se pot utiliza comenzi alternative. Astfel, o instruciune if din limbajul C:
if (a > b) max = a; else max = b;

poate fi reprezentat n limbajul CSP prin utilizarea urmtoarei comenzi alternative: [a > b max := a[]a b max := b] Este posibil ca, la utilizarea unei comenzi alternative, s existe o situaie n care mai multe comenzi din list sunt validate. n asemenea cazuri, va fi selectat i executat o comand n mod arbitrar, permind o funcionare nedeterminist. n limbajul CSP, nu exist variabile globale. Din acest motiv, comunicaia ntre procesele concurente poate fi realizat numai prin transmiterea mesajelor, specificnd n mod explicit comenzile input i output. Comunicaia ntre dou procese are loc numai dac sunt ndeplinite toate condiiile urmtoare: 1. Comanda output a primului proces specific al doilea proces ca destinaie a datelor care trebuie transmise. 2. Comanda input a celui de-al doilea proces specific primul proces ca surs a datelor care trebuie recepionate. 3. Tipul destinaiei (n care se recepioneaz datele) din comanda input coincide cu tipul expresiei din comanda output. Acest tip de comunicaie prin utilizarea comenzilor input/output reprezint singurul mecanism de sincronizare n limbajul CSP. Limbajul CSP are o serie de limitri, deoarece nu dispune de construcii pentru specificarea structurii, a tranziiilor ntre stri, a temporizrii, a descrierilor de tipul fluxului de date, sau a tratrii excepiilor.

Metode de descriere a sistemelor numerice

59

3.5.4. Verilog
Limbajul Verilog a fost dezvoltat iniial pentru specificarea i simularea sistemelor numerice de ctre firma cu acelai nume. n 1990, limbajul a devenit public, fiind utilizat pe scar larg ca un limbaj de descriere. Limbajul are mai multe avantaje pentru proiectani, unul din acestea fiind faptul c permite reprezentarea ierarhiei structurale, sistemul fiind specificat ca o ierarhie de module interconectate. Fiecare din aceste module poate fi descris n unul din dou moduri, fie prin utilizarea altor module de nivel inferior, fie prin specificarea funcionrii sale ca un program. Ierarhia funcional poate fi de asemenea reprezentat n limbajul Verilog, n sensul c un proces de la orice nivel al ierarhiei poate genera subprocese concurente prin construcia fork/join, sau poate fi descompus ntr-un set de proceduri. Descrierea proceselor poate fi specificat prin construcii de programare cu sintaxa asemntoare cu cea a limbajului C. Descrierile de tipul fluxului de date sunt de asemenea posibile, prin utilizarea instruciunilor de asignare continu. Comunicaia poate fi implementat printr-un model cu memorie partajat, utiliznd conexiunile dintre porturile modulelor, registrelor i ale memoriilor pentru stabilirea comunicaiei ntre procese. Sincronizarea poate fi realizat n mai multe moduri, deoarece controlul sincronizrii poate fi implementat prin utilizarea construciilor fork/join, sau a instruciunilor de control ale evenimentelor care detecteaz apariia unui eveniment. De exemplu, instruciunea:
@(negedge) clk #10 q = d;

determin actualizarea semnalului q cu valoarea d cu 10 uniti de timp dup frontul negativ al semnalului de ceas clk. Pentru a obine acelai efect, se poate utiliza urmtoarea instruciune wait:
wait (clk = 0); #10 q = d;

Specificaia temporizrii poate fi realizat prin modelarea ntrzierilor pentru pori i conexiuni. Pentru fiecare tip de ntrziere, limbajul permite specificarea valorilor maxime, minime i tipice. n plus, Verilog permite specificarea ntrzierii care determin momentul n care vor fi actualizate valorile dintr-o instruciune de asignare. De exemplu, n instruciunea de asignare #10 q = d, valoarea semnalului q va fi actualizat cu 10 uniti de timp dup frontul negativ al ceasului. Verilog permite tratarea excepiilor prin utilizarea instruciunii disable, care invalideaz un bloc de instruciuni secveniale, i transfer controlul la instruciunea care urmeaz dup blocul respectiv. Limbajul nu permite ns specificarea tranziiilor ntre stri.

3.5.5. Statecharts
Limbajul Statecharts a fost proiectat n primul rnd pentru specificarea sistemelor reactive, cum sunt cele utilizate n aviaie i reele de comunicaie. Limbajul extinde automatele cu stri finite tradiionale prin includerea a trei elemente adiionale: ierarhia, concurena i comunicaia.

Metode de descriere a sistemelor numerice

60

Pentru exemplificare, considerm Figura 39, care reprezint un circuit emitor-receptor universal (UART). Obiectul de baz n limbajul Statechart este starea, iar tranziiile ntre stri sunt determinate de o combinaie de evenimente i condiii.

Figura 39. Specificaia parial a unui circuit UART n limbajul Statecharts.

Limbajul permite reprezentarea ierarhiei funcionale, fiind posibil descompunerea fiecrei specificaii ntr-o ierarhie de stri. Aceast descompunere poate fi realizat n dou moduri: 1. Descompunere OR (secvenial). O stare poate fi compus din mai multe substri secveniale. n Figura 39, de exemplu, starea tx_mod const din dou substri secveniale, inactiv i transm. 2. Descompunere AND (concurent). O stare poate fi format din substri ortogonale, caz n care toate substrile sunt active ori de cte ori starea printe este activ. n Figura 39, strile ortogonale sau concurente sunt cele separate prin linii punctate, ceea ce nseamn c starea uart const din trei stri concurente: transmisie, receptie i uart_mod. Descompunerea concurent specific o concuren la nivel de taskuri. Deoarece permite descompunerea strilor n substri secveniale i concurente, limbajul Statecharts permite evitarea creterii exponeniale a strilor care poate apare n automatele cu stri finite convenionale. Aciunile pot fi asociate att cu strile ct i cu arcele de tranziie, i se presupune c ele reprezint calcule cu ntrzieri zero. Aciunile asociate cu o stare pot fi specificate fie pentru a fi executate n mod continuu ct timp sistemul se afl n starea respectiv, fie pentru a fi executate la trecerea n acea stare sau la ieirea din aceasta. Limbajul permite de asemenea specificarea tranziiilor ntre stri aflate la nivele diferite ale ierarhiei. Pentru specificarea temporizrii funcionale, se poate utiliza o tranziie special de tip timeout, care definete valoarea maxim i minim a timpului n care sistemul se poate afla n starea dorit.

Metode de descriere a sistemelor numerice

61

Comunicaia poate fi implementat printr-un mecanism de transmisie, prin intermediul cruia apariia unui eveniment, actualizarea unei variabile sau o tranziie care are loc n orice poriune a diagramei va fi sesizat imediat n celelalte poriuni ale acesteia. O caracteristic a limbajului Statecharts este versatilitatea acesteia n privina mecanismelor de sincronizare: sincronizarea se poate realiza prin iniializare, prin evenimente comune, sau prin detectarea datelor i strilor comune. Statecharts poate specifica o funcionare nedeterminist, deoarece atunci cnd exist dou arce de la o stare care pot fi parcurse simultan, se alege unul din arce n mod nedeterminist. Dezavantajul limbajului Statecharts este c nu dispune de construcii de programare, i nici de construcii pentru specificarea structurii, completitudinii funcionale sau a descrierilor de tipul fluxului de date.

3.5.6. Silage
Limbajul Silage a fost dezvoltat pentru specificarea sistemelor bazate pe prelucrarea digital a semnalelor (DSP). Descrierea la nivel nalt a acestor sisteme este realizat n mod tipic prin grafuri ale fluxului semnalelor, n care irurile de date sunt transformate prin operatori la intervale fixe de timp, reprezentnd rata de eantionare. Aceste aplicaii au un flux de control redus i necesit un numr relativ mare de calcule. De aceea, limbajele de descriere funcional proiectate pentru aplicaiile DSP se bazeaz pe primitive de nivel nalt care ofer faciliti specifice prelucrrii digitale a semnalelor. Alte limbaje de nivel nalt elaborate pentru aplicaiile DSP sunt FIRST i ALGIC. Silage este un limbaj aplicativ, n sensul c specific doar funciile aplicate asupra datelor, fr utilizarea variabilelor sau a instruciunilor de asignare. Astfel operaiile nu produc efecte secundare. O descriere n acest limbaj const din ecuaii care sunt similare cu definiiile algoritmice, i care descriu transformrile efectuate asupra irurilor de date pentru un singur interval de eantionare. Principalul avantaj al limbajului Silage const n faptul c exceleaz n specificarea descrierii fluxului de date. Expresiile limbajului reprezint iruri de valori, astfel c n expresia a + b, de exemplu, a i b reprezint iruri de numere, spre deosebire de variabilele sau elementele de tablouri ntlnite la limbajele de programare convenionale. Un program Silage preia setul valorilor de intrare ntr-un mod sincron, i produce rezultatele sub forma irurilor de date. Un program Silage const dintr-un set de definiii, care definesc noi valori n funcie de valorile de intrare. Ordinea definiiilor nu este semnificativ, deoarece ele nu reprezint asignri la variabile (ceea ce ar introduce dependene ntre instruciuni). Funciile de recuren ale limbajului, n care elementele unui ir depind de valorile precedente ale irului, permit o specificare limitat a temporizrii funcionale. Operatorul de ntrziere @ este utilizat pentru a indica valori precedente dintr-un ir, ca n urmtoarea instruciune:
d = d@1 + 1;

Termenul d@1 se refer la valoarea precedent a operandului d, cea din timpul intervalului precedent de eantionare. Fiecare valoare din irul d va fi incrementat fa de valoarea precedent.

Metode de descriere a sistemelor numerice

62

Limbajul Silage are constructori pentru tablouri care pot reprezenta elemente specifice ale unui vector n mod concis. De asemenea, pot fi utilizai operatori de reducere ca sum i max pentru pentru a se opera asupra tablourilor ntregi, iar expresiile condiionale permit selectarea unei expresii dintr-un set de expresii. Operatorii decimate i interpolate pot fi utilizai pentru reducerea sau creterea ratei de eantionare a unui semnal. Operatorul decimate permite selecia unui numr mai redus de elemente dintr-un ir al datelor de intrare, reducnd astfel rata de eantionare. Operatorul interpolate are ca efect creterea ratei de eantionare a unui ir de date, prin inserarea unui numr mai mare de valori ntr-un eantion existent. Prin construcia pragma a limbajului utilizatorul poate specifica sistemului de sintez sau compilatorului unele sugestii de implementare. Aceast construcie se poate utiliza pentru a asocia anumii operatori unitilor hardware, sau pentru a indica gradul de paralelism permis pentru irurile de date, prin asocierea funciilor limbajului la procesoare. Deoarece Silage a fost elaborat ca un limbaj aplicativ, nu dispune de construcii specifice limbajelor de programare obinuite, nu permite recursivitatea sau iteraiile cu limite dinamice. Asemenea construcii pot fi reprezentate ca macrouri ale limbajului. De exemplu, o funcie reprezint gruparea unor definiii, fiind implementat ca un macro. De asemenea, limbajul nu are variabile i operatori de asignare, iar tranziiile ntre stri, ierarhia funcional i gestionarea excepiilor nu pot fi reprezentate.

3.5.7. SpecCharts
Limbajul SpecCharts se bazeaz pe modelul automatelor cu stri ale programului (ASP), i este definit ca o extensie a limbajului VHDL. Obiectul de baz al limbajului este construcia behavior, care corespunde direct unei stri a programului din modelul ASP. n Figura 40 se prezint un exemplu de descriere n limbajul SpecCharts. Limbajul permite exprimarea ierarhiei funcionale, un sistem fiind descris ca o ierarhie de construcii behavior. Aceste construcii pot fi compuse sau terminale. Construciile behavior compuse sunt descompuse ierarhic ntr-un set de alte construcii behavior, care pot fi concurente sau secveniale. n primul caz, toate subconstruciile sunt active de fiecare dat cnd construcia este activ, iar n al doilea caz subconstruciile sunt active succesiv. n Figura 40, B i X sunt construcii behavior compuse. Construcia B este compus din subconstruciile concurente X, Y i Z, iar construcia X este compus din subconstruciile secveniale X1 i X2. ntr-o construcie descompus n subconstrucii secveniale, prima subconstrucie din list va fi cea iniial, la care se transfer controlul n momentul activrii construciei printe. n cazul subconstruciilor concurente, ordinea n care acestea sunt specificate nu este relevant. Construciile behavior terminale sunt cele care se afl la baza ierarhiei, funcionarea acestora fiind specificat prin construcii de programare care utilizeaz instruciunile secveniale ale limbajului VHDL. n Figura 40, de exemplu, X1, X2, Y i Z sunt construcii terminale. Limbajul SpecCharts permite specificarea tranziiilor ntre stri, n sensul c se poate reprezenta secvenierea ntre subconstruciile behavior prin intermediul unui set de arce de tranziie. Un arc este reprezentat ca un 3-tuplu <T, C, UB>, unde T reprezint tipul tranziiei, C reprezint evenimentul sau condiia care determin tranziia, iar UB reprezint urmtoarea

Metode de descriere a sistemelor numerice

63

construcie behavior la care se transfer controlul n urma tranziiei. Dac nu este asociat nici o condiie cu tranziia, se presupune c aceasta este TRUE.
ENTITY E IS PORT (P: IN INTEGER; Q: OUT INTEGER); END E; ARCHITECTURE A OF E IS BEGIN BEHAVIOR B TYPE CONCURRENT SUBBEHAVIORS IS TYPE int_array IS ARRAY (NATURAL RANGE < >) OF INTEGER; SIGNAL m: int_array (15 DOWNTO 0); BEGIN X: (TOC, TRUE, COMPLETE); Y: (TOC, e3, COMPLETE); Z: ; BEHAVIOR X TYPE SEQUENTIAL SUBBEHAVIORS IS BEGIN X1: (TI, e1, X2); X2: (TOC, e2, COMPLETE); BEHAVIOR X1 TYPE CODE IS ... BEHAVIOR X2 TYPE CODE IS ... END X; BEHAVIOR Y TYPE CODE IS VARIABLE max: INTEGER; BEGIN max := 0; FOR j IN 0 TO 15 LOOP IF (m(j) > max) THEN max := m(j); END IF; END LOOP; END Y; BEHAVIOR Z TYPE CODE IS ... END B; END A; Figura 40. Exemplu de specificaie n limbajul SpecCharts.

Ca i modelul ASP, limbajul SpecCharts are dou tipuri de arce de tranziie. Un arc de tranziie la terminare (TT, TOC - Transition On Completion) este traversat ori de cte ori construcia behavior surs i-a terminat prelucrrile i condiia asociat arcului este adevrat. O construcie behavior terminal este terminat atunci cnd a fost executat ultima instruciune a acesteia, i toate variabilele i semnalele au fost actualizate cu valorile lor finale. O construcie behavior descompus n subconstrucii secveniale este terminat numai atunci cnd efectueaz o tranziie la un punct de terminare predefinit, indicat prin numele COMPLETE n cmpul corespunztor al arcului de tranziie. n Figura 40, de exemplu, con-

Metode de descriere a sistemelor numerice

64

strucia X se termin numai dac se termin subconstrucia X2, i controlul se transfer de la X2 la punctul COMPLETE la apariia evenimentului e2, dup cum se specific prin arcul X2: TOC, e2, COMPLETE). O construcie behavior descompus n subconstrucii concurente este terminat atunci cnd toate subconstruciile sale (sau un subset selectat al acestora) au fost terminate. n Figura 40, de exemplu, construcia B se termin atunci cnd ambele subconstrucii concurente X i Y s-au terminat i controlul s-a transferat la punctul de terminare, dup cum se specific prin arcele X: (TOC, TRUE, COMPLETE) i Y: (TOC, e3, COMPLETE). De notat c terminarea construciei B nu este afectat de starea execuiei subconstruciei Z. Subconstrucia Z este ns afectat de construcia B, n sensul c atunci cnd B se termin datorit tranziiilor de la X i Y la punctul de terminare, i Z este terminat. Un arc de tranziie imediat (TI) este traversat imediat ce condiia asociat devine adevrat, indiferent dac construcia behavior surs s-a terminat sau nu. De exemplu, n Figura 40, arcul X1: (TI, e1, X2) va conduce la terminarea construciei X1 dac apare evenimentul e1 i va transfera controlul construciei X2. Deci, un arc TI are ca efect terminarea tuturor subconstruciilor de nivel inferior ale construciei surs. Arcul timeout este un arc TI special, care este traversat atunci cnd intervalul de timp asociat acestuia expir, interval care este determinat n funcie de momentul activrii construciei behavior. n limbajul SpecCharts, doar un subset al strilor programului este activ n orice moment de timp. Numai starea rdcin, reprezentnd ntregul sistem, este activ ntotdeauna. Semantica de execuie a limbajului SpecCharts este similar cu cea a limbajului VHDL, iar construciile behavior active sunt identice cu procesele din VHDL, cu excepia faptului c nu exist o bucl implicit n care este cuprins construcia behavior. Cu alte cuvinte, construciile behavior se execut pn cnd sunt suspendate prin instruciunile wait, nu exist ntrziere ntre dou instruciuni wait succesive, i toate semnalele sunt actualizate n intervale delta. Construciile behavior inactive sunt ignorate, fiind tratate ca procese VHDL suspendate, cu toate driverele semnalelor ntrerupte. n cazul n care o subconstrucie secvenial se termin, dar nu exist nici un arc TT cu condiia adevrat, se ateapt pn cnd o condiie devine adevrat. Descrierile n acest limbaj sunt deterministe, n sensul c tranziiile au o prioritate determinat de ordinea n care ele sunt listate n descriere. Ca o regul, arcele TI au prioritate fa de arcele TT, iar arcele TI aflate la nivelul superior al ierarhiei au prioritatea maxim. O construcie behavior poate conine declaraii VHDL, ca tipuri, semnale, variabile i proceduri, al cror domeniu este reprezentat de toate subconstruciile aferente. Sincronizarea poate fi realizat prin dou metode. n cazul primei metode, se utilizeaz instruciuni wait pentru testarea evenimentelor i a condiiilor, ca i n limbajul VHDL. Astfel, urmtoarea instruciune:
WAIT UNTIL (start = '0') AND (NOT start'STABLE);

va suspenda construcia behavior n care apare pn la detectarea unei tranziii negative a semnalului start. n cazul metodei a doua, se poate utiliza un arc de tranziie TI de la o construcie behavior la ea nsi, cu scopul de a sincroniza toate subconstruciile concurente cu strile lor iniiale. SpecCharts permite exprimarea ierarhiei structurale ntr-un mod similar cu limbajul VHDL, prin faptul c sistemul sau o poriune a acestuia poate fi ncapsulat ca o entitate. Pentru fiecare entitate pot fi declarate porturi, i acestea pot fi conectate cu porturile altor

Metode de descriere a sistemelor numerice

65

entiti, prin intermediul semnalelor. n Figura 40, de exemplu, ierarhia de construcii behavior este ncapsulat ca o entitate E, declaraiile de porturi specificnd interfaa entitii. Ierarhia funcional poate fi de asemenea exprimat n mod direct, prin faptul c o construcie behavior poate fi format din subconstrucii secveniale sau concurente (Figura 41).

Figura 41. Descompunerea funcional secvenial/concurent n limbajul Specharts.

Comunicaia n limbajul SpecCharts este realizat prin utilizarea variabilelor i a semnalelor. Se pot utiliza construcii secveniale pentru citirea i scrierea aceleiai variabile, iar comunicaia ntre construciile concurente este implementat prin semnale. Comunicaia prin transmiterea mesajelor poate fi de asemenea specificat n acest limbaj, prin definirea unor proceduri send/receive pentru toate tipurile de date transmise prin canale. Specificarea temporizrii este realizat prin instruciuni wait i clauze after n cadrul asignrii semnalelor, n mod identic cu limbajul VHDL. O specificaie suplimentar de temporizare este arcul TI timeout.

Figura 42. Specificarea tranziiilor ntre stri n limbajul SpecCharts.

Metode de descriere a sistemelor numerice

66

Tranziiile ntre stri sunt exprimate prin arcele TT i TI (Figura 42). Excepiile pot fi specificate direct printr-un arc TI (Figura 43). De notat corespondena direct dintre modelul conceptual i descrierea n limbajul SpecCharts.

Figura 43. Specificarea excepiilor n limbajul SpecCharts.

Exemplele n limbajul SpecCharts au fost prezentatate sub form textual. Tranziiile ntre stri, ns, pot fi exprimate mai sugestiv sub form grafic, ca diagrame de stare. Din acest motiv, limbajul SpecCharts are o versiune grafic echivalent. n Figura 44 se prezint versiunea grafic echivalent a specificaiei textuale din Figura 40.

Figura 44. Versiunea grafic echivalent a exemplului descris n limbajul SpecCharts.

O entitate este reprezentat printr-un dreptunghi, iar construciile behavior din cadrul unei entiti sunt reprezentate prin dreptunghiuri cu coluri rotunjite. Subconstruciile

Metode de descriere a sistemelor numerice

67

concurente sunt separate ntre ele prin linii ntrerupte. Tranziiile sunt reprezentate prin arce direcionate. n cazul construciilor behavior descompuse n subconstrucii secveniale, prima subconstrucie este indicat printr-un triunghi (de exemplu X1). Terminarea construciilor descompuse secvenial este indicat printr-un arc de tranziie ctre punctul de terminare, reprezentat printr-un ptrat n cadrul construciei (de exemplu tranziia de la X2 etichetat cu e2). Arcele de tranziie TT i TI au reprezentri grafice diferite. Arcele TT ncep de la un dreptunghi din interiorul subconstruciei surs, ca de exemplu arcele etichetate cu e2 i e3. Arcele TI ncep de la perimetrul subconstruciei surs, ca de exemplu arcul etichetat cu e1. Limbajul StateCharts poate fi extins n mai multe moduri. n primul rnd, de multe ori este necesar descompunerea unei construcii behavior care a fost specificat ca un set de instruciuni secveniale, ntr-un set de subconstrucii concurente. n asemenea cazuri, este util o construcie de tip fork/join care poate fi aplicat construciilor behavior terminale. n al doilea rnd, pentru un sistem poate fi necesar specificarea unei construcii behavior care execut n mod continuu un set de asignri concurente. Un exemplu este definirea unui semnal enable ca fiind activ ct timp exist tensiune de alimentare (power = 1) i semnalul de resetare este inactiv (reset = 0). Este util posibilitatea definirii semnalului enable n funcie de power i reset pe toat durata funcionrii sistemului, ca n urmtoarea instruciune de asignare concurent n limbajul VHDL:
BLOCK BEGIN enable <= power AND (NOT reset); END BLOCK;

O alt extensie util este parametrizarea construciilor behavior. n acest caz se pot specifica sisteme de dimensiuni mari, constnd din blocuri funcionale apropiate, care difer numai printr-un numr redus de parametri. n variantele actuale, chiar dac exist n construcii behavior n cadrul sistemului, toate cele n trebuie specificate n ntregime n descriere.

3.6. Relaia dintre limbaj i arhitectur


Din seciunile precedente rezult c limbajele de descriere hardware se bazeaz pe diferite modele de proiectare i au diferite semantici. Pentru ca aceste limbaje s poat fi utilizate n mod eficient pentru sinteza de nivel nalt, este necesar o coresponden ntre modelul semantic al limbajului i modelul arhitectural utilizat la implementare. Atunci cnd limbajele sunt elaborate n mod special pentru o anumit aplicaie (de ex., Silage), o asemenea coresponden exist. n cazul limbajelor elaborate pentru a acoperi un spectru larg de proiecte i aplicaii, modelul semantic al limbajului poate fi complet diferit fa de modelul arhitecturii generate de sistemul de sintez. Aceast diferen ntre modelele semantice ale limbajelor i modelele arhitecturale este vizibil mai ales n cazul limbajului VHDL. Acest limbaj are un set variat de construcii care permit descrierea aceleiai specificaii n mai multe moduri diferite. Toate aceste descrieri pot produce aceleai rezultate de simulare, dar este posibil s nu existe o relaie ntre descrierile simulate corect i modulele hardware generate de sistemele de sintez de nivel nalt.

Metode de descriere a sistemelor numerice

68

De exemplu, se consider specificaia unui sumator n limbajul VHDL, pentru care descrierea interfeei este prezentat n Figura 45(a). n funcie de experien, proiectantul poate elabora diferite descrieri pentru acest circuit simplu. Dac proiectantul este experimentat n domeniul proiectrii circuitelor logice, poate realiza o descriere similar cu cea din Figura 45(b), deoarece sumatorul poate fi descris n mod eficient prin utilizarea operatorilor booleeni. Un proiectant cu experien n domeniul software poate prefera o descriere similar cu cea din Figura 46(a), n care se utilizeaz operatori aritmetici asupra variabilelor pentru a se descrie sumatorul pe baza tabelului de adevr al acestuia.

Figura 45. Descrierea de tipul fluxului de date a unui sumator n limbajul VHDL: (a) descrierea entitii; (b) descrierea arhitecturii; (c) structura obinut n urma sintezei.

Ambele descrieri produc aceleai rezultate la simulare. Primul tip de descriere este mai eficient pentru sinteza automat, deoarece ecuaiile booleene sugereaz implementarea pe baza operatorilor booleeni AND, OR i XOR. Figura 45(c) indic structura hardware obinut pornind de la descrierea de tipul fluxului de date, n care fiecrui operator logic i corespunde poarta logic respectiv. Pe de alt parte, dac se utilizeaz descrierea funcional din Figura 46(a) ca intrare pentru un sistem de sintez de nivel nalt, poate rezulta structura din Figura 46(b). n structura rezultat, exist circuite suplimentare pentru conversia ntre tipul bit i ntreg, i se utilizeaz trei circuite de incrementare pentru implementarea unui simplu sumator. Aceste ineficiene trebuie eliminate de ctre sistemele de sintez. Aceasta necesit o etap costisitoare de recunoatere i optimizare, ceea ce s-ar putea evita prin utilizarea stilului

Metode de descriere a sistemelor numerice

69

corespunztor de descriere. n plus, nu exist garania c aceste ineficiene pot fi recunoscute i optimizate ntotdeauna. A doua problem apare datorit modelului timpului utilizat de ctre diferitele limbaje. Un limbaj bazat pe simulare modeleaz valorile semnalelor n diferite momente de timp. ntrzierile specificate n asemenea limbaje se refer la planificarea evenimentelor asupra acestor semnale n momentele viitoare ale timpului de simulare, execuia instruciunilor necesitnd un timp de simulare zero. n consecin, ntrzierea de la intrare la ieire pentru un set de instruciuni de asignare poate fi distribuit ntr-un mod oarecare ntre instruciunile individuale. Chiar dac toate descrierile genereaz aceleai rezultate corecte la simulare, aceste ntrzieri au semantici ambigue pentru sintez din cauza modurilor diferite n care ele pot fi specificate.

Figura 46. Descrierea funcional a unui sumator n limbajul VHDL: (a) descrierea arhitecturii; (b) rezultatul sintezei.

Se va ilustra aceast diferen ntre semanticile de temporizare considernd descrierile sumatorului din Figura 45(b) i Figura 46(a), n care se specific o ntrziere de 5 ns pentru transportul de ieire. ntrzierea de 5 ns pentru semnalul de transport din Figura 45(b) este

Metode de descriere a sistemelor numerice

70

concentrat n cadrul operatorului OR din instruciunea de asignare. De aceea semantica de simulare pentru acest caz sugereaz c generarea semnalelor s2 i s3 (operaiile AND) necesit un timp zero, n timp ce operaia OR se execut n 5 ns. n contextul sintezei, aceast valoare a ntrzierii este ns ambigu, deoarece ea reprezint ntrzierea de la semnale intermediare la ieirea c_out, i nu ntrzierea de la semnalele de intrare x, y i c_in la ieirea c_out. Similar, ntrzierea de 5 ns pentru transportul din Figura 46(a) este concentrat n cadrul ultimei instruciuni de asignare, care nu are nici un operator, n timp ce se presupune c generarea semnalului c_temp se realizeaz ntr-un timp egal cu zero. Ambele descrieri au semantici ambigue pentru sintez, din cauza modului n care sunt grupate ntrzierile n instruciunile de asignare respective. Se poate elabora pentru sumatorul anterior i un model structural. Figura 47 prezint o descriere structural n limbajul VHDL n care sumatorul este realizat prin utilizarea a dou semisumatoare i a unei pori SAU. Simularea acestei descrieri structurale este realizat prin elaborarea modelelor de simulare pentru fiecare component structural. n acest context, sinteza implic implementarea structurii semisumatorului i a porii SAU utiliznd primitive de nivel inferior, urmat de plasarea i rutarea ntregului circuit.

Figura 47. Descrierea structural a unui sumator n limbajul VHDL.

De observat c descrierea structural din Figura 47 se refer explicit la componente i la interconexiunile acestora, n timp ce descrierea de tipul fluxului de date din Figura 45 specific funcionarea abstract utiliznd expresii booleene. Aceasta din urm nu descrie structura, deoarece operatorii booleeni abstraci trebuie s fie asociai cu componente fizice care execut operaiile respective.

Metode de descriere a sistemelor numerice

71

n plus fa de problemele legate de stilul descrierii care afecteaz calitatea sintezei i ambiguitatea specificrii ntrzierilor pentru sintez, un limbaj bazat pe simulare cum este VHDL poate avea construcii de limbaj care nu au implementri hardware echivalente. Considerm fragmentul de program VHDL din Figura 48, care descrie funciile de tergere i de numrare n sus ale unui numrtor. Blocul cnt_clr descrie tergerea asincron a numrtorului atunci cnd semnalul clr este activ. Blocul cnt_up descrie operaia de numrare sincron atunci cnd numrtorul este validat i semnalul inc este activ. Blocul sel stabilete valoarea ieirii cnt a numrtorului, prin selecia ntre valoarea cnt1, rezultat n urma tergerii numrtorului, i valoarea cnt2, rezultat n urma incrementrii acestuia. Al treilea bloc este necesar numai din cauza semanticii de simulare a limbajului VHDL: nu se pot asigna valori semnalului cnt n blocuri diferite fr a scrie o funcie de decizie.

Figura 48. Descrierea unui numrtor i rezultatul iniial obinut n urma sintezei.

Aceast descriere este convenabil pentru modelarea funcionrii numrtorului n vederea simulrii, deoarece operaiile de tergere asincron i de numrare sincron pot fi specificate separat. Acestor operaii li se pot asocia valori diferite de ntrziere pentru a asigura ca simularea funcionrii s respecte restriciile de temporizare cerute pentru numrtor. Totui, dac se realizeaz sinteza din aceast descriere, rezult iniial structura din Figura 48(b). Aceast structur conine patru multiplexoare, mux1, mux2, mux3 i mux4, ca i dou blocuri pentru detectarea modificrii semnalelor cnt1 i cnt2. Structura generat nu

Metode de descriere a sistemelor numerice

72

seamn cu cea a unui numrtor standard, fiind necesare operaii considerabile de optimizare pentru transformarea acestei structuri. Dup cum se constat din exemplele anterioare, flexibilitatea unui limbaj de descriere permite ca funcionarea s fie descris n mai multe moduri. n general, nu este posibil sinteza optim pentru fiecare tip de descriere, dar anumite stiluri de descriere asigur o coresponden mai apropiat cu modelul arhitectural. De asemenea, att calitatea proiectului rezultat prin sintez, ct i complexitatea sistemelor de sintez utilizate sunt influenate de stilul descrierilor utilizate. Exist dou soluii pentru a realiza o apropiere ntre modelele semantice ale limbajelor i modelele arhitecturale. n primul rnd, se pot elabora limbaje specializate prin extinderea unor limbaje existente, a cror modele semantice sunt adecvate pentru arhitectura destinaie sau aplicaia respectiv. SpecCharts, StateMate i BIF sunt exemple de limbaje i formalisme specializate care au la baz limbajul VHDL. n al doilea rnd, se poate utiliza un limbaj existent, cu restricia de a se utiliza stilurile i principiile de modelare care garanteaz o sintez eficient. n plus, aceste stiluri i principii de modelare mbuntesc documentarea proiectului i comunicarea ntre proiectani, prin producerea unui set mai redus de stiluri de descriere mai bine documentate i nelese. Aceste stiluri de modelare pot fi comparate cu principiile programrii structurate, n scopul mbuntirii calitii i portabilitii produselor software. Deoarece limbajul VHDL este un limbaj standard cu semantica diferit de modelul hardware, se va utiliza acest limbaj pentru ilustrarea unor principii n vederea unei sinteze eficiente. Exist numeroase eforturi de cercetare n scopul elaborrii unor principii i practici de modelare pentru sinteza pe baza limbajului VHDL. Se vor ilustra unele principii de modelare pentru cteva modele arhitecturale. 1) Modele combinaionale Pentru un model hardware constnd dintr-o reea logic combinaional, o descriere care utilizeaz abstractizri funcionale ale porilor logice, deci operatori booleeni ai limbajului, este cea mai adecvat. Din exemplul de modelare al sumatorului, se constat c descrierea care utilizeaz operatori booleeni este cea mai apropiat de modelul hardware. Circuitele combinaionale sunt caracterizate prin concuren; deoarece nu exist ceasuri care controleaz secvenierea, ieirile se pot modifica n orice moment ca urmare a modificrii intrrilor. De aceea, circuitele combinaionale pot fi descrise prin construciile de tipul fluxului de date ale limbajului VHDL, utiliznd instruciunea de asignare concurent. 2) Modele funcionale Aceste modele sunt caracterizate printr-o combinaie de funcii sincrone i asincrone, n care evenimentele asincrone sunt prioritare fa de operaiile sincrone. Componentele tipice care pot fi descrise prin modele funcionale sunt cele secveniale, ca registre, registre de deplasare, numrtoare i elemente de memorie. Fiecare model funcional este un automat cu o singur stare, care poate avea mai multe moduri de operare. Pentru descrierea modelelor funcionale n limbajul VHDL, trebuie identificate mai nti prile modelelor care opereaz sincron, i cele care opereaz asincron. Fiecrui semnal care apare n descrierea interfeei i se atribuie un tip n funcie de scopul acestuia (de ceas, de resetare, de control, de date). Ca urmare, funciile sincrone i cele asincrone pot fi descrise ntr-un singur bloc, i deoarece modelele funcionale reprezint modele ASFD cu o singur stare, poate fi utilizat construcia BLOCK pentru descrierea acestor modele arhitecturale.

Metode de descriere a sistemelor numerice

73

Ca exemplu, se descrie n limbajul VHDL numrtorul din Figura 48(a) utiliznd stilul descrierii funcionale. n primul rnd, se atribuie tipuri semnalelor clr (de resetare), clk (de ceas), i en (de control). n continuare, se descrie funcionarea numrtorului utiliznd un bloc de tipul fluxului de date (Figura 49). Blocul este activat numai dac semnalul clr este activ ('1'), sau dac en este activ i apare un front cresctor al semnalului clk. n cadrul blocului, semnalului cnt i se asigneaz valoarea 0 dac clr = '1', chiar dac en = '1' i apare un front cresctor al semnalului clk.
cnt_up: BLOCK (clr = '1' OR (en = '1' AND clk'EVENT AND clk = '1')) BEGIN cnt <= GUARDED B"0000" AFTER clrdel WHEN clr = '1' ELSE cnt + B"0001" AFTER incdel WHEN inc = '1' ELSE cnt; END BLOCK; Figura 49. Exemplu de descriere funcional n limbajul VHDL.

3) Modele RT Modelul arhitectural al transferurilor ntre registre corespunde modelului conceptual ASF cu cale de date. De aceea, descrierea funcional a unui asemenea model se poate realiza pe baza strilor, astfel nct pentru fiecare stare s se specifice condiiile care trebuie testate n unitatea de control, operaiile executate n calea de date i starea urmtoare.
St_Fetch: BLOCK ((clk'EVENT AND clk = '1') AND (stare = s0)) BEGIN ri <= M(pc); stare <= s1; END BLOCK; St_Decod: BLOCK ((clk'EVENT AND clk = '1') AND (stare = s1)) BEGIN CASE ri IS WHEN "0000" => a <= a + 1; stare <= s2; WHEN "0001" => a <= 0; stare <= s3; ... END CASE; END BLOCK; Figura 50. Exemplu de descriere de tip RT n limbajul VHDL.

VHDL nu dispune de conceptul de stare n cadrul limbajului, astfel c modelarea se poate realiza n diferite moduri. Nu toate dintre acestea determin ns o sintez eficient. O posibilitate de modelare a strilor n limbajul VHDL este de a asocia fiecare stare cu un bloc separat. Deoarece blocurile se execut n mod concurent, este necesar s se activeze doar acel bloc care corespunde strii curente. Aceasta se realizeaz prin asignarea unui nume unic de stare fiecrui bloc i actualizarea unui semnal pentru starea curent. Un bloc de stare este

Metode de descriere a sistemelor numerice

74

activat dac are loc o modificare a semnalului de ceas i dac semnalul strii curente indic starea respectiv. Operaiile din calea de date pot fi descrise utiliznd construcii concurente. Aceast descriere este corespunztoare deoarece transferurile ntre registre din calea de date se efectueaz n paralel pe durata unei singure stri. La sfritul blocului de stare, semnalul strii curente este actualizat cu starea urmtoare. Figura 50 prezint un fragment n limbajul VHDL pentru descrierea strilor St_Fetch i St_Decod ale unui procesor simplu, n care fiecare bloc corespunde unei singure stri.

4. Concluzii
Se constat c pe msura creterii complexitii sistemelor numerice, apare necesitatea unor sisteme pentru proiectarea automat la nivele de abstractizare mai nalte. Abstractizarea de nivel mai nalt determin reducerea costului de proiectare. Pentru reducerea ciclului de proiectare sunt necesare tehnici de sintez care permit realizarea conceptelor de corectitudine prin construcie i cel al primei specificaii. n acest scop, sistemele CAD trebuie s permit verificarea funcional i a regulilor de proiectare, fiind necesar modelarea cu acuratee a procesului de proiectare i estimarea corect a unor indicatori de calitate, de exemplu cei de performan i cost. Pe lng reducerea duratei ciclului de proiectare, abstractizarea de nivel nalt i automatizarea unei pri sau a ntregului proces de proiectare face posibil explorarea mai complet a diferitelor metode de proiectare, deoarece proiectele pot fi generate i evaluate ntr-un timp redus. De asemenea, dac algoritmii de sintez sunt performani, sistemele de proiectare automat pot depi proiectanii de nivel mediu n ceea ce privete generarea proiectelor de calitate. Totui, verificarea corectitudinii acestor algoritmi, i a sistemelor CAD n general, nu este o sarcin uoar. Sistemele CAD nu pot asigura nc o calitate comparabil cu cea a proiectantului uman pentru ntregul proces de proiectare. Pentru definirea diferitelor nivele de descriere a sistemelor numerice, diagrama Y este cea mai des utilizat. Fiecare element al unui sistem numeric poate fi descris n cadrul a trei domenii diferite: domeniul funcional, domeniul structural i domeniul fizic/geometric. Un model al unui circuit sau sistem este o abstractizare a acestuia, deci o reprezentare care pune n eviden caracteristicile sale relevante, fr detaliile asociate. Modelele informale pot constitui surse de ambiguiti, de aceea au o aplicabilitate limitat atunci cnd sunt utilizate pentru sistemele CAD. n schimb, modelele formale au o sintax i semantic bine definit, de aceea asigur un mijloc de a exprima informaiile despre un sistem ntr-un mod care poate fi interpretat neambiguu. Un model nu descrie exact modul n care sistemul trebuie realizat. Dup alegerea unui model corespunztor i descrierea funcionrii sistemului, urmtoarea etap de proiectare este transformarea modelului ntr-o arhitectur, care definete implementarea modelului.

Metode de descriere a sistemelor numerice

75

Un circuit sau sistem poate fi modelat n moduri diferite n funcie de nivelul de abstractizare dorit (de exemplu, funcional, structural, fizic) i de metodele de modelare utilizate (de exemplu, limbaje, diagrame, modele abstracte). n general, modelele utilizate n cadrul sistemelor de proiectare asistat de calculator se ncadreaz n urmtoarele categorii: orientate pe stare; orientate pe activitate; orientate pe structur; orientate pe date; eterogene. Din aceste categorii, au fost prezentate urmtoarele modele utilizate n mod frecvent: automatele cu stri finite; reelele Petri; automatele cu stri finite ierarhice i concurente; grafurile fluxului de date; grafurile fluxului de control; diagramele de conexiune a componentelor; structurile de inciden; reelele logice generalizate; grafurile fluxului de control i de date; diagramele de structur; automatele cu stri ale programului; modelul firelor de ateptare. n ultimii ani, exist tendina de a se utiliza limbajele de descriere hardware pentru specificarea proiectelor, modelele bazate pe aceste limbaje fiind preferate fa de diagramele de stare, grafurile fluxului de date i de control, dei unele modele bazate pe diagrame sunt mai puternice n ceea ce privete vizualizarea funciilor unui sistem. Exist mai multe avantaje ale utilizrii limbajelor de descriere ca limbaje de specificaie executabil, de exemplu: descrierea executabil se poate utiliza pentru simulare, pentru sinteza automat, pentru documentarea sistemului. Natura specific a circuitelor hardware determin ca aceste limbaje s fie diferite de limbajele de programare utilizate n mod curent. Astfel, semantica unei funcii specificate ntr-un limbaj de descriere implic un proiect hardware care urmeaz a fi implementat, spre deosebire de o funcie care se execut pe un sistem existent. De asemenea, aceste limbaje au construcii suplimentare pentru a se adapta la caracteristicile speciale ale circuitelor hardware. Pe msura creterii nivelului de abstractizare al proiectelor, a crescut i nivelul de abstractizare al limbajelor de descriere, rezultnd o proliferare a acestor limbaje, ceea ce a creat dificulti n privina portabilitii descrierilor. Asemenea probleme au condus la eforturi de standardizare a limbajelor pentru proiectarea sistemelor digitale (Conlan, VHDL, UDL/I), cu scopul de a se dezvolta un limbaj comun care poate fi utilizat pentru modelare, simulare i documentare. Limbajele de descriere hardware, ca i limbajele de programare, pot fi clasificate n limbaje procedurale i declarative (neprocedurale). De asemenea, limbajele de descriere mai pot fi clasificate n limbaje cu semantic imperativ i limbaje cu semantic aplicativ. n funcie de tipul aplicaiei proiectate i de arhitectura care se va utiliza pentru implementare, proiectanii necesit diferite tipuri de descrieri, sub form textual, tabelar sau grafic. Construciile limbajelor de programare standard permit abstractizri funcionale, dar nu permit exprimarea proprietilor specifice unitilor hardware n descrierea proiectelor. Pentru aceasta limbajele de descriere hardware trebuie s dispun de construcii suplimentare pentru definirea interfeelor, specificarea parial a structurii proiectelor, specificarea operatorilor la nivelul transferurilor ntre registre i la nivelul logic, a asincronismului, a ierarhiei, a comunicaiei ntre procese, a restriciilor de proiectare i a alocrii de ctre utilizator. Au fost prezentate principalele caracteristici ale unor limbaje de descriere mai cunoscute: VHDL; HardwareC; Verilog; CSP; Statecharts; Silage; SpecCharts. Dintre acestea, limbajul VHDL are o importan deosebit, deoarece este un limbaj standard cu o rspndire larg, i permite realizarea proiectrii la un nivel de abstractizare mai ridicat, i nu la nivelul logic sau cel al transferurilor ntre registre.

Metode de descriere a sistemelor numerice

76

Trebuie menionat c fiecare limbaj de descriere reprezint un instrument de proiectare i nu o metodologie. n domeniul limbajelor de descriere hardware este de ateptat ca urmtoarea etap s o constituie introducerea tehnicilor orientate pe obiecte. De asemenea, deoarece n realitate sistemele conin i pri analogice, mecanice, sau programe, limbajele i sistemele de proiectare trebuie mbuntite pentru a ine cont i de aceste aspecte. De exemplu, o soluie o reprezint posibilitatea includerii descrierii componentelor analogice i a programelor n descrierea sistemului. Limbajele de descriere hardware se bazeaz pe diferite modele de proiectare i au diferite semantici. Pentru ca aceste limbaje s poat fi utilizate n mod eficient pentru sinteza de nivel nalt, este necesar o coresponden ntre modelul semantic al limbajului i modelul arhitectural utilizat la implementare. Atunci cnd limbajele sunt elaborate n mod special pentru o anumit aplicaie (de ex., Silage), o asemenea coresponden exist. n cazul limbajelor elaborate pentru a acoperi un spectru larg de proiecte i aplicaii, modelul semantic al limbajului poate fi complet diferit fa de modelul arhitecturii generate de sistemul de sintez, fiind necesar utilizarea unui stil de descriere corespunztor. O alt problem apare datorit modelului timpului utilizat de ctre diferitele limbaje. Un limbaj bazat pe simulare modeleaz valorile semnalelor n diferite momente de timp. ntrzierile specificate n asemenea limbaje se refer la planificarea evenimentelor asupra acestor semnale n momentele viitoare ale timpului de simulare, execuia instruciunilor necesitnd un timp de simulare zero. De aceea, ntrzierea de la intrare la ieire pentru un set de instruciuni de asignare poate fi distribuit ntr-un mod oarecare ntre instruciunile individuale. Chiar dac toate descrierile genereaz aceleai rezultate la simulare, aceste ntrzieri au semantici ambigue pentru sintez din cauza modurilor diferite n care ele pot fi specificate. n plus fa de problemele legate de stilul descrierii care afecteaz calitatea sintezei i ambiguitatea specificrii ntrzierilor pentru sintez, un limbaj bazat pe simulare cum este VHDL poate avea construcii de limbaj care nu au implementri hardware echivalente. Flexibilitatea unui limbaj de descriere permite ca funcionarea s fie descris n mai multe moduri. n general, nu este posibil sinteza optim pentru fiecare tip de descriere, dar anumite stiluri de descriere asigur o coresponden mai apropiat cu modelul arhitectural. De asemenea, att calitatea proiectului rezultat prin sintez, ct i complexitatea sistemelor de sintez utilizate sunt influenate de stilul descrierilor utilizate. Exist dou soluii pentru a realiza o apropiere ntre modelele semantice ale limbajelor i modelele arhitecturale. n primul rnd, se pot elabora limbaje specializate prin extinderea unor limbaje existente, a cror modele semantice sunt adecvate pentru arhitectura destinaie sau aplicaia respectiv. n al doilea rnd, se poate utiliza un limbaj existent, cu restricia de a se utiliza stilurile i principiile de modelare care garanteaz o sintez eficient. n plus, aceste stiluri i principii de modelare mbuntesc documentarea proiectului i comunicarea ntre proiectani, prin producerea unui set mai redus de stiluri de descriere mai bine documentate. Pentru a se realiza o sintez de nivel nalt eficient, este necesar formularea problemelor legate de aceast sintez i dezvoltarea unor algoritmi de optimizare pentru diferite arhitecturi, care s utilizeze modele mai realiste de proiectare. Sunt necesare eforturi de proiectare pentru clasificarea arhitecturilor i elaborarea unor principii de modelare pentru diferitele arhitecturi. De asemenea, exist o lips a unor seturi de componente standard i a unor algoritmi pentru adaptarea tehnologic ntre diferite seturi de componente.

Metode de descriere a sistemelor numerice

77

Bibliografie
1. Giovanni De Micheli: Synthesis and Optimization of Digital Circuits. McGraw-Hill, 1994. 2. D. D. Gajski, N. D. Dutt, C. H. Wu, Y. L. Lin: Introduction to Chip and System Design. Kluwer Academic Publishers, 1992. 3. P. Michel, U. Lauther, P. Duzy: The Synthesis Approach to Digital System Design. Kluwer Academic Publishers, 1992. 4. D. D. Gajski, F. Vahid, S. Narayan, J. Gong: Specification and Design of Embedded Systems. P T R Prentice Hall, Englewood Cliffs, 1994. 5. D. L. Perry: VHDL. McGraw-Hill, 1991. 6. S. Mazor, P. Langstraat: A Guide to VHDL. Second Edition. Kluwer Academic Publishers, 1993. 7. N. Wirth: Lola: An Object-Oriented Logic Description Language. Technical Report 215, Institute for Computer Systems, ETH Zurich, May 1994. 8. *** EasyABEL Design Software. Data I/O Corp., San Jose, CA, 1992. 9. R. Weiss: Schematics Battle Equations for Design Representation. EDN, Dec. 19, 1991, pp. 62-68. 10. R. Beachler: Hardware Description Language and PLDs Generate Waveforms. EDN, May 23, 1991, pp. 131-140. 11. S. Carlson, E. Girczyc: Understanding Synthesis Begins with Knowing the Terminology. EDN, Sept. 3, 1992, pp. 125-131. 12. T. Yu: HDL Simulation Models. EDN, May 13, 1993, pp. 133-140. 13. J. C. Napier: Multilevel ASIC Modeling. EDN, April 29, 1993, pp. 75-80. 14. D. Patel, M. Schlag, M. Ercegovac: An Environment for the Multi-level Specification, Analysis, and Synthesis of Hardware Algorithms. Lecture Notes in Computer Science, Vol. 201: Functional Programming Languages and Computer Architecture, 1985, pp. 238-255. 15. J. P. Bantre, D. Lavenier, M. Vieillot: From High Level Programming Model to FPGA Machines. Rapport de recherche no 2240, INRIA, 1994. 16. M. Markowitz: Hands-On VHDL Design Project, Part 1: The Adventure Begins. EDN, January 7, 1993, pp. 58-67. 17. M. Markowitz: Hands-On VHDL Design Project, Part 2: Discovering the Design Foundation. EDN, January 21, 1993, pp. 74-82. 18. M. Markowitz: Hands-On VHDL Design Project, Part 3: Writing the Code. EDN, February 4, 1993, pp. 94-103. 19. M. Markowitz: Hands-On VHDL Design Project, Part 4: Simulating the Function. EDN, February 18, 1993, pp. 112-124. 20. M. Markowitz: Hands-On VHDL Design Project, Part 5: Synthesizing the Gates. EDN, March 4, 1993, pp. 105-115.

Metode de descriere a sistemelor numerice

78

21. M. Markowitz: Hands-On VHDL Design Project, Part 6: Reaching the Conclusion. EDN, March 18, 1993, pp. 207-212. 22. J. Sztipanovits, D. M. Wilkes, G. Karsai, Cs. Biegl, L. E. Lynd: The Multipgraph and Structural Adaptivity. IEEE Transactions on Signal Processing, Vol. 41, No. 8, 1993, pp. 2695-2716. 23. S. Narayan, F. Vahid., D. D. Gajski: System Specification and Synthesis with the SpecCharts Language. Proceedings of the International Conference on Computer Aided Design, 1991. 24. S. Dudani, E. Stabler: Types of Hardware Description. Proceedings of the IFIP WG 10.2 Sixth International Symposium on Computer Hardware Description Languages and their Applications, pp. 127-136. 25. B. S. Davie, G. J. Milne: The Role of Behaviour in VLSI Design Languages. Proceedings of the IFIP WG 10.2 Working Conference on From HDL Descriptions to Guaranteed Correct Circuit Designs, pp. 3-20. 26. P. Eles, K. Kuchinski, Z. Peng, A. Doboli: Specification of Timing Constraints in VHDL for High-Level Synthesis. Proceedings of ConTI '94-International Conference on Technical Informatics, vol. 5., pp. 26-36. 27. A. J. Martin: Tomorrow's Digital Hardware will be Asynchronous and Verified. Department of Computer Science, California Institute of Technology, Pasadena CA, 1993.