2. 8051 Mikroişlemci Mimarisi
Bu derecede fazla fonksiyonu tek bir entegre üzerinde toplamak için, mikroişlemci entegre geliştiricileri, aynı iç hafıza elemanlarını kullanabilen bir mikroişlemci mimarisi ve tek bir dış entegre bacağını birden fazla fonksiyon için kullanmak zorundadır.
8051 40 bacaklı bir entegredir. Dört giriş/çıkış birimi için 32 tane bacağa gereksinim vardır. Bu sebeple bacaklardan çoğu birden fazla fonksiyonu gerçekleştirebilmek üzere tasarlanmıştır. Aşağıda şekilde 8051 entegrenin bacak bağlantıları görülmektedir.
Şekil. 2 8051 serisi entegrelerin bacak bağlantıları
|
Giriş/çıkış 0 iki farklı
amaç için kullanılabilecek bir 8 bit giriş/çıkış
ünitesidir. Bu ünite ya iki yönlü (bidirectional)
giriş/çıkış birimi olarak yada düşük değerli
adres (AD0-AD7)/data yolu olarak
kullanılabilir. Bir giriş/çıkış birimi olarak her
bir bacak düşük (LOW) durumda iken, 8 tane LS TTL
devrenin verdiği akımı üzerinden geçirebilir ve
yüksek (HIGH) konumda ise dışarıdaki entegrelere 3.2
mA akım sürebilir. Adres ve data modunda, (AD0-AD7)
hatları dış hafıza elemanlarına ulaşmak amacıyla
kullanılır. ALE hattı kontrolü kullanılarak, AD0-AD7
hatları, adres veya data yolu olarak belirlenir. Yani AD0-AD7
hatları, ALE sinyali yardımıyla, A0-A7
ve D0-D7 hatları olarak
ayrıştırılır (demultipleksing). Port 0 data ve adres yolunu multiplex olarak sürmek üzere tanımlanmıştır. Bu yüzden port 0 pinleri open-drain olarak tasarlanmıştır. Open drain uçlar iç pullup dirençlerine sahip olmadığından bu pull-up dirençlerinin dışarıya konulması sağlıklı data alışverişi için gerekli olabilir. Mikrokontrolcü çalıştığı zaman dış hafızadan veri transferlerinde, önce okunacak veya yazılacak hafıza adresinin düşük baytı port 0’a yüklenir. Daha sonra ise data okunur veya yazılır. Bu multiplex işlem için, eğer entegre dış hafıza elemanlarına bağlanıyorsa, 74573 türü bir oktal latch kullanılır. |
Şekil. 3 Port 0’ın pin yapısı. Çıkışın open-drain olduğuna dikkat ediniz.
Standart 8051 4 adet giriş/çıkış portuna sahiptir. Eğer 8051 entegresini kullandığınız devre harici kod hafıza ve harici RAM hafıza kullanıyorsa, P0 ve P2 portlarını bu elemanları adreslemede kullanılır. Böyle bir devrede, yalnızca P1 ve P3 sizin serbest kullanımınıza kalmış olacaktır.
Port 0 giriş olarak kullanılnmak istendiğinde., ilgili bite 1 yazılır. Bu sayede her iki transistörde off durumuna getirilir. Her iki transistöründe off olduğu bu durum yüksek empedans durumu olarak adlandırılır. Bu durumda giriş direkt olarak Pin data oku hattına bağlanmış olur. Port 0 çıkış olarak kullanıldığında , 0 yazılmak istendiğinde alt FET açılarak pin topraklanır. 1 yazılmak istendiğinde ise çıkışlar yine yüksek empedans durumuna geçer. Dolayısı ile port 0 çıkış olarak kullanıldığında, yüksek sinyalleri sağlıklı görebilmek için, port 0 çıkışlarına pull-up dirençleri koymak gereklidir.
Port 0 adres bus olarak kullanıldığında ise, iç kontrol mantığı, adres hatlarının FET girişlerine bağlar. Adres hattına 1 yazmak için üst FET on, alt FET off tapılır ve dış hatta logik 12 verilir. Adres hattına 0 yazılacaksa ise, üst FET off alt, FET on yapılır ve çıkış toprağa çekilir. Adres oluşturulduktan ve adres yoluna ALE darbesiyle yerleştirildikten sonra, adres yolu data yolu haline gelir. Bu durumda port 0 dış hafızadan bilgi okumak üzere otomatik olarak giriş moduna getirilir.
Giriş/Çıkış 1 (Port 1)
Giriş/çıkış 1 8-bit çiftyönlü bir giriş çıkış birimidir. Bu birim üzerindeki herbir bacak dört LS TTL entegrenin verdiği akımı üzerinden geçirebilir ve dört LS TTL entegreyi sürebilir. Port 1, yalnızca basit giriş/çıkış portudur. Bu porttaki pinlerin basit/giriş çıkış görevinden başka görevleri yoktur. Bu yüzden çıkış direkt olarak FET kapısına (gate) bağlanmıştır. Bu FET iç pull-up direncine sahiptir. Port 1 giriş olarak kullanılacağı zaman, FET off yapılıt ve dolayısıyla çıkış iç pull up direnci ile 1 olur. Dışarıdan bağlanan 0 değeri yüksek iç pull-up direncini yenerek pin girişini 0 yapar. Bu sayede 0 değeri okunur. Dışarıdan girilen 1 değeri ise pin değerini değiştirmez.
Port 1 çıkış olarak kullanıldığı zaman ise, pine 1 yazılacağı zaman FET off yapılır. Bu sayede pull-up direnci üzerinden dış devre 1 değerine sürülür. 0 yazılacağı zaman ise, FET açılır ve FET çıkışı toprağa alınır. Bu port yalnızca basit giriş çıkı olarak kullanıldığında port kontrol logik gerekli olmamıştır.
Şekil.4 Port 1’ın pin yapısı. Çıkışın pull-up ile 5Volta çekildiğine dikkat ediniz.
Giriş/Çıkış 2 (Port 2)
Giriş/çıkış 2'de giriş/çıkış 0 gibi iki göreve sahip bir giriş/çıkış birimidir. Bu birim ya 8-bit çiftyönlü giriş/çıkış olarak, ya da dış hafıza elemanlarına ulaşırken adres yolunun üst bitleri (A8-A15) olarak görev yapabilir. Giriş/çıkış modunda her bir bacak dört LS TTL entegrenin akımını kendi üzerinden geçirebilir ve 4 LS TTL entegreye akım sürebilir. Birim dış hafıza elamanlarına ulaşılmak istendiğinde aktif hale gelerek adres yolu olarak görev yapar. Port 2 adres hattı olarak kullanıldığında, adresleme boyunca kararkı kalır. Port 0 da olduğu gibi data girişi yapmak üzere tekrar 1 lenmez. Port 2 basit giriş çıkış için kullanıldığında ise, aynen Port 1 gibi kullanılır.
Adres birimi olarak mı, basit giriş çıkış birimi olarak mı kullanılacağını belirlemek üzere, port 2 de bir kontrol devresi içerir.
Şekil.5 Port 1’ın pin yapısı. Çıkışın pull-up ile 5Volta çekildiğine dikkat ediniz.
Giriş/Çıkış 3 (Port 3)
Giriş/çıkış 3'de iki görevli bir birimdir. Normal giriş/çıkış birimi olarak kullanıldığında, dört LS TTL entegrenin akımını üzerinden geçirebilir veya dört LS TTL entegreyi sürebilir. Bu birimdeki her bir bacağın aynı zamanda kontrol amaçlı kullanılmak üzere değişik görevleri de vardır. Aşağıdaki liste giriş/çıkış 3 deki bacakların diğer fonksiyonlarını göstermektedir. Basit giriş çıkış portu olarak kullanıldığında port yapısı aynen port 1 gibi düşünülebilir. Port 3 giriş çıkış fonksiyonları, P3 latchleri ile veya farklı SFR özel fonksiyon gözü kontrolleriyle kontrol edilir.
Giriş/Çıkış 3 Alternatif Fonksiyonları
_______________________________________________
Pin Numarası alternatif fonksiyon
_______________________________________________
P3.0 RXD ( seri giriş bacağı)
P3.1 TXD ( seri çıkış bacağı)
P3.2 INT0 ( dış kesme 0)
P3.3 INT1 ( dış kesme 1)
P3.4 T0 (zamanlayıcı/sayıcı 0)
P3.5 T1 (zamanlayıcı/sayıcı 1)
P3.6 WR (dış hafızaya yazma kontrolü)
P3.7 RD (dış hafızadan okuma kontrolü)
_______________________________________________
Şekil.6 Port 3’ün pin yapısı. Çıkışın pull-up ile 5Volta çekildiğine dikkat ediniz.
RST
Giriş bacağı. Bu bacağa verilecek bir YÜKSEK sinyali, mikrokontrolcüyü reset eder. Mikrokontrolcü çalışırken bu pinin değeri 0 olmalıdır. RST sinyali en az 2 makine çevrimi kadar yüksek durumda kalmalı ve daha sonra tekrar 0 a düşmelidir. Bunun için bir RC devresi kullanılır. Aşağıdaki küçük devre bu iş için uygundur. Normal çalışma sırasında, 8051 RST ucu 8.2 kohm direnç ile 0 değerine çekilmiştir. Reset tuşuna basıldığı anda 100 ohm, 8.2 kohm üzerinde 5 volt görülür ve RST ucuna 5volt gider. Kondansatör ise 100 ohm üzerinden hızla boşalır. Tuş bırakıldığında ise kondansatör 8.2 kohm üzerinden biraz daha yavaş dolar. Bu sayede en az iki makine çevrim zamanı 5 volt sinyali garantilenmiş olur.
Şekil.7 8051 RESET devresi.
8051 devresine ilk güç verildiği anda, entegre RST almayabilir ve EPROM içerisindeki program kodu 0000h yerine ilgisiz bir adresten başlayabilir. Bu sebeble 8051 bir cihaz yapımında kullanılacaksa, cihaz açıldığı anda entegrenin yukarıdakine benzer bir şekilde RESET olmasını sağlayacak bir devrenin yapılması gerekir.
ALE/PROG
Adres yakalamayı aktifle (adress latch enable) hattı, dış hafızaya ulaşırken, düşük değerli adres hatlarının adres yoluna konulması görevini yapar. Bu sebeble ALE hattı port 0’ın adres ve data multipleksleme işleminde kullanılan 74573 oktal latch’in CLK ucuna bağlanır.
Şekil.8 ALE hattının adres/data multiplekslemede kullanılması.
Bu bacak aynı zamanda, içerisinde eprom bulunan 8051 serilerinde iç epromun programlanması sırasında kullanılır.
XTAL1, XTAL2
8051 entegresini daha iyi anlayabilmek ve daha iyi kullanabilmek için 8051'in zamanlama kavramını anlamış olmak gerekir. 8051 zamanlaması entegrenin XTAL1 ve XTAL2 bacaklarına bağlı dış bir kristal aracılığı ile sağlanır. Frekans kristalleri kararlılığı yüksek, üzerlerine enerji uygulandığında, belli zaman aralığında belli sayıda elektriksel sinyal üreten cihazlardır. Uygulama gereksinimine göre çok çeşitli frekanslarda çalışan kristalleri piyasada bulmak mümkündür. 8051 entegreleri ile en çok kullanılan kristal frekansları 12 Mhz ve 11.0592 Mhz'lik kristallerdir. 12 Mhz kristal yerine çoğunlukla 11.0592 Mhz kristal tercih edilir. Böyle garip bir frekansta kristal seçiminin sebebi bu kristal frekansının daha yüksek seri haberleşme hızına olanak sağlamasındandır. 8051 serisi entegrelerin data kitaplarında maksimum ve minumum çalışma frekansları belirtilmiştir Dolayısıyla minumum çalışma frekansından daha düşük bir kristal devreye bağlanamaz. Aşağıda 8051 serisi entegrelerin iç osilatör devreleriyle uyumlu bir kristal devresi görülmektedir. Şekildeki kapasitörler 22pF ile 27pF arasında seramik kapasitörlerdir.
Şekil.9 8051 resonant kristal devresi
Mikrokontrolcüler (ve diğer pek çok elektronik sistemler) işlemlerini senkronize etmek için kristalleri kullanırlar. 8051 mikrokontrolcü de işlemlerini senkronize etmek için bir dış kristal kullanır. 8051 entegresini işlemlerini makine çevirimi (machine cycle) dilimleri zamanlamasıyla gerçekleştirir. Bir makina çevrim zamanı 8051 entegrenin bir kodu işlemesi için gerekli minumum zaman anlamına gelir. 8051 entegrelerde bir makina çevrim zamanı kristalin 12 tetikleme zamanına eşittir. Kristal frekansı olarak 11,059,000 kullanan bir entegre için, bir makina çevrim zamanı (1 / 921,853 ) saniyedir.
1/ (11,059,000 / 12) = (1 / 921,583 )
Bunun anlamı 8051 entegrenin bir saniyede yaklaşık 921,853 makina kodu bayt değeri işlediğidir. 12Mhz kullanan bir kristalde saniyede yaklaşık 1,000,000 makina kodu bayt değeri işlenir. 8051 komutlarından bazıları bir makina çevrim zamanından fazla sürede işlenebilirler. Örneğin DIV AB komutu 4 makina çevrimi zamanda tamamlanır. Bu yüzden ortalama olarak bir saniyede işlenen komut sayısı yaklaşık 600,000 civarındadır. Programın çoğunluğu 2 makina çevriminde tamamlanan komutlardan oluşuyorsa, 12 Mhz lik bir kristalle bir saniyede 460,791 komut işlenecektir. ALE sinyali kristal devresinin çalışıp çalışmadığını gösteren en önemli sinyaldir. Bu sinyalin frekansı, kristal freakansının 1/6 sı olmalıdır.
Şekil.10 Osilatör frekansı, makina çevrimi ve ALE sinyali
8051 serisi yeni çıkan entegrelerden bazıları, komut zamanlamasını değiştirmişlerdir. Bu iyileştirilmiş modellerde makina çevrim zamanı 12 kristal vuruşu yerine 4 kristal vuruşu ile zamanlanmıştır. Dolayısıyla entegreye yine 12 MHz lik bir kristal bağlı olmasına rağmen entegrenin komut işleme zamanı 3 kat kısalmıştır.
8051 komutlarının çoğu farklı makina çevrim sayısında çalıştığından, zamanı ölçmek gereken programlarda, çoğunlukla 8051 zamanlayıcıları kullanılır.
_____
PSEN
PSEN hattı ( program store enable) , dış hafızadan bilgi okunması sırasında kullanılan hatlardan biridir. Bu hat ROM veya EPROM elemanın çıkış aktifle (output enable OE) hattına bağlanır. 8051 temel yapısında veri hafıza ve kod hafıza birbirinden ayrılmıştır. Veri hafızaya okuma ve yazmalarda RD ve WR sinyalleri kullanılır. Kod hafıza ise salt okunabilir hafızadır. Bu hafızadan okuma sırasında PSEN sinyali veri hafızadaki RD sinyalinin görevini yapar. Mikroişlemcinin çalışması sırasında PSEN sinyali gerektikçe CPU nun kendisi tarafından üretilir ve kod hafızadan komut okunmasını sağlar. Bu tür kod ve veri hafızanın ayrıldığı dizayn yöntemine Harward Mimarisine göre dizayn dendiğini hatırlayınız. Bu dizaynda program akışı sırasında kod hafızanın herhangi bir baytının okunmasında MOVC komutu kullanılır.
Veri ve kod hafızanın tek bir hafıza parçasıymış gibi dizayn edildiği mimariye Von Neumann mimarisi denmektedir. Bu mimaride kod veya veri hafızadan okuma işlemi için, PSEN ve RD sinyali ANDlenir. Böylece kod ve veri, tüm hafızaya MOVX komutu ile ulaşılır. PSEN ve RD sinyallerinin ANDlenmesiyle elde edilen MEMRD (memory read) sinyali EPROM ve RAM hafızanın OE(output enable) uçlarına bağlanır.
Harwward mimamrisinin üstünlüğü, 64 kbayta kadar RAM ve 64kbayta kadar ROM hafızayı destekleyebilmesidir. Von Neumann mimarisi ise, tüm hafızayı aynı şekilde değerlendirdiğinden programlama teknikleri açısından kolaylıklar sağlamaktadır.
___ ___
RD ve WR
Read ve Write sinyalleri dış veri hafızaya MOVX komutlarıyla okuma ve yazma sırasında kullanılır. Dolayısıyla bu sinyaller veri ve kod hafızanın ayrıldığı dizaynlarda, direkt olarak RAM hafızanın OE (output enable) ve WE (write enable) hatlarına bağlanır. (Harward Mimarisi)
Von Neumann mimarisine göre dizaynda ise, PSEN ve RD sinyallerinin ANDlenmesiyle oluşan MEMRD sinyali ROM ve RAM hafızanın OE uçlarına ve WR sinyali RAM hafızanın WE pinine bağlanır.
Şekil .... Harward mimarisine göre dizayn edilmiş bir 8051 devresini ve Şekil .... Von Neumann mimarisine göre dizayn edilmiş bir 8051 devresini göstermektedir.
___
EA/VPP
Eğer program, entegrenin iç epromuna değilde dış eproma kaydedilmişse EA hattı DÜŞÜK değerde tutulur. Bu hat aynı zamanda iç EPROM'un programlanmasında 21Volt programlama sinyallerinin alınmasında kullanılır.
Şekil.11 Harward mimarisine göre dizayn edilmiş 8051 devresi
Şekil.12 Von Neumann mimarisine göre dizayn edilmiş 8051 devresi