Bu Blogda Ara

15 Mayıs 2010 Cumartesi

Intel 8085 Mikroişlemci / Başlangıç

Herkese merhaba,
Bu yazımda Intel firması tarafından geliştirilmiş olan 8085 mikroişlemcisi yapısı, çalışma prensibi ve programlanması ile ilgili genel bilgi vereceğim. Başlıkta da belirttiğim gibi bu mikroişlemciler ve micro programlama konusuna girişimin imgesidir. Öncelikle bu basit mikroişlemciyi inceleyip programlamasına değineceğim. Daha sonra yine Intel firmasının 8051 mikrodenetleyicisinden bahsedeceğim. Daha sonraki yazılarımda sayısal sistemleri en başından alıp bir mikroişlemci nasıl çalıştığını anlatacağım. Daha sonra kendi mikroişlemcimi tasarlayacağım. Umarım atlamadan anlaşır bir biçimde anlatabilirim. Siz de üzerinde çalışıp kendi mikroişlemcinizi geliştirebilirsiniz.

Intel 8085 8-bit Microprocessor


Her konuda olduğu gibi bu konuda da tarihsel bilgilerle vaktinizi çalmak gibi bir niyetim yok. Merak edenler varsa http://en.wikipedia.org/wiki/8085 adresinden gerekli bilgileri alabilir. Programlama kısmına geçmeden önce işlemcinin yapısı hakkında bilgi vermek doğru olacaktır. Başlamadan önce belirtmeliyim. Bu yazımda sadece mikroişlemcinin yapısı ve programlamasından bahsedeceğim. Elektronik bir devrede nasıl kullanıldığından vb. diğer işlemlerden bahsetmeyeceğim. Genel olarak soyut sorunlar üzerinden yola çıkacağız.


Yukarıdaki şema mikroişlemcinin iç yapısını göstermektedir. Sırayla açıklayalım...
  • 8 bit veri yolu
İşlemci birimleri arası haberleşmeyi sağlayan ortak kanal olarak tanımlanabilir. Bir seferde 8-bit veri taşıyabilir ve yalnızca tek bir birim kullanabilir. Bu birim kanala veriyi bırakır, veri yolunun bağlı olduğu tüm birimlere veri iletiri fakat yalnızca o anda ona ihtiyacı olan birim o veriyi kullanır. Tıpkı Ethernet (IEEE 802.3) protokolünde olduğu gibi. Burada farklı bir durum olarak veriyi kullanacak birimin aktif diğerlerinin pasif olamasını işlemci ayarlamaktadır. Toparlamak gerekirse, bir broadcast (yayın) tipi iletişim var fakat bu yayına yalnızca ilgili birim aldırış ediyor.
  • ALU (Arithmetic Logic Unit)
Diğer bir değişle Ardışıl Mantık Birimi. Bu birimde tüm mantıksak ve aritmetik işlemler yapılmaktadır. Toplama, çıkarma, karşılaştırma vb.
  • Accumulator (Akümülatör)
Temel kaydedici olarak tanımlasam çok yanlış olmaz sanırım. Tüm aritmetik işlem sonuçları bu kaydedicide saklanmaktadır. 8-bit veri saklayabilmektedir. Bir çok işlemde bu kaydedici kullanılmaktadır. Yeri geldikçe detaylandıracağım.
  • Instruction Register
Bu saklayıcı mikroişlemcinin işleyeceği komutu tutar. 8 bitliktir. Bu mikroişlemcinin 8 bit kelime işlemci olduğunu belirtmiştik. Bir seferde bir tek komutu işleyebilmektedir ve bu komut 8 bit (1 byte) olmak zorundadır. Zaten hafıza birimimizin (RAM / ROM) her bir gözü 1 byte boyutundadır.
  • Program Counter
İşlemcinin bir sonraki işleyeceği komutun adresini saklayan kaydedicidir. Boyutu 16 bittir. Buradan şu sonucu çıkartabiliriz, 8085 mikroişlemcisi 16 bit ile adreslenebilecek kadar hafıza alanında kod koşturabilmektedir. 2^16 ~= 64 kb hafıza alanı.
  • Stack Pointer
Yığın hafıza bölgesinin adresini tutar. Buraya FILO (First In Last Out - İlk Giren Son Çıkar) mantığıyla veri ekleyip çıkartabiliyoruz. Boyut 16 bit.
  • Flag Register
Bazı komutlar sonrasında durum kontrolü yapılması gerekmektedir. Örneğin bir toplama işleminde sonuç saklayıcının boyutunu aşabilir. Bu durumda işlemci kilitlenmez işleme devam eder, fakat programcı bu durumdan haberdar olması gerekmektedir. Programcı böyle bir durumun gerçekleşip gerçekleşmediğini Bayrak Saklayıcısındaki taşma bayrağının 1 - 0 durumunu inceleyerek anlayabilir. Bayraklardan kısaca bahsetmek gerekirse;
Sıfır Bayrağı = çıkarma işleminin sonucu 0 ise,
Taşma Bayrağı = toplama işlemi saklayıcıya sığmıyorsa, ya da çıkarılan çıkandan küçükse,
İşaret Bayrağı = Akümülatördeki sayı negatif ise (yani 8. bit 1 ise)
bu bayraklar 1 değerini alır. Aksi durumda 0 değerindelerdir.

Yazıma burada ara veriyorum. Bir sonraki yazımda kaldığım yerden tanıtmaya devam edeceğim. Daha sonra programlama kısmına geçeceğiz. Vaktim olursa bellek organizasyonu konusuna da değineceğim.
Görüşmek üzere...

Hiç yorum yok: