DIGIAC 2000 Deney Seti DIGIAC 2000 deney seti, çeşitli işlemler gerçekleştirmek üzere tasarlanmış üç adet kart ve hem program yazmak hem de kartlarla haberleşmeyi sağlamak için kullanılacak bir adet bilgisayardan oluşmaktadır. Bilgisayarda simgesel dilde kod yazmak ve bu kodu makine diline dönüştürmek için, çalışabilir kod üretebilme yeteneğine sahip MERLIN isimli bir metin düzenleyici program kullanılacaktır. MERLIN programına bilgisayarın masaüstünden kolayca erişebileceksiniz. Ayrıca MERLIN in çalışması için gerekli olan bilgisayar ile kartlar arası bağlantılar yapılmış durumdadır. Deney kitinde üç adet kart vardır; PAT 80286 mikrobilgisayarı DT35 uygulama kartı Tuş takımı ve gösterge birimi PAT 80286 İŞLEMCİ KARTI : Mikroişlemci EPROM O/Y Bellek Kullanıcı ı Sayıcı/Zamanlayıcı RS-232 Arayüzü Kesme Denetiçisi Anahtarlamalı Hatalar PAT sistemi 10Mhzlik sistem saati frekansı ile çalışan bir adet 80286 mikroişlemci kullanmaktadır. Saat frekansı işlemci içerisinde ikiye bölünerek, 5MHz işlemci saati elde edilmiştir. İki adet 32K boyutunda EPROM vardır. Bu 64K lık alanda PAT monitör programı, küçük bir öğretici uygulama yazılımı ve sistem test yazılımı yüklüdür. Ayrıca kartta 2 tane daha 32K lık EPROM takabilmek için yer ayrılmıştır. İki adet 32K lık RAM kullanıcı programları ve yığınları için 62K lık bir bellek alanı sağlamaktadır. Diğer 2K lık alan ise sistem değişkenleri ve sistem yığını için kullanılmaktadır. Sistem kullanıcı giriş/çıkışı için 2 adet 8256 MUART (Multifunctions Universal Asynchronous Receiver Transmitter) kullanır. Biri sistem tarafından, diğeri kullanıcı programları tarafından kullanılır. Kullanıcı MUART ı harici cihazların kontrolü için 16 tane TTL uyumlu giriş/çıkış hattı içerir. Kullanıcı MUART ı beş adet yerleşik sayıcı/zamanlayıcı içerir. Sistem iki adet RS232 arayüzü içerir; Kanal A (Channel A) ve Kanal B (channel B). Her ikiside iki yönlüdür ve sistem MUART ından gelirler. Sistem MUART tarafından üretilen veya harici bir cihaz tarafından üretilen kesmelerin öncelikleri için bir adet 8259 kesme denetim devresi içerir Kartta yer alan 8 anahtar, çeşitli hata testlerinde kullanılırlar İTÜ Bilgisayar Mühendisliği 1
PAT monitör programı işlemler için sistemi başlatmada, tuş takımını okumada ve göstergeyi sürmede kullanılan pek çok yeteneği olan bir yazılımdır. Hem terminal kipinde, hem de tuş takımı kipinde çalışabilir. Tuş takımı kipinde, kullanıcı sisteme 24 adet tuş içeren bir karttan erişebilmektedir. Terminal kipinde ise, kullanıcı PAT sistemine RS232 portu üzerinden uygun bir terminalden veya bir terminal benzetim yazılımından terminal klavyesiyle erişebilmektedir. Her iki kipe de hiçbir saklayıcı veya bellek gözü etkilenmeden geçiş yapmak mümkün olmaktadır. Terminal kipinde çalışılırken PAT: yazılı bir komut istemi görülür. Bu komut istemi gördükten sonra yazılacak her satır PAT a bir komut olarak gönderilecektir. 80286 işlemcisi 24 adres hattına sahiptir. Bunlardan 20 tanesi PAT tarafından kullanılmaktadır. Böylece PAT 1MB lık bir belleği adresleyebilir. 80286 16 bitlik bir işlemcidir. Dolayısıyla 20 bitlik bir adres üretebilmesi için birden fazla saklayıcının birleştirilmesi gerekmektedir. Bu birleştirme işleminde, ilk saklayıcının 16(10H) ile çarpılmasıyla sağlanır. Mesela, belirtmek istediğimiz adres bellekte F000 segmanında yer alsın. Ayrıca belleğin bu segmanı içinde 8000 numaralı gözde yer alsın. Bu durumda bu adresi 80286 da şöyle ifade edebiliriz. Önce segment_no yu 10H ile çarpacağız; F000H * 10H = F0000 olarak bulunur. Şimdi bu segment değeri içinde kayıklık kadar ilerleyeceğiz ; F0000 + 8000 = F8000 adresi aranılan adrestir. Burada ilk saklayıcıya segman saklayıcısı, diğer saklayıcıda kayıklık saklayıcısı denilir. Şimdi de sistemin bellek haritasına bir göz atalım; 00000H-007FFH arasındaki oku/yaz bellek kısmı PAT monitör programı ve sistem kesme vektörleri için ayrılmıştır. Kullanıcı için ayrılan RAM 00800H 0FFFFH arasındadır. İTÜ Bilgisayar Mühendisliği 2
Kart üzerinde bir sıfırlama(reset) düğmesi yer alır. Bu düğmeyle yapacağınız yeniden başlatmalarda saklayıcı ve bellek içerikleri silinmeyecektir. Dolayısıyla program hatalarında, tıkanmalarında bu tür bir sıfırlama tercih edilmelidir. Kartın bağlı olduğu kutudaki güç düğmesinden yapacağınız sıfırlama ise tüm bellek ve saklayıcı içeriklerini temizleyecektir. Tuş Takımının Kullanımı : Sistemi ilk açtığınızda veya her sıfırlamadan sonra tuş takımının üstündeki göstergede ready ifadesi görülür. Bir adres girmek için M tuşuna basılır ve göstergede Adr 0100 görülür Adr address manasındadır ve 0100 de kayıklık numarasıdır. Burada şu unutulmamalıdır ki, bu kayıklık değeri için segment numarası 0800 dür. Bu kayıklık değerini tuş takımından yeni değerler girerek veya + ve tuşlarını kullanarak değiştirmek mümkündür. Segment numarasını değiştirmek için S tuşuna basarak yine kayıklıkta olduğu gibi değiştirebiliriz. Bir adres belirledikten sonra, bu adresin içeriği gösterilmek istenildiğinde M tuşuna basılmalıdır. Bu işlemden sonra adresin kayıklık değeri ve adresteki veri gösterilecektir. Bu şekilde bir kod parçası girdikten sonra bunu çalıştırmak içinse G tuşuna basıp kodun başlangıç adresi girilmelidir. Daha sonra tekrar G tuşuna basıldığında ise kod çalışacaktır. P tuşu ise port içeriklerini görmede ve değiştirmede kullanılır. P tuşuna basıldığında göstergede prt default_port_adresi şeklinde bir görüntü belirir. Öntanımlı port adresi 0080H dir. Siz bu adres yerine başka adres girerek ve daha sonra tekrar P tuşuna basarak istediğiniz portun içeriğini öğrenebilir veya değiştirebilirsiniz. B tuşu ise hata ayıklama işlemlerinde kullanılır. B tuşuna bastığınızda yazdığınız adrese duraksama noktası (breakpoint) konulur. Eğer duraksama noktasını kaldırmak isterseniz K tuşunu kullanabilirsiniz. 80286 da Giriş / Çıkış İşlemleri : 80286 işlemcisi yalıtılmış bir sisteme sahiptir. Dolayısıyla için farklı komutlara sahiptir. 80286 da IN ve OUT komutları giriş ve çıkış için kullanılmaktadır. sırasında adres yolunda 16 bitlik adresler dolaşır. yalıtılmış ve tüm cihazları veri yolunun düşük 16bitlik kısmına bağlanmışlardır. Bu sebepten işlemleri için belleğe erişilir gibi 24 bitlik adresler yerine 16 bitlik adresler kullanılır. Veriler mikrobilgisayara portlar aracılığıyla girer ve çıkar. PAT ta 2 tane 8256 MUART (Mutifunctional Universal Asynchronous Receiver Transmitter) bulunmaktadır, bunlardan biri kullanıcı için biride sistem için ayrılmıştır. Kullanıcı arabirimi 2 tane 8 bitlik porta sahiptir. Ayrıca sayıcı/zamanlayıcı saklayıcı sistemine ve seri iletişim yapabilme kapasitesine sahiptir. İTÜ Bilgisayar Mühendisliği 3
Programlarınızda kullanabileceğiniz bazı port numaraları aşağıda sunulmuştur ; 8259 Kesme Kontrol Devresi Okuma Saklayıcısı Yazma Saklayıcısı adresi Komut Sözcüğü Komut Sözcüğü 0040H Komut Sözcüğü Komut Sözcüğü 0042H Sistem 8256 MUART ı Okuma Saklayıcısı Yazma Saklayıcısı adresi Mode Mode 0066 Port1 Kontrol Port1 Kontrol 0068 Port1 Port1 0070 Port2 Port2 0072 Timer1 Timer1 0074 Timer2 Timer2 0076 Kullanıcı 8256 MUART ı Okuma Saklayıcısı Yazma Saklayıcısı adresi Mode Mode 0086 Port1 Kontrol Port1 Kontrol 0088 Port1 Port1 0090 Port10 Port2 0092 Timer1 Timer1 0094 Timer10 Timer2 0096 Terminal kipinde portların içeriklerini görmek veya değiştirmek için CP komutu kullanılır. Tuş takımında ise aynı işlem P tuşu ile yapılabilir. İTÜ Bilgisayar Mühendisliği 4
Port1(portb) in her bir biti ayrı ayrı giriş/çıkış olarak yönlendirilebilir. Port2(porta) nin ise alçak anlamlı 4 biti ve yüksek anlamlı 4 biti bir bütün olarak giriş/çıkış olarak yönlendirilebilir.port1 adresi 90H Port2 adresi ise 92H dir. İki özel giriş/çıkış komutu vardır: IN : Giriş portunun içeriğini akümülatöre yükler. Örn: IN AL,90H OUT : Akümülatör içeriğini çıkış portuna yükler. Örn: OUT 90H,AL Port1 i istenilen şekilde yönlendirmek üzere, adresi 88H olan Port1 kontrol kütüğü ne, giriş olacak bitler için 0 ve çıkış olacak bitler için 1 şeklinde kodlanmış veri yazılır. Mesela; Port1 in 7,5,4,0 bitleri çıkış 6,3,2,1 bitleri giriş olarak yönlendirmek için MOV AL,B1H OUT 88H,AL program parçası yazılmalıdır. Port2 nin yönlendirilmesi için mod saklayıcısının düşük anlamlı 3 biti kullanılır. 4lü olacak şekilde ikiye ayrıldığı için bu portun koşullanması için 3 bit yeterlidir. P2C2 P2C1 P2C0 YAB* DAB** 0 0 0 giriş giriş 0 0 1 giriş çıkış 0 1 0 çıkış giriş 0 1 1 çıkış çıkış * Yüksek anlamlı bitler ** Düşük anlamlı bitler Mod saklayıcısının adresi 86H dir. Mesela; Port2 yi YAB giriş ve DAB çıkış olacak şekilde yönlendirmek için: yazılmalıdır. MOV AL,01H OUT 86H,AL İTÜ Bilgisayar Mühendisliği 5
80286 İşlemcisinin Saklayıcı Kümesi : 80286 da yer alan saklayıcılar 16 bitliktir. Bunlardan AX, BX, CX ve DX e 8 bitlik erişim mümkündür. Bu yüzden bu saklayıcılar iki kısımdan oluşmuş şekilde gösterilmektedirler. Genel Amaçlı Saklayıcılar Saklayıcı Yüksek Anlamlı Kısım Düşük Anlamlı Kısım AX AH (8 bit) AL (8 bit) BX BH (8 bit) BL (8 bit) CX CH (8 bit) CL (8 bit) DX DH (8 bit) DL (8 bit) SP BP SI DI Yığın göstergesi Taban göstergesi Kaynak sıra saklayıcısı Hedef sıra saklayıcısı Segman Saklayıcıları Durum Denetim Saklayıcıları CS Kod segmanı IP Komut göstergesi DS SS Veri segmanı Yığın segmanı F Bayraklar ES Ekstra segman MSW Makine durum sözcüğü Bahsi geçen F saklayıcısı mikroişlemciler dersinde görülen klasik işlemci tipindeki durum-denetim saklayıcısının içerdiği bayrakları içeren bir saklayıcıdır. İTÜ Bilgisayar Mühendisliği 6
IP saklayıcısı komutun kayıklık değerini tutar. CS ise segment numarasını tutar. Dolayısıyla CS-IP saklayıcı çifti 80286 için program sayacı yapısını oluşturmuş olurlar. Tabii ki yine bu saklayıcıdaki bilgiler bir adres olarak yorumlanacakları için bu iki saklayıcıdaki toplam bilginin 20 bitlik bir adres olduğu unutulmamalıdır. Terminal kipinde veya tuş takımı kipinde bir saklayıcının içeriğini görmek veya değiştirmek için R komutu veya tuşu kullanılmalıdır. Bunların dışında için kullanılan kullanıcı MUART ında da 5 tane 8-bitlik zamanlayıcı saklayıcısı yer alır. DC motor kontrol deneyinde bu zamanlayıcılardan birini olay sayma işinde kullanmanız gerekecektir. Bunun için bu tür bir saklayıcının ne tür bilgiler içerdiği aşağıda sunulmuştur. 80286 İşlemcisinde Kesme : 80286 kesmeler için 1K lık oku/yaz bellek ayırmıştır. Bu sebeple iç içe birçok kesmeye izin verecek donanıma sahiptir. Kesmeler bir dış donanımdan gelebileceği gibi program akışlarında INT komutu kullanılması ile veya bazı hata durumlarında (sıfıra bölme, mevcut olmayan işlem kodu) oluşabilir. Bu durumlara exception denir. Maskelenebilen ve maskelenemeyen kesmeler vardır. Maskelenebilen kesmelere izin STI (set interrupt enable flag) ile verilir ve CLI (clear interrupt enable flag) ile kaldırılır. Maskelenemeyen kesmeler üzerinde bu tip işlemler yapılamaz. Kesme hizmet programlarından dönmek için RETURN komutu kullanılır. Kesme hizmet programına bağlanırken Komut İşaretçisi, Bayraklar, ve CX saklayıcısı yığına itilir. RETURN komutu yürütüldüğünde ise bu değerler çekilir. NMI (non maskable interrupt) en öncelikli kesmedir. Bağlanılacak kesme hizmet programı başlangıç adresi 0000:0008-0000:000F adres aralığına önce kayıklık sonra segman gelecek şekilde yazılmalıdır. İTÜ Bilgisayar Mühendisliği 7
Mesela, KHP adresi 0080:0200 ise; offset: 0000:0008 = 00 0000:0009 = 02 segment: 0000:000A = 80 0000:000B = 00 şeklinde yazılması gerekir. Kesme vektörleri : Kesme Vektör No Kesme Vektörü K* E** Öncelik IR0 20H 0080H E H En yüksek IR1 21H 0084H E L IR2 22H 0088H E L IR3 23H 008CH E H IR4 24H 0090H E H IR5 25H 0094H H Kullanıcı muart IR6 26H 0098H H Sistem muart IR7 27H 009AH E H En düşük * Kullanıcıya açık mı? E:Evet, H:Hayır ** Low mu yoksa High iken mi etkin? L:Low; H:High, muart: muart kullanılıyor. Her kesme hizmet programı sonunda yeniden kesme alınabilmesi için kesmenin bitiğini belirtmek için kesme kontrolörü ne 20H yazılmalıdır. İTÜ Bilgisayar Mühendisliği 8
Kesme izin ve reset saklayıcıları Mod Saklayıcısı L0 Zamanlayıcı 1 P2C0 port2 kontrolü L1 L2 Zamanlayıcı 2 veya iskele kesmesi Kullanılmıyor P2C1 P2C2 (daha önce anlatılmıştı) L3 L4 Zamanlayıcı 3 veya zamanlayıcı 3 ve 5 RS232 alıcı kesmesi CT2 CT3 Sayıcı/zamanlayıcı L5 RS232 verici kesmesi TSC Sayıcı/zamanlayıcı 5 kontrolü L6 Zamanlayıcı 4 veya zamanlayıcı 10 ve 4 T24 Sayıcı/zamanlayıcı 2 ve 4 kaskat L7 Zamanlayıcı 5 veya iskele 2 el sıkışma Değerlerinin lojik 1 olması ilgili kesmelere izin verildiğini gösterir. Adres saklayıcısının okunması tüm kesmeleri kaldırır. T35 Sayıcı/zamanlayıcı 3 ve 5 kaskat RESET tüm kesmelerden önceliklidir. Sistemi başlangıç koşullarına getirir. Vektörü : F000H=FFF0H dir. Buradaki ilk komut tersine çevrildiğinde JMP 0000 olduğu görülür. Buradan da PAT ın monitör programı istenmektedir. Baştan başlama (reset) işlemi üç değişik şekilde yapılabilir Soğuk başlama (cold start), monitörü yeniden başlatma ve sıcak başlama. Soğuk başlama PAT kartına gerilim verilmesiyle yapılır. Bu durumda oku/yaz bellek sıfırlanır. Monitör programı yeniden başlatma, albaştan (Reset) tuşuna 2 kez arka arkaya basılması ile yapılır ve tüm değişkenler başlangıç değerlerini alırlar ancak oku/yaz bellek etkilenmez. Sıcak başlama albaştan düğmesine bir kez basılmasıyla oluşur. Hiç bir değişken ya da program etkilenmez. İTÜ Bilgisayar Mühendisliği 9
DT35 UYGULAMA KARTI DT35, mikrobilgisayarın kontrol edebileceği aygıt ve araçları içeren bir birimdir. Yazılan programların çeşitli çevre birimler üzerindeki kontrolünü göstermek amacıyla tasarlanmıştır. İçeriğinde; 1. 8-bit Dijital-Analog çevirici (DAC) 2. 8-bit Analog-Dijital çevirici (ADC) 3. DAC tarafından sürülen, geri beslemeli bir motor 4. ADC tarafından okunabilen bir potansiyometre 5. DAC tarafından kontrol edilen bir optik verici ile ADC tarafından okunan bir optik alıcı 6. TTL uyumlu bir giriş/çıkış portundan kontrol edilen bir ses verici 7. TTL uyumlu iki giriş/çıkış portundan kontrol edilen bir ultrasonik verici ve alıcı 8. İki adet 8 bit port (Port-A ve Port-B) ve içeriklerini görüntülemek için bu portlar tarafından sürülen 16 led Port A: Dijital-Analog çeviciye 8-bit veri yazmada, Analog-Dijital çeviriciden 8-bit veri okumada kullanılır. Port B: DAC, ADC dönüşümlerini kontrol etmede, motorun geribeslemesini okumada, ses vericiyi sürmede ve ultrasonik alıcı-vericinin uzaklık ayarını kontrol etmede kullanılır. Giriş-Çıkış Portlarının Kullanımı: Giriş-çıkış portlarını gözlemleme için ledlerin durumuna bakılır. Eğer bir led, lojik 1 konumundaysa yanar, lojik 0 konumunda ise sönüktür. İTÜ Bilgisayar Mühendisliği 10
Portların hatlarının kullanıldığı yerler: Port Kullanımı Yön Açıklama PA0 D0 PA1 D1 PA2 D2 PA3 PA4 PA5 D3 D4 D5 1 byte veri DAC a yazılır ya da ADC den okunur D0=lsb D7=msb PA6 D6 PA7 D7 PB0 EN Ç PB1 WR Ç DAC ın enable girişi lojik 0 da olduğu müddetçe DAC yoldan (D0-D7) gelen bilgiyi analoga çevirir. Enable girişi lojik 1 olduğu vakit son kez çevirme işlemi yapılır ve çıkış o değerde dondurulur. Bu girişin lojik 1 den 0 a geçişinde analog dijital dönüşümü başlar. PB2 BSY G Bu çıkış analog-dijital dönüşümü başladığı zaman lojik 0 a iner ve yaklaşık 9μ s sonra lojik 1 e çıkar ve verinin yoldan okunabileceğini belirtir. PB3 RD Ç Bu giriş ADC nin çıkışından verinin okunabilmesi için lojik 0 a indirilir. Aksi halde çıkış yüksek empedans konumunda bekler. PB4 DSC G DC Motordaki optik kesici diski için çıkış. Bu diskin üzerindeki 2 delik vasıtasıyla 2 pozitif darbe oluşmaktadır. PB5 PZO Ç Piezo ses vericisi için kontrol girişi PB6 UTX Ç Bu girişin lojik 1 olması ultrasonik vericiyi aktif eder. PB7 URX G Ultrasonik alıcı tarafından 40 khz lik ses algılandığı zaman çıkışta 40 khz lik dalga oluşturur. Aksi halde çıkış lojik 1 dedir. İTÜ Bilgisayar Mühendisliği 11
DT35 Kitinin Blok Diyagramı İTÜ Bilgisayar Mühendisliği 12
Dijital-Analog Çevirici (DAC): Çizimi yukarıda verilen 8-bitlik DAC, bir anahtar vasıtasıyla motora yada optik vericiye bağlanır. Dijital Analog çeviricide girişten gelen 0-FF arası dijital işaret 0-2.55V arası analog işarete dönüştürülür. DAC tan çıkış alabilmek için PB0 lojik 0 yapılarak EN sinyali oluşturulur, ondan sonra da veri A portuna yazılır. Çıkış anahtarın durumuna göre motora ya da optik vericiye gönderilir. Analog-Dijital Çevirici (ADC): 8-bitlik ADC, bir anahtar vasıtasıyla optik alıcıya ya da potansiyometreye bağlanır. Diyagramı; İTÜ Bilgisayar Mühendisliği 13
Analog Dijital çeviricide girişten gelen 0-2.55V arası analog işaret 0-FF arası dijital işarete dönüştürülür ve A portundan dışarı verilir. DAC tan çıkış alabilmek için aşağıdaki işlemler yapılmalıdır: 1. WR ve RD girişleri lojik 1 yapılır. 2. Çevirme işlemine başlamak için WR girişine (1 0 1) bit dizisi gönderilir. Burada dikkat edilmesi gereken nokta bu gönderim işleminin 200 ns den küçük olması gerektiğidir. 3. Çevirme işlemi bitene kadar beklenmelidir. Bunun için de BSY çıkışının lojik 1 e gelip gelmediği gözlenmelidir. Eğer çevirme işlemi için yazılan kod 9μ s (bir çevirme işleminin maksimum süresi) den fazla süreceği biliniyorsa bu kontrole gerek kalmamaktadır. 4. RD girişi lojik 0 yapılarak ADC nin veri çıkışı aktif edilir. 5. A portundan veri okunur. 6. RD girişi lojik 1 yapılarak ADC nin veri çıkışı pasifize edilir. Bu sürecin zaman diyagramı aşağıdaki gibidir: İTÜ Bilgisayar Mühendisliği 14