Circuite Logice Programabile Complexe (CPLD)

14
Capitolul 4 4. CIRCUITE LOGICE PROGRAMABILE COMPLEXE (Complex Programmable Logic Devices - CPLD) 4.3 Introducere Circuitele logice programabile asigură crearea proiectelor digitale semicustom * , dar cu circuite standardizate. Gama largă a circuitelor programabile asigură libertatea de proiectare a unor funcţii de bază a căror realizare este de altfel mult prea costisitoare. Circuitele PLD asigură reducerea costului şi timpului de proiectare. Siguranţa în funcţionare măreşte calitatea produselor fără scăderea complexităţii proiectelor. Problemele de proiectare sunt mult simplificate prin gama largă a programelor oferite de producători de circuite PLD. Simularea proiectelor permite detectarea erorilor de proiectare, astfel încât se reduc cheltuielile de proiectare şi testare încă din faza de proiectării. Toate aceste motive au contribuit la creşterea utilizării circuitelor logice programabile. Încă de la apariţia lor pe piaţă circuitele logice, cum ar fi 16V8 şi 22V10 au conferit o mare flexibilitate în proiectarea digitală. Pe măsură ce tehnologia circuitelor logice a avansat, s-a manifestat interesul firesc în dezvoltarea de circuite programabile de capacitate din ce în ce mai mare. Datorită efectelor capacitive, a creşterii valorilor curenţilor de pierdere cât şi a altor efecte, pentru a se mării capacitatea PLD-urilor (Programmable Logic Devices) nu s-a putut pur şi simplu „amplifica” vechea arhitectura (vezi figura 4.1). Astfel un circuit 128V64 ar avea 64 pini de intrare, 64 I/O pini, deci 128 variabile implementate ca şi sumă de produse folosind cele 64 macrocelule ( macrocelula conţine o poartă SAU la a cărei intrări se pot conecta n porţi AND, o poartă SAU-EXCLUSIV, un bistabil şi un buffer tristate) faţă de circuitul 16V8 din care derivă, care are 8 semnale de intrare, 8 semnale de intrare / ieşire şi 8 macrocelule. Nici din punctul de vedere al utilizării eficiente a pastilei de siliciu pe care este implementat circuitul situaţia nu este mai bună, astfel că un 128V64 ar ocupa o arie de 64 de oi mai mare ca şi 16V8 şi ar furniza un număr de intrări/ieşiri de numai 8 ori mai mare. Astfel că folosirea a 8 circuite 16V8 ar fi mai eficientă decât crearea unui 128V64. Ca şi o consecinţă a celor expuse mai sus a apărut ideea creări circuitelor logice programabile complexe (CPLD = Complex Programmable Logic Devices), care nu sunt altceva decât un grup de circuite PLD însoţite de o structură de interconexiuni programabile, vezi figura 4.2. În continuare se va prezenta arhitectura circuitelor CPLD din seria 9500 produse de firma XILINX. * semicustom = semipersonalizat, circuitele semicustom sunt concepute parţial în funcţie de necesităţile utilizatorului

Transcript of Circuite Logice Programabile Complexe (CPLD)

Page 1: Circuite Logice Programabile Complexe (CPLD)

Capitolul 4

4. CIRCUITE LOGICE PROGRAMABILE COMPLEXE (Complex Programmable Logic Devices - CPLD)

4.3 Introducere Circuitele logice programabile asigură crearea proiectelor digitale semicustom*, dar cu circuite standardizate. Gama largă a circuitelor programabile asigură libertatea de proiectare a unor funcţii de bază a căror realizare este de altfel mult prea costisitoare. Circuitele PLD asigură reducerea costului şi timpului de proiectare. Siguranţa în funcţionare măreşte calitatea produselor fără scăderea complexităţii proiectelor. Problemele de proiectare sunt mult simplificate prin gama largă a programelor oferite de producători de circuite PLD. Simularea proiectelor permite detectarea erorilor de proiectare, astfel încât se reduc cheltuielile de proiectare şi testare încă din faza de proiectării. Toate aceste motive au contribuit la creşterea utilizării circuitelor logice programabile. Încă de la apariţia lor pe piaţă circuitele logice, cum ar fi 16V8 şi 22V10 au conferit o mare flexibilitate în proiectarea digitală. Pe măsură ce tehnologia circuitelor logice a avansat, s-a manifestat interesul firesc în dezvoltarea de circuite programabile de capacitate din ce în ce mai mare. Datorită efectelor capacitive, a creşterii valorilor curenţilor de pierdere cât şi a altor efecte, pentru a se mării capacitatea PLD-urilor (Programmable Logic Devices) nu s-a putut pur şi simplu „amplifica” vechea arhitectura (vezi figura 4.1). Astfel un circuit 128V64 ar avea 64 pini de intrare, 64 I/O pini, deci 128 variabile implementate ca şi sumă de produse folosind cele 64 macrocelule ( macrocelula conţine o poartă SAU la a cărei intrări se pot conecta n porţi AND, o poartă SAU-EXCLUSIV, un bistabil şi un buffer tristate) faţă de circuitul 16V8 din care derivă, care are 8 semnale de intrare, 8 semnale de intrare / ieşire şi 8 macrocelule. Nici din punctul de vedere al utilizării eficiente a pastilei de siliciu pe care este implementat circuitul situaţia nu este mai bună, astfel că un 128V64 ar ocupa o arie de 64 de oi mai mare ca şi 16V8 şi ar furniza un număr de intrări/ieşiri de numai 8 ori mai mare. Astfel că folosirea a 8 circuite 16V8 ar fi mai eficientă decât crearea unui 128V64. Ca şi o consecinţă a celor expuse mai sus a apărut ideea creări circuitelor logice programabile complexe (CPLD = Complex Programmable Logic Devices), care nu sunt altceva decât un grup de circuite PLD însoţite de o structură de interconexiuni programabile, vezi figura 4.2. În continuare se va prezenta arhitectura circuitelor CPLD din seria 9500 produse de firma XILINX.

* semicustom = semipersonalizat, circuitele semicustom sunt concepute parţial în funcţie de necesităţile utilizatorului

Page 2: Circuite Logice Programabile Complexe (CPLD)

Circuite logice programabile complexe

55

Figura 4.1 Circuitul PLD 16V8

Page 3: Circuite Logice Programabile Complexe (CPLD)

Capitolul 4

56

Figura 4.2 Arhitectura de bază a circuitelor CPLD

4.4 Familia de circuite XILINX CPLD 9500 Seria de circuite XC9500 este o familie de circuite CPLD cu arhitectură similară dar cu număr diferit de porturi de intrare / ieşire şi număr diferit de circuite PLD interne care în acest caz poartă numele de blocuri de funcţii FB (Function Blocks). Fiecare bloc de funcţii are 36 de intrări, 18 ieşiri şi 18 macrocelule, astfel că acesta ar putea fi numit 36V18. În tabelul T4.1 sunt prezentate circuitele din familia XC9500. Se poate observa că numele fiecărui circuit este în concordanţă cu numărul de macrocelule pe care îl conţine. O altă caracteristică care reiese din tabel este faptul ca un anumit CPLD poate fi prezent în mai multe tipuri de capsule (ex. vezi circuitul XC95108). Aceasta are ca scop principal economisirea de porturi de intrare ieşire. Într-o capsulă de tip PLCC cu 84 de pini numai 69 de pini I/O din cei 108 vor fi folosiţi ca şi intrări restul sunt utilizabili doar intern. În tabelul T4.1 se poate observa că există mai multe tipuri de circuite din familia XC9500 care folosesc acelaşi tip de capsulă. Aceasta poate fi de folos atunci când un proiect orientat de exemplu spre un circuit XC9572, capsulă 84 PLCC devine prea „stufos” pentru acest circuit acesta poate fi mutat într-un circuit XC95108 cu aceeaşi capsulă, astfel layout-ul plăcii pe care va fi montat circuitul programabil nu va fi afectat.

În figura 4.3 se prezintă sub formă de diagramă bloc arhitectura circuitelor din familia XC9500. Fiecare pin I/O poate fi folosit atât ca şi intrare, ieşire cât şi ca pin bidirecţional, după cum este programat dispozitivul.

Page 4: Circuite Logice Programabile Complexe (CPLD)

Circuite logice programabile complexe

57

Tabelul T4.1

Figura 4.3 Arhitectura familiei de circuite CPLD 9500

În cadrul familie de CPLD-uri XC9500 numărul de blocuri funcţionale poate varia de la 2 (2X18=36 macrocelule) la 16 (16X18=288 macrocelule). Fiecare FB

(bloc de funcţii) primeşte 36 de semnale de la matricea de conexiuni. În matricea de conexiuni intră câte 18 semnale de la fiecare FB şi semnalele care vin din exterior de la pini I/O. Mai există de asemenea câte 18 semnale de ieşire pentru fiecare FB care funcţionează în afara matricei de conexiuni şi care se conectează direct la blocurile

I/O.

4.4.1 Arhitectura blocurilor de funcţii

Structura de bază a unui bloc de funcţii este prezentată în figura 4.4. Aria

programabilă de porţi logice ŞI permite numai 90 de termeni produs / FB, câte 5

Page 5: Circuite Logice Programabile Complexe (CPLD)

Capitolul 4

58

pentru fiecare macrocelulă (vezi figura 4.5). Acest neajuns este înlăturat printr-o metodă de alocare a termenilor produs (Product Term Allocation = PTA). Bistabilul FF1 poate fi programat atât ca bistabil de tip D cât şi ca bistabil de tip T cu intrare de enable. Intrarea de clock a bistabilului este selectată de multiplexorul M4 din una din cele patru surse posibile, unul din cele trei semnale globale de clock sau de la ieşirea unui modul termen produs. Intrările asincrone de set şi reset ale bistabilului pot fi conectate la semnale de set / reset globale prin intermediul multiplexoarelor M2 şi M5. Prin intermediul multiplexorului M3 se selectează tipul semnalului de la ieşirea macrocelulei , sincron sau asincron. Acest semnal este trimis la matricea de conexiuni unde poate fi folosit de o altă macrocelulă., de asemenea este trimis şi la unul din blocurile de intrare ieşire ale CPLD-ului împreună cu un semnal provenind de la simbolul S5 care poate fi folosit ca şi semnal de activare a ieşiri PTOE (Product Term Output Enable).

Figura 4.4 Arhitectura unui bloc funcţional

Page 6: Circuite Logice Programabile Complexe (CPLD)

Circuite logice programabile complexe

59

Figura 4.5 Arhitectura unei macrocelule şi a alocatorului de produse

4.4.2 Arhitectura blocurilor de intrare / ieşire În figura 4.6 este prezentată structura unui bloc de intrare / ieşire (IOB). Există şapte posibilităţii de a activa semnalul de ieşire dintr-un IOB, vezi multiplexorul M0. Semnalul de ieşire poate fi întotdeauna activat şi dezactivat, poate fi comandat de PTOE sau poate fi comandat de unul dintre cele patru semnale globale provenind de la multiplexoarele M1-M4. Blocul de intrare / ieşire al CPLD-ului XC9500 furnizează pe lângă comanda logică a semnalului de ieşire şi o comandă analogică, după cum urmează: Controlul slew-rate – este comandată panta de creştere şi de descreştere a semnalului. Rezistenţă pull-up – această rezistenţă înlătură posibilitatea ca anumite ieşiri să rămână în stare logică necunoscută atunci când nu sunt comandate. Masă programabilă de către utilizator – această caracteristică poate transforma orice pin I/O într-un pin de masă. O caracteristică în plus a familiei de circuite logice programabile XC9500 este acea că este compatibilă cu alte circuite externe atât pe nivelul de 5V cât şi pe nivelul de 3,3V.

Page 7: Circuite Logice Programabile Complexe (CPLD)

Capitolul 4

60

Figura 4.6 Bloc de intrare ieşire

4.4.3 Matricea de conexiuni programabilă În mod teoretic o matrice de conexiuni ar trebui să permită fiecărei intrări sau ieşiri a unui PLD intern să fie conectate la o intrare sau ieşire externă a CPLD-ului. Gândind în aceşti termeni ne întoarcem din nou la problema lui 128V64. În figura 4.7 este prezentată matricea de conexiuni aparţinând circuitului XC95108. Există 108 intrări interne aparţinând macrocelulelor şi 108 ieşiri interne, în total 216 semnale care intră în matricea de conexiuni. Deoarece circuitul XC95108 are şase blocuri funcţionale cu câte 36 de intrări fiecare, matricea de conexiuni va avea 216 ieşiri. Matricea de conexiuni specifică unui CPLD este un compromis între performanţele cipului (viteză, arie, cost) şi performanţele softului fitter.

Page 8: Circuite Logice Programabile Complexe (CPLD)

Circuite logice programabile complexe

61

Figura 4.7 Matricea de interconexiuni programabilă

4.3. Familia de circuite CoolRunner

Faţă de circuitele CPLD din seria XC9500/XL/XV circuitele din seria CoolRunner –II şi XPLA3 vin cu un plus de viteză, flexibilitate şi consum redus de putere. Aceste caracteristici le recomandă în aplicaţiile de comunicaţii de date la viteză mare, în sisteme de calcul şi în dispozitive portabile ce necesită consum redus de putere.

Figura 4.8. Circuitele CPLD produse de firma Xilinx

Page 9: Circuite Logice Programabile Complexe (CPLD)

Capitolul 4

62

4.3.1. Familia de circuite CoolRunner-II

În tabelul T4.2 sunt prezentaţi membrii familiei în funcţie de numărul de macrocelule şi de frecvenţa de lucru.

În tabelul T4.3 sunt prezentate variantele de capsule ale circuitelor din familie, specificaţi fiind şi numărul de pini. Toate versiunile sunt SMD, iar mai mult de jumătate sunt ball-grid. Tehnologia CMOS utilizată în cazul familiei permite lucrul la frecvenţe mari cu un minimum de disipare de căldură aceasta face posibilă utilizarea capsulelor de dimensiuni reduse, ceea ce duce la economisire de spaţiu. Din tabel se poate observa că, cu puţine excepţii există cel puţin trei membrii ai familiei care beneficiază de acelaşi tip de încapsulare, aceasta oferind flexibilitate în alegerea circuitului adecvat. Tabelul T4.2

Tabelul T4.3

4.3.2. Descrierea arhitecturii Arhitectura este specifică circuitelor CPLD şi combină macrocelulele în blocuri de funcţii (Function Block - FB) interconectate prin intermediul unei matrici globale, aşa numita matrice avansată de interconexiuni (AIM – Advanced Interconnect Matrix). Blocurile de

Page 10: Circuite Logice Programabile Complexe (CPLD)

Circuite logice programabile complexe

63

funcţii FB, utilizează o configuraţie de tip PLA, ceea ce permite ca toţii termenii produs să fie accesibili şi să poată fii rutaţi între oricare dintre macrocelulele FB-ului. În figura 4.9 este prezentată arhitectura circuitelor din familia CoolRunner-II. Fiecare FB conţine 16 macrocelule. Blocul BSC se referă la controlul Boundary Scan şi are în alcătuire controlerul JTAG. Blocul ISP conţine circuitele In-System Programming, ce permit programarea în sistem.

Figura 4.9 Arhitectura circuitelor CPLD din familia CoolRunner-II

Blocul de funcţii FB Acesta conţine 16 macrocelule fiecare având acces la cele 40 de semnale de intrare, vezi figura 4.10. Logica internă permite implemntarea produselor cu până la 56 de termeni. Toate blocurile FB din structura unui circuit CoolRunner sunt identice, între membrii familiei diferă doar numărul acestora.

Figura 4.10. Blocul de funcţii (FB)

Page 11: Circuite Logice Programabile Complexe (CPLD)

Capitolul 4

64

Termenii produs sunt implemntaţi de către blocul PLA (Programmable Logic Array). Circuitele CPLD clasice au puţine trasee/macrocelulă care să poată implementa semnale de frecvenţă ridicată, astfel că se folosesc de termenii produs ai macrocelulelor vecine, risc de apariţie a nesincronizărilor. Prin arhitectura sa circuitele din familia CoolRunner înlătura apariţia acestor nesincronizări. Macrocelulele Permit implementarea sumelor de produse (SOP) cu până la 40 de variabile şi 56 de termeni, rezultatul fiind trecut printr-o poartă SAU Exclusiv, împreună cu altă expresie de tipul produs. Poate fi de asemenea selectată şi polaritatea expresiei logice, iar rezultatul final poate fi combinaţional sau secvenţial, elemntul de stocare de la ieşire putând fi setat ca bistabil de tip D sau T sau ca şi latch transparent. In mod independent fiecare macrocelulă peermite selectarea diferitelor semnale globale, cum ar fi cele de tact de reset , de activare a ieşirilor.

Figura 4.11 Arhitectura unei macrocelule CoolRunner-II

Fiecare bistabil din macrocelulă este configurabil să funcţioneze atât pe un singur front de clock câ şi pe ambele, permiţând astfel dublarea ratei de transfer a datelor. În figura 4.11 este prezentată arhitectura unei macrocelule.

Page 12: Circuite Logice Programabile Complexe (CPLD)

Circuite logice programabile complexe

65

Blocurile de intrare/ieşire Aceste blocuri permit alegerea standardului de tensiune dorit. Fiecare bloc când funcţionează ca şi intrare permite setarea unui circuit trigger Schmitt, aceasta ducând la reducerea zgomotului de la intrarea respectivă şi la adăugarea unui hystereyis de aproximativ 500 mV. Dacă sunt setate ca şi ieşiri ceste blocuri permit trecerea directă a semnaluli de semenea permit şi stările înaltă impedanţă sau cu colectorul în gol. De asemenea poate fi aleasă şi viteza de variaţie a semnalului slew rate. Sunt suportate standarde de tensiuni între 1,5 şi 3,3, V. În figura 4.12 este prezentată arhitectura unui bloc de intrare / ieşire.

Figura 4.12 Arhitectura unui bloc de intrare/ieşire CoolRunner-II

Managementul semnalului de clock Există posibilitatea ca semnalul de clock global să fie divizat de către un circuit dedicat inclus în CPLD, valorile de divizare prestabilite sunt: 2, 4, 6, 8, 10, 12, 14 şi 16. Fiecare macrocelulă permite dublarea frecvenţei clockului de la intrare, facilitatea dual edge. Combinând cele două circuite care îndeplinesc funcţiile menţionate mai sus, se poate realiza economisirea de putere, funcţia cool clock. Puterea consumată poate fi redusă prin divizarea semnalului de clock aplicat din exterior şi apoi prin dublarea frecvenţei acestuia în interiorul circuitului. 4.3.4 Alte caracteristici ale circuitelor CoolRunner Secvenţa de programare se realizează ca şi la orice dispozitiv produs de firma Xilinx, prin intermediul programului iMPACT şi a cablului de încarcare JTAG. Circuitele din această familie permit programarea în sistem şi de asemenea reprogramarea OTF (On-The-Fly). Programarea OTF permite încărcarea unui bitstreem în circuit în timp ce acesta este în funcţiune executând secvenţe de lucru programate anterior.

Page 13: Circuite Logice Programabile Complexe (CPLD)

Capitolul 4

66

Proiectele pot fi protejate atât la scriere accidentală cât şi împotriva piratării. Biţii de securitate nu pot fi resetaţi decât prin ştregrea circuitului ceea ce duce implicit la pierderea proiectului.

4.5 Producători de circuite SPLD/CPLD şi medii de proiectare Firma Vantis este o firmă subsidiară a firmei AMD care produce şi comercializează arii logice programabile (PAL-uri) şi aşa numitele arii de macrocelule realizate în tehnologie CMOS (MACH = Macro Array CMOS High), ambele reprogramabile electric. Pentru proiecte relativ simple, maşini de stări simple, codificatoare, decodificatoare, multiplexoare, firma Vantis pune la dispoziţia proiectantului circuitele PALCE (Programmable Array Logic CMOS Electrically Erasable), câteva componente ale acestei familii sunt circuitele PALCE16V8, PALCE20V8, PALCE24V10 şi PALCE29MA16. Familia de circuite MACH cuprinde o gamă largă de circuite logice programabile de diferite capacităţi, de la 32 până la 512 macrocelule (MACH1,2,3,4,5). În principiu o astfel de macrocelulă are o structură asemănătoare cu un circuit PAL optimizat, legătura între macrocelule făcându-se prin intermediul unei matrici de interconexiuni. Circuitele din familia MATCH sunt destinate aplicaţiilor mai complexe. Tehnologia EECMOS de realizarea a circuitelor MACH variază în domeniul 0,5 – 0,35µm. Firma Vantis oferă de asemenea şi medii de proiectare complete. Un astfel de program de proiectare este MACHXL destinat PC-urilor şi care suportă circuitele din familia MACH. Acest mediu oferă posibilitatea de a descrie proiecte prin intermediul tabelelor de adevăr, ecuaţii şi limbaj HDL. De asemenea sunt încorporate şi programe de simulare funcţională şi în domeniul timp. O altă firmă producătoare de circuite PLD este firma Altera, circuitele produse de această firmă au la bază tehnologia CMOS UVEPROM. Denumirea generică a circuitelor fabricate de altera este MAX xxxx EPLD (MAX = Multiple Array Matrix), unde prin xxxx sunt reprezentaţi membrii familiei: 5000, 7000, 9000. Numărul de macrocelule poate varia de la 32 până la 560, se poate lua în considerare că fiecare macrocelulă poate implementa aproximativ 20 de porţi logice. Tehnologia CMOS de realizarea a circuitelor MAX xxxx EPLD variază în domeniul 0,8 – 0,65µm. O altă familie de circuite logice programabile produse de Altera, care îmbină caracteristicile circuitelor FPGA (număr mare de regiştri) cu cele ale circuitelor EPLD (viteză mare şi întârzieri previzibile) este familia FLEX (Flexible Logic Element Matrix) cu membrii FLEX 6000, FLEX 8000 şi FLEX 10k. Circuitele corespunzătoare acestor familii pot implementa un număr de porţii logice cuprins între 2500 şi 100.000. Tehnologia de realizare CMOS a acestor circuite variază între limitele 0,5 – 0,35µm. Mediul de proiectare oferit de firma Altera se numeşte MAX + PLUS II care suportă atât familiile FLEX PLD, MAX EPLD cât şi circuitele PLD clasice. De asemenea acest mediu oferă şi un program de proiectare independent de arhitectura circuitelor programabile, acest program se numeşte AHDL (Altera Hardware Description Language). Alte firme care produc circuite PLD sunt: Cypress Semiconductor cu familiile de circuite EPLD CY7C34x, FLASH 370i; Lattice Semiconductor, care produce circuite de tip CPLD aici sunt incluse include familiile ispLSIxxxx şi GAL (ex. GAL 16V8, GAL 20V10 etc.);

Page 14: Circuite Logice Programabile Complexe (CPLD)

Circuite logice programabile complexe

67

Phillips Semiconductors oferă seria de circuite CPLD CoolRunner bazată pe tehnica de proiectare cu consum de putere statică redus FZP (Fast Zero Power). Circuitele PZ5128C şi PZ5128N sunt membrii ai acestei familii.