Espresso heuristische logische minimalisator: verschil tussen versies

Verwijderde inhoud Toegevoegde inhoud
GrouchoBot (overleg | bijdragen)
k Bot: automatisch tekst vervangen (- kostenloos + kosteloos )
WimdeValk (overleg | bijdragen)
Regel 38:
Een radicaal verschillende aanpak voor dit probleem wordt gevolgd bij het ESPRESSO-algoritme, ontwikkeld aan de University of California, Berkeley. In plaats van een functie te expanderen in mintermen, worden door het programma iteratief z.g. "cubes" gemanipuleerd, waarmee de producttermen van de functie in het ON-, het OFF-, respectievelijk het DC-cover worden gerepresenteerd. Hoewel niet kan worden gegarandeerd dat het minimalisatieresultaat wordt gevormd door het globale minimum, wordt dit in de praktijk toch dicht benaderd en is de oplossing met zekerheid vrij van [[redundantie]]. Vergeleken met andere methoden is dit algoritme in essentiële mate efficiënter, waarbij het geheugengebruik en de rekentijd met orden van grootte zijn gereduceerd. Deze eigenschap wordt met de naam van het algoritme benadrukt door de vergelijking met het in een oogwenk zetten van een kopje verse koffie. In het algemeen vormen meerdere tientallen ingangsvariabelen in combinatie met tientallen uitgangsfuncties geen enkel probleem.
 
De invoer voor ESPRESSO bestaat uit een functietabel van de bedoelde functionaliteit; het resultaat is een geminimaliseerde tabel die ofwel het ON-cover ofwel het OFF-cover bevat, afhankelijk van de ingestelde opties. Standaard worden de producttermen zoveel mogelijk gedeeld bij de verschillende uitgangsfucties, maar het programma kan worden geïnstrueerd om alkelk der uitgangsfuncties afzonderlijk af te handelen. Dit staat een efficiënte implementatie toe in tweelaags logische array’s zoals een PLA (Programmable Locic Array) of een PAL (Programmable Array Logic), waarvan bij de eerste het gebruik van gecombineerde producttermen mogelijk is, in tegenstelling tot bij de laatste.
 
Het ESPRESSO-algoritme is zo succesvol gebleken dat het ingebouwd is als een standaard logische minimalisatiestap in zowat elke hedendaagse synthesesoftware. Bij de implementatie van een functie in meerlaags logica wordt het minimalisatieresultaat geoptimaliseerd met een factorisatieprocedure alvorens deze op te bouwen uit de beschikbare logische basiscellen die in de toe te passen technologie beschikbaar zijn, onafhankelijk van of dit een FPGA (Field Programmable Gate Array) or an ASIC (Application Specific Integrated Circuit) betreft.