31.07.2013 Views

Programmeerbare logica vvkso - Docweb

Programmeerbare logica vvkso - Docweb

Programmeerbare logica vvkso - Docweb

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

PROGRAMMEERBARE LOGICA<br />

1 ASIC’s, PLD’s<br />

1.1 Begrippen<br />

In de digitale elektronica beschikt men over een brede keuze aan componenten om logische schakelingen<br />

te ontwikkelen.<br />

De ‘conventionele’ IC’s uit de standaard <strong>logica</strong>, ook wel discrete <strong>logica</strong> genoemd ( TTL, CMOS) voeren<br />

een vaste functie uit, gedefinieerd door de fabrikant van de component. De gebruiker dient een aantal<br />

verschillende componenten met elkaar te verbinden om de gewenste schakeling op te bouwen. Deze<br />

werkwijze heeft het voordeel van zijn populariteit. Wanneer men enkel de componenten in rekening<br />

brengt, kan ze goedkoop worden genoemd. Een nadeel is dat men, zelfs voor een relatief eenvoudige<br />

schakeling, snel een grote hoeveelheid componenten en de overeenkomstige ruimte op de gedrukte schakeling<br />

(PCB) nodig heeft. Elke wijziging van het ontwerp resulteert in een aanpassing van de PCB layout.<br />

De ontwikkelingstijd voor dergelijke schakelingen is vrij lang met een vanzelfsprekende invloed op<br />

de kostprijs.<br />

Een ASIC (Application Specific Integrated Circuit) is een IC waarvan de functie eveneens specifiek is<br />

voor een toepassing, maar bepaald wordt door de gebruiker. ASIC’s zijn opgebouwd uit een groot aantal<br />

logische cellen: poorten, flip-flop’s, en zelfs meer complexe functie’s zoals controllers, RAM e.d. De<br />

realisatie van een ASIC vergt echter productietechnieken die enkel door een gespecialiseerde fabrikant<br />

kunnen worden uitgevoerd. Ondanks de hoge integratiegraad kunnen ook hier de ontwikkelingstijden vrij<br />

lang zijn, zeker indien tijdens de ontwerpfase fouten worden gemaakt en de IC’s opnieuw geproduceerd<br />

moeten worden. Om rendabel te zijn dienen deze bouwstenen in grote aantallen te worden aangemaakt.<br />

Een programmeerbare logische bouwsteen of PLD (Programmable Logic Device) is een IC dat door de<br />

gebruiker zelf kan ‘geconfigureerd’ worden om een bepaalde logische functie uit te voeren. PLD’s vervangen<br />

meestal een hele reeks discrete componenten. Zij bestaan uit cellen samengesteld uit poorten en<br />

(eventueel) flip-flop’s die via een bepaalde procedure intern aan elkaar worden gekoppeld tot een schakeling<br />

met de door de gebruiker gewenste functionaliteit. Dit proces is dikwijls omkeerbaar. Een geconfigureerde<br />

(geprogrammeerde) PLD kan dan in zijn oorspronkelijke toestand hersteld worden. Dit betekent<br />

dat de verbindingen tussen de logische cellen ‘gewist’ worden en door andere kunnen vervangen<br />

worden, zodat een IC-bouwsteen met een nieuwe functie ontstaat. Dit is vooral belangrijk tijdens de ontwerpfase,<br />

zodat fouten snel kunnen gecorrigeerd worden. Een PLD koppelt de voordelen van discrete<br />

componenten aan de voordelen van ASIC’s:<br />

- Eenvoud in ontwerp en productie, zonder tussenkomst van een gespecialiseerd fabrikant.<br />

- De grote verscheidenheid van de op de markt zijnde componenten voor programmeerbare<br />

<strong>logica</strong> inzake werkingssnelheid en verbruik van energie laat de gebruiker toe een gepaste<br />

keuze te maken in functie van de te realiseren toepassing(en).<br />

1


- Eenvoudige gedrukte schakeling. De PCB is sterk vereenvoudigd omdat het aantal<br />

bouwstenen vermindert. Bovendien bieden PLD’s een vrij grote flexibiliteit in het plaatsen<br />

van in- en uit-gangspinnen. Daar de meeste functies van de schakeling intern worden<br />

gerealiseerd, kan men beginnen met het ontwikkelen van de PCB lay-out op het ogenblik dat<br />

de in- en uitgangen gekend zijn. De werkelijke details van het inwendige van een PLD<br />

kunnen dan onafhankelijk van het eind-ontwerp worden uitgewerkt. Noodzakelijke<br />

aanpassingen kunnen uitgevoerd worden binnen de PLD en hebben geen invloed meer op de<br />

PCB lay-out.<br />

- Snelheid is één van de hoofdredenen waarom ontwerpers PLD-bouwstenen gebruiken. De<br />

PLD-elementen kunnen dikwijls betere prestaties leveren dan de snelste discrete <strong>logica</strong>. De<br />

looptijd van de signalen is kort vanwege de zeer korte verbindingen binnen de bouwsteen.<br />

- Daar PLD’s worden gebruikt om meerdere discrete schakelingen te vervangen, zal het<br />

energie-verbruik van een ontwerp zeker lager zijn dan dat van de gecombineerde discrete<br />

componenten samen.<br />

- De betrouwbaarheid is een gebied waar meer en meer zorg aan besteed wordt. De ontwerpen<br />

worden steeds groter en complexer en dit heeft meerdere chips voor gevolg. Meerdere chips<br />

be-tekenen een kleinere betrouwbaarheid van het ontwerp, er zijn "meer dingen die verkeerd<br />

kunnen gaan". Een oplossing om het aantal chips in een systeem te reduceren zal bijdragen<br />

tot een grotere betrouwbaarheid. Een benadering met programmeerbare <strong>logica</strong> kan een<br />

betrouwbaarder oplossing bieden, daar het ontwerp een kleiner aantal elementen vereist.<br />

Door een vermindering van het aantal chips kan men kleinere PCB's gebruiken. Dit<br />

vermindert overspraak en andere potentiële stoorbronnen waardoor het hele ontwerp mooier<br />

en betrouwbaarder wordt.<br />

- Voor ieder praktisch ontwerp moeten de kosten binnen de perken blijven. De kost is bijna<br />

altijd een factor bij het overwegen van een nieuw ontwerp of bij een ontwerpverandering.<br />

Maar, een be-rekening van de totale ontwerpkost kan misleidend zijn als men niet alle<br />

aspecten ervan beschouwt. Veel van de kosten zijn moeilijk in te schatten. Het is<br />

bijvoorbeeld moeilijk het marktverlies van het produkt, te wijten aan een te late introductie,<br />

te beoordelen. De grootste voordelen tegenover een discreet ontwerp bekomt men door het<br />

feit dat een enkele PLD verschillende discrete chips kan vervangen. De ingenomen ruimte<br />

op een gedrukte schakeling wordt gemiddeld met 25% vermin-derd als men met PLD's<br />

werkt.<br />

- De manier van ontwerpen wordt sterk vereenvoudigd door de ontwerpmiddelen die nu op de<br />

markt zijn. Ontwerpsoftware en programmeerbare componenten laten toe ontwerpen te<br />

implementeren met een minimum aan tijdverlies. Simulatie laat ons toe het ontwerp<br />

functioneel te testen vooraleer het element geprogrammeerd wordt.<br />

Om al deze redenen zal de programmeerbare <strong>logica</strong> meer en meer de voorkeur krijgen boven de klassieke<br />

oplossingen met discrete componenten.<br />

Wat de verdere indeling van de programmeerbare logische bouwstenen in PLD’s, FPGA’s (Field Programmable<br />

Gate Arrays) en CPLD’s (Complex Programmable Logic Devic es ) betreft onthouden we<br />

enkel dat dit te maken heeft met de interne structuur, de oplopende inwendige complexiteit en het steeds<br />

groter wordende aantal logische cellen per IC in de vermelde volgorde van PLD, over FPGA tot CPLD.<br />

Deze indeling kan nog meer worden verfijnd en verschilt soms per fabrikant.<br />

1.2 PLD-familie’s<br />

Men kan de programmeerbare logische bouwstenen volgens allerlei criteria indelen. We beperken ons<br />

hier tot een indeling volgens de technologie waarmee de interne logische cellen met elkaar worden verbonden<br />

tot een schakeling. Bij PLD's worden de logische functies gerealiseerd door het "op elektrische<br />

wijze" doorverbinden (al dan niet omkeerbaar) van de cellen die in de chip aanwezig zijn. Dit kan echter<br />

2


ook gebeuren door het verbreken van bestaande, niet gewenste verbindingen. Men onderscheidt daarbij<br />

een aantal verschillende verbindingsvormen.<br />

- Bipolaire fuse-based verbindingen<br />

Bij deze techniek worden de functies geprogrammeerd door alle niet gewenste verbindingen op<br />

elektrische wijze "door te smelten" zoals een zekering. De eventueel te verbreken verbindingen<br />

zijn gerealiseerd als weerstandselement of als PN-overgang (diode, transistor). Dit onomkeerbare<br />

principe vindt men onder andere terug bij PROM’s (zie ‘geheugens’) en PAL's (Programmable<br />

Array Logic).<br />

- Floating gate verbindingen<br />

In dit geval gebruikt men erasable (wisbare) cellen (zoals bij bepaalde geheugen-IC’s) om de interne<br />

verbindingen te realiseren. Correctie van fouten of het maken van een nieuwe toepassing met<br />

dezelfde chip is hier eenvoudig. Bij de EPLD’s (Erasable Programmable Logic Device) wordt de<br />

oorspronkelijke toestand hersteld door belichting met UV-licht ( zoals bij EPROM geheugens). Bij<br />

de EEPLD’s ( Electrically Erasable PLD’s) gebeurt dit langs elektrische weg (zoals bij EEPROM<br />

geheugens) en kan het (her)configureren of (her)programmeren eventueel zelfs gebeuren terwijl het<br />

IC in de (niet actieve) schakeling is opgenomen (in-circuit programming).<br />

3


- Static-RAM verbindingen<br />

Bij sommige PLD's worden de verbindingen gerealiseerd door de toestanden (0 of 1) van statische<br />

RAM-geheugencellen. Dit geeft geheel nieuwe mogelijkheden. Door dergelijke PLD's samen met<br />

een microcontroller of microprocessor in een schakeling op te nemen, is het mogelijk deze schakeling<br />

dynamisch aan te passen aan de toepassing. De <strong>logica</strong> kan zeer snel van aard veranderen, zonder<br />

dat er ook maar één enkele wijziging aan de bedrading gebeurt. De <strong>logica</strong>schakeling wordt geladen<br />

vanuit een (eventueel extern) processorgeheugen en zal onmiddellijk de nieuwe functie<br />

realiseren.<br />

A B C<br />

2 EENVOUDIGE PLD-ARCHITECTUREN<br />

2.1 Combinatorisch<br />

4


Oefening<br />

- PAL-architectuur<br />

Bij nadere studie van het grote aanbod PLD's, die vaak slechts op enkele details verschillen, blijkt<br />

dat het in feite gaat om een beperkt aantal concepten en varianten daarvan. De databoeken van<br />

PLD-leveranciers tonen de interne opbouw van de componenten in de vorm van een principeschema.<br />

De kunst bestaat er in om, in deze steeds complexere schema's, een basisconcept en de<br />

daarop aangebrachte extra voorzieningen te herkennen. We beperken ons tot het veel gebruikte<br />

PAL-concept. In bovenstaande figuur lijken de EN-poorten slechts één ingangslijn te hebben.<br />

Deze lijn refereert echter naar de productlijn. De lijnen die loodrecht op de productlijnen van de<br />

EN-poorten staan vormen de mogelijke ingangen. Deze figuur toont een PAL-cel met acht mogelijke<br />

producttermen met elk tweeëndertig mogelijke ingangen, afkomstig van zestien al dan niet geïnverteerde<br />

signalen. Er wordt hier, symbolisch, slechts één ingang van de cel voorgesteld. Een PLD bevat<br />

steeds meerdere van dergelijke cellen, ook wel macrocellen genoemd, met gemeenschappelijke ingangslijnen.<br />

De PAL-architectuur wordt veel toegepast, onder andere in EPLD’s en EEPLD’s. Bij<br />

deze architectuur is de EN -matrix (AND-array) programmeerbaar. Op elke EN-poort worden alle ingangsvariabelen<br />

aangeboden. Met behulp van de te maken of te verbreken verbindingen kan, door<br />

programmering, worden bepaald welke signalen door een EN-poort gebruikt worden. De uitgang van<br />

elke EN-poort komt op een OF-poort terecht (som van producttermen = sum of products = SOP). De<br />

producttermen zijn dus gegroepeerd als vaste ingangen van een OF-poort. Het aantal ingangen van de<br />

OF-poort beperkt het maximaal aantal te sommeren producttermen. In een PLD met PAL-architectuur<br />

worden dus door de programmering de gewenste producttermen vastgelegd. Alle producttermen die<br />

dan aanwezig zijn worden naar buiten gevoerd.<br />

Een grondstofsilo wordt gevoed via drie transportbanden. Een van deze transportbanden levert twee<br />

kubieke meter per minuut, de andere twee leveren slechts één kubieke meter per minuut. Wanneer de silo<br />

gevoed wordt met meer dan twee kubieke meter grondstof per minuut, moet een digitale schakeling een<br />

alarmsignaal geven. Op elke transportband staat een sensor die een actief hoog signaal afgeeft wanneer<br />

de betreffende band in werking is. Om het alarm te activeren is eveneens een actief hoog signaal noodzakelijk.<br />

Duidt op de bovenstaande PAL-configuratie (met slechts één cel) de vereiste in- en uitgangen<br />

aan en de verbindingen die moeten geprogrammeerd worden om met dit IC het gestelde probleem op te<br />

lossen (teken nog de nodige ingangen extra).<br />

Ingang I 0 : signaal van de sensor van transportband 1 (twee kubieke meter per minuut)<br />

Ingang I 1 : signaal van de sensor van transportband 2 (één kubieke meter per minuut)<br />

Ingang I 2 : signaal van de sensor van transportband 3 (één kubieke meter per minuut)<br />

Uitgang O : alarmsignaal<br />

INGANGEN UITGANG<br />

I 0 I 1 I 2 O<br />

0 0 0 0<br />

0 0 1 0<br />

0 1 0 0<br />

0 1 1 0<br />

1 0 0 0<br />

1 0 1 1<br />

1 1 0 1<br />

1 1 1 1<br />

5


SOP : O = (I 0 EN I 1 ) OF (I 0 EN I 2 ) OF (I 0 EN I 1 EN I 2)<br />

- Enkele voorbeelden van extra voorzieningen<br />

In deze macrocel kan een productterm onmiddellijk de uitgang controleren. De productterm wordt<br />

gebruikt om een 3-state buffer te sturen, die op zijn beurt de sommatieterm doorschakelt naar de<br />

betreffende uitgangspin. De uitgang is eveneens teruggekoppeld naar de EN-matrix. De I/O pin<br />

wordt dus gestuurd wanneer de 3-state poort geselecteerd is. De I/O pin is zelf een ingang van de<br />

EN-matrix wanneer de 3-state poort in de hoog-impedantie-toestand verkeert. Deze eigenschap kan<br />

gebruikt worden om I/O functies op beschikbare I/O-pinnen te zetten of om bidirectionele uitgangspinnen<br />

te realiseren. Dit noemt men een cel met programmeerbare I/O.<br />

In bovenstaande figuur vormen de uitgangen van de OF-poorten van het IC, de ingangen van NORpoorten,<br />

die als tweede ingang een programeerbare logische 0 of logische 1 hebben. Op deze<br />

manier kan men de polariteit van de uitgangen controleren.<br />

6


2.2 Sequentieel<br />

Wanneer aan de uitgang van elke PLD-cel met PAL-architectuur een intern geheugenelement (flipflop<br />

of register met klok-ingang) is verbonden wordt het mogelijk om tijdgebonden, sequentiële<br />

toepassingen te ontwikkelen. In bovenstaande figuur is – als voorbeeld – de macrocel van een<br />

CPLD-component van het productterm-type voorgesteld. De cel behoort tot een EEPLD uit de<br />

familie ‘MAX 7000S’ van de fabrikant ‘Altera’. Deze CPLD-familie bevat, naargelang het type, 32<br />

tot 256 van dergelijke macrocellen, het equivalent van 600 tot 20000 poorten. Elke macrocel bevat<br />

vijf programmeerbare EN-poorten (producttermen) per OF-poort. De OF-poort heeft een, via de<br />

ingangsarray programmeerbare polariteit (NOR-poort). De combinatorische uitgang wordt gevolgd<br />

door een programmeerbare flip-flop. Deze flip-flop kan echter, door een programmeerbare<br />

‘bypass’ overbrugd worden. De betreffende cel is dan enkel voor combinatorische toepassingen<br />

geschikt. De celuitgang (combinatorisch of sequentieel) is via een ‘I/O-control block’ met programmeerbare<br />

TRI-state buffer teruggekoppeld naar de ingangsarray, zoals in het voorbeeld van<br />

pagina 6 (programmeerbare I/O).<br />

Elke macrocel kan een aantal extra producttermen (indien vijf niet volstaan) ‘lenen’ van andere<br />

macrocellen in de chip:<br />

- via ‘parallel logic expanders’ van cellen uit hetzelfde LAB (‘Logic Array Block’);<br />

- via ‘shared logic expanders’ van cellen uit andere LAB’s, langs de PIA (‘Programmable<br />

Interconnect Array’).<br />

Voorbeeld<br />

De flip-flop bevat clock-, enable-, preset- en clear-functies en kan geprogrammeerd worden als<br />

D-flip-flop, T-flip-flop, JK-flip-flop of SR-latch. De clock- en clear-ingangen kunnen zowel synchroon<br />

(Global Clock en Global Clear) als asynchroon, via de producttermen geprogrammeerd<br />

worden.<br />

De macrocellen van deze EPLD’s worden – zoals in onderstaande figuur - gecombineerd in<br />

groepen van zestien, in de reeds vermelde ‘Logic Array Blocks’ of LAB’s. De eveneens reeds<br />

7


vermelde ‘Programmable Inter-connect Array’ of PIA, zorgt voor de interne verdeling van de<br />

signalen tussen de LAB’s en de koppeling met de in- en uitgangspinnen via de ‘I/O control blocks’.<br />

De beschreven architectuur van de programmeerbare logische bouwsteen EPM7128S van Altera is<br />

enkel geldig als voorbeeld. De architecturen van andere PLD-families van verschillende fabrikanten<br />

zijn verschillend maar gelijkend.<br />

Oefening<br />

Ontwerp een quizschakeling voor twee kandidaten.<br />

Ingangen: drukknoppen C1en C2 voor de kandidaten en QM voor ‘reset’ door de quizmaster<br />

(actief hoog)<br />

Uitgangen: lampen L1 voor kandidaat 1 en L2 voor kandidaat 2 (actief hoog)<br />

Wanneer beide kandidaten gelijktijdig drukken mag geen van beide lampen oplichten. Wanneer één<br />

van beide lampen oplicht, mag geen enkele drukknop van een kandidaat nog effect hebben, tenzij<br />

de quizmaster een ‘reset’ heeft gegeven. Bij dergelijke ‘reset’ doven beide lampen. Gebruik het<br />

8


schema van twee PLD-macrocellen van het beschreven PAL-type met D-flip-flop’s en duidt de door<br />

programmatie van het IC te maken verbindingen daarop aan.<br />

3 ONTWERPMETHODES<br />

3.1 Conventioneel<br />

VEREENVOUDIGEN<br />

MINIMALISEREN<br />

N<br />

N<br />

N<br />

BEGIN<br />

FUNCTIEBESCHRIJVING<br />

WAARHEIDSTABEL<br />

LOGISCHE VERGELIJKINGEN<br />

EENVOUDIGSTE<br />

OPLOSSING :<br />

SOP<br />

SCHEMA MET<br />

DISCRETE LOGICA<br />

KLEINSTE<br />

AANTAL<br />

COMPONENTEN<br />

SIMULATIE / PROTOTYPE<br />

J<br />

J<br />

CORRECTE<br />

WERKING<br />

EINDE<br />

9


J<br />

In bovenstaande ‘flowchart’ is de conventionele werkgang weergegeven voor het ontwikkelen van digitale<br />

logische schakelingen. De beschreven werkwijze beperkt zich tot het ontwerpen van niet tijdgebonden,<br />

combinatorische schakelingen. Dit volstaat om de vergelijking met de vernieuwde aanpak bij het ontwerpen<br />

met programmeerbare logische bouwstenen (zie 3.2) te begrijpen.Indien combinatorische schakelingen<br />

worden uitgebreid met geheugenelementen en andere bouwstenen waarvan de toestand, synchroon of<br />

asynchroon, verandert onder besturing van een kloksignaal spreekt men van sequentiële schakelingen of<br />

toestandsmachines.<br />

Deze methode maakt deel uit van de leerstof van de tweede graad (vak ‘Elektronica en lab’, module<br />

digitale technieken) en van de derde graad (vak ‘Digitale technieken en lab’).Daarom is er geen uitgewerkt<br />

voorbeeld opgenomen in deze tekst.<br />

De gewenste functie wordt beschreven en in een waarheidstabel samengevat. Uit de tabel worden<br />

logische vergelijkingen afgeleid. Er wordt getracht deze vergelijkingen te vereenvoudigen. Dit kan<br />

gebeuren :<br />

- door middel van de wetten van de schakelalgebra van Boole: basiswetten, commutatieve-,<br />

associatieve-, distributieve wetten, wetten van De Morgan ;<br />

- door middel van een grafische methode: Karnaugh-kaarten.<br />

De eenvoudigste oplossing – bijvoorbeeld een som van producttermen (SOP) - wordt nu getekend met<br />

standaardcomponenten (discrete <strong>logica</strong>) en moet het eenvoudigste schema opleveren. In dit schema tracht<br />

men te minimaliseren en dus zo weinig mogelijk componenten te gebruiken. Meestal werkend van uitgang<br />

naar ingang kan men oplossingen zoeken met uitsluitend fundamentele poorten (EN, OF, NIET,<br />

EXOF), uitsluitend NOF-poorten of uitsluitend NEN-poorten. Nadien wordt de schakeling – indien mogelijk<br />

– gesimuleerd en /of wordt er een prototype gebouwd en getest. Wanneer de werking niet correct<br />

wordt bevonden dient men de werkgang geheel of gedeeltelijk opnieuw te doorlopen tot het gewenste resultaat<br />

is bereikt.<br />

3.2 Automatische synthese van programmeerbare <strong>logica</strong><br />

Het beschrijven van de functionaliteit van een schakeling en de wijze van ontwerpen wijkt bij programmeerbare<br />

<strong>logica</strong> af van het conventioneel (‘traditioneel’) ontwerpen. Een grondige basiskennis van de<br />

‘klassieke’ digitale technieken blijft voor PLD-ontwerp echter noodzakelijk. <strong>Programmeerbare</strong> <strong>logica</strong><br />

vraagt het veranderen van een ‘ontwerpcultuur’en dat is niet altijd eenvoudig. De PC-ontwikkelingssoftware<br />

voor PLD’s blijft het werken met elektronische schema's, waarheidstabellen en logische vergelijkingen<br />

ondersteunen. Het beschrijven van de functies van een schakeling kan echter ook veel compacter,<br />

leesbaarder en documenteerbaarder met taalconstructies zoals men die ook vindt in hogere programmeertalen<br />

zoals Pascal en C. Bedenk echter dat een dergelijke taal in dit geval niet dient om softwarematig<br />

een schakel- of stuurprobleem op te lossen: dat doen de programma’s voor microcontrollers,<br />

microprocessoren en PLC’s . Om de schakeling zelf te laten werken is het betreffende programma niet<br />

meer nodig. Een programma om een PLD te configureren beschrijft via taalelementen hoe een hardwareschakeling<br />

in een chip moet werken. Daarom noemt men een dergelijke taal een ‘Hardware Description<br />

Language’ of HDL. Ook al hebben we een beschrijving via schema of taal, uiteindelijk moeten we toch<br />

logische vergelijkingen hebben (SOP) om die te implementeren in een PLD-architectuur zoals die reeds<br />

eerder werd beschreven. De speciaal hiervoor ontwikkelde EDA-software (CAD) is in staat de vertaling<br />

van de beschrijving naar vergelijkingen uit te voeren, waarbij bovendien <strong>logica</strong>-optimalisering zal<br />

plaatsvinden: minimaliseren van het aantal vergelijkingen en het aantal poorten, wat leidt tot een ‘zuinig’<br />

gebruik van de cellen van een PLD. Men noemt dit automatisch genereren van een schakeling vanuit de<br />

beschrijving: automatische <strong>logica</strong>synthese. Automatische <strong>logica</strong>synthese raakt een aantal aspecten van het<br />

ontwerpen. Het is niet een simpele ‘druk op de knop’ die het ontwerp oplevert. Gebruik maken van deze<br />

moderne programmatuur vraagt daarentegen wel enig inzicht in de toegepaste principes.<br />

Het ontwerpen van PLD's via automatische <strong>logica</strong>synthese, verloopt via de werkgang uit de volgende<br />

‘flowchart’:<br />

10


- Invoer van de ontwerpbeschrijving<br />

N<br />

BEGIN<br />

INVOER ONTWERP<br />

AUTOMATISCHE<br />

LOGICASYNTHESE<br />

SIMULATIE<br />

CORRECTE<br />

WERKING<br />

PLD PROGRAMMEREN<br />

Hoe ‘intelligenter’ de gebruikte software is, hoe meer vrijheid men heeft bij de invoer van het ontwerp.<br />

De meeste softwarepakketten voor programmeerbare <strong>logica</strong> laten toe ontwerpbeschrijvingen<br />

in te voeren:<br />

- Via een schema (Schematic Capture): een softwarepakket voor PLD’s heeft daarvoor een<br />

grafische editor ingebouwd of kan schema’s van sommige ‘gewone’ EDA-pakketten inlezen;<br />

- Via een tekstuele beschrijving met behulp van één of meer HDL-talen (Hardware Description<br />

Language);<br />

Enkele geavanceerde programma’s laten invoer via golfvormen (Waveform Input) en zelfs gemengde<br />

invoer toe.<br />

De invoer via een schema is eerder ‘klassiek’ te noemen en is slechts geschikt voor kleinere ontwerpen<br />

of delen van een groter ontwerp. Het leren werken met de tekenmodule van een PLDpakket<br />

neemt nogal wat tijd in beslag.<br />

De ontwerper gebruikt in dit geval de componentenbibliotheken van de software om het schema te<br />

tekenen. In feite is deze benadering dezelfde als deze van de reeds vermelde conventionele ont-<br />

J<br />

EINDE<br />

11


.<br />

werpmethode. HDL-invoer laat de ontwerper toe de probleemoplossing volledig tekstueel te beschrijven.<br />

Voor de eigenlijke invoer volstaat een elementair tekstverwerkingsprogramma (editor), dat een<br />

ASCII-bestand kan afleveren. Hedendaagse softwarepakketten voor PLD-ontwerp hebben een<br />

specifieke tekstverwerker voor HDL ingebouwd.<br />

- Automatische <strong>logica</strong>synthese<br />

Deze fase verloopt volledig onder controle van de gespecialiseerde software en omvat een aantal<br />

opeenvolgende bewerkingen op het invoerbestand. Deze bewerkingen zijn nagenoeg voor alle<br />

softwarepakketten voor PLD-ontwerp dezelfde. De bedoeling ervan is een bestand te bekomen dat<br />

kan dienst doen om de chip uiteindelijk te programmeren. De software voert de volgende taken uit:<br />

- vertalen van het invoerbestand naar logische vergelijkingen;<br />

- vereenvoudigen van deze vergelijkingen tot een aantal SOP-termen;<br />

- een ‘netlist’ genereren (dit is een tekstuele weergave van de <strong>logica</strong>);<br />

- inpassen, volgens de netlist, van het ontwerp in de geselecteerde PLD-bouwsteen;<br />

- genereren van een uitvoerbestand om de PLD te programmeren.<br />

- Simuleren van het ontwerp<br />

Men kan de schakeling functioneel nakijken met behulp van de simulatiemodule van de PLD-software,<br />

vooraleer de chip geprogrammeerd wordt. Vooraf dienen er ‘stimuli’ (testsignalen) te worden<br />

gedefinieerd. Indien er tijdens die simulatie fouten ontdekt worden, dient men het ontwerp te<br />

wijzigen en de voorafgaande fasen van de werkgang opnieuw te doorlopen.<br />

- Programmeren van de PLD<br />

De wijze van programmeren hangt af van wat er op de markt aan mogelijkheden beschikbaar is.<br />

Het uitvoerbestand kan bijvoorbeeld in een PLD-programmeerapparaat geladen worden, dat in<br />

staat is de gewenste schakeling in de PLD te configureren (PLD, EPLD, EEPLD …) Deze apparatuur<br />

bestaat meestal uit een kaart, die in een vrij ‘slot’ van een PC moet geplaatst worden en<br />

een console verbonden met deze kaart, uitgerust met de juiste voet voor het betreffende IC. Een<br />

PLD heeft steeds een aantal programmeerpinnen langs waar het configureren kan plaats vinden. Er<br />

is uiteraard ook programmeersoftware nodig om het configuratieproces te besturen (dit kan een<br />

module van de ontwerpsoftware zijn of een afzonderlijk programma, geleverd bij het programmeertoestel).<br />

Bij een aantal PLD-types is het zelfs mogelijk het IC te (her)programmeren terwijl dit<br />

zich in de toepassing op de PCB bevindt (meestal EEPLD’s).<br />

Een geprogrammeerde PLD dient uiteraard te functioneren in het geheel van de schakeling waarvan de<br />

betreffende component deel uitmaakt, wat eveneens – eventueel via een prototype – wordt getest. Deze<br />

laatste fase werd niet in de bovenstaande werkgang opgenomen, omdat ze niet essentieel is voor het<br />

produceren van de PLD-bouwsteen.<br />

12

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!