Doğruluk Tablolarını Boole İfadelerine Dönüştürme Sayısal devre tasarımında, tasarımcı çoğunlukla devrenin ne olduğunu tanımlayan doğruluk tablosu ile başlar. Tasarım işi, doğruluk tablosunda tanımlanan fonksiyonu hangi devre türünün gerçekleştireceğine büyük ölçüde karar verir. Bazı insanlar doğruluk tablosuna bakmak için ve hemen bu iş için gerekli mantık geçidi yada röle mantık devresini planlamaya doğal yeteneğe sahip görünürken, bizler için mevcut olan prosedürsel teknikler vardır. Burada Boole cebri çok dramatik bir yolla faydasını kanıtlar. Bu prosedürle ilgili metodu örneklemek için, gerçek bir tasarım problemi ile başlamalıyız. Bize zehirli atık yakma fırını için alev algılama devresi tasarımlama görevi verildiğini varsayın. Ateşin güçlü ısısı, yakma fırını içerisinde ortaya çıkan gazın zehirliliğini etkisiz hale getirmek amaçlanmıştır. Böyle tutuşma-tabanlı teknikler, öldürücü virüsler yada bakteri bulaşmış olabilen medikal atığı etkisiz hale getirmede çoğunlukla kullanılır: Sadece ve sadece alev, yakıcı fırın içerisinde korunur, etkisiz hale getirilecek atığı içerisine enjekte etmek güvenlidir. Bununla birlikte eğer alev söndürülürse, yanma odasına gaz enjekte etmeye devam etmek güvensiz olacaktır, etkisiz hale getirilmemiş egzoz çıkacağı ve egzoza yakın herhangi birinde sağlık tehlikesi ortaya çıkartabileceği gibi. Bu sistemde ihtiyacımız olan şey, alevin varlığını algılamanın ve sadece alev algılama sistemi tarafından "ispatlandığında" enjekte edilebilecek atığın izin verilmesinden emin olmaktır. Optiksel (ışığın algılanması), termal (yüksek sıcaklığın algılanması) ve elektriksel iletim (alev yolundaki iyonize parçacıkların algılanması), her biri benzersiz avantaj ve dezavantaj ile birçok farklı alev-algılama teknolojisi vardır. Potansiyel olarak etkisiz hale gelmemiş atığın yakıcı fırının egzozundan çıkması ile kuşatılmış tehlikenin büyüklüğünü düşünelim, tek sensör bozukluğunun toksinlerin emisyonuna egzozdan çıkması için yol göstermesin diye, alev algılama sisteminin gerekenden fazla yapılmış olmasına karar verildi (çoklu sensörler). Her bir sensör, mantık sisteminin girişlerini aktive etmede kullanacağımız normalde-açık kontak (eğer alev yoksa açılır, eğer alev algılanmışsa kapanır) ile birlikte gelir:
Şimdi görevimiz, sadece ve sadece iyi alev sensörler tarafından ispatlandığında atık vanasını açacak mantık sisteminin devresini tasarımlamaktır. İlk önce bu kontrol sisteminin mantıksal davranışının ne olması gerektiğine karar vermeliyiz. Sadece üç sensörden birinin alevi algılamasıyla açılacak bir vana mı istiyoruz? Muhtemelen hayır çünkü bu çoklu sensöre sahip olma amacını bozguna uğratacaktır. Eğer bu sensörlerden herhangi biri alev yokken alevin varlığını hatalı bir şekilde gösterdiği gibi bir şekilde hata verse, "üç sensörden herhangi biri alevi gösteriyor" ilkesine bağlı mantık sistemi tek-sensörlü sistemle aynı hatayı verecektir. Daha iyi bir çözüm, sadece ve sadece tüm üç sensör iyi alev algıladığında vanayı açma emri versin diye sistemi tasarlamak olacaktır. Bu yolla alevi hatalı bir şekilde algılamış herhangi bir tek sensör vanayı açık pozisyonda tutamaz; aksine, tüm üç sensörün aynı tarzda hatalı olmasını gerektirecektir -- fazlaca inanılmaz bir senaryo- - bu meydana gelecek tehlikeli koşul için. Böylece, doğruluk tablomuz şu şekilde görünecektir:
Bu fonksiyonelliğin üç-girişli AND geçidiyle üretilmiş olduğunu fark etmek çok kavrama gerektirmez: devrenin çıkışı, sadece ve sadece giriş A AND(ve) giriş B AND(ve) giriş C nin tümü "yüksek" olduğunda "yüksek" olacaktır:
Eğer röle devresi kullanılıyorsa, öyle ki sadece tüm üç sensörün alevi algılamasıyla atık vanasının açılması için elektriksel güç gönderilmiş olacağı, bu AND fonksiyonunu üç röle kontağını seri yada basitçe üç sensör kontağını seri bağlayarak oluşturabiliriz: Bu tasarım stratejisi güvenliği artırırken, sistemi sensör hatalarına karşı çok duyarlı yapar. Üç sensörden birinin, yakıcı fırının tutuşma odasında gerçekte iyi alev olduğunda alev yok gösterdiği bir şekilde hata verdiğini varsayın. Bu tekil hata, atık vanasını üretim zaman kaybına ve boşa harcanmış yakıta (besleme ateşi atık yakmak için kullanılamadı) neden olarak istenmeyen bir şekilde kapatacaktır. Bu şekilde bir hata ile sistemin gereksiz bir şekilde kapatılmadığı ve hala herhangi bir sensör "yüksek" hatası verdiğinde güvenliği sürdürecek çoklu sensör sağlayan bir mantık sistemine sahip olman iyi olacaktır (algılanacak bir tane olup olmamasına bağlı olmaksızın her zaman alevi gösteren). Her iki ihtiyacı karşılayacak strateji, üç sensörden en az ikisinin iyi alev göstermesiyle açılacak atık vanası şeklinde "üçün ikisi" sensör mantığı olacaktır. Böyle bir sistem için doğruluk tablosu şuna benzer:
Burada ne tür bir mantık devresinin doğruluk tablosunu tamamlayacağının belli olması gerekli değildir. Bununla birlikte böyle bir devreyi tasarımlamak için basit bir metot, Çarpımlar-ın-Toplamı, yada SOP formu olarak adlandırılan Boole ifadesinin standart formunda bulunur. Şüphelenebileceğiniz gibi, Çarpımlar-ın-Toplamı Boole ifadesi tam olarak, her bir terim Boole değişkenlerinin çarpımsal kombinasyonu olan toplanmış Boole terimlerinin bir setidir. SOP ifadesinin bir örneği şunun gibi bir şey olacaktır: ABC + BC + DF, "ABC", "BC" ve "DF" çarpımlarının toplamı. Çarpımlar-ın-Toplamı ifadesinin doğruluk tablosundan üretilmesi kolaydır. Tüm yapmamız gereken, çıkışın "yüksek" (1) olduğu herhangi bir satır için doğruluk tablosunu incelemektir ve verilen bu giriş koşullarının 1 değerine eşit olacağı Boole çarpım terimini yazmaktır. Örneğin, üç-ün-ikisi mantık sistemimiz için doğruluk tablosundaki A=0, B=1 ve C=1 olduğu dördüncü satırda terimin çarpımı A'BC olacaktır, böylece bu terim sadece ve sadece A=0, B=1 ve C=1 ise 1 değerine sahip olacaktır:
Doğruluk tablosunun diğer üç satırı 1 çıkış değerine sahiptir, bu nedenle bu satırlarda onları ifade etmek için Boole çarpım ifadelerine ihtiyaç duyar: Son olarak, bu dört Boole çarpım ifadesini doğruluk tablosunu tanımlayan tek bir Boole ifadesi oluşturmak için toplamayla bir araya getiririz: Şimdi doğruluk tablosunun fonksiyonu için Boole Çarpımları-nın-Toplamı ifadesine sahibiz, bu ifadeye bağlı olarak kolaylıkla bir mantık geçidi yada röle mantık devresi tasarımlayabiliriz:
Ne yazık ki bu devrelerin her ikisi de oldukça komplekstir ve sadeleştirilmesi yararlıdır. Boole cebri tekniklerini kullanarak ifade anlamlı bir şekilde sadeleştirilebilir:
Sadeleştirme sonucunda aynı fonksiyonu gerçekleştiren geçit yada röle formunda daha basit mantık devreleri inşa edebiliriz:
Bu devrelerden biri, üç alev sensöründen ikisinin alev doğrulamasına bağlı olarak yakıcı fırın atık vanasını çalıştırma görevini yeterli derecede gerçekleştirecektir. Minimum seviyede bu ihtiyacımız olan güvenli bir yakıcı fırın sistemidir. Bununla birlikte biz, sensörlerden herhangi birinin diğer iki sensörle anlaşamadığı durumda algılamak için tasarlanmış mantık devresini ona ekleyerek sistemin fonksiyonelliğini artırabiliriz.
Eğer tüm üç sensör uygun bir şekilde çalışıyorsa, alevi eşit doğrulukla algılamalılar. Böylece tüm yazmaçları ya "düşük" (000: alev yok) yada "yüksek" (111: alev iyi) olmalıdır. Herhangi bir başka çıkış kombinasyonu (001, 010, 011, 100, 101 veya 110) sensörler arasında uyumsuzluk oluşturur ve bu yüzden potansiyel bir sensör hatası göstergesine hizmet edebilir. Eğer altı "sensör uyumsuzluk" koşulundan birini devreye eklersek, bu devrenin çıkışını alarmı aktive ettirmek için kullanmalıyız. Yakıcı fırını görüntüleyen kim olursa olsun, muhtemel hatalı sensör ile çalışmaya devam edeceğine (girişler: 011, 101 veya 110) yada tamamen güvenli olması için yakıcı fırını kapatacağına karar verecektir. Aynı zamanda, yakıcı fırın kapatıldığında (alev yok), diğeri(leri) alev yok gösteriyor(lar)ken hala sensörlerden biri veya bir kaçı alev gösteriyorsa (001, 010, 011, 100, 101 veya 110), kesin sensör problemi olduğu bilinebilecektir. Bu "sensör uyuşmazlık" algılama devresi tasarımındaki ilk adım, onun davranışını tanımlayan doğruluk tablosunu yazmaktır. "İyi alev" mantık devresinin çıkışını tanımlayan doğruluk tablosuna sahip olduğumuzdan, tabloya ikinci devreyi ifade etmek için kolaylıklar başka bir çıkış sütunu ekleyebiliriz ve mevcut mantık sistemini gösteren bir tablo yapabiliriz: Bu yeni doğruluk tablosu sütunu için Çarpımlar-ın-Toplamı ifadesini üretmek mümkün iken, üç değişkenin her biri için altı terim gerekecektir! Böyle bir Boole ifadesi, birçok hata yapmaya müsait çok sayıda sadeleştirme adımı gerektirecektir:
Doğruluk tablosundaki tüm "yüksek" (1) çıkış koşullarını hesaplamak için Çarpımlar-ın-Toplamı ifadesini üretmeye bir alternatif, tüm "düşük" (0) çıkış koşullarını hesaplamak için Toplamlar-ın- Çarpımı, yada POS ifadesini üretmektir. Son doğruluk tablosu sütununda daha az sayıda "düşük" çıkış durumu olduğundan, elde edilen Toplamlar-ın-Çarpımı ifadesi daha az terim içerebilir. İsminde olduğu gibi Toplamlar-ın-Çarpımı ifadesi çarpılanların toplandığı bir settir. POS ifadesine bir örnek, "A + B" ile "C +D" nin toplamının çarpımı (A + B)(C + D) olacaktır. Başlamak için, son doğruluk tablosu sütunundaki hangi satırların "düşük" (0) çıkışa sahip olduğunu ve girişlerin koşulları için 0 a eşit olacak Boole toplam terimini saptarız. Örneğin, A=0, B=0 ve C=0 olan doğruluk tablosunun ilk satırında toplam terimi (A + B + C) olacaktır, böylece bu terim sadece ve sadece A=0, B=0 ve C=0 olduğunda 0 değerine sahip olacaktır:
Son doğruluk tablosunda sadece başka bir adet satır "düşük" (0) çıkışına sahiptir, böylece Toplamlar-ın-Çarpımı ifademizi tamamlamak için tek ihtiyacımız olan şey bir tane daha toplam terimidir. Bu son toplam terimi, A=1, B=1 ve C=1 giriş koşulu için 0 çıkış gösterir. Bu yüzden terim (A' + B'+ C') olarak yazılmalıdır çünkü sadece tümlenmiş giriş değişkenlerinin toplamı sadece bu koşul için 0 a eşit olacaktır:
Elbette tamamlanmış Toplamlar-ın-Çarpımı ifadesi bu iki toplam teriminin çarpımsal kombinasyonudur:
Çarpımlar-ın-Toplamı ifadesi, çıkışlarının tek bir OR geçidine bağlanmasıyla AND geçidinin bir seti biçiminde yürütülebilirken, Toplamlar-ın-Çarpımı ifadesi tek bir AND geçidini besleyen OR geçidinin bir seti gibi yürütülebilir: Buna karşılık, çarpımlar-ın-toplamı ifadesi seri-bağlı röle kontaklarının paralel bir koleksiyonu gibi yürütülebilirken, Toplamlar-ın-Çarpımı ifadesi paralel-bağlı röle kontaklarının seri bir koleksiyonu olarak yürütülebilir:
Önceki iki devre, "iyi alev" altılama devresi(leri) değil sadece "sensör uyuşmazlık" mantık devresinin farklı bir versiyonlarını gösterir. Mevcut mantık sistemi, aynı diyagram üzerinde gösterilen "iyi alev" ve "sensör uyuşmazlık" devrelerinin bir kombinasyonu olacaktır. Programlanabilir Mantık Kontrolcüsünde (PLC) yürütülen mevcut mantık sistemi şunun gibi bir şeye benzeyebilir:
Gördüğünüz gibi, her iki Çarpımlar-ın-Toplamı ve Toplamlar-ın-Çarpımı standart Boole formu, doğruluk tablosuna uygulandığında etkilidir. Onlar Boole ifadesini türetmemize izin verir -- ve sonuçta, gerçek bir mantık devresi -- bir mantık devresinin yapmasını istediğimiz şey için yazılmış tanımlama olan doğruluk tablosunda başka bir şey değildir. Basit, belirleyici prosedürleri kullanarak mevcut devreye yazılmış tanımlamadan ilerleyerek gitmenin anlamı şudur; bir sayısal devre için tasarım işlemi otomasyonu uygulamak mümkündür. Başka bir ifadeyle, bir bilgisayar doğruluk tablosu tanımlamasından özel bir mantık devresi tasarımlamak için programlanabilir olmalıdır! Doğruluk tablosundan son devreye kadar izlenecek adımlar, onları idame ettirmek için eğer varsa yaratıcılık yada diğer orijinal düşüncelerden bir miktar gerektiren çok belirsiz olmayan ve direkt olanlardır.
ÖZET: Çarpımlar-ın-Toplamı, yada SOP Boole ifadeleri, tablonun hangi satırlarının 1 çıkışına sahip olduğunu belirleyip, her bir satır için bir çarpım terimi yazarak ve sonunda bu çarpım terimlerinin hepsini toplayarak doğruluk tablolarından oldukça kolay bir şekilde üretilebilir. Bu doğruluk tablosunu gösteren bir Boole ifadesi oluşturur. Çarpımlar-ın-Toplamı ifadeleri kendilerini, tek bir OR geçidini (toplam) besleyen bir AND geçidi (çarpımlar) seti gibi yürütülmek için iyi bir şekilde verir. Toplamlar-ın-Çarpımı, yada POS Boole ifadeleri de, tablonun hangi satırının 0 çıkışına sahip olduğu belirlenip, her bir satır için bir toplam terimi yazılarak ve sonunda tüm toplam terimleri çarpılarak doğruluk tablosundan oldukça kolay bir şekilde üretilebilirler. Bu doğruluk tablosunu gösteren bir Boole ifadesi oluşturur. Toplamlar-ın-Çarpımı ifadeleri kendilerini, tek bir AND geçidini (çarpım) besleyen bir OR geçidi (toplamlar) seti gibi yürütülmek için iyi bir şekilde verir.