5 arhitectura circuitelor fpga. familia …ece.ubm.ro/clp/index_files/curs_6_7.pdf · arhitectura...

19
Capitolul 5 5 ARHITECTURA CIRCUITELOR FPGA. FAMILIA XC4000 (Field Programmable Gate Array) 5.1 Generalităţi Un circuit FPGA (Field Programmable Gate Array) este alcătuit dintr-un număr mare de celule logice de bază numite blocuri logice configurabile (vezi figura 5.1), care sunt mai mici decât un circuit PLD obişnuit. Aceste celule logice sunt distribuite pe toată suprafaţa cipului. Fiecare celulă este înconjurată de interconexiuni programabile ansamblul acestor interconexiuni poartă numele de matrice de conexiuni programabile. Întreg ansamblul de celule şi interconexiuni se află într-un inel format de blocurile de intrare / ieşire. Un bloc logic configurabil poate implementa mai puţine funcţii logice decât un circuit PLD, dar numărul acestor blocurilor logice configurabile dintr-un circuit FPGA este mai mare decât numărul de circuite PLD dintr-un circuit PLD raportat la aceeaşi dimensiune a pastilei de siliciu. Figura 5.1 Arhitectura generală a circuitelor FPGA

Upload: dotram

Post on 23-Feb-2018

226 views

Category:

Documents


1 download

TRANSCRIPT

Capitolul 5 5 ARHITECTURA CIRCUITELOR FPGA. FAMILIA XC4000

(Field Programmable Gate Array)

5.1 Generalităţi Un circuit FPGA (Field Programmable Gate Array) este alcătuit dintr-un număr mare de celule logice de bază numite blocuri logice configurabile (vezi figura 5.1), care sunt mai mici decât un circuit PLD obişnuit. Aceste celule logice sunt distribuite pe toată suprafaţa cipului. Fiecare celulă este înconjurată de interconexiuni programabile ansamblul acestor interconexiuni poartă numele de matrice de conexiuni programabile. Întreg ansamblul de celule şi interconexiuni se află într-un inel format de blocurile de intrare / ieşire. Un bloc logic configurabil poate implementa mai puţine funcţii logice decât un circuit PLD, dar numărul acestor blocurilor logice configurabile dintr-un circuit FPGA este mai mare decât numărul de circuite PLD dintr-un circuit PLD raportat la aceeaşi dimensiune a pastilei de siliciu.

Figura 5.1 Arhitectura generală a circuitelor FPGA

Capitolul 5

69

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ă. Una dintre cele mai cunoscute familii este XC4000E, despre care vom discuta în continuare. Cel mai mic membru al familiei XC4000E este circuitul XC4003E alcătuit dintr-o arie 10X10 blocuri logice configurabile (CLB = Configurable Logic Blocks). Componenta cu capacitatea cea mai mare din familia XC4000E este circuitul XC4000EX care conţine 1.024 CLB-uri (arie 32X32). Prin extinderea caracteristicilor familie XC4000EX a rezultat familia XC4000XL, cel mai mare membru al acestei familii este circuitul XC4085XL care conţine 3.136 CLB-uri (vezi tabelul T5.1).

Tabelul T5.1 Familia de circuite FPGA XC4000

În tabelul T5.1 sunt prezentaţi membri familiei XC4000. Pe primele două coloane este dat numărul de blocuri logice configurabile (CLB-uri), pe cea de a doua coloană numărul maxim de porturi de intrare/ieşire. Deoarece se folosesc mai multe tipuri de capsule (cu număr diferit de pini), nu toate porturile se vor regăsii la pinii externi, în cazul capsulelor cu număr mai mic de pini. La fel ca şi în cazul circuitelor CPLD, proiectantul are posibilitatea de a migra de la un circuit FPGA de capacitate mai mică la un altul de capacitate mai mare, păstrând tipul de capsulă. În cea de a cincia coloană a tabelului se dă numărul maximi de bistabile pentru fiecare membru al familie. După cum se va studia mai departe se va putea observa că avem câte două bistabile pentru fiecare CLB şi fiecare IOB (Input/Output Block = bloc de intrare/ieşire). Fiecare CLB poate implementa memorii SRAM de maxim 32 de biţi. Astfel că se poate vorbii de capacitatea maximă a unei memorii ce poate fi implementată într-un circuit FPGA, vezi coloana a şasea din tabelul T5.1. În ultimele două coloane ale tabelului este exprimată capacitatea fiecărui circuit în număr de

Arhitectura circuitelor FPGA. Familia XC4000

70

porţi logice. Se poate observa că numărul de porţi logice este variabil, el depinzând de logica implementată, combinaţională sau secvenţială. Se poate considera că fiecare celulă de memorie RAM este implementată cu un bistabil de tip D. Pentru implementarea bistabiluli de tip D sunt necesare 4 porţi logice, rezultă că 32 celule SRAM X 4 = 128 de porţi logice/CLB. 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 şi următoarele familii de produse: XC2000, XC3000, XC4000, XC5200 şi XC6200.

5.2 Descrierea seriei XC4000

Seria XC4000 este implementată intr-o structură regulară, flexibilă cu o arhitectură programabilă, realizată prin blocuri/celule logice configurabile (Configurable Logic Blocks, CLBs), blocuri/celule de intrare/ieşire (Input/Output Blocks, IOBs) şi resurse de conexiuni programabile (vezi figura 5.2). 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ă.

5.2.1 Descrierea funcţională

Seria XC4000 realizează prin tehnologia submicron avansată, o arhitectură performantă cu o viteză de lucru ridicată. Seriile XC4000E şi XC4000X permit frecvenţe de funcţionare externă de 80MHz, iar structura internă poate funcţiona chiar şi la frecvenţe de 150MHz. Seria XC4000 oferă realizarea unor structuri de dual – port RAM, inhibarea frecvenţei de tact, transmisia carry rapidă la operaţii aritmetice. Circuitele sunt flexibile în aplicaţii, mai ales unde este nevoie de utilizarea unor circuite de memorii rapide. 5.2.2 Descrierea blocurilor componente

Structura internă programabilă de utilizator include două elemente majore configurabile (vezi figura 5.2) : - Blocurile logice configurabile (CLBs); - Blocurile de intrare / ieşire (IOBs). Astfel vom avea:

Capitolul 5

71

- 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).

Figura 5.2 Arhitectura internă XC4000

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. 5.3 Blocurile logice configurabile (CLB) CLB-urile implementează majoritatea funcţiilor logice proiectate. Elementele principale ale unui bloc configurabil sunt arătate în figura 5.3. F şi G 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 dintre care două provin de la generatoarele de funcţii F şi G, iar a treia provine din exterior de la unul din CLB-ulurile vecine. 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 cu câte patru intrări. Blocul configurabil CLB conţine două elemente de stocare numite registre (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

Arhitectura circuitelor FPGA. Familia XC4000

72

utiliza şi 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 de interconectare vor realiza funcţiile logice.

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

5.3.1 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 luând în considerare următoarele posibilităţi:

Capitolul 5

73

- 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 independente1;

- 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. 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.

5.3.2 Bistabilii interni Pe lângă faptul că sunt ieşiri pentru reţeaua de interconexiuni, ieşirile combinaţionale pot fi şi sursă de intrare pentru bistabili interni ai CLB pentru realizarea circuitelor secvenţiale. Bistabilii sunt de tip D şi au tactul de înscriere pe front pozitiv prin semnalul comun de tact K. Inhibarea tactului se realizează prin semnalul EC. Prin semnalul de inhibare ambele intrări de tact se pot inhiba sau nu în mod permanent.

5.3.3 Intrarea de tact Fiecare bistabil poate fi înscris atât pe frontul pozitiv cât şi pe cel negativ al tactului. Deşi semnalul K este comun el se poate inversa separat la fiecare dintre intrările bistabililor. Orice invertor plasat la intrarea de tact este “absorbit” în mod automat de CLB. 5.3.4 Inhibarea de ceas Semnalul de inhibare EC este activ pe nivel logic High. Semnalul comandă inhibarea la ambele elemente de stocare, dar lăsat neconectat va avea valoare logică implicită. Semnalul nu este inversabil la intrarea în bistabil.

5.3.5 Set / Reset Setarea şi resetarea bistabililor se face în mod asincron prin intermediul semnalelor SR/H0. Această opţiune determină starea bistabililor în momentul când ele devin active după configurare . De asemenea determină efectul semnalului de Set / Reset global pe perioada normală a operaţiei şi totodată determină efectul semnalului SR al CLB.

1 În cazul generării a 3 funcţii separate, una dintre funcţii trebuie să furnizeze intrarea bistabilului intern al CLB. Doar două funcţii combinaţionale sunt realizabile.

Arhitectura circuitelor FPGA. Familia XC4000

74

Starea Set / Reset se specifică prin utilizarea atributului INIT, sau prin amplasarea în schema electrică a simbolurilor corespunzătoare din biblioteca de circuite secvenţiale. SR nu este inversabil în interiorul CLB şi este activ pe 1 logic.

5.3.6 Set / Reset global Un semnal global Set / Reset asigură ştergerea bistabililor în momentul cuplării la tensiune, pe durata reconfigurării, sau când linia de reset global este activată. Această linie de reset global GSR nu interferează cu resursele de interconectare, ea este implementată într-o reţea separată. Fiecare bistabil este configurat în aşa fel ca atât setarea locală SR sau globală GSR să seteze bistabilul. Semnalul GSR se poate conecta la orice pin programabil. Pentru a utiliza această legătură globală se va specifica în schema electrică un buffer de intrare şi un pin de legătură în modul arătat în figura 5.4, sau în program HDL se va specifica GSR.

Figura 5.4 Schema de conectare a semnalului global Set / Reset

Opţional se poate insera un invertor după buffer-ul de intrare pentru a inversa sensul semnalului global GSR.

5.3.7 Intrări şi ieşiri de date Sursa semnalului de intrare în bistabil este programabilă. Acest semnal de intrare se poate selecta dintre funcţiile F’, G’ şi H’, sau de la semnalul de intrare directă Direct_In (DIN) a blocului programabil. Două căi de trecere rapidă sunt multiplexate împreună cu ieşirile bistabililor. Aceste căi de trecere uneori sunt utilizate de programul de interconectare automată pentru alimentarea unor semnale interioare. 5.3.8 Semnale de control Multiplexoarele interne ale CLB facilitează implementarea funcţiilor alese (figura 5.3). Multiplexoarele sunt controlate de semnalele (C1 – C4), sau de semnalele interne rezultante (H1, DIN/H2, SR/H0 şi EC). Oricare dintre aceste

Capitolul 5

75

semnale sunt sursa semnalelor de control intern. Când funcţia logică este activă atunci aceste semnale sunt: - EC – Clock Enable; - SR/H0 – Set/Reset asincron sau intrarea H0 a generatorului de funcţie H; - DIN/H2 – Intrare directă H2 a generatorului de funcţii H; - H1 – Intrarea directă H1 a generatorului de funcţii H. Dacă blocul este configurat ca şi memorie RAM/ROM cele patru intrări au semnificaţia: - EC – Clock Enable; - WE – Write Enable; - D0 – Intrare dată pentru generatorul de funcţie F şi /sau G; - D1 – Intrare dată pentru generatorul de funcţie G (mod RAM/ROM 16x1 şi 16x2)

sau bitul de adresă 24 (mod 32x1).

5.3.9 Generatoarele de funcţii utilizate ca RAM

Generatoarele de funcţii F’ şi G’ se pot utiliza ca celule de memorie RAM/ROM. Modurile de configurare posibile sunt: Înscriere pe nivel logic; Înscriere pe front pozitiv / negativ; Port dual cu înscriere pe front pozitiv / negativ. Modurile de configurare acceptate pentru portul simplu şi dual sunt prezentate în tabelul T5.2.

Tabel T5.2 Moduri de configurare a memoriei

16x1 16x2 32x2 Înscriere pe

front

Înscriere pe

nivel logic

Sigle-port Da Da Da Da Da

Dual-port Da Da

5.3.10 Opţiuni de configurare ale memoriilor RAM

Circuitele RAM realizate cu seria XC4000 pot lucra în două moduri de lucru:

- Modul de lucru sincron (Edge – Triggered) - Informaţia este înscrisă pe frontul pozitiv / negativ al tactului, WE funcţionează ca semnal de inhibare tact de înscriere.

- Modul de lucru asincron (Level – Sensitive) - Semnalul extern WE funcţionează ca semnal de înscriere (strobe).

Arhitectura circuitelor FPGA. Familia XC4000

76

î Figura 5.5. Căile de propagarea a bitului de transport

5.3.11 Logica de propagare carry Fiecare generator de funcţii din CLB conţine circuite aritmetice dedicate generări rapide a bitului de transport (superior / inferior sau carry / borrow). Acest semnal de ieşire este conectat la blocul logic adiacent. Circuitul logic dedicat realizării bitului de transport măreşte performanţele circuitelor de adunare / scădere şi numărătoare. Acest fapt orientează circuitele FPGA pentru aplicaţii în care prelucrarea semnalelor necesită viteză mare de calcul. Această realizare a bitului de transport este cel mai însemnat avantaj al seriei XC4000 ce permite realizarea unor circuite numărătoare cu o frecvenţă de lucru de până la 70Hz. Propagarea bitului de transport este realizată conform figurii 3.5.

5.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 5.6 este prezentată diagrama simplificată a blocului IOB.

5.4.1 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 bisatbil al cărui tact de înscriere poate fi pe front sau pe nivel logic.

Capitolul 5

77

Blocurile IOB se pot configura astfel încât nivelel tensiunilor de intrare / ieşire să fie compatibile cu nivelel de tensiune TTL sau CMOS. Opţiunea se selecteză la lansarea programului de generare a fişierului de configurare.

5.4.2 Intrări pe registru Semnalel I1 şi I2 se pot conecta la bistabilul de intrare al blocului IOB. Semnalul de inhibare a bistabililor din IOB poate fi configurat astfel încât să fie comun sau separat pentru cele două registre. Acest semnal nu se poate inversa în interiorul IOB.

Figura 5.6 Diagrama simplificată a blocului de intrare / ieşire la seria XC4000X Suprafeţele haşurate indicând diferenţele faţă de seria XC4000E

5.4.3 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 egal 12mA / ieşire. O ieşire se poate configura ca ieşire open – drain (open – collector) prin plasarea unui buffer 3-state (OBUFT) în schema circuitului (vezi figura 5.7).

Arhitectura circuitelor FPGA. Familia XC4000

78

Figura 5.7. Ieşirea Open – Drain

5.4.4 Controlul vitezei de creştere a semnalului

(Slew Rate Control)

Slew rate-ul fiecărui buffer, este redus pentru a minimiza consumul de putere şi pentru a minimiza semnalele tranziente la tensiunea de alimentare. Sarcina capacitivă la cuplări simultane în aceeaşi direcţie este de 200pF între tensiunea de alimentare şi masa de alimentare.

5.4.5 Linia globală de comandă a ieşirilor 3 – state O linie globală separată permite forţarea în starea de impedanţă ridicată a tuturor ieşirilor FPGA – ului, cu excepţia cazului testărilor perimetrice (boundary scan). Această linie globală (GTS) nu consumă resursele de conectare, ci este o linie dedicată, linie ce poate fi comandată de la orice port IOB al circuitului. Linia poate de asemenea fi comandată şi de la un nod intern, similar semnalului GSR.

5.5 Buffer – ele de impedanţă ridicată Fiecărui CLB îi este asociată o pereche de buffere (vezi figura 5.8) de impedanţă ridicată. Aceste buffere se pot utiliza pentru a conecta blocul CLB la linia orizontală lungă, pentru a realiza funcţia wired or/and. Dar la fel se pot implementa reţele multiplexate sau bus bidirecţional salvând astfel resursele logice ale CLB. Rezistoarele programabile ataşate acestor linii orizontale ajută la implementarea funcţiilor wired or/and. Un alt buffer cu acces similar este aşezat în dreapta fiecărui bloc de intrare / ieşire. Liniile lungi orizontale au o rezistenţă implementată la fiecare capăt pentru a prevenii stările logice flotante.

5.5.1 Modurile de utilizare ale buffer-elor 3 – state Aceste buffere se pot configura în trei moduri: - Buffer 3 – state standard; - Funcţie cablată wired – and cu intrare pe pinul I; - Funcţie cablată wired or – and.

Capitolul 5

79

Figura 5.8 Interconexiuni programabile

5.6 Realizarea decodificatoarelor rapide de capacitate ridicată Circuitele dedicate ajută la realizarea funcţiilor de decodificare. În cazul în care numărul biţilor de adresă sau de date este mare, atunci pentru realizarea decodificatoarelor generatoarele de funcţii realizează această funcţie de decodificare prin nivele ierarhice multiple, ceea ce măreşte timpul de propagare. Ieşirile decodificatoarelor implementate în CLB pot fi intrări pentru alte blocuri configurabile, astfel că se realizează o structură asemănătoare circuitelor PAL. De asemenea ieşirile decodificatoarelor se pot conecta direct la ieşirile circuitului (pin IOB).

Parte comună atât seriei XC4000E cât şi seriei Corespunde numai seriei XC4000Matrice de cuplare programabilă

Arhitectura circuitelor FPGA. Familia XC4000

80

5.7 Oscilator intern on – chip Seria XC4000 posedă un oscilator intern implementat pe chip. Acest oscilator este utilizat ca semnal de tact în momentul proxim cuplării la tensiune, pentru lansarea procesului de configurare şi ştergerea memoriei de configurare. La fel este sursă de semnal a pinului CCLK în mod de configurare master. Frecvenţa nominală a oscilatorului este de 8MHz, dar frecvenţa variază în funcţie de tensiunea de alimentare şi temperatură. Frecvenţa de ieşire poate varia între 4 şi 10 MHz. Ieşirile oscilatorului sunt disponibile utilizatorului după configurarea circuitului. Aceste ieşiri sunt frecvenţe ce se obţin de la ieşirea divizorului de frecvenţă. Aceste ieşiri sunt frecvenţele ce se obţin de la ieşirile divizorului de frecvenţă şi sunt biţii 4, 9, 14, 19. Astfel dacă frecvenţa nominală a oscilatorului este 8MHz, atunci frecvenţele divizate sunt: 500kHz, 16kHz, 490Hz, şi 15Hz. Aceste semnale se pot utiliza în schema electrică prin plasarea simbolului OSC4 (vezi figura 5.9).

Figura 5.9 Simbolul oscilatorului intern al FPGA –ului XC4000

5.8 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.

Capitolul 5

81

5.8.1 Realizarea legăturilor între blocurile CLB

În figura 5.10 sunt prezentate resursele de conectare ale unui bloc CLB. Liniile de culoare închisă există numai la circuitele XC4000EX.

Figura 5.10 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.

5.8.2 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). Romburile de la intersecţia a două linii reprezintă tranzistoarele de trecere utilizate pentru realizarea conexiunilor între linii (vezi figura 5.11.a). În figura 5.11.b sunt prezentate câteva posibilităţi de interconectare oferite de PSM.

Arhitectura circuitelor FPGA. Familia XC4000

82

Figura 5.11.a Matricea programabilă de cuplare Figura 5.11.b Posibilităţi de

interconectare a două linii

5.8.3 Linii de simplă lungime Liniile de simplă lungime permit interconectarea rapidă a blocurilor adiacente. Fiecărui bloc îi sunt asociate 8 linii verticale şi 8 linii orizontale de simplă lungime. Aceste linii sunt conectate în matrice programabile situate la intersecţiile fiecărei linii şi coloane. Conectarea liniilor de simplă lungime la matricele programabile este arătată în figura 5.12, iar realizarea conexiunilor este arătată în figura 5.8. Liniile de simplă lungime introduc întârzieri în propagarea semnalelor ori de câte ori intră într-o matrice programabilă. Din această cauză nu sunt utilizabile pentru realizarea legăturilor la “distanţă”. Ele sunt utilizate în mod normal pentru a ghida semnalele într-o arie restrânsă.

5.8.4 Liniile de dublă lungime Liniile de dublă lungime realizează o grilă din segmente de metal. Fiecare linie are lungime dublă în comparaţie cu liniile simple. Liniile duble sunt grupate în perechi şi intră în fiecare a doua matrice (vezi figura 5.12). Fiecărui CLB i se asociază patru linii verticale şi patru linii orizontale, pentru realizarea conexiunilor. Realizarea conexiunilor este arătată în figura 5.8. 5.8.5 Linii lungi Liniile lungi asemănător liniilor de dublă lungime formează o grilă de metal ce acoperă toată aria circuitului. Aceste linii cu un fun-out ridicat şi timpi de propagare minimi pot conduce la semnale critice. La cele două linii orizontale fiecare CLB se poate conecta prin intermediul unui buffer 3-state. Astfel că aceste linii pot implementa bus-uri uni- sau bi-direcţionale sau funcţii cablate.

Capitolul 5

83

Figura 5.12 Liniile de simplă şi dublă lungime şi matricile programabile

Figura 5.13 Diagrama de conexiuni a seriei XC4000 cu cordonul VersaRing (în stânga)

Decodificatoarele (WED) şi blocurile I/O

Suprafeţele haşurate corespund numai seriei XC4000X

Arhitectura circuitelor FPGA. Familia XC4000

84

5.8.6 Resurse de conectare a intrărilor / ieşirilor Seria XC4000 posedă resurse suplimentare pentru conectarea blocurilor IOB. Un cordon de legături realizat în jurul blocurilor CLB, numit VersaRing facilitează conectarea pinilor şi realizarea conexiunilor interne fără a consuma resursele de conectare pentru implementarea proiectului. Cordonul VersaRing conţine opt linii de dublă lungime şi patru linii lungi (vezi figura 5.13).

5.9 Configurarea circuitelor FPGA Procesul de configurare este metoda prin care 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.

5.9.1 Pinii dedicaţi pentru selectarea modului de configurare În momentul cuplări la tensiune starea logică a celor trei pini dedicaţi (M2, M1, M0) determină metoda de configurare. După configurarea circuitului aceşti pini se pot folosi ca intrări (M2, M0) şi ieşiri (M1) ale FPGA. Considerând cei trei pini de configurare sunt permise opt moduri de configurare. Aceste moduri sunt arătate în tabelul T5.2. Astfel conectând toţi pinii de ieşire la 1 logic circuitul FPGA va funcţiona în mod slave serial, care este modul de lucru cel mai popular , în care datele de configuraţie vor fi transmise în mod serial de la un alt FPGA, sau un microprocesor sau microcontroler. Deşii pinii de mod conţin rezistenţă integrată de 100 kΩ, se recomandă conectarea unor rezistenţe cu valoarea 4,7 kΩ. După cum se poate observa şi din tabelul T5.3 circuitele din seria XC4000 pot fi configurate în şase moduri dacă nu se consideră cele trei moduri de Master un singur mod de configurare. Modurile de configurare se pot clasifica în : - Moduri master (trei moduri de configurare); - Moduri paralel (două moduri de configurare); - Moduri slave (utilizate mai ales în daisy – chain). Ultimul mod de configurare modul expres se poate considera un mod de configurare serial, care permite configurarea rapidă a circuitelor XC4000EX.

Capitolul 5

85

Tabel T5.3 Moduri de configurare

Moduri de configurare

M2 M1 M0 CCLK Data

Master Serial 0 0 0 ieşire Bit-serial

Slave Serial 1 1 1 intrare Bit-serial

Master Paralel,

prin incrementare

1 0 0 ieşire Byte – Paralel, prin

incrementare de la 00000H

Master Paralel,

prin decrementare

1 1 0 ieşire Byte – Paralel, prin

decrementare de la 3FFFH

Periferial Sincron 0 1 1 intrare Byte - Parale

Periferial Asincron 1 0 1 ieşire Byte - Parale

Expres 0 1 0 intrare Byte - Parale

Rezervat 0 0 1 - -

5.9.2 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.

5.10 Producători de circuite FPGA şi medii de proiectare

Firma ACTEL este un producător cunoscut de circuite FPGA, câteva familii de circuite produse de această firmă sunt: ACT 1 (aprox. 2000 de porţi logice), ACT 2 (2500 – 8000 porţi logice), ACT 3 (capacitate de până la 10.000 de porţi logice). Alte circuite FPGA realizate de firma Actel sunt familiile Actel 1200XL şi 3200DX Integrator care sunt destinate aplicaţiilor cu preţ de cost relativ redus şi performanţe medii. Tehnologia CMOS de realizare este de 0,6 µm. De asemenea firma Actel pune la dispoziţia proiectantului şi un set de programe de proiectare reunite sub numele Actel Designer Series. Acest mediu de proiectare oferă soluţii complete, de la descrierea proiectului şi până la programarea şi testarea circuitului logic. O altă familie de circuite FPGA este familia AT6000 produsă de firma ATMEL. Această familie de circuite se bazează pe celule de tip SRAM. Densitatea

Arhitectura circuitelor FPGA. Familia XC4000

86

circuitelor din această familie este cuprinsă între 2000 - 20.000 de porţi logice, plus 1024 – 6400 registre şi sunt realizate în tehnologie CMOS de 0,8 µm. Firma Atmel oferă şi un mediu de proiectare complet (Atmel Integrated Development System) disponibil atât pentru PC-uri cât şi pentru staţii de lucru Sun. Un alt producător cunoscut de circuite FPGA este firma LUCENT Technologies (fostă AT&T Microelectronics). Circuitele FPGA produse de această firmă sunt cunoscute sub numele de ORCA (Optimized Reconfigurable Cell Arrays = matrici de celule logice reconfigurabile optimizate). Circuitele din familiile ORCA: OR1C,OR2C, OR2T, OR2CA, OR2TA, OR3CA, OR3TA, au ca şi celule de bază mici memorii de tip SRAM şi sunt realizate în tehnologie CMOS de la 0,6 până la 0,35µm. Capacitatea circuitelor este cuprinsă între 3.500 şi 11.400 de porţi logice. Prin intermediul mediului de proiectare numit ORCA Foundry firma Lucent oferă un pachet de programe de implementare a proiectelor care în prealabil au fost sintetizate cu aşa numitul pachet de programe SCUBA (Syntesis Compiler for User Programmable Arrays) oferit de o firmă terţă. Alte firme producătoare de circuite FPGA sunt: Gatefield (familiile GFxxxF ProASIC), Motorola (familiile MPA10xx) şi QuickLogic (familiile pASICx).