45
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ü

CPU-KULIS MİKROİŞLEMCİSİ ÇALIŞMA RAPORU...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

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: CPU-KULIS MİKROİŞLEMCİSİ ÇALIŞMA RAPORU...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

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ü

Page 2: CPU-KULIS MİKROİŞLEMCİSİ ÇALIŞMA RAPORU...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

1

İçindekiler

İçindekiler ................................................................................................................................... 1

Şekiller Dizini ............................................................................................................................ 3

Tablolar Dizini ........................................................................................................................... 4

Önsöz .......................................................................................................................................... 1

1. CPU-KULIS MİKROİŞLEMCİSİNİN GENEL YAPISI ...................................................... 2

1.1. Cpu-Kulis Mikroişlemcisi Genel Şematik Gösterimi ..................................................... 3

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İ ................................................................................................. 9

2.1. Giriş ............................................................................................................................... 10

2.2. Derleyici Kullanımı ....................................................................................................... 10

2.2.1 Komut kümesinin kullanımı: ................................................................................... 11

2.2.2 Sembolik sabit tanımlama: ...................................................................................... 13

2.2.3- Etiket tanımlama: ................................................................................................... 13

2.2.4- Başlama noktası tanımlama: .................................................................................. 13

3. KOMUTLARIN İŞLEM BASAMAKLARI ........................................................................ 14

Page 3: CPU-KULIS MİKROİŞLEMCİSİ ÇALIŞMA RAPORU...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

2

4. BENZETİM SONUÇLARI………………………………………………………………...15

4.1. Giriş……………………………………………………………………………………15

4.2. Örnek Kodun Derlenme Aşaması………………………………………………….....16

4.3. Benzetim………………………………………………………………………………18

4.4. Benzetim Sonuçları……………………………………………………………………23

5. FİZİKSEL İŞLEMCİ TASARIMI………………………………………………………....25

5.1. Giriş……………………………………………………………………………………25

5.2. Cpu_Kulis İşlemcisinin Dış Dünya İle Haberleşmesi………………………………..26

5.3. Önyükleme………………………………………………………………………….....26

5.3.1. Programlama modu……………………………………………………………26

5.4. Donanımsal Benzetim…………………………………………………………………27

5.4.1. Giriş…………………………………………………………………………….27

5.4.2. Tasarım yükleme……………………………………………………………….27

5.4.3. Benzetim aşaması………………………………………………………………28

5.4.4. Uygulamayı Spartan-3E kartına yükleme…………………………………….33

5.4.5. Programı karta gömme işlemi………………………………………………….34

Page 4: CPU-KULIS MİKROİŞLEMCİSİ ÇALIŞMA RAPORU...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

3

Şekiller Dizini

Şekil 1.1. Cpu-kulis mikroişlemcisinin en üst seviye şematik görünümü ................................. 7 

Şekil 1.2. Komut çekme ana öbek şeması ................................................................................... 8 

Şekil 1.3. Kod çözme öbeği şematik görünümü ......................................................................... 9 

Şekil 1.4. Yürütme öbeği altında bulunan ALU biriminin RTL şemasının bir bölümü. .......... 10 

Şekil 1.5. Geri yazma öbeği RTL şeması ................................................................................. 11 

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

Page 5: CPU-KULIS MİKROİŞLEMCİSİ ÇALIŞMA RAPORU...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

4

Tablolar Dizini

Tablo 1.1. decode_wire[14:0] sinyalinin kontrol ettiği birimler ve makine kodu karşılıkları .. 9

Tablo 1.2. Hedef ve kaynak bilgilerinin makine kodu karşılıkları .......................................... 11

Tablo 1.3. wb_signals[10:0] sinyalinin kontrol ettiği birimler ve makine kodu karşılıkları .. 11

Tablo 2.1. 32 bitlik işlem kodunun bölümleri ......................................................................... 15

Tablo 2.2. İşlem kodu-işlenen karşılık tablosu ........................................................................ 15

Tablo 2.3. Cpu-Kulis işlemcisinin komut kümesi ve aldığı işlenenleri ................................... 15

Page 6: CPU-KULIS MİKROİŞLEMCİSİ ÇALIŞMA RAPORU...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

5

Ö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.)

Page 7: CPU-KULIS MİKROİŞLEMCİSİ ÇALIŞMA RAPORU...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

6

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 Detect) 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 PUSH, POP 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.

İşlemci tasarımı Xilinx ISE tasrım ortamı kullanılarak verilog donanım tanımlama dili

ile yazılmıştır. Şematik gösterimler için ISE şematik düzenleyicisinden faydalanılmıştır.

Benzetim için MentorGraphics’ in ModelSim yazılımı kullanılmıştır.

Page 8: CPU-KULIS MİKROİŞLEMCİSİ ÇALIŞMA RAPORU...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

7

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 modelinin şematik gösterimi ‘kabaca

eklenmiştir. 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.

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.

Page 9: CPU-KULIS MİKROİŞLEMCİSİ ÇALIŞMA RAPORU...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

8

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 az anlamlı

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.

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ç

Page 10: CPU-KULIS MİKROİŞLEMCİSİ ÇALIŞMA RAPORU...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

9

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.

Şekil 1.3. Kod çözme öbeği şematik görünümü

Kod çözme işlemini için oluşturulan makine kodu tablosu Tablo 1.1’ de verilmiştir.

Tablo 1.1. decode_wire[14: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]

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ç,11 adet çoğullayıcı, bayrak

sonuçları, içerisinde bulunan diğer önemli birimlerdir.

Page 11: CPU-KULIS MİKROİŞLEMCİSİ ÇALIŞMA RAPORU...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

10

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.

Ş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.

Page 12: CPU-KULIS MİKROİŞLEMCİSİ ÇALIŞMA RAPORU...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

11

Şekil 1.5. Geri yazma öbeği RTL şeması

Şekil 1.5’ e göre; gerekli koşullar sağlandığı taktirde, dörder 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.

Tablo 1.2. Hedef ve kaynak bilgilerinin makine kodu karşılıkları

HEDEF KAYNAK 000:AREG 000:AREG 001:BREG 001:BREG 010:CREG 010:CREG 011:DREG 011:DREG 100:ALU 100:ALU 101:STACK 101:STACK 110:RAM 110:RAM

Tablo 1.3. wb_signals[10: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]

Page 13: CPU-KULIS MİKROİŞLEMCİSİ ÇALIŞMA RAPORU...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

12

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.

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ş

Page 14: CPU-KULIS MİKROİŞLEMCİSİ ÇALIŞMA RAPORU...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

13

zamanlama bilgisi üretip, gerekli durumlarda beklemelerini sağlamaktadır. Şekil 1.6’ da bu

yapının RTL şeması görülmektedir.

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

Page 15: CPU-KULIS MİKROİŞLEMCİSİ ÇALIŞMA RAPORU...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

14

2. CPU-KULIS DERLEYİCİSİ

2.1. Giriş

Cpu-kulis mikroişlemcisi için tasarlanan ROM’ a benzetim için ilk değerler

$readmemb 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.

İşlemcinin program belleği 256 satır ve genişliği 4 byte/satır dır. Her yığın verisi 16 bittir.

RAM uzunluğu ise 1024 satırdır, genişliği de 2 byte/satır dır. Dolayısıyla 2KB RAM

mevcuttur. Kullanılan komutların mikroişlemcinin anlayacağı makine komutlarına

dönüştürülmesi işlemini tasarlanan derleyici halleder.

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.

Page 16: CPU-KULIS MİKROİŞLEMCİSİ ÇALIŞMA RAPORU...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

15

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.

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

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ılmaz1111 Sabit Sabit

2.2.1 Komut kümesinin kullanımı:

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

Page 17: CPU-KULIS MİKROİŞLEMCİSİ ÇALIŞMA RAPORU...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

16

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 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

Page 18: CPU-KULIS MİKROİŞLEMCİSİ ÇALIŞMA RAPORU...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

17

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;

#define CPU_KULIS 1

Addi ar, CPU_KULIS

ifadesi

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İ> <:>

İş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.

Page 19: CPU-KULIS MİKROİŞLEMCİSİ ÇALIŞMA RAPORU...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

18

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.

1. Aritmetik Komutlar: add, addi, sub, subi, mul, muli, mulu

2. Mantık Komutları: cmp, and, andi, or, ori, not, xor, xori , sll, srl, sla, sra

3. Dallanma Komutları: beq, bne, ba , bl

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.

Page 20: CPU-KULIS MİKROİŞLEMCİSİ ÇALIŞMA RAPORU...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

19

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.

1. 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.

Page 21: CPU-KULIS MİKROİŞLEMCİSİ ÇALIŞMA RAPORU...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

20

4.2.Örnek Kodun Derlenme 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.

Şekil 4.1 Benzetim için test.txt dosyasında oluşturulan örnek kod.

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.

Aşağıda bu klasörün içeriği görülmektedir.

Page 22: CPU-KULIS MİKROİŞLEMCİSİ ÇALIŞMA RAPORU...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

21

Şekil 4.2. İş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.3. Derleme sonrası oluşan output.txt dosyasının örnek gösterimi

Derleyici output.txt klasörü dışında simulate.txt adında bir klasör 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 dizini için oluşan simulate.txt dosyası aşağıda gösterilmiştir.

Page 23: CPU-KULIS MİKROİŞLEMCİSİ ÇALIŞMA RAPORU...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

22

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 ispatıdır.

Şekil 4.3. Derleme sonrası oluşan simulate.txt (öykünücü) dosyasının bir kısmının

örnek gösterimi

4.3.Benzetim

Proje içerisine makine kodunu içeren gerekli dosya eklendikten sonra mikroişlemci

üzerinde örnek kodun benzetimi yapılabilir.

İlk olarak ise editörü açılır ve cpu_kulis projesi seçilir. Seçilen projenin en üst model

tasarımı belirtilir. cpu_kulis mikroişlemcisinin en üst seviye modülü CPU(CPU.v)

klasörüdür.

Page 24: CPU-KULIS MİKROİŞLEMCİSİ ÇALIŞMA RAPORU...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

23

Şekil 4.4. ISE editöründe benzetim oluşturmak için yapılan ilk işlemler

Ardından Processes öbeğinde bulunan Synyhesize-XST alt öbeği çift tıklanarak

tasarımın sentezi yapılır.

Page 25: CPU-KULIS MİKROİŞLEMCİSİ ÇALIŞMA RAPORU...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

24

Ş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 öbeğinde seçili bulunan Synthesis/ Implementation alt öbeği yerine

Behavioral Simulation alt öbeği seçilir.

Şekil 4.6. Sentez ve benzetim aşaması geçiş öbekleri

Processes öbeğinde bulunan Create New Sources alt öbeği seçilir.

Page 26: CPU-KULIS MİKROİŞLEMCİSİ ÇALIŞMA RAPORU...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

25

Şekil 4.7. Benzetim için gerekli testbench dosyası yaratma aşaması

Şekil 4.8. Kullanılacak yeni kaynakların oluşturulduğu Create New Source klasörü

Açılan klasörden 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.

Bu işlemler sonucunda kullanıcının karşısına Initial Timing and Clock Wizard dosyası

açılır.Bu dosyada benzetimin zaman özellikleri belirlenir ve ardından Finish tuşu tıklanarak

yeni testbench oluşturulması sonlandırılır.

Kullanıcının karşısına en üst seviye modelde görülen olduğu giriş ve çıkış bağlantıları

Page 27: CPU-KULIS MİKROİŞLEMCİSİ ÇALIŞMA RAPORU...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

26

gelecektir.

Şekil 4.9. Ise editörünü benzetim aracı gösterimi

Ancak; karşımıza gelen benzetim Ise editörünün kendi benzetimidir.Modelsim

benzetimin aracının seçilebilmesi için Processes öbeğinde bulunan Modelsim Simulator alt

katı Simulate Behavioral Model çift tıklanarak Modelsim benzetim penceresi açılır.

Açılan sayfada ilk olarak yapılacak iş Objects/Name penceresinde bulunan bağlantı ya

da giriş-çıkışların seçilerek silinmesi olacaktır.

Şekil 4.10. Objects/ Name penceresinin ilk hali.

Ardından benzetim sonuçlarının görülmesi istenen bağlantılar sol tarafta bulunan

Workspace/Instance penceresinin altında bulunan UUT alt klasörü olan cpu_general_top

seçilerek belirlenir. Objects/ Name penceresinde görülen bağlantılardan cpu_path_top

klasöründen alu_outputwire , registers_datapath klasöründen A, B , C ,D_regout

,inst_Fetchcpu klasöründen programme_counter,son olarak ta en üst modelden reset ve clk

seçimi bu uygulama için yeterli olacaktır.

Page 28: CPU-KULIS MİKROİŞLEMCİSİ ÇALIŞMA RAPORU...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

27

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.11. Run-all tuşu

Şekil 4.12. Break tuşu

4.4. Benzetim Sonuçları ve Değerlendirilmesi

Şekil 4.13. Benzetim sonuçlarının ilk kısmı

Page 29: CPU-KULIS MİKROİŞLEMCİSİ ÇALIŞMA RAPORU...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

28

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;

İ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.

Diğer beş komutta C yazmacından bir çıkartılıp 00H ile karşılaştırma işlemi yapılıyor. Sonuç

0 ise; program SON adlı etikete dallanıyor. Sonuç sıfır değil ise; A yazmacına 04H eklenip

döngü C yazmacı sıfır olana kadar tekrarlanıyor.

Page 30: CPU-KULIS MİKROİŞLEMCİSİ ÇALIŞMA RAPORU...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

29

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.

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.10. Bekle alt programının çalışması ve alt programın bitişi ile programın sonlanması

5.FİZİKSEL İŞLEMCİ TASARIMI

5.1. Giriş

Bu bölümde sanal olarak tasarlanmış ve benzetimleri gösterilmiş işlemcinin fiziksel tasarım

bölümü anlatılacaktır. Sanal işlemciden fiziksel işlemciye geçişte hangi öbekler eklendiğinden

bahsedilecektir.

Page 31: CPU-KULIS MİKROİŞLEMCİSİ ÇALIŞMA RAPORU...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

30

5.2. Cpu_Kulis İşlemcisinin Dış Dünya İle Haberleşmesi

İşlemci iki adet 16 bitlik port ile dış dünya ile haberleşebilmektedir. Port A giriş, Port B çıkış

olarak koşullanmıştır. Bu sayede mikroişlemcinin en üst seviye modeli port koşullamaları

değişmiştir.

Şekil 5.1. Cpu_Kulis mikroişlemcisinin en üst seviye model gösterimi

Görüldüğü üzere kullanıcının mikroişlemcide görebileceği 4 pin bulunmaktadır. Saat

darbesini üretecek olan clk sinyali, istediği zaman işlemcinin çalışmasını sıfırlayabileceği

reset sinyali ile giriş ve çıkış portlarıdır. İşlemci, derleyici kısmında anlatıldığı şekilde

yazacağı kod ile dış dünya ile haberleşebilir.

5.2. Önyükleme

İşlemciye, yeni olarak önyükleme modülü eklenmiştir. Önyükleme modülü, içerisinde sabit bir

programın olduğu bir bellektir. İşlemci her reset işlemiyle, çalışmaya önyükleme modülünden

başlar ve bu modülde bulunan kodlar işlem görür. 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ı, 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şlemeye

başlar. Programlama Modu, işlemciye program yüklenmesini sağlayan çalışma modudur.

Page 32: CPU-KULIS MİKROİŞLEMCİSİ ÇALIŞMA RAPORU...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

31

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. Bilgi, 9600 baud, 1 dur biti, eşlik biti

yok, özelliklerine sahip bir iletimle, işlemciye gönderilir. Bu gönderilen bilgi, işlemcide

çalışması istenen kodların derleme sonucu oluşturulmuş işlem kodlarıdır. Gelen bu işlem

kodları, kullanıcı programı işlem kodlarının bulunduğu ROM yapısına kaydedilmeye başlanır.

Bu kayıt işlemi SW, komutu ile yapılabilmektedir. İşlemci programlama modunda çalışırken

kullanılacak olan sw komutu, RAM’e değil işlem kodlarının bulunduğu ROM’a veri

yazmaktadır. Programlama modunda, RAM ve ROM yerdeğişmişlik etkisi yaratı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 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, SW komutu

yine eskisi gibi RAM üzerinde etkili olmaktadır.

Seri alım ve gönderim işlemleri, işlemci tarafından tamamen yazılımsal olarak,

önyükleme modülü tarafından yapılmaktadır. Bu iletişim için özel bir donanım

tasarlanmamıştır.

5.3. Donanımsal Benzetim

5.3.1. Giriş

Bu kısımda işlemcinin donanımsal benzetimi yapılacaktır. Donanımsal benzetimin anlamı,

uygulamada gelen tüm olumsuzlukların bilgisayar ortamında görülmesidir. Bu sayede;

Spartan 3E ile uygulama yapmadan önce gelebilecek hatalar bilgisayar ortamında görülüp bu

problemlere gerekli önlemler alınabilmektedir.

Örneğin; normal benzetimde görülmeyen bir kısım gecikmeler sanki fpga üzerinde işlem

yapılıyormuşçasına görülmektedir.

5.3.2 Tasarım Yükleme

Page 33: CPU-KULIS MİKROİŞLEMCİSİ ÇALIŞMA RAPORU...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

32

Benzetime başlamak için editörde tasarımı uygulama olarak sentezlemek gerekir. Bu bölümde

Sources öbeğinden Synthesis/Implementation bölümü seçilir. Processes öbeğinden Implement

Design alt klasörü sağ tıklanır Rerun-all seçilir ve uygulama başlatılır.

5.3.3 Benzetim aşaması

Fiziksel işlemci tasarımı bölümü kara şimşek uygulaması ile anlatılacaktır. Bu nedenle ilk

olarak kara şimşek uygulamasının donanımsal benzetimi yapılacaktır. İlk olarak tasarım

kodları kullanılarak yazılan kara şimşek uygulaması test.txt dosyasına yazılıp derleyicide

derlenir.

Page 34: CPU-KULIS MİKROİŞLEMCİSİ ÇALIŞMA RAPORU...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

33

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 editörünün sol üst kısmında bulunan Sources öbeğinde Post-Route Simulation

öbeği seçilir.

Şekil 5.2. Donanımsal benzetim için gerekli kaynak seçimi gösterimi

Page 35: CPU-KULIS MİKROİŞLEMCİSİ ÇALIŞMA RAPORU...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

34

Aynı sanal benzetim aşamasında olduğu gibi yeni bir (deney düzeneği) testbench klasörü

oluşturulur.

Şekil 5.3. Donanımsal benzetim (deney düzeneği)tesbench formu oluşturma gösterimi

Sanal benzetimde uygulanan ilerlemeler ardında karşımıza aşağıdaki pencere çıkar.

Şekil 5.4. (Deney düzeneği)Testbench oluşumu sonrası açılan pencere gösterimi

Modelsim benzetimi için Processes öbeğinden Simulate Post Place & Route öbeği seçilir ve

çift tıklanır.

Page 36: CPU-KULIS MİKROİŞLEMCİSİ ÇALIŞMA RAPORU...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

35

Şekil 5.5. Modelsim benzetim editörüne geçiş uygulaması

Sanal benzetimle paralel olarak 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.

Değerlerin heksadesimal görülebilmesi için; istenen sinyale sağ tıklanır ve aşağıdaki işlem

uygulanır.

Page 37: CPU-KULIS MİKROİŞLEMCİSİ ÇALIŞMA RAPORU...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

36

Şekil 5.6. Sinyal değerlerini istenilen formata dönüştürme işlemi

Ardından benzetim başlatılıp belli bir süre sonra durdurulur.

Şekil 5.7. Benzetimi başlatma (kırmızı elips) ve durdurma (mavi elips) işlemi

Unutulmaması gereken önemli bir nokta; donanımsal benzetim sanal benzetime göre çok daha

uzun bir sürede gerçekleşir. Bu nedenle; benzetimi kısa bir sürede durdurmak istediğimiz

uzunlukta koşmayan bir benzetime sahip olmaya yol açar.

Şekil 5.8. 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.

Page 38: CPU-KULIS MİKROİŞLEMCİSİ ÇALIŞMA RAPORU...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

37

Şekil 5.9. Benzetim sonucunun bir kısmı

Şekil 5.10. Benzetim sonucunun tamamı

NOT: En altta bulunan sinyal PortB yi belirtmektedir.

5.3.4. Uygulamayı Spartan-3E kartına yükleme

Donanımsal benzetim sonucunu istenilen şekilde gördükten sonra geriye uygulamayı karta

yükleme işlemi kalmaktadır.

5.3.4.1. Pin ataması

Page 39: CPU-KULIS MİKROİŞLEMCİSİ ÇALIŞMA RAPORU...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

38

Şekil 5.11 Giriş-çıkış sinyallerinin atanma aşaması

Kart üzerine işlemcinin giriş ve çıkışlarının atanması gerekmektedir.(ug230.pdf) Spartan 3E

kullanım kılavuzundan istenilen atamlar için gerekli pinler seçilir. assign packadge pins

seçildikten sonra karşımıza aşağıdaki pencere çıkar.

Şekil 5.12. Sinyal atama penceresi

Page 40: CPU-KULIS MİKROİŞLEMCİSİ ÇALIŞMA RAPORU...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

39

Sinyaller kart içerisinde hangi birime atanacaksa o birimin lokasyonu Loc bölümüne yazılır.

Örnek verecek olursak; 50 Mhz lik saat darbesi lokasyonu C9 dur.

Bunu yanı sıra; PortA giriş koşullandığı için butonların( toplam 6 adet) tamamı ve

anahtarların(toplam 4 adet) üç tanesi PortA ya atanmıştır. Butonlardan buton_center reset

sinyali olarak, anahtarlardan switch-3 programlama modu anahtarı olarak atanmıştır. Tüm

ledler PortB de atanmış olarak bulunur.

5.3.5. Programı Karta Gömme İşlemi

Kart her açıldığında içerisinde sabit önyükleme programı bulunur. Test.txt dosyasına yazılan

kod derlenir ve UART ile bilgisayardan karta gönderilir.

Bu işlem için Xilinx Ise editörünün Processes öbeğinde bulunan Generate Programming File

öbeğinin altındaki Configure Device Impact çift tıklanır.Açılacak pencere aşağıdaki gibidir.

Pencerede üç adet işlemci görülmektedir.Proje klasörünün görüldüğü cpu.bit seçilir ve open

tuşlanır.Ardından gelen iki işlemci sorusuna Bypass yanıtı verilir ve aşağıdaki pencere

karşımıza çıkar.

Page 41: CPU-KULIS MİKROİŞLEMCİSİ ÇALIŞMA RAPORU...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

40

İşlemci üzerine sağ tıklanır ve program seçilerek programlama gerçekleştirilir.Program karta

yüklenmektedir.

Son olarak programın başarı ile yüklendiği bilgisi gelir.Artık işlemcimiz fiziksel olarak

sentezlenmiş durumdadır.

Bu durumda işlemci her reset sinyali ile önyükleme modundan itibaren çalışmaya başlar.

İşlemciye, program yüklemek için şu işlemler yapılır:

Page 42: CPU-KULIS MİKROİŞLEMCİSİ ÇALIŞMA RAPORU...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

41

- 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ı gerekir. ( Bu

işlem, çalışma modu anahtarının konumunu programlama konumuna getirerek

yapılır. ) Ve reset sinyali uygulanmalıdır.

- Derleyiciye kodu göndermek için onay verilir.

- Gönderme işlemi başlar

- Gönderme işlemi bittiken 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.

Gönderme işlemini onayladığımızda işlemciye kodlar gonderilmeye başlanir.

Page 43: CPU-KULIS MİKROİŞLEMCİSİ ÇALIŞMA RAPORU...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

42

Şekil 5.13. Spartan 3E kartı led uygulamaları esnasında…

NOT: Kara şimşek uygulaması ile beraber bir uygulama daha video olarak eklenmiştir.

Page 44: CPU-KULIS MİKROİŞLEMCİSİ ÇALIŞMA RAPORU...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

43

Page 45: CPU-KULIS MİKROİŞLEMCİSİ ÇALIŞMA RAPORU...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

44

Şekil 5.14. Kara şimşek uygulaması basamak gösterimi