Pamukkale Üniversitesi
PAMUKKALE ÜNİVERSİTESİ
MÜHENDİSLİK FAKÜLTESİ ELEKTRİK-ELEKTRONİK MÜHENDİSLİĞİ BÖLÜMÜ
DERS : MİKROİŞLEMCİLER ( PROJE-2 )
KONU : Z - 80
HAZIRLAYAN : Turgay ERDOÄžAN
97227034 Elektrik-Elektronik mühendisliği
4. Sınıf ( N.Ö )
KONTROL EDEN : Yrd. Doç. Dr. Ahmet ÖZEK
ZİLOG
Z80 – CPU
Transistörün icadından sonra, yarıiletken teknolojisinin ilerlemesiyle, tek çip üzerine çok fazla sayıda transistör yerleştirilmesine imkan tanıyan, LSI, VLSI, SLSI teknikleri ile bir çip üzerine yüz binlerce transistör yerleştirmek mümkün olmuştur.
Amerikan İntel ÅŸirketi tarafından geliÅŸtirilen, İntel 4004, öncelikle hesap makinelerinde kullanılmış olan, ilk 4-bitlik programlanabilir yarıiletken elemandır. Daha sonra, aynı ÅŸirket, 8-bitlik mikroiÅŸlemci olan İntel 8008’i geliÅŸtirdi. 1970’lerin ortalarına gelindiÄŸinde ise yine İntel ÅŸirketi 8080 mikroiÅŸlemcisini geliÅŸtirdi ve 8080’i CPU olarak kullanan ilk küçük bilgisayarlar ortaya çıktı ve bu yapılara mikrobilgisayar ismi verildi. Takip eden birkaç yıl içinde, 8-bitlik veri yoluna sahip, Motorola 6800, Zilog Z-80 ve İntel 8085 mikroiÅŸlemcileri geliÅŸtirildi. Daha sonraki yıllarda, geliÅŸen yarıiletken teknolojisi sayesinde, 16-bit, 32-bit ve 64-bitlik veri yollarına sahip, bellek kapasitesi daha geniÅŸ olan ve çok daha yüksek hızlarda çalışabilen mikroiÅŸlemciler geliÅŸtirilmiÅŸtir.
Zilog Z-80 mikroişlemcisi 1970 yılında Zilog firmasının ürettiği, 8-bitlik veri yoluna sahip bir mikroişlemcidir. Zilog Z80 üretim hattı, mikrobilgisayar parçaları, geliştirme sistemleri ve destekleme yazılımının olduğu tam bir settir. Z80 mikrobilgisayar parça seti yüksek performanslı mikrobilgisayar sistemlerini başka mantık elemanlarına gerek kalmadan ve en az sayıda ucuz ve standart bellek elemanları kullanarak imal etmek için gerekli bütün devreleri kapsamaktadır.
Z80 ve Z80A CPU’ları rakipsiz hesaplama gücüne sahip üçüncü nesil tek yongalı mikroiÅŸlemcilerdir. Hesaplama gücündeki artışlar ikinci nesil mikroiÅŸlemcilerle karşılaÅŸtırıldıklarında daha yüksek sistem performansına ve bellek kullanımının daha verimli olmasına yol açar. İlave olarak tek gerilim gereksinimlerinden dolayı ve bütün çıkış sinyalleri standart bellek veya çevrebirim devrelerini kontrol etmek için tamamen kodlanabildiÄŸi ve zamanlanabildiÄŸi için, Z80 ve Z80A CPU’ları sistemlerin içine kolaylıkla adapte edilebilir. Devre N-kanallı, iyon çoÄŸaltılmış, silikon kapılı MOS süreci kullanarak gerçekleÅŸtirilmiÅŸtir ( Teknoloji : NMOS ).
ÖZELLİKLERİ ·Tek yonga, N-kanal silikon kapı CPU
·Veri sözcük uzunluğu : 8-bit
·Adres yolu uzunluğu : 16-bit
·Doğrudan adresleme aralığı : 65536 sözcük ( 1-bayt )
·Komut sözcük uzunluÄŸu : 1’den 3 bayt’a kadar
·Temel komut sayısı : 158
·En kısa komut/süre ( kaydediciyi kaydediciye yükleme ) : 1ms
·En uzun komut/süre ( IX+d adresindeki biti kurma ) : 5.75 ms
·Saat frekansı ( min / max ) : 5 kHz / 4.5 MHz
·Saat fazı / gerilim salınımı : 1 / 5 V
·Özel G/Ç denetim hatları : 5
·Paket : 40-bacaklı DIP
·Güç gereksinimleri : 5V / 90 mA ( Z80A ) ; 5V / 60 mA ( Z80 )
·17 dahili kaydedici
·158 komut-tam yazılım uyumluluğu ( komutlar; dizinli, bit ve göreceli gibi daha faydalı adresleme modları ile 4, 8 ve 16-bitlik işlemleri içerir.)
·Hızlı kesme cevabının 3 modu ve bir maskelenemez kesme
·Hemen hemen hiç harici devre kullanmadan standart hızlı statik ve dinamik belleklerle doğrudan bağlanabilme
·Tek 5 V DC kaynak ve tek-fazlı 5 V saat
·4, 8 veya 16-bitlik işlemlerde diğer tek yonga mikroişlemcilerden daha iyidir.
·Bütün bacaklar TTL uyumlu
·İçinde dinamik RAM tazeleme devresi bulunmaktadır.
Osilatör devresi hariç bütün zamanlama üretimleri iÅŸlemci yongasının içerisindedir ve adres yolu öyle yapılmıştır ki dinamik RAM’ı tazelemek için gerekli olan tazeleme adresi, adres yolunun alt yarısında ortaya çıkar. En küçük sistem; iÅŸlemci, bir saat kaynağı ve bir bellekten oluÅŸur.
Toplam 158 komutta, 21 adet 8-bitlik yükleme komutları, 20 adet 16-bitlik yükleme komutları, 14 adet değiş-tokuş, blok aktarma ve arama komutları, 17 adet 8-bitlik aritmetik ve mantık komutları, 11 adet 16-bitlik aritmetik ve mantık işlemleri, 12 adet genel amaçlı aritmetik komutları, 16 adet kaydırma ve döndürme işlevleri, 9 adet bit kurma, sıfırlama ve test komutları, 11 adet atlama komutları, 7 adet çağırma/dönüş komutları ve 12 adet G/Ç işlemleri bulunur.
Yazılım desteği, yeri değiştirilebilir kodlar üreten bir makro-çevirici, program modüllerini birbirine bağlayan ve mutlak adresli yükleme modülü üreten bir bağlayıcıyı ve PL/M, PL/Z ve Basic gibi bazı yüksek düzeyli dilleri kapsar. Ayrıca bir metin düzenleyici, bir dosya bakımı ve disket tabanlı program geliştirme sistemini destekleyen hata ayıklama altyordamı mevcuttur.
DONANIM
MODEL TANIMI Z80 MİB ( Ticari ) Z80 MİB ( Askeri ) Z80A 8-bit ticari Z80-PIO 2-Port Paralel G/Ç Z80A-PIO Yüksek hızlı versiyon Z80-CTC 4 adet sayıcı / zamanlayıcı Z80A-CTC Yüksek hızlı versiyon Z80-DMA İki port doğrudan bellek erişimi Z80A-DMA Yüksek hızlı versiyon Z80-SIO İki tam-dubleks seri G/Ç kanalları Z80A-SIO Yüksek hızlı versiyon MK3886 RAM / zamanlayıcı ve G/Ç ( Mostek )
Z80 için donanım desteÄŸi, devre-içi emülasyon kapasiteli geliÅŸtirme sistemi, gerçek zaman hata ayıklama ve program saklama modüllerini içerir. Sistem iki disk iÅŸletim sisteme sahiptir ve RAM’i 64 Kbayt’a kadar kullanmak ve terminal ile yazıcılara bazı arabirim seçenekleri sunmak için geniÅŸletilebilir.
Şekil, CPU nun bir blok diyagramıdır.
[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image002.gif[/IMG]
Şekil, programcının erişebileceği 208 bitlik okuma / yazma belleğini içeren dahili kaydedici yapısını göstermektedir.
ANA KAYDEDİCİ TAKIMI
YEDEK KAYDEDİCİ TAKIMI
AKÜMÜLATÖR A
BAYRAKLAR F
AKÜMÜLATÖR A’
BAYRAKLAR F’
GENEL
AMAÇLI
KAYDEDİCİLER
B
C B’ C’ D
E D’ E’ H
L H’ L’
KESME VEKTÖRÜ I
BELLEK TAZELEME R
ÖZEL AMAÇLI KAYDEDİCİLER IX İNDEKS KAYDEDİCİLERİ IY İNDEKS KAYDEDİCİLERİ SP YIĞIN İŞARETÇİSİ PC PROGRAM SAYICISI Z80 CPU, programcı tarafından erişilmesi mümkün olan 208-bitlik R / W bellek içerir. Bu bellek, 18 tane 8-bitlik kaydedici ve 4 tane 16-bitlik kaydedici halinde düzenlenmiştir. Bu kaydediciler, 8-bitlik kaydedici olarak tek başlarına ya da 16-bitlik kaydedici olarak çiftler halinde kullanılabilecek olan 6 adet genel amaçlı kaydediciden oluşan iki takımı ( ana ve yedek kaydedici takımları ) içerir. Programcı bir grup değiştirme deyimini kullanarak ana ya da yedek kaydediciler takımından birine erişebilir. Yedek kaydedici takım, işlemlerin ön plan / arka plan modunda yapılmasına izin verir ya da çok hızlı kesme cevabı için kullanılabilir.
Genel amaçlı saklayıcılar; 8-bitlik saklayıcı olarak tek başlarına ( A,B,C,D,E,H,L ) veya 16-bitlik saklayıcı olarak çiftler halinde ( BC, DE, HL ) kullanılır.
Her CPU, çok seviyeli kesmelere, sınırsız iç içe yordamlara ve birçok veri tipi işlemesinin basitleşmesine izin veren 16-bitlik yığın göstericiye sahiptir. İki 16-bitlik dizin kaydedici, tablolu veri işlemeye ve yeniden yerleştirilebilir kodun kolay gerçekleştirilmesine imkan verir. Tazeleme kaydedici, harici dinamik belleklerin otomatik ve tamamen şeffaf olarak tazelenmesini sağlar. I kaydedici, bir güçlü kesme cevap modunda bir kesme servisi adres tablosunu gösteren göstericinin üst 8-bitini oluşturmak için kullanılır, göstericinin alt 8-biti kesmeyi yapan eleman tarafından sağlanır. Daha sonra bu servis adresine bir dolaylı çağırma yapılır.
Ayrıca, akümülatör ve bayrak kaydedicilerden oluşan iki takım daha mevcuttur. Tüm Z80 kaydedicileri statik RAM kullanılarak gerçeklenmiştir.
ÖZEL AMAÇLI KAYDEDİCİLER
1.PROGRAM SAYICISI ( PC – Program counter )
Program sayıcısı, 16 bitlik kaydedicidir ve bellekten getirilecek olan yürürlükteki komutun 16-bitlik adresini tutar. Böylece mikroiÅŸlemci o andaki komutu bitirdiÄŸi zaman, PC kaydedici bir sonraki komutun nerede olduÄŸunu gösterir. PC, içeriÄŸinin adres hatlarına aktarılmasından sonra kontrol birimi tarafından otomatik olarak artırılır veya azaltılır. Herhangi bir program atlama komutu yürütüldüğünde, artırıcı aşılarak, yeni deÄŸer PC’ye otomatik olarak yerleÅŸtirilir.
2.YIĞIN İŞARETÇİSİ ( SP- Stack Pointer ) KAYDEDİCİSİ
MikroiÅŸlemci içerisinde geçici veri saklamak, bazı komutlarla alt programlara dallanmak ( Örnek: Push, Pop, Call vs. ) gerekirse RAM üzerinde bulunan Stach ( Yığın ) bölgesinden faydalanılır. Bu bellek, yığın bellek ( stach memory ) olarak adlandırılır. Yığın iÅŸaretçisi, dış sistem RAM belleÄŸindeki herhangi bir yere yerleÅŸtirilmiÅŸ olan bir yığının yürürlükteki tepesinin 16-bitlik adresini tutar. Bu nedenle 64 K’lık belleÄŸin herhangi bir bölgesini adresleyebilir. İkinci olarak, yığının taban adresi ( Base adress ) bellekte herhangi bir yere sabitlenebilir ve Z80 yığını taban adresten aÅŸağıya doÄŸru büyür. Dış yığın belleÄŸi, son girenin ilk çıktığı ( LIFO- Last in / First out ) bir dosya gibi düzenlenir. PUSH ve POP komutlarının yürütülmesi yoluyla, yığına belirli MİB kaydedicilerinden veri itilebilir ya da yığından belirli MİB kaydedicilerine veri çekilebilir. Yığından çekilen veri, her zaman yığına daha önce basılmış olan son veridir. Yığın, çok düzeyli kesmelerin kolayca gerçeklenmesini, sınırsız sayıda alt yordamın iç içe geçirilebilmesini ve birçok veri iÅŸleme türlerinin basitleÅŸtirilmesini saÄŸlar.
3.İNDEKS KAYDEDİCİLERİ ( IX ve IY )
Birbirinden bağımsız iki adet indeks kaydedicisi, indekslenmiÅŸ adresleme modlarında kullanılan 16-bitlik bir taban adresini tutar. 16-bitlik bu kaydediciler 64K’dan daha büyük bellekler üzerinde indekslenmiÅŸ adreslemeye izin verir. Bu adresleme modunda indeks kaydedicilerinden biri, verinin bellekte saklanacağı ya da geri alınacağı bölgeyi iÅŸaret etmek için bir taban olarak kullanılır. Bu tabandan itibaren olan kaymayı belirtmek için, indekslenmiÅŸ komutlarda ilave bir bayt içerilir. Bu kayma, ikiye tümleyeni halindeki iÅŸaretli bir tamsayı olarak belirtilir. Bu adresleme modu, özellikle veri tablolarının kullanıldığı birçok program türlerini büyük ölçüde basitleÅŸtirir. İki 16-bitlik dizin kaydedici, tablolu veri iÅŸlemeye ve yeniden yerleÅŸtirilebilir kodun kolay gerçekleÅŸtirilmesine imkan verir.
İndekslenmiş adreslemenin ( indexed addressing ) temel amacı bellekteki tablo halinde olan verilerin işlenmesine imkan sağlamasıdır. İndekslenmiş komut hem indeks veya yer değiştirme ( displacement ) hem de adresi belirtir. Yer değiştirme adrese eklenerek son adres elde edilir.
Z80’de indekslenmiÅŸ adreslemeye ait örnek;
LD A, ( IX + d ) ÅŸeklindedir. Bu komut IX + d ile verilen mutlak adresin içeriÄŸini akümülatöre yükler. Burada d; 1-baytlık iÅŸaretli yer deÄŸiÅŸtirmeyi göstermektedir. ÖrneÄŸin; eÄŸer IX, D000H sayısını içeriyorsa ve d = 40H ise, yukarıdaki komut D040H adresli yerin içeriÄŸini akümülatöre yükleyecektir. Z80’de 1-baytlık yer deÄŸiÅŸtirme 256 sözcüğe kadar olan tabloların adreslenmesine izin verir, fakat kullanılan iÅŸaretli yer deÄŸiÅŸtirme IX kaydedici tarafından verilen adresin aÅŸağısındaki 127 ile yukarısındaki 127 yere ulaşılmasına olanak saÄŸlar. IX ( ve IY ) artırılıp eksiltilebildiÄŸinden, Z80’nin tüm 64Kbaytlık belleÄŸi indekslenmiÅŸ adresleme ile kolayca adreslenebilir.
4.KESME SAYFASI ADRES KAYDEDİCİSİ ( I- İnterrupt page address register )
Kesmeler, bir mikrobilgisayar sistemini, ona bağlı çevresel birimlere senkronize etmek ( eş zamanlamak ) için kullanılan sinyallerdir. ( mikroişlemci ile çevre birimleri arasındaki hız farklılıklarından dolayı ). Z80-MİB, herhangi bir kesmeye cevap olarak herhangi bir bellek gözüne dolaylı bir çağrının gerçekleştirilebileceği bir modda çalıştırılabilir. Kesme sayfası adres kaydedicisi I, bir kesme meydana geldiğinde program kontrolünün geçebileceği adresi oluşturmak için kullanılır. Bu amaçla I kaydedicisi, dolaylı adresin üst sıralı 8-bitini saklamak için kullanılır, adresin alt 8-bitini ise kesmeyi yapan birim sağlar. Bu özellik, kesme yordamlarının bellekteki herhangi bir yere dinamik olarak yerleştirilebilmesini sağlar. Ayrıca yordama erişim süresinin de mutlak minimum değerine indirilmesini sağlar.
Kesme alındı sırası ve kesme hizmet yordamı, mikroişlemcinin bir çevre birimin gereksinimine derhal cevap verebilmesini sağlar. Fakat bu gereksinim karşılandıktan sonra kesilen program sırası nasıl devam ettirilecektir?
Pek çok mikroişlemcinin benimsediği teknik, tüm kaydedicilerin ve program sayıcısının içeriğini kesme alındı çevrimi sırasında yığında saklamasıdır. Kesme hizmet yordamının sonunda, tüm kaydediciler ve program sayıcısı, değerleri yığından okunarak, kesme olmadan önceki değerlerine geri alınırlar.
5.BELLEK TAZELEME KAYDEDİCİSİ ( R- Refresh counter register )
Z80-MİB, statik belleklerle aynı kolaylıkla kullanılan dinamik bellekleri kullanıma açmak için bir bellek tazeleme sayıcısı içermektedir. Bu 7-bitlik kaydedici, her komut getirme saykılından sonra otomatik olarak artırılır. R, her mikroiÅŸlemci çevrimi sırasında bir artırılır. MİB, getirilen komutun kodunu çözerken ve yürütürken tazeleme sayıcısındaki veri, bir tazeleme denetim sinyali ile birlikte adres yolunun alt-yarısı üzerinden dışarıya gönderilir. Bu tazeleme modu, programcıya bütünüyle açıktır ve MİB’nin çalışmasını yavaÅŸlatmaz. Programcı R kaydedicisini, test etme amaçları için yükleyebilir, fakat bu kaydedici normal olarak programcı tarafından kullanılmaz. R kaydedicisinin amacı dinamik belleklerin otomatik olarak tazelenmesine izin vermesidir.
[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image003.gif[/IMG]
Dinamik RAM gözü ( hücresi ) minimum sayıda aktif aygıt gerektiren ve bekleme modunda çok az güç harcayan en basit haldeki MOS belleÄŸidir. Bu çeÅŸit göz kullanılarak çok büyük bellekler tek bir entegre devre üzerinde imal edilebilir. Dinamik RAM’ın en önemli dezavantajı Cs kapasitesinin T1’in kaçak Rc direnci üzerinden boÅŸalmasıdır.
Cs = 0.2pF, Rc = Rin = 1010 W tipik deÄŸerleri yaklaşık 2 ms’lik bir boÅŸalma zaman sabiti vermektedir. Bunun sonucu olarak dinamik bellek gözleri her 2 ms’de bir tazelenmelidir. (yani veri yeniden yazılmalıdır). Aksi taktirde depo edilen veri kaybedilecektir.
Sistem saatinden sürülen tazeleme sayaçları tek tek her bellek adresini dolaşır ve bellek girişinin yetkisiz kılındığı okuma / tazeleme çevrimini yerine getirir. Bu işlem genellikle ana işlemcinin bir komutun kodunu çözdüğü sırada yapılır. Böylece tazeleme işlemi ana işlemciye şeffaf durumdadır ve tazeleme için hiç işlemci zamanı kaybedilmez.
Z80 dinamik RAM’larla kolay bir baÄŸdaÅŸtırma saÄŸlamak için, bir iç tazeleme kaydedicisi ile ( R ) donatılmıştır. MikroiÅŸlemci bir komut kodunu çözüyorken, tazeleme kaydedicinin içeriÄŸi adres taşıtına konur ve tazeleme hattı ( RFSH hattı ) harekete geçirilir. Tazeleme kaydedicisi ( refresh register ) her getir-kodu çöz-yürüt ( fetch-decode-execute ) çevrimi sırasında otomatik olarak artırılır; bu ise mikroiÅŸlemciye ÅŸeffaf olan otomatik bir tazeleme sırası saÄŸlar.
6.AKÜMÜLATÖR ve BAYRAK KAYDEDİCİLERİ ( Flags Register )
Z80-MİB, birbirinden bağımsız 2 adet 8-bitlik akümülatörü ve bunlarla birleştirilmiş 8-bitlik bayrak kaydedicilerini içermektedir. Bayrak kaydedicisi 8 ya da 16-bitlik işlemler için, örneğin bir işlemin sonucunun sıfıra eşit olup olmadığının belirtilmesi gibi özel koşulları gösterirken, akümülatör 8-bitlik aritmetik ya da mantıksal işlemlerin sonuçlarını tutar. Programcı, çalışmak istediği akümülatör ve bayrak çiftini tek bir değiş-tokuş komutu ile seçer. Bu suretle, programcının çiftlerden herhangi biri ile kolaylıkla çalışması mümkündür.
Tüm mikroişlemciler sistemin veya işletim altında olan programın durumlarını kaydeden durum kaydedici veya bayrak kaydedicileri ile donatılmıştır. Şekil, Z80 mikroişlemcisine ait 1-baytlık durum kaydedicilerinin bit şeklini göstermektedir. 6 bayraktan 4 tanesi kullanıcıya açıktır, diğer ikisini sadece CPU kullanır.
[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image004.gif[/IMG]
Kabul edilen terminolojiye uyarak, eğer bir bayrağa karşılık olan bit 1 ise söz konusu bayrak set edildi, eğer bit 0 ise söz konusu bayrak silindi veya reset edildi denir.
·C : ( Carry flag ) Elde / Borç bayrağı; akümülatörün veya kaydedici ‘dokuzuncu ‘ biti olarak göz önüne alınabilir. Akümülatörün en yüksek bitinden çıkan eldedir. Toplama komutu sırasında elde oluÅŸursa yada çıkarma komutu sonunda borç oluÅŸursa bu bit kurulur. EÄŸer bir aritmetik iÅŸlem sırasında akümülatörün ( veya kaydedici ) sekizinci bitinden bir elde meydana geliyorsa, elde bayrağı set edilir. Set edilmiÅŸ elde bayrağı bir aritmetik çıkarma iÅŸlemi sırasında oluÅŸan ödünç alma iÅŸlemi tarafından silinir. Z80’e ait durum bayrağı mantıksal AND komutu ile silinir. ( Z80, eldeyi sil gibi bir komuta sahip deÄŸildir.)
·Z : ( Zero flag ) Sıfır bayrağı; aritmetik bir işlem sonucunda, akümülatörün veya kaydedici içeriği sıfır ise, Z = 1, set edilir. Aksi durumda silinir. Z = 0 olur.
·Negatif veya işaret ( N veya S ) bayrakları akümülatör veya kaydedicideki sayının işaretli ikilik ve ikilik tümleyen gösterilimlerinde negatif olduğunu gösterir. Uygulamada N ( veya S ) akümülatör veya kaydedicinin yedinci bitinin aynısıdır.
·S : ( Sign flag ) İşaret Bayrağı; dallanmalar yapmak ve bir yerlere atama yapmak için S biti kullanılır. Bir işlem sonucunda oluşan sayının 7. Biti buraya atanır. Yani sonucun negatif yada pozitif olduğunu gösterir. S = 1 ise sonuç negatif, S = 0 ise sonuç pozitiftir.
·N : ( Subtract flag) Negatif Bayrağı; en son yapılan işlemin çıkarmamı yoksa toplamamı olduğunu ifade eder. Kullanıcıya kapalıdır. Mikroişlemci kendisi test eder.
·P / V : ( Parity / Over Flow flag ); Bu işlem sonucunda oluşan sayının paritesine bakılır. Çift parite ise 1, tek parite ise 0 değerini alır. ( hata kontrolü yapar ).
·H : ( Half Carry flag ) Yarım Elde Bayrağı; BCD sayılarla işlem yapılırken çalışır. Kullanıcıya kapalıdır. MİB kendisi test edip, kullanıp, sonucu bildirir.
Z80-MİB BACAK TANIMLARI
Z80-MİB, 40-bacaklı bir endüstri standardı olan Çift-Sıralı ( DIL ) Paket içinde paketlenmiştir. G/Ç bacakları şekilde gösterilmiştir ve bu bacakların her birinin işlevleri şeklin altında tanımlanmıştır.
27 30
19
20
21
22
28
18
5
24
Z-80 MİB
16
17
26 14
25
23
13
6
11
29
[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image005.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image006.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image007.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image008.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image006.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image009.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image006.gif[/IMG]SİSTEM M1 A0
[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image010.gif[/IMG] MREQ ADRES
[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image011.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image012.gif[/IMG]DENETİMİ YOLU
[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image013.gif[/IMG] IORQ
[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image006.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image012.gif[/IMG] RD
[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image014.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image015.gif[/IMG] WR
[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image016.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image013.gif[/IMG] RFSH
[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image017.gif[/IMG]
[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image018.gif[/IMG]
[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image019.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image012.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image020.gif[/IMG]MİB HALT A15
[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image017.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image021.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image022.gif[/IMG] WAIT
DENETİMİ
[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image014.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image022.gif[/IMG] INT
[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image023.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image024.gif[/IMG] NMI
[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image025.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image023.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image023.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image026.gif[/IMG] RESET
[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image027.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image028.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image029.gif[/IMG] D0
[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image030.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image031.gif[/IMG] VERİ
[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image032.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image022.gif[/IMG] MİB YOL BUSRQ
[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image033.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image034.gif[/IMG] DENETİMİ BUSAK YOLU
D[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image035.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image036.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image037.gif[/IMG]7
[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image023.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image038.gif[/IMG] Q
[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image039.gif[/IMG] +5V
[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image040.gif[/IMG] GND
A0 – A15 ( Adres Yolu ; Address Bus ) ;
3-durumlu, yüksekte-etkin çıkış. A0 – A15 , 16-bitlik bir adres yolu oluÅŸturur. Dışarıdan baÄŸlanacak bir bellek yada bellek grupları için 16-bitlik adres bilgisini saÄŸlar. Adreslenebilir bellek bölgesi ; 216 = 65536 = 64Kbayt’dır. Adres yolu, ( 64 Kbayta kadar ) bellek veri deÄŸiÅŸ-tokuÅŸları ve G/Ç birimleri veri deÄŸiÅŸ-tokuÅŸları için gerekli adresi saÄŸlar. G/Ç adreslemesi, kullanıcının 256 adete kadar giriÅŸ yada çıkış portunu doÄŸrudan seçebilmesini saÄŸlamak üzere alt sıralı 8 adres bitini kullanır. Adres yolunun düşük anlamlı 8-biti ( A0 – A7 ), çevre birimlerinin adreslenmesinde kullanılır. A0 , en düşük deÄŸerlikli adres bitidir. Tazeleme süresi sırasında, alt sıralı 7-bit geçerli bir tazeleme adresini içerir.
D0 – D7 ( Veri Yolu ; Data Bus );
3-durumlu,yüksekte-etkin giriÅŸ/çıkış.CPU, bellek elemanları ve çevre birimler arasında çift yönlü veri iletimi saÄŸlar. D0 – D7 , 8-bitlik bir 2 yönlü veri yolu oluÅŸturur. Veri yolu, bellek ve G/Ç birimleri ile veri deÄŸiÅŸ-tokuÅŸu için kullanılır.
[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image041.gif[/IMG]M1 ( Birinci Makine Saykılı );
[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image021.gif[/IMG]Alçakta-etkin çıkış ( lojik 0’da etkin ). MikroiÅŸlemcinin o anda ne yaptığını gösteren bir uçtur. Yürütülmekte olan makine çevriminin bir komut kodu getirme çevrimi olduÄŸunu gösterir. M1, ÅŸu andaki makine çevriminin, bir komut yerine getirmenin, iÅŸlem kodunu bellekten getirme çevrimi olduÄŸunu belirtir. M1, yürürlükteki makine saykılının, bir komutun yürütümünün OP kodu getirme saykılı olduÄŸunu belirtir. 2-baytlık op-kodlarının yürütümü sırasında, . M1’in her iki op-kodu baytının getirilmesi sırasında da üretildiÄŸine dikkat ediniz. Bu 2-baytlık op-kodları her zaman CBH, DDH, EDH yada FDH ile baÅŸlar. M1 ayrıca, kesme alındı saykılını belirtmek için IORQ ile de ortaya çıkar.
[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image023.gif[/IMG]MREQ ( Memory Request : Bellek İsteği );
3-durumlu, alçakta-etkin çıkış ( lojik 0’da etkin ). Bellek isteÄŸi sinyali, adres yolunun bellek okuma yada bellek yazma iÅŸlemi için geçerli bir adresi tutmakta olduÄŸunu belirtir. CPU’nun bellek üzerinden bir okuma veya yazma yapmak istediÄŸini gösterir.
[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image021.gif[/IMG]
IORQ ( İnput / Output Request : Giriş / Çıkış İsteği );
3-durumlu alçakta-etkin çıkış ( lojik 0’da etkin ). CPU’nun bir giriÅŸ/çıkış çevre birimi üzerinden veri okumak veya yazmak istediÄŸini belirtir. IORQ sinyali, adres yolunun alt sıralı yarısının, G/Ç okuma yada yazma iÅŸlemi için geçerli bir G/Ç adresini tutmakta olduÄŸunu belirtir. IORQ sinyali, bir kesme cevabı vektörünün veri yoluna yerleÅŸtirilebileceÄŸini belirten bir kesme alındığı ve onaylandığı zamanda üretilebilir. IORQ sinyali ayrıca, herhangi bir kesme alındığında da, veri yoluna kesme yanıt vektörünün yerleÅŸtirilebileceÄŸini belirtmek için M1 sinyali ile birlikte üretilir. Kesme alındı iÅŸlemleri M1 süresi sırasında gerçekleÅŸir, G/Ç iÅŸlemleri ise hiçbir zaman M1 süresi sırasında gerçekleÅŸmez.
[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image042.gif[/IMG]RD ( Read : Bellekten Oku );
3-durumlu alçakta-etkin çıkış ( lojik 0’da etkin ). CPU’nun bir bellek yada bir giriÅŸ/çıkış biriminden veri okumak istediÄŸini gösterir. Dış dünyadan okumak istenen herhangi bir veri bu uçla saÄŸlanır. RD, MİB’nin bellek yada bir G/Ç biriminden veri okumak istediÄŸini belirtir. Adreslenen G/Ç birimi yada bellek, bu sinyali, veriyi MİB’nin veri yoluna kapılamak için kullanır.
[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image029.gif[/IMG]WR ( Write : BelleÄŸe Yaz );
3-durumlu alçakta-etkin çıkış ( lojik 0’da etkin ). CPU’nun 8-bitlik veriyi bir bellekte veya bir giriÅŸ/çıkış biriminde saklanmak üzere veri yoluna yazdığını gösterir. WR, MİB veri yolunun, adreslenen bellek yada G/Ç biriminde saklanacak olan geçerli bir veri tutmakta olduÄŸunu belirtir.
[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image043.gif[/IMG]
RFSH ( Refresh : Tazele );
Alçakta-etkin çıkış ( lojik 0’da etkin ). RFSH, adres yolunun alt-sıralı 7-bitinin, dinamik bellekler için bir tazeleme adresi içerdiÄŸini ve yürürlükteki MREQ sinyalinin, tüm dinamik bellekler için tazeleme amaçlı bir okuma iÅŸlemini yapmak amacıyla kullanılması gerektiÄŸini belirtir.
RFSH, adres yolunun alçak 7-bitinin dinamik bellekler için tazeleme adresini içerdiğini belirtir ve şu andaki MREQ sinyali bütün dinamik bellekleri tazeleme okuması yapmak için kullanmalıdır.
Ram’ler 2’ye ayrılır. Statik RAM ve Dinamik RAM
Statik RAM’a gerilim uygulandığı sürece bilgi saklanır. Dinamik RAM’da kapasite yapısı sayesinde bilgi devamlı saklanır ve bu bilgilerin devamlı tazelenmesi gerekir.
[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image044.gif[/IMG]
HALT ( Durdurma Durumu );
Alçakta-etkin çıkış ( lojik 0’da etkin ). Bu sinyal Z80 HALT komutunu yerine getirdikten sonra üretilir. CPU’nun bir HALT komutu icra ettiÄŸini ve baÅŸka komutları icra etmek için sıfırlama veya kesme sinyallerini beklediÄŸini gösterir. HALT, MİB’nin bir HALT yazılım komutunu yürütmüş olduÄŸunu ve iÅŸlemin geri alınabileceÄŸi hale gelinmeden önce, maskelenemez ( maske yetkilendirilmemiÅŸken ) yada maskelenebilir (yani yetkisiz kılınabilir, istek yerine getirilmeyebilir) bir kesme için hazır beklediÄŸini belirtir. Durdurma (tutma) durumuna alınmışken MİB, bellek tazeleme etkinliÄŸini sürdürmek için sürekli olarak NOP komutları yürütür.
[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image021.gif[/IMG] WAIT ( Bekle );
Alçakta-etkin giriÅŸ ( lojik 0’da etkin ). WAIT giriÅŸi Z80-MİB’ne, adreslenen bellek yada G/Ç biriminin veri aktarma için hazır olmadığını belirtir. MİB, bu sinyal etkin olduÄŸu sürece, bekleme durumları girmeye devam eder. Bu sinyal, herhangi bir hızdaki bellek yada G/Ç aygıtlarının MİB ile senkronize edilmesini saÄŸlar. CPU’nun, kendisinden daha yavaÅŸ hızdaki çevre elemanları ile senkronize çalışmasını saÄŸlar.
[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image042.gif[/IMG] INT ( İnterrupt : Kesme İsteği );
Alçakta-etkin giriÅŸ ( lojik 0’da etkin ). Bu uç aktif olduÄŸunda, kesme izni verilmiÅŸ ise, CPU icra ettiÄŸi komutu bitirip, kesme hizmet programına dallanır. Kesme istek sinyali, G/Ç aygıtları tarafından üretilir. Kesme isteÄŸi, eÄŸer yazılım denetimli iç kesme yetkilendirme flip-flobu ( IFF ) yetkilendirilmiÅŸse ve BUSRQ sinyali etkin deÄŸilse, yürürlükteki komutun sonunda dikkate alınır. MİB kesmeyi aldığında, bir sonraki komut saykılının baÅŸlangıcında, dışarıya bir alındı sinyali ( M1 süresi sırasındaki IORQ ) gönderilir. MİB, bir kesmeye 3 farklı modda yanıt verebilir.
·Mod 0 ; Bu modda kesmeyi üreten çevre cihazı, mikroiÅŸlemcinin yerine getireceÄŸi tek bir komutu veri yoluna koyar. Bu komut, genellikle belirli bir çevre cihazlarından gelen kesmenin istediÄŸi iÅŸleri yapmak için tasarlanmış bir yordamı çağırır. Bu düzenlemede her çevre aygıtı farklı bir yordamı çağırır ve çevre cihazı kesmenin kendisinden geldiÄŸini belirtebilir. Böylece, Z80’nin kesmenin hangi çevre cihazından geldiÄŸini tespit etmek için her bir çevre aygıtını kontrol etmeye ihtiyacı yoktur.
·Mod 1 ; Bu modda ( kesme alındığında ) Z80 o an yerine getirdiği komutu bitirir ve program sayıcısını 0038H adresindeki yığına ( stack ) depo eder. Mikroişlemci kesme işlemi ile olan işini bitirdikten sonra son kaldığı yerdeki işleme devam etmesi gerekeceğinden, program sayıcısının ve MİB kaydedicilerinin içeriğinin yığında depo edilmesi gereklidir. Mikroişlemci kesme altyordamını bitirdiği zaman, yığından program sayıcısının ve MİB kaydedicilerinin içeriğini bellekte 0038H adresine doğrudan atlayarak geri getirir ve onları daha önceki pozisyonlarına döndürür.
·Mod 2 ; Bu modda kesmeyi üreten çevre aygıtı 8-bitlik adresi veri taşıtına koyar. Z80 bu adresi kesme yordamının vektörünü içeren mutlak adresin alçak mertebeli baytı olarak kullanır. Yüksek mertebeli adres baytı kesme sayfa adres kaydediciden (I kaydedici) elde edilir ve bu programlayıcı tarafından set edilir.
Mod 0’da olduÄŸu gibi, mod 2 kesmeleri her bir çevre aygıtının farklı yordamları göstermesine olanak saÄŸlar. Bu ÅŸekildeki bir düzenleme programlama kolaylığı saÄŸlamakla kalmayıp, kesme isteminin nereden geldiÄŸini bulmada her çevre aygıtının teker teker kontrolü ( polling ) ihtiyacını da ortadan kaldırmaktadır.
[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image042.gif[/IMG] NMI ( Non-maskable İnterrupt : Maskelenemez kesme girişi );
Negatif kenar tetiklemeli giriÅŸ. Maskelenemez kesme isteÄŸi giriÅŸi, INT’den daha yüksek bir önceliÄŸe sahiptir ve kesme yetkilendirme flip-flobunun durumundan bağımsız olarak her zaman için yürürlükteki komutun sonunda tanınır. NMI, Z80-MİB’ni otomatik olarak 0066H gözünden yeniden baÅŸlatır. Bu uç aktif olduÄŸunda CPU, kesme izin flip-flobunun durumundan bağımsız olarak yürütmekte olduÄŸu komutun sonunda 0066H adresine dallanır. Program sayıcısı, kullanıcının kesilen programa geri dönebilmesi için otomatik olarak dış yığında saklanır. Ardarda girilen WAIT (bekleme) saykılları, yürürlükteki komutun sonlanmasını engelleyebilir ve herhangi bir BUSRQ, NMI’yı durdurarak kontrolü alabilir.
[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image033.gif[/IMG] RESET ( Sıfırlama );
Alçakta-etkin giriÅŸ ( lojik 0’da etkin ). RESET, program sayıcısına 0000H adresini yükler ve MİB’ni baÅŸlangıç durumuna getirir. MİB’ni baÅŸlangıç durumuna getirme iÅŸlemi aÅŸağıdaki aÅŸamaları kapsar;
·Kesme yetkilendirme flip-flobunun yetkisiz kılınması
·I kaydedicisinin 00H’e kurulması
·R kaydedicisinin 00H’e kurulması
·0’ıncı kesme modunun kurulması
Resetleme süresi sırasında, adres ve veri yolları yüksek empedans durumuna girerler ve tüm denetim çıkış sinyalleri de etkisiz duruma gider. Bu sırada, tazeleme işlemi de yapılmaz.
[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image045.gif[/IMG]
BUSRQ ( Bus Request : Yol İsteği );
Alçakta-etkin giriÅŸ ( lojik 0’da etkin ). Yol isteÄŸi sinyali, MİB’nin adres yolu, veri yolu ve 3-durumlu çıkış denetim sinyallerinin yüksek empedans durumuna geçmesini istemek için kullanılır. Böylece diÄŸer birimlerin bu yolları denetleyebilmesi mümkün olur. BUSRQ etkin duruma getirildiÄŸinde, MİB, yürürlükteki MİB makine saykılı sonlandırılır sonlandırılmaz bu yolları yüksek empedans durumuna getirir. Yol istek sinyali NMI’dan daha yüksek önceliÄŸe sahiptir ve her zaman ÅŸu andaki makine çevriminin bitiminde yerine getirilir ve diÄŸer elemanların kontrol edilmeleri için CPU adres yolu, veri yolu ve 3-durumlu çıkış kontrol sinyallerinin bir yüksek empedans durumuna gitmelerini ister.
[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image009.gif[/IMG]BUSAK ( Bus Acknowledge : Yol alındısı );
Alçakta-etkin çıkış ( lojik 0’da etkin ). Yol alındısı, istek yapan birime, MİB’nin adres yolu, veri yolu ve 3-durumlu denetim yolu sinyallerinin yüksek empedans durumlarına getirildiklerini ve artık dış birimin bu sinyalleri denetleyebileceÄŸini belirtmek için kullanılır. Bus Request sinyalini gönderen elemana CPU’nun yolları yüksek empedans durumuna aldığını ve istekte bulunan devrenin veya elemanın yolları kullanabileceÄŸini gösterir.
*Z80 MİB, WAIT (bekleme) yada BUSAK (yol alındısı) durumunda iken, Dinamik Bellek Tazeleme işlemi yapılmaz.
Z80-MİB KONTROL ( DENETİM ) BİRİMLERİ Eğer ALU bir mikroişlemcinin kalbi ise, komut kod çözücüsü de ( instruction decoder ) mikroişlemcinin beynidir.
Adından da anlaşılacağı gibi, komut kod çözücüsü o anda komut kaydedicisinde tutulan komutun kodunu çözer.( yani hangi işin yapılacağını belirler ). Ardından zamanlama ve kontrol mantık devresi ile birlikte iç kaydediciler, adres ve veri taşıtları üzerinde gerekli işlemleri yapar. Sonuçta komut yerine getirilmiş olur.
Bir mikroişlemci, belleğinde saklı bulunan programı her bir komutu sıra ile okuyarak yürütür. Her komut önce, onu yürütmek için gerekecek işlemleri belirlemek üzere yorumlanır ( kodu çözülür ) sonra da gereken işlemler uygulanır.
Programın yürütülmesi sırasında her bir program komutu ve programla ilgili ara (geçici) veri değerleri, mikroişlemcinin içinde, kaydedici adı verilen belli sayıdaki özel konumlarda saklanır. Bir mikroişlemci kaydedicisi, bellek birimindeki konumların bir benzeridir. Mikroişlemci, belleğinde saklı bulunan programı sırayla her program komutunu okuyarak yürütür. Bundan dolayı mikroişlemcinin, yürüteceği bir sonraki işlemin bellek birimindeki konumunun adresini anımsaması yada kaydını tutması gerekir. Bu nedenle mikroişlemcide bu işlevi yerine getirmek için kullanılan ve program sayıcısı (PC) denilen bir kaydedici bulunur. PC, bellek adresini tuttuğu için 16-bitliktir.
Bundan başka mikroişlemcide komut kaydedicisi (IR) denilen bir kaydedici vardır. Bu kaydedici, komutu yürütmek için gereken işlemleri belirleyebilmek için kodu çözülmekte olan komutu tutmak amacıyla kullanılır. Kod çözme işlemi komut kod çözücü birimi tarafından gerçekleştirilir. Temelde bu birim hangi komutun okunmuş olduğunu belirler ve sistem saatinden üretilen elektriksel zamanlama sinyalleriyle bağlantılı olarak zamanlama ve denetim sinyalleri üretir. Komut kaydedicisi, zamanlama ve kod çözme birimi hep birlikte mikroişlemcinin denetim birimi denilen birimini oluştururlar. Çünkü mikrobilgisayarda kullanılan tüm elektriksel sinyaller burada üretilir.
Toplama, çıkarma gibi temel aritmetik iÅŸlemlerinin yanı sıra, bir mikroiÅŸlemci iki veri deÄŸeri arasında ALU ( arytmetic logic unit ) sayesinde mantıksal iÅŸlemlerde yapar. Z80’inde dahil olduÄŸu modern 8-bitlik mikroiÅŸlemciler çarpma ve bölme gibi daha karışık aritmetik iÅŸlemleri yapmaz. Tabii olarak bu iÅŸlemler alt-yordamlar (sub-routines) kullanılarak yapılır. ALU tarafından yerine getirilen iÅŸlevlerin türleri şöyledir.
·İki tabanında toplama ve çıkarma
·Mantıksal VE, VEYA, XOR ve 2’nin tümleyeni
·Sağa yada sola kaydırma ve döndürme
·Bir artırma ve bir eksiltme
·Karşılaştırma
·Bit kurma, bit silme ve bit test etme
[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image046.gif[/IMG]
ALU, iki değer üzerinde, (yürütülmekte olan komutta belirtilen) uygun aritmetik ve mantık işlemlerini yerine getirir. Bu iki değerden biri daima özel bir mikroişlemci kaydedicisi olan ve A kaydedicisi olarak adlandırılan kaydedicinin o an içerdiği değerdir. Öteki ise, ya belirli bir bellek konumunun, yada mikroişlemcinin bir bölümünü oluşturan kaydedici grubundaki bir başka kaydedicinin içeriğidir. Bu kaydediciler işlenmek üzere bekleyen geçici değerleri tutmak için kullanılırlar.
Aritmetik veya mantıksal işlemlerin sonucu, normal olarak A kaydedicisine yerleştirilir ve dolayısıyla bu yeni değer orada var olan değerin yerini alır yada diğer bir deyişle onun üzerine yazılır. Bu yüzden A kaydedicisi, içeriğinde belirli bir aritmetik işleminin sonucu biriktirildiğinden, akümülatör olarak adlandırılır.
Z80, 4 adet kesme hattına sahiptir. Bunlar; RESET, NMI, INT ve BUSRQ’dur. Bu sinyallerin hepsi alçak deÄŸerde aktif olan sinyallerdir.
Z80 saat sinyalleri ya iç ( Z80’nin içinde bulunan ) yada dış osilatörler ile üretilebilir. İç saat sinyalini kullanmak için 6 numaralı bacak ile +5 V besleme bacağı arasına 330 W’luk yukarı-çekme direnci (pull-up resistance) baÄŸlanır. EÄŸer bir dış saat sinyali kullanılacaksa (saat sinyali 4 MHz’in üzerinde ise) dış saat sinyali Æ giriÅŸi ve toprak yardımı ile verilir.
Z-80 MİKROİŞLEMCİSİNDE; OPCODE GETİR-KODU ÇÖZ-YÜRÜT (Fetch-Decode-Execute) ÇEVRİMİ Åžekil, Z80-MİB’de makine kodu programının bellekte saklanış ÅŸeklini göstermektedir.
[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image047.gif[/IMG]
Her komut, genellikle Op Kod (Op Code) olarak da adlandırılan, ‘genelleÅŸtirilmiÅŸ’ iÅŸlem kodu (operation code) ve bu kodu takip eden bir veya iki veri baytı içerir. Komut sadece iÅŸlem kodundan da oluÅŸabilir, yani op kod’dan sonra hiç veri baytı olmayabilir. Op kod yerine getirilince (iÅŸletilince) kendisini takip eden veri baytları üzerinde belirli bir iÅŸlem yapar.
Komutlar bellekte ardışıl bir şekilde saklanmaktadır. Birbiri ardına gelen komutlar yükselen bellek adreslerini işgal etmektedir. Kesmeler etkileyici birer faktör oldukları halde, ilk komutun bellekteki yeri büyük ölçüde sistemi tasarlayana ve programlayıcıya bağlıdır.
Temel mikroişlemci işleme çevrimi 3 aşamadan oluşur. Bunlar;
·Getir (fetch) komutu
·Kodu Çöz (decode) komutu
·Yürüt (execute) komutu
GETİR KOMUTU Birinci aÅŸamada, yerine getirilecek komut bellekten getirilir ve komut kaydedicisine konur. Program sayacının içeriÄŸi ( yerine getirilecek olan bir sonraki komutun adresini içerir ) adres yoluna konur ve bellekten oku sinyali kontrol yoluna konur.(Z80’de 21. bacak mantık 0 durumuna reset edilir). BelleÄŸin ulaşım zamanına baÄŸlı olarak kısa bir süre sonra, bellek komutun Op kodunu veri yoluna koyar, daha sonra mikroiÅŸlemci veri yolunu okur ve Op kodu komut yoluna koyar. MikroiÅŸlemci, komut kaydedicisine konan Op koda baÄŸlı olarak, program sayacının içeriÄŸini bir, iki veya üç artırır. Böylece program sayacı bir sonraki komutu gösterir duruma gelmiÅŸ olur. Getir çevrimi, daha sonra gelen kodu çöz ve yerine getir çevrimleri gibi mikroiÅŸlemci saat darbesi ile senkronize edilir.
Şekil, Z80 getir zamanlama sırasını göstermektedir.
[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image049.gif[/IMG]
Makine çevrimi 1 (M1) veya MC1 olarak da bilinen getir çevrimi 4 saat periyodu veya 4T durumunu gerektirir. İlk T-durumu T1 süresi içinde, program sayacının içeriÄŸi adres yoluna konur, bellek istemi (memory request) ve oku hatları aktif hale getirilir. Dış bellek buna PC’de adresi bulunan yerin içeriÄŸini veri yoluna koyarak cevap verir. Komut Op kodu olan veri üçüncü T-durumu T3’ün yükselen kenarında komut kaydedicisine konur. İkinci T-durumu T2 , diÄŸer amaçlarının yanında, verinin T3 süresinde okunmasından önce kararlı hale gelmesini saÄŸlayan gerekli gecikmeyi meydana getirmektedir. Son iki T- durumunda (T-state), Z80 tazeleme adresleri (refresh address) üretir ve adres yoluna koyar ve RFSH hattı harekete geçirilir.
KODU ÇÖZ ve YÜRÜT Op kod komut sayacına yerleştirildikten sonra, komut kod çözücüsü doğru iç ve dış sinyal dizileri üretir. Öyle ki söz konusu komut doğru bir şekilde yerine getirilmiş olur. Kodu çöz ve yürüt işleminin zamanlama sırası getir çevriminin zamanlama sırasına benzer. Bununla birlikte gerekli olan saat periyodu sayısı veya T-durumu sayısı olduğu gibi komuta bağlıdır. Örneğin tek-baytlık komutlar iki-baytlık ve üç-baytlık komutlardan daha hızlıdır. ( daha az saat periyodu gerektirir ). Bir komutun yerine getirilmesinden sonra, mikroişlemci bir sonraki komutun getir-kodu çöz-yürüt çevrimi aşamasına girer.
Sık sık ortaya çıkan soru; getir-kodu çöz-yürüt çevrimi verildiğinde, mikroişlemci ilk komutun belleğin neresinde olduğunu nasıl bilmektedir? sorusudur. Bu sorunun cevabı reset işleminin incelenmesi ile bulunur.
Bir çok sistemde reset hattı, kullanıcının reset hattını toprağa geçici olarak kısa devre eden bir tuşa basması ile harekete geçirilir. Reset hattı harekete geçirildikten sonra, mikroişlemci bir dizi başlama işlemi yapar, bütün iç kaydedicileri siler, sonra program sayacına ilk komutu bulmak için belirli bir adres yükler.
Z80 mikroişlemcisinde reset işleminden sonra, program sayacına 0000H sayısı yüklenir ( çok olağan bir seçim ) ve neticede ilk komut 0000H adresinde saklanmak zorundadır. Bununla birlikte bu ilk komut mikroişlemciyi ana programın saklandığı belleğin başka bir bölümüne atlatmak için kullanılmış olabilir. Daha sonra bu sayı program sayacına gönderilir.
ZAMANLAMA DALGA ÅžEKİLLERİ: KOMUT İŞLEME KODUNUN GETİRİLMESİ Program sayıcısı içeriÄŸi (PC), çevrimin hemen başında adres yoluna yerleÅŸtirilir. Yarım saat zamanı sonra MREQ aktif olur. MREQ’nun düşen kenarı dinamik bellekleri yonga yetkilendirme olarak doÄŸrudan kullanılabilir. RD aktif iken bellek verisinin CPU veri yoluna yetkilendirilmesini belirtir. CPU veriyi saat durumu T3’ün yükselen kenarında örnekler. CPU dahili olarak kodu çözerken ve komutu yerine getirirken, getirme çevriminin T3 ve T4 saat durumları dinamik bellekleri tazelemek için kullanılır. Tazeleme kontrol sinyali RFSH, bütün dinamik bellekleri tazeleme okuma iÅŸleminin yapılması gerektiÄŸini belirtir.
BELLEK OKUMA VEYA YAZMA ÇEVRİMLERİ Burada bellek okuma veya yazma çevrimlerinin işleme kodunun getirilmesi (M1 çevrimi) dışındaki zamanlaması gösterilmiştir. MREQ ve RD sinyalleri, getirme çevriminin tamamen aynısı olarak kullanılır. Belleğe yazma çevriminde, adres yolu kararlı olduğunda MREQ aktif olur. Böylece dinamik bellekler için yonga yetkilendirme olarak doğrudan kullanılabilir. Veri yolundaki veri kararlı olduğunda WR hattı aktif olur, böylece hemen hemen bütün yarıiletken belleklere R/W darbesi olarak kullanılabilir.
[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image051.gif[/IMG]
[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image053.gif[/IMG]
GİRİŞ VEYA ÇIKIŞ ÇEVRİMLERİ Burada bir I/O okuma veya I/O yazma işleminin zamanlaması gösterilmektedir. I/O işlemleri sırasında bir bekleme durumunun otomatik olarak sokulduğuna (Tw*) dikkat ediniz. Bu fazladan zaman, I/O işlemi sırasında I/O portunun adresinin kodunu çözmesine ve bir bekleme gerekiyorsa WAIT hattının aktif duruma (senkronlama) gelmesine sebep olur.
KESME İSTEĞİ / ALINDI ÇEVRİMİ Kesme sinyali CPU tarafından herhangi bir deyimin sonundaki son saat darbesinin yükselen kenarıyla örneklenir. Bir kesme kabul edildiğinde özel bir M1 çevrimi üretilir. M1 çevrimi sırasında IORQ sinyali aktif olur. ( MREQ yerine ). Bu, kesmeyi yapan eleman 8-bitlik vektörü, veri yoluna yerleştirebileceğini belirtir. İki bekleme durumu (Tw*), bu çevrime otomatik olarak eklenir. Böylece Z80 çevre birim kontrolörlerinde kullanılan benzer salınma önceliği kesme planı kolaylıkla uygulanabilir.
[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image055.gif[/IMG]
[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image057.gif[/IMG]
Z80-MİB KOMUT TAKIMI Z80-MİB’i 158 farklı komut türünü yürütebilir. Komutlar aÅŸağıdaki ana gruplara bölünebilir;
·Yükleme ve Karşılıklı Değiştirme ( 8 veya 16-bitlik )
·Blok Aktarım ( taşıma ) ve Arama
·Aritmetik ve Mantık
·Genel amaçlı akümülatör & bayrak işlemleri
·Karışık grup
·Döndürme ve Kaydırma
·Bit İşleme ( kurma, sıfırlama, test )
·Atlamalar, Çağırmalar, Yeniden Başlamalar ve Geriye Dönüşler
·Giriş / Çıkış
·Temel MİB denetimi
Yükleme komutları veriyi MİB kaydedicileri arasında veya MİB kaydedicileri ile dış bellek arasında taşır. Bu komutların tümü de verinin taşınmak üzere alınacağı bir kaynak konumu ve bir varış konumu belirtmelidir. Kaynak konumunun içeriği yükleme komutlarının kullanımı sonucu değişmez. Yükleme grubu komutlarına; veriyi B kaydedicisinden C kaydedicisine taşı gibi genel amaçlı kaydediciler arasındaki taşımalar örnektir. Bu grup aynı zamanda MİB kaydedicilerine veya harici bellek konumlarına dolaysız yüklemeyi de içerir. Diğer yükleme komutu türleri MİB kaydedicileri ile bellek konumları arasında aktarımı mümkün kılar. Karşılıklı değiştirme komutları, iki kaydedicinin içeriklerinin değiş-tokuş edilmesini sağlar.
Z80’de ayrı bir blok aktarma komutları grubu yer alır. Tek bir komutla herhangi bir büyüklükteki bellek bloÄŸu, bellekte baÅŸka bir konuma taşınabilir. Bu blok taşıma grubu büyük veri dizilerinin iÅŸlenmesi gerektiÄŸinde oldukça deÄŸerlidir. Z80 blok arama komutları da bu tür iÅŸlemler için çok faydalıdır. Tek bir komut ile istenen büyüklükteki bir harici bellek bloÄŸunda 8-bitlik bir karakter aranabilir. Karakter bulunduÄŸunda komut otomatik olarak sona erer. Hem blok transferi hem de blok arama komutları MİB’i uzun süre meÅŸgul etmemek için yürütülmeleri sırasında kesilebilir.
Aritmetik ve mantıksal komutlar, akümülatörle diğer genel MİB kaydedicilerinde veya harici bellek konumlarında saklı veri üzerinde çalışır. İşlemlerin sonucu akümülatöre konur ve işlemin sonucuna göre uygun bayraklar kurulur. Aritmetik işleme bir örnek; akümülatörü harici bir bellek konumunun değerine eklemektir. Toplamanın sonucu akümülatöre konur. Bu grup aynı zamanda 16-bit MİB kaydedicileri arasında 16-bit toplama ve çıkarma işlemlerini de içerir.
Bit işleme komutları; akümülatördeki, genel amaçlı kaydedicilerdeki veya harici bellek konumlarındaki bir bitin tek bir komutla kurulmasını, sıfırlanmasını veya test edilmesini sağlar. Örneğin, H kaydedicisinin en değerlikli biti sıfırlanabilir. Bu grup özellikle denetim uygulamalarında ve genel amaçlı programlamadaki yazılım bayraklarının denetlenmesinde faydalıdır.
Atla, çağır ve geri dön komutları kullanıcı programındaki çeÅŸitli konumlara transfer için kullanılır. Bu grup, yeni program sayıcısı adresini belli bir harici bellek konumundan almak için farklı birkaç teknik kullanır. Atlamanın ayrı bir türü yeniden baÅŸlatma komutudur. Bu komut yeni adresi aslında 8-bitlik iÅŸ kodunun bir bölümü olarak içerir. Bunun mümkün olmasının nedeni, harici belleÄŸin sıfırıncı sayfasında yerleÅŸtirilmiÅŸ 8 ayrı adresin belirtilebilmesidir. Program atlamaları aynı zamanda HL, IX veya IY kaydedicilerini doÄŸrudan PC’ye yükleyerek de gerçekleÅŸtirilebilir. Böylece atlama adresinin yürütülmekte olan yordamın kompleks bir fonksiyonu olması saÄŸlanmış olur.
Z-80 komut takımı tablosunda aşağıdaki terminoloji kullanılmıştır.
b = Herhangi bir 8-bitlik kaydedici veya bellek yerinde bit numarası
cc = Bayrak koÅŸul kodu
NZ = Sıfır değil
Z = Sıfır
NC = Elde deÄŸil
C = Elde
PO = Tek eÅŸlik veya taÅŸma yok
PE = Çift eşlik veya taşma
P = Pozitif
M = Negatif
d = Herhangi bir 8-bitlik hedef kaydedicisi veya bellek yeri
dd = Herhangi bir 16-bitlik hedef kaydedicisi veya bellek yeri
e = Bağıl atlamalar ve dizinli adreslemede kullanılan, 8-bitlik 2’nin tümleyeni uzaklık
L = Sayfa sıfırda 8 özel çağırma yeri. Ondalık gösterimde bunlar 0, 8, 16, 24, 32, 40, 48 ve 56’dır.
n = 8-bitlik ikilik sayı
nn = 16-bitlik ikilik sayı
r = Herhangi bir 8-bitlik genel amaçlı kaydedici ( A,B,C,D,E,H veya L )
s = Bir 8-bitlik kaynak kaydedicisi veya bellek yeri
ss = 16-bitlik kaynak kaydedicisi veya bellek yeri
8-bitlik kaydediciler : A, B, C, D, E, H, L, I ve R’dir.
16-bitlik kaydedici çiftleri : AF, BC, DE ve HL’dir.
16-bitlik kaydediciler : SP, PC, IX ve IY’dir.
Z-80 KOMUT TAKIMI ADC HL,ss = ss kaydedici çiftini elde ile HL’ye ekle
ADC A,s = s işlenenini elde ile Akümülatöre ekle
ADD A,(IX+d) = (IX+d) konumunu Akümülatöre ekle
BIT b,(HL) = (HL) konumunun b bitini test et
BIT b, (IY+d) = (IY+d) konumunun b bitini test et
CALL cc, nn = Eğer cc koşulu doğruysa nn konumundaki alt yordamı çağır
CALL nn = nn konumundaki alt yordama koşulsuz çağrı
CCF = Elde bayrağını tümle
DEC m = m iÅŸlenenini azalt
DEC IX = IX’i azalt
EX (SP),HL = (SP) konumu ile HL’nin deÄŸerlerini deÄŸiÅŸtir
HALT = Bekle ( kesme ve sıfırlanana dek bekle )
IM 0 = Kesme modunu sıfıra kur
IN A,(n) = Akümülatöre n biriminden gelen girişi yükle
INC r = r kaydedicisini artır
INC (IY+d) = (IY+d) konumunu artır
JP (HL) = (HL)’ye koÅŸulsuz atla
JP nn = nn konumuna koÅŸulsuz atla
LD A,(BC) = (BC) konumunu akümülatöre yükle
LD dd, nn = dd kaydedici çiftine nn değerini yükle
LD (IX+d), r = (IX+d) konumuna r kaydedicisini yükle
NOP = İşlem yok
OUT (C),r = ( C ) çıkış portuna r kaydedicisini yükle
OUT (n),A = (n) çıkış portuna akümülatörü yükle
POP IX = IX’e yığının tepesini yükle
POP qq = qq kaydedici çiftine yığının tepesini yükle
PUSH IY = IY’yi yığına yükle
RETN = maskelenemez kesmeden dönüş
SET b,r = r kaydedici b bitini kur
SLA m = m işlenenini aritmetik olarak sola döndür
SUB s = s işlenenini akümülatörden çıkar
XOR s = s iÅŸleneni ile akümülatörü özel VEYA’la