Professional Documents
Culture Documents
Programueshem
PLD, PAL, GAL, CPLD, FPGA
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 = ∙ .
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.
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
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.
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:
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
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)
= ̅∙ ∙ + ∙ ∙ + ∙ ∙ + ∙ ∙
= ( ̅∙ + ∙ ) + ( ̅∙ + ∙ )
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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:
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.
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.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”.
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%.
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.
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
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:
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.
Modeli i siguresave i kësaj skeme paraqet përsëri dy terma “fqinjë”, shih markimin në Fig.4.35.
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:
∗∗
= ∙ ∙ + ̅∙ ∙ ̅+ ∙ ∙ ̅
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
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= + ̅∙ ∙ ̅∙ ∙
∗= + ̅∙ ∙ ̅∙ ∙ + ̅∙ ̅∙ ∙
∗= + ̅∙ ̅∙ ∙ ∙ ( + 1) = 1
∗= + ̅∙ ̅∙ ∙
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.
∗= ∙ ∙ ̅+ ∙ ∙ + ̅∙ ∙
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.
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.
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.
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).
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.
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.
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.
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.
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.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.
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.
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.
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).
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.
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.
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.
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
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.
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.
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.
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.
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ë.
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).
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
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.
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
Ky ekuacion është i logjikës negative dhe përmban vetëm një term produkt.
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.
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”
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ë.
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.