Akademik Bilişim 11 - XIII. Akademik Bilişim Konferansı Bildirileri 2-4 Şubat 2011 İnönü Üniversitesi, Malatya VHDL ile Mikroişlemci Tasarımı ve Eğitimde Uygulanabilirliği Deniz Taşkın 1, Kenan Baysal 1, Nurşen Topçubaşı 2 1 Trakya Üniversitesi, Bilgisayar Mühendisliği Bölümü, Edirne 2 Okan Üniversitesi, Uygulamalı Bil.Yüksekokulu, Bilişim Sist. ve Tek. Bölümü, İstanbul deniztaskin@trakya.edu.tr, kenanbaysal59@gmail.com, nursen.sucsuz@okan.edu.tr Özet: Günlük hayatta kullandığımız neredeyse her elektronik cihazda sistemin çalışmasını kontrol eden ve işlemleri sonuçlandıran bir mikroişlemci bulunmaktadır. Yarı iletkenlerden meydana gelen transistörler mikroişlemciyi oluşturan temel elektronik devre elemanıdır. Bazı mikroişlemcilerde transistör sayısı milyarlara ulaşmaktadır. Mühendislik açısından bu koşullar mikroişlemcinin tasarımı ve bu konuda eğitim vermeyi zorlaştırmaktadır. Bu çalışmanın amacı VHDL dili kullanılarak bir mikroişlemci tasarımının basite indirgenmesi ve eğitimi alanında sağladığı kolaylıkları göstermektir. Anahtar Kelimeler: Mikroişlemci tasarımı, VHDL, Aritmetik Lojik Ünite Designing Microprocessor with VHDL and Applicability in Education Abstract: Almost every electronic device that we use in daily life has a microprocessor that controls working of system and results the procedures. Transistors, consisting of semiconductors, are basic electronic circuit devices that compose the microprocessors. In some microprocessors, transistors could reach billions. In terms of engineering designing a microprocessor is too much hard and is too hard to educate on this subject. The aim of this study is to show, how to simplify a microprocessor design and to provide the facilities in education area. Keywords: Microprocessor design, VHDL, Arithmetic Logic Unit 1. Giriş Bir mikroişlemci farklı görevler icra eden bir dizi birimden meydana gelmektedir. Her birimin giriş ve çıkışlarına göre bir davranışı mevcuttur. Bu davranışları oluşturan yine bu birimlerin içinde bir dizi elektronik devredir. Bir mikroişlemciyi tasarlamak için elektronik konusunda bilgili ve tecrübeli olmanın dışında yeteneğe de sahip olmak gereklidir. Örnek olarak Amiga ait grafik işlemcisinin tasarım aşamaları ele alındığında, ilk prototipin genel yapısının ve devre bağlantılarının öncelikle kağıt üzerinde tasarlandığı görülmektedir. Ardından bu devreler şekil 1 de de görüldüğü gibi kartlar üzerinde entegrelerin kablolar ile birleştirilmesi sonucunda oluşturulmaktadır. Agnus ve Defne Dizileri olarak adlandırılan bu prototipler istenilen işlemleri başarılı bir şekilde gerçekleştirdiğinde tasarı, üretim aşamasına gelmektedir. Bir hata ile karşılaşılması durumunda ise tasarım en baştan incelenmesi ve gerekirse sıfırdan tekrar oluşturulması gerekmektedir. Bu da zaman ve para kaybının yanı sıra işlemci tasarımı yapacak veya mevcut tasarım üzerinde geliştirme yapabilecek mühendis yetiştirmeyi zorlaştırmaktadır. VHDL donanım dili sayesinde sadece birimlerin davranış biçimlerini tanımlayarak işlemci birimleri oluşturulabilmektedir. Günümüzde mikroişlemci temel bilgisine sahip bir öğrenci temel bir mikroişlemciyi VHDL kullanarak tasarlayabilmektedir. Her birim birbirinden bağımsız parçalar biçiminde tasarlanarak sonradan birleştirilebilmektedir. 1
VHDL ile Mikroişlemci Tasarımı ve Eğitimde Uygulanabilirliği Deniz Taşkın, Kenan Baysal, Nurşen Topçubaşı Şekil 1. Agnus ve Defne Dizileri VHDL ile yapılan bir tasarımın basitliği ve anlaşılabilirliği, mikroişlemcinin temel birimi olan Aritmetik Lojik Ünitenin tasarımı incelenerek görülebilir. 2. 16 Bitlik Aritmetik Lojik Ünite Tasarımı Şekil 2. ALU nin komşu birimlerle bağlantısı LD girişi aktif edildiğinde; AC aktar, AND, ADD, CMP, DR aktarma, INPR aktar, SHR veya SHL işlem girişlerinden aktif edilene ait edilen sonucu JK tipi yaz-boza aktarmaktadır. Yaz-boz, sonuca ait 1 bitlik değeri bir saat vuruşu süresince korumaktadır. Devresi çıkartılacak 16 bitlik ALU nun gerçekleştireceği işlemler ve işlemlerin seçim kodları Tablo 1 de, ALU ya bağlı birimler Şekil 2 de gösterilmiştir. 2.1 Lojik Olarak 16 Bit ALU Tasarımı Şekil 2 de görüldüğü gibi ALU ya ait yazma girişi(load) 1 bit, işlem seçim girişi 3 bit, giriş yazacı (input register) girişi 8bit, veri yazacı girişi (data register) 16 bit ve akümülatör (AC) girişi ise 16 bittir. Burada bulunan 3 bitlik işlem seçim uçları ve Load ucu doğrudan işlemcinin kontrol birimine bağlıdır. Tek veri çıkışı ise doğrudan Akümülatöre bağlıdır, E çıkışı ise yapılan aritmetik işlem sonucunda oluşan elde bitini E bayrağına aktarır. Tablo 1 de belirtilen sekiz adet işlem 16 bitlik ALU devresinin her bir biti için ayrı ayrı gerçekleştirilmiştir Şekil 3. Akümülatöre ait 1 bitlik devre 1 bit düzeyinde işlem yapan bu birimler birleştirilerek 16 bitlik ALU elde edilmektedir. Şekil 4 te ALU nun içersinde her bir bitin blok olarak nasıl bağlandığı gösterilmiştir. 2
Akademik Bilişim 11 - XIII. Akademik Bilişim Konferansı Bildirileri 2-4 Şubat 2011 İnönü Üniversitesi, Malatya İşlem Seçim Açıklama 000 AC ü çıkışa aktar 001 AC AND DR 010 AC + DR 011 DR i, AC ye aktar 100 NOT AC 101 INPUT Reg. i AC ye aktar 110 AC yi bir sağa kaydır 111 AC yi bir sola kaydır Tablo 1. ALU işlemleri ve seçim kodları Bunun sadece 16 bitlik bir işlemcinin Aritmetik Lojik Ünitesi olduğu göz önüne alınırsa, 32 bit ve 64 bitlik işlemcilerin kullanıldığı günümüz teknolojisinde, bu şekilde bir tasarımın gerçekleştirilmesi ve benzetiminin yapılması oldukça güçtür. 2.2 VHDL ile 16 Bit ALU Tasarımı Öncelikle giriş ve çıkış portlarının tanımlandığı, bir tanımlama işlemi yapılır. Tablo 2 de VHDL programında giriş ve çıkışlara atanan isim kısaltma listesi ve bit uzunlukları verilmiştir. Entity kalıbıyla oluşturulacak yapının ismi belirtilerek port tanımlama işlemi gerçekleştirilir. Sec, ac, dr ve inp portları vektör olarak tanımlanmıştır. Birden fazla giriş çıkışı olan portlar vektör olarak tanımlanmaktadır. Yüksek değerlikli bit tanımı parantez içinde yapılır. Örneğin 7. Bitin yüksek değerlikli bit olmasını isteniyorsa 7 downto 0 veya tersi durumda 0 to 7 şeklinde tanımı yapılmaktadır. Kısaltma G/Ç Bit Uzunluğu Açıklama sec Giriş 3 bit İşlem seçme girişleri ac Giriş 16 bit Akümülatör veri girişi dr Giriş 16 bit Data Register veri girişi inp Giriş 8 bit Input Register veri girişi ld Giriş 1 bit Load girişi alu_cikis Giriş 16 bit ALU veri çıkışı e Çıkış 1 bit Elde biti Tablo 2. Giriş Çıkış portları Şekil 4. ALU ya ait tüm bitlerinin birbirine bağlanması VHDL kullanılmadan her bitin tek tek lojik kapılar kullanılarak yapılması gerekirse; prototipin Agnus ve Defne dizileri gibi karmaşık devreler kurularak denenmesi gerekmektedir. Oluşturulacak prototip devresi Şekil 3 te gösterilen Aritmetik Lojik Ünitenin 1 bitinin lojik devresinin Şekil 4 te gösterildiği gibi 16 adet ardışık olarak bağlanmasıyla elde edilmektedir. 3 Şekil 5. Giriş Çıkış portlarının VHDL ile tanımlanması Aritmetik ve Lojik Ünitenin gerçekleştirmesi istenilen 8 işlemin davranışları architecture yapısı altında tanımlanır. signal olarak tanımlanan 17 bitlik elde dizisi, ALU içinde
VHDL ile Mikroişlemci Tasarımı ve Eğitimde Uygulanabilirliği Deniz Taşkın, Kenan Baysal, Nurşen Topçubaşı her bitin taşma ucunu bir sonraki bite taşıma işlemini yapmaktadır. 17. Biti ise e elde çıkışına aktarmaktadır. Process altında tanımlanan temp değişkeni geçici veri bilgisini tutmakla görevlidir. Process başlangıcından sonra 17 bitlik elde birimi sıfırlanır. ld= 1 şartı sağlandığında işlem seçme giriş uçlarının 000-111 arasında aldığı değerlere göre işlem gerçekleşir. mümkündür. Tasarlanan birimler component anahtar sözcüğü ile bileşen haline getirilirler. Bileşenler birbirlerine bağlanabilmekte ve daha büyük bir birim oluşturmak için birleşebilmektedirler. Şekil 8 de bileşen tanımları ve portların birbirine bağlanması görülmektedir. 16 bitlik bir işlemcinin 8 işlem gerçekleştiren Aritmetik Lojik Ünitesi VHDL dilinde kodları Şekil 6 ve şekil 7 de görülmektedir. Bu yöntem ile mühendisin görevi sadece birimlerin ne iş yapacağına karar vermek ve bunları basit sayılabilecek bir programlama dilinde tanıtmasıdır. Şekil 7. ALU VHDL kod yapısı -2 Şekil 6. ALU VHDL kod yapısı -1 Tasarlanan Aritmetik Lojik Ünitenin diğer birimler ile bağlanması yine VHDL kod yapısı ile 4 Şekil 8. 16 bit işlemci bileşen tanımlama ve portların birbirine bağlanması
Akademik Bilişim 11 - XIII. Akademik Bilişim Konferansı Bildirileri 2-4 Şubat 2011 İnönü Üniversitesi, Malatya VHDL ile tasarımın sağladığı en önemli yenilik, yapılan çalışmaya ait benzetim işlemlerinin donanımın devreye dönüştürülmeden önce yapılabilmesidir. Bu sayede tasarımda yapılmış olan hatalar üretimden önce görülebilmekte ve kodda yapılacak ufak değişiklikler ile giderilebilmektedir. Şekil 9 da Modelsim programı ile yapılan 16 bit ALU devresinin benzetim sonuçları verilmiştir. Şekil 9. 16 bit Aritmetik Lojik Ünite ModelSim benzetim sonuçları Bu benzetimde Akümülatör girişine veri girişi olarak 1101110111011101 değeri, Data yazacı girişine 1011101110111011 değerleri verilmiştir. Sırasıyla işlem seçim girişlerine göre bu değerler arasındaki işlem sonuçları ALU çıkışında görülmektedir. Benzer biçimde Akümülatör ve Data register birimlerinin davranış tanımlamaları ayrı birer dosya üzerinden yapılabilir. Örneğin akümülatör için 16 bit çıkış ve 16 bit giriş portları tanımlanır. Bunlarla beraber birer adet Yaz, Sil, Arttır tek bit giriş uçları tanımlanır. Yaz= 1 olması durumunda işlenecek process, 16 bitlik girişin akümülatörün içeriğine aktarılması olarak tanımlanır. Buna benzer şekilde Sil= 1 durumunda akümülatörün içeriğinin temizlenmesi, Arttır= 1 durumunun akümülatörün içeriğinin bir arttırılması olarak tanımlanır. 5 Sil, Arttır ve Yaz uçlarının hangi durumlarda 1 olacağı işlemcinin kontrol biriminde tanımlanır. İşlemcinin diğer bütün birimleri buna benzer şekilde tanımlandıktan sonra component tanımlaması ile birimler birbirine bağlanır. 3. Sonuç Geçmişte işlemci tasarımının en sorunlu aşaması olan prototip üretiminin VHDL ile basit bir hale geldiği, örneklenen 16 bit Aritmetik Lojik Ünite devresinde açık olarak görülmektedir. VHDL dili ile mikroişlemci tasarımı; Algoritma ve programlama bilgisi olan ve temel mikroişlemci mimarisi bilgisine sahip bir öğrencinin anlayabileceği seviyede ders içeriğine dahil edilebilir. Öğrenci, mevcut bir işlemcinin tasarımını geliştirebileceği gibi aynı zamanda yeni bir mikroişlemciyi en baştan tasarlayacak seviyeye ulaşabilir.
VHDL ile Mikroişlemci Tasarımı ve Eğitimde Uygulanabilirliği Deniz Taşkın, Kenan Baysal, Nurşen Topçubaşı 4. Kaynaklar [1] http://www.amigahistory.co.uk/amigahist ory. html [2] Enoch O. Hwang, Digital and Logic Microprocessor Design With VHDL, La Sierra University, Riverside, (2005). [3] Jayaram Bhasker, A VHDL Primer, American Telephone and Telgraph Company Bell Laboratories Division, (1991). [4] M. Morris Mano, Computer System Architecture, (1993). 6