Mikroişlemci I #zincirikırma

Herkese merhaba, kanalıma hoşgeldiniz arkadaşl.............durrr napıyorum ben :) Bilgilendirici bir yazı olması dileğiyle.
Genel olarak gömülü sistemler ne yapar, nerelerde kullanılır, ne amaçla kullanılır gibi soruları önce ki yazıda belirttiğime göre artık mikroişlemci nedir, içinde ne vardır, nasıl oluyorda yazdığımız kodlar bunda çalışıyor bunları inceleyelim.

Kodu istediğimiz dilde yazıyoruz derleyip mikrodenetleyiciye atıyoruz. Peki ya mikrodenetleyici yazdığım kodu nasıl algılıyor?
Öncelikle bilmemiz gereken şey mikrodenetleyici makine dilini okuyabiliyor. Peki ya nedir mu makine dili? 1'ler ve 0'lardan oluşan mikrodenetleyicinin bunların anlamalı kombinasyonlarını uyguladığı dildir. 100011 00011 01000 00000 00001 000100 örnek olarak verilebilir. C dilinde yazdığım kodu bazı derleyiciler sayesinde derleyebiliyorum. Yükle işlemini yaptığımızda derleyici bu kodu makine diline çevirip flash belleğe .hex uzantılı şekilde kaydediyor ve bu komutları mikrodenetleyici yapıyor. Peki bunu nasıl yapıyor dersek opcode (operation code) ile yapıyor. Opcode mikrodenetleyiciye anlık olarak ne yapması gerektiğini söylüyor. Opcode içinde adres ve datayı tutabilmektedir ve bunlardan hangisiyse bunu işler. Opcode'dan sonra işlemci sırada ki hafızayı okur ve datayı ya da adresi çekmek için opcode ile bu data ya da adres birlikte bir makine komutu olur.

Adres: erişilecek hafıza yerinin adresi
Data: hafızadan okunacak ya da hafızaya yazılacak bilgi


Program Counter: Bir sonraki okunacak komutun bellek adresini tutan register(hafıza)dır. Normal olarak program counter otomatik olarak artırılır. Fakat bir sonra ki adres yerine başka bir adrese gitmesi yani atla(JUMP) gibi bir komut kullanılmışsa hedeflenen adresi bir sonra ki adres olarak yükler. Bir diğer seçenekse altprograma(atıyorum farklı registerlara kaydedilmiş bir fonksiyon delay gibi) girmesidir. Bu durumda son kaldığı yere Stack registera atar ve altprogramı bitirdikten sonra tekrar Stack'den okuyup kaldığı yerden devam eder.

Aritmetik ve Lojik Birimi(ALU): Toplama çıkarma gibi aritmetik işlemler ve AND, OR, XOR gibi lojik işlemlerin yapıldığı birimdir.

Controller: Gerçekleşecek komutların uygulanması için gerekli sinyallerin üretildiği finite state machine'dir.

Register: Datanın  bulunduğu aydetme birimidir. Geçici hızlı kaydedicidir.

Accumulator: Anlık aritmetik ve lojik sonuçlarının tutulduğu registerdır. Bu nedenle ALU ile ilişkisi vardır.

Index Register: İşlemci öncelikle hafızadaki datanın adres bilgisini index register'a yükler. Sonra index register'ı hedeflenen data bölgesine erişmek için hafıza adresi kaynağı olarak kullanır.

Bir sonra ki yazıda mikroişlemciye adresleme modları ile devam edeceğim. Okuduğunuz için teşekkür ederim :)

Yorumlar

Bu blogdaki popüler yayınlar

Sinyal Jeneratörü Nedir? (Function generator)

Arduino'dan Python'a veri aktarma

#12 Arduino ile Step Motor Kontrolü