You are on page 1of 59

Sistemet Elektronike te

Programueshem
PLD, PAL, GAL, CPLD, FPGA

Punoi: Prof. Luan Karcanaj


Dr. Ilir Shinko
Dr. (proc) Marsida Ibro
LEKSION
Programmable Array logic (PAL)

Në vitet 70të, në fillim të revolucionit numerik (dixhital) nevojat e lindura në fushën e


elektronikës numerike mund të zgjidheshin pa probleme me portat standartë të teknikës TTL. Por,
për të plotësuar kërkesat gjithnjë në rritje të tregut, pothuaj çdo ditë zhvilloheshin teknologji të
ndryshme të tilla si ECL, low Schottky TTL, I2L, MOS, CMOS etj, të cilat hidhnin në treg elementë të
ri logjkë me shpejtësi dhe shkallë integrimi gjithnjë e më të lartë.
Prodhimi i mikroprocesorit i dha impuls të mëtejshem zhvillimit të elementëve të integruar
numerikë, sepse i vuri projektuesit e firmave të ndryshme prodhuese përpara problemeve të reja
teknologjike që kërkonin zgjidhje. Kështu ndaj projektuesve të qarqeve të integruar, veç kërkesës së
përhershme për rritjen e shpejtësisë së elementëve të integruar, lindi dhe kërkesa për rritjen e
densitetit të integrimit e kompleksitetit të tyre, pra edhe e nevojës për konsum të vogël energjie
nga ana e tyre. Natyrisht me rritjen e shkallës së kompleksitetit dhe të specializimit të elementëve
të integruar zvoglohen mundësitë e përdorimit të tyre, si ne fig.4.1, kurse për elementët e thjeshtë
logjikë këto mundësi janë gjithmonë të hapura, sepse nevoja për funksione të thjeshta logjike është
gjithnjë e pranishme.

Fig.4.1 Frekuenca e përdorimit të qarqeve të integruar

Megjithatë edhe pse funksionet e ndryshme logjikë mund të realizohen me elementë


standardë (porta logjike standarde), nevoja për zvoglimin e përmasave të qarqeve të stampuar çoi
në projektimin e elementëve logjikë të programueshëm PLD (Programmable Logic Devices): PAL,
GAL, me anë të të cilëve mund të realizohen funksione të ndryshme logjikë, nëpërmjet programimit
të tyre nga vetë përdoruesi, ose nga fabrika në përputhje me kërkesat e përdoruesit. Këta elementë
kanë pothuajse të njëjtën bërthamë në strukturat e tyre: një matricë të programueshme të
funksionit AND me shumë hyrje, që përsëritet. Daljet e këtyre bërthamave lidhen më pas në mënyrë
fikse me hyrjet e një matrice të funksionit OR. Me zhvillimin e mëtejshem të këtyre teknologjive dhe
në përgjigje të nevojave gjithnjë në rritje u zhvilluan me vonë elementë më kompleksë të
programueshem: CPLD (Complex PLD) dhe FPGA (Field Programmable Gatë Arrays).
Elementët CPLD kanë një strukturë me matricë të shumëfishtë (Multiple Array Structure) me shumë
blloqe të ngjashme me PAL, të cilët lidhen me njëri tjetrin nëpërmjet një matrice komutimi. Ndërsa
ndërtimi i brendshëm i elementët FPGA është i lidhur ngushtë me strukturën GAL (Gate Array Logic).
Tani, le të njihemi me më parë me strukturën e elementëve PAL dhe GAL, të cilat, siç do të shihet,
do të ndihmojnë në studimin e strukturave më komplekse CPLD dhe FPGA.

Ndërtimi i brendshëm i qarkut të integruar PAL

Për t`u njohur me mundësitë e përdorimit të PAL në realizimin e funksioneve të ndryshme logjike
duhet të njihemi më parë me struktur;n e tij logjike dhe simbolin e tij. Për këtë le të shqyrtojmë në
fillim një portë AND me dy hyrje A dhe B (Fig. 4.2), funksioni në dalje të të cilit përshkruhet nga
barazimi logjik = ∙ .

Fig.4.2 Porta AND

Kjo paraqitje e zakonëshme, në simbolikën PAL zëvendësohet me portën AND me një linjë
horizontale “Linja Produkt” dhe dy linja vertikale “Linjat e Hyrjes” A dhe B, si në fig.4.3.

Fig.4.3 Porta AND e paraqitur në simbolikën PAL

Duke u mbështetur në kuptimin algjebrik, funksioni P=A*B në dalje të portës quhet “Termi Produkt”.
Në strukturën bazë të PAL, shih Fig.4.4, ndodhen dy bufera për buferizimin e dy hyrjave A dhe B, dy
porta AND dhe një portë OR me dy hyrje. Secili buffer përmban dy dalje (të pa invertuar dhe të
invertuar), kështu që në këtë strukturë ka katër linja “të hyrjes” të cilat duke u kombinuar me dy
“linjat podukt” të portave AND formojnë një matricë të programueshme me 4 x 2 elementë, e cila
quhet “Matrica 4 x 2 AND” (AND ARRAY). Siç shihet nga fig.4.4 të dy termat produkt P1 dhe P2 lidhen
në dy hyrjet e portës OR. Si rrjedhojë në dalje të kësaj porte merret funksioni = 1 + 2, i cili,
duke u mbështetur në kuptimin algjebrik quhet “Shumë e Produkteve”.
Fig.4.4 Struktura bazë PAL

Një nga vetitë fundamentale të të gjithë elementëve PAL (shih Fig.4) është se në përgjithësi të gjithë
termat produkt në daljet e portave AND lidhen në mënyre fikse me hyrjet e portës OR. Kështu, kjo
strukturë ka marrë emrin “Matricë fikse OR”. Do të përdorim shkurtimin FOA nga emërtimi anglisht
“Fixed OR Array”. Për të kuptuar mënyren e programimit të matricës së hyrjes “AND ARRAY” le të
shqyrtojme skemën e fig.4.5

Fig.4.5 Siguresat e programimit të matricave: AND ARRAY

Në matricën e hyrjes, numri i linjave produkt, pra numri i hyrjeve në secilën portë AND është i
barabartë me numrin e linjave të hyrjes. Në secilën linje produkt, pranë pikave të kryqëzimit të
linjave produkt me linjat e hyrjes, ndodhen siguresa (siguresat f1-f8), prania e të cilave krijon
mundësine e programimit të funksioneve logjikë. Siguresa e rregulltë përfaqëson një lidhje të linjes
së hyrjes me linjën përkatëse produkt në hyrje të portës, ndërsa siguresa e djegur përfaqëson një
ndërprerje ndërmjet tyre. Procesi i programimit të kësaj matrice do të trajtohet më vonë.
Në Fig.4.6 jepet shembulli i programimit të funksionit EXOR: = ∙ + ̅ ∙ . Siç shihet, për
realizimin e këtij funksioni, me anë të programimit duhen djegur siguresat: f2,f3,f5 dhe f8, ndërsa
siguresat e tjera: f1, f4, f6 dhe f7 duhet të lihen të paprekura.
Fig.4.6 Funksioni EXOR i programuar

Në simbolikën PAL, çdo lidhje ndërmjet linjave të hyrjes dhe linjave produkt shënohet me “x”, si në
Fig.4.7. Kjo mënyrë shënimi e thjeshton shumë skemën e realizimit të funksionit.

Fig.4.7 Funksioni EXOR i paraqitur me simbolikën PAL

Dy raste të vecanta janë me interes:


1. Kur të gjitha siguresat e një linje produkt lihen të paprekura, rasti i Fig.4.8, atëhere dalja e
portës përkatëse (këtu: P1) eshtë inaktive, sepse sipas algjebrës së Bul-it: = ∙ ̅∙ ∙
= 0. Në simbolikën PAL, në vend të vendosjes së “x”-ve në të gjitha pikat e kryqëzimit, ky
rast paraqitet duke shënuar thjeshtë një “x” në portën përkatëse (siç është vepruar me
portën P2),.
2. E anasjellta, kur të gjitha siguresat e një linje produkt digjen, hyrjet e portës përkatëse (p.sh
P1) rezultojnë të palidhura (të hapura). Porta është aktive, sepse. P1 =1.
Fig.4.8 Rast i veçantë i programimit

Përshkrimi i funksioneve logjikë

Duke vrojtuar strukturën bazë PAL (Fig.4.4), duket qartë se ajo përfaqson një lidhje AND-OR. Si
rrjedhojë, funksioni (ekuacioni logjik) që do të realizojë elementi PAL, duhet të jetë i formës: “shumë
e produkteve”. Për realizimin e kësaj forme na vijnë në ndihmë ligjet e Algjebrës së Bul-it (Bool) si
dhe teorema e De Morganit. Pa përvetësimin e këtyre ligjeve nuk mund të arrijmë në formën e
dëshiruar “shumë e produkteve”, që realizojnë strukturat PAL. Prandaj në vazhdim po i japim ato në
mënyrë të përmbledhur:

Ligjet e algjebrës së Bul-it


Ligji Komunikativ
x1*x2 = x2*x1 x1+x2 = x2+x1

Ligji Asociativ (shoqërues)


x1*x2*x3 = x1*(x2*x3) x1+x2+x3 = x1+(x2+x3)
= x2*(x1*x3) = x2+(x1+x3)
= x3*(x1*x2) = x3+(x1+x2)

Ligji Distributiv(shpërndarës)
x1*(x2+x3) = (x1*x2)+(x1*x3)
x1+(x2*x3)= (x1+x2)*(x1+x3)

Ligji i Njëshit
x*1 = x x+1 = 1

Ligji Zeros
x*0 = 0 x+0=x

Ligji Komplementar
x*/x = 0 x+/x = 1
Rregullat e algjebrës së Bul-it
//x = x
x*x = x x+x = x
x1*(x1+x2) = x1 x1+(x1*x2) = x1
x1*(/x1+x2) = x1*x2 x1+(/x1*x2) = x1+x2
(x1*x2)+(x1*/x2) = x1 (x1+x2)*(x1+/x2) = x1

Teorema e De Morganit
1. x1*x2 = /(/x1+/x2) x1+x2 = /(/x1*/x2)
2. /(x1*x2) = /x1+/x2 /(x1+x2) = /x1*/x2

Procesi i realizimit të ekuacioneve PAL: “Shumë e Produkteve” do të jepet nëpërmjet shembullit të


thjeshtë të realizimit të një mbledhesi të plotë. Tabela e vërtetësisë së këtij mbledhësi, jepet ne
Tab.4.1, ku hyrjet e këtij mbledhësi janë: A, B dhe Cin (biti i bartjes në hyrje), ndërsa daljet jane: S
(Shumë) dhe Cout (biti i bartjes, në dalje), si në Fig.4.9.

Tab.4.1 Tabela e vërtetësisë së mbledhësit të plotë me 1 bit


d A B Cin S Cout
0 0 0 0 0 0
1 0 0 1 1 0
2 0 1 0 1 0
3 0 1 1 0 1 A S
4 1 0 0 1 0 B Σ
5 1 0 1 0 1 C Cout
6 1 1 0 0 1
7 1 1 1 1 1 Fig.4.9 Mbledhës i plotë me 1 bit

Për nxjerrjen e ekuacioneve logjikë për S dhe Cout, më pare formohen “shumat e produkteve” me
anë të tabelës së vërtetësisë dhe më pas thjeshtohen ato me ndihmën e algjebrës se Bul-it, si më
poshtë:

= ̅∙ ∙ + ̅∙ ∙ + ∙ ∙ + ∙ ∙ (1)
= ̅∙ ∙ + ∙ ∙ + ∙ ∙ + ∙ ∙

Duke faktorizuar dhe në formulën e S, nxjerrim formulën e njohur të mbledhësit të plotë me


1 bit:

= ( ̅∙ + ∙ ) + ( ̅∙ + ∙ )

Termi i parë përfaqëson funksionin e njohur XNOR dhe termi i dytë atë XOR. Kjo formulë, megjithëse
e thjeshtuar, nuk e zgjidh problemin, sepse struktura PAL është (AND-OR) dhe duhet të përshkruhet
vetëm si “shumë produktesh”, sipas formulas (1). Thjeshtimi i Cout jep formulën e mëposhtme të
tij:
= ̅∙ ∙ + ∙ ∙ + ∙

Një mundësi tjetër për nxjerrjen e ekuacioneve me minimizimin e njëkohëshëm te termave të tyre
e ofrojnë diagramat e “Karnaugh-Veitch” (diagramat-KV) te cilat përshkruhen në vazhdim. Fig.4.10
paraqet diagramën-KV për dy variabla të hyrjes A dhe B, për të cilat ka vetëm 2 2 = 4 gjëndje
(kombinime) të mundëshme.

Fig.4.10 Diagrama-KV për dy variabla

Diagrama-KV për tre variabla A, B dhe C ka 8 fusha për 23 = 8 gjendjet e tre variablave. Kjo diagramë
(Fig.4.11) fitohet nga ajo e Fig.4. 10, duke marrë pasqyrimin e kësaj te fundit rreth boshtit horizontal.

Fig.4.11 Diagrama-KV për tre variabla

Për çdo kombinim të variablave të hyrjes formohet ekuivalenti decimal (d) (shih Tab.4.1). Në fushën
përkatëse (tashmë me numrin decimal përkatës) vendoset vlera e madhësisë së kërkuar të daljes, e
nxjerrë nga tabela e vërtetësisë. Në Fig.4.12 a dhe b paraqiten diagramat-KV për madhësitë e daljeve
S dhe Cout të mbledhësit të plotë me 1 bit.

Fig.4.12a: Diagrama-KV për madhësinë S


4.12b: Diagrama-KV për madhësinë Cout
Avantazhi kryesor i diagramave-KV qëndron në mundësinë e minimizimit të termave. Thjeshtimi apo
minimizimi i termave arrihet duke formuar çifte (çifti eleminon një variabël), kuartete (eleminon dy
variabla) ose oktete (eleminon tre variabla) me fushat fqinje, për të cilat, madhësia e daljes ka të
njejtën vlerë. Fusha fqinje, në diagramat-KV janë edhe fushat 0, 4 dhe 2, 6, meqenëse ato janë
pasqyrime të njëra tjetrës. Duke përdorur këtë logjikë thjeshtimi, atëhere formula e bit-it të bartjes
ne dalje është:
= ∙ + ∙ + ∙

Duke e krahasuar këtë formulë të fituar nga diagramat-KV me atë të fituar nga tabela e vërtetësisë,
shihet menjëherë që shprehja e rezulton e reduktuar me një term. Natyrisht i njëjti rezultat
merret edhe nga tabela e vërtetësisë, nëse ligjet e algjebrës së Bul-it do te përdoreshin në mënyrë
konsekuente.
Me rritjen e numrit të variablave të hyrjes numri i fushave në diagramat-KV rritet me fuqinë e dyshit.
Kështu, për 6 variabla numri i fushave bëhet 64 dhe diagrama-KV komplikohet dhe bëhet e
papërdorëshme. Në raste të tilla përdoren software që ofrohen nga firma prodhuese të pajisjeve të
programimit, për të cilat do të flitet në paragrafet në vazhdim.

Strukturat PAL

Në Fig.4.4 është paraqitur një strukturë bazë, e cila është në përmbajtjen e çdo PAL. Kjo strukturë
kombinatorike (qeliza bazë kombinatorike) gjendet p.sh ne PAL16H8. Në Fig.4.13 është paraqitur
një pjesë e skemës logjike të këtij qarku të integruar.

Fig.4.13 Struktura “bazë kombinatorike” e QI TIBPAL16H8

Siç mund të kuptohet, mbledhësi i plotë me 1 bit (i përshkruar në paragrafin e mësipërm) mund të
realizohet plotësisht duke përdorur një element PAL te tillë të thjeshtë. Skema relativisht më
komplekse mund të realizohen me struktura te quajtura struktura I/O të programueshme, ku përveç
hyrjeve (Input=I) mund të programohen edhe daljet (Output=O). Një strukturë e tillë tregohet në
Fig.4.14, që përfaqëson një pjesë të skemës logjike të TIBPAL16L8.
Fig.4.14 Struktura “I/O e programueshme”, TIBPAL16L8

Sinjalet vijnë në daljet A dhe B nëpërmjet portave invertuese me tre gjëndje. Aftësimi i
portave me tre gjendje bëhet duke programuar linjat produkt përkatëse AOE dhe BOE në kombinim
me linjat përkatëse të hyrjeve. Siç shihet nga figura, dalja A këthehet përsëri në matricën e hyrjes.
Kjo mënyrë e lidhjes së kundërt (feedback) jep mundësinë e programimit të linjës A. Në varësi nga
programi linja A mund të bëhet dalje (O), hyrje (I), ose portë hyrje/dalje e programueshme (I/O) për
shkëmbimin e të dhënave në të dy kahet.
Kur, gjatë procesit të programimit digjen të gjitha siguresat e termit produkt: AOE, atëhere
linja A bëhet dalje, sepse porta me tre gjendje është gjithmonë e aftësuar. Kur, të gjitha këto
siguresa lihen aktive, atëhere linja A bëhet hyrje, sepse porta me tre gjendje kalon në gjendjen e
tretë me “rezistencë të lartë”. Kushtet për të cilat A bëhet portë I/O përcaktohen gjatë procesit të
programimit duke kombinuar linjat produkt AOE me linjat e hyrjes”.
Numeratorët binarë apo dekadikë, regjistrat e zhvendosjes, etj mund të realizohen me QI
PAL, që përmbajnë regjistra (flipflop-ë). Në këtë rast daljet kthehen në matricën e hyrjes nëpërmjet
regjistrave (registered Feedback). Një pjesë e skemës logjike të një elementi të tillë PAL: TIBPAL16R8
tregohet në Fig.4.15.

Fig.4.15 Një strukturë me lidhje të kundërt nëpërmjet regjistrit


(Registered Feedback Structure), TIBPAL16R8

Flipflop-ët janë vendosur ndërmjet matricës FOA dhe portave invertuese. Daljet e invertuara të tyre
lidhen me matricën e hyrjes “AND Arrays”. Në të gjithë këta flip-flopë është lidhur një linjë e
përbashkët CLK, ku jepet impulsi i taktit ose siç thuhet ndryshe impulsi i orës (CLK=Clock). Të gjitha
portat invertuese të daljes lidhen me një linjë të vetme aftësuese OE, duke krijuar mundësinë e
kalimit të njëkohëshëm të të gjitha daljeve të këtyre portave në gjendjen me “rezistencë të lartë”
dhe si pasojë në përdorimin e këtyre elementëve PAL në sistemet me bus-e të adresave ose të të
dhënave. Me nxjerrjen në treg të TIBPALT19XX dhe TIBPALR19XX, firma Texas Instruments ofron
elementë PAL me regjistër në hyrje, nëpërmjet të cilit mund të programohet një funksion në hyrje.
Fig.4.16 tregon nje pjesë të skemës logjike te TIBPALR19L8.

Fig.4.16 Strukurë me “regjistër programimi në hyrje”, TIBPALR19L8

Në këtë strukturë regjistri i hyrjes përbëhet nga D-FF. Të gjithë flipflop-ët kanë një linjë të përbashkët
për impulsin e taktit (CLK). Nëqoftëse një siguresë f lihet aktive, atëherë informacioni i hyrjes
memorizohet në regjistër, menjëherë mbas kërcimit positiv të impulsit CLK. Nëse siguresa f digjet,
atëherë struktura e hyrjes nuk përbën më një regjistër, por një buffer normal. Një element i tillë PAL
gjendet në treg edhe me regjistër në dalje (TIBPALR19RX). TIBPALT19L8, një pjesë e skemës logjike
të të cilit tregohet në Fig.4.17, në vend të regjistrit dinamik të hyrjes përmban një regjistër me Latch-
e.

Fig.4.17 Një strukturë më “regjistër ‘Latch’ në hyrje”, TIBPALT19L8

Në hyrje ndodhen Latch-e, që komandohen nga nje hyrje e përbashkët kontrolli: . Në se një
siguresë f është aktive, atëhere Latch-i është transparent ( = 1) ose i bllokuar ( = 0)
për hyrjen. Në rastin e fundit ai ruan informacionin e fundit të hyrjes. Nëse siguresa f është e djegur,
atëherë struktura e hyrjes nuk përbën më një regjistër “Latch” por një buffer të zakonshëm. Në treg
gjenden edhe elementë PAL të këtij tipi me struktura që përmbajnë në dalje nje regjistër “Latch”,
daljet e të cilit lidhen me matricën e hyrjes (registered Feedback). Një element me strukturë të tillë
është QI TIBPALT19RX.

Strukturat GAL

Elementët GAL e kanë marrë këtë emërtim nga tre gërmat e para të “Generic Array Logic”, e cila
mund të përkthehet si “Logjika matricore universale”. Ashtu si elementët PAL edhe në këta
elementë, bërthama e arkitekturës është një matricë e programueshme “AND-Array” dhe një
matricë fikse “OR-Array”. Por GAL-et dallohen nga PAL-et kryesisht nga densiteti i ndryshëm i
integrimit, si dhe nga diferencat në arkitekturën dhe fleksibilitetin e funksioneve të daljes.
GAL-et kanë densitet shumë më të lartë integrimi (≥ 5000 porta) se PAL-et (≥ 200 porta). Si
rrjedhojë, programimi i GAL-eve kërkon kohë më të gjatë dhe shpenzime rreth 100 herë më të larta,
në krahasim me PAL-et. Programimi i këtyre elementëve bëhet gjatë procesit të prodhimit dhe
kërkon disa muaj deri në përgatitjen e serisë. Tiparet kryesore të arkitekturës së elementëve GAL,
paraqiten në fig 4.18, e cila përfaqeson strukturën e pjesëshme të elementit GAL22V10 të firmës
LATTICE.

Fig.4.18 Tiparet kryesore të strukturës së elementëve GAL.

Linjat e hyrjeve dhe ato te lidhjeve të kundëra që vijnë nga daljet, futen të invertuara dhe të pa
invertuara në “matricën AND të programueshme”. Ato janë paraqitur në figurë nga grupe me katër
linja vertikale gjatë gjithë gjatësisë së matricës. Lidhja ndërmjet “linjave të hyrjes” me “linjat
produkt” bëhet duke programuar pikën e kryqëzimit të tyre. Siç shihet nga figura, teorikisht në
portën AND të elementit GAL22V10 mund të lidhen deri 44 hyrje, por, duke përdorur rregullat e
algjebrës së Bool-it, numri i hyrjeve në një portë AND është mjaft më i reduktuar. Njëlloj si në
elementët PAL edhe në këtë strukturë karakteristike është lidhja fikse e “linjave produkt” në hyrje
të portës OR. Për shkak të “matricës fikse OR” nuk është e mundur “ndarja e termave produkt”
(Product Term Sharing) për dalje të ndryshme, si në rastin e PLA-ve, FPLA-ve (Field Programmable
Logic Array), për të cilat flitet në paragrafin pasues. Si rrjedhojë, shfrytëzueshmëria e burimeve, në
këtë arkitekturë, është e ulët. Nga ana tjetër edhe përdorimi i vetëm një termi produkt për çdo dalje,
do të rezultonte me kosto të lartë, për shkak të mos shfrytëzimit të termave të tjerë. Për këtë arsye,
elementët GAL kanë një numër të kufizuar daljesh, p.sh. GAL22V10 (shih Fig.4.19) është ndërtuar
me vetëm 10 dalje.

Fig.4.19 Bllokskema e GAL22V10

Për të realizuar skema, në përmbajtjen e të cilëve, përveç elementëve logjikë kombinatorë të


ndodhen edhe elementë logjikë sekuencialë, elementët GAL, ashtu si dhe PAL përmbajnë edhe
elementë sekuencialë. Le të shohim për këtë makrocelulën logjike të daljes: OLMC (Output Logic
Macrocell) të GAL22V10, e cila jepet në Fig.4.20.

Fig.4.20 Arkitektura e makrocelulës (OLMC) së GAL22V10


Në këtë makrocelulë, linja e Hyrje/Daljes (I/O Pin), e cila ka lidhje të kundërt me matricën e
programueshme AND, mund të bëhet:
 Dalje (O), kur bufferi me tre gjëndje aftësohet (enable).
 Hyrje (I), kur ky buffer ç’aftësohet (disable).
 Hyrje/Dalje (I/O), kur në kombinim me linja të tjera te hyrjes dhe linjën aftësuese (enable
line) të buferit me tre gjendje formon “termin e nevojshëm produkt”.

Regjistri (D-FF) në përbërje të makrocelulës është një element sekuencial. Gjatë kontrollit të
proçeseve, hapi i mëtejshëm i veprimit nuk varet vetëm nga variabla e hyrjes por dhe nga gjendja
aktuale e procesit, e cila pasqyrohet nga vlera e daljes Q të D-FF. Prandaj, siç shihet nga fig.4.20 dalja
e D-FF është e lidhur (feedback) me matricën AND nëpërmjet multiplekser-it 2:1 (2:1 Mux), për
rivlerësim të vlerës së saj. Multiplekseri 4:1 (4:1 Mux) shërben për zgjedhjen e sinjalit, që jepet në
dalje. P.sh. në rastin e aplikimeve të pastra kombinatorike, sinjali merret nga dalja e portës logjike
OR, pa ndërmjetësinë e D-FF. Në disa aplikime speciale, si në rastin e krahasuesve të identitetit
(Identity-Comparators), të kontrollit të paritet-it (Parity-Checker), etj., nevojiten porta XOR. Prandaj
në përbëjen e shumë elementëve GAL ndodhen porta XOR, të vendosura menjëherë pas portave
OR, përpara D-FF-ve.
Siç shihet nga Fig.4.20, veçori e GAL22V10 është se numri i “termave produkt” për makrocelula
të ndryshme vjen duke u rritur: nga 8, 12, 14, deri në 16. Kjo është bërë me qëllim që struktura të
mund të realizojë numëratorë me 16-bit, sepse dihet, që me rritjen e rendit të bit-it rritet dhe numri
i “termave produkt”, duke arritur vlerën maksimale 16 për bit-in e rendit më të lartë.
Në dallim nga PAL, GAL-et përdorin procesin teknologjik CMOS-E2PROM, i cili kombinon
teknologjinë CMOS me teknologjinë e portës notuese, e cila mund të fshihet elektrikisht (CMOS with
electrically Erasable (E2) floating gate technology). Pra QI GAL janë elementë të riprogramueshëm,
me humbje shumë të vogla.
Në mënyrë të përmbledhur, mund të themi, që dallimi kryesor midis GAL dhe PAL, nuk qëndron
aq në shkallën e ndryshme të integrimit të tyre, por sidomos në praninë e një makrocelule fleksible
në strukturat GAL, funksioni i së cilës mund të programohet me anë të bit-eve të caktuar të
konfigurimit, të cilat kontrollojnë adresën e multiplekserave. Kështu, elementët GAL mund të
emulojnë të gjithë tipet klasikë PAL. Më tej, duhet thënë, se shumica e GAL përmbajnë funksionin
“Power-ON Reset”, i cili gjatë procesit të kyçjes, i vendos të gjithë flipflop-et në një gjëndje të
përcaktuar, duke siguruar, që sistemi të ketë gjithmonë një gjëndje fillestare të caktuar, në fillim të
punës.

Elementët PAL dhe alternativat e tjera

Për shkak të shkallës së ndryshme të integrimit, krahasimi ndërmjet elementëve PAL dhe GAL nuk
është i mundur. Programimi i PAL-eve bëhet nga përdoruesi me ndihmën e pajisjeve të programimit,
njëlloj si për rastin e EPROM-eve. Koha e kërkuar për programimin e PAL-eve, pas përcaktimit të
funksioneve që duhet të realizojë, është e rendit disa minuta. Si në rastin e GAL-eve, përdoruesi
mund të porosisë ne firmën prodhuese edhe elementë PAL me funksione te gatëshme, të cilat njihen
me emrin HAL (Hard Array Logic). Në këta elementë programimi bëhet gjatë procesit të prodhimit
të tyre, me ndihmën e një maske metalike. Porosia e elementëve HAL është me avantazh, vetëm
kur nevojiten sasi të mëdha , sepse kostoja e prodhimit për njësi ulet në mënyrë të ndjeshme. Në
serinë e HAL-eve të fabrikuar nuk ka elementë difektozë, sikurse ndodh në rastin e PAL-eve kur,
gjatë procesit të programimit, përdoruesi gabon.
Dallimi themelor midis elementëve PAL, PROM-eve respektivisht EPROM-eve, qëndron në atë, që
PAL-et kanë një matricë të programueshme “AND-Array” dhe një matricë fikse “OR-Array”, ndërsa
PROM-et dhe EPROM-et kanë një matricë fikse “AND-Array” (dekoderin e adresave) dhe një matricë
të programueshme “OR-Array” të të dhënave. Dallimi duket më së miri në fig.4.21:

Fig.4.21 Skemat logjike të elementëve EPROM dhe PAL

PROM-et dhe EPROM-et kanë shumë dalje dhe pak hyrje, ndërsa e anasjellta karakterizon PAL-et.
Ata kanë shumë hyrje dhe pak dalje e si pasojë përshtaten më mirë për realizimin e funksioneve të
ndryshëm logjikë me shumë variabla. Ndërtimi i një strukture, ku mund të programohen të dy
matricat “AND-Array” dhe ”OR_Array”, çoi në lindjen e një element të ri (Fig.4.22), që njihet me
emrin FPLA “Field Programable Logic Array”, i cili ofron më shumë fleksibilitet për përdoruesin.

Fig.4.22 Skema logjike e FPLA


Në Tab. 4.2 jepen të përmbledhura vetitë e elementëve, tashmë të diskutuar.

Tab 4.2 Aftësitë programuese të elementëve të programueshëm


Tipi “AND-Array” “OR-Array” Programimi
Matricë e Shfrytëzon bartësat
EPROM Matricë fikse
programueshme e ngarkesës
Matricë e Me siguresa
PROM Matricë fikse
programueshme (hardware)
Matricë e Me siguresa
PAL Matricë fikse
programueshme (hardware)
HAL Matricë fikse Matricë fikse Me maskë metalike
Matricë e Matricë e Me siguresa
FPLA
programueshme programueshme (hardware)

Programimi i elementëve PAL, procesi i programimit

Në këtë paragraf do të trajtohen me hollësi hapat qe hidhen gjatë procesit të programimit me anë
të një pajisje programimi, që përdor një assembler-PAL të thjeshtë. Do të pranojmë, që të gjithë
funksionet logjike të kërkuar, janë tashmë të përcaktuar dhe për ti realizuar ata do të programohet
TIBPAL16L8. Fig.4.23 paraqet skemën logjike komplete të këtij qarku.
Fig.4.23 Skema logjike komplete e TIBPAL16L8

Numri maksimal i hyrjeve, që ai disponon është 16, prandaj numri i “linjave të hyrjes” është 32.
Numri maksimal i daljeve të këtij qarku të integruar është 8, ku secila ka 7 “linja produkti” për FOA
dhe një ”linjë produkti” për realizimin e kushtit të nevojshëm për aftësimin e portës me tre gjendje
në dalje të qarkut të integruar. Pra, gjithsej qarku i integruar ka në dispozicion 64 “linja produkti”.
Për nevoja të programimit, zgjedhja e një prej 32 linjave të hyrjes bëhet me ndihmën e matricës,
ose një prej 64 linjave produkt, duke ushtruar vlerën përkatëse të tensionit në këmbët e qarkut të
integruar, të paraqitur në Fig 4.24.

Fig.4.24 Funksioni i këmbëve të TIBPAL16L8 gjatë procesit të programimit

Me këtë mënyrë mund të programohet djegia e siguresave, në përputhje me funksionin logjik që


kërkohet të programohet. Në Tab-4.3 jepen parametrat e punës për procesin e programimit.
Diagramat kohore të këtyre parametrave paraqiten në Fig. 4.25.

Tab-4.3 Parametrat e programimit, T = 25O C


Fig.4.25 Diagramat kohore të parametrave të procesit të programimit

Më poshtë jepen hapat e nevojeshme, që kërkohen në procesin e programimit:


1. Ngrihet tensioni në këmbën “PGM Enable” të qarkut të integruar në vlerën VIHH = 10.5V.
2. Zgjidhet një nga linjat e hyrjes duke aplikuar vlerat e tensionit në L/R dhe PI0 - PI7.
3. Zgjidhet një nga 8 daljet duke ushtruar vlerat e tensionit në PA0 – PA2.
4. Ngrihet Tensioni Vcc në vlerën VIHH.
5. Për djegin e një sigurese: ushtrohet, për një kohë ≤ 50 , tensioni me vlerë VIHH, në
PO0 – PO3.
6. Ulet tensioni Vcc në vlerën 5V. Në këmbën PGM VERIFY jepen impulse me kohëzgjatje =
100 . Kur siguresa digjet, vlera e tensionit në këmbën PO, e zgjedhur nga hapi 5, duhet te
jetë: ≤ .
Nëqoftëse në këmbën PO të zgjedhur nga programi i verifikimit (PGM VERIFY), vlera e tensionit VPO
rezulton VPO = VOH, atëhere procesi i programimit nuk ka qenë i suksesëshëm,: siguresa nuk është
djegur, ajo ështe e pranishme. Hapat 1 – 6 mund të përsëriten deri 4 herë. Në se edhe pas
përsëritjes, VPO = VOH, atëhere QI rezulton përfundimisht i difektuar.
Pas përfundimit të suksesshëm të ciklit të programit të verifikimit, atëherë PAL rezulton i
programuar.
Djegia e këtyre dy siguresave siguron së pari mbrojtjen e siguresave të matricës nga gabimet e
padëshiruar të mëvonëshëm dhe së dyti mosleximin e këtij elementi të programuar nga
fallsifikatorë të mundëshëm. Në këtë mënyrë përdoruesi ka tashmë një element të dobishëm, tek i
cili nuk mund të ndërhyhet më. Në të vërtetë, pas djegëjes së dy siguresave të sigurisë nuk mund të
bëhen më ndryshime në matricën e programimit.
Shtrohet pyetja: si realizohen siguresat e matricës së programimit të Fig.4.7? Fig.4.26a tregon
skemën logjike të matricës së programimit, ndërsa Fig. 4.26b skemën elektrike të saj.

Fig.4.26 Skema logjike e matricës së një PAL (26a) dhe skema përkatëse elektrike (26b)

Vihet re që matrica “AND-OR” (AND-OR-Array) formohet me të vërtetë nga porta logjike AND-OR.
Për lidhjen midis linjës së një bit-i (Bit-Line = BL) dhe linjës së një fjale (Word-Line = WL) mund të
përdoren dioda “Schottky” ose transistorë me kolektorë të përbashkët. Në shumicën e rasteve
perdoret teknologjia e transistorëve me kolektor të përbashkët, sepse për djegëjen e siguresave
kërkohet më pak rrymë si dhe arrihen gjeometri më të vogla (shih Fig.27), në krahasim me
teknologjinë e diodave “Schottky”.

Fig.4.27 Teknologjitë e siguresave të programimit

Kryesisht, materiali i siguresave është një aliazh “titan-volframi”. Mekanizmi i djegëjes se siguresave
paraqitet skematikisht në Fig.4.28. Në figurë tregohet forma tipike e strukturës së siguresës. Me
ushtrimin e tensionit të programimit, fillon shkrirja e siguresës në vendin më të ngushtë, aty ku
shfaqet densiteti maksimal i rrymës (Fig.4.28b). Më pas siguresa rezulton e djegur dhe rryma
ndërpritet (Fig. 4.28c). Por procesi nuk ka marrë fund. Nën influencën e temperaturës metali i
shkrirë tërhiqet në skajet më të ftohta (Fig.4.28d), duke garantuar një programim të sigurt, në masën
98%.

Fig.4.28 Djegia e një sigurese metali

Problemet shqetësuese në skemat e PAL

Të gjithë elementet e një skeme krijojnë vonesa në kohë për impulset në hyrje të tyre, Kështu,
përmendim vonesat e shkaktuara nga portat logjike dhe pjerrësitë e fundme të impulseve. Në
Fig.4.29 është paraqitur një skemë e thjeshtë, e cila mund të jetë një pjesë e skemës PAL, në rastin
e realizimit të një funksioni me tre variablave A, B dhe X. Kur A=B=1, skema është e pavarur nga X.
Në regjimin statik, funksioni F është gjithnjë i barabartë me 1.

Fig.4.29 Një skemë, që preket nga glitch-et

Nëqoftëse funksioni = ∗ = ∗ shihet nga pikëpamja dinamike (Fig.4.30), si dhe merret


parasysh vonesa në kohë τ (ns) e shkaktuar nga porta invertuese, atëherë, kur impulsi X kërcen nga
“1” në “0”, në veprimin e skemës vihet re një dukuri e rrezikshme (Hazard). Funksioni F, në vend të
vlerës 1, merr vlerën 0, gjatë gjithë kohëzgjatjes së vonesës τ, e shkaktuar nga porta invertuese.
D.m.th gjatë vonesës τ në fuksionin F shfaqet një impuls negativ (Glitch).

Kjo dukuri është veçanërisht shqetësuese dhe e rrezikshme, kur funksioni F kontrollon impuset e
taktit “CLK”, që jepen në një regjistër.
Fig.30 Sjellja dinamike e skemës së fig. 2.29

Fig.4.31 Paraqet skemën e Fig.4.30, por me simbolikën PAL

Duke vrojtuar këtë skemë, mund të japim këtë përkufizim:


Dy “terma produkt” quhen “fqinjë”, kur ato kanë një dhe vetëm një çift siguresash diagonale të
programueshme të lidhur me dy “linjat e hyrjeve komplementare”.
Përkufizimi është i vlefshëm për të gjithë “termat produkt” (termat-P), pavarësisht nga numri i
variablave që e përbëjnë. Duke i u referuar fig.4.30, konkludojmë që kur në një skemë shfaqen dy
terma fqinjë, atëhere kjo skeme rrezikohet nga shfaqja e glitch-eve. Për të dale nga kjo gjëndje do
të shqyrtojmë rastin e thjeshtë të skemës së fig.4.32a, ku dy terma-P janë fqinjë dhe programohen
me të njëjtët variabla. Skema vuan nga dukuria e rrezikëshme e shfaqjes së glitch-eve.

Fig. 4.32 Shembuj të termave “fqinjë”


Për mënjanimin e glitch-eve do të përdorim zgjidhjen e dhënë në Fig.4.32b, e cila është fituar nga
thjeshtimi i funksionit Bulean P* nëpërmjet përdorimit të ligjit të absorbimit të algjebrës së Bul-it:

P* = P1+P2 = /A*/B*C*/D + /A*B*C*/D


P* = /A*C*/D 9* (B+/B) = 1
P* = /A*C*/D = P3 = P**

Fig.4.33 sqaron më së miri “ligjin e absorbimit”:

Fig. 4.33 Shembull për “ligjin e absorbimit”

Kur të gjitha siguresat e një termi-P përmbahen në një term tjetër, atëhere termi me numrin më të
madh të siguresave absorbohet nga termi me numër më të vogël:

P* = P1+P2 = /A*B*/C*/D + /A*/C


P* = /A*/C*(B*/D+1) = 1
P* = /A*C = P3 = P**

Skemat logjike të elementëve PAL paraqiten pa praninë e siguresave (sikur ato të mungonin), duke
i krijuar komoditet përdoruesit të projektojë në to funksionet e dëshiruara. Në të vërtetë të gjitha
siguresat e një QI PAL të paprogramuar janë aktive. Skema e dëshiruar realizohet duke djegur
siguresat përkatëse, konformë funksioneve.

Ligji i absorbimit mund të shfrytëzohet, kur gabohet gjatë procesit të programimit:


 Në se, gjatë procesit të programimit të një termi-P, digjet gabimisht një siguresë, atëhere
gabimi mund të korigjohet duke programuar të njëjtin funksion në linjën produkt pasuese.
Termi-P i difektuar absorbohet. Në shembullin e Fig.4.33, termi = ̅ ∙ ̅ është termi, që
duhet programuar, ndërsa P1 është termi, i cili ka lindur nga djegëja e gabuar e dy siguresave.

Në shembullin e Fig.4.34, funksioni i daljes është: ∗ = ∙ ∙ + ̅ ∙ ∙ ̅ . Gjatë procesit të


realizimit të këtij funksionit mund të shkaktohen glitch-e, në se = = 1, = 0 dhe në hyrjen A
sinjali kërcen nga 1 në 0. Në këtë rast, në funksionin P* të daljes, do të shfaqet një glitch, gjatë gjithë
kohës së vonesës, me të cilën reagon porta invertuese.
Fig.4.34 Skemë, që gjithashtu preket nga fenomeni ‘Hazard”

Modeli i siguresave i kësaj skeme paraqet përsëri dy terma “fqinjë”, shih markimin në Fig.4.35.

Fig.4.35 Modeli i siguresave të skemës së Fig.4.34

Dalja nga kjo situatë e rrezikëshme, në të cilën funksioni logjik i daljes rezulton me glitch-e, bëhet
duke shtuar një term suplementar: 3 = ∙ ∙ ̅. Tani, funksioni i daljes do të marrë formën:

∗∗
= ∙ ∙ + ̅∙ ∙ ̅+ ∙ ∙ ̅

Fig.4.36 Sjellja dinamike e P** me term suplementar

Duke vrojtuar sjelljen dinamike të këtij funksioni logjik, si në Fig.4.36, vihet re që funksioni P** është
i pavarur nga A, për B=D=1 dhe C=0. Dukuria e rrezikshme e shfaqjes së glitch-eve është mënjanuar.
Duke ndërtuar tabelën e vërtetësisë për ∗∗ = 1 + 2 + 3, (Tab-5), dhe duke shfrytëzuar
diagramën-KV si dhe gjëndjet “D’ont Care” (Fig.4.37), funksioni i daljes do të rezultojë i pavarur nga
P3:
P** = P1+P2

Tab-4.4 Tabela e vërtetësisë së funksionit P**


A B C D P1 P2 P3 P**
0 0 0 0 0 0 0 0
0 0 0 1 0 0 0 0
0 0 1 0 0 0 0 0
0 0 1 1 0 0 0 0
0 1 0 0 0 1 0 1
0 1 0 1 0 1 1 1
0 1 1 0 0 0 0 0
0 1 1 1 0 0 0 0
1 0 0 0 0 0 0 0
1 0 0 1 0 0 0 0
1 0 1 0 0 0 0 0
1 0 1 1 0 0 0 0
1 1 0 0 0 0 0 0
1 1 0 1 1 0 1 1
1 1 1 0 0 0 0 0
1 1 1 1 1 0 0 1

Fig.437 Diagrama-KV për P**

Kjo do të thotë, që përdorimi i diagramave-KV për minimizimin e termave të funksionit, ose


përdorimi i soft-eve me aftësi minimizimi të lartë i redukton termat supementarë dhe lë të
pazgjidhur dukurinë e rrezikëshme të shfaqjes së glitch-eve. Në këto raste, nuk mbetet gjë tjetër
veçse të analizohen termat” fqinje” dhe të shtohen terma suplementarë. Sqarimi i rregullave të
përcaktimit të termave suplementarë do të bëhet nëpërmjet dy shembujve të tjerë, si më poshtë:

Në Fig.4.38 tregohen termat “fqinjë” P1 dhe P2, të cilat shkaktojnë një glitch në funksionin e daljes.
Fig.4.38 Shtimi i një termi suplementar

Shtimi i termit suplementar P3 absorbon këtë efekt negativ. Në mungesë të termit P3:
= 1+ 2= + ̅∙ ∙ ̅∙ ∙

Kur = = = 0 dhe = 1, atëherë me komutimin e sinjalit B funksioni i daljes P do të rezultoje


me glitch-e. Me shtimin e termit P3:

∗= + ̅∙ ∙ ̅∙ ∙ + ̅∙ ̅∙ ∙
∗= + ̅∙ ̅∙ ∙ ∙ ( + 1) = 1
∗= + ̅∙ ̅∙ ∙

Funksioni P* do të realizohet pa shfaqjen e glitch-eve. Në Fig.3.39 tregohen termat “fqinjë” P1, P2


dhe P3, ku çdo çift i markuar siguresash është shkak për lindjen e glitch-eve, gjate komutimeve të A
dhe B.

Fig.4.39 Skemë e cila prodhon glitch-e

Per mënjanimin e shfaqjes së glitch-eve duhen shtuar dy terma të rinj suplementar P4 dhe P5, të
programuar si në fig.4.40.

Fig.4.40 Shtimi i termave suplementarë


Duke i u referuar Fig.4.39 dhe Fig.4.40, nxirret:

∗= ∙ ∙ ̅+ ∙ ∙ + ̅∙ ∙
4= ∙ ∙ ̅ + ∙ ∙ = ∙ ̅∙
5= ∙ ∙ + ̅∙ ∙ = ∙ ∙

∗∗
= ̅∙ ∙ ̅+ ∙ ∙ + ̅∙ ∙ + ∙ ̅∙ + ∙ ∙

Nga dy shembut e mësipërm nxirren këto rregulla, për mënjanimin e efektit të rrezikshëm te
shfaqjes së glitch-eve:
 Për çdo dy terma “produkt” me madhësi të çfarëdoshme, të minimizuara dhe “fqinje”
programohet një term suplementar.
 Çdo term i ri suplementar ka siguresa në çdo “linjë hyrje”, ku më parë ekzistonte siguresa,
me përjashtim të çiftit diagonal të markuar.

Një strukturë është pa glitch-e, në se termat produkt fqinjë nuk përmbajnë asnjë çift diagonal
siguresash, ose nëqoftëse ata kanëë të paktën dy çifte diagonal siguresash, si në Fig.4.41.

Fig.4.41 Strukturë pa glitch-e


LEKSION
CPLD DHE FPGA

Të gjithë elementët PAL/GAL, CPLD dhe FPGA i përkasin familjes së elementëve logjikë të
programueshëm PLD (Programmable Logic Devices), por, si rregull, me PLD njihen vetëm elementët
PAL dhe GAL, që, si të thuash, përbëjnë një grup më vete.
Në grupin e dytë bëjnë pjesë CPLD. Këta janë elementë logjikë të programueshëm me shkallë të
lartë kompleksiteti (CPLD = Complex PLD). Elementët CPLD kanë një strukturë matricore të
shumëfishtë, d.m.th. përbëhen nga shumë module pjesërisht me shkallë të lartë integrimi, të
ngjashme me strukturat PAL, , të cilët lidhen me njëri tjetrin nëpërmjet të ashtuquajturës matricë
komutimi (Switch Matrix), që është pjesa më interesante e familjes CPLD. Skemat e këtyre
matricave, në varësi nga prodhuesi, janë nga më të thjeshtat deri në më të komplikuarat: me lidhje
të ashtuquajtura Wired-OR, ku mund të komutohen më shumë se njëqind sinjale hyrjeje. Mundësitë
e lidhjeve të moduleve, në elementët CPLD, përcaktohen nga madhësia dhe arkitektura e matricave
komutuese. Përfaqësues të njohur të elementëve CPLD janë elementët FLEX të firmës ALTERA,
elementët pLSI të firmës LATTICE ose elementët EPLD të firmës XILINIX.

Grupi i tretë përbëhet nga elementët FPGA (Field Programmable Gate Arrays). Ndërtimi i
brendshëm i këtyre elementëve është i lidhur ngushtë me strukturën “Gate Arrays” (matrica e
portave), sepse një numër i madh modulesh shumë të vegjël, me shkallë të vogël integrimi, janë
vendosur në chip-in e elementit në formën e një matrice. Në hapsirat ndërmjet tyre ndodhen të
ashtuquajturit “kanale të rrugëzimit” (Routing Channels), me anë të të cilëve bëhet lidhja e
moduleve logjikë.

Në fig.51 tregohen ndryshimet esenciale midis elementëve PAL / GAL, CPLD dhe FPGA.
PAL / GAL CPLD FPGA
Burime të pakta dhe
Shumë elementë logjikë të
shumë të thjeshta.
Burime të pakta, thjeshtë.
Burime logjike Logjikë komplekse
komplekse Realizimi i një skeme logjike
vetëm me anë të
komplekse kërkon shumë module
lidhjeve të kundërta
Struktura e Logjika mund të shfrytëzohet në
Matricë e lidhjes Matricë komutuese
lidhjes mënyrë globale dhe lokale
Shumë e lartë.
Shpejtësia e E lartë Në varësi të vendndodhjes së
Ulet me aplikimin e
veprimit moduleve dhe lidhjes midis tyre.
lidhjeve të kundërta.
Sjellja në kohë E parashikueshme E parashikueshme E paparashikueshme
Simulimi -
Kompilator - PLD Vendos modulin dhe krijo
Software-i Mapper / Fitter
(Compiler) lidhjen. (Place and Route,
Simulation)

Fig.5.1 Ndryshimet esenciale ndërmjet elementëve PAL / GAL, CPLD dhe FPGA

Fig.5.2 paraqet teknikat e ndryshme të lidhjeve midis moduleve në elementët CPLD dhe FPGA.

Fig.5.2 Mënyrat e lidhjeve (burimeve të rrugëzimit) midis moduleve të ndryshëm


në elementët CPLD dhe FPGA

Siç shihet, në elementët CPLD, kohët e vonesës të lidhjeve ndërmjet moduleve janë të pavarura nga
rruga e lidhjes. Në elementët FPGA situata paraqitet krejt ndryshe. Këtu, burimet e rrugëzimit
(Routing Ressources) përbëhen nga segmentë të veçantë lidhje, të cilët, pjesërisht, mund të jenë me
strukturë shumë fine. Lidhja e këtyre segmentëve të veçantë bëhet nëpërmjet elementëve të
programueshëm. Numri i këtyre elementëve ne një linjë lidhjeje dhe pozicioni i tyre përcaktojnë,
veç të tjerash, kohët e vonesës të sinjaleve të ndryshëm në një chip. D.m.th. sjellja në kohë e
elementit FPGA është e varur nga vendndodhja e moduleve dhe rruga e lidhjes së tyre dhe nuk mund
të vlerësohet përpara kryerjes së kësaj lidhjeje nëpërmjet programimit.
Secili element, CPLD apo FPGA ka avantazhet dhe disavantazhet e veta, në lidhje me shpejtësinë,
shkallën e integrimit, fleksibilitetin dhe fushat e përdorimit. Por duhet thënë, se me përmirësimin e
teknologjive, kufijtë e dallimit midis tyre po fillojnë të zhduken, prandaj Firma prodhuese, të tilla si
XILINIX dhe ALTERA përfaqësohen me prodhime përkatëse të të dy grupeve: CPLD dh FPGA.

Teknologjitë e programimit

Në këtë paragraf nuk diskutohet mbi arkitekturat e elementëve CPLD dhe FPGA si dhe teknikat e
ndryshme të lidhjeve të tyre. Por, duke qënduar të paanshëm, mund të themi, që në përgjithësi
përdorimi i elementëve CPLD, është teknikisht dhe ekonomikisht i justifikuar, kur, për realizimin e
termave produkt të nevojshëm për marrjen e funksionit të dëshiruar, kohët e vonesës rezultojnë të
rendit 20-40 ns. Ndërkaq, kur kërkohet lidhja e shumë makrocelulave në kaskadë, atëhere raportet
ndryshojnë. Në raste të tilla, është më me avantazh përdorimi i elementëve FPGA, për shkak të
fleksibilitetit më të lartë të tyre. Natyrisht edhe teknologjia e përdorur e elementëve lidhës të
programueshëm ushtron influencën e saj mbi sjelljen (vonesat) në kohë dhe fushat e përdorimit të
një arkitekture.
Pjesa kryesore e një elementi logjik të programueshëm është pjesa logjike ose makrocelula, ndërtimi
i brendshëm i së cilës përcakton dhe kapacitetin e elementit. Gjatë fazës së përcaktimit të
arkitekturës së makrocelulës, prodhuesi duhet të kërkojë balancën midis kapacitetit dhe
fleksibilitetit të saj. Në rastin më të thjeshtë struktura e makrocelulës mund të përbëhet nga një
numër i madh portash NAND me dy hyrje, me anë të të cilave mund të vihet në jetë çdo skemë, sado
e ndërlikuar qoftë. Por, ky rast ideal kërkon shumë elementë programimi, duke rritur kohët e
vonesës në një nivel të pakonceptueshëm. Rasti i kundërt ekstrem do të ishte ndërtimi i një
makrocelule shumë komplekse me kapacitet të lartë, me shumë regjistra dhe porta, e cila rezulton
më e shpejtë, sepse do të kërkonte më pak elementë programimi për realizimin e funksioneve
logjikë, por me fleksibilitet më të ulët, për shkak të shkallës së ulët të shfrytëzueshmërisë së portave.
Por, natyrisht, në se për realizimin e një funksioni logjik do të kërkohet lidhja në kaskadë e këtyre
makrocelulave komplekse, avantazhi i shpejtësisë dhe kapacitetit bie, për shkak të rritjes së kohës
së vonesës si pasojë e pranisë së rezistencave të elementëve lidhës të programueshëm. Tab-5.1
tregon elementët e ndryshëm lidhës, që përdoren në kohën e sotme, si dhe parametrat fizikë të
tyre.

Tab-5.1 Vetitë e teknologjive të ndryshme të programimit

SRAM E2PROM PLICE ViaLink


Rezistenca 1 KΩ 1 KΩ < 200 Ω 20-50 Ω
Kapaciteti ≈ 50 fF ≈ 15 fF < 5 fF < 1 fF
Përmasat e elementit (μm) 10 x 10 8x8 4x4 1.5 x 1.5

Duke vrojtuar ndërtimin e një elementi lidhës, mund të arrihet në përfundimin, që sjellja elektrike
e tij mund të konsiderohet si një kombinim-RC. Rezistenca e përgjithshme e një lidhje jepet nga
shuma e rezistencave të elementëve lidhës përbërës, kurse kapacitetet-nga shuma e kapaciteve të
veçanta të këtyre lidhjeve. Logjikisht, për të realizuar shpejtësi të lartë veprimi, konstantja e kohës
RC duhet të ruhet sa më e vogël. Për këtë duhen bërë kompromise, që kushtëzojnë strukturën, midis
numrit të elementëve lidhës të programimit dhe mikrocelulave më komplekse, të cilat natyrisht
kanë si pasojë uljen e fleksibilitetit të arkitekturës.

Teknologjia ViaLink

Projektuesit e elementëve pASIC të firmës QUICKLOGIC përdorin një teknologji krejtësisht të re, për
realizimin e elementit lidhës, që quhet antisiguresë ViaLink (ViaLink Antifuse). Ajo krijohet nga lidhja
e drejtpërdrejtë (link) e dy shtresave metalike, të cilat ndahen nga një shtresë siliciumi amorf dhe
ka si bazë aliazhin “Titan-Wolfram” (fig.5.3).

Fig.5.3 Ndërtimi i një antisigurese ViaLink

Karakteristikë e këtij elementi lidhës është rezistenca shumë e lartë e tij, > 50 MΩ, përpara
programimit dhe rezistenca shumë e ulët. < 50 Ω, pas programimit. Meqenëse lidhja krijohet pas
procesit të programimit, në dallim nga elementët PAL ose GAL ku siguresa është e pranishme
përparpara programimit, atë e kanë quajtur antisiguresë. Nëpërmjet përmasave relativisht të
mëdha të shtresave metalike, kapaciteti i këtij elementi lidhës rezulton shumë i vogël. Ura lidhëse
(link) ose siguresa e formuar pas programimit zë 10% të sipërfaqes së këtij elementi lidhës, prandaj
duhet thënë, që ka rezerva të mjaftueshme për zvoglimin e përmasave të tyre, nga proceset
teknologjive, që do të vijnë.

Teknologjia PLICE

Elementët lidhës të elementëve logjikë ACTEL i përkasin gjithashtu familjes së “antisiguresave”. Ata
kanë strukturën e një kondesatori, dielektriku i të cilit përbëhet nga një shtresë mjaft e hollë
(fig.5.4).
Fig.5.4 Ndërtimi i antisiguresës PLICE

Në gjendje të paprogramuar këta elementë lidhës shfaqin rezistencë mbi 100 MΩ. Gjatë procesit të
programimit në këtë element aplikohet një tension i lartë, nëpërmjet logikës së adresimit. Si
rrjedhojë, shtresa izoluese shkrihet dhe elementi bëhet përcjellës. Procesi zgjat rreth 5 ms, duke
bërë që antisiguresa të zotërojë rezistencë < 200 Ω. Vlerësimi i saj, bëhet nga pajisja e programimit,
duke matur, në intervale të caktuar kohe rrymën, që kalon nëpër antisiguresë Në qoftëse kjo
rezistencë rezulton me vlerë më të lartë, elementi lidhës riprogramohet.

Teknologjia E2PROM

Bërthama e celulës E2PROM është një zonë specifike në portën e MOSFET-it komutues (fig.5.5).
Gjatë procesit të programimit, në këtë zonë pompohen bartësa ngarkese (elektrone), me ndihmën
e të ashtuquajturit “efekti tunel”. Këta bartësa përcaktojnë gjendjen e komutimit dhe mbeten të
konservuar për shumë vjet, për shkak të mjedisit izolues, që e rrethon.
Problematik është dëmtimi, që mund të shkaktojë procesi i efektit tunel në mjedisin izolues, duke
pasur si pasojë pamundësinë e riprogramimit të shpeshtë të celulës. Me procesin e fshirjes celula
kthehet në gjëndje fillestare.

Fig.5.5 Ndërtimi i celulës E2PROM


Teknologjia SRAM

Firma XILINIX përdor, në elementët e familjes LCA, celula SRAM, kapaciteti memorizues i të cilave
përcakton konfiguracionin, d.m.th sjelljen funksionale të elementit. Në kundërshtim me celulën
normale SRAM, me gjashtë transistorë, celula XILINIX përbëhet nga pesë transistorë (fig.5.6).
Mungesa e transistorit të gjashtë influencon në shpejtësinë e konfigurimit të këtij elementi.

Fig.5.6 Ndërtimi i celulës SRAM

Celula përbëhet nga dy invertitorë CMOS me lidhje të kundërt me njëri tjetrin, të cilët mund të
memorizojnë një vlerë të re nëpërmjet transistorit kalimtar. E gjithë skema funksionon si Latch
statik. Vlera e memorizuar mund të hapë p.sh. transistorin çelës, në hyrje të një multiplekseri dhe
të kontrollojë funksionin logjik përkatës. Kjo strukturë, me ndryshime të vogla, vlenë edhe për
arkitektura të tjera elementësh logjikë të programueshëm.

Algoritmet e programimit

Me algoritëm programimi kuptohet një seri e caktuar instruksionesh, që përcaktojnë kurbat dhe
nivelet e duhur të tensionit, me anë të të cilave mund të programohen të dhënat për konfigurimin
e një elementi të programueshëm. Por, duke qënë se i njëjti tip elementi prodhohet nga firma të
ndryshme, që kanë linja të ndryshme fabrikimi, është shfaqur një problem: ndërsa parametrat e
punës për programimin e e këtij elementi janë të njëjtë, parametrat e programimit janë të
ndryshëm. Kështu, po të kihet parasyshë, që firmat nuk japin katallogë me specifikime mbi
parametrat e programimit, atëhere nuk mund të mendohet që një përdorues të mund të prodhojë
pajisjen e vet të programimit. Gjithashtu, mund të kuptohen fare lehtë vështirësitë, me të cilat haset
një firmë e prodhimit të pajisjeve të programimit, si p.sh. DATA I/O, po të kihet pararasyshë, që ka
mbi 30000 tipe elementësh të programueshëm, me më shumë se 300 arkitektura ndërtimi dhe mbi
4000 algoritme.
Fig.5.7 paraqet diagramën rrjedhëse të një algoritmi programimi, ndërsa fig.5.8-diagramën
përkatëse të impulseve.
Nëqofëse punohet me një algoritëm, që prodhon një diagramë të gabuar impulsesh, atëhere të
dhënat në elementin e programuar ose do të programohen gabim, ose do të lexohen gabim. Do të
lindin gabime sporadike, të cilat janë të varura ose nga temperatura e mjedisit, ose nga vlerat e
tensioneve të ushqimit, ose nga të dyja bashkë. Mund të ndodhë edhe që, elementi t´í qëndrojë
programimit për një kohë të shkurtër dhe pas kësaj kohe të funksionojë me gabime. Në fig.5.9
tregohet shembulli i një sigurese bipolare.

Fig.5.8 Kurbat e tensionit të një algoritmi programimi, nga dy firma prodhimi


Fig.5.7 Diagrama rrjedhëse e një algoritmi programimi

Fig.5.9 Algoritëm difektoz në shembullin e një sigurese bipolare

Në rastin e të ashtuquajturës “Under-Blow” (nën-djegie), siguresa nuk është djegur plotësisht, ose
si pasojë e një impulsi të vogël rryme, ose si pasojë e kohës së shkurtër të programimit të saj. Në
rrethana të caktuara, ajo mund të ngjitet përsëri, pas një farë kohe. Në rastin e “Over-Blow” (mbi-
djegie) siguresa është coptuar, sepse ajo është programuar ose me një impuls të madh rryme ose
për një kohë më të gjatë se e nevojshmja. Vibracione ose influenca të tjera mund të sjellin lidhje
sporadike të siguresës dhe si pasojë funksionim difektoz të elementit. Për këto arsye, pajisja e
programimit duhet të prodhohet vetëm nga firma serioze, të cilat testojnë dhe ushtrojnë kontrollin
e kualitetit të algoritmeve të programimit, përpara nxjerrjes në treg.

Të mirat dhe të metat e logjikës së programueshme

Elementët e programueshëm PAL, GAL, por edhe elementët CPLD dhe FPGA, pavarësisht nga
densiteti i lartë integrimit të tyre, janë shumë më fleksibël se elementët standartë. Në këta elementë
mund të integrohen funksione, të cilat nuk gjenden në elementët standardë. Zëvendësimi i qarqeve
të integruar standartë me elementë të programueshëm, sidomos me CPLD dhe FPGA, çon në
reduktimin drastik të komponenteve të sistemit dhe në rritjen e njëkohëshme të sigurisë në punë.
Liria në përcaktimin e funksionit të një këmbe (pin) në një qarku të integruar të logjikës së
programueshme, çon në thjeshtimin e mëtejshëm të skemës së montazhit, duke zvogluar në mënyrë
të ndjeshme përmasat e qarkut të stampuar.
Një avantazh tjetër i logjikës së programueshme është mundësia e riprogramimit të këtyre
elementëve, si atëhere kur shfaqen gabime në programim, ashtu edhe kur ndryshohen kërkesat
ndaj sistemit të projektuar. Kështu, në një rast normal, nuk del nevoja të bëhen ndryshime në qarkun
e stampuar. Nëpërmjet vendosjes së siguresave speciale mbrojtëse apo një dispozitivi të veçantë
për mbrojtje në elementët logjikë të programueshëm, mënjanohet mundësia e leximit të të dhënave
të programuara në ta, duke siguruar një mbrojtje maksimale nga kopjimi i palejuar, i skemave të
projektuara.
Projektimi më efektiv i elementëve logjikë të programueshëm bëhet nëpërmjet pajisjeve CAD/CAE,
për të cilat do të flitet më vonë. Këtu, do të përmëndim vetëm, që shumica e pajisjeve projektuese
përshkruajnë realizimin e funksionev me një gjuhë të thjeshtë përshkruese, duke lehtësuar shumë
punën programuese dhe reduktuar në mënyrë të ndjeshme kohën e nevojshme për programim.
Veç kësaj, funksionet logjike mund të testohen lehtë, me ndihmën e procesit të simulimit, përpara
ndërtimit të prototipit. Natyrisht përdorimi i logjikës së programueshme ka dhe të metat e veta, për
të cilat nuk do të heshtim:
Ato, së pari, janë të lidhura me koston suplementare të mjeteve të nevojshme për projektimin e
tyre, e cila lëviz nga disa qindra ne disa mijra dollarë, në varësi të mjetit të përdorur për projektim.
Së dyti, ato lidhen me humbjet më të mëdha dhe konsumin më të lartë të energjisë që kanë QI
logjikë të programueshëm, kundrejt QI standartë të teknologjisë CMOS apo TTL, të cilat, megjithatë
kompensohen nga densiteti i lartë i integrimit të elementëve të programueshëm. Kosumi i energjisë
varet, ndërmjet të tjerash, nga fuqia dhe shpejtësia e veprimit, që kërkohet nga elementi.
Proceset e brëndshme logjike nuk mund të vrojtohen në elementët e programueshëm, por ato
mund të studjohen me ndihmën e simulatorëve, saktësia simuluese e të cilëve është rritur kaq
shumë, sa që problemet e lindura zgjidhen vetëvetiu.
Përshkrimi i funksioneve kombinatorë dhe sekuencialë me anë të gjuhës easyABEL

Në vijim do të shfrytëzojmë software-in easyABEL si gjuhë programimi (HDL, VHDL), prandaj për
përshkrimin e funksioneve kombinatorë dhe sekuencialë, të operatorëve dhe të simboleve
përkatëse të tyre do të përdorim sintaksën e kësaj gjuhe. Për më tepër, këto simbole hasen edhe në
disa nga arkitekturat e elementëve kompleksë, që do të shqyrtojmë. Në fig.5.10(a), (b), (c) dhe (d)
paraqiten simbolet, funksionet (me operatorët përkatës) dhe tabelat e vërtetësisë së portave AND,
OR, XOR dhe invertuese përkatësisht.

Fig.5.10 Simbolet, funksionet (me operatorët përkatës) dhe


tabelat e vërtetësisë së portave AND, OR, XOR dhe invertuese

Fig.5.11 paraqet simbolet, funksionet dhe tabelat e vërtetësisë së tipeve të ndryshëm të FF-ve.
Fig.5.11 Simbolet, funksionet dhe tabelat e vërtetësisë së tipeve të ndryshëm të FF-ve.

Në sintaksën e easyABEL, shenja := tregon që kompilatori do të lidhë një D-FF për sinjalin Q. Me anë
të .CLK ext. definohet sinjali Clock. Shënja (-) në tabelën e vërtetësisë përfaqëson të ashtuquajturin
Don’t Care.

Arkitekturat

Duke u nisur nga avantazhet mësipërme, elementët kompleksë CPLD dhe FPGA kanë pësuar, këto
vitet e fundit, një rritje dhe zhvillim të paparë. Ky ritëm zhvillimi ndjehet në të gjitha firmat
prodhuese, të tilla si: ACTEL, XILINIX, LATTICE, ALTERA, QUICKLOGIC, MOTOROLA, TOSHIBA, INTEL,
etj, të cilat po konsolidojnë familjet e tyre të elementëve kompleksë të logjikës së programueshme
dhe po hedhin në treg familje të reja. Spektri gjithnjë e më i gjërë i familjeve të tilla e çon
përdoruesin, para së gjithash përdoruesin e ri në çoroditje. Prandaj, do të paraqesim në vijim disa
nga arkitekturat e elementëvë kompleksë të programueshëm të firmave më të spikatura. Nuk do të
bëhen krahasime midis këtyre arkitekturave, sepse çdo element ka avantazhet e tij specifikë, por do
të japim një pamje të përgjithshme të të gjitha familjeve të logjikës së programueshme.

1. Familja CPLD MAX5000 / MAX7000 e firmës ALTERA

Familja-MAX e firmës Altera, shpikse dhe prodhuese e elementëve EPLD, paraqet një përfaqësuse
të elementëve CPLD me strukturë matricore të shumëfishtë (Multiple Array Structure). Në këtë
familje bëjnë pjesë dy seri: Seria MAX5000 dhe seria MAX7000.
MAX5000

Bërthama e arkitekturës MAX5000 është i ashtuquajturi blloku matricor logjik: LAB (Logic Array
Block). Sipas tipit të elementit, në një chip, mund të integrohen deri 12 LAB-e. Ndërtimi i një LAB-i
tregohet në fig.5.12. Ai përmban një matricë makrocelulash (Macrocell Array), të ashtuquajturit
“terma zgjerimi” (Expander Terms) dhe një bllok kontrolli për hyrje/daljet (I/O block). Numri i LAB-
eve varet nga tipi i elementit. Lidhja midis LAB-eve bëhet me ndihmën e matricës ndërlidhëse të
programueshme: PIA (Programmable Interconnect Array). Makrocelula e mirëfilltë (fig.5.13) merr
sinjale nga hyrjet fikse, nga PIA dhe nga dy linjat e lidhjes së kundërt, që vijnë nga dalja e
makrocelulës, para dhe pas buffer-it me tre gjendje. Këto sinjale ndodhen në dispozicion të
invertuara dhe të painvertuara dhe prodhojnë tetë terma produkt, që plotësojnë detyra të
ndryshme. Katër nga këto terma përdoren përkatësisht për prodhimin e impulsit asinkron të taktit
(asynchron CLK), të sinjaleve PRESET dhe RESET për flipflop-in dhe të sinjalit për aftësimin e buffer-
it me tre gjendje në dalje të makrocelulës.

Fig.5.12 LAB-i (Logic Array Block) i familjes MAX5000 të firmës ALTERA.

Flipflop-i, siç shihet është një D-FF, por me ndihmën e termave produkt, ai mund të konfigurohet si
T-FF, JK-FF ose si RS-FF. Si burim për impulsin CLK, mund të shërbejë termi produkt, i përmëndur më
sipër, për prodhimin e impulsit asinkron CLK, ose në rastin e projektimit të një skeme sinkrone,
impulsi CLK i sistemit (system clock), i futur nga jashtë.
Fig.5.13 Makrocelula e familjes MAX5000 të firmës ALTERA

Sipas vlerësimeve të firmës ALTERA, në shumicën e rasteve, mjaftojnë tre terma produkt. Për këtë
arsye, në këtë makrocelulë janë lidhur tre terma produkt në hyrjet e një porte OR, dalja e të cilës
lidhet me një tjetër term produkt nëpërmjet një porte XOR. Porta XOR mund të përdoret gjithashtu
edhe për invertim ose për realizimin e një funksioni XOR aritmetik. Për vënien në jetë të funksioneve
logjikë më të fuqishëm, zgjëruesi logjik (Logic Expander) ofron deri 32 ose 64 terma produkt për një
LAB, në varësi të tipit të elementit. Kështu, jepet mundësia, për realizimin e një logjike me disa stade
si dhe për konfigurimin e regjistrave dhe Latch-eve të tjerë suplementarë. Nëpërmjet futjes së të
ashtuquajturëve “shared product terms” krijohen mundësi të larmishme optimizimi, gjatë procesit
të sintezës së skemave logjike. Siç shihet nga fig.5.14, përdorimi i zgjeruesit logjik fut kohë
vonesësuplementare, por ajo mund të llogaritet me saktësi.

Fig.5.14 Termat produkt të zgjeruesit (Expander Product Terms) të familjes MAX5000


të firmës ALTERA
Në varësi të tipit të elementit, në serinë e familjes MAX5000 ekzistojnë 1, 2, 4, 8 ose 12 blloqe LAB,
të cilët, nga jashtë, janë lidhur në mënyrë fikse me terminalet e hyrjes ose terminalet I/O. Lidhjet e
brendshme kryhen 100% me ane të PIA-s, ku janë të lidhur vetëm sinjalet e nevojshëm për realizimin
e funksioneve. Në PIA vijnë të gjithë sinjalet e lidhjes së kundërt të makrocelulës si dhe ato të
terminaleve I/O. Të gjitha lidhjet, pavarësisht nga pamja e tyre fizike, kanë ë njëjtën kohë vonese,
prandaj mund të parashikohet saktësisht sjellja në kohë e një skeme të projektuar. Si rrjedhojë,
theksojmë se me familjen MAX5000 mund të projektohen skema, frekuenca e punës së të cilave
mund të shkojë deri 100 MHz.

MAX7000

Familja MAX7000, e prodhuar sipas procesit teknologjik: 0.8μ CMOS E2PROM, ofron elementë me
shkallë të lartë integrimi, ekuivalent me 600 deri 5000 porta logjike dhe shpejtësi veprimi deri 125
MHz. Arkitektura e brendëshme e kësaj familje paraqitet në fig.5.15. Ajo është e ngjashme me
arkitekturën e MAX5000. Në matricën me blloqe LAB, lidhja midis LAB-eve bëhet nëpërmjet
matricës ndërlidhëse të progamueshme PIA. Çdo LAB, nga ana e tij, përbëhet nga një komplet
makrocelulash, numri i të cilave është në varësi të tipit të elementit. Njëlloj si në serinë e familjes
MAX5000, makrocelulat përmbajnë një matricë AND të programueshme) (fig.5.16), që quhet
matricë logjike (Logic Array).

Fig.5.15 Arkitektura e familjes MAX7000 të firmës ALTERA


Fig.5.16 Makrocelula e familjes MAX7000

Matrica jep 5 terma produkt. Këta, nëpërmjet një matrice të quajtur “Matrica e zgjedhjes së
termave produkt” (Product term Select Matrix) përdoren ose për realizimin e logjikës kombinatore
ose si sinjale komandimi për funksionet: RESET (CLEAR), PRESET, CLOCK dhe CLOCK ENABLE të
regjistrit. Siç shihet, një nga termat produkt kthehet përsëri në matricën logjike. Ai ndodhet në
dipozicion të kësaj matrice si: “Shared Product Term” dhe mund të kombinohet me secilin term
produkt brenda për brenda LAB-it. Vetë regjistri mund të konfigurohet si D-FF, T-FF, JK-FF ose RS-
FF. Për të marrë një funksion kombinatorik regjistri mund të anashkalohet. Për rastet, kur kërkohen
më shumë se 5 terma produkt, vihen në dispozicion terma të tjerë zgjërimi (Expander Terms).
Karakteristike për familjen MAX7000 janë të ashtuquajturit: terma “paralel” dhe terma “shareable
(Parallel and Shareable Terms).
Në rastin e parë, dalja e një porte OR të një makrocelule fqinje lidhet në matricën e zgjedhjes
së termave produkt. Në këtë mënyrë në një makrocelulë mund të lidhen paralelisht deri 20 terma
produkt, aq sa është dhe numri i blloqeve LAB. Në rastin e dytë, për një bllok LAB ka 16 terma
“shareable” (Shared Expander Terms). Secili term prodhohet brendapërbrenda një makrocelule. Ato
vihen në dispozicion të të gjithë makrocelulave të tjera të një LAB-i.
Seria e familjes MAX7000 zotëron të ashtuquajturin lidhje e kundërt e dyfishtë. Një herë lidhja
e kundërt i shërben terminalit I/O, kur ai është konfiguruar si hyrje dhe herën tjetër mund t´i
shërbejë makrocelulës. Një karakteristikë interesante e makrocelulës është mënyra e programimit
të saj. Çdo makrocelulë mund të programohet ose për shpejtësi të lartë veprimi ose për konsum të
vogël energjie. Kështu, sinjalet kritikë mund të punojnë me shpejtësi të lartë veprimi, ndërsa sinjalet
jo kritikë mund të punojnë me shpejtësi të ulët dhe humbje të vogla energjie. Në këtë mënyrë,
humbjet e përigjithshme të energjisë mund të reduktohen deri 50%.
Sistemi i zhvillimit MAX+PLUS II për seritë e familjeve MAX5000 dhe MAX7000 punon me
sistemin operativ Microsoft Ëindoës ose Ëindoës NT. Ai jep mundësinë, që krahas paraqites grafike
të bëhet edhe përshkrimi me tekst i ekuacioneve Buleane, i sintaksës se maqinës së gjëndjeve (State
Machine Syntax), i tabelave të vërterësisë, si dhe të gjuhës AHDL (Altera Hardëare Description
Language) përkatësisht VHDL. Pas minimizimit dhe sintetizimit logjik, procesi i programimit kalon
nëpërmjet algoritmit-Fitter, pas së cilës assembler-i prodhon fajllin POF (Programming Object File).
Për verifikim, ekziston mundësia e simulimit funksional dhe në kohë të funksioneve të projektuar.
CAD / CAE të firmave të tjera mund të futen në procesin e projektimit, me ndihmën e ndërfaqes-
EDIF.

1. Familjet LCA të firmës XILINX (FPGA)

Firma XILINX, e themeluar në vitin 1984, duke nxjerrë për herë të parë në treg (më 1985) elementin
e parë FPGA “XC2064”, u bë me të drejtë pionierja e prodhimit të elementëve logjikë të
programueshëm.
Familjet e ndryshme të kësaj firme, i përkasin arkitekturave më të njohura në treg dhe ofrojnë
gamën më të gjerë të elementëve FPGA në raport me firmat e tjera prodhuese. Struktura bazë e
këtyre elementëve është Matrica e qelizave Logjike LCA (LCA = Logic Cell Array), arkitektura e së
cilës paraqitet në fig.5.17.

Ajo përbëhet nga tre kategori elementësh të konfigurueshëm:


 Blloqet e hyrje daljes (I/O Blocks)
 Blloqet logjike të konfigurueshëm CLB (Configurable Logic Blocks)
 Elementët ndërlidhës të programueshëm (Programmable Interconnections)

Fig. 5.17 Ndërtimi i brendshëm i një matrice LCA të firmës XILINX

Siç shihet nga kjo figurë, një matricë modukesh logjikë CLB rrethohet nga qeliza identike për
hyrje/dalje (I/O Cells). Ndërmjet tyre ndodhen elementët ndërlidhës (burimet e rrugëzimit) me
gjatësi të ndryshme të renditur sipas rreshtave dhe kollonave. Ndërlidhja e mirëfilltë midis vetë CLB-
ve dhe midis CLB-ve dhe qelizave I/O bëhet nga elementët ndërlidhës nëpërmjet çelsave (switches),
gjëndja komutuese e të cilëve ruhet në pjesën e memorjes SRAM të këtij elementi logjik.
Blloqet (qelizat) I/O bëjnë ndërfaqimin midis matricës logjike dhe këmbëve (pins) të qarkut të
integruar. CLB-të kryejnë funksionet logjikë të specifikuar nga përdoruesi gjatë programimit, ndërsa
burimet (elementët) e ndërlidhjes realizojnë rrjetat e nevojshme për bartjen e sinjaleve logjikë midis
CLB-ve. Struktura e përgjithshme e blloqeve I/O të familjeve XC2000 dhe XC3000 tregohet në
fig.5.18, ndërsa struktura e blloqeve I/O të familjes XC4000 paraqitet në fig.5.19.

Fig.5.18 Struktura e blloqevet I/O në famijlet XC2000 dhe XC3000


Fig.5.19 Struktura e bllokut I/O në familjen XC4000

Blloku I/O mund të konfigurohet të jetë hyrje, të jetë dalje ose hyrje/dalje. Përveç mundësisë së
konfigurimit të polaritetit të sinjalit të daljes dhe sinjalit OE jepet edhe mundësia e konfigurimit të
parametrit Slew-Rate të buffer-it të daljes, si dhe -të një rezistence passive (pull-up) për sinjalin e
hyrjes. Si sinjalet e hyrjes ashtu edhe ata të daljes mund të konfigurohen të kalojnë drejtëpërdrejtë
ose te memorizohen më parë në një regjistër ose latch përkatësisht. Strukturat e blloqet CLB janë
po kaq fleksibël sa dhe ato të të blloqeve I/O. Ato paraqiten në fig.5.20 dhe 5.21. Strukturat e fig.5.20
i përkasin familjeve XC2000 përkatësisht XC3000, ndërsa strukura e fig.5.21 i përket familjes XC4000.
Fig.5.20 Strukturat e blloqeve CLB në familjet XC2000 dhe XC3000

Fig.5.21 Struktura e bllokut CLB në familjen XC4000

CLB-të mund të konfigurohen në funksionet e tyre në mënyra të ndryshme. Çdo CLB ka një pjesë
(njësi) kombinatore, sipas familjes një ose dy flipflop-ë për përpunim sekuencial dhe njësi të
ndryshme komandimi. Veprimet e mirëfillta logjike kryhen nëpërmjet tabelave “lookup” (LookUp
Tables), adresat e të cilave përcaktohen nga pjesa kombinatore. Daljet e tyre përbëhen nga vetëm
një bit. Ato përfaqësojnë rezultatin e një veprimi logjik Lloji i veprimit logjik përcaktohet nga tabela
“lookup”, e cila futet në kujtesë gjatë procesit të konfigurimit të lementit.
Raporti ndërmjet numrit të hyrjeve dhe daljeve në një QI logjik ndryshon nga një familje logjike në
tjetrën. Në familen XC2000 ky raport është 5:2, në XC3000 është 9:2, ndërsa në XC4000 është 14:5.
Si rrjedhojë, në varesi të familjes logjike, programuesi mund të konfigurojë apo kombinojë këto
funksione të mundëshme:
XC2000: Një funksion të çfarëdoshëm me katër hyrje, ose dy funksione të çfarëdoshëm me tre
hyrje secili.

XC3000: Një funksion të çfarëdoshëm me pesë hyrje ose dy funksione të çfarëdoshëm me kater
hyrje secili, ku tre hyrje duhet të jenë të përbshkëta për të dy funksionet.

XC4000 Një funksion të çfarëdoshëm me pesë hyrje, dy funksione të çfarëdoshëm me kater hyrje
secili, si dhe funksione me deri nëntë hyrje.

Përveç kësaj, në elementët e familjes logjike XC4000, njëra ose të dyja tabelat “lookup” mund të
konfigurohen si kujtesa RAM me ndihmën e gjeneratorëve. Nëpërmjet një logjike speciale mund të
fitohet një sinjal i shpejtë bartës (Fast Carry Signal), i cili ndihmon në realizimin e funksioneve
aritmetike me kohë shumë të vogël vonese. Sipas funksionit, secila nga hyrjet e të dhënave DIN, F
dhe G ose lidhjet e kundërta të daljeve Q në hyrjet F dhe/ose G mund të selektohet për tu lidhur ne
hyrjet D te flipflop-ëve. Flipflop-ët kontrollohen së bashku ose individualisht nga hyrja asinkrone S/R
(SET/RESET). E njëjta gjë mund të thuhet edhe për hyrjen Clock.
Lidhja e blloqeve CLB në matricën LCA (fig.5.22) bëhet në mënyra të ndryshme:
 nëpërmjet segmentëve metalikë horizontalë dhe vertikalë në pikat e lidhjes të quajtura PIP
(Programmable Interconnect Point) me ndihmën e matricës komutuese (Switch Matrix),
 Nëpërmjet lidhjeve te drejtpërdrejta (vetëm midis CLB-ve fqinje),
 Nëpërmjet të ashtuquajturave linja të gjata, të cilat shtrihen gjithashtu horizontalisht dhe
vertikalisht.

Fig.5.22 Burime të ndryshme rrugëzimi në një matrice LCA


Lidhjet e drejtpërdrejta mund të përdoren vetëm midis CLB-ve fqinje. Linjat e gjata përdoren në
rastin e sinjaleve të shpejtë (kritikë në kohë), për të siguruar kohë të vogla vonese. Me ndihmën e
buffer-ave me tre gjëndje mund të ngrihet arkitektura e një BUS-i të tërë. Lidhjet e gjata përdoren
veçanërisht për shpërndarjen e sinjaleve clock. Strukturat kanë një rrjet special për këtë sinjal. Në
familjen XC3000 burimet e rrugëzimit nëpërmjet matricës komutuese përbëhen nga pesë segmentë
metalikë horizontalë dhe -pesë segmentë vertikalë të vendosur në kanalet e rrugëzimit midis vetë
blloqeve CLB dhe midis CLB-ve dhe blloqeve I/O. Çdo segment i është përshtatur përmasave të një
CLB-je. Në fig.5.23 paraqitet rasti i rrugëzimit të nje sinjali nga një CLB në tre CLB të tjerë, nëpërmjet
dy matricave komutuese.

Fig.5.23 Një rast i veçantë rrugëzimi me anë të matricave komutuese

Hyrjet e blloqeve CLB ose të blloqeve I/O janë të multipleksuara. Përzgjedhja e tyre bëhet duke
programuar bit-et e konfigurimit. Lidhjet e nevojshme për rrugëzim bëhen duke zgjedhur çiftet e
pikave të lidhjes në matricën komutuese (matrix pins).
Burimet e rrugëzimit të serisë XC4000 kanë përmirësime të më tejëshme. Ato perfaqesojnë matrica
tepër simetrike në te katër kahet. Linjat e gjata kanë gjithashtu shpërndarje simetrike gjatë gjithë
strukturës (chip-it). Në përpjekjet për të zgjidhur të gjitha problemet projektuese firma XILINX ka
prodhuar disa familje speciale QI logjikë. Përmëndim disa prej tyre:
 Familja XC3100 është për aplikime te shpejta. Në krahasim me serinë XC3000, QI të kësaj serie
kanë shpejtësi më të lartë, bufera me kapacitet më të lartë Sleë Rate më të përmirësuar, dhe
konsum më të ulët energjie.
 Familja H është për aplikime që kërkojnë nje numër te madh terminalesh hyrje/dalje (I/O pins).
 Familjet XC2000L dhe XC3000L punojnë me 3.3V. Këto janë për aplikime në pajisjet portabël, të
cilat punojnë me bateri.
Familja XC8000, e zhvilluar më vonë, ka një arkitekturë të ndryshme nga ajo e familjeve të tjera.
Përveç kësaj, në vend të celulave SRAM, kjo familje ka antisiguresa për programim, të ngjashme me
ato të firmave ACTEL ose QUICKLOGIC, duke hequr dorë nga strategjia e riprogramimit.

Probleme të optimizimit të sistemit që projektohet

Tani, që jemi njohur me arkitekturat e disa prej elementëve më të njohur CPLD dhe FPGA, le te
trajtojmë disa kërkesa, që lidhen me optimizimin e sipërfaqes së integrimit dhe me shpejtësinë e
veprimit të sistemit qe projektohet, të cilat projektuesi i parashtron përpara dhe i zgjidh gjatë fazës
së projektimit me ndihmën e pajisjeve të projektimit, që njhen me emrin Sisteme Zhvillimi.

Varësia e shpejtësisë nga sipërfaqja e integrimit


Shpesh lind nevoja, që pjesë të veçanta të një skeme të realizohen me shpejtësi të lartë. Kjo mund
të arrihet p.sh. nëpërmjet përpunimit paralel të informacionit, duke realizuar një ecuri paralele të
disa funksioneve të caktuar logjikë, në mënyrë që rezultate të caktuar të jenë të pranishëm herët
në kohë, për përpunim të mëtejshëm. Kështu mund të realizojmë një përpunim të veçuar për bit-in
e bartjes, për të përshpejtuar procesin e mbledhjes në një mbledhës binar. Por rritja e shpejtësisë
së veprimit kërkon një sipërfaqe më e madhe integrimi, sepse për çdo funksion duhet të vihet në
dispozicion hardëare-i përkatës. Më poshtë paraqiten dy metoda të rritjes së shpejtësisë:

Metoda Pipeline
Në strukturën Pipeline funksionet e mëdha dhe kompleks ndahen ne shumë funksione të vegjël e si
rrjedhojë më të shpejtë, rezultatet e ndërmjetme të të cilëve memorizohen në elementë
sekuencialë. Këtu bëhet dhe kompensimi i vonesave në kohë te këtyre funksioneve. Fig. 5.24 tregon
përdorimin e kësaj metode nëpërmjet shembullit të një mbledhësi me 8 bit, që shfrytëzon dy
mbledhës binar me 4 bit. Funksioni më kritik në një mbledhës me 8 bit është sinjali i bartjes.
Normalisht ai prodhohet vetëm mbas rezultatit të shumës, prandaj ka kohën më të gjatë të vonesës.

Fig.5.24 Mbledhës me 8 bit me strukturë të brendshme Pipeline


Mbledhësi me 4-bit e ka kohën e vonesës të këtij bit-i mjaft më të vogël. Këtë shfrytëzon edhe
metoda apo struktura Pipeline. Në ciklin e parë, mbas mbedhjes së 4 bit-eve rë rendit më të ulët
shuma e tyre memorizohet në regjistrat Pipeline së bashku dhe njëkohësisht me bitin e bartjes. Në
ciklin e dytë stadi i dytë Pipeline prodhon 4 bit-et e rendit më të lartë të rezultatit përfundimtar,
ndërkohë që stadi 1 përpunon të dhënat e dyta që pasojnë. Rruga kritike që përshkon sinjali i bartjes
i përgjigjet vetëm njërit prej mbledhësve me 4 bit. Natyrisht as numri i stadeve Pipeline nuk mund
te rritet shumë as vetë stadet nuk mund të realizohen shumë të vegjël. Kjo sepse nga njëra anë me
vendosjen e regjistrave shtohet skema logjike që duhet realizuar në elementin që programohet dhe,
nga ana tjetër shpesh duhen korigjuar edhe vonesat në kohë të rezultateve të ndërmjetme, të cilat
kërkojnë shtim suplementar të regjistrave

Metoda e paralelizimit
Metoda paralele tregohet në fig.5.25 krahas asaj seriale. Duke vrojtuar rrugën me vonesen më të
gjatë në kohë në metodat seriale (në figurë është paraqitur me vijë të ndërprerë), vihet re që ajo
përfaqëson vonesën në kohë të 3 portave. Në realizimin në paralel kjo vonesë është e barabartë me
vonesën e vetëm një porte Por ndërsa metoda seriale, duke mos marrë parasyshë 3 FF-të, kërkon
vetëm tre porta AND metoda paralele kërkon 4,5 porta. Kështu, metoda seriale është më
ekonomike, ndersa metoda paralele rezulton optimale në kohë.

Fig.5.25 Një krahasim i metodës seriale me atë paralele

Në disa arkitektura FPGA (p.sh. ACTEL) argumenti i shtimit të portave në variantin paralel mund të
bjerë, sepse realizimi i tipit të portave ekujvalente me 4,5 porta (vlenë për familjen ACTEL ACT1)
bëhet në një modul logjik. Theksojmë se për realizimin e një porte të tillë nevojitet një modul logjik.
Duke shfrytëzuar këtë fakt mund të realizohen skema të pjesëshme me strukturë paralele, pa
nevojën e shtimit të moduleve të tjerë logjikë, që ndodhen në chip. Pra paralelizimi në këtë rast
siguron shpejtësi të lartë veprimi pa shtimin e sipërfaqes së integruar.

Optimizimi i sipërfaqes
Siç e pamë kërkesa për shpejtësi të lartë është në kundërshtim me kërkesën për arritjen e një
sipërfaqje optimale. Burimet logjike dhe burimet e rrugëzimit të një elementi logjik të
programueshëm janë të kufizuar. Metodat e ndryshme të optimizimit të sipërfaqeve lidhen me
rritjen e shfrytëzueshmërisë së këtyre burimeve të kufizuar. Por kjo shoqërohet me zvoglimin e
shpejtësisë së veprimit të sistemit që integrohet. Prandaj duhet të gjindet një kompromis midis tyre.
Në fig.5.26 tregohet grafiku i varësisë reciproke midis sipërfaqes dhe shpejtësisë. Pikat e veçanta në
grafik i referohen kompromiseve të mundëshme. Si rregull, optimizimi i sipërfaqes arrihet
nëpërmjet realizimit të strukturave seriale (fig.5.25).

Fig.5.26 Grafiku i varësisë së sipërfaqes nga koha e voneses

Në shumë instrumenta (pajisje) projektuese optimizimi i sipërfaqeve bëhet automatikisht.


Përdoruesi parashtron vetëm kërkesat e tij. Gjatë procesit të optimizimit të sipërfaqes ose
shpejtësisë së veprimit, pajisja kërkon t’u përmbahet këtyre kërkesave ose t’u afrohet atyre sa më
shumë të jetë e mundur. Për këtë qëllim pajisjet përdorin metodat e optimizimit të redundancës
(teprisë), të strukturës dhe të burimeve. (Redundancy, -Structuring and -Resourcen Optimising).

Optimizimi i termave të tepërt (redundancy).


Optimizimi i redundanc-ës konsiston në përdorimin e metodave të ndryshme për largimin e termave
të tepërt, të panevojëshëm, nga ekuacionet buleane. Kjo sjell me vete nga njëra anë një sipërfaqe
integrimi më të vogël dhe nga ana tjetër testim më të mirë të programimit. Kur projektimi rezulton
me terma të tepërt (redundand), mund të ndodhë që rruga e sinjalit të ketë fizikisht dy degëzime të
ndryshme. Nëqoftëse njëri degëzim është me difekt, atëhere difekti nuk mund të konstatohet, për
shkak të mbulimit të tij nga degëzimi i padifektuar. Sipas arkitekturës optimizimi mund të jetë në
një portë të vetme (Single Port) ose në shumë porta (Multiple Port). Qëllimi i variantit “Single” është
thjeshtimi i ekuacioneve për realizimin e një numri minimal termash produkt për çdo term shumë,
si në shembullin e mëposhtëm:
Y = A & B & C # /A & B & C Y=B&C

Optimizimi ‘Single” përdoret në arkitekturat me strukturë-PAL, ku nuk është i mundur shkëmbimi i


termave produkt (Product Term Sharing). Në variantin e dytë “Multiple”, mbas optimizimit të
termave të tepërt, gjenden termat produkt, të cilët rezultojnë të njëjtë në terma shumë të
ndryshme. Më pas, ky term realizohet vetëm njëherë dhe i shtohet shumave përkatëse. Varianti
“Multiple” gjen përdorim në arkitekturat me strukturë-PLA, ku të dyja matricat “AND” dhe “OR”
janë të programueshme dhe mund të bëhet shkëmbimi i termave produkt. Përfaqësues të njohur të
këtij varianti janë algoritmi “Espresso” dhe algoritmi i Quine McCluskey, Të dy këta algoritma
gjenden, në variante të ndryshëm, në pajisjet projektuese.
Optimizimi i strukturës
Si rregull projekti përshkruhet nga ekuacionet buleane. Për optimizimin e tyre, me qëllim zvoglimin
e sipërfaqes së integrimit ose/dhe rritjen e shpejtësisë së sistemit që realizohet sipas një arkitekture
të caktuar, këto ekuacione transformohen d.m.th. strukturohen. Shembulli i mëposhtëm sqaron
këtë strukturim:
Y = A&D # A&C # B&C # B&D (4 AND2, 1 OR4)

Pas strukturimit:
Y = (A#B) & (C#D) (2 OR2, 1 AND2)

Ekuacioni i parë përfaqëson shumën e produkteve (SOP) karakteristike e arkitekturave PAL dhe GAL.
Ekuacioni i dytë i përgjigjet një skeme logjike (listë portash = “Gate Netlist“), ku ekuacionet
përshkruhen nga veprime AND, NAND, NOR, XOR, etj., të cilat gjenden në arkitekturat FPGA. Për të
transformuar SOP në „Gate Netlist“ duhet bërë strukturimi si në shembullin e mësipërm, ku shumë
terma thjeshtohen. Si rregull arrihet një densitet më i lartë integrimi. Rruga e anasjelltë e
transformimit, d.m.th. nga “Gate Netlist“ në SOP quhet Flattening (flatten = sheshoj, rrafshoj,
lëmoj). Duke kryer shumzimet për të hequr kllapat „Gate Netlist” transformohet në SOP.
Një nga algoritmet më të rëndësishëm për strukturim është i ashtuquajturi “Kerneling” (Kernel =
bërthamë). Algoritmi përpiqet të gjejë terma të ndërmjetëm (Kernels), që mund të ndodhen në
shumë terma produkt të funksioneve të ndryshme të daljes. Këta terma të ndërmjetëm (bërthama),
që realizohen vetëm njëherë, jepen më tej, sipas nevojës, në hyrjet përkatëse. Duke përdorur këtë
metodë algoritmimi, rritet shfrytëzueshmëria e burimeve të pranishme logjike. Kështu funksionet
logjike:
Y1 = (A#B) & (C#E), Y2 = (A#B) & D

duke përdorur termin e ndërmjetëm X = A#B transformohen në:


Y1 = X & (C#E), Y2 = X & D

Metoda “Kerneling” përdoret me sukses në strukturat FPGA.

Optimizimi i burimeve
Dy metodat më të përdorura, për optimizimin e burimeve logjike, d.m.th. për zvoglimin e sipërfaqes
së integrimit, veçanërisht në strukturat FPGA, janë metodat Ressource-Sharing (shkëmbimi i
burimeve) dhe Node Collapsing (eleminim i nyjeve). Metoda e optimizimit nëpërmjet shkëmbimit
të burimeve tregohet në fig. 5.27. Të dy mbledhësit binarë (fig.5.27a) mbledhin të dhënat e bus-eve
të ndërmjetëm të elementit. Për të zbatuar metodën, duhet që mbledhjet të bëhen në dy intervale
të ndryshme kohe (fig.5.27b), në varësi të variablit SEL të selektimit të multiplekserave. Duke patur
parasyshë, që sipërfaqja e një multiplekseri është shumë më e vogël se sipërfaqja që zë një
mbledhës binar, mbledhësi binar i fig.54b rezulton me sipërfaqe mjaft më të reduktuar se sa
mbledhësi i fig.54a.
Fig.5.27 Optimizimi i sipërfaqes nëpërmjet shkëmbimit të burimeve

Për të qënë më korrekt duhet të theksojmë se sinjali i selektimit të multiplekserave kërkon një
logjikë suplementare, por që ndikon pak në sipërfaqen e integrimit. Metoda e optimizimit të
sipërfaqes së integrimit me anë të eleminimit ose gjenerimit të nyjeve është patentuar nga firma
MINC Inc., Colorado dhe është realizuar në të gjithë sistemet e zhvillimit. Duke kuptuar me nyje
pika të ndërmjetme, brenda për brenda chip-it, mund të themi që ekuacioni i një nyje mund të
shfaqet disa herë në rrugën e sinjalit. Ato mund të jenë të natyrës virtuale (të cilat mund të
eleminohen me anë të optimizimit), ose të natyrës fizike. Nyje janë p.sh. termat e ndërmjetëm
(X=A#B) të prodhuar nëpërmjet algoritmit të strukturimit “Kerneling” (shih paragrafin e
mëparshëm). Metoda e optimizimit të sipërfaqes me anë të elemimimit ose gjenerimit të nyjeve
shpjegohet qartë me fig.5.28.

Fig.5.28 Gjenerimi i nyjeve të ndërmjetme për reduktimin e sipërfaqes së integrimit

Në fig.5.28a ekuacioni i daljes është realizuar si shumë produktesh (SOP). Ai përmban 128 terma
produkt me 8 hyrje dhe zë një sipërfaqe relativisht të madhe, por meqënëse është me dy stade (AND
dhe OR) është shumë i shpejtë. Nëpërmjet futjes së nyjeve (fig.5.28b) numri i termave produkt mund
të zvoglohet në mënyrë drastike, por në kurriz të uljes shpejtësisë së veprimit të skemës. Metoda e
elemimimit të nyjeve është me interes në funksionet arithmetike, që përmbajnë struktura XOR të
fshehura. Shkalla e optimizimit të sipërfaqes mund të arrijë deri 60%.
Metoda të tjera të reduktimit të sipërfaqes së integrimit janë nga njëra anë metoda e sintezës së
regjistrave dhe ajo e përdorimit të logjikës positive dhe negative dhe nga ana tjetër metoda e
ashtuquajtur Bubble Shifting (zhvendosje e flluckës) dhe metoda e ekstratimit (Extration Method).
Në metodën e sintezës së regjistrit llogariten ekuacionet buleane në dalje për tipe të ndryshëm FF
dhe zgjidhen ato, që japin zgjidhje optimale. Sistemi i zhvillimit easyABEL mbështet D- dhe T-FF.
Sisteme të tjerë mbështesin JK- dhe RS-FF. Metoda e sintezës përdoret sidomos në aplikimet , që
përmbajnë shumë regjistra, si numëratorët, makinat e gjendjes, akumulatorët etj.. Sipas firmës
MINC, përdorimi i kësaj metode mund të kursejë deri 50% të sipërfaqes. Edhe metoda e logjikës
positive dhe negative funksionon njëlloj. Në të gjitha pajisjet apo sistemet e projektimit ekziston
mundësia e llogaritjes së sistemeve të ekuacioneve në brendësi të skemës, herë në logjikën positive
dhe herë në logjikën negative, për të arrirë në një zgjidhje optimale.
Kështu ekuacioni:
Y = !A # !B

që përmban 2 terma produkt në logjikën positive, me anë të teoremës së De Morganit mund të


transformohet në:
!Y = A & B

Ky ekuacion është i logjikës negative dhe përmban vetëm një term produkt.

Në metodën bubble shifting bëhen përpjekje për të zhvendosur invertitorët në hyrjet e të


ashtuquajturave porta komplekse, të cilat hasen në arkitekturat e familjeve ACTEL dhe QUICKLOGIC.
Nëpërmjet Bubble shifting, në vend të një invertitori të veçantë që zë një sipërfaqe të madhe,
realizohet funksioni inverter me sipërfaqe optimale si në fig.5.29.

Fig. 5.29 Optimizimi i sipërfaqes nëpërmjet metodës “Bubble Shifting”

Disa familje elementësh logjikë të programueshëm përmbajnë Look Up-Tables, ku mund të futen
terma të ndërmjetëm të një sistemi ekuacionesh, të cilët përmbajnë p.sh. katër hyrje dhe një dalje.
Si algoritëm përdoret metoda e ekstraktimit. Motorë të rëndësishëm të zhvillimit e të përpunimit të
metodave të sipërpërmendura dhe të algoritmeve të tjerë në kërkim janë sidomos Universiteti i
Berkl-it (Kaliforni, USA) dhe Universiteti i Grenoble-it, ku punojnë grupe të mëdha pune. Të gjithë
sistemet e zhvillimit, që ndodhen në treg, bazohen në këto algoritme, duke mundësuar programimin
e skemave tepër komplekse në qarqet e integruara të programueshme.
Përshkrimi i skemës me elementë elektronikë të bibliotekave

Pavarësisht nga numri gjithnjë në rritje i gjuhëve përshkruese të hardëare-it, rruga e ndërtimit të
skemave (në CPLD dhe FPGA) me komponente të bibliotekave luan, si më parë, rol të rëndësishëm.
Kjo metodë, që në anglisht njihet me emrin Schematic Entry (Schematic Entry = futje komponentesh
të skemës) ka kuptimin e editimit grafik të listës së elementëve të skemës ( =Netlist), që merren nga
bibliotekat. Skema që rezulton programohet në chip-in CPLD (ose FPGA). Pra, përshkrimi me anë
të skemës përfaqëson shëmbëlltyrën e hard-it (skemës), që do të programohet në chip.
Programuesi sintetizon skemën, në ekranin e monitorit, me elementë apo module (të tilla si porta,
multipleksera, numëratorë, makro, etj.), që merren nga bibliotekat e simboleve, të cilat janë të
varura nga teknologjia e familjes logjike të përdorur. Si rrjedhojë, për fat të keq, është pothuaj i
pamundur përdorimi i skemës së kompozuar për familje të tjera. Është për t’u vnë në dukje, që
ndërsa kjo rrugë e projektimit të skemës rezulton e shpejtë dhe kompakte, në krahasim me atë të
programimit me anë të një gjuhe assembler, ajo rezulton e lodhëshme dhe me mjaft gabime po të
krahasohet me programimin me anë të një gjuhe të lartë programimi.
Tani, le të japim një paraqitje të shkurtër për disa module, të cilët janë në përbërjen e pajisjeve te
sintezës logjike

Fitting
Moduli Fitter transformon ekuacionet bool-eane, të marra nga procesi i përkthimit dhe ai i
optimizimit, në të dhëna programimi për elementin logjik që projektohet. Mënyra e e veprimit të tij
tregohet në fig.5.31.

Fig.5.31 Mënyra e veprimit të një “Fitter-i”


Veprimi Fitting është i thjeshtë për elementët PAL dhe GAL. Termat produkt dhe shumat e tyre
realizohen në matricat AND dhe OR, në dalje të të cilave lidhen makrocelulat. Konfigurimi i tyre
përcakton dhe funksionet në terminalet e daljes. Ata mund të jenë:
 funksione kombinatore, ashtu sic merren nga matricat OR (të invertuar ose jo).
 të njëjtët funksione (të invertuar ose jo), por të ruajtur më parë në një element kujtese (FF).

Meqënëse elementët PAL dhe GAL të firmave të ndryshme prodhuese kanë të njëjtën strukturë,
modulet Fitter të firmave të ndryshme, japin përgjithësisht të njëjtin rezultat. Në dallim nga moduli
“Technological Mapper”, për të cilin do flitet në vazhdim, fitter-i nuk përdor biblioteka simbolesh,
të cilat janë derivate të teknologjisë të familjes së elementit të përdorur, por vetëm grumbullon
njohuri mbi strukturën (arkitekturën) e këtij elementi.
Krejt tjetër është situata në elementët me kompleksitet të larte, të tillë si CPLD të firmave ALTERA,
XILINX, etj. Ata kanë strukturë të ngjashme me arkitekturën e elementëve PAL, por në thelb ofrojnë
funksionalitet shumë më të lartë. Si rrjedhojë këta elementë programohen me mjaft vështirësi.
Së pari, fitter-i bën përpjekje për shndërrimin e ekuacioneve boole-ane, me metoda të ndryshme
optimizimi, në ekuacione të përshtatshme për arkitekturën e elementit. Më pas, fitter-i mundohet
t’i vendos; këto ekuacione (Place and Route) në mënyrë optimale, në segmentë te veçante të
elementit CPLD. Lidhja e makrocelulave bëhet nëpërmjet programimit të matricës komutuese dhe
të matricës së termave produkt.
Çfarë ndodh saktësisht gjatë procesit Fitting në këta elementë, është e vështirë të kuptohet. Por
duhet vënë në dukje, që disa nga kriteret për zgjedhjen e një fitter-i janë:
 çmimi i blerjes
 shpejtësia e shndërrimit të ekuacioneve në të dhëna programimi dhe,
 shkalla, në të cilën mund të arrijë integrimi.

Kriteri i fundit është mjaft përcaktues, sepse fitter-a të ndryshëm, për elementët me shkallë të lartë
kompleksiteti, përdorin algoritma të ndryshëm dhe nuk japin, si pasojë, të njëjtin rezultat. Për fat të
keq, shumica e matricave komutuese të arkitekturave të ndryshme nuk mund të realizojnë çdo lidhje
të dëshiruar. Prandaj fitter-at i nënshtrohen disa kufizimeve dhe në rrethana të caktuara mund të
mos arrijnë të bëjnë shndërrimin.

Mapping
Ky modul punon njëlloj si fitter-i, por është i lidhur ngushtësisht me teknologjinë e elementit. Moduli
Mapper shndërron një përshkrim, p.sh. në formë ekuacionesh boole-ane, në një listë elementësh,
karakteristke për një FPGA të një teknologjie të caktuar, në varësi të kufizimeve që mund të vihen
(si p.sh. në lidhje me parametrin FAN-Out). Në përputhje me teknologjinë, arkitektura e një elementi
ndryshon shumë nga ajo e një elementi tjetër. Prandaj, mapper-i përdor bibliotekën e simboleve të
vetë elementit, që projektohet. Si rezultat i veprimit Mapping, prodhohet një listë komponentesh
(porta, FF, etj), produkt i teknologjisë së elementit, e cila vihet në dispozicion të modulit “Place and
Route” (vendos dhe rrugëzo) për vendosjen e dhe lidhjen e komponenteve të skemës.
Placing & Routing
Sipas teknologjisë së elementit, shkallës së tij të komleksitetit dhe bibliotekës së komponenteve,
lind, mbas sintezës, lista e komponenteve të skemës. Modulet logjike të nxjerra nga lista, moduli
“Place” përpiqet t’i vendosë në modulet logjikë të chip-it, duke shfrytëzuar metoda tepër
komplekse, sepse nga njëra anë kërkohet optimizimi i sipërfaqes së integrimit dhe gjatësisë së fijeve
lidhëse, nga ana tjetër -një numër i madh i këtyre fijeve, për të kryer lidhjet e shumta të moduleve
në skemë. Fig. 5.32 tregon mënyrën e veprimit të modulit “Place and Route”

Fig.5.32 Mënyra e punës së modulit “Place and Route”

Mbas dhënies së listës nga moduli “Mapper”, futet në veprim i ashtuquajturi Combiner (qarku
kombinues), i cili përpiqet të kombinojë komponentet e listës, që të përshtaten sa më mirë në
modulet logjikë të chip-it. Fig.5.33 e tregon këtë proçes nëpërmjet shembullit të përdorimit të
qarkut të “Lookup Table”, për realizimin e funksioneve F1 dhe F2. Combiner-i kërkon strukturë me
4 hyrje dhe 2 dalje brendapërbrenda listës së komponenteve. Këtë strukturë ai i gjenë të
përshtatëshme ta realizojë në qarkun “Lookup Table”, që ka sipërfaqe optimale dhe e vendos (place)
në të.

Fig.5.33 Përfshirja e shumë funksioneve logjikë në qarkun “Lookup Table”


Veprimi pasues kryhet nga qarku “Place”. Gjatë këtij procesi “Placement”, bëhet vendosja e
moduleve logjikë të chip-it, në mënyrë të tillë, që ata të kenë shpërndarje optimale ndaj njëri tjetrit.
Një algoritëm për kryerjen e këtij veprimi, i cili përdoret sidomos në elementët FPGA, njihet me
emrin Algoritmi “Annealing”. Së pari, ky algoritëm përcakton (place) modulet logjikë të elementit
FPGA, ku do ngrihet skema, si dhe -gjatësinë e fijeve lidhëse ndërmjet tyre. Këtë gjatësi, ai e
memorizon si gjatësi fillestare. Në hapin e dytë, (fig.5.34), algoritmi bën zhvendosjen e moduleve,
me qëllim që gjatësia e përgjithëshme e këtyre fijeve të jetë sa më e vogël.

Fig.5.34 Procesi i vendosjes (Placing) të moduleve logjike në një chip

Zhvendosja maksimale është funksion i gjatësisë fillestare të memorizuar. Duke zvogluar gjatësinë
e fijeve, në hapat e mëtejshëm, zvoglohen gjithashtu distancat e zhvendosjeve të mundëshme
moduleve. Pas çdo llogaritje, duke marrë në konsideratë të gjitha zhvendosjet brenda chip-it,
përcaktohet përfundimisht gjatësia minimale e mundëshme e fijeve lidhëse. Ekziston mundësia, që
programuesi të japë paraprakisht gjatësinë minimale, nën të cilën, procesi i algoritmimit të
ndërpritet. E meta e algoritmit “Anneling” është se ai përpiqet t’i vendosë të gjitha komponenetet
sa më afër njëra tjetrës, duke mos marrë parasyshë kërkesat në lidhje me shpejtësinë e veprimit.
Këto kërkesa mund të plotësohen më mirë me një vendosje tjetër të moduleve logjikë.
Algoritma të tjerë janë algoritmat: “Timing driven Placement” dhe “Incremental Placement”. Për
lidhjen midis moduleve logjikë, algoritmi i parë, merr parasyshë, në rradhë të parë, kohët e vonesës
të dhëna paraprakisht nga programuesi. Algoritmi i dytë “Incremental Placement” bazohet në një
skicë (plan) të paradhënë nga programuesi, me qëllim që ai të ketë mundësinë e ndërhyrjev të vogla
gjatë procesit “Place and Route” të projektimit të skemës. Në algoritmin “Annealing” ndryshime
shumë të vogla të skemës, të dhëna paraprakisht, gjenerojnë skema krejt të reja. Pas përfundimit
të procesit “Placing” të moduleve logjikë, në hapin pauses kryhet procesi i lidhjes së këtyre
moduleve (Routing).
Në këtë proçes, ka dy mënyra ndërhyrjeje:
 duke dhënë paraprakisht një listë prioriteti për lidhjen e fijeve të veçanta, për të siguruar, së
pari, lidhjen e fijeve më kritike, ose
 duke dhënë paraprakisht kohët e vonesës të rrugëve më kritike, gjatë të ashtuquajturës
“Timing Driven Routing”.

Pas përfundimit të lidhjes së një fije, bëhet llogaritja e kohës së vonesës që krijon kjo lidhje, me
ndihmën e një algoritmi të ngjashëm me algoritmin SPICE. Në se të dhënat paraprake nuk
plotësohen, atëhere, për të marrë rezultate më të mira, si rregull, router-i shkëput një ose disa lidhje
dhe krijon lidhje të reja (Ripup and Reroute).
Në përgjithësi, programet Place &Route punojnë në mënyrë krejtësisht automatike. Por, për fat të
keq, pas aplikimit të tyre, mund të shfaqen efekte anësore të padëshirueshme, sepse një program i
tillë punon sipas një numri të kufizuar kriteresh, duke mos përfshirë të gjitha mudësitë, që kërkon
një proces optimal “Placing&Routing”. Kjo mund të shkaktojë, që një programim të zhvillohet me
sukses, ndërsa një tjetër jo. Prandaj, për të optimizuar rezultatin e procesit Place & Route, është
mirë të ushtrohet një ndërhyrje manuale. Kriteret për zgjedhjen e një programi Place&Route janë
çmimi, platforma llogaritëse, si dhe shpejtësia dhe densiteti i arritshëm i integrimit.

You might also like