CPU TURKEY CPU-KULIS MİKROİŞLEMCİSİ ÇALIŞMA RAPORU

Benzer belgeler
CPU TURKEY CPU-KULIS MİKROİŞLEMCİSİ ÇALIŞMA RAPORU

KASIRGA -4 Buyruk Tasarımı Belgesi Ankara

KASIRGA 4. GELİŞME RAPORU

K uark projesi. Temel Özellikler :

BM-311 Bilgisayar Mimarisi. Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü

MPLAB IDE ve ISIS ile ASSEMBLY DİLİNDE UYGULAMA GELİŞTİRMEK

BM-311 Bilgisayar Mimarisi

LAB 0 : Xilinx ISE Kullanımı

XILINX PROGRAMI İLE PROJE HAZIRLANMASI İÇİNDEKİLER

Resim 7.20: Yeni bir ileti oluşturma

Merkezi İşlem Birimi MİKROİŞLEMCİ SİSTEMLERİ. MİB Yapısı. MİB in İç Yapısı. MİB Altbirimleri. MİB in İç Yapısı

MPLAB IDE v7.60 PROGRAMI KULLANIMI

EKOM WEB DESIGNER PROGRMI KULLANMA KILAVUZ. 1 - Web Sayfası Tasarımı Oluşturma / Var Olan Tasarımı Açma:

Haftalık Ders Saati Okul Eğitimi Süresi

1. MEVITAS MERKEZİ ELEKTRONİK VERİ İLETİM TOPLAMA ANALİZ SİSTEMİ GENEL İLKELERİ

WINDOWS VE PARDUS İÇİN İMZAGER KURULUM TALİMATI

İşletim Sistemlerine Giriş

1. Mutabakat.zip dosyası açılır. 2. Mutabakat klasörü içindeki Mutabakat.exe dosyası çalıştırılır.

HAL KAYIT SİSTEMİ HAL HAKEM HEYETİ İŞLEMLERİ KULLANICI KILAVUZU

XILINX ISE WEBPACK 14.7 UYGULAMA TUTORIAL

Bahar Dönemi. Öğr.Gör. Vedat MARTTİN

İvme VGA, İvme s_2.1 fiziksel işlemci çekirdeğinin, çalışan iç yapısının herhangi bir simülasyon olmaksızın fiziksel olarak dış dünyaya aktarımıdır.

SIMAN KULLANIM KILAVUZU

XILINX ISE WEBPACK 14.7 UYGULAMA TUTORIAL

Merkezi İşlem Birimi MİKROİŞLEMCİ SİSTEMLERİ. MİB Yapısı. MİB Altbirimleri. Durum Kütüğü. Yardımcı Kütükler

Kets DocPlace LOGO Entegrasyonu

HYS KANITLAYICI BELGE KILAVUZU. TEMMUZ-2014 Uygulama Geliştirme ve Destek Şubesi

İmar Uygulaması. Uygulamanın Netmap Projesi Olduğunun Belirtilmesi

AKINSOFT. Eofis NetworkAdmin. AKINSOFT EOfis NetworkAdmin Kurulumu Bilgi Notu. Doküman Versiyon : Tarih : Copyright 2008 AKINSOFT

BÖLÜM 1 GİRİŞ 1.1 GİRİŞ

Kopyalama ve Taşıma konularıyla ilgili daha değişik uygulamalar yaparak bu konunun pekiştirilmesini sağlamanız yararınıza olacaktır.

BM-311 Bilgisayar Mimarisi

18 Ekim Programlarımız ile Uyumlu Olan Yazar Kasa Modelleri. Profilo VX 680 E-1 Profilo YK-8200 Farex FR-8300 Telestar TLS-8100

SUPERVISOR (YETKİLİ KULLANICI) KAMPANYA YÖNETİMİ EĞİTİM DOKÜMANI

NACA PROFİL AİLE GEOMETRİSİ HESAP PROGRAMI KULLANMA KILAVUZU


EDI MIGROS (Sipariş) LOGO ENTEGRASYONU

Toplu İleti Gönderimi

Bahar Dönemi. Öğr.Gör. Vedat MARTTİN

CAEeda TM GENEL TANITIM. EDA Tasarım Analiz Mühendislik

FAKS SUNUCU EĞİTİM DÖKÜMANI

POWER POİNT 2007 DERS NOTLARI

HAFTA 1 KALICI OLMAYAN HAFIZA RAM SRAM DRAM DDRAM KALICI HAFIZA ROM PROM EPROM EEPROM FLASH HARDDISK

DÖNER SERMAYE MALİ YÖNETİM SİSTEMİ

Şekil 2.1 : Şekil 2.2 : Şekil 2.3 :

ML TFT 5 ARAYÜZ KULLANIM KILAVUZU

PEY-D810 SĠNYALĠZASYON SĠSTEMĠ

İÇİNDEKİLER 1. KLAVYE KLAVYE RB KLAVYE RBHIGH DİSPLAY... 31

KOCAELİ TEKNİK LİSESİ ELEKTRİK ELEKTRONİK BÖLÜMÜ OTOMASYON ATÖLYESİ EKTS (Elektrik Kumanda Teknikleri Simülatörü ) DERS NOTU. Kaynak :

Mikrobilgisayarlar ve Assembler. Bahar Dönemi. Vedat Marttin

Süreç Yönetimi. Logo

T.C. SAĞLIK BAKANLIĞI Sağlık Hizmetleri Genel Müdürlüğü. Hasta Hakları ve Tıbbi Sosyal Hizmetler Daire Başkanlığı

ROKAY. Robot Operatör Kayıt Cihazı KULLANMA KILAVUZU V:1.0

Program Nedir? Program, bir problemin çözümü için herhangi bir programlama dilinin kuralları ile oluşturulmuş komut kümesidir.

BÖLÜM Mikrodenetleyicisine Giriş

BÖLÜM 6 Seri Port Đşlemleri

BÖLÜM 8 B- SUNU PROGRAMI 1. MICROSOFT POWERPOINT NEDİR? 2. POWERPOINT PROGRAMININ BAŞLATILMASI

MİKROİŞLEMCİLER LABORATUVARI İÇİN PROGRAM DERLEME VE YÜKLEME DOKÜMANI

Bilgisayar Mühendisliğine Giriş. Yrd.Doç.Dr.Hacer KARACAN

NB Ekran Seri Port Üzerinden Veri Okuma/Yazma. Genel Bilgi Protokol Oluşturma Veri Okuma Veri Yazma

XC8 ile PİC uygulamaları

robotsan idea Kontrol Kartı (idea Board) Kurulum

Çözüm Bilgisayar. Çözüm SIRAMATİK

GĐRĐŞ. 1 Nisan 2009 tarihinde BDP programının yeni bir sürümü yayınlanmış ve bu sürümde yapılan değişikliklere

DESTEK DOKÜMANI ANKET YÖNETİMİ. Kurum tarafından yapılacak anketlerin hazırlandığı, yayınlandığı ve sonuçların raporlanabildiği modüldür.

x86 Ailesi Mikroişlemciler ve Mikrobilgisayarlar

Hacettepe Robot Topluluğu

PROGRAMLAMAYA GİRİŞ. Öğr. Gör. Ayhan KOÇ. Kaynak: Algoritma Geliştirme ve Programlamaya Giriş, Dr. Fahri VATANSEVER, Seçkin Yay.

İlgili sayfa ulaşmak için metnin üzerine TIKLAYINIZ.

ANALOG ADRESLİ YANGIN ALARM SİSTEMİ YAZILIM KULLANMA KILAVUZU

BİLGİ TEKNOLOJİLERİ EĞİTİM KILAVUZU

Bu ekrana Kullanıcı adı ve şifre ile giriş yapıldığında ekranda giriş yapabilmeniz için yetki almanız

PERSONEL BANKA IBAN BİLGİSİ DEĞİŞİKLİĞİ UYGULAMA KILAVUZU

12. Kat Oluşturma. Bu konuda mevcut bir katın bilgilerini kullanarak nasıl yeni katlar oluşturulabileceği incelenecektir.

İçindekiler Tablosu Talep Destek Yönetim Sistemi Programı...3

Programlanabilir Devreler

Mikroçita. Mikroçita Rapor 2:

SIMMAG Kullanım Kılavuzu. Adem Ayhan Karmış. Ana Ekran

1. Zamanbaz Hakkında Zamanbaz Kurulumu Zamanbaz Sistem Gereksinimleri Zamanbaz Kurulumu... 3

EĞİTİM-ÖĞRETİM YILI BİLİŞİM TEKNOLOJİLERİ VE YAZILIM DERSİ 6. SINIF 2. DÖNEM 2. SINAV ÇALIŞMA NOTLARI

1. PROGRAMLAMA. PDF created with pdffactory Pro trial version

BELEDİYE ŞİRKETLERİNİN KAMU HARCAMA VE MUHASEBE BİLİŞİM SİSTEMİ (KBS) MALİ İSTATİSTİK VERİ GİRİŞLERİNE İLİŞKİN UYGULAMA KILAVUZU

ARLAB ARaştırma LABoratuvar Projesi Kullanım Kılavuzu

JAL IN İNTERNET TEN İNDİRİLMESİ VE KURULMASI

İzibiz E-Defter Son Kullanıcı Kullanım Klavuzu

Okul Web Sitesi Yönetim Paneli Kullanımı

Bu düğme tıklandığında karşınıza yandaki gibi bir diyalog kutusu daha gelecektir.

11 SÜRÜM İLE EKLENEN ÖZELLİKLER/DEĞİŞİKLİKLER ( V7 (B1554) )

Şekil. 64 Kelimelik Yığıtın Blok Şeması

Kasırga [Gizli] KASIRGA PROJESİ 3. GELİŞME RAPORU Ankara

DESTEK DOKÜMANI. Ürün : Tiger Enterprise/ Tiger Plus/ Go Plus/Go Bölüm : Kurulum İşlemleri

Excel de çalışma alanı satır ve sütunlardan oluşur. Satırları rakamlar, sütunları ise harfler temsil eder. Excel çalışma sayfası üzerinde toplam

T.C. ETİ MADEN İŞLETMELERİ TEKLİF MODÜLÜ FİRMA KULLANIM KILAVUZU

HSancak Nesne Tabanlı Programlama I Ders Notları

DESTEK DOKÜMANI KAYIT NUMARALAMA ŞABLONLARI

MEB YÖK MESLEK YÜKSEKOKULLARI PROGRAM GELİŞTİRME PROJESİ. 1. Tipik bir mikrobilgisayar sistemin yapısı ve çalışması hakkında bilgi sahibi olabilme

Yürürlük Tarihi: 12/09/ Kodu: ED Rev. No/Tarihi: 00 1/28

Sorumluluk Sınavlarının Hazırlanması YABİL. Sınav Planlama Programı İş

TAPU VERİ SAYISALLAŞTIRMA YAZILIMI KURULUM DÖKÜMANI. Tapu Kadastro Genel Müdürlüğü-Bilgi Teknolojileri Daire Başkanlığı Page 1

DERS 12 PIC 16F84 ile KESME (INTERRUPT) KULLANIMI İÇERİK

Transkript:

CPU TURKEY CPU-KULIS MİKROİŞLEMCİSİ ÇALIŞMA RAPORU Proje Danışmanı: Prof. Dr. Sarp ERTÜRK, Kocaeli Üniversitesi, Elektronik ve Haberleşme Mühendisliği Bölümü Proje Yetkilisi: Arş. Gör. Anıl ÇELEBİ, Kocaeli Üniversitesi, Elektronik ve Haberleşme Mühendisliği Bölümü Proje Ekibi: Çağrı GÜVENEL Ahmet TEKYILDIZ, Kocaeli Üniversitesi Elektronik ve Haberleşme Mühendisliği Bölümü, 3. sınıf öğrencileri Akademik Destek: Yrd. Doç. Dr. Oğuzhan Urhan, Kocaeli Üniversitesi Elektronik ve Haberleşme Mühendisliği Bölümü Yrd. Doç. Dr. Mehmet Kemal GÜLLÜ, Kocaeli Üniversitesi Elektronik ve Haberleşme Mühendisliği Bölümü

İçindekiler İçindekiler... i Şekiller Dizini... iv Tablolar Dizini... vii Önsöz... viii 1. CPU-KULIS MİKROİŞLEMCİSİNİN GENEL YAPISI... 1 1.1. Cpu-Kulis Mikroişlemcisi Genel Şematik Gösterimi... 2 1.2. Cpu-Kulis Mikroişlemcisinin Ana Öbekleri... 3 1.2.1. Komut çekme... 3 1.2.2. Kod çözme... 4 1.2.3. Yürütme... 5 1.2.4 Geri yazma... 6 1.3. Ardışık Düzen Hata Denetimi:... 8 2. CPU-KULIS DERLEYİCİSİ... 11 2.1. Giriş... 11 2.2. Derleyici Kullanımı... 11 2.2.1. Komut kümesinin kullanımı... 12 2.2.2. Sembolik sabit tanımlama... 14 i

2.2.3. Etiket tanımlama... 14 2.2.4. Başlama noktası tanımlama... 15 3. KOMUTLARIN İŞLEM BASAMAKLARI... 16 4. BENZETİM SONUÇLARI... 18 4.1. Giriş... 18 4.2. Örnek kodun derlenmesi aşaması... 18 4.3. Benzetim... 20 4.4. Benzetim Sonuçları ve Değerlendirilmesi... 24 5.FİZİKSEL İŞLEMCİ TASARIMI... 27 5.1. Giriş... 27 5.2. Önyükleme... 28 5.2.1. Programlama modu... 28 5.3. Son Yerleştirme Benzetimi... 29 5.3.1. Giriş... 29 5.3.2. Tasarımın son yerleştirme benzetimi yapılabilecek hale getirilmesi... 29 5.3.3. Benzetim aşaması... 30 5.3.4. Uygulamayı Spartan-3E kartına yükleme... 35 5.3.4.1. Bacak bağlantılarının yapılması... 35 ii

5.3.5. Programı kart üzerindeki FPGA ya yükleme işlemi... 36 6. ÇEVRESEL BİRİMLER, KESMELER... 42 6.1. Giriş... 42 6.2. Çevresel Birimler ve Organizasyonu... 42 6.2.1. Seri port... 43 6.2.2. Klavye portu... 43 6.2.3. VGA portu... 43 6.3. Kesmeler... 44 iii

Şekiller Dizini Şekil 1.1. Cpu-Kulis mikroişlemcisinin en üst seviye şematik görünümü... 2 Şekil 1.2. Komut çekme ana öbek şeması... 3 Şekil 1.3. Kod çözme öbeği şematik görünümü... 4 Şekil 1.4. Yürütme öbeği altında bulunan ALU biriminin RTL şemasının bir bölümü... 6 Şekil 1.5. Geri yazma öbeği RTL şeması... 7 Şekil 1.6. Ardışık düzen hata denetimi öbeğinin RTL şeması... 10 Şekil 4.1. İşlemci için tasarlanan derleyicisi klasörünün içeriği... 19 Şekil 4.2. Derleme sonrası oluşan output.txt dosyasının örnek gösterimi... 19 Şekil 4.3. Örnek bir derleme sonrası oluşan simulate.txt (öykünücü) dosyasının kısmi görünümü... 20 Şekil 4.4. ISE proje düzenleyicisinde RTL benzetim gerçekleştirmek için yapılan ilk işlemler... 20 Şekil 4.5. Tasarımın sentez aşaması gösterimi... 21 Şekil 4.6. Sentez ve benzetim aşaması geçiş öbekleri... 21 Şekil 4.7. Benzetim için gerekli testbench dosyasının oluşturulması aşaması... 22 Şekil 4.8. Yeni kaynak dosya oluşturma sihirbazında Test Bench WaveForm dosyasının seçilmesi ve uygun parametrelerin girilmesi... 22 Şekil 4.9. ISE proje düzenleyicisindeki benzetim penceresinin görünümü... 23 iv

Şekil 4.10. Objects/Name penceresinin ModelSim aracının ilk olarak çağrıldığı andaki görünümü... 23 Şekil 4.11. İstenilen sinyallerin eklenmesi... 24 Şekil 4.12. Run-all düğmesi... 24 Şekil 4.13. Break düğmesi... 24 Şekil 4.14. Benzetim Sonucu I... 25 Şekil 4.15 Benzetim sonucu II... 25 Şekil 4.16. Benzetim sonucu III... 25 Şekil 4.17. Benzetim sonucu IV... 26 Şekil 4.17. Bekle alt programının çalışması ve alt programın bitişi ile programın sonlanması26 Şekil 5.1. Cpu_Kulis mikroişlemcisinin en üst seviye model gösterimi... 27 Şekil 5.2 Proje Dosyasının Sentezlenmesi... 30 Şekil 5.3. Sources bölümünden Son Yerleşim (Post Route) benzetimi için gerekli seçeneğin seçilmesi... 31 Şekil 5.4. Son Yerleştirme benzetiminde kullanılacak test dalga şekli dosyasının oluşturulması... 32 Şekil 5.5. Test dalga şeklini gösteren benzetim penceresi... 32 Şekil 5.6. Modelsim benzetim editörüne geçiş uygulaması... 33 Şekil 5.7 Wave penceresinin ilk durumu... 33 Şekil 5.8. Sinyal değerlerini istenilen formata dönüştürme işlemi... 33 v

Şekil 5.9. Benzetimi başlatma (kırmızı elips) ve durdurma (mavi elips) işlemi... 34 Şekil 5.10. Benzetim sonucunun bir kısmı... 34 Şekil 5.11. Benzetim sonucunun ayrıntılandırılmış küçük bir bölümü... 34 Şekil 5.12. Verilen uygulama için son yerleştirme benzetimi sonucunda elde edilen verilerin tümü... 35 Şekil 5.13 Giriş-çıkış sinyallerinin atanma aşaması... 35 Şekil 5.14. Sinyal atama penceresi... 36 Şekil 5.15. Uygun.bit dosyasının seçilmesi... 37 Şekil 5.16. Kart üzerindeki FPGA nın programlanması... 38 Şekil 5.17. FPGA nın başarılı bir biçimde programlandıoğını gösteren uyarı... 38 Şekil 5.18. Derleyiciden Programın Gönderilmesi... 39 Şekil 5.19. Programin başarıyla işlemciye gönderilmesi... 40 Şekil 5.20. Kara şimşek uygulaması basamak gösterimi... 41 vi

Tablolar Dizini Tablo 1.1. decode_wire[19:0] sinyalinin kontrol ettiği birimler ve makine kodu karşılıkları.. 5 Tablo 1.2. Hedef ve kaynak bilgilerinin makine kodu karşılıkları... 7 Tablo 1.3. wb_signals[26:0] sinyalinin kontrol ettiği birimler ve makine kodu karşılıkları... 8 Tablo 2.1. 32 bitlik işlem kodunun bölümleri... 12 Tablo 2.2. İşlem kodu-işlenen karşılık tablosu... 12 Tablo 2.3. Cpu-Kulis işlemcisinin komut kümesi ve aldığı işlenenleri... 12 Tablo 6.1. Çevresel birimler, port numaraları ve açıklamalar... 42 Tablo 6.2. Kesme kontrol bitleri... 44 vi

Önsöz CPU-KULIS mikroişlemcisi çalışma raporunda mikroişlemcinin genel yapısı, saat darbelerinde komutların işlendiği ana öbekler, bu öbeklerin şematik gösterimleri üzerinde durulmuştur. Komutların makine diline çevrilmesi için tasarlanan derleyicinin tanıtımı yapılmıştır. İşlemcide kullanılan komutların kaynak ve hedef birimleri gösterilmiştir. Tasarımda bulunan bazı önemli bağlantıların etkilediği birimler tablo halinde gösterilmiştir. Komutlar, kullanım alanlarına göre bölümlere ayrılmış ve işlem basamakları ayrıntılı bir biçimde anlatılmıştır. Mikroişlemci ana kısımları, şematik kullanılarak oluşturulmuştur. Şemaların gösteriminde asıl amaç; ana öbeklerin teorik anlatımına uygulamalı gösterim ile destek olmaktır. Bu nedenle; şemalar oluşturulurken şeklin sade ve anlaşılır olması birinci hedeftir. Sıra düzensel olarak bir seviyeden daha aşağı inilmemeye özen gösterilmiştir. (Şemaların ayrıntılı hali eklenen dosyalardan RTL_Semalar içerisinde bulunmaktadır. Komutların işleyişi hakkında ayrıntılı uygulama eklenen dosyalar arasında benzetim anlatımı videosu olarak bulunmaktadır.) vi

1. CPU-KULIS MİKROİŞLEMCİSİNİN GENEL YAPISI Cpu-Kulis, standart mikroişlemci yapıları temel alınarak tasarlanmış özgün bir çalışmadır. Cpu-Kulis mikroişlemcisi, komut çekme, kod çözme, yürütme ve geri yazma isimlerinin verildiği dört ana bloktan oluşmaktadır. Ana bloklardan kısaca bahsetmek gerekirse; Komut çekme, ROM da bulunan komutlara ait işlem kodlarının ROM dan okunmasını sağlayan yapıdır. Komut çekme ROM dan aldığı bu bilgiyi Kod çözme öbeğine iletir. Kod çözme, Komut çekme öbeğinden aldığı kod bilgisini istenilen işlemin yapılabilmesi için uygun sinyaller olarak yürütme kısmına iletir. Aynı zamanda herhangi bir geri yazım işlemi için uygun sinyalleri hedef ve kaynak bilgisi olarak Geri yazma öbeğine iletir. Yürütme, uygun sinyaller uygulanarak istenilen işlemin yürütülmesini sağlayan işlemcinin en karmaşık kısmıdır, veri yolu olarak da adlandırılabilir. Geri yazma, Kod çözme öbeğinden aldığı hedef ve kaynak bilgisine göre; verinin istenilen birime yazılması için gerekli sinyalleri yürütme bloğu için üretir. Cpu-Kulis, dört iş hatlı Ardışık Düzen Hata Denetimi (Pipeline Hazard Detection) yapısına sahip bir işlemcidir. İstisna durumlar hariç her işlem bir saat çevrimi süresinde yapılmaktadır. (Bu istisnalar bölüm 1.3 de anlatılmıştır.) Cpu-Kulis, 30 temel komutun yanı sıra sonradan eklenen OUT, IN, BAB, BBL, BT, PUSHF, POPF, PUSH, POP, SRM ve RET komutlarını da yürütme özelliğine sahiptir. Mikroişlemci performansına bir etkisi bulunmayacağı için CACHE bellek bu aşamada kullanılmamıştır. Cpu-Kulis mikroişlemcisinde dört adet yazmaç, ROM, RAM, yığın ve alu ana blokları mevcuttur. İşlemcinin program belleği (ROM) 256 satır ve genişliği 32 bit/satır dır. Her yığın verisi 16 bit, yığın derinliği 32 dir. RAM uzunluğu ise 1024 satırdır, genişliği de 2 byte/satır dır. Dolayısıyla 2KB RAM mevcuttur. 1

Cpu-Kulis işlemcisinin tasarımı, Xilinx ISE proje düzenleyicisi ortamı kullanılarak verilog donanım tanımlama dili ile yazılmıştır. Şematik gösterimler için ISE proje düzenleyici içerisindeki RTL şematik gösterim aracından faydalanılmıştır. Benzetim için MentorGraphics in ModelSim yazılımı kullanılmıştır. 1.1. Cpu-Kulis Mikroişlemcisi Genel Şematik Gösterimi Şekil 1.1. Cpu-Kulis mikroişlemcisinin en üst seviye şematik görünümü Şekil 1.1 de Cpu-Kulis mikroişlemcisinin en üst seviye öbek yapısı görülmektedir. Bu şekil sentezleyici programın RTL şematik gösterici penceresindeki görünümünden alınmıştır. FPGA tasarım araçlarının tümünde bu tip şematik gösterim araçları bulunmaktadır. Yapıdan da anlaşılacağı üzere; birbirine gerekli bağlantılar ile bağlanan dört ana öbek ve bu öbekler arası eş zamanlamayı sağlayan ardışık düzen yapısı genel hatlarıyla görülmektedir. Şekilde en sağda görülen büyük öbek veri-yolu öbeğidir ve sistemin en karmaşık yapısıdır. İlerleyen bölümlerde veri-yolu öbeği ve diğer alt öbeklere kısaca değinilecektir. 2

1.2. Cpu-Kulis Mikroişlemcisinin Ana Öbekleri 1.2.1. Komut çekme Komut çekme, ROM dan komutlara ait makine kodlarını alır ve değerlendirmesi için kod çözme öbeğine gönderir. Komut çekme öbeği dört ana alt öbekten oluşmaktadır. Program sayıcı yürütülen komutun kaçıncı adreste olduğunu belirtir. Program sayıcı çıkışı ROM a bağlıdır ve belirtilen adresin içerisindeki makine kodu ROM dan veri çıkışı olarak kod çözme öbeğine bağlanır. ROM da her biri 16 bit adres verisiyle erişilen bilginin uzunluğu 32 bittir. (ROM, 256 satır uzunluğunda alınmıştır, 256 satırı adresleyebilmek için 16 bitlik adres girişinin en değerliksiz 8 biti kullanılmaktadır. Şekil 1.2. Komut çekme ana öbek şeması Toplam ROM uzunluğu 32bit * 256satır / (8bit/byte) = 1024 byte dır ). Aynı zamanda program sayıcının göstermiş olduğu adres de bir saat çevrimi ile kod çözme öbeğine iletilir. Bir komutun yürütülmesi işlemi komut çekme öbeğinden başlar. Komut yürütümünde bir saat çevrimi komut çekme öbeğinde harcanmaktadır. 3

1.2.2. Kod çözme Komut çekme çıkışından aldığı adres bilgisi ile ROM dan aldığı makine kodu bilgisini değerlendiren ve hangi komutun yürütüleceğini, hangi birimlerde işlem yapılacağını belirleyen öbektir. Kod çözme öbeğinin şematik gösterimi Şekil 1.3 de görülmektedir. Şekil 1.3 de kod çözme öbeğinin iki ana kısımdan oluştuğu görülmektedir. Bu iki ana öbek yanında, komut çekme öbeğinde da bulunan flush yazmacı görülmektedir. Flush yazmacının işlevi, öbek çıkışındaki verinin geçerli olup olmadığını anlatmaktadır. Eğer komut çekme öbeği çıkışındaki flush yazmacının değeri mantıksal 1 ise, kod çözme öbeği, komut çekme çıkışındaki verinin çöp değer olduğunu anlamaktadır. Komut çekme birimi çıkışında 15 bitlik durum sinyali verisi ile 16 bitlik sabit verisi üretilir. Bu değer komut çekme öbeğinden gelen ROM verisinin anlamlı iki parçaya bölünmesi ile elde edilir. Durum sinyali verisinin son 6 biti komut bilgisini, daha sonra gelen 4 bit yazmaç bilgisini ardından gelen 4 bit yine yazmaç bilgisini ve ilk bit ise; elde bilgisini verir. Bu bilgiler doğrultusunda yürütme öbeğine, komutun yürütülebilmesi için uygun sinyaller gönderilir. Kod çözme işlemini için oluşturulan makine kodu tablosu Tablo 1.1 de verilmiştir. Şekil 1.3. Kod çözme öbeği şematik görünümü 4

Tablo 1.1. decode_wire[19:0] sinyalinin kontrol ettiği birimler ve makine kodu karşılıkları Decode_statck_ctrl decode_wire[1:0] Halt decode_wire[2] Mux1_selector decode_wire[4:3] Mux2_selector decode_wire[6:5] Mux3_selector decode_wire[7] Alu_opselect decode_wire[11:8] Alu_en decode_wire[12] Decode_Ram_ctrl decode_wire[14:13] KeyRequest decode_wire[16] Flag_Stack_write decode_wire[18] Flag_Stack_read decode_wire[19] 1.2.3. Yürütme Yürütme öbeği komutların yürütülmesi işleminin gerçekleştirildiği öbek yapı olduğu için Cpu- Kulis işlemcisinin veri-yolu olarak adlandırılabilir. İçerisinde toplam 16 adet komutun yürütülebildiği ALU bulunur. Bunu yanı sıra; dört adet yazmaç,15 adet çoğullayıcı, bayrak sonuçları, içerisinde bulunan diğer önemli birimlerdir. Aritmetik bir işlem gerçekleştiğinde ALU çıkışındaki bayrak yazmaçları güncellenir. Yapılan işlemin sonucu sıfır ise sıfır bayrağı kurulur. Eğer sonuç, ikiye tümler sistemine göre negatif bir sayıysa işaret bayrağı kurulur. Yapılan aritmetik işlemde 1. işlenenin değeri 2. işlenenin değerinden büyükse büyüktür bayrağı kurulur. Yürütme öbeği, mikroişlemcide aritmetik ve mantıksal işlemleri gerçekleştiren öbektir. Bu nedenle; yapı diğer öbeklere oranla hayli karmaşıktır. Yapının içerisinde bulunan ALU biriminin sentez işlemi sonrasında oluşan birkaç sayfalık RTL şemasından sadece bir sayfasının görünümü Şekil 1.4 de görülmektedir. Yapının diğer alt öbeklerinin RTL şemaları yarışma sayfasına yüklenen dosyalar arasında daha ayrıntılı olarak bulunmaktadır. 5

Şekil 1.4. Yürütme öbeği altında bulunan ALU biriminin RTL şemasının bir bölümü 1.2.4 Geri yazma Geri yazma öbeği bir komutun son saat çevriminin yürütüldüğü yapıdır. Kod çözme öbeğinden aldığı kaynak ve hedef sinyallerini, geri yazma işleminin yapılabilmesi için yürütme öbeğine uygun sinyalleri üreten öbektir. Şekil 1.5 e göre; gerekli koşullar sağlandığı taktirde, beşer bitlik hedef ve kaynak verileri doğrultusunda çıkışa wb_signals adını verdiğimiz kontrol sinyalleri vektörünü bu öbek içerisinde üretilir. 6

Şekil 1.5. Geri yazma öbeği RTL şeması Tablo 1.2. Hedef ve kaynak bilgilerinin makine kodu karşılıkları HEDEF KAYNAK 00000:AREG 00000:AREG 00001:BREG 00001:BREG 00010:CREG 00010:CREG 00011:DREG 00011:DREG 00100:ALU 00100:ALU 00101:STACK 00101:STACK 00110:RAM 00110:RAM 00111:PORTA 00111:PORTA 01000:PORTB 01000:PORTB 01011:INTFLAGS --- 01100:INTENABLE --- 01101:TIMER --- 01110:ROM --- --- 01111:KEYBOARD --- 10000:SERIALSTATE --- 10001:SERIALRECEIVE 10010:SERIALSENT --- 10011:FLAGS 10011:FLAGS 10100:VGA 10100:VGA 7

Tablo 1.3. wb_signals[26:0] sinyalinin kontrol ettiği birimler ve makine kodu karşılıkları Mux7_ctrl wb_signals[0] Mux6_ctrl wb_signals[1] Reg_select wb_signals[4:2] Wb_RAM wb_signals[5] Wb_EN wb_signals[6] Wb_RW wb_signals[7] Wb_stack wb_signals[8] Wb_stack_ctrl(en-rw) wb_signals[10:9] Port_selector wb_signal[12:11] Port_reg_en wb_signal[13] Mux_selector12 wb_signal[14] Mux_selector13 wb_signal[15] IntEnable wb_signal[16] IntFlagWrite wb_signal[17] TimerWrite wb_signal[18] RomWriteEnable wb_signal[19] Mux_selector15 wb_signal[20] Mux_selector16 wb_signal[21] SerialAck wb_signal[22] SerialWrite wb_signal[23] Mux_selector14 wb_signal[24] FlagEnable wb_signal[25] Vga_write wb_signal[26] 1.3. Ardışık Düzen Hata Denetimi: Normal koşullar altında bir komut, komut çekme, kod çözme, yürütme, geri yazma olmak üzere dört saat çevrimi sonucunda işlenmektedir. Bir komut yürütümü bitmeden diğer komut öbekler arasında ilerleyememektedir. Ardışık düzen yapısı mikroişlemciye her saat çevriminde bir komutun yürütülmesi olanağını sağlar. Bu sayede; komut yürütme performansı artar ve mikroişlemcinin performansı büyük oranda iyileştirilmiş olur. Bu nedenle; tasarlanan mikroişlemcinin ardışık düzen yapısı bulundurması kaçınılmazdır. İdealde her saat çevriminde bir komutun yürütülmesi gerekirken uygulamada bazı komutların ard arda gelmesi komutun yürütülme süresini artırabilmektedir. 8

Yapılan benzetim uygulamasında da gözleneceği üzere; bu problem ile ilgili birkaç örnek verilebilir: Movi ar, 0x5 Add ar, br Yukarıdaki örnekte, movi geri yazma işlemine gireceği sırada ardışık düzen özelliği dolayısıyla, add işleminin de yürütme işlemine girmesi gerekir. Movi komutu ar yazmacının değerini daha güncelleyememişken, add komutu, işlemini güncellenmemiş değeri kullanarak yapacaktır ve yanlış sonuç elde edilecektir. Bu problemin çözümü için, movi komutunun geri yazma işlemini yapması beklenmeli ve add işlemi bundan sonra yürütme öbeğinde işlem görmelidir. Başka bir problem aşağıdaki gibi bir kodda meydana gelir. Push ar Pop br Push ve pop komutları yığına veri yazmak ve yığından veri almak için kullanılır. Bu iki komut ard arda geldiği zaman şöyle bir durum oluşur: Push komutu geri yazma öbeğinde yığına yazmak için erişir. Pop işlemi bu esnada yürütme öbeğinde işlem görecek ve yığındaki veriyi çekmeye çalışacaktır. Yığına yazma ve okuma işlemi aynı anda yapılmak istenmektedir. Bu problem de ilk komutun geri yazma işlemine öncelik verilerek çözülür. Ardışık düzen hata denetimi öbeği bu şekildeki durumları anlayarak, öbekler için eş zamanlama bilgisi üretip, gerekli durumlarda beklemelerini sağlamaktadır. Şekil 1.6 da bu yapının RTL şeması görülmektedir. 9

Şekil 1.6. Ardışık düzen hata denetimi öbeğinin RTL şeması 10

2. CPU-KULIS DERLEYİCİSİ 2.1. Giriş Cpu-Kulis mikroişlemcisi için tasarlanan ROM a benzetim için ilk değerler $readmemh komutu ile kaydedilmektedir. Bu komutu kullanarak herhangi bir bellek birimini ROM veya RAM olabilir- gerek benzetim gerekse sentez aşaması için ilklendirmek mümkündür. Program belleğine gidecek makine kodlarını elde etmek için ise bu proje kapsamında Cpu-Kulis derleyicisi tasarlanmıştır. Derleyici çıktı olarak program belleğini ilklendirmek için kullanılacak olan ikili kodları içeren output.txt isimli basit bir metin dosyası üretmektedir. Kullanılan komutların mikroişlemcinin anlayacağı makine komutlarına dönüştürülmesi işlemini tasarlanan derleyici halleder. Aynı zamanda derleyici derlenen kodların öykünme işlemini gerçekleştirebilmektedir. Öykünücü çıktısında her komut sonucu yazmaçların ve bayrakların değerleri görülmektedir. Örnek bir öykünücü çıktısı Şekil 4.3 de görülebilir. Derleme sonucu oluşturulan işlem kodlarının seri port yardımıyla işlemciye gönderilmesi de Cpu-Kulis derleyicisi tarafından yapılabilmektedir. 2.2. Derleyici Kullanımı Bir metin düzenleyici kullanılarak, asm program yazılır. Bu dosya kaydedilir. Örneğin; kaydedilen dosya d:\cpu\code.txt olsun. Derleyicinin, kaynak kodlarını derledikten sonra oluşan çalıştırılabilir dosya (compiler.exe), herhangi bir dizine kopyalanır, örneğin c:\compiler.exe. Komut satırından, bu dizine gidilir compiler [asm kodun bulunduğu dizin adresi] yazılarak derleme işlemi yapılır. C:\>compiler d:\cpu\code.txt Aktif dizin compiler.exe dosyasının bulunduğu dizin olmalıdır ve derleme işlemi sonucunda output.txt dosyası aktif dizinde oluşturulmaktadır. Bu dosya işlemci proje dosyasına kopyalanarak ROM un ilk değerlerini buradan alması sağlanır. Derleyici bir komut için 32 bitlik işlem kodunun bölümleri Tablo 2.1 de görülmektedir. Tablo 2.2 de ise işlenenleri nasıl belirlendiğini gösteren karşılık tablosu bulunmaktadır. 11

Tablo 2.1. 32 bitlik işlem kodunun bölümleri [31:26] Operatör kodu [25:22] 1. İşlenen [21:18] 2. İşlenen [17] 3. İşlenen [15:0] Sabit 2.2.1. Komut kümesinin kullanımı Tablo 2.2. İşlem kodu-işlenen karşılık tablosu 1. İşlenen 2. İşlenen 0000 A yazmacı A yazmacı 0001 B yazmacı B yazmacı 0010 C yazmacı C yazmacı 0011 D yazmacı D yazmacı 0100 -> 0111 Kullanılmaz Kullanılmaz 1111 Sabit Sabit Tablo 2.3. Cpu-Kulis işlemcisinin komut kümesi ve aldığı işlenenleri Komut 1. işlenen 2. işlenen 3.işlenen İşlevi 1 Add Y Y Elde bayrağı İki işlenen toplanır, sonuç 1. işlenene yazılır 2 Addi Y S Elde bayrağı İki işlenen toplanır, sonuç 1. işlenene yazılır 3 Sub Y Y Elde bayrağı İki işlenen çıkartılır, sonuç 1. işlenene yazılır 4 Subi Y S Elde bayrağı İki işlenen çıkartılır, sonuç 1. işlenene yazılır 5 Mul Y YS ----- İki işlenen çarpılır, sonuç 1. işlenene yazılır 6 Muli Y YS ----- İki işlenen çarpılır, sonuç 1. işlenene yazılır 7 Mulu Y YS ----- İki işlenen çarpılır, sonuç 1. işlenene yazılır 8 Cmp Y YS ----- İki işlenen çıkartılır, sadece bayraklar etkilenir 9 And Y YS ----- İki işlenen VE lenir, sonuç 1. işlenene yazılır 10 Andi Y S ----- İki işlenen VE lenir, sonuç 1. işlenene yazılır 11 Or Y Y ----- İki işlenen VEYA lanır, sonuç 1.işlenene yazılır 12 Ori Y YS ----- İki işlenen VEYA lanır, sonuç 1.işlenene yazılır 13 Not Y ----- ----- İşlenenin DEĞİL lenir, geri yazılır 12

14 Xor Y Y ----- İki işlenen XOR lanır. Sonuç 1. işlenene yazılır 15 Xori Y S ----- İki işlenen XOR lanır. Sonuç 1. işlenene yazılır 16 Sll Y YS ----- 1. işlenen, 2.işlenen değeri kadar sola kaydırılır. Besleme sıfır ile yapılır. 17 Srl Y YS ----- 1. işlenen, 2.işlenen değeri kadar sağa kaydırılır. Besleme sıfır ile yapılır. 18 Sla Y YS ----- 1. işlenen, 2.işlenen değeri kadar sola kaydırılır. Besleme sıfır ile yapılır. 19 Sra Y YS ----- 1. işlenen, 2.işlenen değeri kadar sağa kaydırılır. Besleme işaret biti ile yapılır. 20 Lw Y YS ----- 2.işlenen ile gösterilen adresteki veri, 1. işlenene yazılır. 21 Sw Y YS ----- 2. işlenendeki veri, 1.işlenen ile gösterilen adrese yazılır. 22 Mov Y Y ----- 2. işlenen değeri, 1. işlenene yazılır 23 Movi Y S ----- 2. işlenen değeri, 1. işlenene yazılır 24 Beq YS ----- ----- En son yapılan aritmetik işlem sonucu sıfırsa (sıfır bayrağı = 1 ) 1. işlenenin gösterdiği adrese dallan 25 Bne YS ----- ----- En son yapılan aritmetik işlem sonucu sıfır değilse (sıfır bayrağı = 0 ) 1. işlenenin gösterdiği adrese dallan 26 Ba YS ----- ----- 1. İşlenenin gösterdiği adrese koşulsuz dallan 27 Bl YS ----- ----- 1. işlenenin gösterdiği adrese koşulsuz dallan, geri dönüş adresini yığına at. 28 Nop ----- ----- ----- İşlem yapma 29 Hlt ----- ----- ----- Dur 30 Syscall YS ----- ----- İşlenen değeriyle RAM i adresle, RAM deki veriye dallan. 31 Push Y ----- ----- İşlenen değerini yığına yaz. 32 Pop Y ----- ----- yığından veri al ve işlenene yaz. 33 Ret ----- ----- ----- Yığından geri dönüş adresini al ve dallan 34 In Y S ----- 2. işlenenle belirtilen port numarasına sahip birimden bilgiyi 1. işlenenle belirtilen hedefe yazar 35 Out S Y ----- 1. işlenenle belirtilen porta, 2. işlenenle belirtilen değeri yazar. 13

37 Bt Y YS ----- 1. ve 2. işlenen VE işlemine tabii tutulur. Sadece bayraklar etkilenir. 38 Bab YS ---- ---- Son yapılan aritmetik işlemde 1. işlenen 2. işlenenden büyükse, 1. işlenenle belirtilen adrese dallanır. 39 Bbl YS -- ---- Son yapılan aritmetik işlemde 1. işlenen 2. işlenenden küçükse, 1. işlenenle belirtilen adrese dallanır. 40 Srm Y YS ---- 1. işlenenle belirtilen adrese, 2. işlenenle belirtilen veri yazılır. Bu komuttaki hedef ROM dur. Bu komut sadece önyükleme modunda çalışmaktadır. 41 Pushf ---- ---- ---- Bayrak değerlerini yığına atar. 42 Popf ---- ---- ---- Bayrak değerlerini yığından çeker Tablo 2.3 de Y ile yazmaç, S ile sabit, YS ile de yazmaç ve sabit kullanan işlemler gösterilmiştir. Dört adet yazmaç kullanılabilmektedir: ar, br, cr, dr. 2.2.2. Sembolik sabit tanımlama #define <YAZI1> [YAZI2] Kod içerisinde kullanılan YAZI1 atomu YAZI2 ile değişecektir. Örnek; ifadesi #define CPU_KULIS 1 Addi ar, CPU_KULIS Addi ar, 1 ifadesi ile aynı anlama gelir. 2.2.3. Etiket tanımlama Cpu-Kulis mikroişlemci derleyicisi etiket alabilme özelliğine de sahiptir. <ETİKET İSMİ> <:> 14

İşlenenler sırasıyla girildiğinde işlemci sol tarafta girilen ismi etiket olarak algılayacaktır. 2.2.4. Başlama noktası tanımlama org <sabit> Bu ifadeden sonra yazılacak kodlar sabit adres değerinden itibaren ROM a yerleştirilecektir.kod yazımına başlanırken, org komutu ile aksi belirtilmedikçe, ROM a sıfır adresinden itibaren kodlar yerleştirilmeye başlanacaktır. NOT: Açısal parantezler (< >) içerisine yazılan ifadeler kullanımı zorunlu olan ifadelerdir. Köşeli parantezler ([ ]) içerisine yazılan ifadelerde böyle bir zorunluluk yoktur. 15

3. KOMUTLARIN İŞLEM BASAMAKLARI Bu bölümde komutların işlem basamakları üzerinde durulacaktır. Bir komut komut çekme öbeğinden geri yazma öbeğine kadar hangi birimlerden geçmektedir, hangi komut için hangi birimler kullanılmaktadır sorularına yanıt verilecektir. Komutlar aritmetik, mantık ve dallanma komutları olarak 3 bölüme ayrılabilir. Aritmetik Komutlar: add, addi, sub, subi, mul, muli, mulu Mantık Komutları: cmp, and, andi, or, ori, not, xor, xori, sll, srl, sla, sra, bt Dallanma Komutları: beq, bne, ba, bl, bbl, bab Aynı zamanda RAM den veri okuma ve RAM ye veri yazma komutlarının (sw, lw) ; sistem durdurma komutunun (hlt), yığından veri çekme, yığına veri yazma komutlarının (push, pop) ve kesme komutu olan (syscall) komutunun işlem basamakları da anlatılacaktır. Tüm komutlar için, komut çekme ve kod çözme bölümlerinde yapılan işlemler ortaktır. Komut çekme öbeğinde işlem kodu ROM dan okunur, Kod çözme bölümünde ise Yürütme öbeği için uygun sinyallere dönüşüm gerçekleşir. Aritmetik ve mantıksal işlemler için yürütme öbeğinde gerçekleşen işlemler şunlardır: Kod çözme bölümünden gelen sinyaller sayesinde, ALU için uygun işlemin seçimi yapılır. Bir saat darbesi süresinde işlem sonucu ALU nun çıkışında görülür. Elde bayrağı elde bitinin işleme dahil edilip edilmeyeceğini belirtir. Elde biti kullanılmak isteniyorsa elde bayrağı 1 olmalıdır, istenmiyorsa 0 olmalıdır. Eğer elde bayrağı değeri kullanılmazsa bu değer 0 olarak kabul edilmektedir. Dallanma komutları için yürütme öbeğinde gerçekleşen işlemler şunlardır: Eğer ;dallanma işlemi gerçekleştirilecekse, geri dönüş adresi yığına atılır ve yürütme öbeği çıkışında, dallanılacak adres verisi ve dallanma işleminin yapılmasını belirten bir bayrak verisi görülür. 16

Bellek komutları için yürütme öbeğinde gerçekleşen işlemler şunlardır: LW komutu için, 2. işlenen değeri ile RAM adreslenir ve o adresteki bilgi RAM çıkışında elde edilir. SW komutu için gerekli 2. işlenenin çoğullayıcılarla ALU girişine getirilmesi sağlanır. ALU bu değeri değiştirmeden çıkışına verir. Yığın komutları için yürütme öbeğinde gerçekleşen işlemler şunlardır: Pop komutunda, yığındaki veri çekilir, veri yığın çıkışında görülür. Push komutu için, komut işleneninin çoğullayıcılarla ALU girişine getirilmesi sağlanır. ALU bu değeri değiştirmeden çıkışa verir. SYSCALL komutu için Yürütme öbeğinde gerçekleşen işlemler şunlardır: İşlenen değeri ile RAM adreslenir, aynı anda geri dönüş adresi yığına atılır. Tüm komutlar için, kod çözme öbeği çıkışında, geri yazma öbeği için Tablo 1.2 de görülen hedef ve kaynak verileri üretilir. Bu verilere göre geri yazma öbeği yürütme bölümünde hesaplanan sonucun istenilen hedefe yazılması için gerekli sinyalleri üretir. HALT Komutu: Halt komutu geldiği zaman kod çözme öbeğinin çıkışında bu bildirilir. Bu bilgiye göre; işlemlerin yürütülmesine devam edilir. Eğer; halt komutu gelmiş ise; en son işlenen komutun geri yazma işlemine izin verildikten sonra başka işlem yapılmaz. Reset işlemi ile işlemci yeniden başlatılabilir. 17

4. BENZETİM SONUÇLARI 4.1. Giriş Bu bölümde mikroişlemcinin çalışması birkaç örnek kodla açıklanacaktır. Açıklamada Modelsim benzetim uygulamalarına yer verilecektir. Yazılan kodların makine dili karşılığı tasarlanan derleyici tarafından dönüştürülecektir. 4.2. Örnek kodun derlenmesi aşaması Derleyici klasörünün içerisinde bulunan test.txt adlı dosya içerisine uygulanması istenen kod yazılır. Sentez aşamasında test.text dosyasının içerisinde bulunan program sabit belleğin içerisine bir kere gömülür. İşlemci her reset aldığında çalışmaya bu programdan başlar. BASLA: MOVI AR, 0X05 MOVI BR, 0X32 MOVI CR, 0X0A DON: SUBI CR, 1 CMP CR, 0X00 BEQ SON ADDI AR, 0X04 BA DON SON: MOVI AR, 0X32 BL BEKLE HLT BEKLE: PUSH CR MOVI CR, 0X0A DON1: SUBI CR, 1 BNE DON1 POP CR RET Yukarıda örnek bir kod görülmektedir. Bu kod derleyici klasörü içerisinde bulunan test.txt dosyasına yazılıp derlenir. Derleme sonrası aynı klasör içerisinde output.txt dosyası derleyici tarafından oluşturulur. Bu dosya yazılan kodların makine komutlarının bulunduğu dosyadır. Şekil 4.1 de bu klasörün içeriği görülmektedir. 18

Şekil 4.1. İşlemci için tasarlanan derleyicisi klasörünün içeriği Derleme sonucunda oluşan output.txt dosyası kullanıcı tarafından ise proje klasörünün içerisine atılır.bu sayede Rom yapılması gereken işlem için gerekli makine kodu bilgilerini edinmiş olur. Output.txt klasöründe aşağıdaki gibi 255 satır makine kodu oluşur.derlenen kod grubunun makine kodu karşılıkları, geriye kalan satırlar için de nop komutunun makine kodu karşılığı derleyici tarafından oluşturulur. Şekil 4.2. Derleme sonrası oluşan output.txt dosyasının örnek gösterimi Derleyici, output.txt dosya dışında simulate.txt adında bir dosya daha oluşturur. Bu dosya her satır sonrası yapılan işleme karşılık yazmaçların, bayrakların ve portların aldığı değerleri göstermektedir. Yukarıdaki örnek kod parçası için oluşan simulate.txt dosyası Şekil 4.3 de görülmektedir. 19

Simulate.txt dosyası toplam dört sayfadan oluşmaktadır. Bu dosya içeriği yazılan kodun doğru biçimde derlenip derlenmediğinin anlaşılmasını sağlamaktadır. Şekil 4.3. Örnek bir derleme sonrası oluşan simulate.txt (öykünücü) dosyasının kısmi görünümü 4.3. Benzetim Proje içerisine makine kodunu içeren dosya eklendikten sonra mikroişlemci üzerinde örnek kodun RTL benzetimi yapılabilir. İlk olarak ISE proje düzenleyicisi açılır ve cpu_kulis projesi seçilir. Seçilen projenin en üst seviyedeki modülü belirtilir. Şekil 4.4 de de görüldüğü üzere cpu_kulis mikroişlemcisinin en üst modülü CPU(CPU.v) isimli modüldür. Şekil 4.4. ISE proje düzenleyicisinde RTL benzetim gerçekleştirmek için yapılan ilk işlemler 20

Ardından Processes bölümünde bulunan Synyhesize-XST sekmesi çift tıklanarak tasarımın sentezi yapılır. Şekil 4.5. Tasarımın sentez aşaması gösterimi Sentez sonucu hata oluşmamışsa tasarımın benzetimine geçilebilir. İlk olarak Sources bölümünde seçili bulunan Synthesis/Implementation alt grubu yerine Behavioral Simulation alt grubu seçilir. Şekil 4.6. Sentez ve benzetim aşaması geçiş öbekleri Processes bölümünde bulunan Create New Source kısayoluna çift tıklanır. Açılan sihirbazda Test Bench Wave Form kaynağı seçilir ve kaynağa File Name kısmında yeni bir isim verilir. Yapılan işlemlerin ardından iki kere Next, tuşuna bir kere de Finish tuşuna tıklanır. 21

Şekil 4.7. Benzetim için gerekli testbench dosyasının oluşturulması aşaması Şekil 4.8. Yeni kaynak dosya oluşturma sihirbazında Test Bench WaveForm dosyasının seçilmesi ve uygun parametrelerin girilmesi Bu işlemler sonucunda kullanıcının karşısına Initial Timing and Clock isimli ilk zamanlama ve saat frekansı ayarlamalarıın yapıldığı sihirbaz açılır. Bu araç kullanılarak benzetimin zaman özellikleri belirlenir ve ardından Finish tuşu tıklanarak yeni test dosyası oluşturması işi sonlandırılır. Bu işlemin ardından kullanıcının karşısına en üst seviye modelde görülen giriş ve çıkış bağlantılarını içeren bir dalga şekli düzenleme ve gözlemleme penceresi açılacaktır. Ancak; karşımıza gelen benzetim penceresi ISE proje düzenleyicisinin kendi benzetim aracıdır. ModelSim benzetim aracının seçilebilmesi için Processes bölümünde bulunan Modelsim Simulator sekmesi altındaki Simulate Behavioral Model kısayoluna çift tıklanarak ModelSim benzetim penceresi açılır. 22

Şekil 4.9. ISE proje düzenleyicisindeki benzetim penceresinin görünümü Şekil 4.10. Objects/Name penceresinin ModelSim aracının ilk olarak çağrıldığı andaki görünümü ModelSim penceresi açıldığında ilk olarak yapılacak iş Objects/Name penceresinde bulunan bağlantı ya da giriş-çıkışların seçilerek silinmesi olacaktır. Ardından benzetim sonuçlarının görülmesi istenen bağlantılar sol tarafta bulunan Workspace/Instance penceresinin altında bulunan UUT (Unit Under Test) alt sekmesinin altında bulunan cpu_general_top isimli modül seçilerek belirlenir. Objects/Name penceresinde görülen bağlantılardan cpu_path_top sekmesinden alu_outputwire, registers_datapath sekmesinden A, B, C, D_regout, inst_fetchcpu sekmesinden programme_counter, son olarak en üst seviye modülden reset ve clk bağlantılarının seçimi bu uygulama için yeterli olacaktır. 23

Şekil 4.11. İstenilen sinyallerin eklenmesi Seçilen bağlantı sağ tıklanır ve Add to Wave/ Selected Signals seçilerek görülmesi istenen bağlantılar da belirlenmiş olur. Wave klasörü benzetimin yapılacağı klasördür. Wave klasöründe bulunan run-all tuşu ile benzetim başlar ve break tuşu ile sonlandırılır. Şekil 4.12. Run-all düğmesi Şekil 4.13. Break düğmesi 4.4. Benzetim Sonuçları ve Değerlendirilmesi Reset sinyali düşük seviyeye çekilmeden önce aktiftir.bu nedenle; mikroişlemci hiçbir uygulamada bulunmaz.reset inaktif duruma geçtiği anda program sayıcı birer birer artmaya başlar. Örnek kodun ilk beş satırına bakacak olursak; BASLA: MOVI AR, 0X05 MOVI BR, 0X32 MOVI CR, 0X0A DON: SUBI CR, 1 CMP CR, 0X00 24

Şekil 4.14. Benzetim Sonucu I Şekil 4.15 Benzetim sonucu II İlk olarak A yazmacına 05H yazma işlemi dördüncü saat darbesinde (geri yazma) gerçekleştiriliyor. Ardından B yazmacına 32H ve C yazmacına 0AH yazılıyor. C yazmacından bir çıkartılıp döngüye giriyor. SUBI CR, 1 CMP CR, 0X00 BEQ SON ADDI AR, 0X04 BA DON Şekil 4.16. Benzetim sonucu III Diğer beş komutta C yazmacından 1 çıkartılıp 00H ile karşılaştırma işlemi yapılıyor. Sonuç 0 ise; program SON adlı etikete dallanıyor. Sonuç 0 değil ise; A yazmacına 04H eklenip döngü C yazmacı 0 olana kadar tekrarlanıyor. 25

Şekil 4.17. Benzetim sonucu IV Yukarıdaki şekil C yazmacının sıfırlanıp döngüden çıktıktan sonra alınan benzetim sonuçlarını göstermektedir. SON: MOVI AR, 0X32 BL BEKLE HLT BEKLE: PUSH CR MOVI CR, 0X0A DON1: SUBI CR, 1 BNE DON1 POP CR RET C yazmacı sıfırlandıktan sonra program SON adlı etikete dallanmıştır. Bu etikette A yazmacına 32H atanır ve program bl komutu ile BEKLE etiketine dallanır. Bekle etiketinde C yazmacının değeri yığına atılır C yazmacına 0aH atanır ve yazmaçtan bir çıkartılır. Sıfır ile karşılaştırılır. Sonuç sıfır değilse; yazmacın değeri sıfır olana kadar bir çıkartma işlemi devam eder. C yazmacı sıfır değerini aldığında pop cr komutu ile yığından C yazmacının ilk değeri alınır program BEKLE alt programından çıkar ve hlt komutu ile işlem program bitirilir. C yazmacının alt programa dallanmadan önceki değeri sıfır olduğu için pop işlemi sonucunda yazmaç değeri sıfır olarak kalmıştır. Şekil 4.17. Bekle alt programının çalışması ve alt programın bitişi ile programın sonlanması 26

5.FİZİKSEL İŞLEMCİ TASARIMI 5.1. Giriş Bu bölümde sanal olarak tasarlanmış ve benzetim sonuçları gösterilmiş işlemcinin fiziksel tasarımı için geçilen süreçler anlatılacaktır. Saat ve reset ucu gibi standart giriş çıkışları ve sonradan eklenen giriş çıkışları da içeren mikroişlemcili sistemin en üst seviye görünümü Şekil 5.1 de görülmektedir. Şekil 5.1. Cpu_Kulis mikroişlemcisinin en üst seviye model gösterimi İşlemcinin fiziksel olarak tasarlandıktan sonra performansının değerlendirilebilmesi için dış dünyaya bağlanması gerekmektedir. Bu kapsamda işlemciye iki adet genel amaçlı port eklenmiştir, bu portlardan Port A giriş, Port B çıkış olarak koşullanmıştır. Genel amaçlı giriş çıkış portlarının dışında bir adet VGA arayüzü, klavye arayüzü ve bir de RS232 arayüzü tasarlanmış ve işlemciye eklenmiştir. Bu tasarımlar tamamen özgün olup en temel 27

fonksiyonları gerçekleştirebilecek şekilde tasarlanmışlardır. İşlemcinin standart portları saat işaretinin uygulandığı giriş olan clk portu, işlemcinin çalışmasını asenkron olarak durdurabilen reset portu ile giriş (PORTA) ve çıkış (PORTB) portlarıdır. İşlemci, derleyici kısmında anlatıldığı şekilde yazılacak bir kod ile dış dünya ile haberleşebilir. Ps_clk ve ps_data uçları sırasıyla klavye saat darbesi ve klavye veri hattının bağlanacağı uçlardır. Receive ve Transmit uçları seri haberleşme için alma ve gönderme uçlarıdır. Hsync, Vsynch, red, green, blue uçları ise monitörü sürebilmek için gerekli senkronizasyon ve renk sinyallerini veren uçlardır. Int uçları ise bu uçlara dışarıdan uygulanacak sinyalin yükselen kenarında kesme oluşturabilmek için düşünülmüştür. 5.2. Önyükleme Cpu-Kulis işlemcisi bir de önyükleme modülüne sahiptir. Önyükleme modülü, içerisinde sabit bir programın olduğu bir bellektir. İşlemci, reset girişi aktif olduğunda çalışmaya önyükleme modülünden başlar ve bu modülde bulunan kodlar işletilir. Bu modülün ana görevi, işlemcinin programlanabilmesi için bir arayüz oluşturmaktır. Bu modül iki modu desteklemektedir; bunlardan biri programlama modu, diğeri ise normal çalışma modu dur. Önyükleme programı hangi modda çalışacağının kararını, genel amaçlı portlarına bağlı bir anahtarın konumuna bakarak karar verir. Normal çalışma modu seçilmişse önyükleme modülü işlemini sonlandırarak, akışı ana programın olduğu ROM a bırakır ve burada sıfırıncı adresten itibaren komutları işletmeye başlar. Programlama modu, işlemciye program yüklenmesini sağlayan çalışma modudur. 5.2.1. Programlama modu Önyükleme modülünün çalışma modundan biri olan programlama modu sayesinde, RS232 seri haberleşmesi ile işlemciye program yüklenebilmektedir. Programlama modunda çalışırken işlemci seri bilginin gönderilmesini bekler. Seri haberleşme parametreleri, 9600 baud, 1 dur biti, eşlik biti yok, parametreleri ile gerçekleştirilir. Bu ayarlamalar yapıldıktan sonra gönderilen bilgi, işlemcide çalışması istenen kodların derlenmesi sonucu oluşturulmuş makine kodlarıdır. Seri kanaldan gelen bu işlem kodları, kullanıcı makine kodlarının bulunduğu ROM yapısına kaydedilmeye başlanır. Bu kayıt işlemi SRM (Store RoM), komutu ile yapılabilmektedir. İşlemci programlama modunda çalışırken kullanılacak olan SRM komutu, ROM a veri yazmaktadır. Bu işlem, programlama modundayken ROM u güncellemeyi kolaylaştırır. Gönderme işlemi bittikten sonra önyükleme modülü akışı ROM a 28

bırakarak, yüklenen programın çalışması sağlanmış olur. Önyükleme modülü yükleme işini bitirdiğinde ve akış ROM a bırakıldığında, SRM komutu kullanılsa bile bir etkisi olmamaktadır. Seri alım ve gönderim işlemleri, işlemci tarafından donanımsal olarak yapılmaktadır. Bu konuyla ilgili ayrıntılı bilgi Çevresel Birimler alt başlığında bulunabilir 5.3. Son Yerleştirme Benzetimi 5.3.1. Giriş Bu kısımda işlemcinin FPGA üzerinde elde edilecek sonuçlara en yakın sonuçları veren benzetimi yapılacaktır. Son yerleştirme benzetiminin amacı, RTL kodun FPGA üzerindeki kaynakların sahip olduğu fiziksel özelliklerinde benzetime dahil edilmesini sağlamaktır. Bu sayede; Spartan 3E geliştirme kartı ile uygulama yapmadan önce tasarımın içerdiği hatalar bilgisayar ortamında görülüp gerekli önlemler alınabilmektedir. Örneğin; son yerleştirme benzetiminde RTL benzetimde görülmeyen kapı gecikmeleri sanki fpga üzerinde işlem yapılıyormuşçasına görülebilmektedir. Son yerleştirme benzetiminin bir başka yararı da tasarlanan donanımın FPGA üzerinde ne kadar güç harcayacağı hakkında gerekli analizlerin yapılabilmesine de olanak sağlamasıdır. ISE proje düzenleyicisi bu işlemlerin yapılabilmesine olanak veren araçlar ile donatılmıştır. 5.3.2. Tasarımın son yerleştirme benzetimi yapılabilecek hale getirilmesi Son yerleştirme benzetimine başlamak için ISE proje düzenleyicisinde tasarımı bu doğrultuda sentezlemek gerekmektedir. Sources bölümünden Synthesis/Implementation seçilir. Processes bölümünden Implement Design alt klasörü sağ tıklanır Rerun-all seçilir ve uygulama başlatılır. Bu işlem, tasarımın sahip olduğu karmaşaya göre biraz zaman alabilir, Cpu-Kulis işlemcisi için bu süre 10 dakika civarındadır. Implement Design işlemi bittikten sonra aynı sekme altında Post-Place & Route sekmesinin altında bulunan Generate Post Place & Route Simulation Model kısayoluna çift tıklanarak gerekli benzetim modeli elde edilir ve son adım olan En Son Yerleştirme benzetimi aşaması için gerekli bütün dosyalar üretilmiş olur. Şekil 5.2 de bu aşamayı özetleyen ekran görüntüleri görülmektedir. 29

Şekil 5.2 Proje Dosyasının Sentezlenmesi 5.3.3. Benzetim aşaması Fiziksel işlemci tasarımı bölümü kara şimşek uygulaması ile anlatılacaktır. Bu doğrultuda ilk olarak kara şimşek uygulamasının donanımsal benzetimi yapılacaktır. Bu amaçla kara şimşek uygulaması test.txt dosyasına yazılıp derleyicide derlenir. #DEFINE PORTA 0 #DEFINE PORTB 1 #DEFINE DELAY_CNT 10 MOVI AR, 0X01 OUT PORTB, AR MOVI DR, 0 BASLA: BL BEKLE CMP DR, 0 BEQ SOL BA SAG SOL: SLL AR, 1 OUT PORTB, AR BA SON SAG: SRL AR, 1 OUT PORTB, AR SON: 30

CMP AR, 0X80 BEQ SAGA_GIT CMP AR, 0X01 BEQ SOLA_GIT BA BASLA SAGA_GIT: MOVI DR, 1 BA BASLA SOLA_GIT: MOVI DR, 0 BA BASLA BEKLE: MOVI CR, DELAY_CNT DON2: MOVI BR, 0XFFFF DON1: SUBI BR, 1 BNE DON1 SUBI CR, 1 BNE DON2 RET Derleme işleminin ardından kod dizininin output.txt dosyasında makine kodu karşılıkları oluşturulur. Output.txt dosyası da proje klasörünün içerisine kopyalanır. Xilinx-ISE proje düzenleyicisinin sol üst kısmında bulunan Sources bölümünde bulunan Post-Route Simulation seçeneği Şekil 5.3 de görüldüğü şekilde seçilir. Aynı sanal benzetim aşamasında olduğu gibi yeni bir (deney düzeneği) testbench klasörü oluşturulur. Şekil 5.3. Sources bölümünden Son Yerleşim (Post Route) benzetimi için gerekli seçeneğin seçilmesi 31

Şekil 5.4. Son Yerleştirme benzetiminde kullanılacak test dalga şekli dosyasının oluşturulması RTL benzetimdekine benzer süreçler takip edildikten sonra karşımıza Şekil 5.5 de görülen pencere çıkar. Şekil 5.5. Test dalga şeklini gösteren benzetim penceresi ModelSim benzetimi için Processes öbeğinden Simulate Post Place & Route kısayoluna çift tıklanarak ModelSim programı çalıştırılır. 32

Şekil 5.6. Modelsim benzetim editörüne geçiş uygulaması Sanal benzetime benzer şekilde ModelSim benzetim penceresi açılır. Bu pencereden clk, reset, PortA ve PortB sinyalleri en üst modelden seçilir. Wave penceresi genişletilir ve aşağıdaki pencere karşımıza çıkar. Şekil 5.7 Wave penceresinin ilk durumu Değerlerin hegzadesimal düzende görülebilmesi için; istenen sinyale sağ tıklanır Şekil 5.8 de görülen işlem uygulanır. Şekil 5.8. Sinyal değerlerini istenilen formata dönüştürme işlemi Ardından RunAll düğmesine basılarak benzetim başlatılır ve yeterli sürenin geçtiğinden emin olununca Break düğmesine basılarak benzetim durdurulur. Son yerleştirme benzetimi RTL 33

benzetim ile karşılaştırıldığında çok uzun sürer çünkü bu aşamada benzetim işlemi tasarımcının tasarlamış olduğu göreli olarak düşük sayıdaki modül üzerinde değilde tasarım üzerinde gerçekleştirilen ve ardında FPGA üzerine haritalanan ve çok fazla sayıda kapı seviyesinde modül ve bu modüllerin gecikme bilgilerini de içerek büyük bir dosya üzerinde gerçekleştirilir. Şekil 5.9. Benzetimi başlatma (kırmızı elips) ve durdurma (mavi elips) işlemi Şekil 5.10. Benzetim sonucunun bir kısmı Görüldüğü gibi benzetim sonuçlarında çıkış olarak koşullanmış PortB 2 nin katları şeklinde artmaktadır.bu sayede ; kara şimşek yapısının ilk kısmı ortaya çıkar. Şekil 5.11. Benzetim sonucunun ayrıntılandırılmış küçük bir bölümü 34

Şekil 5.12. Verilen uygulama için son yerleştirme benzetimi sonucunda elde edilen verilerin tümü NOT: Şekil 5.12 de en altta görünen sinyal PortB yi belirtmektedir. 5.3.4. Uygulamayı Spartan-3E kartına yükleme Son yerleştirme benzetimi sonucunda bir hata olmadığından emin olduktan sonra geriye uygulamayı FPGA üzerinde test etme işlemi kalmaktadır. 5.3.4.1. Bacak bağlantılarının yapılması Şekil 5.13 Giriş-çıkış sinyallerinin atanma aşaması Tasarımın kart üzerinde bulunan FPGA nın hangi bacaklarına bağlanacağının belirtilmesi gerekmektedir. Bu konuda ayrıntılı bilgi Xilinx web sayfasından ug230.pdf isimli dosyadan öğrenilebilir. Bacak bağlantıları için gereken bilgiler edinildikten sonra processes 35

bölümündeki assign packadge pins kısa yoluna çift tıklandıktan sonra aşağıdaki pencere açılır. Şekil 5.14. Sinyal atama penceresi Sinyaller kart içerisinde hangi birime atanacaksa o birimin FPGA üzerinde bulunduğu bölge Loc sütuunnda ilgili satıra yazılır. Örneğin, 50 MHz lik saat işaretinin FPGA üzerinde bağlı olduğu bacağın koordinatları C9 dur. Bunu yanı sıra; PortA giriş koşullandığı için düğmelerin - toplam 6 adet - tamamı ve kaydırmalı anahtarların - toplam 4 adet - üç tanesi PortA ya atanmıştır. Düğmelerden ortadaki(buton_center), reset sinyali olarak, anahtarlardan switch-3 programlama modu anahtarı olarak atanmıştır. Tüm LED ler PortB ye atanmış olarak bulunur. 5.3.5. Programı kart üzerindeki FPGA ya yükleme işlemi Yapılan bir tasarımın Spartan 3E kartına yüklenmesi için izlenebilecek iki yol vardır, bunlarda birisi direkt olarak FPGA yı programlamak diğeride kart üzerinde FPGA ya otomatik olarak yükleme yapan flash belleği programlamaktır, diğer programlama seçenekleri bu çalışmada irdelenmemiştir. FPGA üzerinde Cpu-Kulis işlemcisinin oluşturulabilmesi için Xilinx ISE proje düzenleyicisinin Processes bölümünde bulunan Generate Programming File sekmesinin altındaki Configure Device Impact kısayoluna çift tıklanır. Bu işlem sonucunda açılan pencere aşağıdaki gibidir. Bu pencerede en genel haliyle bir JTAG zinciri ve bu zincir boyunca algılanan aygıtlar görülmektedir. Bu zincir üzerinde görülen her bir aygıt Impact programı 36

aracılığıyla programlanabilir. Bu uygulamada tasarlanan sistem Xilinx Spartan 3E FPGA sına (xc3s500e) yükleneceği için zincir üzerinde bu cihaz aktif iken gerekli.bit uzantılı dosyanın seçilmesi diğer elemanlar aktifken dosya seçme penceresinde bybpass düğmesine basılması gerekmektedir. Bu sayede FPGA programlanabilecek hale gelmiştir. Şekil 5.15. Uygun.bit dosyasının seçilmesi Impact programı her 3 aygıtı da taradıktan ve gerekli dosya seçme işlemi bittikten sonra xc3s500e isimli aygıt üzerinde sağ tıklanarak açılan menüde Program bağlantısına tıklantığında Impact programı, seçili aygıtı programlayacaktır ve işlem bittiğinde Program Succeded şeklinde bir uyarı görülecektir. 37

Şekil 5.16. Kart üzerindeki FPGA nın programlanması Şekil 5.17. FPGA nın başarılı bir biçimde programlandıoğını gösteren uyarı Bu andan itibaren tasarlanan işlemci FPGA üzerinde çalışmaya başlamıştır ve reset aktif olmasından sonra önyükleme modundan itibaren çalışmaya hazır hale gelir. Reset sinyali tekrar pasif olduğunda işlemci önyükleme programını işletmeye başlar. 38

İşlemciye, program yüklemek için şu işlemler yapılır: Gönderilmek istenen program derleyici ile derlenir. Derleyici derleme işlemi bitikten sonra kullanıcıya, kodu göndermek isteyip istemediğini sorar. Kodu göndermeden önce işlemcinin programlama moduna alınması ve ardından reset sinyalinin uygulanması gerekir. (Bu işlem, çalışma modu anahtarının konumunu programlama konumuna getirerek yapılır.) Derleyiciye kodu göndermek için onay verilir. Gönderme işlemi başlar Gönderme işlemi bittikten sonra gönderilen program çalışmaya başlar. Kara şimşek uygulamasını bu şekilde çalıştırmak için önce kod derlenir. Derleme işlemi başarıyla sonuçlandığında derleyici bizi gönderme isteğimizi sorar. Şekil 5.18. Derleyiciden Programın Gönderilmesi 39

Gönderme işlemini onayladığımızda işlemciye kodlar gonderilmeye başlanir. Şekil 5.19. Programin başarıyla işlemciye gönderilmesi 40

Şekil 5.20. Kara şimşek uygulaması basamak gösterimi NOT: Kara şimşek uygulaması ile beraber bir uygulama daha video olarak eklenmiştir. 41

6. ÇEVRESEL BİRİMLER, KESMELER 6.1. Giriş Bu bölümde işlemcimizin çevresel birimleri ve kesme kaynaklarından bahsedilecektir. Ayrıca, çevresel birimlerin ve kesmelerin kullanımı gösterilecektir. 6.2. Çevresel Birimler ve Organizasyonu Cpu-Kulis işlemcisinde, seri haberleşme modülü, vga modülü ve klavye modülü bulunmaktadır. Her birimin kendine ait özel bir port numarası vardır. Bu donanımlara erişim bu numarayı kullanarak out ve in komutları ile yapılmaktadır. Tablo 6.1. Çevresel birimler, port numaraları ve açıklamalar Port Numarası Çevresel Birim Açıklama 0 PORTA Porta giriş koşullandığı için sadece okuma yapılabilir. IN AR, 0 -> PortA nin değerini A yazmacına oku 1 PORTB Portb çıkış olarak koşullanmıştır. Out komutuyla portun durumu değiştirilebilir. In komutuyla kullanılırsa portun durumu okunabilir. IN AR, 1 ADDI AR, 1 OUT 1, AR Portb nin değeri 1 artırılıp tekrar portb ye yazılıyor 4 KESME BAYRAKLARI 5 KESME KONTROL İlgili kesmeleri temizlemek amacıyla kullanılır. İlgili kesmeleri aktif etmek için kullanilir. 6 SAYAÇ Sayaç için karşılaştirma değeri yüklemek için kullanılır. 7 KLAVYE Klavye tamponundan veri okumak için kullanılır. 8 SERİ PORT DURUM Seri port durumunu belirten bayrakları okumak için kullanılır. 9 SERİ ALIM Seri porttan veri göndermek için kullanılır. 10 SERİ GÖNDERİM Seri porttan gelen veriyi okumak için kullanilir 11 MONITOR Ekran hafızasına bilgi yazmak için kullanılır. 42

6.2.1. Seri port Seri port modülü 9600 baud, 1 stop bit, eşlik biti olmayan iletim özelliğinde bilgi gönderen ve alabilen bir modüldür. Seri porttan bilgi gönderme işlemi çok kolay bir şekilde şöyle yapılabilir. MOVI AR, 0XFF ; Gönderilecek bilgi A yazmacına alınıyor. OUT 10, AR ; seri gönderim port numarası verilerek, out komutuyla ; gönderim yapılıyor. Seri porttan bilgi alma işlemi de gönderme işlemine benzer şekilde yapılmaktadır. IN AR, 9 ; Gelen Seri bilgi A yazmacına alınıyor. Seri port durum portu (8), gönderme ve alma modülleri hakkında bilgi vermektedir. Bu durum in komutuyla bir yazmaca okunup modüllerin durumları kontrol edilebilir. IN AR, 8 ; Seri port modüllerinin durumları okunuyor. Şu anda A yazmacının 0 nolu biti seri gönderim modülünün meşguliyet durumunu belirtir. Eğer bu değer 1 okunmuşsa seri modül o anda gönderim yapıyor demektir. A yazmacının 1 nolu biti ise seri alım modülüne bilginin gelip gelmediğini belirtir. Eğer bu değer 1 olmuşsa bilgi alınmıştır demektir. In komutu ile seri porttan bilgi okunduğunda bu bit otomatik olarak sıfırlanmaktadır. Kısaca seri haberleşme arayüzü bu şekildedir. 6.2.2. Klavye portu Tasarlanan mikroişlemcili sistem PS/2 klavye ile haberleşme yeteneğine de sahiptir. Klavyede tuşa basıldığında, klavyeden gönderilen tarama kodu çözülerek, ASCII karşılığı bir tampona yerleştirilir. In komutu ile klavye portu kullanılarak yapılan okumada, bu tampondan bilgi okunur. Tampon derinliği 16 dır. Eğer tampon boşsa 0xFF değeri okunur. IN AR, 7 ; Klavye Tamponundan bilgi okunuyor. 6.2.3. VGA portu Bu port monitör için uygun renk ve senkronizasyon bilgilerini üretir. Bu port video ram olarak kullanılan bir bellek bölgesinden bilgi alarak ekrana bu bilgiye uygun renk bilgisini, 43