Mikroişlemci Nedir?
Mikroişlemciler programların yapmak istediklerini yerine getiren yapılardır.PC lerde CPU diye geçerler.Bunlar günümüzde küçük el aletlerinde veya evde kullanmış olduğunuz kimi aletlerde bile bulunurlar.
Bir işlemciyi kendi içinde 3 üniteye ayırırız
Bunlar:
1)Memory hücresi
2)Input hücresi
3)Output hücresi
Bu hücreler(üniteler) CPU chipinin dışında bilgisayarda faklı yerlerde bulunan elektronik ünitlerde bulunurlar.Aralarındaki iletişimi Data bus ve Addres bus denilen hatlar üzerinden yaparlar.
Mikrodenetleyici Nedir?
Yukarıda belirttiğimiz elemanları(Ram,I/O) tek bir chip içerisinde üretilmiş olanına mikrokontrolürler(mikrodenetleyiciler) denir.Bir mikrodeneytleyici telefon,araba,oyuncak vb,,aletlerin içerisinde bulunabilir.
Bu elemanlar farklı firmalar tarafından üretilebilmektedir.İşte bunlardan Microchip firmasının üretmiş olduğu chipe verilen ad PIC tir.
Mikroişlemcinin Mikrodenetleyicen farkı nedir?
Mikrodenetleyicilerde mikroişlemcilerdeki gibi bir işlevi yerine getirmek için gereken CPU,RAM,I/O ve bunların arasında iletişimi sağlıyacak Data bus,Address bus denilen yolların kullanılması gerekmez.Bunun neticesi olarak maliyet ucuzlamış olacaktır.
PIC’in diğerlerinden farkı nedir?
PIC,çevresel üniteleri denetleyen bir ara birim aracıdır.Bu araçlardan kastımız kimi zaman röle,kimi zaman bir step motor,kimi zamanda herhangi bir yarıiletken olabilir.PIC bu input/output işlemlerini çok hızlı yapabilicek şekilde üretilmiştir.PIC(Periphal Interface Controller) dediğimiz chipler RISC(Reduced Instruction Set Computer) denilen bir yöntem kullanırlar.Bu şekilde bir yöntemin kullanılmasının amacı az komutla daha fazla çözümler üretebilme düşüncesi ön planda tutulabilir.
PIC için yazıcağımız komutları herhangi bir metin editöründe yazabilirsiniz.
Daha sonraki yazılarımızda programlama kartları yapımını anlatacağız.Şu an için bunların elinizde olduğunu varsayarak yazımıza devam edeceğiz.
PIC Çeşitleri
PIC ler word lenght dediğimiz yapıya göre isimlendirilirler.PIC ler içlerindeki registerlerında veri saklarlar.Bunlar kendi aralarında belli sayıdaki bitlerle veri taşırlar.Bu veri yoluna word lenght denir.
PIC ler harici üniteleriyle veri alışverişini veri yolu bit sayısıyla yaparlar.Elinzideki PIC’in modeli ne olursa olsun harici ünitelerle PIC ler her zaman 8 bitlik veri yolu aktarımını kullanırlar.Programladığınız PIC’in bellek miktarını,I/O portu sayısını,A/D(nalog/dijital) dönüştürücüye sahip olup olmadığını,interrupt fonksiyonlarının olup olmadığı(bu konuyla ilgili ileride yazılar yazıcam,Dos için assembly da programlama ile bir şeyler okumuş olanlar bilirler),bellek tipinin bilmeniz gerekmektedir.
PIC Bellek çeşitleri
1)EEPROM(FLASH) Bellek=Electrically erasable Programmable Memory dediğimiz bu tip bellekler elektrik sinyali ile silinip yeniden programlanabilen bellek tipleridir.
2)EPROM Bellek=Erasable Programmable Memory dediğimiz bu belleklerde silinebilir ve yeniden programlanabilir bellekler sınıfını temsil ederler.
3)ROM Bellekler=Bilgisayardan da aşina olduğunuz gibi sadece okunabilen bellek sınıfıdır.
EEPROM tipi bellekler programlanırken elektrik sinyalini alarak kayıt yapar.Erişim hızları EPROM ve ROM lara göre yavaştır.
ROM program belleğine sahip PIC ler fabrika çıkışında yazılıp ürüne monte edilirler.
EPROM bellek türleri ise elektrik sinyali ile kayıt yaptıktan sonra silinmeleri için ultra-violet ışın altında belli bir süre tutulmaları gerekir.YAnlız bunlarda kendi içlerinde farklı katagorilere ayrılırlar.
Ben buradaki yazılarımda genellikle Pic 16F877,16F84A,16C84(16F84 ün aynısıdır.Sadece Microchip firması ilk ürettiği chiplere CMOS tan gelen C harfini atamıştır.16F84 te ise FLASH bellek tabirinden gelen F ifadesi bulunur.),gibi chipler üzerinde durucam.Fakat farklı chiplerlede uygulamalarımız olucak.Hatta istek olursa Intelin üretmiş olduğu 8051 gibi chiplerlede uygulamalar üzerinde durmayı istiyorum.
Mikroişlemcinin Çalışma Mantığı
Mikro
işlemciler işlev olarak kabaca günlük kullandığımız bilgisayarların merkezi
işlem birimleriyle (CPU) eşdeğer fakat genellikle daha düşük kapasiteli entegre
devrelerdir. Mikroskobik transistörlerin oluşturduğu mantık kapılarından meydana
gelmişlerdir. Bir mikro işlemcinin üzerinde mantık kapılarının bileşiminden
oluşan ve çeşitli işlevleri yürütmeye yarayan birimler bulunur. Bu birimler
arasında aritmetik-mantık birimi, kontrol birimi, girdi-çıktı ve küçük bir
miktar bellek vardır. Bu temel birimlerin dışında mikro işlemcinin kullanım
alanına bağlı olarak farklı görevlerde özelleşmiş birimler de bulunabilir. Ancak
bir mikro işlemcinin ana işlevlerini yerine getirebilmesi için temel birimler
yeterlidir.
Bir mikro işlemci çoğunlukla kendisine bağlanacak bazı entegre devrelerle
birlikte çalışmak için tasarlanır. Örneğin mikro işlemcinin çalıştıracağı
programın ve kullanacağı verinin yüklü olduğu, yazılabilir ve okunabilir, hızlı
bir bellek birimi (genellikle RAM), ve sisteme güç verilmezken programı
saklayabilecek bir bellek birimi (genellikle bir çeşit ROM) mikro işlemcilerin
olmazsa olmaz çevre birimleridir. Bunun dışında, mikro işlemciler genellikle
elektronik devrelerde kontrol mekanizması görevinde bulundukları için kontrol
edecekleri cihazlarla da bağlantı kurmaları gerekecektir.
Mikro işlemciler genellikle elektronik sistemlerin ‘beynini’ oluştururlar ve
sistemdeki girdi cihazlarından aldıkları bilgi ve komutlara göre diğer cihazları
kontrol ederler. Örneğin bir otomatik meşrubat makinasında bir mikro işlemci
atılan paranın yeterli olup olmadığını kontrol eder. Yeterli miktara
ulaşıldığında “para atınız” uyarı ışığını söndürür ve kullanıcı bir seçim
yaptığında doğru marka meşrubatla birlikte paranın üstünü kullanıcıya geri verir.
Bu arada farklı meşrubat türlerinin makinada bulunup bulunmamasına göre
göstergedeki ışıkları ayarlamak ve kullanıcı makinada bulunmayan bir seçim
yaptığında işlemi reddetmek zorundadır. Bu senaryoda bozuk para haznesinden
gelen bilgiler, kullanıcının meşrubat türü seçimi ve makinadaki farklı meşrubat
kompartımanlarının boş olup olmadığı bilgileri mikro işlemcinin girdileridir.
Mikro işlemci bu girdilere göre davranarak çıktılarını oluşturur; örneğin eğer
kullanıcının attığı para yeterli miktardaysa seçilen meşrubatın kullanıcıya
verilmesini sağlar.
Bir mikro işlemci her hangi bir girdi olmadan kendi başına da bazı işlevleri
yerine getirebilir. Örneğin az önce bahsettiğimiz meşrubat makinesinin yeni
modelinin çıktığını düşünelim. Yeni model makinalar her gün sabaha karşı üçte
telefon hattından belli bir bilgisayara bağlanıp o gün hangi türden kaç tane
meşrubat satıldığını bildirebiliyor olsun. Bu durumda sistemdeki mikro işlemci
önceki görevlerine ek olarak gün boyunca satılan ürün miktarını bir bellekte
saklayıp sistemdeki saati devamlı kontrol ederek doğru an geldiğinde bir modem
üzerinden merkeze bağlanıp haberleşmeyi yürütme yükümlülüğünde olacaktır.
Mikro işlemcilerin bu kadar çeşitli işlevleri yerine getirebilmelerini sağlayan
şey programlanabilir olmalarıdır. Bir mikro işlemcinin aldığı girdileri nasıl
değerlendirip onlara nasıl karşılık vereceğini onu programlayarak ayarlarız.
Belleğin içinde bilgi birler ve sıfırlar halinde saklanır. Her tür bilgi birler
ve sıfırlar halinde saklanmasına rağmen bu birler ve sıfırlar farklı şekillerde
yorumlanabilirler. Örneğin bazı bir-sıfır dizileri harfleri, bazıları sayıları
ifade eder. Bazı diziler daha farklı anlamlara sahip olurlar; diğer diziler
üzerinde yapılacak işlemleri tanımlarlar. Bu farklı diziler komutlardır.
Bir program komutlardan ve veriden oluşur. Komutlar çok çeşitli olabilir.
Örneğin toplama, çıkarma ve çarpma için, mantıksal değil, ve, veya işlemleri
için, verinin bellekte bir yerden başka bir yere taşınması için, çeşitli girdi
çıktı işlevlerini yönetmek için ve başka bir çok işlem için komutlar vardır.
Mikro işlemcinin görevi bellekte tutulan komutları okuyup, ne anlama
geldiklerini çözümleyip, komutlarda yazılı işlemleri yapmaktır. Mikro işlemci,
her komutu oluşturan bir-sıfır dizisinin ne anlama geldiğini ‘bilir’; her mikro
işlemci komutlarına göre imal edilir. Ayrıca, mikro işlemcinin yapısı komutlarda
kodlanmış bütün işlemleri yapmasına olanak sağlayacak biçimde tasarlanmıştır.
Mikro işlemcinin kontrol birimi sıradaki komutu okumakla, komutu çözümlemekle ve
komutta kodlanmış işlemi yapacak birimleri aktive etmekle yükümlüdür. Ayrıca
programın akışından da sorumludur. Sıradaki komutun bellekte nerede olduğunu
bilir, ve programın akışını değiştirmeye yönelik bir komutla karşılaştığında
gerekli değişikliği yapar. Aritmetik-mantık birimi çeşitli sayılar üzerinde
matematiksel (toplama, çarpma) ve mantıksal (değil, ve, veya) işlemler yapar.
Girdi çıktı birimi mikro işlemcinin giriş ve çıkış bağlantılarından sorumludur,
girdi ve çıktıları yazar ve okur. Mikro işlemcideki küçük bellek bütün bu
aritmetik, mantıksal ve girdi-çıktı işlemleri sırasında geçici bir hafıza olarak
kullanılır. Bütün birimler kontrol biriminin kumandasında işlemcinin dışındaki
bellekte yazılı programı uygularlar.
Örneğin kontrol birimi sıradaki komutu bellekten okuyup çözümlediğinde komutun
“bellekteki iki sayıyı topla, sonucu ikincinin üzerine yaz” olduğu ortaya
çıkarsa bellekteki iki sayıyı toplaması için aritmetik-mantık birimini aktive
eder, ve sonucu ikinci sayının üzerine yazar. Sonraki komutu okuyup çözümler, ve
o komutun da “birinci çıktı kapısının değerini 1 yap” olduğunu görürse
girdi-çıktı biriminin ilgili kapıyı 1 değerine getirmesini sağlar. Daha karışık
komutlar da mümkündür; örneğin sıradaki komut “birinci girdi kapısının değeri 0
ise sıradaki komutu A adresinden oku” olabilir. Böyle bir durumda kontrol birimi
girdi-çıktı komutu aracılığıyla birinci girdi kapısının değerini kontrol eder ve
0 olduğunu görürse sıradaki komutu A adresinden okur. Böyle bir komut programın
akışını değiştirecektir.
Program akışına etki eden komutlar karar verme mekanizması olarak kullanılır.
Yukarıdaki otomatik meşrubat makinası örneğine geri dönersek, hayali bir komut
“eğer para yeterliyse uyarı ışığını söndür ve kullanıcının seçim yapmasını bekle”
şeklinde olabilirdi. Daha gerçekçi bir komut ise şöyle olacaktır: “Eğer
kullanıcının attığı para miktarını sakladığın bellekteki sayı 500.000’den
büyükse ikinci çıktı kapısının değerini 0 yap.” Ve hemen sonraki komut da “Eğer
kullanıcının attığı para miktarını sakladığın bellekteki sayı 500.000’den
büyükse bir sonraki komutu BEKLEME KOMUTU adresinden oku.” Bu örnekte mikro
işlemcinin kullanıcının şimdiye kadar attığı para miktarını bellekte sakladığı
ve her yeni atılan paranın miktarını bu miktara eklediği, ayrıca bellekte
BEKLEME KOMUTU adresinde kullanıcının seçimini beklemeyle ilgili işlemleri yapan
komutların bulunduğu düşünülmüştür, ki gerçek hayattaki bir meşrubat makinesinde
de durum bundan pek farklı olmayacaktır.
Yukarıda verilen örneklerdeki komutlar bir araya getirilerek çok karmaşık
programlar yazılabilir. Örnek isterseniz bilgisayarınıza bakabilirsiniz. Şu anda
bilgisayar ekranında gördüğünüz her şey, eğer mp3 dinliyorsanız duyduğunuz müzik,
internet bağlantınızdan geçen veri, bilgisayar oyunları, hepsi temelde bu tür
komutlar kullanılarak yazılan programlardır. Sadece bilgisayarınızdaki
işlemciler daha hızlıdır, girdi-çıktı kapıları daha fazladır, ve etraflarında
ses kartı, ekran kartı gibi çok sayıda güçlü, özelleşmiş çevre birimi vardır, ve
ondalık sayı işlemleri gibi biraz daha karmaşık işlemler yapabilirler.
Mikro işlemcilerin özelliklerini anlatırken ‘çoğunlukla’, ‘genellikle’ gibi
yuvarlak ifadeler kullandık, çünkü günümüzde çok çeşitli mikro işlemciler
üretilmektedir. Bu çeşitlilik yüzünden tüm mikro işlemcileri genellemelerle
tarif etmek yanlış olacaktır. Bazı mikro işlemciler ihtiyaç duydukları tüm
belleği üzerlerinde taşırlar, bazıları matematik dört işlem yapmaktan başka
karmaşık sinyal işleme görevlerini de yerine getirebilirler. Bazıları analog ve
sayısal çevre birimlerinden bir kısmını üzerlerinde taşırlar; hatta bu çevre
birimlerini yeniden programlayıp işlevlerini değiştirebilenler bile vardır.
Artık mikro işlemciler her yerdedir, programlanabilir olmaları nedeniyle
hayatımızın bir parçası olmuşlardır.
Yağız Yaşaroğlu