Mikrodenetleyici Mimarisi -2- Mikrodenetleyicinin İç Yapısı ve Temel Birimleri

Bu konumuzda mikrodenetleyicinin iç yapısını anlatacak olsak da bunu tam anlamıyla anlatmamız mümkün değildir. Çünkü mikrodenetleyicilerin iç yapıları üreticiye, aileye, seriye ve hatta modele göre farklılık göstermektedir. Üretici hangi amaca yönelik üretiyorsa onun için en çok gerekli birimleri içerisine koyabilir. Bazen de ucuz olması ve en basit işleri yürütmesi için neredeyse hiçbir şey koymayabilir. Burada asla bütün mikrodenetleyicileri aynı sanmamak lazımdır. Biz önce bütün mikrodenetleyicilerin içinde olan birimlerden bahsedeceğiz ve sonrasında mikrodenetleyicilerin çoğunda bulunan birimleri anlatacağız. Mikrodenetleyicileri araştırırken ismini pek duymadığımız firmaların farklı özelliklere sahip mikrodenetleyicilerini de görebiliriz. Ama temelde çoğu mikrodenetleyici belli bir sınıf içerisinde yer almakta ve bu sınıftaki mikrodenetleyiciler birbirine benzemektedir.

Mikrodenetleyicileri sınıflandırırken kullandığımız en önemli kriter kaç bit olduğudur. Bütün mimari bu bit sayısı üzerine yapılırken aynı zamanda da işlem kapasitesi ve hızı az çok belli olmuş olur. Ayrıca teknolojik olarak gelişmişliğinin de bit oranı ile doğrudan alakası vardır. Mikrodenetleyiciler ayrıca giriş seviyesi, ekonomik seviye, orta seviye, performans seviyesi gibi farklı kategorilere ayrılır. Aynı bilgisayarlarda olduğu gibi giriş seviyesi mikrodenetleyiciler giriş seviyesi bilgisayarlar gibi ucuzdur fakat özellik ve işlem kaabiliyeti bakımından kısıtlıdır. Performans seviyesinde ise pahalı olmalarına karşın özellikleri daha yüksektir. Gömülü sistemlerde temel ilke maliyeti en düşük seviyede tutmak için bir donanımı sınırda kullanmak olduğu için uygulamada yüksek özellikli mikrodenetleyiciler pek tercih edilmez. Hatta karmaşık programları bile düşük hafıza alanında ve hızda çalıştırmak üzere optimize etmeye gayret ederler.  Bu yüzden bazen sırf maliyeti düşürmek için C yerine Assembly ile programlama yapılır  ve koddan tasarruf edilir.  Mikrodenetleyicilere eklenen çevre birimlerinin de maliyeti düşürmeye yönelik bir hareket olduğunu söyleyebiliriz.

Hem özelliklerin yüksek olması maliyeti düşürecek hem de yüksek özellikli bir mikrodenetleyici maliyeti artıracak ise bu yönde bizim fiyat/performans dengesini kurmamız gerekecektir. Örneğin ucuz diye çevre birimleri yönünden oldukça fakir bir mikrodenetleyici tercih edersek ihtiyacımızdan dolayı o çevre birimlerini farklı entegre ve modülleri alarak sağlamak zorunda kalırız. Bu durumda maliyet yine artacaktır. Önemli nokta mümkün olduğunda dış eleman kullanmamak, bütün elemanların mikrodenetleyici içerisinde toplandığı bir modeli seçmek ve aynı zamanda da gerekmeyecek özelliklerin olduğu mikrodenetleyiciyi kullanmamaktır.

Bu nokta ince bir nokta olduğu için mikrodenetleyici üreticileri yüzlerce model üretmekte ve uygun mikrodenetleyici seçimini bize bırakmaktadır. Bu durumda bir geliştiricinin birkaç mikrodenetleyici modeline bağlı kalmasının ne kadar anlamsız olduğunu görebilirsiniz.  Aşağıda bir mikrodenetleyicinin blok diyagramın kılıf üzerinde gösterilmiştir. Bu çizimin mikrodenetleyicinin içinde ne olduğunu rahatça anlamanız için faydalı buluyorum.

Şimdi mikrodenetleyicinin temel elemanlarını anlatmakla yazımıza devam edelim.

Merkezi İşlem Birimi (CPU)

Bir bilgisayar sisteminde CPU olmadan hiç bir işin yapılamayacağını söylemiştik. Haliyle mikrodenetleyicilerde de bir işlemcinin bulunması zorunludur. Bu işlemci bazen Intel, Motorola gibi mikroişlemci üreten firmaların çekirdekleri olsa da bazen de mikrodenetleyici üreten firmanın mikrodenetleyicilerde kullanmaya yönelik ürettiği çekirdektir. Mikrodenetleyici firmaları mikroişlemci çekirdeğini kullanmaya pek sıcak bakmaz. Çünkü mikroişlemciler genelde von neumann mimarisinde ve CISC komut mimarisine sahipken mikrodenetleyiciler genellikle RISC ve harvard mimarisininde olmaktadır. Bunun en önemli sebebi silikon çip üzerine bu mimarinin kolayca entegre edilebilmesi ve RISC komut kümesiyle basit bir mikroişlemci ortaya çıkartılabilmesidir. Çok fazla karmaşık komut işlemeyecek bir işlemcinin CISC  yapısında olması gerekmez. Tek çip üzerinde bilgisayar sistemi yapmanın avantajları mimariyi bile değiştirecek seviyede olabilir.  Yine de mikroişlemci tabanlı mikrodenetleyicileri de görebiliriz. Zilog e80, XC800, 68HC16, MPC mikrodenetleyiciler ayrı bir mikroişlemci tabanlıdır. Hatta PowerPC tabanlı mikrodenetleyicileri de görebiliriz. Kendi çekirdeğini üretmek veya hazır bir mikroişlemci çekirdeğini mikrodenetleyici sistemine entegre etmek firmaların tercihine kalmış bir durumdur. İlk mikrodenetleyici çekirdeklerinden biri olarka Intel’in 8051 çekirdeğini söyleyebiliriz.

RAM Bellek

Mikroişlemcilerde RAM bellek ayrı bir entegre olup mikroişlemcinin adres ve veri yoluna bağlanırdı. Mikrodenetleyicilerde ise adres ve veri yoluna ulaşamadığımız için muhakkak çipin içerisinde yer almalıdır. Burada biz RAM belleği değiştiremeyeceğimiz için RAM bellek miktarının yeterli seviyede olmasına dikkat etmemiz gerekir. Genellikle mikrodenetleyicilerde eşdeğer bir mikroişlemci sistemine göre çok daha az RAM bellek miktarı bulunmaktadır. Örneğin 8-bit bir mikroişlemci sisteminde 64KB RAM belleği rahatça görebilirken en yüksek seviye 8-bit mikrodenetleyicilerde bile en fazla 4KB RAM bellek görmekteyiz. 4KB RAM belleğin de bir mikrodenetleyiciye göre olağanüstü olduğunu söyleyelim. Temel seviye bir mikrodenetleyicide birkaç yüz baytlık bir RAM bellek bulunur. Bu RAM belleğin düşüklüğü programımızı daha dikkatli yazmamıza sebep olmaktadır ve bazı uygulamalarda mikroişlemci sistemlerine göre geri kalmaktadır. Son teknoloji 32-bit mikrodenetleyicilerde, mikrodenetleyicilerin bu eksikliğine göre eklenmiş bir harici RAM özelliği bulunmaktadır. RAM yetersiz kaldığı durumlarda RAM çipini ekleme şansımız vardır. Fakat bu kısıtlı bir alanda olduğu için bizi üst seviye ve pahalı mikrodenetleyicileri kullanmak zorunda bırakır. RAM belleğin düşük olması mikrodenetleyicinin kullanıldığı alandan dolayı bir sıkıntı oluşturmamaktadır. Fakat biz ileri seviye yazılım, görüntü işlerine girdiğimizde yani mikroişlemci sisteminin yapacağı işleri yaptırmak istediğimizde bu eksikliği çok kolay hissederiz.

ROM Bellek

Mikrodenetleyicilerin genelde Harvard mimarisine göre üretildiğini görüyoruz. Bunun en önemli sebebi ise Harvard mimarisinde program hafızası ile veri hafızasının ayrı olmasıdır. Normalde disket, harddisk veya CD’den programın okunup RAM belleğe kaydedilme işlemi yürütülürken burada program doğrudan birincil bellek olarak kullanılan ROM bellekten okunup RAM bellek veri belleği olarak görev yapmaktadır. Aslında RAM’in düşük olma sebeplerinden biri de budur. Çünkü bütün program ROM bellekte yer almakta ve tek bir program olduğu için ikincil hafıza biriminden okunup RAM belleğe bir program kaydedilmemektedir. İşletim sistemi olmadığı için çok fazla bir bellek ihtiyacına da gerek yoktur. Mikrodenetleyicilerde ROM bellek eskiden ışıkla silinebilen EPROM belleklerden ya da tek sefer programlanabilen PROM belleklerden meydana gelse de günümüzde genellikle defalarca silinip programlanabilen Flash hafıza kullanılmaktadır. Fakat çok çok ucuz mikrodenetleyicilere baktığımızda bir defa programlanabilen bellekleri olan modelleri görmemiz mümkündür.

 Özel Fonksiyon Yazmaçları 

Mikrodenetleyicilerde mikroişlemcinin çevre birimlerini çalıştırması gereken bilginin ve sistem durum bilgilerinin yer aldığı özel fonksiyon yazmaçları adı verilen veri hücreleri bulunmaktadır. Bu yazmaçlar genellikle RAM belleğin kendilerine ayrılmış bir kısmında bulunup her birinin farklı bir adresi bulunmaktadır. Bu yazmaçlardaki veriyi okuyup yazarak veya bitleri kontrol ederek sistem denetlenmiş olur. Mikroişlemcinin kullandığı genel maksatlı yazmaçlardan farklı olup daha çok çevre birimlerine ait yazmaçları içerinde bulundurur.

 

Sonraki başlıkta mikrodenetleyicilere göre değişkenlik gösteren çevre birimlerini sizlere anlatacağız.

Bizi Facebook grubumuzda takip etmeyi unutmayın. Bilgili ve öğrenmeye hevesli bir topluluk oluşturmak istiyoruz.

https://www.facebook.com/groups/1233336523490761/

UYARI!!

Gökhan Dökmetaş

"Arduino Eğitim Kitabı" ve "Arduino ve Raspberry PI ile Nesnelerin İnterneti" kitaplarının yazarı. Başkent Teknoloji ve Dedektör Merkezi'nde Ar-ge Sorumlusu. Araştırmacı-Yazar.

You may also like...

Bir cevap yazın

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