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