İçeriğe atla

Espresso sezgisel mantık sadeleştiricisi

Espresso mantık sadeleştiricisi, dijital mantık kapısı devrelerinin karmaşıklığını etkili bir şekilde azaltmak için sezgisel ve özel algoritmalar kullanan bir bilgisayar programıdır. Espresso, IBM'den Robert K. Brayton tarafından geliştirilmiştir. Richard L. Rudell daha sonra 1986'da "PLA Sentezi için Çok Değerlikli Mantık Minimizasyonu" başlığı altında Espresso-MV varyantını yayınladı. Espresso birçok türevine ilham vermiştir.

Giriş

Elektronik cihazlar, birleşimleri gerekli görevleri yerine getiren çok sayıda dijital devre bloğundan oluşur. Üretim maliyetlerini en aza indirmek veya bir cihazın performansını en üst düzeye çıkarmak için mantık fonksiyonlarının mantık kapısı devreleri biçiminde, gerekenden daha çok mantık kapısı kullanılmadan verimli bir şekilde gerçeklenmesi gerekir.

Dijital mantık devreleri tasarlama

Tüm dijital sistemler iki temel fonksiyondan oluşur: bilgi depolayan bellek elemanları ve bu bilgiyi dönüştüren kombinasyonel devreler. Sayıcılar gibi durum makineleri, bellek elemanlarının ve kombinasyonel mantık devrelerinin bir kombinasyonudur. Bellek elemanları standart mantık devreleri olduğundan sınırlı sayıda alternatif devre arasından seçilirler; bu yüzden dijital fonksiyonların tasarımı kombinasyonel kapı devrelerinin tasarlanması ve birbirine bağlanması ile ilgilidir.

Genel olarak, yüksek seviyeli soyutlamadan mantık devrelerinin somutlaştırılması, mantık sentezi olarak adlandırılır ve elle gerçekleştirilebilir ancak genellikle bilgisayar tarafından bazı biçimsel usuller uygulanır. Bu maddede, kombinasyonel mantık devreleri için tasarım yöntemleri kısaca özetlenmiştir.

Bir dijital mantık devresinin tasarımı için başlangıç noktası, sistemin bir bütün olarak analizinden elde edilecek ve mantık devresinin bir parçası olacak istenilen işlevselliktir. Tanım, bazı algoritmik formlarla veya mantık denklemleriyle ifade edilebilir, bunların yanı sıra bir tablo şeklinde de özetlenebilir. Aşağıdaki örnek, ondalık hane değerleri için ikili kodu, ekranın ilgili bölümlerinin yanmasını sağlayan sinyallere dönüştüren 7 segmentli bir ekran sürücüsüne ait böyle bir tablonun bir bölümünü göstermektedir.

  Rakam  Kod        Bölümler
                   A B C D E F G
    0    0000      1 1 1 1 1 1 0          -A-
    1    0001      0 1 1 0 0 0 0         |   |
    2    0010      1 1 0 1 1 0 1         F   B
    3    0011      1 1 1 1 0 0 1         |   |
    4    0100      0 1 1 0 0 1 1          -G-
    5    0101      1 0 1 1 0 1 1         |   |
    6    0110      1 0 1 1 1 1 1         E   C
    7    0111      1 1 1 0 0 0 0         |   |
    8    1000      1 1 1 1 1 1 1          -D-
    9    1001      1 1 1 1 0 1 1

Gerçekleme süreci, ayrı terimleri daha az değişken içeren daha büyük terimlerle birleştirerek fonksiyon tablosunu basitleştirmek için aşağıda tarif edilecek bir mantıksal minimizasyon aşaması ile başlar.

Daha sonra, minimize edilmiş sonuç bir çarpanlara ayırma prosedürü ile daha küçük parçalara bölünebilir ve sonunda hedef teknolojinin mevcut temel mantık hücreleri üzerine eşleştirilir. Bu işleme genel olarak mantıksal optimizasyon denir.

Klasik minimizasyon yöntemleri

Klasik Karnaugh haritalarını kullanarak Boole işlevlerini elle sadeleştirmek zahmetli, sıkıcı ve hataya meyilli bir süreçtir. Altıdan fazla giriş değişkeni için uygun değildir ve yalnızca dört değişkene kadar pratiktir, çoklu çıkış işlevleri için çarpım terimi paylaşımının gerçekleştirilmesi ise daha da zordur. Dahası, bu yöntem bir bilgisayar programı şeklinde otomatikleştirilmeye müsait değildir. Bununla birlikte modern mantık fonksiyonları genellikle bu kadar az sayıda değişkenle sınırlandırılmadığından ve maliyet ile hata yapma riski, mantık fonksiyonlarının elle gerçeklenmesinde engelleyici olduğundan, bilgisayar kullanımı vazgeçilmez hale gelmiştir.

Popüler hale gelen ilk alternatif yöntem, Willard Quine ve Edward McCluskey tarafından geliştirilen tablo metoduydu. Bir dizi mantık fonksiyonu için doğruluk tablosundan başlayarak, fonksiyonların aktif olduğu veya fonksiyon değerinin alakasız olduğu (farketmediği) mintermleri birleştirerek bir dizi asal implikant oluşturulur. Son olarak, çıktı fonksiyonlarının gerçekleştirilebileceği en küçük asal anlam kümesini bulmak için sistematik bir prosedür izlenir.

Bu Quine-McCluskey algoritması bir bilgisayar programında uygulanmaya çok uygun olmasına rağmen, sonuç işleme süresi ve bellek kullanımı açısından hala verimli olmaktan uzaktır. İşleve bir değişken eklemek, hem işlem süresini hem de bellek kullanımını kabaca ikiye katlayacaktır, çünkü doğruluk tablosu uzunluğu değişken sayısıyla katlanarak artar. Bir kombinasyonel fonksiyon bloğunun çıktı fonksiyonlarının sayısı arttırıldığında da benzer bir problem ortaya çıkar. Sonuç olarak Quine – McCluskey yöntemi yalnızca sınırlı sayıda girdi değişkeni ve çıktı işlevi olan işlevler için pratiktir.

Espresso algoritması

Kaliforniya Üniversitesi, Berkeley'de Brayton ve diğerleri tarafından geliştirilen Espresso algoritmasında bu konuya farklı bir yaklaşım izlenmiştir. Bir mantık fonksiyonunu mintermlere genişletmek yerine, program, ürün terimlerini ON-, DC- ve OFF- kapaklarında yinelemeli olarak temsil eden "küpleri" manipüle eder. Minimizasyon sonucunun global minimum olacağı garanti edilmese de, pratikte buna çok yakın bir şekilde yaklaşılırken, çözüm her zaman fazlalık içermez. Diğer yöntemlerle karşılaştırıldığında, bu yöntem esasen daha verimlidir, bellek kullanımını ve hesaplama süresini birkaç büyüklük derecesinde azaltır. Adı, anında bir fincan taze kahve yapma şeklini yansıtır. Bir kombinasyonel fonksiyon bloğunun değişken sayısı, çıktı fonksiyonları ve çarpım terimlerinde neredeyse hiç kısıtlama yoktur. Genel olarak, örneğin, onlarca çıktı fonksiyonuna sahip onlarca değişken kolayca ele alınır.

Espresso için girdi, istenen işlevselliğin bir fonksiyon tablosudur; sonuç ise seçilen seçeneklere bağlı olarak işlevin AÇIK veya KAPALI olduğunu açıklayan simge durumuna küçültülmüş bir tablodur. Öntanımlı olarak, çarpım terimleri birkaç çıkış işlevi tarafından mümkün olduğunca paylaşılacaktır, ancak programdan çıkış işlevlerinin her birini ayrı ayrı ele alması istenebilir. Bu, bir PLA (Programlanabilir Mantık Dizisi) veya bir PAL (Programlanabilir Mantık Dizisi) gibi iki seviyeli mantık dizilerinde verimli uygulamaya olanak tanır.

Espresso algoritması o kadar başarılı olduğunu kanıtladı ki, hemen hemen her türlü çağdaş mantık sentez aracına standart bir mantık işlevi sadeleştirme adımı olarak dahil edildi. Çok seviyeli mantıkta bir fonksiyon gerçeklemek için minimizasyon sonucu çarpanlara ayırma yoluyla optimize edilir ve ister alanda programlanabilir kapı dizisi (FPGA), ister uygulamaya özel entegre devre (ASIC) olsun, hedef teknolojideki mevcut temel mantık hücrelerine eşlenir.

Yazılım

Espresso

Orijinal Espresso programı Kaliforniya Üniversitesi, Berkeley web sitesinde C kaynak kodu olarak mevcuttur. Son sürümü 1988 tarihli 2.3 sürümüdür. Modern POSIX sistemleri için Espresso'nun güncellenmiş bir sürümü olan Espresso-ab ve eqntott (eşitlikten doğruluk tablosuna dönüştürücü) programı, Debian paketi (.deb) biçiminde ve C kaynak kodu olarak mevcuttur. Son sürüm 2008 tarihli 9.0 sürümüdür.

Logic Friday

Logic Friday, Espresso'ya ve Berkeley Octtools paketindeki bir başka modül olan misII'ye grafik arabirim sağlayan ücretsiz bir Windows programıdır. Logic Friday ile kullanıcılar, bir mantık fonksiyonunu doğruluk tablosu, denklem veya kapı diyagramı olarak girebilir, fonksiyonu sadeleştirebilir ve ardından da sonuçları diğer iki gösterimde görüntüleyebilir. Son sürümü 2012 tarihli 1.1.4 sürümüdür.

Minilog

Minilog, Espresso algoritmasından yararlanarak mantık minimizasyonu sağlayan ücretsiz bir Windows programıdır. 40'a kadar giriş ve çıkışa sahip kombinasyonel fonksiyon bloğu veya 256 duruma kadar senkronize durum makinesi için iki seviyeli bir kapı gerçeklemesi üretebilir. Publicad eğitim tasarım paketinin bir parçasıdır.

Kaynakça

Konuyla ilgili yayınlar

  • Logic Synthesis for VLSI Design. Electronics Research Laboratory, College of Engineering, University of California, Berkeley, USA. April 1989.  (Espresso-EXACT)
  • Funktionaler Entwurf digitaler Schaltungen - Methoden und CAD-Techniken [Functional design of digital circuits - Methods and CAD techniques]. Springer-Lehrbuch (Almanca). Springer-Verlag. May 1993. ss. 136-137, 140-141. ISBN 9-783540-56788-2. 3-540-56788-7. 

İlgili Araştırma Makaleleri

<span class="mw-page-title-main">Bilgisayar</span> çok sayıda aritmetiksel veya mantıksal işlemlerden oluşan bir işi, önceden verilmiş bir programa göre yapıp sonuçlandıran elektronik araç

Bilgisayar, aritmetik veya mantıksal işlem dizilerini (berim) otomatik olarak yürütmek üzere programlanabilen dijital bir elektronik makinedir. Çağdaş bilgisayarlar, programlar olarak bilinen genel işlem kümelerini gerçekleştirebilir. Bu programlar, bilgisayarların çeşitli görevleri gerçekleştirmesini sağlar. Ayrıca bir bilgisayar sisteminin tam verimle çalışabilmesi için donanım, işletim sistemi ve çevresel cihazlara sahip olması gerekmektedir. Bu terim aynı zamanda bir bilgisayar ağı veya bilgisayar kümesi gibi birbirine bağlı ve birlikte çalışan bir grup bilgisayar anlamına da gelebilir.

<span class="mw-page-title-main">C (programlama dili)</span> programlama dili

C, yapısal bir programlama dilidir. Bell Laboratuvarları'nda, Ken Thompson ve Dennis Ritchie tarafından UNIX işletim sistemini geliştirebilmek amacıyla B dilinden türetilmiştir. Geliştirilme tarihi 1972 olmasına rağmen yaygınlaşması Brian Kernighan ve Dennis M. Ritchie tarafından yayımlanan "C Programlama Dili" kitabından sonra hızlanmıştır. Günümüzde neredeyse tüm işletim sistemlerinin yapımında %95'lere varan oranda kullanılmış, hâlen daha sistem, sürücü yazılımı, işletim sistemi modülleri ve hız gereken her yerde kullanılan oldukça yaygın ve sınırları belirsiz oldukça keskin bir dildir. Keskinliği, programcıya sonsuz özgürlüğün yanında çok büyük hatalar yapabilme olanağı sağlamasıdır. Programlamanın gelişim süreciyle beraber programlamanın karmaşıklaşması, gereksinimlerin artması ile uygulama programlarında nesne yönelimliliğin ortaya çıkmasından sonra C programcıları büyük ölçüde nesne yönelimliliği destekleyen C++ diline geçmişlerdir.

<span class="mw-page-title-main">Charles Babbage</span> İngiliz matematikçi, filozof ve mucit (1791-1871)

Charles Babbage, İngiliz matematikçi, analitik filozof, makine mühendisi ve programlanabilir bilgisayar fikrini ortaya atan (proto-)bilgisayar bilimcisi mucit.

<span class="mw-page-title-main">İntegral</span> fonksiyon eğrisinin altında kalan alan

İntegral veya tümlev, toplama işleminin sürekli bir aralıkta alınan hâlidir. Türev ile birlikte kalkülüsün temelini oluşturan iki işlemden birisidir. Kalkülüsün temel teoremi sayesinde aynı zamanda türevin ters işlemidir.

<span class="mw-page-title-main">Mikrodenetleyici</span>

Mikrodenetleyici bir VLSI entegre devre çipinde küçük bir bilgisayar'dır. Mikrodenetleyici, bellek ve programlanabilir giriş/çıkış çevre birimleri ile birlikte bir veya daha fazla CPU kapsar.

Boole cebiri değişkenlerin değerinin doğru ve yanlış olabildiği bir cebir altkoludur. Doğru ve yanlış değerleri genelde sırasıyla 1 ve 0 olarak ifade edilir. Değişken değerlerinin sayı, işlemlerin ise toplama ve çarpma olduğu temel cebrin aksine Boole cebrinde ∧ işareti ile ifade edilen "ve", ∨ işareti ile ifade edilen "veya", ¬ ile ifade edilen "değil" işlemleri bulunur.

Mikroprogramlama, kontrol işaretlerini oluşturan ikili sayıların mikrokomutlar yazılarak oluşturulmasıdır. Bu sembolik mikroprogram, ikili kontrol işaretlerine mikroassembler anlamında dönüştürülür. Mikroprogramlama yazılım ile donanım arasındaki özyinelemeyi sağlayan bilgisayarın en gerekli parçasıdır. İşlemcinin denetim birimini tasarlamak için yazmaç aktarımı işlemleri düzeyinde programlama yapılması yöntemidir. Birçok işlemcide mikroprogramlama makine kodu buyruklarını doğrudan donanım üzerinde yürütür. Fakat bazı yeni mimarilerde mikroprogramlama uygulanmaz onun yerine yazılım, dijital mantık düzeyindeki işlemleri doğrudan çalıştırır.

<span class="mw-page-title-main">Merkezî işlem birimi</span> bir bilgisayar programının talimatlarını, talimatlar tarafından belirtilen temel aritmetik, mantıksal, kontrol ve giriş/çıkış (G/Ç) işlemlerini gerçekleştirerek yürüten ve diğer bileşenleri koordine eden bir bilgisayar içindeki elektro

Merkezî işlem birimi, dijital bilgisayarların veri işleyen ve yazılım komutlarını gerçekleştiren bölümüdür. Çalıştırılmakta olan yazılımın içinde bulunan komutları işler. Mikroişlemciler ise tek bir yonga içine yerleştirilmiş bir merkezî işlem birimidir. 1970'lerin ortasından itibaren gelişen mikroişlemciler ve bunların kullanımı, günümüzde MİB teriminin genel olarak mikroişlemciler yerine de kullanılması sonucunu doğurmuştur.

Bellek bilgisayarı oluşturan 3 ana bileşenden biridir.. İşlemcinin çalıştırdığı programı, lar ve programa ait bilgiler bellek üzerinde saklanır. Bellek geçici bir depolama alanıdır. Bellek üzerindeki bilgiler güç kesildiği anda kaybolurlar. Bu nedenle bilgisayarlarda programları daha uzun süreli ve kalıcı olarak saklamak için farklı birimler mevcuttur.

<span class="mw-page-title-main">Kalkülüs</span>

Başlangıçta sonsuz küçük hesap veya "sonsuz küçüklerin hesabı" olarak adlandırılan kalkülüs, geometrinin şekillerle çalışması ve cebirin aritmetik işlemlerin genellemelerinin incelenmesi gibi, kalkülüs sürekli değişimin matematiksel çalışmasıdır.

Sanal bellek, fiziksel belleğin görünürdeki miktarını arttırarak uygulama programına (izlence) fiziksel belleğin boyutundan bağımsız ve sürekli bellek alanı sağlayan bilgisayar tekniğidir. Ana belleğin, diskin (ikincil saklama) önbelleği (cache) gibi davranmasıyla; yani disk yüzeyini belleğin bir uzantısıymış gibi kullanmasıyla gerçekleştirilir. Ancak gerçekte, yalnızca o anda ihtiyaç duyulan veri tekerden ana belleğe aktarılıyor olabilir. Günümüzde genel amaçlı bilgisayarların işletim sistemleri çoklu ortam uygulamaları, kelime işlemcileri, tablolama uygulamaları gibi sıradan uygulamalar için sanal bellek yöntemi kullanılmaktadır.

<span class="mw-page-title-main">Doğrusal olmayan regresyon</span>

Doğrusal olmayan regresyon, istatistik bilimde gözlemi yapılan verilerin bir veya birden fazla bağımsız değişkenin model parametrelerinin doğrusal olmayan bileşiği olan ve bir veya daha çok sayıda bağımsız değişken ihtiva eden bir fonksiyonla modelleştirilmesini içeren bir regresyon (bağlanım) analizi türüdür. Veriler arka-arkaya yapılan yaklaşımlarla kurulan modele uydurularak çözümleme yapılır.

<span class="mw-page-title-main">Karnaugh haritası</span>

Karnaugh haritası (İngilizce) Boolean cebri'ndeki ifadeleri sadeleştirmek için kullanılan bir yöntemdir. Maurice Karnaugh 1953'te Edward Veitch'in 1952'te keşfettiği Veitch tablosunun geliştirilmiş ve elektrik devrelerine odaklanmış versiyonu olarak tanıtıldı. Veitch tablosu ve Karnaugh haritası bu yüzden Marquand-Veitch diyagramı ve Karnaugh Veitch haritası olarak da bilinir.Karnaugh haritası insanların örüntü tanıyabilme kabiliyetini kullanarak karışık hesaplamaları sadeleştirir. Aynı zamanda potansiyel hata durumlarının hızlıca fark edilmesini ve ortadan kaldırılmasını kolaylaştırır.

<span class="mw-page-title-main">Gömülü sistem</span> Belli bir fonksiyonu yapmaya yönelik bilgisayar sistemi

Gömülü sistem, bilgisayarın kendisini kontrol eden cihaz tarafından içerildiği özel amaçlı bir sistemdir. Genel maksatlı, örneğin kişisel bilgisayar gibi bir bilgisayardan farklı olarak, gömülü bir sistem kendisi için önceden özel olarak tanımlanmış görevleri yerine getirir. Sistem belirli bir amaca yönelik olduğu için tasarım mühendisleri ürünün boyutunu ve maliyetini azaltarak sistemi uygunlaştırabilirler. Gömülü sistemler genellikle büyük miktarlarda üretildiği için maliyetin düşürülmesinden elde edilecek kazanç, milyonlarca ürünün katları olarak elde edilebilir.

Matematiksel modellerin çözümünde kullanılır. Model kısıtlarından en az birisinin = veya => olması gerekir. Bu çözüm yönteminin bir türevide iki aşamalı yöntemdir. Büyük M yönteminde amaç satırındaki katsayılar M katsayısını alırlar. M katsayısı model içerisindeki hiçbir katsayının ulaşamayacağı kadar büyük bir sayı kabul edilmektedir.

<span class="mw-page-title-main">Parametre</span> belirli bir sistemi tanımlamak veya sınıflandırmak için yardımcı olabilecek herhangi bir özellik

Parametre belirli bir sistemi tanımlamak veya sınıflandırmak için yardımcı olabilecek herhangi bir özellik. Parametre, sistemi tanımlarken veya performansını, durumunu değerlendirirken yararlı veya kritik olan bir sistem unsurudur.

Bilgi teknolojisi ve bilgisayar biliminde eğer önceki olayları veya kullanıcı etkileşimlerini hatırlamak için tasarlandıysa biliminde bir sistem durumsal olarak ifade edilmiştir, hatırlanan bilgiye ise sistemin durumu denir.

<span class="mw-page-title-main">Matematiksel tablolar</span>

Matematiksel tablolar, çeşitli bağımsız değişkenlerle yapılan bir hesaplamanın sonuçlarını gösteren sayı listeleridir. Trigonometrik fonksiyonların tabloları, antik Yunanistan ve Hindistan'da astronomi ve göksel seyir uygulamaları için kullanıldı. Tablolar, hesaplamaları basitleştiren ve büyük ölçüde hızlandıran elektronik hesap makinelerinin fiyatlarının düşerek kolay erişilir hale gelişlerine dek yaygın olarak kullanıldı. Logaritma tabloları ve trigonometrik fonksiyonlar matematik ve fen ders kitaplarında yaygındı ve çok sayıda uygulama için özel tablolar yayınlandı.

<span class="mw-page-title-main">Quine-McCluskey algoritması</span>

Asal implikants yöntemi olarak da bilinen Quine–McCluskey algoritması (QMA), 1952'de Willard V. Quine tarafından geliştirilen ve 1956'da Edward J. McCluskey tarafından genişletilen Boole işlevlerinin minimizasyonu için kullanılan bir yöntemdir. Genel bir ilke olarak bu yaklaşım, mantıkçı Hugh McColl tarafından 1878'de gösterilmişti. 1937'de Archie Blake tarafından kanıtlandı ve yeniden keşfedildi. 1954'te Edward W. Samson ve Burton E. Mills ve 1955'te Raymond J. Nelson. Yine 1955'te Paul W. Abrahams ve John G. Nordahl ile Albert A. Mullin ve Wayne G. Kellner yöntemin ondalık bir varyantını önerdiler.

Merdiven mantığı, imalat ve proses kontrolde kullanılan röle raflarının tasarımını ve yapımını belgelemek için yazılı bir yöntemdi. Röle rafındaki her cihaz, gösterilen cihazlar arasındaki bağlantılarla birlikte merdiven diyagramında bir sembolle gösterilir. Ayrıca, pompa, ısıtıcı vb röle rafının dışındaki diğer öğeler de merdiven şemasında gösterilir.