8 capitolul 8 circuite logice programabileece.ubm.ro/ea/cursuri/circuite_digitale/pdf/cd - c8...

17
125 8 CAPITOLUL 8 CIRCUITE LOGICE PROGRAMABILE În situaţiile în care o anumită aplicaţie necesită un CLC foarte complex, care nu se fabrică sub formă integrată, realizarea practică utilizând circuitele integrate existente de tip SSI, sau MSI cu numeroase conexiuni între ele, duce la ocuparea unui spaţiu mare pe cablaj şi la scăderea fiabilităţii globale a montajului. Probleme şi mai complicate apar când este necesară reproiectarea circuitului din diferite motive (erori de proiectare, adăugarea de noi facilităţi). În acest caz este nevoie de refacerea întregului circuit imprimat. Utilizarea tot mai largă a microprogramării în tehnica digitală a fost susţinută de disponibilitatea crescândă a unor memorii fixe programabile la utilizator (PROM, EPROM). Există însă o serie de aplicaţii unde se operează cu un număr mare de variabile de intrare la viteze de funcţionare ridicate, în care rigiditatea posibilităţilor de adresare ale acestor memorii le face improprii sau neeconomice. Pentru acoperirea acestor domenii au fost destinate circuitele integrate bipolare LSI, denumite Circuite (arii, structuri) logice programabile, care conţin într-o singură capsulă de circuit integrat numeroase porţi interconectabile, astfel încât să se poată realiza practic o gamă extrem de variată de CLC. Ideea de bază a circuitului este aceea că în punctele de conexiune interne sunt plasate fuzibile, care în procesul de programare pot fi arse sau nu rezultând în felul acesta schema dorită. Ele sunt denumite PLD (Programmable Logic Device) atunci când sunt programate la fabricaţie prin mască şi FPGA (Field Programmable Gate Arrays), în cazul când pot fi programate la locul de utilizare. Aceste circuite prin utilizarea programelor speciale de conectare şi amplasare a funcţiilor logice în interiorul structurii integrate realizează proiectul digital. Rezultatul acestor proiecte este un fişier de configurare, care transmis circuitului, îl va configura astfel ca structura lui internă să realizeze sistemul digital proiectat. Sistemele de proiectare permit astfel să utilizăm resursele sistemelor de calcul în mod eficient, fără a face uz de proiectarea prin metode manuale. Introducerea proiectului se poate realiza fie prin scheme electrice fie prin limbaje de programare utilizând un simplu editor de texte. Indiferent de metoda utilizată performanţele schemei digitale se pot verifica funcţional, considerând chiar şi timpi de răspuns ai circuitelor integrate, timpi care astfel devin calculabili. Apoi proiectul este încărcat în circuitul integrat pentru a realiza configurarea lui. Corectarea erorilor se reduce doar la corectarea schemei electrice sau a programului scris. 8.1 Clasificarea circuitelor logice programabile Reţelele logice programabile cunoscute ca circuite PLA au fost dezvoltate în anii ’70. Evoluţia circuitelor logice programabile a fost dinamică, paleta bogată a acestui tip de circuite este prezentată în figura 8.1. De la circuitele TTL simple s-a trecut la tehnologia circuitelor PROM, tehnologie care a realizat nu numai un circuit care este configurabil de utilizator, dar a devenit şi

Upload: phungtram

Post on 03-Feb-2018

258 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: 8 CAPITOLUL 8 CIRCUITE LOGICE PROGRAMABILEece.ubm.ro/ea/cursuri/circuite_digitale/pdf/CD - C8 PLD.pdf · integrate bipolare LSI, denumite Circuite (arii, structuri) logice programabile

125

8 CAPITOLUL 8

CIRCUITE LOGICE PROGRAMABILE

În situaţiile în care o anumită aplicaţie necesită un CLC foarte complex, care nu se fabrică sub formă integrată, realizarea practică utilizând circuitele integrate existente de tip SSI, sau MSI cu numeroase conexiuni între ele, duce la ocuparea unui spaţiu mare pe cablaj şi la scăderea fiabilităţii globale a montajului. Probleme şi mai complicate apar când este necesară reproiectarea circuitului din diferite motive (erori de proiectare, adăugarea de noi facilităţi). În acest caz este nevoie de refacerea întregului circuit imprimat. Utilizarea tot mai largă a microprogramării în tehnica digitală a fost susţinută de disponibilitatea crescândă a unor memorii fixe programabile la utilizator (PROM, EPROM). Există însă o serie de aplicaţii unde se operează cu un număr mare de variabile de intrare la viteze de funcţionare ridicate, în care rigiditatea posibilităţilor de adresare ale acestor memorii le face improprii sau neeconomice. Pentru acoperirea acestor domenii au fost destinate circuitele integrate bipolare LSI, denumite Circuite (arii, structuri) logice programabile , care conţin într-o singură capsulă de circuit integrat numeroase porţi interconectabile, astfel încât să se poată realiza practic o gamă extrem de variată de CLC. Ideea de bază a circuitului este aceea că în punctele de conexiune interne sunt plasate fuzibile, care în procesul de programare pot fi arse sau nu rezultând în felul acesta schema dorită. Ele sunt denumite PLD (Programmable Logic Device) atunci când sunt programate la fabricaţie prin mască şi FPGA (Field Programmable Gate Arrays), în cazul când pot fi programate la locul de utilizare.

Aceste circuite prin utilizarea programelor speciale de conectare şi amplasare a funcţiilor logice în interiorul structurii integrate realizează proiectul digital. Rezultatul acestor proiecte este un fişier de configurare, care transmis circuitului, îl va configura astfel ca structura lui internă să realizeze sistemul digital proiectat.

Sistemele de proiectare permit astfel să utilizăm resursele sistemelor de calcul în mod eficient, fără a face uz de proiectarea prin metode manuale. Introducerea proiectului se poate realiza fie prin scheme electrice fie prin limbaje de programare utilizând un simplu editor de texte. Indiferent de metoda utilizată performanţele schemei digitale se pot verifica funcţional, considerând chiar şi timpi de răspuns ai circuitelor integrate, timpi care astfel devin calculabili. Apoi proiectul este încărcat în circuitul integrat pentru a realiza configurarea lui. Corectarea erorilor se reduce doar la corectarea schemei electrice sau a programului scris.

8.1 Clasificarea circuitelor logice programabile Reţelele logice programabile cunoscute ca circuite PLA au fost dezvoltate în

anii ’70. Evoluţia circuitelor logice programabile a fost dinamică, paleta bogată a acestui tip de circuite este prezentată în figura 8.1.

De la circuitele TTL simple s-a trecut la tehnologia circuitelor PROM, tehnologie care a realizat nu numai un circuit care este configurabil de utilizator, dar a devenit şi

Page 2: 8 CAPITOLUL 8 CIRCUITE LOGICE PROGRAMABILEece.ubm.ro/ea/cursuri/circuite_digitale/pdf/CD - C8 PLD.pdf · integrate bipolare LSI, denumite Circuite (arii, structuri) logice programabile

Circuite digitale

126

foarte populară. Programele de dezvoltare vin în ajutorul proiectantului şi reduc timpul de proiectare. Deoarece proiectantului îi este redus efortul consacrat proiectării, a devenit posibilă realizarea unor proiecte complexe, implementate într-un timp foarte scurt.

Exist mai multe tipuri de dispozitive logice programabile, dar toate pot fi împărţite în următoarele trei mari categorii:

1. PAL/GAL - Programmable Logic Devices PLD (Dispozitive logice programabile):

1.1. PAL Bipolar Programmable Array Logic with Programmable AND/Fixed OR (Reţea logică programabilă bipolară cu poartă ŞI programabilă/poarta OR fixă);

1.2. PLA Programmable Logic Array with Programmable AND/Programmable OR (Reţea logică programabilă bipolară cu poartă ŞI programabilă/poartă OR programabilă);

1.3. GAL, CMOS Generic Array Logic Output Macrocell (Reţea logică generică cu ieşire cu macrocelule programabile , se referă la celula reţelei);

2. CPLD Complex programmable logic devices (Dispozitive logice programabile complexe);

3. FPGA Field Programmable Gate Arrays (Arii de porţi programabile la utilizator).

Figura 8.1. Familiile de circuite logice programabi le

Circute logice programabile

SPLD

Circute logice programabile simple

CPLD

Circute logice Programabile simple

FPGA Arii de porţi programabile la utilizator

PAL Programmable Array

Logic, Bipolar ŞI programabil/SAU fix

PLA Programmable Logic

Array ŞI/SAU programabil

GAL, CMOS Generic Array Logic ŞI programabil/ SAU

fix Macrocelule de ieşire

EPLD.

Max.Eprom.Flex. SRAM. Altera. XILINX

Mach. EEPROM

AMD

PLSI. EEPROM Lattice. XILINX

FPGA LCA. SRAM. Switch

Matrix XILINX. AT&T

SRAM. Sea of Gates ERA (Plessey),

Piklington

FPGA. Antifuse

Actel

PASIC. Antifuse

Quicklogic

Page 3: 8 CAPITOLUL 8 CIRCUITE LOGICE PROGRAMABILEece.ubm.ro/ea/cursuri/circuite_digitale/pdf/CD - C8 PLD.pdf · integrate bipolare LSI, denumite Circuite (arii, structuri) logice programabile

Capitolul 8. Circuite logice programabile

127

8.2 Dezavantajele circuitelor logice discrete fa ţă de circuitele logice programabile

Circuitele logice discrete sau circuitele convenţionale TTL/CMOS sunt circuitele cele mai populare şi au fost cele mai utilizate circuite şi datorită faptului că sunt relativ ieftine. Dar una dintre problemele principale în utilizarea lor este că realizarea unui proiect necesită zeci, sute de circuite integrate, mai mult apar costuri neprevăzute pentru fiecare circuit ce intră în componenţa sistemului, astfel sistemul devine scump la realizare. Fiecare decizie luată la proiectare afectează în mod direct structura circuitului imprimat, astfel că modificarea proiectului devine dificilă. Proiectul este greu de documentat, iar erorile de proiectare se elimină foarte greu din sistemul deja realizat. Toate aceste motive contribuie la un ciclu de proiectare îndelungat dacă aceste circuite integrate sunt utilizate într-un mod extensiv.

8.3 Tipuri de dispozitive logice programabile Circuitele logice programabile simple (SPLD) sunt compuse din arii de porţi ŞI

care comandă o arie de porţi SAU. Diferitele tipuri de arhitecturi se diferenţiază prin aceea că o arie sau alta sunt programabile sau fixe.

8.3.1 Memoriile ROM programabile (PROM)

Figura 8.2. Schema bloc a unei memorii PROM.

Memoria PROM constă dintr-un set de porţi ŞI fixe (neprogramabile), conectate într-o configuraţie de decodificator, şi o arie de porţi SAU programabile, aşa cum se poate vedea în schema bloc din figura 8.2. Memoria PROM este utilizat ca memorie adresabilă şi nu ca un circuit logic datorită limitărilor ce decurg din faptul că nivelul ŞI este fix. Structura unei memorii de 8 cuvinte de câte 4 biţi este prezentată în figura 8.3 unde se evidenţiază aria ŞI fixă precum şi aria SAU programabilă.

O1

I2

In

I1

Arie ŞI fixă

O2Arie SAU

programabilă

Om

Figura 8.3. Structura PROM

Conexiune programabilă Conexiune fixă

Page 4: 8 CAPITOLUL 8 CIRCUITE LOGICE PROGRAMABILEece.ubm.ro/ea/cursuri/circuite_digitale/pdf/CD - C8 PLD.pdf · integrate bipolare LSI, denumite Circuite (arii, structuri) logice programabile

Circuite digitale

128

8.3.2 Arii logice programabile PLA (Programmable Lo gic Array) Circuitele PLA sunt circuite care costau într-o arie de porţi ŞI programabilă şi o

arie de porţia SAU programabilă, prezentate în figura 8.4. Această structură permite implementarea oricărei expresii de tipul sumă de produse (SOP) cu un număr dat de variabile.

Figura 8.4. Schema bloc a unui circuit PLA.

Circuitul PLA a fost dezvoltat pentru a înlătura limitările circuitelor PROM. Ele se mai numesc şi FPLA (Field Programmable Logic Array) deoarece ele sunt programate la utilizator şi nu producător. În figura 8.5 este reprezentată schema unei astfel de arii logice programabile compusă din două nivele de logică programabilă: o matrice de porţi ŞI, şi o matrice de porţi SAU, precum şi cu amplificatoare de ieşire programabile. Matricea ŞI constituie un decodificator condiţionat, de dimensiuni reduse faţă de numărul mare de intrări ale circuitului, iar matricea SAU are rol de codificator. Circuitele tipice se fabrică cu 16 intrări (I0,…,I15), cu matricea ŞI conţinând 48 porţi cu câte 32 de intrări şi cu matricea SAU prevăzută cu 8 porţi cu câte 48 de intrări. Numărul de ieşiri este egal cu 8 (O0,…,O7).

O1

I2

In

I1

Arie ŞI programabilă

O2Arie SAU

programabilă

Om

Figura 8.5. Structura tipic ă a unui PLA

Page 5: 8 CAPITOLUL 8 CIRCUITE LOGICE PROGRAMABILEece.ubm.ro/ea/cursuri/circuite_digitale/pdf/CD - C8 PLD.pdf · integrate bipolare LSI, denumite Circuite (arii, structuri) logice programabile

Capitolul 8. Circuite logice programabile

129

Toate conexiunile, marcate prin cerculeţe în figură, sunt de tip fuzibil şi pot fi întrerupte prin programare. Semnalul de intrare Ik este aplicat unui buffer având rolul de a asigura curentul necesar bunei funcţionări a porţilor logice cărora li se aplică semnalul, el furnizând atât variabila de intrare cât şi variabila negată. Porţile logice ŞI sunt legate prin fuzibil la ieşirile directe şi negate ale tuturor bufferelor de intrare. Practic, în urma programării, un circuit ŞI va fi legat fie la ieşirea directă fie la cea negată a unui buffer de intrare. La ieşirea porţilor se obţin termenii produs (P0,..,P47) care pot fi exprimaţi prin:

P i A j Ak n n n n= +∏ ( )0

15

unde k=0,…,47; in sau jn=1 intrare programată ; in sau jn=0 intrare neprogramată. Circuitele SAU conectabile la toate ieşirile circuitelor de tip ŞI permit obţinerea formei disjunctive canonice :

S t Pr k k=∑0

47

unde r=0,…,7; tk=0 termen P inactiv (programat) ; tk=1 termen P activ (neprogramat).

Porţile SAU-EXCLUSIV de la ieşire permit obţinerea funcţiei sau a inversei acesteia (au rolul de inversor programabil). La ieşire circuitul este prevăzut cu buffere cu trei stări controlate de o bornă comună CE (Chip Enable) ceea ce permite conectarea circuitului la magistrale.

Figura 8.6. Exemplu de implementare a func ţiilor cu ajutorul circuitelor PLA.

Page 6: 8 CAPITOLUL 8 CIRCUITE LOGICE PROGRAMABILEece.ubm.ro/ea/cursuri/circuite_digitale/pdf/CD - C8 PLD.pdf · integrate bipolare LSI, denumite Circuite (arii, structuri) logice programabile

Circuite digitale

130

Pentru exemplificare să ne propunem realizarea unui CLC cu trei intrări şi două ieşiri a cărui funcţionare să fie descrisă de următoarele funcţii logice:

Y X X X X X X X

Y X X X X X1 1 2 2 3 1 2 3

2 1 3 1 2 3

= • + • + • •= • + • •

Schema circuitului realizat pe o arie logică programabilă este reprezentată în figura 8.6. Pentru realizarea circuitului s-au folosit trei intrări, cinci circuite ŞI precum şi două circuite SAU. Circuitele PLD se pot reprezenta în două moduri. Figura 8.7 prezintă structura detailată a unui circuit PLA cu 4 intrări şi 3 ieşiri având 6 termeni de tip produs.

Figura 8.7. Structura detailata a unui PLA cu 4 int rări şi 3 ieşiri.

În figura 8.8 se prezintă o reprezentare simplificată a aceluiaşi circuit, în care prin „x” s-au prezentat toate conexiunile intacte.

Figura 8.8. Reprezentare simplificat ă a circuitului PLA cu 4 intr ări şi 3 ieşiri.

Ca un dezavantaj al acestor arii logice programabile menţionăm faptul că ele nu se pot reprograma, odată programată aria conţinutul acesteia nu se mai poate şterge.

Page 7: 8 CAPITOLUL 8 CIRCUITE LOGICE PROGRAMABILEece.ubm.ro/ea/cursuri/circuite_digitale/pdf/CD - C8 PLD.pdf · integrate bipolare LSI, denumite Circuite (arii, structuri) logice programabile

Capitolul 8. Circuite logice programabile

131

8.3.3 Arii logice programabile PAL (Programmable Ar ray Logic – PAL) Circuitele PAL au fost dezvoltate pentru a înlătura anumite dezavantaje ale circuitelor PLA cum ar fi întârzierile mai mari datorate legăturilor fuzibile adiţionale care rezultă din utilizarea a două arii programabile şi a unei complexităţi mai mari a circuitului. Ariile logice programabile PAL posedă o structură de funcţie logică ŞI programabilă, urmată de o funcţie SAU fixă (figura 8.9). Faptul că structura funcţiilor ŞI este configurabilă permite utilizarea într-un număr mare a semnalelor de intrare, iar funcţia SAU face posibilă realizarea circuitului pe o suprafaţă mică (ceea ce înseamnă preţ şi timp de propagare scăzut).

Figura 8.9. Schema bloc a unui circuit PAL.

În figura 8.10 se prezintă structura de bază a unui circuit PAL. Circuitele PAL sunt cele mai obişnuite circuite logice programabile o singură dată şi sunt implementate în tehnologie bipolară (TTL sau ECL).

În figura 8.11 se prezintă structura internă a unui circuit PAL 16L8 care este unul din cele mai utilizate circuite PAL în ziua de azi, având o arie ŞI programabilă de 64 rânduri şi 64 x 32 fuzibile. Fiecare din cele 64 porţi ŞI are 32 de intrări corespunzând celor 16 variabile de intrare şi negatelor acestora. Numele circuitului PAL16L8 indică pe lângă tipul circuitului (PAL), numărul de intrări = 16, L = ieşiri activă LOW, 8 ieşiri.

Figura 8.10. Structura unui circuit PAL.

O1

I2

In

I1

Arie ŞI programabilă

O2Arie SAU

fixă şi logică de

ieşire Om

Conexiune programabilă Conexiune fixă

Page 8: 8 CAPITOLUL 8 CIRCUITE LOGICE PROGRAMABILEece.ubm.ro/ea/cursuri/circuite_digitale/pdf/CD - C8 PLD.pdf · integrate bipolare LSI, denumite Circuite (arii, structuri) logice programabile

Circuite digitale

132

Figura 8.11. Structura logic ă a circuitului PAL16L8.

Page 9: 8 CAPITOLUL 8 CIRCUITE LOGICE PROGRAMABILEece.ubm.ro/ea/cursuri/circuite_digitale/pdf/CD - C8 PLD.pdf · integrate bipolare LSI, denumite Circuite (arii, structuri) logice programabile

Capitolul 8. Circuite logice programabile

133

8.3.4 Arii de por ţi logice generice (Generic Array Logic – GAL) Sunt circuite care au ca şi circuitele PAL o arie de porţi ŞI programabilă şi o arie

de porţi SAU fixă cu circuite de ieşire programabile. Cele două diferenţe majore dintre un circuit GAL şi un circuit PAL constau în faptul că circuit GAL este reprogramabil şi are circuite de ieşire configurabile (numite macrocelule OLMC).

Acest tip de circuit este atractiv din punctul de vedere al utilizatorului datorită flexibilităţii sale. Placa de siliciu pare că este folosită la maximum şi se pare că este soluţia optimă pentru aplicaţia dată, chiar şi în cazul în care preţul plătit pentru proiectarea configuraţiei este destul de ridicat.

Ieşirea ariei generice este o macrocelulă configurabilă. Configuraţia poate fii combinaţională sau secvenţială, astfel un singur tip de circuit GAL înlocuieşte diferite tipuri de PAL.

Circuitele generice pot fi reprogramate deoarece sunt construite în tehnologie E2CMOS (electrically erasable CMOS) în loc de tehnologie bipolară şi legături fuzibile. Totuşi problema utilizării circuitelor GAL este zgomotul introdus pe circuitul imprimat, din această cauză aceste circuite nu pot înlocui circuitele PAL bipolare în aplicaţiile unde acest impediment este foarte important. Schema bloc este prezentată în figura 8.12.

Figura 8.12. Schema bloc a unei arii de por ţi logice generice.

Un dispozitiv GAL poate fi configurat (prin programare) să emuleze funcţionarea unor porţi ŞI, SAU, a unor bistabile, precum şi a alt structuri de ieşire combinaţionale sau secvenţiale a oricărui circuit de tip PAL, inclusiv a circuitului PAL16L8 prezentat mai sus. În plus el poate fi şters şi reprogramat pe cale electrică. Figura 8.14 prezintă structura unui circuit GAL16V8 când a fost configurat ca un dispozitiv strict combinaţional similar lui PAL16L8. Cea mai importanţă diferenţă între schemele prezentate în figurile 8.11 şi 8.13 este introducerea porţilor SAU-EXCLUSIV între fiecare poartă SAU şi bufferele de ieşire tristate. O schemă logică a unei macrocelule este prezentată în figura 8.14.

O1

I2

In

I1

Arie ŞI programabilă

O2Arie SAU fixăşi logică

programabilă de ieşire

Om

Figura 8.13. Circuit de ie şire configurabil.

Page 10: 8 CAPITOLUL 8 CIRCUITE LOGICE PROGRAMABILEece.ubm.ro/ea/cursuri/circuite_digitale/pdf/CD - C8 PLD.pdf · integrate bipolare LSI, denumite Circuite (arii, structuri) logice programabile

Circuite digitale

134

Figura 8.14. Circuitul GAL16V8

Circuitul din figura reprezintă o arie de porţi logice generică cu 16 intrări 8 ieşiri versatile (V).

Page 11: 8 CAPITOLUL 8 CIRCUITE LOGICE PROGRAMABILEece.ubm.ro/ea/cursuri/circuite_digitale/pdf/CD - C8 PLD.pdf · integrate bipolare LSI, denumite Circuite (arii, structuri) logice programabile

Capitolul 8. Circuite logice programabile

135

8.4 Arii logice reconfigurabile (Field Programmable Gate Arrays – FPGA)

Ariile logice reconfigurabile sunt cele mai răspândite circuite programabile în momentul de faţă. Ciclul redus de proiectare şi densitatea elementelor integrate fac ca aceste circuite să fie preferate în proiectarea sistemelor digitale. În comparaţie cu circuitele PAL preţul circuitelor FPGA este mai ridicat, dar densitate a elementelor logice este de 100-1000 de ori mai mare în circuitele FPGA. Efortul de proiectare şi riscul sunt mai reduse în comparaţie cu reducerea costurilor de proiectare, dar utilizate într-un volum mic ele sunt costisitoare.

Ariile logice FPGA au fost introduse în 1985 de firma XILINX. Poziţia de lider a fost păstrată prin continua îmbunătăţire a circuitelor, şi prin oferta soluţiilor de proiectare completă. Criteriile pe baza cărora firma şi-a păstrat prestigiul se pot unii în aşa numitul “triunghi de siliciu”, în care fiecare latură (siliciu, software şi servicii oferite) îşi are importanţa sa.

Procesul de proiectare cu circuite XILINX FPGA este rapid şi eficient, iar durata acestui proces este de câteva zile în comparaţie cu câteva săptămâni, termen obişnuit cu alte tipuri de circuite programabile.

Circuitele FPGA au structura internă asemănătoare cu cea a ariilor generice. Structura internă prezentată în figura 8.15, este organizată într-o matrice de celule înconjurate la periferie de celulele de intrare/ieşire I/O. Segmentele de interconexiuni din metal pot realiza prin intermediul punctelor de conexiune, legături între celulele logice configurabile şi celulele de intrare/ieşire.

Figura 8.15 . Arhitectura intern ă FPGA

Abundenţa de porţi logice, registre, interfeţe I/O cu o viteză de răspuns mare, sunt doar câteva caracteristici ale circuitelor logice reprogramabile FPGA. Seria circuitelor cu aria de configurare de tip SRAM include următoarele familii de produse: XC2000, XC3000, XC4000, XC5200 şi XC6200.

Page 12: 8 CAPITOLUL 8 CIRCUITE LOGICE PROGRAMABILEece.ubm.ro/ea/cursuri/circuite_digitale/pdf/CD - C8 PLD.pdf · integrate bipolare LSI, denumite Circuite (arii, structuri) logice programabile

Circuite digitale

136

8.4.1 Circuitele FPGA din seria XC4000

8.4.1.1 Descrierea structurii interne Seria XC4000 este implementată într-o structură regulară, flexibilă cu o

arhitectură programabilă, realizată prin blocuri logice configurabile (Configurable Logic Blocks, CLBs), blocuri de intrare/ieşire (Input/Output Blocks, IOBs) şi resurse de conexiuni programabile.

Circuitele sunt configurate cu ajutorul memoriei interne (inaccesibilă utilizatorului). Configuraţia este realizată fie în mod activ de către FPGA prin citirea unei memorii EPROM (serie/paralel), sau configuraţia este înscrisă de un microprocesor, microcontroler sau alt FPGA prin mai multe metode, care vor fi descrise în cele ce urmează.

8.4.1.2 Descrierea blocurilor componente Structura internă programabilă de utilizator include două elemente majore

configurabile: - Blocurile logice configurabile (CLBs); - Blocurile de intrare/ieşire (IOBs). Astfel vom avea: • Blocurile CLB furnizează elementele funcţionale şi realizează structura

logică proiectată; • Blocurile IOB furnizează interfaţa între semnalele interne şi exteriorul

circuitului (legătură realizată fizic prin intermediul pinilor). Structura cuprinde încă alte trei elemente programabile: • Fiecărui CLB îi este asociat un 3-state buffer (TBUF) a cărui ieşire este

conectată la liniile lungi asociate; • Decodificatoare rapide implementate pentru viteze ridicate; • Un oscilator intern cu frecvenţa de 8MHz; • Interconexiunile programabile furnizează resursele de conectare între

elementele CLB, IOB. Funcţia logică realizată de fiecare bloc configurabil este implementată prin

intermediul memoriei statice de configurare. Valorile stocate în aceste memorii determină starea blocurilor şi a interconexiunilor în interiorul FPGA.

8.4.1.3 Blocurile logice configurabile (CLB) CLB-urile implementează majoritatea funcţiilor logice proiectate. Elementele

principale ale unui bloc configurabil sunt arătate în figura 8.16. F şi G sunt generatoare de funcţii cu 2x4 intrări conferind astfel o versatilitate

nelimitată CLB-ului. H generator de funcţii suplimentar ce posedă 3 intrări care pot forma alte funcţii logice cu semnale de ieşire împreună cu F’ şi G’. Astfel blocul configurabil poate implementa funcţii logice cu 9 variabile de intrare, cum ar fi generatoarele de paritate, comparatoarele de identitate sau un set de două funcţii a câte patru intrări.

Blocul configurabil CLB conţine două elemente de stocare/registru (bistabili D), care se pot utiliza pentru stocarea rezultatelor date de generatoarele de funcţii. De asemenea elementele de registru sau generatoarele de funcţii se pot utiliza şi

Page 13: 8 CAPITOLUL 8 CIRCUITE LOGICE PROGRAMABILEece.ubm.ro/ea/cursuri/circuite_digitale/pdf/CD - C8 PLD.pdf · integrate bipolare LSI, denumite Circuite (arii, structuri) logice programabile

Capitolul 8. Circuite logice programabile

137

independent. Intrările DIN, H1 sunt intrări directe de stocare. Ieşirile generatoarelor de funcţii se pot utiliza ca ieşiri independente de ieşirile elementelor de stocare. Această flexibilitate măreşte resursele logice şi simplifică implementarea proiectelor. Astfel prin intermediul a 13 intrări şi 4 ieşiri este asigurat accesul la fiecare bloc configurabil. Intrările şi ieşirile respective legate la resursele programabile asigură de interconectare vor realiza funcţiile logice.

Figura 8.16 Structura intern ă a blocului logic configurabil (CLB)

Generatoarele de func ţii Generatoarele de funcţii sunt implementate ca tabele de memorii (memory

look up table). Astfel, timpul de propagare este independent de funcţia implementată. Al treilea generator de funcţii cu ieşirea H’, poate implementa orice funcţie logică Booleană cu 3 variabile. Două dintre aceste intrări împreună cu H1, ieşirile F’ şi G’ formează o altă funcţie logică. Alternativ, una sau ambele intrări (H2, H0) pot fi semnale externe blocului. Intrarea H1 provine din exterior. Semnalele de ieşire ale generatoarelor de funcţii pot forma ieşirile CLB. Ieşirile F’ sau H’ sunt conectate la ieşirea X, iar G’ sau H’ sunt conectate la ieşirea Y. Un bloc configurabil se poate utiliza pentru implementarea oricărei funcţii logice dn posibilităţile următoare:

• Orice funcţie cu până la patru variabile independente, plus orice funcţie secundară cu până la patru variabile independente, plus orice funcţie logică cu maximum trei variabile independente;

• Orice funcţie logică cu 5 variabile independente; • Orice funcţie logică cu 4 variabile împreună cu unele funcţii de 6 şase

variabile; • Unele funcţii logice cu până la 9 variabile.

Page 14: 8 CAPITOLUL 8 CIRCUITE LOGICE PROGRAMABILEece.ubm.ro/ea/cursuri/circuite_digitale/pdf/CD - C8 PLD.pdf · integrate bipolare LSI, denumite Circuite (arii, structuri) logice programabile

Circuite digitale

138

Prin implementarea funcţiilor logice, cu un număr mare de variabile într-un singur bloc, se reduce numărul de blocuri necesare pentru realizarea proiectului. De asemenea se reduc şi timpii de propagare, astfel că va creşte capacitatea de implementare şi viteza de lucru. Generatoarele de funcţii F’ şi G’ se pot utiliza ca celule de memorie RAM/ROM.

8.4.1.4 Blocurile de intrare/ie şire (IOBs) Blocurile configurabile de intrare/ieşire realizează interfaţa între mediul exterior

şi structura internă a circuitului FPGA. Fiecare IOB controlează un pin al circuitului integrat. Blocurile de intrare ieşire se pot configura ca şi port de intrare, port de ieşire sau port bidirecţional. În figura 8.17 este prezentată diagrama simplificată a blocului IOB.

Semnalele de intrare din blocul IOB spre interiorul FPGA Căile I1 şi I2 furnizează semnalele de intrare în IOB. Acestea sunt conectate la

un bistabil al cărui tact de înscriere poate fi pe front sau pe nivel logic. Blocurile IOB se pot configura astfel încât nivelele tensiunilor de intrare/ieşire

să fie compatibile cu nivele de tensiune TTL sau CMOS. Opţiunea se selectează la lansarea programului de generare a fişierului de configurare.

Figura 8.17 Diagrama simplificat ă a blocului de intrare / ie şire la seria XC4000X

Semnale de ie şire din IOB În mod opţional semnalele de ieşire se pot inversa în interiorul blocului de

intrare/ieşire. Aceste semnale se pot conecta direct la ieşirea pinului sau la bistabilul de ieşire din IOB. Seria XC4000X permite un curent maxim de ieşire de 12mA/ ieşire.

Page 15: 8 CAPITOLUL 8 CIRCUITE LOGICE PROGRAMABILEece.ubm.ro/ea/cursuri/circuite_digitale/pdf/CD - C8 PLD.pdf · integrate bipolare LSI, denumite Circuite (arii, structuri) logice programabile

Capitolul 8. Circuite logice programabile

139

8.4.1.5 Interconexiunile programabile Toate conexiunile interne sunt compuse din segmente de metal cu puncte de

cuplare programabile şi matrice de cuplare pentru realizarea legăturilor interne. Există următoarele tipuri de conexiuni: • Realizarea legăturilor între blocurile CLB este asociată rândurilor şi

coloanelor matricei CLB; • Realizarea legăturilor între blocurile IOB formează un cordon în jurul

matricii CLB (VersaRing), acest cordon conectează pinii I/O cu blocurile logice interne;

• Conexiunile globale sunt compuse din reţele dedicate, proiectate pentru distribuirea rapidă a semnalelor de comandă şi control utilizate în proiect.

Se disting 5 tipuri de linii de interconectare: linii de lungime simplă, linii de lungime dublă, linii de lungime quad-dublă, linii de lungime octală, linii lungi.

Figura 8.18 Interconexiuni programabile .

Matrice de conexiuni programabile

Page 16: 8 CAPITOLUL 8 CIRCUITE LOGICE PROGRAMABILEece.ubm.ro/ea/cursuri/circuite_digitale/pdf/CD - C8 PLD.pdf · integrate bipolare LSI, denumite Circuite (arii, structuri) logice programabile

Circuite digitale

140

8.4.2 Realizarea leg ăturilor între blocurile CLB În figura 8.19 sunt prezentate resursele de conectare ale unui bloc CLB. Liniile

de culoare închisă există numai la circuitele XC4000EX.

Figura 8.19. Realizarea leg ăturilor între blocurile CLB

Întrările şi ieşirile în blocurile configurabile sunt distribuite în toate cele patru direcţii, pentru ca realizarea conexiunilor să fie cât mai flexibilă. Poziţia intrărilor şi ieşirilor CLB este interschimbabilă pentru evitarea congestiunilor, în timpul plasări şi realizări conexiunilor.

8.4.3 Matricea de cuplare programabil ă Liniile de simplă şi dublă lungime verticale şi orizontale se intersectează în

aşa numita matrice de cuplare programabil ă (pragrammable switcing matrix – PSM). Fiecare matrice este alcătuită din tranzistoare de trecere utilizaţi pentru realizarea conexiunilor între linii (figura 8.20).

Figura 8.20 Matricea programabil ă de cuplare

Page 17: 8 CAPITOLUL 8 CIRCUITE LOGICE PROGRAMABILEece.ubm.ro/ea/cursuri/circuite_digitale/pdf/CD - C8 PLD.pdf · integrate bipolare LSI, denumite Circuite (arii, structuri) logice programabile

Capitolul 8. Circuite logice programabile

141

8.4.4 Configurarea circuitelor FPGA Procesul de configurare este metoda prin care un proiect un proiect digital este

implementat (tradus în fişier hartă de biţi) şi transmis printr-o anumită metodă circuitului FPGA. Metoda se aseamănă cu programarea perifericelor unui microprocesor. Pentru configurarea unui CLB şi a conexiunilor asociate se utilizează câteva sute de biţi. Fiecare bit de configurare defineşte starea unei celule de memorie statice care controlează un bit din tabela de stări, intrare multiplexor sau punct de tranziţie programabil. Sistemul de dezvoltare traduce proiectul într-o listă de conexiuni de format Xilinx sau EDIF.

Secven ţa de configurare În secvenţa de configurare apar patru perioade distincte: • Ştergerea memoriei de configurare; • Iniţializarea circuitului; • Configurarea circuitului; • Modul de funcţionare dorit.

8.5 Circuite logice programabile complexe CPLD (Com plex programmable logic device)

Circuitele de tip CPLD pot fi considerate ca fiind colecţie de circuite de tip PLD pe un singur chip, împreună cu o structură de conexiuni programabile, care permite circuitelor PLD de a fi conectate între ele.

Figura 8.21. Arhitectura general ă a unui CPLD.

Seria Xilinx XC9500 este o familie de circuite CPLD cu arhitectură similară dar cu un număr variabil de pini de I/E precum şi un număr variabil de circuite PLD (Xilinx numeşte aceste blocuri funcţionale FB Functional Blocks). PLD-urile interne au 36 intrări şi 18 macrocelule şi ieşiri. Un CPLD din această familie poate avea între 2 şi 16PLD-uri, între 36 şi 288 macrocelule şi sunt împachetate în circuite având între 44 şi 352 pini.