HARDWARE DERSANESİ
Retro bilgisayar
Merhaba sevgili Amiga'cılar... Bir ay daha geçti ve yine birlikte dershanemizdeyiz. Önce genel olarak geçen sayıya bir göz atalım. Geçen sayımızda Digital lojik devrelere genel bir bakıştan sonra kapılara geçtik. Burada inverter, and, or, nor ve nand kapılarını örneklerle işledik.
Hatırlarsanız "Boole Cebri" diye bir matematik olayından söz ettik. Bu sayıda size Boole Cebri'nden ve Flip flop devrelerden söz etmek istiyorum.
LOJİK DEVRELER VE BOOLE
EŞİTLİKLERİ ARASINDAKİ
İLİŞKİLER
Boole Cebri, iki değerli fonksiyonlar için kullanılmak üzere geliştirilmiş bir matematik sistemidir. Boole Cebri sayesinde basit ya da karmaşık çeşitli lojik fonksiyonlar alışılagelmiş matematiksel biçimde ifade edilebilir. Bu matematik sistem, dijital devrelerin anlaşılmasında ve tasarlanmasında kullanılır.
Bu sayede dijital devrelerin analiz edilmeleri ve nasıl çalıştıklarının anlaşılması kolayca sağlanır. Boole Cebri'nin diğer bir amacı da en basit, en ucuz ve en verimli lojik devre tasarımında kullanılmasıdır.
Gerçekte Boole Cebri'nin normal matematikte kullandığımız işlemlerden fazla farkı yoktur. Çarpma, bölme, toplama ve çıkarma işlemleri vardır. Ancak kullanılan değerler ya "0" ya da "1" olabilir. Boole Cebri'nin temel mantığını kavradıktan sonra bu matematiksel işlemleri yapmak oldukça kolaydı. Ancak tam kavrayabilmek için ilkokulda dört işlem yapmayı öğrendiğimiz günlere dönmemiz gerekir. Fakat bu kez sayılar 0'dan 10'a kadar değildir. Aslında 10'lu matematikten çok daha kolaydır. Sözgelimi bizim bildiğimiz matematikte 1 + 1 = 2'dir. Ancak Boole Cebri'ne göre aynı işlemin sonucu 1 + 1 = 10 (Bir- Sıfır)'dır. Bu kesinlikle on değildir. Bir sıfırın anlamı yine bizim bildiğimiz iki'dir. Ancak lojikte böyle bir tanım yoktur. Bunu daha iyi kavrayabilmek için normal matematikte 9'dan sonra gelecek yine tek hanelik herhangi bir şekil düşünün. Bunu bildiğimiz matematik kalıbına oturtamazsınız. Aynı şekilde bizim kullandığımız iki, Boole Cebri'nde anlamsızdır.

Lojik devrelerde Boole Cebri en çok tasarımcıların işine yarar. Karmaşık bir lojik devrede pek çok giriş olabilir. İşte bu girişlerin hesaplanması ve çıkışın ayarlanması gerekmektedir. Burada tüm ayarlamalar Boole Cebri'nin yardımı ile olur.
Buna bir örnek verelim: Sözgelimi altı kişilik bir öğrenci grubu okulun son günlerinde sinemaya gitmek isterler. Fakat gidilecek filme karar verebilmeleri için 3 erkek öğrencinin hemfikir olması ve kalan 3 kız öğrenciden en az birinin onlarla aynı fikirde olması gerekmektedir. Bu konuda aralarında anlaştıktan sonra önce öğretmenlerinden daha sonra da okul müdüründen olumlu cevap almaları gerekmektedir. Şimdi örneğimizi biraz açalım.
Soru: Sinemaya gidilecek mi, gidilmeyecek mi?
Şartlar: 1- Ali, Cem ve Osman gitmeye karar vermeli.
2- Nilgün, İrem veya Rezzan arasından en az biri de gitmek istemeli.
3- Öğretmen izin vermeli. 4- Müdür izin vermeli. Şimdi bu olayı matematiksel olarak formüle dökelim. Bütün şahısları baş harfleri ile tanımlayacağız:
Sinema = [((A.C.O). (N + İ + R) . Ö).M]
Bu formülü incelersek sonuçta yukarıda belirttiğimiz şartlara göre tüm olasılıklar sırasıyla sağlanmıştır. Formülde harflerin yerine olumlu görüş var ise değer 1, olumsuz görüş var ise değer 0 olacaktır. Şimdi formül üzerindeki verilerden faydalanarak bu olayı bir lojik devre olarak çizelim.

Bu örnekte düşünce, formüle etme ve uygulama aşamalarında Boole Cebri'ni inceledik. Sizin de fark edeceğiniz gibi formül aşaması olmadan düşünceden direkt uygulamaya geçmek oldukça zor ve karmaşık olurdu, işte Boole Cebri'nin kolaylığını ve sağladığı avantajları yaşadık. Herhangi bir özel kabiliyet kullanmadan sadece sırayı takip ederek sonuca ulaştık. Şimdi pek çoğunuz böyle bir örneğin gerçek hayatta kullanılamayacağını düşünebilirsiniz. Ancak gerek basit lojik devrelerde, gerekse bilgisayar tasarımında bu tür hatta bundan çok daha karmaşık devrelerde Boole Cebri halen kullanılıyor. Aklımıza takılan bir ikinci soru da uygulamada bunun nasıl gerçekleştiği olabilir. Daha önceki yazılarımızda değişik kapıları içeren yüzlerce entegre devre elemanlarının kullanıldığını söylemiştik. İşte son lojik şemamızı da çıkardıktan sonra gereken şey entegre kataloğundan bu işlemleri (üç girişli AND veya iki girişli OR kapısı gibi) yapabilen entegreleri seçmek ve birbirine şemaya uygun şekilde montelemektir.
FLİP-FLOP'LAR Flip-flop devreleri, ikili bilgiler içindeki tek bir bit'in saklanabilmesi için kullanılan lojik elemanlar olup lojik 1 ve lojik 0 olarak kararlı iki durumları vardır.
Flip-flop'ların temel fonksiyonu bilgi depolama, saklama olan dijital lojik devrelerdir. Lojik 0 ve lojik 1'e karşı düşürülebilen kararlı iki durumları vardır. Değiştirilene kadar ve besleme gerilimi uygulandığı sürece bulundukları durumu korurlar.
Lojik bilgileri saklamak için bellek olarak kullanılırlar. En son duruma ayarlandıklarını hatırlar ve verilen bilgiyi saklarlar. Bu bilgi uygun lojik girişlere uygulanır. Flip-flop'ta saklanan bilginin değerini anlamak için devre çıkışlarına bakılır. Bir tek flip-flop sadece bir tek lojik bilgiyi saklar, lojik 0 ve 1'e karşı düşen kararlı iki durumları vardır.
Temel olarak üç tip flip-flop vardır: S-R tipi (Latch), D tipi ve JK tipi. SR tipi flip-flop'lar en basit bellek elemanıdırlar. Sembolleri aşağıdaki şekilde görülmektedir.

S ve R gibi iki girişleri, Q ve Q gibi iki çıkışları vardır. S ve R girişlerine uygulanacak uygun sinyallerle flip-flop bir duruma veya diğerine getirilmiş olur. Q çıkışı lojik 1 ise saklanan bilgi lojik 1'dir; flip-flop S girişine uygulanan bir sinyal ile (set) edilmiş demektir.
Q çıkışı 0 (Q çıkışı 1) ise saklanan bilgi lojik 0'dır, flip-flop R girişine uygulanan bir sinyal ile (reset) edilmiş demektir. Saklanan bilgiyi anlamak için devre çıkışlarına bakılır, en son hangi girişe sinyal uygulanmış olduğu belirlenir.
Flip-flop'ın durumunu (sakladığı lojik bilgiyi) normal (Q) çıkışı belirler; lojik 1 seviyesinde ise saklanan bilgi lojik 1'dir. Diğer çıkış bunun komplementidir. (Lojik 0)
Flip-flop RESET durumunda ise normal çıkış 0; komplement çıkış 1 seviyesindedir. Flip-flop'un bulunduğu duruma göre çıkışların aldıkları değerler aşağıdaki tabloda görülmektedir.

Bu ilişki diğer tip flip-flop devreleri için de geçerlidir. Lojik kapı devreleriyle gerçekleştirilmiş SR tipi flip-flop'lar şekil 6.3'te görülmektedir. İkişer girişli iki NAND kapısından birincisinin çıkışı, ikincisinin girişlerinden birine; ikincisinin çıkışı, birincisinin girişlerinden birine bağlanır. Diğer girişler flip-flop devresinin SR girişleri; kapı çıkışları ise Q ve Q çıkışları olmaktadır.
Aşağıdaki şekli göz önüne alırsanız, her iki girişin (S ve R) lojik 1 (veya açık) olması durumunda devre daha önceki giriş durumlarının belirlediği konumda bulunacaktır. Örneğin set durumunda ise: 1 nolu kapının Q çıkışı lojik 1 (HIGH) olacak bu çıkış 2 nolu kapının girişlerinden birine gelmekte olduğundan ve 2 nolu kapının diğer girişi de açık (HIGH) olduğundan Q çıkışı lojik 0 olacaktır. Q çıkışı 1 nolu kapının girişine geldiğinden, Q çıkışı lojik 1 seviyesinde tutulmuş olacaktır.
S girişi High tutulurken R girişine Low uygulanırsa flip-flop resetlenir. 2 nolu kapı girişine Low geldiğinden Q çıkışı High olacak 1 nolu kapının her iki girişine High uygulandığından Q çıkışı Low olacak bu çıkış aynı zamanda 2 nolu kapının girişine geldiğinden, R girişinden Low seviyesi kalksa da Q çıkışı High seviyesinde tutulmaya devam edecektir.
Flip-flop set durumunda iken S girişine Low uygulandığında çıkışlarda bir değişme olmaz. Set durumunda Q çıkışı High; Q çıkışı Low'dur. Q çıkışı 1 nolu kapının girişlerinden birine gelmektedir ve bu kapının diğer girişi (S) ne olursa olsun Q çıkışı High seviyede bulunacaktır. Aynı şekilde eğer flip-flop reset durumunda ise R girişine Low uygulanması flip-flop konumunu değiştirmez.

Şekilde darbe diyagramında çeşitli giriş durumları için çıkışların aldıkları değerler görülmektedir. S girişine uygulanan 1 nolu darbe Q çıkışını 0'dan 1'e geçirmiştir. O halde 1 nolu darbeden önce R girişine bir darbe uygulanmış demektir.
Diyagram incelendiğinde görülür ki devre set durumunda iken uygulanmış 4 nolu darbe çıkışları değiştirmemiştir. Aynı şekilde R girişindeki 6 nolu darbe de flip-flop'un konumunu değiştirmemiştir. Q çıkışı 0 iken uygulanan 7 nolu darbe devreyi set etmiş Q çıkışı 1 olmuştur.
NAND'lerle kurulmuş flip-flop devrelerinde girişler normal olarak High seviyesindedir. Girişlerin kısa süreli Low yapılmasıyla flip-flop set veya reset edilir.
Her iki girişin Low olması durumunda en az birer girişleri Low olan NAND kapı çıkışları 1 olacağından hem 1, hem 2 nolu kapıların çıkışları lojik 1 seviyesinde olur. Flip-flop'un çıkışların birbirinin komplementi olması gerektiğinden bu durum anlamsızdır. İki kapı ile oluşturulan flip-flop'larda bu durumla karşılaşmak her zaman mümkündür. Girişler kontrol edilmeli, bu durumun oluşmasına izin verilmemelidir.
