SAYISAL DEVRE TASARIMI_1

Sayısal elektronik devre tasarımına bakmadan evvel bu yazıların size farklı gelebileceğini belirtmem lazım.
Normalde sayısal elektronik derslerinde mantık kapıları ve sayısal sistemler anlatılır. Bunlardan sonra çeşitli kapı devrelerinin oluşturularak matematiksel formüller gibi gösterilmesi ve bunların sadeleştirilmesi istenir.
Fakat ben böyle yapmayacağım.

Devre tasarımında hangi kapı devreleri ya da entegreler kullanıldıysa, bunları yazımda açıklayacağım. Yani her yazıda, yeni bir şey öğreneceksiniz.
Tüm kapı sistemlerini toplu halde öğrenmek isteyenler kendileri internetten araştırabilir. Fakat normalde buna gereksiniminiz olmayacaktır. Çünkü araştırdıkça konuları anlamaya çalıştıkça zaten o bilgileri rahatlıkla öğrenmiş olacaksınız.
Bu yazımın konusuna geçmeden önce Sayısal (Dijital) elektronik nedir diye bakalım.
Sonrasında Sayısal devre dizaynı hakkında bazı temel bilgiler vermek isterim.

Sayısal devreler ile analog devreler arasındaki en büyük fark analog devrelerin zamana karşı küçük değişimlerin önemli olması. Mesela ses devreleri. Analog devrelerdir. Bunlarda da benzer komponentler kullanılsa da devre dizaynı olarak analog olarak geçer.
Mesela her ikisi de transistör kullanır. Transistorlar, Kesim, Aktif ve Doyum (Cut off, Active, Saturation) bölgelerinde çalışır. Bu bölgelerden 2 tanesi sayısal elektronikte kullanılır. Bunlar kesim ve doyum kısmıdır. ASLA aktif bölge sayısal elektronikte kullanılmaz. Bu bölgelerin hepsi analog devrelerde kullanılır.
Bu bilgiler ışığında sayısal elektroniğin bir kesinlik olması gerektiğini anlamışsınızdır. 
Sayısal elektronik HIGH ve LOW yani 1 ve 0 seviyesi olarak çalışır.  Buna Binary sistem deniliyor.
Sayısal elektronikte sinüs yada zamana göre değişen sinyaller kullanılır mı? Elbette kullanılabilir. zaman zaman bu tip gereklilikler oluyor. Mesela Analog dijital dönüştürücüler gibi. Fakat yine de bunlar bir rakamsal değere dönüştürülür. Mesela bir sinüs sinyalini uyguladınız. Dijital devreler bunu algılarken bir seviye belirteci bulunur. Bu seviyeye göre çıkıştan kare dalga alırsınız. 5V luk bir sistemde dijital kapı devreleri ve entegrelere giriş olarak uygulanacaksa bu sinyalin 2V seviyesine kadar, dijital devre 0=LOW kabul eder. 2V tan yukarısını ise 1=HIGH kabul eder. Bundan dolayı yine çıkış kare dalga olacaktır. Entegrelerin çalışma gerilimine göre bu sınır(eşik) gerilimi değişiklik gösterir. 3V devrede bu sınır 1V civarına düşer 12V luk devrede ise 3.5V değerine kadar çıkabilir. Bundan dolayı kullanacağınız komponentlerin datasheet denilen verilerine bakmanız gerekecektir.

Bu girişten sonra sanırım artık sayısal devre tasarımına başlayabiliriz. 

1-) Devre tasarımı, çıkıştan girişe doğru bakılarak yapılması daha uygun olur. Çünkü sizin elinizde sadece devrenin sonucu vardır. Yani devrenin yapması gereken görev vardır.
2-) Hangi kapıyı kullansam demeden önce çıkıştaki devrenin önüne ne gelmeli ki doğru çalışsın sorusu sorulmalı. Yani çıkış devresinin ihtiyaç duyduğu giriş ne olmalı.
3-) Çıkış devresinin kontrol ihtiyacı var mı.Mesela çıkış High seviyesinde mi olacak Low seviyesinde mi olacak. Çıkış devresi open kolektör ya da open drain gibi bir çıkışa mı sahip ya da emetör çıkışlı mı olacak. Mesela bu devrede 7447 entegresi Low seviyesinde çıkış verir. Display ise buna uygun olarak ortak anotlu kullanılır. Elinizde ortak katot display varsa 7447 değil 7448 kullanmanız gerekebilir.
4-) Devre manuel kontrollü mü olacak yoksa otomatik devre mi olacak. Otomatik olacaksa mutlaka kontrol sistemlerini de içermelidir. Yani bir motor devamlı dönecekse istenildiğinde durdurulabilmeli ya da belli limitler içinde çalışması sağlanmalı. Hem sayısal limitler hem de akım gibi analog kontroller konulmalı.
5-) Devre cmos ve TTL karışık mı olacak yoksa sadece Cmos ya da sadece TTL den ibaret mi olacak. Cmos devreler 3V-15V arasında çalışır. Bunlar VCC gerilimi olarak adlandırıldığında seviye dönüşümü yapılmaya müsaitlerdir.
TTL yapılacak ise sadece 5V ile çalışırlar.
6-) Cmos devreler 3.3V luk modüllerle bile kullanılabilir. Yani 5V ya da 12V luk bir giriş uygulanırken çıkışında 3.3V luk bir çıkış elde edilebilir.
TTL devreler ise 4.5V -7V arası gerilim ile çalışır. Bu devreler de 3.3V luk çıkış için uygun değildir. HIGH seviyesi 5V civarında olduğundan seviye dönüşüm yapılmalıdır. CMOS entegrelerde ise entegrenin datasheet sayfasına bakın. Bazıları 3.3V ile çalışmayabilir.
7-) Kapı devreleri kullanılırken, ilk başta devre çalışasıya kadar kapı devreleri eklenir.  Sonrasında ise kapı devreleri sadeleştirilmeye gidilebilir. Bunun için sayısal devrenin giriş ve çıkışlarının ilgili yerleri değiştirilerek daha sade bir yapı ortaya konulur. Çünkü sayısal devrelerde birden fazla çözüm olabiliyor.
8 -) Saat frekansı da çok önemlidir. Bu bazı devrelerde hassas olmayan komponentlerle yapılır bazen de ısı ile bile değişmemesi gereken yerlerde hassas komponentler kullanılarak yapılır. Hatta RTC devrelerinde kullanılan gibi yüksek frekanstan bölme işlemi ile daha küçük frekans elde edilir ki bu da daha stabil olmasını sağlayabilir. Bunun için çoklu bölme yapan entegreler mevcuttur.

Bu tip temellere dikkat edilirse, sayısal devreler kolaylıkla tasarlanabilir.
Ayrıca şunu da eklemem gerekir. Bazen mantık kapıları kullanmak yerine bir sayıcı entegre ya da dönüştürücü entegre kullanılarak devre daha stabil veya daha sade olabilir.
Bazen sayısal devrelerde analog değerlere de ihtiyaç duyulur. Mesela sıcaklık sensörü gibi. Bunun için de DA(dijital analog dönüştürücü) ya da AD (analog dijital dönüştürücü) entegreler kullanılır.

Şimdi devremize geçelim.

Bu devre bir arkadaşın sorusu üzerine ortaya çıktı. Tek dijit bir sayıcı yapılması isteniyor. Fakat bu sayıcının 1,3,5,7,9 gibi tek sayıları sayması isteniyor. Bu mikroişlemci kullanılmadan kapı devreleri ile yapılmak isteniyor.
Öncelikle çıkıştan itibaren girişe doğru bir çalışma yapacağımızı söyledik. Önce çıkış diyorsanız burada çıkış, 7 seg. Display göstergedir.

Bu display 2 çeşittir. Ortak ANOT ve Ortak KATOT displaydir. Devrede ortak ANOT olarak kullandım. O zaman display sürücüyü de ortak ANOT için seçmem gerekiyor. Bu da 7447 entegresidir. Şayet ortak KATOT display seçseydim 7448 entegresini seçmem lazımdı.

Display sürücü entegremiz için 4 bitlik bir Binary sayıcı entegresi gerekmektedir. Bu da popüler olan 7490 entegresi olacaktır. 7490 entegresi, saymak için bazı şartlara ihtiyaç duyar. Mesela RESET bağlantıları, mesela entegrenin binary  sayıcı olarak çalışması için gereken bağlantılar. Bunlar yapılır. Sonrasında kontrollü bir saat palsi gerekir.
7490 entegresinin datasheet sayfasına buradan bakabilirsiniz.

Bizim devremizde butona basınca sayması isteniyor. Bu da saat palsi olarak kullanılacaktır. Saat palsi dediğimiz sinyal, düzgün bir kare dalga sinyalidir. Yani önce 1 seviyesine çıkacak sonra 0 seviyesine inecek bir sinyal. Bu da buton ile sağlanmaktadır.

Devremizde D FF( D flip flop) entegresi ve 4017 entegresi de bulunmaktadır.

D FF entegresi nasıl çalışır. Bu entegrede D=data ucunda bir bilgi olur. Bu bilgi CLK ucu HIGH seviyesine çıkasıya kadar çıkış ucuna iletilmez. Şayet CLK ucu HIGH seviyesine çıkarsa Q çıkışına ulaşarak 7490 entegresinin çıkışının, 7447 entegresine ulaşması sağlanmıştır. Bu CLK sinyali de 4017 sayıcısından gelmektedir.

4017 entegresi 0-9 arasında tüm pimler, 1 saat palsi ile HIGH seviyesine çıkar. Bu şekilde her saat palsında bir sonraki pim HIGH seviyesine çıkarken, HIGH seviyesindeki bir önceki pim LOW seviyesine iner.
Bu şekilde çalışması ile her butona bastığımızda saat palsi ile 4017 sayar ve istediğimiz çıkış HIGH seviyesine geldiğinde D FF ların CLK girişini tetikler ve 7490 çıkışı ne ise o 7447 girişine gelir.
Bunu yaparken 4017 entegresini buton basıldığında sayacak bırakıldığında MR dediğimiz Master Reset ucunu HIGH seviyesine çıkararak RESET yapılmasını sağlarız.
İlk devrede bu yapılmadı.Çünkü butona 1 kez basınca 4017 entegresi 1 basamak sayıyordu. 2. Kez bastığımızda ise 2. Kez sayıyordu fakat 2 kez basıldığında display sayıyordu.
Fakat bir kez boşa basılması gerekiyordu. Bunu önlemek için 1 buton basışta 2 CLK palsi gelmesi sağlanmalıydı.
Bunun için devreye bir osilatör eklendi. Bu osilatör butona basıldığı sürece CLK palsi üretiyor. Fakat bize lazım olan 2 CLK palsi olduğundan 4017 entegresinin 2 kez sayması ve ondan sonra buton basılı olsa bile durdurulması gerekiyordu.
Bunlar için ise 1 adet VE(AND) kapısı ve 1 adet de VEDEĞİL(NAND) kapısı kullanılmıştır. Ayrıca 2 adet de Bu kapıların doğru çalışmasını sağlayacak DEĞİL(İNVERT) kapıları kullanılmıştır.
Aşağıda bu kapıların kullanım şekilleri ve gerçekleme tabloları mevcuttur.

Kapı devreleri ve tabloları koy.

AND (VE) kapısı : Bu kapı devresi 2, 3, 4 girişli olabilir. Girişteki bilgilerin hepsi HIGH seviyesinde ise çıkış HIGH olacaktır.

VE kapısının seri anahtarlarla karşılığı


NAND (VE DEĞİL) Kapısı : Bu kapı şekli ise VE kapısının tersi olarak çalışır. Yani 2 girişi 1 ise çıkış sıfırdır. Diğer durumlarda ise çıkış 1 dir. Bu da 2,3,4 girişli olabilir. Elimizde NAND kapısı yoksa ne yaparız. Gidip bir entegre daha mı alırız?
Tabii ki değil AND kapısı entegremizde kullanmadığımız bir kapı kaldıysa, bunu kullanıp arkasına 1 tane NOT(Değil) kapısı koyarsak NAND kapısı olacaktır.
Devre tasarımına bakarken 1 tane NAND kapısı için 1 entegre koymanız devreyi karmaşık hale getirebilir. Sadeleştirmek için bu tip değişiklikleri yapabilmeniz gerekebilir.

NOT (Değil) Kapısı : Bu kapı 1 giriş ve 1 çıkışa sahiptir. Mantığı ise Çıkışı girişin tersidir. Bu şekilde kapı devreleri arasında bağlantılarda önemli rol oynar. Mesela 2 noktadan 1 AND kapısı ile bir kontrol biti almak istiyorsunuz. AND kapısı ikisi de 1 olduğunda çıkışı 1 verir.
Fakat iki kontrol noktasından 1 tanesi istediğiniz anda 1 olmuyor. Bundan dolayı arada senkronu sağlamak için kontrol noktalarından 1 tanesini NOT kapısı ile AND kapısına bağlarsanız, O zaman istediğiniz kontrolü elde edersiniz. Bu tip işlerde kullanılır. Entegreler de kapılar NOT kapısı olarak değerlendirilirse de entegreler, INVERTER (çevirici) olarak isimlendirilir. Mesela Entegrelerin görevi olarak HEX INVERTER olarak görürsünüz.
Burada normal NOT kapıları olsa da bazen parazitik etkilerden devrenin yanlış tetiklenmemesi için bu kapıların bazıları Schmitt trigger denilen şekilde çalışır. Schmitt trigger: 3 eşikli bir çalışma şekli sunar. Bu hem hızlı çalışma, hem de stabil çalışmayı sağlar. Hızlı tetikleme yaparken gelen sinyalin parazitik etkilerini de kestiği için çıkış daha doğru bir çalışma sağlayacaktır.
3 eşik derken ne demek istiyoruz. Alt ve üst sınırların dışındaki sinyalleri görmez ana sinyale odaklanır. bundan dolayı parazitik etkilerden arındırır. Bu tip kapılar genelde parazitik etkilerin olduğu yerlerde kullanılmaktadır. Bir de 0 ve 1 seviyesi eşiği vardır.
Her zaman bu tip olanı kullanmak gerekmez fakat bazı devrelerde gelen sinyaller düzgün olmayabilir. O zaman, giriş kısmında bu tip kapıların olması stabil çalışmayı sağlayacaktır.

 

Bu bilgiler ışığında osilatörün tek basışta nasıl sadece 2 CLK palsini ürettiğini ve 4017 entegresinin tekrar nasıl resetlendiğini görebilirsiniz.
Tabii ki bir de D FF kontrolü var.
Bu kontrolde tek sayıları saydırıyorsak, 7490 çıkışı ile display çıkışı farklı gösterecektir. Bunun sebebi tek sayı devresinde 4017 bağlantısında önce D FF entegresi geldiğinden, devre son CLK palsından önceki sayıyı display’e yazdıracaktır. Sonrasında son CLK palsi geldiğinden 7490 1 kez daha sayacaktır. Fakat D FF çıkışı etkilenmeyecektir.

2 şer olarak saymak istediğimizde ise D FF ucu ile 4017 durdurma ucu aynı pime bağlandığından. 7490 ve display aynı değeri gösterecektir.

4017 entegresinin 3 CLK palsi verecek şekilde bağlanması ise 3 er 3 er olarak saymasını sağlayacaktır. Bundan dolayı 4017 entegresi sayesinde 9 ar 9 ar olacak şekilde saymasını sağlayabiliriz.

BU, VİDEODA GÖSTERİLMEKTEDİR.

Videoda osilatör frekansı yavaşlatıldı. Değişim görülebilsin diye. Fakat gerçekte 100Hz olarak çalışması yeterli olacaktır. Butona basar basmaz çıkış göstergesi değeri gösterecektir.

Bu tip devreler proteusta sorun çıkarmasa da gerçek devrede buton basma sorunları olacaktır. Buton ikilemesi gibi. Bu şekilde çalışmada devrenin fazla sayması söz konusu olabilir. Gerçek devrede bu tip bir koruma devresi yapılarak ikileme dediğimiz olay engellenmiş olacak ve stabil çalışma sağlanacaktır. Mikroişlemci olduğunda bunu engelleme programı olurdu fakat sayısal devrelerde mikroişlemci kullanmıyorsak bu tip engelleme devreleri kullanmamız gerekecektir.

Tüm programlara Buradan ulaşabilirsiniz.
Not: Proteus şemaları en düşük versiyonda çizildiği için tüm proteus versiyonları ile çalışır. Fakat çalışma sorunu oluyorsa bilgi verirseniz ek dosyaları da koyabilirim.

Not: Bu konuyla bağlantılı bir yazım daha var. O yazımı da buradan okuyabilirsiniz. 

Proteus Videosu:

2 Comments

  1. Şafak Bey,

    Vakit buldukça çalışmalarınızı takip ediyor ve insanlara sağladığınız faydayı takdir ediyorum. Mantık devreleri ve ardışıl mantık konularına dair yazılarınızın 3. sünü de yayınlamışsınız elinize sağlık. Çevremde kaynak arayışı içerisinde olan eş, dost ve arkadaşlarıma sitenizi referans veriyorum. Aynı nedenle de konu anlatımınız hakkında ufak bir öneri sunmayı uygun buldum. Umarım yanlış anlamazsınız. Mantık devreleri konusunda birçok insanın öncelikli beklentisi mantık ailelerini tanımak. Birbirlerine göre ne gibi farklılıkları var, nerede hangisini tercih etmeli vs. gibi. Kapıları tanıdıktan sonra bir üst seviyede flip-flop karı yani ardışıl mantık devrelerinin temel elemanını merak ediyorlar. Blr sonraki adımda bunları kullanarak daha karmaşık yapılar olan sayıcı, bölücü, kodlayıcı, çoklayıcı ve sayısal PWM gibi devrelere geçiyorlar. Ancak bu geçişlerdeki en büyük ortak sıkıntıları senkron ve asenkron tasarım oluyor. Kapılarla veya flip-flop kullanarak tasarladıkları sayıcıların çalışmadığı durumlar ortaya çıkıyor. Bence kapılar ve kapıları kullanarak gerçeklenen flip-flop devrelerinin hemen ardından bu konuya değinmek gerekiyor. Çünkü flip-flop kullanarak inşaa edilen sayıcı gibi daha karmaşık devrelerin temel gereksinimlerini ve bir sayıcı asenkron olursa ne olur, senkron olursa ne olur konularının sonradan anlaşılması daha zor. İleride HDL/VHDL gibi donanım tanımlama dillerini kullanarak tasarım yapmaya yeltenecek insanların da şu aşamada bu konulardan haberdar olmasında fayda olduğunu düşünüyorum. Kolay gelsin.

    1. İlginize teşekkür ederim. Elbette yapıcı eleştiriler ve öneriler her zaman beklediğim bir şeydir.
      Bu yazınızda bahsettiğiniz bilgileri vermek de isterdim. Fakat bu konuya başlarken vermek istediğimi bu yazımın başında da söylediğim gibi. Ezbercilikten uzak, olsun diye ve tasarım dediğim için temel ilkeleri yani sayı sistemlerini her yerden bulup öğrenebilirsiniz diye tavsiye ettim.
      Bana göre yanıltıcı bir öğrenim şekli ezbercilik olduğundan önce kapı devrelerini toplu olarak vermek istemedim.
      Her konusu geçtiğinde bunu yeni bilgi gibi vermek istedim. Bunun nedeni ise tüm kapı devrelerini veriyorsunuz fakat bir kaç konu geçtiğinde bir kapı devresi geldiğinde bu nedir doğruluk tablosu nedir diye geri dönmek zorunda kalıyorlar. Konu geldikçe birer birer çalışma şekli ile öğrendiklerinde devreyi o anda anlamaları daha kolay oluyor.
      Şöyle diyebilirsiniz. Bir kapıyı 1. ders anlattınız yine unutacaklar. Denemelerime göre öyle olmuyor.
      Sanırım bu dil öğrenirken de aynı, tüm kelimeleri veremeyiz. yeri geldiğinde bir kelime öğreniriz bunu cümle içinde kullanırız. Biraz daha pekiştirmiş oluruz.
      Ben kendi eğitimimde de bu şekilde uygulamaya çalıştım.
      Bundan dolayı her konu içerisinde birkaç kapıyı vurgulayarak ayrıntılarını vererek göstermek istedim.

      Bununla birlikte TASARIM dediğim için çeşitli açılardan bakılabilecek şekilde vermeye çalışıyorum. Sadece bu yolu izleyin diye değil, bir çok farklı yöntem ile yapılabileceğini ve bunun için çeşitli komponentlerin hazır olduğunu göstermeye çalışıyorum.

      FF konusunda haklısınız kapı devresi olmasa da FF konusunda, bir eğitim notu gerekebilir. Çünkü 3. yazımdan sonra anladım ki ben entegreleri veriyorum. Ama entegrelerin içeriklerini araştırmayacaklar ve koy bir sayıcı diyecekler. Belki çizimlerde fark etmişsinizdir. Bazen bir sayıcı koymak yerine 1 tane FF koymak bile işi yapabilecekken neden bir sayıcı entegresi koyayım ki diye düşünebilsinler.
      Bu açıdan sadece FF lar için bir konu yazmayı düşünüyorum.

      Asıl amacım tasarım.
      Basit entegreleri kullanarak bir çok yan devreyi hazırlayabilmeleri ve Arduino gibi mikrodenetleyicilerin iş yükünü azaltıp bir merkezi işlem birimi gibi kullanmaları. Dış devre kendi işini yapacak ve geri bildirimlerle mikrodenetleyicileri besleyecekler bu şekilde daha küçük mikrodenetleyicilerle daha fonksiyonel işlemleri yapabilmek için bir bakış açısı geliştirebilecekler diye düşünüyorum.
      Sadece 3-5 pin kullanan kişileri hedeflemiyorum.
      Daha çok, çok fonksiyonlu ve denetlenmesi gereken elemanı çok olan, endüstriyel sistemler ile büyük projeler için kullanılabilecek tasarımlara göre anlatmaya çalışıyorum.
      Amatörler pim sayısı yetmediği için daha büyük arduino kullanıyorlar. Bir çok şekilde yan devreler kullanabileceklerini gösteren yazılarım var.
      Fakat bunlar yetersiz diye düşündüm.

      Siz de bilirsiniz.
      Makinelerin kontrolünde 1 merkez vardır ve tüm dijital ve analog sistemler, direkt olarak merkezi birime bağlanmazlar. Yoksa her biri merkezin zamanını çalar. Bundan dolayı dış devreler, hem koruma amaçlı, hem de toplu geri bildirim için ek kartlara bölünür. Bu bir çok makine sisteminde bu şekildedir.
      Farklı düşünceleriniz varsa yine paylaşırsanız sevinirim. Hatta yanlış olan yerde uyarılarınız olabilirse çok daha memnun olurum. Ben ne kadar araştırarak, bilgilerimi tazeleyerek, yapmaya çalışsam da hata yapabilirim. Öğrenenler, yanlış öğrenmesinler.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.