80C51 Mikrodenetleyicilerinde Timer-Counter Yapılarının FPGA Mimarileri Kullanılarak Geliştirilmesi Özet Murat ÇAKIROĞLU 1 Ahmet Turan ÖZCRİT 1 alil İbrahim SKİKURT 1 Özdemir ÇTİN 1 1 Sakarya Üniversitesi, Teknik ğitim Fakültesi, lektronik ve Bilgisayar ğitimi Bölümü, 54187 Adapazarı {muratc,aozcerit,eskikurt,ocetin}@sakarya.edu.tr Bu makalede, 80C51 mikrodenetleyicisinin endüstriyel alandaki bazı eksikliklerini gidermek ve daha modüler bir yapıya kavuşmasını sağlamak için FPGA (Alan Programlanabilir Kapı Dizisi) mimarileri içerisinde gerçekleştirilmesi amaçlanmıştır. SAU8051 olarak adlandırılan tasarım, VDL donanım tanımlama dili yarımıyla ve Virtex ailesi FPGA elemanı kullanılarak gerçekleştirilmiştir. Tasarım süresince 80C51 mikrodenetleyicisinin orijinal mimarisine mümkün olduğunca sadık kalınmıştır. Anahtar Sözcükler: 80C51, IP-core, FPGA Improving Timer-Counter Units in the 80C51 Microcontrollers Using FPGA Architectures Abstract In this paper, the 80C51 microcontroller has been reconfigured in order to overcome some shortcomings of it and to obtain much more modular configuration by the help of FPGA (Field Programmable Gate Array) architectures. The design, so-called SAU8051, is described by VDL (a ardware Description Language) and implemented in a Virtex device, which is an FPGA chip produced by Xilinx. Throughout the design cycles, the authenticity of the 80C51 is preserved as much as possible. Keywords: 80C51, IP-core,FPGA 1. Giriş lektronik sistemlerin tasarımında modern yaklaşım, system-on-chip (SoC) olarak ifade edilen bir teknolojidir [1]. SoC teknolojisinde, sistem içerisindeki birimler bir donanım tanımlama dili (VDL,VRILOG veya SystemC) yardımıyla ifade edilir. Sistemin tanımlanma aşamasını takiben derleme ve davranışsal benzetim adımları gerçekleştirilir. Sistemden beklenen cevapların elde edilmesiyle sistem üzerinde zamansal benzetim aşamasına geçilir. Bütün birimler, sentezleme ve yerleştirme işlemleri sonunda tekrar programlanabilir bir tümleşik devreye aktarılır. Burada 1
bahsedilen teknolojinin tüm evrelerinde yazılım tabanlı geliştirme sistemleri kullanılır. Sistemin uygulama aşamasında ise gerek büyük kapasiteleri ve gerekse de esnek yapılarından [2] dolayı kompleks dijital sistemlerin ve prototip devrelerin tasarımında en çok tercih edilen uygulama teknolojilerinden birisi olan, FPGA tümleşik devreleri kullanılmıştır. [3]. Intel 80C51 mikrodenetleyicisi, kullanım kolaylığı, esnekliği v.b. özellikleri sayesinde mikrodenetleyici piyasasına hakim olmuştur ve bu yüzden çoğu elektronik devre tasarımında yaygın olarak kullanılmaktadır [4]. Fakat maliyet / performans açısından incelendiğinde ihtiyaca ve amaca yönelik olarak yeniden biçimlendirilme gerekliliği ortaya çıkmıştır. Gerçekleştirilecek tasarımın özelliğine göre Timer / Counter ve Seri haberleşme birimlerinin sayısının belirlenmesi, gerekli olan komut setinin tercih edilmesi, hafıza birimlerinin miktarının ihtiyaca yönelik olarak seçilmesi düşük maliyet / makul performans oranını sağlayacaktır. Bu çalışmada, endüstriyel alandaki uygulamaların gereksinimlerini karşılayacak şekilde ve kullanıcının isteği doğrultusunda, çevre birimlerinin sayısı ve türü, hafıza birimlerinin büyüklüğü, komut seti, komut işleme süresi belirlenebilen SAU8051 olarak adlandırılan IP-core (İşlemci tabanlı çekirdek), tasarımı gerçekleştirilmiştir. 2. İşlemci Tabanlı Çekirdek Mimarisi RST CLK INT0 INT1 T0 T1 RX P0 P1 P2 P3 A Portlar Timer/Counter Komut Çözücü Bit Servis SAU8051_CPU Dahili RAM N Timer/Counter ALU Kontrol Kaydediciler Adress Çözücü Dahili ROM Seri aberleşme Kesme SAU8051_COR P0 P1 P2 P3 PSN TXD RD WR Şekil 1. İşlemci tabanlı çekirdek blok diyagramı. Şekil 1 de, kontrol, ALU, Timer/Counter, seri haberleşme, Kesme birimleri, dahili RAM ve ROM hafıza bloklarından oluşan tekrar konfigüre edilebilir 8051 mikrodenetleyicisinin blok diyagramı görülmektedir. Modellenen 8051 mikrodenetleyicisinin standart özellikleri şunlardır; 32 Giriş/Çıkış portu 128 Byte dahili RAM 64 Kbyte a kadar dahili ROM 2
64 Kbyte a kadar harici ROM ve RAM 2 adet Timer/Counter 1 adet seri haberleşme birimi 2 adet harici kesme kaynağı Tasarımda 8051 in standartlarını belirleyen birkaç VDL sabiti vardır. Uygulamalardaki ihtiyaca yönelik olarak ilgili VDL sabitlerine uygun değerler atanmasıyla kullanıcıya çekirdeğin yapısını belirleme imkanı verilir. Böylece RAM ve ROM büyüklükleri, komut seti, kesme kaynaklarının sayısı, zamanlayıcı/sayıcı ve seri haberleşme birimlerinin sayısı isteğe göre belirlenebilir. 3. Timer/Counter nin Özellikleri Timer/Counter biriminde Timer 0 ve Timer 1 olarak adlandırılan 2 adet 16 bitlik sayıcı mevcuttur. Timer 0 ve Timer1 sayıcıları 4 tane sayma moduna sahiptir [5]. 13 bit Timer/Counter modu (Mod 0) 16 bit Timer/Counter modu (Mod 1) 8 bit otomatik yükleme modu (Mod 2) Ayrık mod (Mod 3) P3.4 T0 OSC/12 T0 ve TL0 Güncelleme Mod Seçimi Taşma sinyali TMOD GAT M 1 C/ T M 1 M 0 GAT C/ T M 0 P3.2 INT0 TCON TF0 TR0 Şekil 2. Timer 0 ın basitleştirilmiş blok diyagramı. Şekil 2 de Timer 0 ın basitleştirilmiş blok diyagramı görülmektedir. Timer 0 ve Timer 1 sayıcıları, 8051 mikrodenetleyicisinin SFR (Special Function Register) sinde bulunan TMOD ve TCON kaydedicileri tarafından kontrol edilmektedir. Timer 0 ve Timer 1 sayıcılarının timer olarak yada counter olarak çalışmasının belirlenmesi, sayma modlarının seçilmesi ve sayma işleminin bir kesmeye bağlı olarak başlayıp başlamaması TMOD kaydedicisindeki ilgili bitlere uygun değerler atanması ile belirlenebilir. Timer 0 ve Timer 1 sayıcılarının taşma ve çalış bayrakları TCON kaydedicisinde bulunmaktadır. 3
4. Timer/Counter nin Sadeleştirilmiş Akış Diyagramı Şekil 3 de Timer / Counter biriminin basitleştirilmiş akış diyagramı görülmektedir. Clock bölme prosesinde 12 Mhz sistem saat sinyalinden 1Mhz lik makine saykılı elde edilir. T0 (Timer 0) ve T1 (Timer 1) düşen kenar sezme proseslerinde, T0 ve T1 harici girişlerindeki düşen kenarlı sinyallerin sezilme işlemi gerçekleştirilir. Daha sonraki aşamada ise TMOD kaydedicisinin 1. ve 2. bitleri olan M 1 M 0 (T0 için mod seçme) pinlerinin ve 5. ve 6. bitleri olan M 1 M 0 (T1 için mod seçme) pinlerinin durumuna göre gerekli işlemler yapılır. Başla Clk Bölücü T0 düşen kenar sezme T1 düşen kenar sezme T0_mod=? 00 T0_mod=? 01 T0_mod=? 10 T0_mod=? 11 Timer 0 Mod0 Timer 0 Mod1 Timer 0 Mod2 Timer 0 Mod3 Null T1_mod=? 00 T1_mod=? 01 T1_mod=? 10 T1_mod=? 11 Timer1 Mod0 Timer1 Mod1 Timer1 Mod2 Timer1 Mod3 Null Şekil 3. Timer / Counter biriminin basitleştirilmiş akış diyagramı. 4
5. Simülasyon Sonuçları Şekil 4. de Timer / Counter biriminin simülasyon sonuçları görülmektedir. Tek bir ekranda tüm simülasyonun gözlenmesi mümkün olmadığından yalnızca simülasyonun bir kısmı alınmış ve sayma kaydedicilerine taşmalarına yakın değerler yüklenmiştir. Timer0_mod ve timer1_mod sinyalleri sayıcıların hangi moda çalıştığını göstermektedir. Şekil 4. Timer/Counter biriminin simülasyon sonuçları 6. SAU8051 Mikrodenetleyicisinin Gerçeklenmesi Gerçekleme aşaması için Xilinx firmasının ürünü olan Virtex ailesi XCV300 FPGA elemanı kullanılmıştır. 64 KB dahili ROM, 128 Bayt dahili RAM, bir adet seri haberleşme birimi, 2 adet Timer / Counter birimi ve diğer standart özelliklere sahip olan çekirdek, FPGA tümleşik devresinin % 61 luk bölümünü kullanmıştır. Tasarımı yapılan SAU8051 mikrodenetleyicisinin maksimum saat sinyal frekansı 40 Mhz olup pipeline komut işleme tekniğine göre çalıştığından bazı komutları işleme süresi standart 80C51 mikrodenetleyicisinden daha kısadır. Modellenen sistemin tüm birimlerinin benzetimlerinin yapılması, sentezlenmesi ve gerçekleştirilmesi aşamalarında Xilinx (IS 5.1i) ve Mentor Graphics (FPGA Advantage 5.4 Pro incorporating ModelSim 5.6f ve Leonardo Spectrum 2002e) programlarının sunduğu FPGA geliştirme araçları kullanılmıştır. 5
7. Sonuçlar Bu çalışmada, mikrodenetleyici piyasasında en yaygın kullanıma sahip olan 80C51 mikrodenetleyicisinin FPGA tümleşik devreleri üzerinde tasarımı gerçekleştirilmiştir. Platform olarak FPGA mimarilerinin kullanılma sebebi, prototip olarak tasarlanan bu çalışmanın daha esnek bir kullanıma sahip olması yani üzerinde istenilen değişikliklerin kolayca yapılabilmesi, tasarım sürecinin kısa olması ve çok farklı uygulamaların gerçekleştirilebilmesi sayılabilir. Kullanılacak FPGA elemanının kapasitesine bağlı olarak IP-core un çevre birimlerinin sayısı özellikle de endüstriyel uygulamalarda çok ihtiyaç duyulan Timer / Counter birimlerinin sayısı, tasarımın parametrelere bağlı olarak gerçekleştirilmesi sayesinde kolaylıkla değiştirilebilir. Gelecek çalışmalarda Gerçek zamanlı sayma biriminin tasarlanarak çekirdek mimari içine entegre edilmesi hedeflenmektedir. Teşekkür Bu çalışma, D.P.T tarafından desteklenen Mikroişlemci ve Mikrodenetleyici yapıların FPGA-CPLD yapılarda gerçekleştirimi isimli proje kapsamında gerçekleştirilmiştir. KAYNAKLAR [1]Borgatti, M., Lertora, F., Foret, B., Cali, L. : A Reconfigurable System Featuring Dynamically xtensible mbedded Microprocessor, FPGA and Customizable I/O, I Custom Integrated Circuits Conference, (2002) 13-16 [2]Bezarra,.A, Gough, M.P,: A Guide to Migrating from microprocessor to FPGA Coping with the Support Tool Limitations, LSVIR Microprocessor and Microsystems 23, (1999) 561-572 [3]Salcic Z.:PROTOS-A microcontroller/fpga-based prototyping system for embedded applications, LSVIR Microprocessor and Microsystems, pp. 249-256, 1997. [4]Feng S., Yuanging G., Runde Z.:The Design of a igh Performance and Low Power mbedded Microprocessor Core OM80C51, ASIC, I 4th International Conference on, pp. 765-768, 2001 [5]Philips Semiconductors, 80C51-Based 8 bit Microcontrollers Data andbooks, IC20, 1994. 6