Sunteți pe pagina 1din 26

Arhitectura calculatoarelor - Lucrarea de laborator Nr.

PROIECTAREA CU CIRCUITE LOGICE PROGRAMABILE

1. Scopul lucrrii
Lucrarea prezint principalele tipuri de circuite programabile, etapele din cadrul procesului de proiectare utiliznd circuite logice programabile, structura sistemului CAD Xilinx WebPACK i un exemplu simplu de proiectare utiliznd acest sistem.

2. Consideraii teoretice
2.1. Circuite logice programabile
Circuitele logice programabile, cunoscute i sub forma acronimului PLD (Programmable Logic Device), sunt circuite integrate care conin un numr mare de pori sau celule a cror interconexiune poate fi configurat sau programat pentru a implementa orice funcie combinaional sau secvenial dorit. Pentru programarea circuitelor PLD se utilizeaz dou tehnici: programarea prin mti, care se efectueaz n timpul procesului de fabricaie, sau programarea de ctre utilizator, pentru care se utilizeaz echipamente de programare cu costuri reduse. Multe circuite PLD pot fi reprogramate de utilizator de multe ori, motiv pentru care ele sunt avantajoase pentru realizarea prototipurilor unui nou produs. Conexiunile programabile ntre elementele logice ale unui circuit PLD conin comutatoare realizare de obicei cu tranzistoare sau antifuzibile (uneori fuzibile). Porile logice programabile ale unui circuit PLD pot fi reprezentate n mod simplificat ca n Figura 6.1(b). n locul unor linii de intrare multiple la fiecare din aceste pori, ca n Figura 6.1(a), n reprezentarea simplificat s-a figurat o singur linie. Semnul indic o conexiune programabil a unei linii de intrare la o poart logic. Absena semnului indic faptul c respectiva conexiune a fost programat n starea deconectat.

Figura 6.1. Pori I, respectiv SAU: (a) reprezentare obinuit; (b) reprezentare simplificat pentru circuitele PLD.

Exist mai multe tipuri de circuite care sunt denumite n mod generic circuite logice programabile (PLD). Principalele tipuri sunt prezentate n continuare.

Arhitectura calculatoarelor - Lucrarea de laborator Nr. 6 2.1.1. Reele logice programabile

O reea logic programabil PLA (Programmable Logic Array) este similar ca i concept cu o memorie ROM, cu excepia faptului c nu realizeaz decodificarea complet a variabilelor i nu genereaz toi mintermii. Decodificatorul este nlocuit cu o reea de pori I care poate fi programat pentru a genera termenii produs ai variabilelor de intrare. Termenii produs sunt apoi conectai n mod selectiv cu pori SAU pentru a genera suma termenilor produs pentru funciile booleene necesare. Structura de baz a unui circuit PLA este prezentat n Figura 6.2.

Figura 6.2. Structura general a unui circuit PLA.

Un circuit PLA poate implementa n mod direct un set de funcii logice exprimate printr-un tabel de adevr. Fiecare intrare pentru care valoarea funciei este adevrat necesit un termen produs, i acestuia i corespunde o linie de pori I din primul etaj al circuitului PLA. Fiecare ieire corespunde la o linie de pori SAU din al doilea etaj al circuitului. Numrul de pori SAU corespunde cu numrul de intrri din tabela de adevr pentru care ieirea este adevrat. Dimensiunea total a circuitului PLA este egal cu suma dintre dimensiunea reelei de pori I i dimensiunea reelei de pori SAU. Din Figura 6.2 se observ c dimensiunea reelei de pori I este egal cu numrul de intrri multiplicat cu numrul diferiilor termeni produs, iar dimensiunea reelei de pori SAU este egal cu numrul de ieiri multiplicat cu numrul termenilor produs. Pentru proiectarea unui sistem digital cu un circuit PLA, nu este necesar s se indice conexiunile interne ale circuitului, ci trebuie s se specifice doar tabela de programare. Circuitele PLA pot fi programate prin mti (n timpul fabricaiei) sau pot fi programate de ctre utilizator. Circuitele PLA programate de ctre utilizator se numesc FPLA (Field Programmable Logic Array).

Figura 6.3. Structura general a unui circuit PAL.

O alt categorie de reele logice programabile sunt circuitele PAL (Programmable Array Logic), care conin o reea de pori I programabil, dar reeaua de pori SAU are conexiuni fixe (Figura 6.3). Fiecare linie de ieire este conectat la un set fix de linii ale reelei de pori I. O asemenea ieire

Arhitectura calculatoarelor - Lucrarea de laborator Nr. 6

a circuitului PAL poate implementa o expresie pe dou nivele coninnd cel mult opt termeni. Avantajele circuitelor PAL sunt simplitatea utilizrii n anumite aplicaii i viteza mai ridicat. Aceste circuite sunt ns mai puin flexibile dect circuitele PLA. Exist i circuite PLA sau PAL care conin bistabile ataate prin conexiuni programabile la ieirile reelei de pori SAU, ceea ce permite implementarea unor circuite secveniale de dimensiuni medii. Aceste circuite sunt cunoscute i cu denumirea de circuite logice programabile simple (SPLD Simple Programmable Logic Device). 2.1.2. Circuite CPLD Circuitele logice programabile complexe (CPLD - Complex Programmable Logic Device) sunt circuite PLD avnd o densitate mai ridicat. Ele conin un numr de blocuri funcionale, asemntoare unor circuite PLD, fiecare bloc fiind compus din mai multe macrocelule (Figura 6.4). Exist de asemenea o matrice de rutare pentru interconectarea blocurilor. Funciile logice simple pot fi implementate n cadrul uni singur bloc. Funciile mai complexe pot necesita mai multe blocuri, care vor fi interconectate prin matricea de rutare.

Figura 6.4. Structura general a unui circuit CPLD.

2.1.3. Circuite FPGA Circuitele FPGA (Field Programmable Gate Array) au fost introduse n anul 1985 de compania Xilinx. De atunci au fost elaborate diferite tipuri de circuite FPGA de un numr de alte companii ca Actel, Altera, Atmel, Texas Instruments etc. Un circuit FPGA const dintr-o reea bidimensional de celule sau blocuri logice. De obicei, fiecare bloc logic poate fi programat pentru a implementa orice funcie logic a intrrilor sale. De aceea, aceste blocuri sunt numite de obicei blocuri logice configurabile (Configurable Logic Block - CLB). Cele mai multe blocuri logice conin de asemenea unul sau dou bistabile. Canalele i blocurile de comutare dintre aceste blocuri conin resurse de interconectare, dup cum se ilustreaz n Figura 6.5. Aceste resurse conin de obicei segmente de interconectare de diferite lungimi. Interconexiunile conin comutatoare programabile cu rolul de a conecta blocurile logice la segmentele de interconectare, sau un segment de interconectare la altul. n plus, exist celule de I/E la periferia reelei, care pot fi programate ca intrri sau ieiri.

Arhitectura calculatoarelor - Lucrarea de laborator Nr. 6

Figura 6.5. Structura unui circuit FPGA tipic.

Din punctul de vedere al tipului conexiunilor programabile, exist dou categorii principale de circuite FPGA: circuite cu memorii SRAM i circuite cu antifuzibile. Circuite cu memorii SRAM. Programarea acestor circuite se realizeaz prin celule de memorie static. Logica este implementat cu ajutorul unor tabele (lookup table) realizate din celulele de memorie, intrrile funciilor controlnd liniile de adres. Fiecare tabel de 2n celule de memorie implementeaz orice funcie cu n intrri. Una sau mai multe tabele, combinate cu bistabile, formeaz un bloc logic configurabil. Aceste blocuri sunt aranjate ntr-un tablou bidimensional, segmentele de interconectare formnd canale, similar cu reelele de pori. Segmentele se conecteaz la pinii blocurile logice din canale i la alte segmente din blocurile de comutare prin intermediul tranzistoarelor de trecere controlate de celule ale memoriei de configurare. O secven de configurare pentru circuitele cu memorii SRAM const dintr-un singur cuvnt lung de programare. Logica din circuit ncarc cuvntul de programare, pe care l citete serial dintr-o memorie extern de fiecare dat cnd circuitul este alimentat. Biii acestui cuvnt seteaz valorile tuturor celulelor memoriei de configurare din circuit, setnd astfel valorile tabelelor i selectnd segmentele care se vor conecta ntre ele. Circuitele cu memorii SRAM sunt reprogramabile. Ele pot fi actualizate n sistem, punnd la dispoziia proiectanilor noi opiuni i posibiliti de proiectare. Din aceast categorie de circuite FPGA fac parte cele ale firmelor Xilinx, Altera, AT&T. Circuite cu antifuzibile. Un antifuzibil este un dispozitiv cu dou terminale care n mod normal se afl n starea de nalt impedan, iar atunci cnd este expus la o tensiune ridicat, trece n starea cu rezisten redus (300-500 ). Antifuzibilele au dimensiuni reduse, astfel nct o arhitectur bazat pe antifuzibile poate conine sute de mii sau milioane de antifuzibile. Pentru simplificarea arhitecturii i a programrii, circuitele FPGA bazate pe antifuzibile constau de obicei din rnduri de elemente logice configurabile cu canale de interconectare ntre ele, ca i reelele de pori tradiionale. Un bloc logic poate fi programat prin conectarea pinilor si de intrare la valori fixe sau la reele de interconectare. Exist antifuzibile la fiecare punct de intersecie ntre interconexiuni i pini din canal i la toate punctele de intersecie ntre interconexiuni n locurile n care canalele se intersecteaz. Din categoria circuitelor FPGA cu antifuzibile fac parte circuitele firmelor Actel, Quicklogic, Cypress.

2.2. Procesul de proiectare cu circuite programabile


2.2.1. Fluxul de proiectare Pentru proiectarea sistemelor digitale utiliznd circuite programabile, cum sunt circuitele FPGA i CPLD, se utilizeaz pachete de programe de proiectare asistat de calculator (CAD Com-

Arhitectura calculatoarelor - Lucrarea de laborator Nr. 6

puter Aided Design). Aceste pachete de programe asist proiectantul n toate etapele procesului de proiectare. Astfel, majoritatea pachetelor CAD pentru circuitele programabile asigur urmtoarele funcii principale: Specificarea (descrierea) sistemului digital; Sinteza descrierii, deci transformarea acesteia ntr-o list de conexiuni coninnd pori elementare i interconexiunile dintre ele; Simularea funcionrii sistemului pe baza listei de conexiuni obinute, nainte de implementarea ntr-un anumit circuit; Implementarea sistemului ntr-un circuit prin adaptarea listei de conexiuni pentru a se utiliza n mod eficient resursele disponibile ale circuitului; Configurarea (programarea) circuitului pentru ca acesta s realizeze funcia dorit. Figura 6.6 ilustreaz etapele din cadrul procesului de proiectare a sistemelor digitale utiliznd circuite programabile.

Figura 6.6. Fluxul de proiectare a sistemelor digitale utiliznd circuite programabile.

n continuare sunt descrise mai detaliat principalele etape de proiectare. 2.2.1.1. Descrierea sistemului Exist mai multe metode pentru descrierea sistemelor digitale. n figura 6.6 sunt indicate principalele metode: prin scheme logice, prin limbaje de descriere hardware (HDL Hardware Description Language) i prin diagrame de stare. n mod tradiional, sistemele digitale sunt descrise prin scheme logice. Pentru aceasta se utilizeaz un editor schematic, care permite specificarea componentelor care trebuie utilizate i a modului n care acestea trebuie interconectate. Aceast metod este cea care va fi utilizat n primul rnd n

Arhitectura calculatoarelor - Lucrarea de laborator Nr. 6

lucrrile urmtoare i este ilustrat n Figura 6.7. Circuitul din aceast figur detecteaz secvena binar 1010 aplicat la intrarea X. La detectarea acestei secvene, ieirea Z va fi setat la 1 logic.

Figura 6.7. Etapele descrierii unui sistem digital utiliznd scheme: (1) Selectarea i amplasarea componentelor; (2) Conectarea componentelor; (3) Adugarea porturilor de I/E.

Exist urmtoarele etape principale la utilizarea schemelor logice pentru proiectarea unui sistem digital: 1. n cadrul unui editor schematic se selecteaz componentele necesare dintr-o bibliotec de componente. Asemenea componente pot fi, de exemplu, pori elementare, multiplexoare, decodificatoare, numrtoare, circuite aritmetice etc. n funcie de circuitul care va utilizat, proiectantul trebuie s selecteze o anumit bibliotec de componente, deoarece exist biblioteci care sunt specifice diferiilor productori de circuite programabile i diferitelor familii de circuite. Circuitele dintr-o anumit familie difer prin capacitatea lor, viteza i capsula utilizat. n aceast etap, nu este ns necesar specificarea exact a circuitului care va utilizat dintr-o anumit familie. 2. Componentele selectate i plasate n cadrul schemei sunt interconectate prin fire de legtur. Proiectantul realizeaz interconectarea componentelor pentru a obine configuraia necesar pentru o anumit aplicaie. 3. Se adaug i se eticheteaz porturile de I/E. Aceste porturi definesc intrrile i ieirile sistemului, permind aplicarea semnalelor la pinii de intrare ai sistemului digital i preluarea semnalelor de ieire generate de sistem la pinii de ieire. Semnalele de intrare sunt aplicate la intrrile sistemului digital prin intermediul unor buffere de intrare, iar semnalele de ieire sunt preluate de la sistemul digital prin intermediul unor buffere de ieire. Aceste buffere izoleaz

Arhitectura calculatoarelor - Lucrarea de laborator Nr. 6

sistemul digital fa de exterior. n unele cazuri, bufferele de I/E sunt adugate n mod automat de sistemul CAD. Pe lng schemele logice, o alt posibilitate pentru descrierea sistemelor digitale este cu ajutorul limbajelor de descriere hardware. Aceste limbaje sunt din ce n ce mai utilizate, fiind preferate pentru descrierea sistemelor cu complexitate mai ridicat, datorit urmtoarelor avantaje principale: Posibilitatea descrierii funcionale a sistemelor, aceasta fiind o descriere la un nivel mai nalt, fr detalierea structurii la nivelul componentelor simple sau a porilor elementare. Astfel, timpul necesar pentru descrierea sistemelor complexe se reduce n mod semnificativ. Independena descrierilor HDL fa de diferitele tipuri de circuite. n timp ce schemele logice sunt realizate cu componente de bibliotec specifice unei anumite familii de circuite, descrierile HDL sunt complet independente de un anumit circuit, astfel nct aceeai descriere se poate utiliza pentru implementarea sistemului ntr-un anumit circuit FPGA, dar i ntr-un alt tip de circuit programabil, de exemplu, ntr-o reea logic programabil. Posibilitatea modificrii mai simple a descrierii HDL a unui sistem, datorit faptului c o asemenea descriere reprezint n acelai timp o documentare a sistemului.

Figura 6.8. Descrierea n limbajul VHDL a circuitului din Figura 6.7.

Exist diferite limbaje de descriere hardware, dar mai utilizat este limbajul VHDL (VHSIC Hardware Description Language), VHSIC fiind acronimul pentru Very High Speed Integrated Circuit. Pe lng acest limbaj, pentru proiectarea cu circuite FPGA se mai utilizeaz limbajul Verilog. Pentru proiectarea cu circuite CPLD, un limbaj utilizat n mod frecvent este ABEL (Advanced Boolean Expression Language). Limbajele VHDL i Verilog sunt standardizate de institutul IEEE. Figura 6.8 prezint o descriere posibil n limbajul VHDL a circuitului ilustrat n Figura 6.7. Pentru descrierea automatelor cu stri finite se utilizeaz pe scar larg diagramele de stare. Sistemele CAD pentru proiectarea cu circuite programabile conin de obicei editoare pentru diagramele de stare, care permit specificarea sub form grafic a strilor sistemului, a tranziiilor ntre stri i a semnalelor de ieire care trebuie generate n fiecare stare. O diagram de stare va fi compilat de ctre sistemul CAD ntr-o reprezentare intern sau ntr-o descriere HDL, care poate fi simulat i utilizat apoi pentru implementarea automatului ntr-un anumit circuit. n Figura 6.9 se prezint o dia-

Arhitectura calculatoarelor - Lucrarea de laborator Nr. 6

gram de stare echivalent cu circuitul ilustrat n Figura 6.7 i descrierea n limbajul VHDL din Figura 6.8.

Figura 6.9. Diagrama de stare echivalent cu circuitul reprezentat prin schema din Figura 6.7 i descrierea n limbajul VHDL din Figura 6.8.

2.2.1.2. Sinteza sistemului Dup descrierea sistemului digital, etapa urmtoare din cadrul procesului de proiectare este cea de sintez a sistemului. Sinteza const n translatarea schemei logice, a descrierii HDL sau a diagramei de stare ntr-o list de conexiuni. Aceast translatare se realizeaz cu ajutorul unui program de sintez din cadrul sistemului CAD. Lista de conexiuni (netlist) este o descriere compact a sistemului digital sub form textual, n care sunt specificate componentele sistemului, interconexiunile dintre acestea i pinii de intrare/ieire. Aceast list este prelucrat de celelalte componente ale sistemului CAD pentru realizarea etapelor urmtoare din cadrul procesului de proiectare. Exist diferite formate pentru listele de conexiuni, cel mai utilizat fiind formatul EDIF (Electronic Digital Interchange Format), acesta reprezentnd un standard industrial. Pe lng acest format standard, se pot utiliza diferite formate care sunt specifice anumitor productori de circuite. Un exemplu este formatul XNF (Xilinx Netlist Format), care este formatul propriu al firmei Xilinx, cel mai important productor de circuite programabile de tip FPGA i CPLD. O alt posibilitate este utilizarea unui limbaj de descriere hardware ca format pentru lista de conexiuni. De exemplu, sistemul CAD poate utiliza o reprezentare structural a sistemului proiectat ntr-un limbaj de descriere hardware specificat de proiectant. Relaia dintre schema logic a unui circuit simplu i un format posibil al unei liste de conexiuni este ilustrat n Figura 6.10. n prima parte a listei de conexiuni sunt declarate componentele din cadrul schemei, iar n a doua parte sunt specificate conexiunile dintre componente. Denumirile componentelor sunt G1..G7, iar denumirile conexiunilor sunt N1..N10. Aceste denumiri sunt fie cele specificate de proiectant, fie cele asignate n mod automat de sistemul CAD. n circuitul ilustrat n Figura 6.10 exist dou inversoare (G1 i G2), dou pori I cu dou intrri (G3 i G4), o poart I cu patru intrri (G7) i dou bistabile JK (G5 i G6). Inversoarele au un pin de intrare IN, un pin de ieire OUT, un pin de alimentare Vcc i un pin de mas GND. Similar, porile I cu dou intrri au doi pini de intrare IN1 i IN2, un pin de ieire OUT, un pin de alimentare i un pin de mas. Bistabilele au doi pini pentru intrrile de date J i K, un pin pentru intrarea de ceas C i un pin pentru ieirea Q, pe lng pinii de alimentare i mas. Pentru simplitate, pinii i semnalele de alimentare i mas au fost omii n aceast figur. O conexiune este indicat prin listarea tuturor pinilor care sunt conectai mpreun. Semnalele de intrare X i CLK sunt conectate la pinii de intrare cu aceleai nume ai circuitului, iar semnalul de ieire Z este conectat la pinul de ieire al circuitului.

Arhitectura calculatoarelor - Lucrarea de laborator Nr. 6

Figura 6.10. Relaia dintre schema logic i lista de conexiuni pentru circuitul din Figura 6.7.

Proiectantul poate specifica diferite criterii de optimizare de care s se in cont n procesul de sintez. Exemple de asemenea opiuni sunt: minimizarea numrul de pori elementare necesare, obinerea vitezei maxime de funcionare a circuitului, minimizarea puterii consumate. Proiectantul poate experimenta cu diferite criterii de optimizare pentru a obine soluia cea mai convenabil pentru aplicaia respectiv. 2.2.1.3. Simularea funcional n aceast etap se utilizeaz un program simulator pentru verificarea funcionrii sistemului proiectat, nainte de implementarea acestuia ntr-un circuit programabil. Aceast verificare se refer doar la aspectele funcionale ale sistemului, fr a se lua n considerare ntrzierile semnalelor, care vor fi cunoscute numai dup implementare. Pentru verificarea funcional proiectantul furnizeaz simulatorului mai multe combinaii ale valorilor semnalelor de intrare, o asemenea combinaie fiind numit vector de test. De asemenea, proiectantul poate specifica valorile semnalelor de ieire care trebuie generate de sistem pentru fiecare vector de test. Simulatorul aplic pe rnd cte un vector de test la intrrile sistemului, determin semnalele de ieire care sunt generate de sistem i le compar cu valorile acestor semnale care au fost specificate de proiectant. n cazul n care apar diferene, simulatorul afieaz mesaje care indic diferenele aprute. Proiectantul va efectua modificrile necesare ale descrierii sistemului pentru a corecta erorile aprute, va efectua sinteza descrierii modificate i va executa din nou simularea funcional. Aceste etape vor fi repetate pn cnd sistemul va funciona conform cerinelor. Figura 6.11 ilustreaz modul n care pot fi vizualizate pe ecranul calculatorului semnalele de intrare i de ieire ale circuitului detector de secven utilizat ca exemplu n seciunile precedente la simularea funcional a circuitului.

10

Arhitectura calculatoarelor - Lucrarea de laborator Nr. 6

Figura 6.11. Semnalele de intrare i de ieire ale circuitului din Figura 6.7 vizualizate la simularea funcional a circuitului.

2.2.1.4. Maparea tehnologic Etapele urmtoare din cadrul procesului de sintez realizeaz implementarea sistemului proiectat ntr-un circuit programabil (FPGA sau CPLD). Prima etap din cadrul implementrii este cea de mapare tehnologic. Aceast etap const dintr-o serie de operaii care realizeaz prelucrarea listei de conexiuni i adaptarea acesteia la particularitile i resursele disponibile ale circuitului utilizat pentru implementare. Operaiile executate n aceast etap difer n funcie de sistemul de proiectare. Cele mai obinuite operaii sunt: adaptarea la elementele fizice ale circuitului, optimizarea i verificarea regulilor de proiectare (de exemplu, testarea depirii numrului pinilor de I/E disponibili n cadrul circuitului). n timpul acesteia etape, proiectantul selecteaz tipul circuitului programabil care va fi utilizat, capsula circuitului integrat, viteza i alte opiuni specifice circuitului respectiv. n urma execuiei operaiilor din etapa de mapare tehnologic se genereaz un raport detaliat al rezultatelor tuturor programelor executate. Pe lng mesaje de eroare i de avertizare, se creaz de obicei o list cu resursele utilizate din cadrul circuitului. Figura 6.12 ilustreaz etapa de mapare tehnologic pentru circuitul utilizat ca exemplu. Dup cum se observ, schema circuitului a fost modificat pentru a utiliza bistabile D n locul bistabilelor JK, iar porile I au fost nlocuite cu pori I-NU. Se menioneaz c aceste transformri sunt efectuate asupra listei de conexiuni care s-a obinut n urma etapei de sintez, schema din Figura 6.12 fiind doar ilustrativ.

Figura 6.12. Ilustrarea etapei de mapare tehnologic pentru circuitul din Figura 6.7.

Arhitectura calculatoarelor - Lucrarea de laborator Nr. 6 2.2.1.5. Plasarea i rutarea

11

Aceste operaii sunt executate n cazul utilizrii unui circuit FPGA pentru implementare. Pentru proiectarea cu circuite CPLD, operaia echivalent este numit adaptare (fitting). Plasarea este procesul de selectare a unor module sau blocuri logice ale circuitului programabil care vor fi utilizate pentru implementarea diferitelor funcii ale sistemului digital. Rutarea const n interconectarea acestor blocuri logice utiliznd resursele de rutare disponibile ale circuitului. Majoritatea sistemelor CAD realizeaz operaiile de plasare i rutare n mod automat, astfel nct utilizatorul nu trebuie s cunoasc detaliile arhitecturii circuitului utilizat pentru implementare. Anumite sisteme permit utilizatorilor experi plasarea i rutarea manual a unor poriuni critice ale sistemului digital pentru a obine performane superioare. Figura 6.13 ilustreaz plasarea i rutarea circuitului rezultat n urma maprii tehnologice a circuitului utilizat ca exemplu. Dup selectarea blocurilor logice care vor fi utilizate pentru implementarea circuitului, acestea se configureaz pentru implementarea unor poriuni ale schemei. Pentru interconectarea semnalelor generate de diferitele blocuri logice se utilizeaz resursele de rutare disponibile. Aceste resurse sunt indicate n figur prin linii orizontale i verticale. Intrrile i ieirile utilizate ale blocurilor logice se conecteaz la liniile de rutare prin puncte de conexiune programabile (indicate n figur prin cercuri), iar liniile de rutare sunt interconectate cu ajutorul unor comutatoare programabile.

Figura 6.13. Ilustrarea etapelor de plasare i rutare pentru circuitul din Figura 6.12.

Operaiile de plasare i rutare pot necesita un timp ridicat pentru execuie n cazul sistemelor digitale complexe, deoarece sunt necesare operaii complexe pentru determinarea i configurarea blocurilor logice necesare din cadrul circuitului programabil, interconectarea corect a acestora i verificarea faptului c sunt asigurate cerinele de performan specificate n timpul proiectrii.

12

Arhitectura calculatoarelor - Lucrarea de laborator Nr. 6 2.2.1.6. Analiza de timp

Pachetele de programe CAD pentru proiectarea sistemelor digitale conin de obicei un program numit analizor de timp, care poate furniza informaii despre ntrzierile semnalelor. Aceste informaii se refer att la ntrzierile introduse de blocurile logice, ct i la ntrzierile datorate interconexiunilor. Analizorul poate afia aceste informaii n diferite moduri, de exemplu, prin ordonarea conexiunilor n ordinea descresctoare a ntrzierilor semnalelor. Proiectantul poate utiliza informaiile despre ntrzierile semnalelor pentru a realiza o nou simulare a sistemului, n care s se in cont de aceste ntrzieri. Aceast operaie prin care se furnizeaz simulatorului informaii detaliate despre ntrzierile semnalelor se numete adnotare invers (back-annotation). 2.2.1.7. Configurarea sau programarea circuitului Operaia de configurare se refer la circuitele programabile bazate pe memorii volatile SRAM (Static Random Access Memory) i const din ncrcarea informaiilor de configurare n memoria circuitului. Operaia de programare se refer la circuitele programabile bazate pe memorii nevolatile (cum sunt circuitele care conin antifuzibile). Aceast operaie se execut similar cu cea de configurare, dar informaiile de configurare sunt pstrate i dup ntreruperea tensiunii de alimentare. La sfritul operaiilor de plasare i rutare, se genereaz un fiier care conine toate informaiile necesare pentru configurarea circuitului. Aceste informaii se refer att la configurarea blocurilor logice ale circuitului, ct i la specificarea interconexiunilor dintre blocurile logice. Fiierul n care se nscriu aceste informaii conine, n principiu, un ir de bii (bitstream), fiecare bit indicnd starea nchis sau deschis a unui comutator. Circuitele programabile conin un numr mare de asemenea comutatoare, un comutator fiind realizat sub forma unui tranzistor sau a unei celule de memorie. Un bit de 1 din irul de bii va determina nchiderea unui comutator i, deci, stabilirea unei conexiuni. Biii din acest fiier de configurare sunt aranjai ntr-un anumit format pentru a realiza o coresponden ntre un bit i comutatorul corespunztor. Coninutul fiierului de configurare se transfer la circuitul programabil, aflat de obicei pe o plac de circuit imprimat mpreun cu alte circuite. Comutatoarele circuitului se nchid sau rmn deschise n funcie de valorile biilor din irul de configurare. Dup terminarea configurrii, circuitul va funciona conform descrierii sistemului digital care a fost implementat. Din cauza memoriei volatile, circuitul trebuie configurat din nou dup fiecare ntrerupere a tensiunii de alimentare. Informaiile de configurare pot fi pstrate ntr-o memorie nevolatil PROM (Programmable Read Only Memory), existnd posibilitatea configurrii automate a circuitului din aceast memorie nevolatil la aplicarea tensiunii de alimentare. Configurarea sau programarea se pot realiza utiliznd interfaa paralel a calculatorului. Pentru aceasta, este necesar ca placa cu circuitul programabil s conin un conector pentru interfaa paralel, pentru transfer utilizndu-se un cablu paralel. Figura 6.14 ilustreaz un cablu paralel obinuit, care conine conectori cu 25 de contacte DB25.

Figura 6.14. Cablu paralel care poate fi utilizat pentru configurarea circuitelor programabile.

O alt posibilitate este utilizarea unui cablu special i a unei metodologii de configurare propuse de organizaia JTAG (Joint Test Advisory Group). Aceast metodologie, cunoscut i sub numele de Boundary-Scan, a fost standardizat de institutele IEEE (Institute of Electrical and Electronic Engineers) i ANSI (American National Standards Institute) ca standardul 1149.1, reprezentnd un set de reguli de proiectare care faciliteaz configurarea sau programarea circuitelor, testarea i depanarea acestora. Un capt al cablului JTAG se conecteaz la interfaa paralel a

Arhitectura calculatoarelor - Lucrarea de laborator Nr. 6

13

calculatorului, iar cellalt capt se conecteaz la un numr de 5 pini speciali de pe placa circuitului programabil. Informaiile de configurare sunt preluate n paralel de la calculator i sunt transferate serial (bit cu bit) la circuitul programabil. Un asemenea cablu permite i testarea sistemului digital implementat prin citirea unor informaii (valori ale semnalelor sau coninutul unor locaii de memorie) de la circuitul programabil n timpul funcionrii, transferul acestora la calculator i vizualizarea lor pe ecran. Figura 6.15 ilustreaz un cablu JTAG al firmei Xilinx (Parallel Cable IV). Exist mai multe variante de cabluri JTAG produse de aceast firm. Cablul MultiLINX poate fi conectat fie la interfaa serial RS232 a calculatorului, fie la interfaa USB, prin intermediul unui cablu serial sau al unui cablu USB. Dispozitivul MultiPRO poate fi utilizat att ca i cablu de configurare, ct i ca programator pentru memorii PROM i circuite CPLD CoolRunner II cu ajutorul unor adaptoare. Cablurile Parallel Cable III i Parallel Cable IV se conecteaz la interfaa paralel a calculatorului. Cablul Parallel Cable IV permite o rat de transfer superioar comparativ cu cablul Parallel Cable III (de pn la 5 MB/s fa de 500 KB/s).

Figura 6.15. Cablul paralel JTAG Parallel Cable IV al firmei Xilinx.

Figura 6.16 ilustreaz conectarea unui cablu JTAG n modul JTAG (sau Boundary-Scan) la un sistem de dezvoltare coninnd unul sau mai multe circuite programabile. Firele de legtur se conecteaz cu un capt la pinii JTAG ai cablului, iar cu cellalt capt la pinii JTAG corespunztori ai plcii de dezvoltare. Un asemenea cablu poate fi utilizat fie pentru configurarea unui singur circuit programabil, fie a mai multor circuite conectate ntr-un lan Boundary-Scan. De menionat c un cablu JTAG poate fi utilizat de obicei i pentru configurarea circuitelor n alte moduri dect modul JTAG, cum sunt modurile Slave Serial sau Slave Parallel.

Figura 6.16. Conectarea unui cablu JTAG la un sistem de dezvoltare n modul Boundary-Scan.

Tabelul 6.1 indic denumirea i semnificaia semnalelor JTAG care sunt utilizate pentru configurarea circuitelor programabile.

14

Arhitectura calculatoarelor - Lucrarea de laborator Nr. 6


Tabelul 6.1. Denumirea i semnificaia semnalelor JTAG utilizate pentru configurarea circuitelor.
Denumire VCC GND TCK TDO TDI TMS Semnificaie Alimentare - Tensiunea de alimentare (5 V, 3,3 V sau 2,5 V) Mas - Referina pentru masa electric Test Clock - Semnal de ceas pentru circuitele programabile Test Data Out - Semnal pentru citirea datelor de la circuitele programabile Test Data In - Semnal pentru transmiterea instruciunilor i datelor la circuitele programabile Test Mode Select - Semnal decodificat de controlerul JTAG pentru controlul operaiilor

2.2.1.8. Depanarea sistemului n aceast ultim etap a procesului de proiectare se verific funcionarea sistemului digital proiectat n condiii reale. O funcionare necorespunztoare se poate datora nerespectrii specificaiilor de proiectare, a specificaiilor circuitului utilizat pentru implementare, a unor aspecte legate de ntrzierea semnalelor etc. Depanarea poate fi simplificat dac circuitul se configureaz astfel nct s conin unele module speciale care permit citirea valorii unor semnale n timpul funcionrii i transferul acestor informaii la calculator, utiliznd un cablu JTAG i un program special pentru vizualizarea semnalelor dorite.

2.3. Sistemul de proiectare Xilinx WebPACK ISE


Pachetul de programe WebPACK ISE al firmei Xilinx reprezint un mediu integrat pentru proiectarea sistemelor digitale utiliznd circuite FPGA sau CPLD produse de aceast firm. Acest pachet conine un subset al sistemului de proiectare Xilinx Foundation ISE. Pentru descrierea sistemelor digitale, proiectantul poate utiliza scheme, limbaje de descriere (VHDL sau Verilog pentru circuitele FPGA, ABEL pentru circuitele CPLD), sau diagrame de stare. Este posibil utilizarea combinat a acestor metode pentru descrierea diferitelor componente ale aceluiai sistem digital. Pachetul de programe WebPACK este disponibil gratuit de pe paginile Web ale firmei Xilinx. Pentru transferul pachetului este necesar nregistrarea prealabil la adresa: http://www.xilinx.com/xlnx/xil_entry2.jsp?sMode=login&group=webpack Se alege un identificator i o parol, dup care va fi permis accesul la pagina de pe care se poate transfera pachetul, adresa acestei pagini fiind: http://www.xilinx.com/webpack/index.html Pentru simularea descrierilor, sistemul WebPACK conine o versiune a simulatorului ModelSim al firmei Model Technology (http://www.model.com), denumit MXE (ModelSim Xilinx Edition). Acest simulator permite simularea funcional a descrierilor nainte de sintez, sau simularea dup procesul de implementare pentru verificarea ntrzierii semnalelor. Sistemul WebPACK conine de asemenea o interfa grafic pentru specificarea unor vectori de test. Pe baza acestora se genereaz un banc de test sub forma unui fiier HDL, care va fi compilat mpreun cu descrierea sistemului digital pentru simularea funcionrii acestuia. Sistemul WebPACK permite utilizarea urmtoarelor tipuri de circuite FPGA i CPLD Xilinx: Circuite FPGA din familia Spartan: Spartan-2, Spartan-2E; Circuite FPGA din familia Virtex: Virtex, Virtex-E, Virtex-2, Virtex-2 Pro; Circuite CPLD din familia XC9500: XC9500, XC9500XL, XC9500XV; Circuite CPLD din familia CoolRunner: CoolRunner, CoolRunner-2.

Arhitectura calculatoarelor - Lucrarea de laborator Nr. 6 2.3.1. Structura sistemului WebPACK Figura 6.17 prezint principalele module software ale sistemului de proiectare WebPACK.

15

Figura 6.17. Structura sistemului de proiectare Xilinx WebPACK.

2.3.2. Prezentarea modulelor Pentru proiectarea unui sistem digital cu ajutorul pachetului WebPACK, trebuie s se creeze mai nti un proiect. Acestuia i se asociaz un fiier care va conine informaiile principale despre sistemul proiectat: fiierele care conin descrierea sistemului digital, tipul circuitului care va fi utilizat pentru implementare etc. Toate fiierele care conin descrierea sistemului digital i cele care vor fi generate n diferitele etape ale procesului de proiectare se pstreaz ntr-un director separat pe disc. 2.3.2.1. Interfaa grafic Project Navigator Programele care compun sistemul de proiectare WebPACK pot fi lansate din fereastra unei interfee grafice, numit Project Navigator, care coordoneaz procesele i fiierele asociate cu un anumit proiect. Acest navigator vizualizeaz fiierele de intrare ale proiectului, fiierele intermediare sau de ieire generate pe parcursul etapelor de proiectare, procesele care pot fi executate asupra diferitelor fiiere i mesajele generate de programele executate. Ecranul interfeei grafice Project Navigator este mprit n patru ferestre principale, dup cum se ilustreaz n Figura 6.18. n fereastra fiierelor surs se afieaz toate fiierele surs care au fost incluse n proiectul curent. Prin execuia unui clic dublu pe numele unui fiier din aceast fereas-

16

Arhitectura calculatoarelor - Lucrarea de laborator Nr. 6

tr se va deschide fiierul respectiv de ctre modulul CAD corespunztor. Fereastra proceselor indic toate procesele care sunt disponibile pentru un anumit tip de fiier surs. Execuia unui clic dublu pe numele unui proces va lansa n execuie procesul respectiv. Fereastra editorului HDL afieaz coninutul fiierului surs selectat, coninnd descrierea unei componente digitale ntr-un limbaj de descriere hardware. Coninutul fiierului poate fi editat n aceast fereastr. n fereastra consolei se afieaz toate mesajele care indic starea execuiei unui proces, inclusiv mesajele de avertisment sau de eroare care sunt generate n urma execuiei. Pe lng aceste ferestre principale, interfaa Project Navigator poate deschide i alte ferestre necesare pentru unele aplicaii.

Figura 6.18. Ecranul principal al interfeei grafice Project Navigator.

2.3.2.2. Modulele pentru descrierea sistemului Modulele pentru descrierea sistemului digital cuprind editorul schematic ECS (Engineering Capture System), editorul HDL pentru limbaje de descriere hardware i editorul pentru diagrame de stare StateCAD. Editorul schematic utilizeaz un modul care conine primitivele de bibliotec pentru circuitele FPGA i CPLD care pot fi utilizate pentru implementarea sistemului digital. Editorul HDL permite editarea fiierelor surs care conin descrierea sistemului digital n limbajul VHDL sau Verilog. Editorul StateCAD permite descrierea unor automate cu stri finite utiliznd diagrame de stare. Utilizatorul poate desena strile automatului, tranziiile ntre stri i poate specifica semnalele de ieire care trebuie generate n fiecare stare. Sistemul digital poate fi descris utiliznd mai multe metode, de exemplu, prin scheme i limbaje de descriere hardware. Schemele i diagramele de stare vor fi compilate n descrieri HDL care pot fi simulate pentru verificarea funcional a sistemului proiectat. Aceste descrieri vor fi utilizate n urmtoarele etape de proiectare. 2.3.2.3. Modulul HDL Bencher Modulul HDL Bencher permite testarea mai simpl a sistemului digital. Cu ajutorul acestui modul, utilizatorul poate introduce semnalele de intrare sub form grafic, ca diagrame de timp. Pe baza acestor semnale se va genera un banc de test (testbench) sub forma unei descrieri HDL, descri-

Arhitectura calculatoarelor - Lucrarea de laborator Nr. 6

17

ere care poate fi utilizat pentru simularea funcionrii sistemului digital. Utilizatorul poate specifica i rezultatele ateptate ale simulrii, ceea ce permite simulatorului s afieze mesaje de avertisment dac rezultatele obinute prin simulare nu coincid cu cele ateptate. 2.3.2.4. Simulatoarele MXE i StateBench Simulatorul ModelSim Xilinx Edition (MXE) permite att o simulare funcional a sistemului digital proiectat, ct i o simulare care ine cont de ntrzierile semnalelor. Acest simulator utilizeaz biblioteci pentru circuitele programabile care pot fi utilizate pentru implementare, aceste biblioteci fiind precompilate. Descrierea sistemului digital care trebuie testat i bancul de test generat pe baza vectorilor de test sunt compilate, rezultatul compilrii fiind utilizat pentru simularea sistemului. Simularea funcional a sistemului digital este executat nainte de etapa de sintez. Dup implementarea ntr-un circuit programabil se poate realiza o simulare temporal, adugnd informaiile despre ntrzierile introduse de ctre blocurile logice i cele datorate interconexiunilor. Pentru simularea funcionrii automatelor de stare descrise cu ajutorul editorului StateCAD se poate utiliza simulatorul StateBench. Acest simulator permite i crearea unor bancuri de test, fie n mod interactiv, fie n mod automat. Dup crearea unui banc de test, se poate simula funcionarea automatului utiliznd bancul de test creat. 2.3.2.5. Modulele pentru sintez Aceste module realizeaz sinteza descrierii sistemului digital, genernd o reprezentare intern a sistemului sub forma unei liste de conexiuni. Rezultatele sintezei sunt controlate prin specificarea diferitelor proprieti (opiuni). Una din proprietile specificate n mod obinuit este cea care indic modul n care se dorete optimizarea rezultatelor sintezei, din punct de vedere al resurselor utilizate sau al vitezei de funcionare. O alt proprietate este cea care indic efortul de optimizare, afectnd timpul care va fi necesar pentru execuia procesului de sintez. Modulul de sintez care este integrat n cadrul sistemului WebPACK este XST (Xilinx Synthesis Technology). Pe lng acest modul, se pot utiliza urmtoarele module de sintez pentru care exist interfee integrate n cadrul sistemului: FPGA Express (Synopsys, Inc.), Synplify/Synplify Pro (Synplicity, Inc.) sau LeonardoSpectrum (Exemplar Logic, Inc.). Aceste module nu fac parte ns din sistemul WebPACK i trebuie instalate separat. 2.3.2.6. Modulele pentru implementare O parte din modulele utilizate pentru implementarea sistemului digital sunt diferite n funcie de tipul circuitului programabil utilizat: CPLD sau FPGA. Pentru ambele tipuri de circuite, prima etap de implementare este cea de translatare. n aceast etap se ruleaz programul NGDBuild, care prelucreaz lista de conexiuni obinut n etapa de sintez (sau listele de conexiuni n cazul n care descrierea sistemului digital este coninut n mai multe fiiere surs). Aceste liste de conexiuni, care pot fi n format XNF sau EDIF, sunt convertite n formatul Xilinx Native Generic Database (NGD). Pe lng aceast conversie, programul NGDBuild realizeaz verificarea constrngerilor de temporizare specificate de proiectant i verificarea regulilor de proiectare (DRC Design Rule Check). Programul genereaz un raport care conine eventualele mesaje de eroare sau de avertismente despre rezultatele acestor verificri. n cazul proiectrii cu circuite CPLD, urmtoarea etap de implementare este cea de adaptare (Fitting), executat de modulul CPLD Fitter. Acest modul minimizeaz logica utilizat pentru descrierea sistemului i realizeaz adaptarea acesteia la particularitile circuitului CPLD din familia XC9500 sau CoolRunner, astfel nct s se utilizeze numrul minim de macrocelule i termeni produs. Modulul CPLD Fitter poate genera i un raport coninnd caracteristici de timp ale semnalelor, raport care indic i frecvena maxim a semnalului de ceas la care poate funciona sistemul proiectat. n cazul proiectrii cu circuite FPGA, urmtoarea etap de implementare dup cea de translatare este maparea tehnologic, executat de programul MAP. Acest program execut mai nti verificarea regulilor de proiectare pentru descrierea din fiierul n format NGD, iar apoi realizeaz

18

Arhitectura calculatoarelor - Lucrarea de laborator Nr. 6

adaptarea logicii la resursele disponibile n circuitul FPGA din familia Spartan sau Virtex utilizat pentru implementare. Rezultatul maprii tehnologice este un fiier n format NCD (Native Circuit Description), care specific elementele fizice care vor fi utilizate din circuitul FPGA. Programul MAP genereaz un raport cu rezultatele operaiilor efectuate. Raportul conine mesajele de eroare i de avertisment care au fost afiate, logica eliminat n urma optimizrilor efectuate, numrul i procentul de utilizare a blocurilor logice, a blocurilor de I/E i a bistabilelor. Dup maparea tehnologic, se ruleaz programul PAR, care execut operaiile de plasare i rutare a circuitului FPGA. Acest program prelucreaz fiierul n format NCD obinut n urma maprii tehnologice i genereaz un fiier n acelai format care conine i informaiile de rutare. Programul PAR genereaz mai multe rapoarte care conin: numrul semnalelor care nu au putut fi rutate complet, caracteristici de timp ale semnalelor, pinii circuitului sortai mai nti dup numele semnalelor, iar apoi dup numr, frecvena maxim de funcionare a circuitului. Dup implementare, se poate genera un model al sistemului proiectat coninnd i ntrzierile semnalelor, aceste informaii fiind adugate prin operaia de adnotare invers. Modelul generat poate fi utilizat pentru simularea temporal a sistemului. Pentru generarea acestui model, se ruleaz (n mod automat sau la comanda utilizatorului) programul NGDAnno i unul din programele NGD2VHDL, NGD2VER sau NGD2EDIF, n funcie de fluxul de proiectare utilizat (XST VHDL, XST Verilog, respectiv EDIF). 2.3.2.7. Modulul pentru generarea fiierului de configurare Dup executarea etapelor de implementare, se poate genera un fiier care va fi utilizat pentru configurarea circuitului programabil astfel nct acesta s execute funciile dorite ale sistemului digital proiectat. Fiierul de configurare este sub forma unui ir de bii (bitstream), coninnd toate informaiile din fiierul NCD care definesc logica intern i interconexiunile circuitului utilizat pentru implementare, plus alte informaii din unele fiiere asociate cu acest circuit. Asemenea informaii sunt, de exemplu, cele care indic asignarea semnalelor la pinii circuitului. Fiierul de configurare este generat de programul BitGen. Acest fiier poate fi utilizat apoi pentru configurarea circuitului sau pentru crearea unui fiier necesar programrii unei memorii PROM cu informaiile de configurare ale circuitului. Pentru circuitele CPLD, fiierul de configurare este creat n formatul JEDEC (Joint Electron Device Engineering Council) i are extensia .jed. Ulterior, se poate crea un fiier n formatul SVF (Serial Vector Format) cu ajutorul modulului iMPACT. Pentru circuitele FPGA, fiierul de configurare creat este un fiier binar i are extensia .bit. 2.3.2.8. Modulul pentru configurare sau programare iMPACT Modulul iMPACT permite configurarea sau programarea circuitului CPLD sau FPGA utilizat pentru implementare. Pentru aceasta trebuie conectat un cablu paralel sau un cablu JTAG la portul paralel al calculatorului (n unele cazuri, se poate utiliza un cablu serial sau un cablu USB). Fiierul care conine irul de bii pentru configurare va fi transferat la circuitul programabil. Modulul iMPACT conine i un program (PROM File Formatter) pentru generarea fiierului necesar programrii unei memorii PROM. O asemenea memorie nevolatil poate fi utilizat pentru pstrarea informaiilor de configurare necesare circuitelor CPLD sau FPGA care se bazeaz pe tehnologia SRAM i necesit configurarea dup fiecare ntrerupere a tensiunii de alimentare. Fiierul generat de modulul iMPACT poate avea formatul MCS-86 (Intel), EXORMACS (Motorola) sau TEKHEX (Tektronix). Se poate genera i un fiier HEX, care conine reprezentarea hexazecimal a irului de configurare. Fiierul generat poate fi utilizat pentru programarea unei memorii PROM cu ajutorul unui echipament de programare. 2.3.2.9. Modulul de vizualizare Pentru circuitele CPLD, modulul ChipViewer poate fi utilizat pentru vizualizarea n mod grafic a structurii macrocelulelor dup configurare, a semnalelor de intrare i de ieire, a ecuaiilor sem-

Arhitectura calculatoarelor - Lucrarea de laborator Nr. 6

19

nalelor a modului de asignare a pinilor de I/E i a ntrzierii semnalelor ntre doi pini. De asemenea, modulul ChipViewer permite asignarea semnalelor la anumii pini de I/E naintea etapelor de implementare.

2.4. Exemplu de proiectare


n continuare se prezint un exemplu simplu de proiectare utiliznd pachetul de programe Xilinx WebPACK, versiunea 4.2. 2.4.1. Prezentarea circuitului proiectat Pentru exemplul de proiectare se va utiliza editorul schematic ECS. Circuitul proiectat const din dou numrtoare de cte 16 bii, care sunt conectate pentru a forma un numrtor de 32 de bii. Acest numrtor va fi implementat pe o plac de dezvoltare XSA-50 a firmei XESS, care conine un circuit FPGA Xilinx Spartan2 XC2S50, cu o capacitate de 50.000 pori echivalente. Numrtorul primete semnalul de ceas de 100 MHz de la generatorul de ceas al plcii XSA, realizat cu un oscilator programabil. Dou din liniile de ieire ale numrtorului vor fi conectate la segmentul de sus i cel de jos al afiajului cu 7 segmente al plcii. Segmentul de sus va fi comandat de bitul 25 al numrtorului, bit a crui valoare se modific din 0 n 1 sau din 1 n 0 cu o frecven de 100.000.000 / 226 = 1,49 Hz, astfel c acest segment se va aprinde sau se va stinge de 1,49 ori pe secund (aproximativ de 3 ori n 2 secunde). Segmentul de jos va fi comandat de bitul 24 al numrtorului, iar acest segment se va aprinde sau se va stinge de aproximativ 3 ori pe secund. Schema circuitului este prezentat n Figura 6.19.

Figura 6.19. Schema circuitului utilizat ca exemplu de proiectare.

2.4.2. Lansarea programului WebPACK Pentru lansarea n execuie a programului WebPACK se execut un dublu clic pe icoana interfeei grafice Project Navigator (Figura 6.20). Programul poate fi lansat n execuie i selectnd n meniul Start Programs Xilinx WebPACK 4.2 WebPACK Project Navigator. n funcie de

20

Arhitectura calculatoarelor - Lucrarea de laborator Nr. 6

configurarea interfeei Project Navigator, se va ncrca ultimul proiect care a fost utilizat, sau nu se va ncrca nici un proiect.

Figura 6.20. Icoana interfeei grafice WebPACK Project Navigator.

2.4.3. Crearea proiectului Pentru crearea unui nou proiect, se execut urmtoarele etape: 1. n ecranul Project Navigator se selecteaz File New Project. Se va deschide fereastra de dialog New Project. 2. n cmpul Project Location din fereastra de dialog New Project se introduce directorul n care se va crea proiectul, de exemplu, C:\Student\Tcalc2\AC. n acest director, programul va crea un nou director pentru fiierele proiectului. Se poate utiliza butonul ... pentru a selecta un director existent pe disc. 3. n cmpul Project Name se introduce numele proiectului, de exemplu, lab6_1. 4. n cmpul Device Family se selecteaz familia de circuite FPGA: Spartan2. 5. n cmpul Device se selecteaz circuitul FPGA: xc2s50-5tq144. n aceast denumire, xc2s50 indic tipul i capacitatea circuitului, -5 este un indicator al vitezei circuitului, iar tq144 reprezint tipul capsulei circuitului i numrul de pini. 6. n cmpul Design Flow se selecteaz fluxul de proiectare: XST VHDL. 7. Se execut un clic pe butonul OK pentru a crea proiectul. 2.4.4. Lansarea editorului schematic Pentru lansarea n execuie a editorului schematic ECS, se execut urmtoarele operaii: 1. n ecranul Project Navigator se selecteaz Project New Source. Se va deschide fereastra de dialog New. 2. Se selecteaz opiunea Schematic din meniu. 3. n cmpul File Name se introduce numele fiierului care va conine schema numrtorului proiectat, de exemplu, num32. 4. Se execut un clic pe butonul Next, iar apoi pe butonul Finish. Editorul schematic va fi lansat ntr-o nou fereastr. 2.4.5. Adugarea componentelor n etapa urmtoare se vor aduga componentele necesare pentru realizarea numrtorului de 32 de bii. Componentele disponibile pentru diferitele familii de circuite programabile se pstreaz n cte o bibliotec de componente, aceast bibliotec fiind specific pentru o anumit familie de circuite. Categoriile de componente sunt afiate n fereastra Categories a editorului schematic, iar componentele dintr-o categorie selectat sunt afiate n fereastra Symbols. Deoarece nu este disponibil un numrtor de 32 de bii, acesta va fi realizat prin interconectarea a dou numrtoare de 16 bii. Pentru adugarea componentelor necesare, se procedeaz astfel:

Arhitectura calculatoarelor - Lucrarea de laborator Nr. 6

21

1. n bara de meniuri se selecteaz comanda Add Symbol, sau se execut un clic pe butonul Add Symbol . 2. n zona din dreapta ecranului, n cmpul Categories se selecteaz Counter, iar n cmpul Symbols se selecteaz componenta cc16ce. 3. Se deplaseaz cursorul n fereastra principal a editorului. Se observ c s-a ataat cursorului simbolul unui numrtor. Se deplaseaz cursorul i se plaseaz numrtorul prin execuia unui clic n poziia dorit (conform figurii 6.19). Se observ c simbolul este etichetat cu numele componentei, iar terminalele sunt etichetate cu numele lor. 4. Se plaseaz al doilea numrtor prin deplasarea cursorului i execuia unui clic n poziia dorit. 5. Se apas tasta Esc pentru terminarea plasrii componentelor. Componentele adugate pot fi deplasate ulterior n poziiile convenabile. tergerea unei componente se poate realiza prin selectarea acesteia i apsarea tastei Delete. Se pot utiliza butoanele Zoom In dimensiunile convenabile. i Zoom Out pentru vizualizarea componentelor la

2.4.6. Interconectarea componentelor n continuare se vor interconecta componentele din schem prin fire de conexiuni. Pentru aceasta se poate selecta n bara de meniuri comanda Add Wire, sau se poate utiliza butonul Add Wire . Pentru interconectarea a doi pini se execut un clic pe unul din pini, se deplaseaz cursorul, iar apoi se execut un clic dublu pe al doilea pin. Pinul selectat trebuie s apar marcat prin patru puncte de culoare roie plasate n colurile unui mic ptrat. Similar se poate interconecta un pin cu un fir de conexiune existent, executnd un clic pe conexiunea respectiv. Se pot interconecta mai muli pini, dar atunci se execut un clic dublu doar pe ultimul pin. Terminarea interconectrii se poate realiza i prin apsarea tastei Esc. Este posibil i interconectarea logic a dou semnale dac se denumesc n mod identic dou sau mai multe segmente de interconectare. n acest caz, firele de conexiune nu trebuie conectate fizic n cadrul schemei. Se execut urmtoarele etape pentru interconectarea componentelor din schem: 1. Pentru conectarea semnalului de ceas la numrtorul de jos, se execut un clic pe butonul Add Wire ; forma cursorului devine cea a unui creion. Se execut un clic pe terminalul C al numrtorului de jos, iar apoi se traseaz o linie orizontal spre stnga i se execut un clic dublu n poziia dorit. La aceast conexiune se va ataa ulterior un terminal de intrare, care se va plasa pe pinul circuitului FPGA care este conectat la generatorul de ceas de pe placa de dezvoltare. 2. Se conecteaz terminalul de ceas C al numrtorului de sus la conexiunea trasat anterior, executnd un clic pe acest terminal, iar apoi un clic pe firul de conexiune. Se apas apoi tasta Esc. 3. Se conecteaz n mod similar terminalul de ieire CEO (Count Enable Out) al numrtorului de jos la terminalul de validare al ceasului CE (Clock Enable) al numrtorului de sus. Pentru a obine forma dorit a conexiunii, se poate executa un clic n punctele intermediare n care se dorete schimbarea direciei liniei de conexiune. Prin aceast conectare a terminalelor CEO i CE, numrtorul de sus se va incrementa numai atunci cnd numrtorul de jos trece de la valoarea FFFFh la 0000h, deci o dat la fiecare 65.536 impulsuri de ceas. Aceasta deoarece ieirea CEO a numrtorului de jos va trece n 1 logic numai atunci cnd valoarea numrtorului este FFFFh. Prin conectarea ieirii CEO la intrarea de validare a ceasului

22

Arhitectura calculatoarelor - Lucrarea de laborator Nr. 6

(CE) numrtorului de sus, acest numrtor va reaciona la un impuls de ceas numai atunci cnd numrtorul de jos ajunge la valoarea FFFFh. Numrtorul de jos, care va conine biii mai puin semnificativi ai contorului, trebuie s se incrementeze la fiecare impuls de ceas. De aceea, intrarea CE a acestui numrtor trebuie conectat n permanen la 1 logic. Valoarea 1 logic se poate obine prin plasarea i conectarea simbolului VCC. Fiecare numrtor are o intrare de tergere CLR (Clear) care reseteaz numrtorul la 0 atunci cnd aceast intrare trece n 1 logic. Pentru a preveni resetarea numrtoarelor n timpul funcionrii, se va aplica n permanen valoarea logic 0 la ambele intrri CLR. Valoarea 0 logic se poate obine prin plasarea i conectarea simbolului GND. Pentru conectarea intrrii CE la 1 logic i a intrrilor CLR la 0 logic se procedeaz astfel: 1. Se execut un clic pe butonul Add Symbol . n fereastra Categories se selecteaz General, iar n fereastra Symbols se selecteaz simbolul vcc. 2. Se deplaseaz cursorul n fereastra principal i se verific forma simbolului ataat cursorului. Dac aceast form nu este cea a literei T, se execut clic de dou ori pe butonul Rotate pentru rotirea simbolului. Se plaseaz apoi simbolul vcc deasupra terminalului CE a numrtorului de jos i la stnga acestuia, asigurnd un spaiu suficient pentru a putea conecta simbolul la terminal printr-o linie de conexiune. Se apas apoi tasta Esc. 3. Se traseaz o linie de conexiune ntre simbolul vcc i terminalul CE al numrtorului de jos, n modul descris anterior. 4. n fereastra Symbols se selecteaz simbolul gnd. Se plaseaz cte un simbol gnd sub terminalele CLR ale numrtoarelor i la stnga acestora, asigurnd un spaiu suficient pentru a putea conecta simbolurile la terminale prin linii de conexiune. Se apas apoi tasta Esc. 5. Se traseaz linii de conexiune ntre simbolurile gnd i terminalele CLR ale numrtoarelor. Se salveaz schema, selectnd File Save sau executnd un clic pe butonul Save 2.4.7. Adugarea i conectarea unei magistrale n cazul editorului ECS, o magistral este ca i o linie de conexiune, dar creia i s-a atribuit un nume indicnd numrul de linii ale magistralei, de exemplu, bus(7:0). Pentru adugarea unei magistrale, se procedeaz ca i pentru adugarea unei linii de conexiune, iar apoi se atribuie acesteia numele corespunztor. Dup adugarea magistralei, exist posibilitatea utilizrii individuale a semnalelor magistralei. Doi bii ai numrtorului de sus trebuie conectai la dou segmente ale afiajului de pe placa XSA-50. Pentru a avea acces la aceti bii, mai nti se prelungete magistrala de ieire Q a numrtorului de sus i se atribuie un nume acestei magistrale, astfel: 1. Se execut un clic pe butonul Add Wire . .

2. Se traseaz o linie de conexiune de la ieirea Q a numrtorului de sus, mai nti la dreapta, iar apoi n jos. Se apas tasta Esc. 3. Se selecteaz Add Net Name sau se execut un clic pe butonul Add Net Name .

4. Se introduce de la tastatur numele CNT(15:0) i se apas tasta Enter. Prin aceasta se ataeaz cursorului numele magistralei. 5. Se execut un clic pe captul de sus al magistralei pentru a se ataa numele acesteia. Se apas apoi tasta Esc. Pentru comanda segmentului de sus i a celui de jos al afiajului cu 7 segmente, este necesar accesul la doi bii ai numrtorului. Se vor utiliza biii 25 i 24 ai numrtorului de 32 de bii, acetia

Arhitectura calculatoarelor - Lucrarea de laborator Nr. 6

23

fiind reprezentai de biii 9, respectiv 8, ai numrtorului de sus. Pentru accesul la aceti bii, se procedeaz astfel: 1. Se selecteaz Add Bus Tap sau se execut un clic pe butonul Add Bus Tap modificarea formei cursorului. . Se observ

2. Dac este necesar, se modific orientarea n fereastra de opiuni (cea n care este afiat Rotate 0), astfel nct baza triunghiului s fie paralel cu poriunea vertical a magistralei. Se execut un clic pe poriunea vertical a magistralei pentru adugarea primului conector la magistral, iar apoi un nou clic pentru adugarea celui de-al doilea conector. Se apas apoi tasta Esc. 2.4.8. Adugarea i conectarea bufferelor de ieire Semnalele de ieire se vor conecta la pinii de ieire prin intermediul unor buffere de ieire. Pentru adugarea i conectarea acestora se procedeaz astfel: 1. Se execut un clic pe butonul Add Symbol . n fereastra Categories se selecteaz IO, iar n fereastra Symbols se selecteaz simbolul obuf. 2. Se plaseaz dou componente obuf la dreapta celor doi conectori la magistral, la o oarecare distan de acetia. Se apas apoi tasta Esc. 3. Se traseaz cte o linie de conexiune de la fiecare conector al magistralei la bufferul de ieire corespunztor. 4. Se prelungesc la dreapta liniile de la ieirile componentelor obuf. 2.4.9. Ataarea numelor la conexiuni n continuare se vor ataa nume unor conexiuni. Pentru aceasta se procedeaz astfel: 1. Se selecteaz Add Net Name sau se execut un clic pe butonul Add Net Name 2. Se introduce de la tastatur numele CLK i se apas tasta Enter. 3. Se execut un clic n partea stng a liniei conectate la intrarea de ceas C a numrtorului de jos i se verific ataarea numelui CLK la aceast linie. Se apas tasta Esc. 4. Se procedeaz similar pentru ataarea numelui CNT(9) la linia dintre conectorul de sus al magistralei i bufferul de ieire corespunztor. 5. Se ataeaz numele CNT(8) la linia dintre conectorul de jos al magistralei i bufferul de ieire corespunztor. 6. Se ataeaz numele S6 la linia din dreapta bufferului de ieire conectat la semnalul CNT(9). 7. Se ataeaz numele S0 la linia din dreapta bufferului de ieire conectat la semnalul CNT(8). 2.4.10. Adugarea porturilor de I/E Porturile de I/E permit utilizarea unei componente proiectate sau a unui subsistem ntr-o schem mai complex. Pentru numrtorul proiectat, singurul port de intrare este cel de ceas. Porturile de ieire sunt liniile CNT(9) i CNT(8) ale numrtorului. Pentru adugarea acestor porturi, se procedeaz astfel: 1. Se selecteaz Add I/O Marker sau se execut un clic pe butonul Add I/O Marker 2. Se selecteaz direcia Input n partea de sus a ecranului. . .

24

Arhitectura calculatoarelor - Lucrarea de laborator Nr. 6 3. Se apas butonul din stnga al mouse-ului i, cu butonul apsat, se traseaz un dreptunghi n jurul semnalului CLK. Se observ adugarea simbolului pentru portul de intrare. 4. Se selecteaz direcia Output. 5. Se apas butonul din stnga al mouse-ului i, cu butonul apsat, se traseaz un dreptunghi n jurul semnalelor S6 i S0. Se observ adugarea a dou simboluri pentru porturile de ieire. Se apas tasta Esc. Se salveaz schema utiliznd butonul Save 2.4.11. Verificarea schemei Pentru verificarea corectitudinii conexiunilor, se selecteaz comanda Tools Check Sche.

matic sau se execut un clic pe butonul Check Schematic . Eventualele erori se afieaz ntr-o nou fereastr, Schematic Check Errors. Se verific dac sunt erori, iar apoi se nchide fereastra cu butonul Close. n cazul unor erori, se verific modul n care sunt realizate interconexiunile pe schem i se repet testul. 2.4.12. Asignarea pinilor la semnalele de intrare i ieire n acest moment, schema este terminat, dar semnalele de intrare i ieire trebuie conectate la pinii corespunztori ai circuitului FPGA, n funcie de modul n care sunt conectai aceti pini pe placa XSA-50. Conexiunile necesare sunt ilustrate n Figura 6.21.

Figura 6.21. Conectarea oscilatorului programabil i a afiajului cu 7 segmente la pinii circuitului FPGA de pe placa XSA-50.

Pinii la care se vor conecta semnalele de intrare i de ieire se pot specifica prin ataarea unui parametru, denumit LOC, semnalelor respective. Pentru aceasta se procedeaz astfel: 1. Se execut un clic cu butonul din dreapta pe portul de intrare al semnalului CLK i se selecteaz opiunea Object Properties. Se va deschide o fereastr cu atributele acestui semnal. 2. Se execut un clic pe butonul New pentru adugarea unui nou atribut. 3. n fereastra Attribute Name se introduce LOC, iar n fereastra Attribute Value se introduce P88. Aceasta nseamn c semnalul CLK va fi conectat la pinul 88 al circuitului FPGA, pin care este conectat la oscilatorul programabil al plcii XSA-50. 4. Se execut un clic pe butonul OK, iar apoi un nou clic pe butonul OK pentru nchiderea ferestrei Object Properties. 5. Se procedeaz similar pentru conectarea semnalului S6 la pinul 49 al circuitului FPGA (segmentul S6 al afiajului cu 7 segmente). 6. Se procedeaz similar pentru conectarea semnalului S0 la pinul 67 al circuitului FPGA (segmentul S0 al afiajului). Se salveaz schema utiliznd butonul Save .

Arhitectura calculatoarelor - Lucrarea de laborator Nr. 6 2.4.13. Sinteza i implementarea proiectului

25

Dup terminarea editrii schemei, se revine n fereastra Project Manager. n fereastra fiierelor surs se selecteaz fiierul care conine schema (fiierul cu extensia .sch), dac fiierul nu este selectat. n fereastra proceselor se vor afia procesele disponibile pentru acest fiier. 1. Pentru lansarea procesului de sintez, se execut un clic dublu pe numele procesului Synthesize din fereastra proceselor. n timpul sintezei, se afieaz diferite mesaje n fereastra consolei. Dup terminarea sintezei, se verific dac s-au afiat mesaje de eroare (marcate cu culoarea roie). n cazul unor erori, se revine la editorul schematic i se verific schema. Mesajele de avertisment (marcate cu culoarea galben) pot fi ignorate. 2. Se execut un clic pe semnul + din stnga numelui Synthesis, iar apoi se execut un clic dublu pe linia View Synthesis Report. Prin aceasta se va afia coninutul fiierului de raport generat n urma sintezei. Se parcurge fiierul, iar n seciunea Timing Summary se verific frecvena maxim de funcionare a circuitului. Se nchide apoi fiierul de raport. 3. Pentru lansarea procesului de implementare, se execut un clic dublu pe numele procesului Implement Design din fereastra proceselor. 4. Dup terminarea implementrii, se execut un clic pe semnul + din stnga numelui Implement Design, iar apoi un clic pe semnul + din stnga numelui Map. Se execut un clic dublu pe linia Map Report. n fiierul afiat, se determin din seciunea Design Summary care este procentul resurselor utilizate din circuit: numrul de blocuri logice (Number of Slices), numrul de bistabile (Number of Slice Flip-Flops) i numrul de pori echivalente (Total equivalent gate count for design). Se nchide apoi fiierul de raport. 5. Se execut un clic pe semnul + din stnga numelui Place & Route din cadrul procesului Implement Design. Se vizualizeaz fiierul de raport care conine asignarea pinilor de I/E (Pad Report), generat n urma proceselor de plasare i rutare (Place & Route). Se verific dac semnalele sunt asignate n mod corect la pinii de I/E. Se nchide apoi fiierul de raport. 6. Pentru generarea fiierului de configurare, se execut un clic dublu pe numele procesului Generate Programming File din fereastra proceselor. Se verific n directorul proiectului existena unui fiier cu extensia .bit, care este fiierul de configurare. 2.4.14. Configurarea circuitului FPGA Pentru configurarea circuitului FPGA se procedeaz astfel: 1. Se lanseaz n execuie programul GXSLOAD, cu icoana din Figura 6.22, care permite transferul fiierului de configurare la circuitul FPGA. 2. Se verific tipul plcii selectate n fereastra Board Type; acest tip trebuie s fie XSA-50. 3. Se alimenteaz placa XSA-50 cu o tensiune de 7,5 V. 4. Se utilizeaz programul Windows Explorer pentru vizualizarea fiierelor din directorul proiectului. Se reduce dimensiunea ferestrei acestui program pentru a fi vizibil i fereastra programului GXSLOAD. 5. Se selecteaz fiierul cu extensia .bit i se plaseaz acest fiier n fereastra FPGA/CPLD a programului GXSLOAD. 6. Se execut un clic pe butonul Load. Fiierul de configurare se va transfera la circuitul FPGA, dup care circuitul va ncepe s funcioneze. Dac oscilatorul plcii este programat la 100 MHz, segmentul de sus al afiajului cu 7 segmente va clipi de aproximativ 3 ori n 2 secunde, iar segmentul de jos de 3 ori pe secund.

26

Arhitectura calculatoarelor - Lucrarea de laborator Nr. 6

Figura 6.22. Icoana programului GXSLOAD.

3. Desfurarea lucrrii
3.1. Executai etapele descrise n seciunea 2.4 pentru proiectarea i verificarea funcionrii numrtorului. 3.2. Modificai schema pentru a conecta ali doi bii ai numrtorului de sus la cele dou segmente ale afiajului. Repetai etapele necesare pentru implementare, configurai din nou circuitul i verificai funcionarea. 3.3. Conectai ali bii ai numrtorului de sus la alte segmente ale afiajului. Conectarea segmentelor afiajului la pinii circuitului FPGA este indicat n Tabelul 6.2.
Tabelul 6.2. Conexiunile segmentelor afiajului cu 7 segmente la pinii circuitului FPGA.
Segment afiaj S0 S1 S2 S3 S4 S5 S6 Pin FPGA 67 39 62 60 46 57 49

S-ar putea să vă placă și